Witamy w Nieoficjalnym polskim support'cie AMX Mod X
Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
|
Guest Message by DevFuse
Zamrazanie menu po wyborze
Temat rozp.
M@nkovsky
, 12.10.2011 12:56
14 odpowiedzi w tym temacie
#1
Napisano 12.10.2011 12:56
Witam , ciężko mi to opisać (postaram się dość jasno)
Chciałbym zrobić coś takiego ,że po wyborze frakcji na serwerze menu się zamrozi na 5sekund(przykładowo) i przez te 5sekund nie będzie można wybrać klasy.
Potrzebuje czegoś takiego gdyż niektóre bazy nie wczytują od razu danych a nie sposób wszystkich garczy ciągle ostrzegać ,żeby odczekali.
Pytanie brzmi , czy takie coś jest wykonalne?
Chciałbym zrobić coś takiego ,że po wyborze frakcji na serwerze menu się zamrozi na 5sekund(przykładowo) i przez te 5sekund nie będzie można wybrać klasy.
Potrzebuje czegoś takiego gdyż niektóre bazy nie wczytują od razu danych a nie sposób wszystkich garczy ciągle ostrzegać ,żeby odczekali.
Pytanie brzmi , czy takie coś jest wykonalne?
#2
Napisano 12.10.2011 13:02
Automatyczna wiadomość
Ten temat został przeniesiony z forum:
AMX Mod X → Pytania
do
Scripting AMXX → Pytania
#3
Napisano 12.10.2011 14:14
Daj sma CoD-a
#4
Napisano 12.10.2011 14:14
Menu Callback i item_disabled ?(chyba tak to się pisze)
#5
Napisano 12.10.2011 19:15
Jak by kto mógł to proszę o konkretny przykład.
Bo posty wyżej nie wiele mi mówią ; /
Bo posty wyżej nie wiele mi mówią ; /
#6
Napisano 12.10.2011 21:10
Kawałek z mojego kodu.
I public, to zablokuje dany item w menu, mam nadzieję, iż się połapałeś.
menu_additem(menu, szFormats, "999", 0, menu_makecallback("callback_cmdSkill"));
public callback_cmdSkill(id, menu, item)
return ITEM_DISABLED;
I public, to zablokuje dany item w menu, mam nadzieję, iż się połapałeś.
#7
Napisano 13.10.2011 12:19
ew. można jeszcze handle'u:
Po wybraniu frakcji do zmiennej np. g_fWaitTime[33] zapisujesz get_gametime()+10.0. Następnie w handle sprawdzasz czy get_gametime() jest <= g_fWaitTime[id]. Jeżeli tak, zwracasz PLUGIN_CONTINUE. Jeżeli nie, będzie można wybrać klasę. Enjoy.
Po wybraniu frakcji do zmiennej np. g_fWaitTime[33] zapisujesz get_gametime()+10.0. Następnie w handle sprawdzasz czy get_gametime() jest <= g_fWaitTime[id]. Jeżeli tak, zwracasz PLUGIN_CONTINUE. Jeżeli nie, będzie można wybrać klasę. Enjoy.
#8
Napisano 13.10.2011 13:01
@MarWit
Najlepsza metoda tutaj to użycie callback_menu (aby się zbytnio nie bawić) nie jest to trudne w zrobieniu.
Najlepsza metoda tutaj to użycie callback_menu (aby się zbytnio nie bawić) nie jest to trudne w zrobieniu.
#9
Napisano 13.10.2011 13:18
daj sma
#10
Napisano 15.10.2011 18:59
O mamuniu..
Dark nie mogę dać Sma , wybacz ; )
Mam Diablo robione starym stylem tworzenia menu i nie bardzo wiem jak to posklejać
Mógłbyś mi to zrobić an zasadzie "runemenu"
Oczywiście za pomoc ++
Dark nie mogę dać Sma , wybacz ; )
Mam Diablo robione starym stylem tworzenia menu i nie bardzo wiem jak to posklejać
Mógłbyś mi to zrobić an zasadzie "runemenu"
Oczywiście za pomoc ++
public buyrune(id)
{
new text[513]
format(text, 512, "\ySklep z runami - ^n\w1. Upgrade Przedmiotu \r[$9000]^n\w2. Losuj Przedmiot \r[$5000]^n\w3. Pakiet Doswiadczenia \r[$14500]^n\w4. Loteria Expa \r[$14500]^n^n\w0. Zamknij")
new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
show_menu(id, keys, text)
return PLUGIN_HANDLED
}
public select_rune_menu(id, key)
{
switch(key)
{
case 0:
{
if (!UTIL_Buyformoney(id,9000))
return PLUGIN_HANDLED
upgrade_item(id)
}
case 1:
{
if (!UTIL_Buyformoney(id,5000))
return PLUGIN_HANDLED
award_item(id,0)
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,10000))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"dostales %d expa!",exp)
return PLUGIN_HANDLED
}
case 3:
switch(random_num(0,2))
{
case 0:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Zwykly)",exp)
return PLUGIN_HANDLED
}
case 1:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Podwojny)",exp)
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
client_print(id,print_center,"Masz pecha, nic nie dostales.")
return PLUGIN_HANDLED
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED
}
#11
Napisano 15.10.2011 19:07
No to na początku tworzysz zmienną globalną ( new Float:g_fWaitTime[33]; ) O reszcie już mowiłem.
public buyrune(id)
{
new text[513]
format(text, 512, "\ySklep z runami - ^n\w1. Upgrade Przedmiotu \r[$9000]^n\w2. Losuj Przedmiot \r[$5000]^n\w3. Pakiet Doswiadczenia \r[$14500]^n\w4. Loteria Expa \r[$14500]^n^n\w0. Zamknij")
new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
show_menu(id, keys, text)
g_fWaitTime[id] = get_gametime() + 10.0
return PLUGIN_HANDLED
}
public select_rune_menu(id, key)
{
if(g_fWaitTime[id] > get_gametime())
return PLUGIN_CONTINUE
switch(key)
{
case 0:
{
if (!UTIL_Buyformoney(id,9000))
return PLUGIN_HANDLED
upgrade_item(id)
}
case 1:
{
if (!UTIL_Buyformoney(id,5000))
return PLUGIN_HANDLED
award_item(id,0)
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,10000))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"dostales %d expa!",exp)
return PLUGIN_HANDLED
}
case 3:
switch(random_num(0,2))
{
case 0:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Zwykly)",exp)
return PLUGIN_HANDLED
}
case 1:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Podwojny)",exp)
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
client_print(id,print_center,"Masz pecha, nic nie dostales.")
return PLUGIN_HANDLED
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_HANDLED
}
#12
Napisano 26.10.2011 11:52
Fajnie ze zamrozi menu ale mi chodzi o to zeby zamrozilo a menu zostało. Tak jakby nie dało się ic wcisnąć..
Przy twojej opcji znika całkowicie
Przy twojej opcji znika całkowicie
#13
Napisano 26.10.2011 11:59
dodac, bola ze po wyborze czegos daje go na true + task tam ze po 10 sek ma mu zrobic na false ;] i przed calym menu dac if(bol[id]] i juz ;d, jest to co prawda badziewny sposob ale powinien zadzialac
new bool:uzyl_menu[33];
#define TASK_UZYL 9988
public buyrune(id)
{
new text[513]
format(text, 512, "\ySklep z runami - ^n\w1. Upgrade Przedmiotu \r[$9000]^n\w2. Losuj Przedmiot \r[$5000]^n\w3. Pakiet Doswiadczenia \r[$14500]^n\w4. Loteria Expa \r[$14500]^n^n\w0. Zamknij")
new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
show_menu(id, keys, text)
return PLUGIN_HANDLED
}
public select_rune_menu(id, key)
{
if(!uzyl_menu[id])
{
switch(key)
{
case 0:
{
if (!UTIL_Buyformoney(id,9000))
return PLUGIN_HANDLED
upgrade_item(id)
uzyl_menu[id] = true;
task_menu(id)
}
case 1:
{
if (!UTIL_Buyformoney(id,5000))
return PLUGIN_HANDLED
award_item(id,0)
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,10000))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"dostales %d expa!",exp)
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
case 3:
switch(random_num(0,2))
{
case 0:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Zwykly)",exp)
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
case 1:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Podwojny)",exp)
uzyl_menu[id] = true;
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
client_print(id,print_center,"Masz pecha, nic nie dostales.")
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
}
return PLUGIN_HANDLED
}
public task_menu(id)
{
if(!task_exists(id+TASK_UZYL))
{
set_task(10.0, "task_uzyl", id+TASK_UZYL, _, _, "b");
}
}
public task_uzyl(id)
{
uzyl_menu[id] = false;
remove_task(id+TASK_UZYL);
}
#14
Napisano 26.10.2011 12:42
up twoj sposob nie blokuje menu
#15
Napisano 26.10.2011 12:49
sprawdź tak
a jak nie to przepisz menu na nowy styl co w tym trudnego :F
new bool:uzyl_menu[33];
#define TASK_UZYL 9988
public buyrune(id)
{
new text[513]
format(text, 512, "\ySklep z runami - ^n\w1. Upgrade Przedmiotu \r[$9000]^n\w2. Losuj Przedmiot \r[$5000]^n\w3. Pakiet Doswiadczenia \r[$14500]^n\w4. Loteria Expa \r[$14500]^n^n\w0. Zamknij")
new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9)
show_menu(id, keys, text)
return PLUGIN_HANDLED
}
public select_rune_menu(id, key)
{
switch(key)
{
if(!uzyl_menu[id])
{
case 0:
{
if (!UTIL_Buyformoney(id,9000))
return PLUGIN_HANDLED
upgrade_item(id)
uzyl_menu[id] = true;
task_menu(id)
}
case 1:
{
if (!UTIL_Buyformoney(id,5000))
return PLUGIN_HANDLED
award_item(id,0)
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,10000))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"dostales %d expa!",exp)
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
case 3:
switch(random_num(0,2))
{
case 0:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Zwykly)",exp)
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
case 1:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
new exp = get_cvar_num("diablo_xpbonus")*random_num(1,2)+player_lvl[id]*get_cvar_num("diablo_xpbonus")/35
Give_Xp(id,exp)
client_print(id,print_center,"Dostales %d expa! (Podwojny)",exp)
uzyl_menu[id] = true;
return PLUGIN_HANDLED
}
case 2:
{
if (!UTIL_Buyformoney(id,14500))
return PLUGIN_HANDLED
client_print(id,print_center,"Masz pecha, nic nie dostales.")
uzyl_menu[id] = true;
task_menu(id)
return PLUGIN_HANDLED
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
else if(uzyl_menu[id])
{
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED
}
}
public task_menu(id)
{
if(!task_exists(id+TASK_UZYL))
{
set_task(10.0, "task_uzyl", id+TASK_UZYL, _, _, "b");
}
}
public task_uzyl(id)
{
uzyl_menu[id] = false;
remove_task(id+TASK_UZYL);
}
a jak nie to przepisz menu na nowy styl co w tym trudnego :F
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych