Pageidavimas[Vip menu]

Šiame forume vartotojai gali prašyti jiems reikiamo plugino.
Forum rules
Šiame forume galite siūlyti idėjas ar prašyti jums reikalingų pluginų. Jei kas nors pradės jį kurti, tai pasirašys Jūsų sukurtoje temoje. Niekada nepykite, jei niekas neatsako į Jūsų prašymą. Gal tai tiesiog per sudėtinga, arba reikalauja per daug darbo.
InvIs
Gana aktyvus vartotojas
Posts: 421
Joined: 2011 Aug 13 11:12
Skype: pksoldierlt
Location: ATOSTOGOSE

Pageidavimas[Vip menu]

Post by InvIs »

Norėčiau panašaus plugino į šitą, bet šis pluginas visiškai nepasileidžia, nors ir kompiliuoja be errorų.. Na, gal čia mano klaida.

Ko tiksliai noriu?

Noriu tam tikro vipmenu(labiau .sma failo, nes pats noriu pažiūrėt kaip viskas daroma, kadangi mokinuos scriptint), kuris būtų prieinamas, žinoma, tik vip'ams su /vm komanda.

Atsidarius būtų panašus vaizdas:

V.I.P Menu

1. M4A1 [OFF]
2. Deagle [OFF]
3. Šarvai [OFF]
4. Granatos [OFF]

0. Išeiti

Paspaudus betkuriuos variantus(Meniu neišsijungia), įsijungtu kiekviena opcija.

Pvz:

V.I.P Menu

1. M4A1 [ON]
2. Deagle [ON]
3. Šarvai [OFF]
4. Granatos [OFF]

0. Išeiti.

Man esmė ne pats vip pluginas, o tiesiog kaip šitie [ON/OFF] padaromi. Jeigu nesunku, padarykit kas mažą pavyzdėlį, būsiu dėkingas.
ISVYKES

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Pageidavimas[Vip menu]

Post by aaarnas »

Darai kintamuosius, pvz:

Code: Select all

new toggle_m4a1, toggle_deagle, toggle_armor
ir taip toliau.

Tada formatuodamas meniu, darai taip:

Code: Select all

new holder[100]formatex(holder, charsmax(holder), "M4A1 [%s]", toggle_m4a1?"ON":"OFF")menu_additem(menu, holder)
Čia jei kintamasis tiesa, tai atvaizduos ON, priešingai OFF. Gali dar pridėti spalvų su \r, \y, \d, \w.
Pvz: \r[\y%s\r] bus [ON]

Tada funkcijoje, kur paspaudus meniu item'ą, rašai taip:

Code: Select all

switch(item) {case 0: {   if(toggle_m4a1) toggle_m4a1 = false   else toggle_m4a1 = true}}
Ir po switch įdėk meniu atidarimo funkciją, kad paspaudus punktą, meniu vėl pasirodytų, o jei item == MENU_EXIT, tai tada pavadinimo neiškvieti. (Dar galima switch sąlygoje pridėti punktą default apačioje. Tai jei item neatitiks nė vieno iš case (atvejų) tai meniu užsidarys.
Tik jei naudosi naują sistemą, nepamiršk menu_destroy(menu).

Tai va, taip ir padaroma. Jei nori, kad kiekvienam žmogui būtų atskirai tai kintamuosius kurk taip:

Code: Select all

new toggle_m4a1[33]if(toggle_m4a1[id])...
Palikau CS pasaulį ;/ . Nebepasiekiamas.

InvIs
Gana aktyvus vartotojas
Posts: 421
Joined: 2011 Aug 13 11:12
Skype: pksoldierlt
Location: ATOSTOGOSE

Re: Pageidavimas[Vip menu]

Post by InvIs »

MM, dėkui.
O kaip padaryti: tarkim M4A1 palieku [ON] Mirštu, bet kitą roundą Emkės neduoda. Kaip tai padaryti?
ISVYKES

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Pageidavimas[Vip menu]

Post by aaarnas »

Kad OFF būtų? Mirties forwarde nustatyk toggle_m4a1[victim] = false.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

InvIs
Gana aktyvus vartotojas
Posts: 421
Joined: 2011 Aug 13 11:12
Skype: pksoldierlt
Location: ATOSTOGOSE

Re: Pageidavimas[Vip menu]

Post by InvIs »

Ech, netaip paaiškinau. Na tarkim padarau emkę ON. Emkę išmetu, prasideda naujas round( arba mirštu, nesvarbu), bet nors ir rašo m4a1 ON, emkės naujame rounde neduoda. Reikia išjungti, įjungti, kad vėl duotų emkę. Kaip tai ištaisyti. Turbūt aiškiau.
ISVYKES

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Pageidavimas[Vip menu]

Post by aaarnas »

Ta prasme tau naujam raunde neduoda emkės, nors įjungta? Parodyk kodą.
Palikau CS pasaulį ;/ . Nebepasiekiamas.

User avatar
aurimasko
Flooderis arba specialistas
Posts: 736
Joined: 2010 Sep 04 08:45

Re: Pageidavimas[Vip menu]

Post by aurimasko »

aarnai, norėčiau paklausti ar negalima būtų daryti kažko panašaus į šitai kai paspaudi mygtuką:

Code: Select all

 case 1:{g_toggle_m4a1[id] ? g_toggle_m4a1[id] = false : g_toggle_m4a1[id] = true} 

InvIs
Gana aktyvus vartotojas
Posts: 421
Joined: 2011 Aug 13 11:12
Skype: pksoldierlt
Location: ATOSTOGOSE

Re: Pageidavimas[Vip menu]

Post by InvIs »

Štai kodas:

Code: Select all

#include <amxmodx>#include <amxmisc>#include <engine>#include <hamsandwich>#include <fun>#include <cstrike> #define MaxPlayers 32 new const Float: g_flCoords[][] = {    {0.50, 0.40},    {0.56, 0.44},    {0.60, 0.50},    {0.56, 0.56},    {0.50, 0.60},    {0.44, 0.56},    {0.40, 0.50},    {0.44, 0.44}} new bool: DoJump[33] = false new bool: Status[33][6] new bool: Bullet_Damagenew bool: Multi_Jumpnew bool: Vampire new PlayerPos[MaxPlayers + 1] new JumpNUM[33] = 0 new g_MaxPlayers public plugin_init(){    register_plugin("[CP] Server Menu", "1.0", "xS The Moon")     register_cvar("cpsm_advert", "1")    register_cvar("cpsm_advert_time", "20.0")     register_cvar("cpsm_health_kill", "10")    register_cvar("cpsm_health_hs", "15")    register_cvar("cpsm_maxjumps", "1")     register_clcmd("say /cp", "Main_Server_Menu")     if (get_cvar_num("cpsm_advert"))    {        set_task(get_cvar_float("cpsm_advert_time"), "CPSM_Adv_Message", 0, _, _, "b")    }     register_event("DeathMsg", "Ev_DeathMsg", "a")    register_event("Damage", "Ev_Damage", "b", "2>0", "3=0")     RegisterHam(Ham_Killed, "player", "Ham_KilledSpawn", 1)     g_MaxPlayers = get_maxplayers()} public client_connect(id){    DoJump[id] = false    JumpNUM[id] = 0} public Ev_DeathMsg(){    new attacker = read_data(1)     new Health    new HP_Add     if (Vampire)    {        if ((read_data(3) == 1) && (read_data(5) == 0))        {            HP_Add = get_cvar_num("cpsm_health_hs")        }        else        {            HP_Add = get_cvar_num("cpsm_health_kill")        }         Health = get_user_health(attacker)        Health += HP_Add         set_user_health(attacker, Health)            set_hudmessage(0, 255, 0, -1.0, 0.15, 0, 1.0, 1.0, 0.1, 0.1, -1)        show_hudmessage(attacker, "Healed +%d HP", HP_Add)         message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, attacker)        write_short(1<<10)        write_short(1<<10)        write_short(0x0000)        write_byte(0)        write_byte(0)        write_byte(200)        write_byte(75)        message_end()    }} public Ev_Damage(victim){    if (read_data(4) || read_data(5) || read_data(6))    {        new id = get_user_attacker(victim)        if ((1 <= id <= g_MaxPlayers) && is_user_connected(id))        {            if (Bullet_Damage)            {                new iPos = ++PlayerPos[id]                if (iPos == sizeof(g_flCoords))                {                    iPos = PlayerPos[id] = 0                }                set_hudmessage(0, 100, 200, Float:g_flCoords[iPos][0], Float:g_flCoords[iPos][1], 0, 0.1, 2.5, 0.02, 0.02, -1)                show_hudmessage(id, "%d", read_data(2))            }        }    }} public CPSM_Adv_Message(id){           print_color(id, "/y[/gCP/y] /ctrServerio Meniu/y: /gNoredamas atidaryti rasyk /y//ctrcp")} public Main_Server_Menu(id){    if (get_user_flags(id) & ADMIN_LEVEL_H)    {            new menu = menu_create("\d[\rCP\d] \yServerio Meniu\d:", "Server_Menu")         new szMsg1[60]        new szMsg2[60]        new szMsg3[60]        new szMsg4[60]        new szMsg5[60]        new szMsg6[60]         format(szMsg1, 59, "\d[\rCP\d] \w3rd Person View. \yStatusas\d: \r%s.", Status[id][0] ? "\w[\yON\w]" : "\w[\rOFF\w]")        format(szMsg2, 59, "\d[\rCP\d] \wBullet Damage. \yStatusas\d: \r%s.", Status[id][1] ? "\w[\yON\w]" : "\w[\rOFF\w]")        format(szMsg3, 59, "\d[\rCP\d] \wMulti Jump. \yStatusas\d: \r%s.", Status[id][2] ? "\w[\yON\w]" : "\w[\rOFF\w]")        format(szMsg4, 59, "\d[\rCP\d] \wM4A1 + Deagle. \yStatusas\d: \r%s.", Status[id][3] ? "\w[\yON\w]" : "\w[\rOFF\w]")        format(szMsg5, 59, "\d[\rCP\d] \wAk47 + Deagle. \yStatusas\d: \r%s.", Status[id][4] ? "\w[\yON\w]" : "\w[\rOFF\w]")        format(szMsg6, 59, "\d[\rCP\d] \wHP Uz Kill. \yStatusas\d: \r%s.", Status[id][5] ? "\w[\yON\w]" : "\w[\rOFF\w]")         menu_additem(menu, szMsg1, "1", 0)        menu_additem(menu, szMsg2, "2", 0)        menu_additem(menu, szMsg3, "3", 0)        menu_additem(menu, szMsg4, "4", 0)        menu_additem(menu, szMsg5, "5", 0)        menu_additem(menu, szMsg6, "6", 0)             menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)        menu_display(id, menu, 0)    }    else    {        print_color(id, "/y[/gCP/y] /ctrControl Panel /gtik V.I.P'ams ir ADMIN'ams.")        return    }}public Server_Menu(id, menu, item){    if (item == MENU_EXIT)        {        menu_destroy(menu)        return PLUGIN_HANDLED        }         if (item == 0)    {        if (Status[id][0])        {            Status[id][0] = false            set_view(id, CAMERA_NONE)        }        else        {            Status[id][0] = true            set_view(id, CAMERA_3RDPERSON)          }    }        if (item == 1)    {        if (Status[id][1])        {            Status[id][1] = false            Bullet_Damage = false        }        else        {            Status[id][1] = true            Bullet_Damage = true            }    }        if (item == 2)    {        if (Status[id][2])        {            Status[id][2] = false            Multi_Jump = false        }        else        {            Status[id][2] = true            Multi_Jump = true        }    }        if (item == 3)    {        if (Status[id][3])        {            Status[id][3] = false        }        else if (Status[id][4] == true)        {            Status[id][3] = false        }        else        {            Status[id][3] = true            give_item(id, "weapon_m4a1")            cs_set_user_bpammo(id, CSW_M4A1, 200)            give_item(id, "weapon_deagle")            cs_set_user_bpammo(id, CSW_DEAGLE, 200)        }    }        if (item == 4)    {        if (Status[id][4])        {            Status[id][4] = false        }        else if (Status[id][3] == true)        {            Status[id][4] = false        }        else        {            Status[id][4] = true            give_item(id, "weapon_ak47")            cs_set_user_bpammo(id, CSW_AK47, 200)            give_item(id, "weapon_deagle")            cs_set_user_bpammo(id, CSW_DEAGLE, 200)        }    }        if (item == 5)    {        if (Status[id][5])        {            Status[id][5] = false            Vampire = false        }        else        {            Status[id][5] = true            Vampire = true        }    }        Main_Server_Menu(id)        return PLUGIN_HANDLED} public client_PreThink(id){    if (!is_user_alive(id))         return PLUGIN_CONTINUE     new nbut = get_user_button(id)    new obut = get_user_oldbutton(id)     if (Multi_Jump)    {        if ((nbut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(obut & IN_JUMP))        {            if (JumpNUM[id] < get_cvar_num("cpsm_maxjumps"))            {                DoJump[id] = true                JumpNUM[id]++                return PLUGIN_CONTINUE            }        }            if ((nbut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))        {            JumpNUM[id] = 0            return PLUGIN_CONTINUE        }    }    return PLUGIN_CONTINUE} public client_PostThink(id){    if (!is_user_alive(id))         return PLUGIN_CONTINUE     if (DoJump[id] == true)    {        new Float: velocity[3]          entity_get_vector(id, EV_VEC_velocity, velocity)        velocity[2] = random_float(265.0, 285.0)        entity_set_vector(id, EV_VEC_velocity, velocity)        DoJump[id] = false         return PLUGIN_CONTINUE    }    return PLUGIN_CONTINUE} stock print_color(const id, const input[], any:...){    new count = 1, players[32]    static msg[191]    vformat(msg,190,input,3)    replace_all(msg,190,"/g","^4");// green txt    replace_all(msg,190,"/y","^1");// orange txt    replace_all(msg,190,"/ctr","^3");// team txt    replace_all(msg,190,"/w","^2");// team txt    if (id) players[0] = id; else get_players(players,count,"ch")    for (new i=0;i<count;i++)        if (is_user_connected(players[i]))        {            message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])            write_byte(players[i])            write_string(msg)            message_end()        }}

Atsiprašau, kad redaguoju kito žmogaus kodą, nežinau ar tai leistina, bet čia tik vardan mokymosi scriptint.
Na problema, kaip ir sakiau, jei mirštu, ar išmetu ginklus, ant naujo roundo neduoda, nors ir nustatyta [ON].
Taip pat, būtų neprošal sužinoti kur dėti strip_user_weapons, kad ant naujo round nebūtų susidvigubinę ginklai.
ISVYKES

User avatar
aurimasko
Flooderis arba specialistas
Posts: 736
Joined: 2010 Sep 04 08:45

Re: Pageidavimas[Vip menu]

Post by aurimasko »

prieš ginklų davimą reikia stripinti ginklus. Na pvz:

Code: Select all

 strip_user_weapons(id)//Duoda ginklus 
bet šiuo atveju atema viską ir knife, defuse, grenades.. tad jeigu tai bus vipmenu reikia dar pridėti, jog neatiminėtų c4 ir panašiai.

O neduoda ginklų todėl, kad nepadaryta jog duotų ar bent jau nematau.

reikia registruoti spawn forwardą:

Code: Select all

RegisterHam(Ham_Spawn, "player", "player_spawn", 1)
šį reikia dėti į plugin_init().


tada kurti spawn funkciją:

Code: Select all

 public player_spawn(id){if(!is_user_alive(id)) //tam kad nemestų errorreturn HAM_IGNORED  //Čia duodi ginklusreturn HAM_IGNORED} 
tik duodamas ginklus nepamiršk patikrinti ar įjungtas tam tikras punktas.
taip pat reikia kad registruotas būtų include, tai yra #include <hamsandwich>

User avatar
aaarnas
Vyr. diskusijų administratorius
Posts: 3891
Joined: 2010 Aug 31 13:21
Skype: fiarno
Contact:

Re: Pageidavimas[Vip menu]

Post by aaarnas »

aurimasko wrote:aarnai, norėčiau paklausti ar negalima būtų daryti kažko panašaus į šitai kai paspaudi mygtuką:

Code: Select all

 case 1:{g_toggle_m4a1[id] ? g_toggle_m4a1[id] = false : g_toggle_m4a1[id] = true} 
Pamėgink kompiliuot. Šiaip ne, neturėtų leisti, nes ? sąlyga tiesiog grąžina reikšmę. Galima daryti taip jei nori tokiu būdu:

Code: Select all

g_toggle_m4a1[id] = g_toggle_m4a1[id]?false:true
Palikau CS pasaulį ;/ . Nebepasiekiamas.

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests