Kas antrą round

Šiame forume rašomi vartotojų klausimai/problemos su kuriomis jie susidūrė kuriant pluginus.
Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: Kas antrą round

Post by Spag »

InvIs wrote:

Code: Select all

new vip_ct_key = str_to_num(data)
Nu ir nx?

Code: Select all

public menu_handler(id, menu, item){  switch item:  {    case 1:    case 2:    ...  }}
Jokių str_to_num nereikia.

EDIT: Bent jau iš tavo tokios kodo dalies tik tiek ir tegalima spręsti, nors manau, bėda tikrai kažkur kitur. Mano kodas veikia, bandžiau.
Tas str_num_date nk nekeičia, aš pasidaręs kad nereikėtų nuo 0 case... Ir vistiek neveikia tas tavo kodas, suskurk simple meniu ištestuok ir įdėk pilną kodą, jeigu tu toks tikras kad veikia :))))

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

Re: Kas antrą round

Post by InvIs »

aš pasidaręs kad nereikėtų nuo 0 case
O, kad pirmasis masyvas eina Item[id][0], tai nesvarbu?

-- 2013 Bir 06 11:59 --

Hm, išties vienur žioplą klaidą palikau. Atsiprašau.

Code: Select all

#include <amxmodx>#define ITEM_COUNT 2 // Priklauso kiek meniu punktunew Itemas[33][ITEM_COUNT]new roundpublic logevent_round_start(){    for(new i = 1; i <= 32; i++)        for(new a = 0; a < ITEM_COUNT; a++)            Itemas[i][a]--}public plugin_init( ){    register_plugin("Meniu Test", "1.0", "InvIs")    register_logevent("logevent_round_start", 2, "1=Round_Start")    round = register_cvar("amxx_round_use", "2") // Kas kiek round    register_clcmd("say /menu", "meniu")}public meniu(id){    new menu = menu_create("Test meniu", "menu_handler")    for(new i = 0; i < ITEM_COUNT; i++)    {        if(Itemas[id][i] <= 0)            menu_additem(menu, "\wPunktas")        else            menu_additem(menu, "\dPunktas negalimas")    }    menu_display(id, menu, 0)}public menu_handler(id, menu, item){    if(item == MENU_EXIT)    {        menu_destroy(menu)        return PLUGIN_HANDLED;    }    switch(item)    {        default:        {            if(Itemas[id][item] <= 0)            {                client_print(id, print_chat, "Punktas pasirinktas!")                Itemas[id][item] = get_pcvar_num(round)                meniu(id)            }            else            {                client_print(id, print_chat, "Punktas negalimas, dar laukti %i round", Itemas[id][item])                meniu(id)            }        }    }    return PLUGIN_HANDLED;}
ISVYKES

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: Kas antrą round

Post by Spag »

InvIs wrote:
aš pasidaręs kad nereikėtų nuo 0 case
O, kad pirmasis masyvas eina Item[id][0], tai nesvarbu?

-- 2013 Bir 06 11:59 --

Hm, išties vienur žioplą klaidą palikau. Atsiprašau.

Code: Select all

#include <amxmodx>#define ITEM_COUNT 2 // Priklauso kiek meniu punktunew Itemas[33][ITEM_COUNT]new roundpublic logevent_round_start(){    for(new i = 1; i <= 32; i++)        for(new a = 0; a < ITEM_COUNT; a++)            Itemas[i][a]--}public plugin_init( ){    register_plugin("Meniu Test", "1.0", "InvIs")    register_logevent("logevent_round_start", 2, "1=Round_Start")    round = register_cvar("amxx_round_use", "2") // Kas kiek round    register_clcmd("say /menu", "meniu")}public meniu(id){    new menu = menu_create("Test meniu", "menu_handler")    for(new i = 0; i < ITEM_COUNT; i++)    {        if(Itemas[id][i] <= 0)            menu_additem(menu, "\wPunktas")        else            menu_additem(menu, "\dPunktas negalimas")    }    menu_display(id, menu, 0)}public menu_handler(id, menu, item){    if(item == MENU_EXIT)    {        menu_destroy(menu)        return PLUGIN_HANDLED;    }    switch(item)    {        default:        {            if(Itemas[id][item] <= 0)            {                client_print(id, print_chat, "Punktas pasirinktas!")                Itemas[id][item] = get_pcvar_num(round)                meniu(id)            }            else            {                client_print(id, print_chat, "Punktas negalimas, dar laukti %i round", Itemas[id][item])                meniu(id)            }        }    }    return PLUGIN_HANDLED;}
Na va jau veikia :) Tik yra 2 problemėlės, kaip daryt, kad jeigu žaidėjas atsijungia jam nustatytų visus item 0, kad nebūtų bugų. Ir pačiame meniu kaip blokuoti su call funkcija pasirinkimus? Bandžiau bet lempa gavosi...

Code: Select all

menu_additem(vpmenu ,"belekas", "1", 0 (VItem[id][item] != 0) ? vpmenu_call : -1);
neina net sukompiliuot, tie tikrinimai xujovi tas pats ir client_disconect

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

Re: Kas antrą round

Post by InvIs »

Dėl nustatymo į 0 :

Code: Select all

public client_disconnect(id){    for(new a = 0; a < ITEM_COUNT; a++)        Itemas[id][a] = 0}
Dėl kito klausimo negaliu patarti, nes pats tokio dalyko nenaudoju.

Aš daryčiau taip:

Code: Select all

new Format[64]formatex(Format, charsmax(Format), "%sItem name", (Itemas[id][0] <= 0) ? "\w" : "\d")menu_additem(menu, Format)
ISVYKES

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: Kas antrą round

Post by Spag »

InvIs wrote:Dėl nustatymo į 0 :

Code: Select all

public client_disconnect(id){    for(new a = 0; a < ITEM_COUNT; a++)        Itemas[id][a] = 0}
Dėl kito klausimo negaliu patarti, nes pats tokio dalyko nenaudoju.

Aš daryčiau taip:

Code: Select all

new Format[64]formatex(Format, charsmax(Format), "%sItem name", (Itemas[id][0] <= 0) ? "\w" : "\d")menu_additem(menu, Format)
Man reikia su call, tavo varijantas netinka.

Code: Select all

    menu_additem(vpmenu ,"M4A1", "6", 0, (VItem[id][0] != 0) ? vpmenu_call : -1);
kažkokia lempa gaunasi, viada blokuoja meniu su tokiu tikrinimu...

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

Re: Kas antrą round

Post by InvIs »

Nes Itemas pradžioje gali būti mažiau už nulį. Tikrink

Code: Select all

Itemas[id][item] <= 0 ? True : False
O kam tau būtent reikia anaip?
ISVYKES

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: Kas antrą round

Post by Spag »

InvIs wrote:Nes Itemas pradžioje gali būti mažiau už nulį. Tikrink

Code: Select all

Itemas[id][item] <= 0 ? True : False
O kam tau būtent reikia anaip?
Man reikia užblokuoti visą punktą, kad neitų paspausti, nes taip optimaliausia, o ne spalvas keitinėti.. ;D Su VItem[id][item] errorų pilną, nes niekur neregistruotas ITEM kintamasis. O tikrinimai ar != 0 , ar <= 0 neturi reikšmės su visu tokiu kodu, nes neveikia tiesiog, buglandynas <- vienu žodžiu.

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

Re: Kas antrą round

Post by InvIs »

Optimaliau... Dėl dviejų eilučių tu su tuo callback darašysi dar tris.
Daryk taip, kaip daro visi ir nebus problemų. O pačiame meniu reikia rašyti:

Code: Select all

Itemas[id][/* 0,1,2...Priklauso kelintas item'as */]
ISVYKES

Spag
Gana aktyvus vartotojas
Posts: 269
Joined: 2012 Dec 31 15:39

Re: Kas antrą round

Post by Spag »

InvIs wrote:Optimaliau... Dėl dviejų eilučių tu su tuo callback darašysi dar tris.
Daryk taip, kaip daro visi ir nebus problemų. O pačiame meniu reikia rašyti:

Code: Select all

Itemas[id][/* 0,1,2...Priklauso kelintas item'as */]
Ačiū už pagalbą, + karma daviau :) Lock temą.

Post Reply

Who is online

Users browsing this forum: Bing [Bot] and 2 guests