Page 3 of 3
Re: Kas antrą round
Posted: 2013 Jun 05 17:53
by Spag
InvIs wrote:
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

)))
Re: Kas antrą round
Posted: 2013 Jun 06 09:47
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;}
Re: Kas antrą round
Posted: 2013 Jun 06 15:16
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
Re: Kas antrą round
Posted: 2013 Jun 06 15:24
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)
Re: Kas antrą round
Posted: 2013 Jun 06 15:40
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...
Re: Kas antrą round
Posted: 2013 Jun 06 15:44
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?
Re: Kas antrą round
Posted: 2013 Jun 06 16:03
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.
Re: Kas antrą round
Posted: 2013 Jun 06 17:08
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 */]
Re: Kas antrą round
Posted: 2013 Jun 06 21:43
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ą.