[ROZWIĄZANE] Problem z wyświetleniem nicku...
Andrzejek
22.11.2012
Witam, mam pewien problem z wyświetleniem nicku gracza tylko wyświetla się nazwa serwera o to funkcja chodzi o nick2:
stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...)
{
static i, name[32], num[5], menu, menuname[32]
vformat(menuname, charsmax(menuname), title, 7)
menu = menu_create(menuname, callback)
for(i = 1; i <= g_MaxClients; i++)
{
if(!is_user_connected(i) || (alive && !is_user_alive(i)) || (skip == i))
continue
if(!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT) && (cs_get_user_team(i) == team)))
{
get_user_name(i, name, charsmax(name))
num_to_str(i, num, charsmax(num))
menu_additem(menu, name, num, 0)
}
}
menu_display(id, menu)
}
public Menu_FreeDay(id)
{
if(prowadzacy_id == id && prowadzacy == 1 && is_user_alive(id))
menu_players(id, CS_TEAM_T, id, 1, "wybor_gracza_freeday", "\yWybierz gracza:")
return PLUGIN_CONTINUE
}
public wybor_gracza_freeday(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
static dst[32], data[5], access, callback
menu_item_getinfo(menu, item, access, data, charsmax(data), dst, charsmax(dst), callback)
new target[33], body
get_user_aiming(id, target[id], body)
get_user_name(id, nick, 31)
get_user_name(target[id], nick2, 31)
set_hudmessage(0, 255, 0, -1.0, 0.24, 0, 6.0, 5.0)
show_hudmessage(0, "%s dal FreeDay'a wiezniowi %s", nick, nick2)
blokada[target[id]] = true
freeday = true
entity_set_int(target[id], EV_INT_skin, 3)
return PLUGIN_HANDLED
}
GwynBleidD
22.11.2012
Nie czytałeś widzę mojego poradnika:
http://amxx.pl/topic...tworzenia-menu/
Tam masz ładny przykład jak dobrze zrobić menu z graczami. Możesz dodać swoje warunki tam i wszystko będzie ładnie działać. Twój sposób jest trochę na "dziko", zobacz jakie błędy popełniasz.
get_user_name z podanym 0 jako indeks powinno pokazać nazwę serwera... Tak mi się przynajmniej wydaje, sprawdź to
Więc skoro to prawda, to gdzieś musiało Ci się 0 wkraść do get_user_name.
http://amxx.pl/topic...tworzenia-menu/
Tam masz ładny przykład jak dobrze zrobić menu z graczami. Możesz dodać swoje warunki tam i wszystko będzie ładnie działać. Twój sposób jest trochę na "dziko", zobacz jakie błędy popełniasz.
get_user_name z podanym 0 jako indeks powinno pokazać nazwę serwera... Tak mi się przynajmniej wydaje, sprawdź to
Więc skoro to prawda, to gdzieś musiało Ci się 0 wkraść do get_user_name.
Użytkownik GwynBleidD edytował ten post 22.11.2012 20:31
Andrzejek
23.11.2012
No mam funkcje, ale nie wiem za bardzo jak to dodać do tego:
public show_przelew(id, wartosc) {
new menu = menu_create("Wybierz gracza do przelania kasy", "handle_przelew");
new players[32], num;
new name[32], info[3];
get_players(players, num);
for(new i=0; i<num; ++i) {
get_user_name(players[i], name, 31);
info[0] = wartosc;
info[1] = players[i];
info[2] = get_user_userid(players[i]);
menu_additem(menu, name, info);
}
menu_display(id, menu);
}
public handle_przelew(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new info[3], access, callback;
menu_item_getinfo(menu, item, access, info, 3,_, _, callback);
if(is_user_connected(info[0]) && info[2] == get_user_userid(info[0]))
przelej_kase(id, info[1], info[0]);
menu_destroy(menu);
return PLUGIN_HANDLED;
}
sebul
23.11.2012
Nie możesz robić czegoś takiego
wartość zapewne może przyjmować spore wartości i właśnie przy tych większych wartościach będzie to źle działać, bo 3 parametr "menu_additem" ma ograniczenia i większych liczb jak 127 nie przyjmie, a raczej powyżej takiej liczby, będą działy się "cuda".
info[0] = wartosc;
wartość zapewne może przyjmować spore wartości i właśnie przy tych większych wartościach będzie to źle działać, bo 3 parametr "menu_additem" ma ograniczenia i większych liczb jak 127 nie przyjmie, a raczej powyżej takiej liczby, będą działy się "cuda".
speedkill
23.11.2012
Z Deathrun_wyścig:
public ShowMenu(id){ new Menu = menu_create("Wybierz gracza:", "MenuChoose"); new szBuffer[2][64]; for(new i = 1; i < 33; i++) { if(is_user_alive(i)){ get_user_name(i, szBuffer[0], 63); num_to_str(i, szBuffer[1], 63); menu_additem(Menu, szBuffer[0], szBuffer[1]); } } menu_setprop(Menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, Menu); } public MenuChoose(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } new iAccess, i, iCallBack; new szInfo[64]; menu_item_getinfo(menu, item, iAccess, szInfo, 63, _, _, iCallBack); i = str_to_num(szInfo); // id wybranej osoby if(is_user_alive(i)){ //Kod } menu_destroy(menu); return PLUGIN_HANDLED; }
GwynBleidD
23.11.2012
No to widzę, że kolega jakoś szczególnie biegły w programowaniu nie jest, więc trzeba więcej pomocy
Zgadzam się z kol. sebul, to nie będzie działać jak za id, userid albo wartosc podstawi się zbyt dużą liczbę... Ale i na to jest obejście, można podzielić liczbę na kilka mniejszych. Poprawiony kod z Twoimi warunkami:
PS. fajny warunek
nie prościej true?
Zgadzam się z kol. sebul, to nie będzie działać jak za id, userid albo wartosc podstawi się zbyt dużą liczbę... Ale i na to jest obejście, można podzielić liczbę na kilka mniejszych. Poprawiony kod z Twoimi warunkami:
stock menu_players(id, CsTeams:team, skip, alive, callback[], title[], any:...)
{
new menu, menuname[32]
vformat(menuname, charsmax(menuname), title, 7)
menu = menu_create(menuname, callback)
new players[32], num;
new name[32], info[4];
get_players(players, num);
for(new i=0; i<num; ++i) {
if(alive && !is_user_alive(i))
continue;
if(skip == i)
continue;
if(cs_get_user_team(i) != team)
continue;
get_user_name(players[i], name, 31);
info[0] = players[i];
new userid = get_user_userid(players[i]);
info[1] = userid%256;
info[2] = userid/256;
info[3] = 0; // musimy udawać, że to string, więc null na końcu
menu_additem(menu, name, info);
}
menu_display(id, menu);
}
PS. fajny warunek
!(team == CS_TEAM_T || team == CS_TEAM_CT) || ((team == CS_TEAM_T || team == CS_TEAM_CT)
nie prościej true?
Andrzejek
23.11.2012
Ten warunek był z gotowca. Chodzi mi dokładnie o menu które wyświetla wszystkich żyjących graczy z tt oraz nie wyświetla graczy którzy maja juz fd. Po wybraniu gracza wlacza się:
Użytkownik Andrzejek edytował ten post 23.11.2012 11:45
get_user_name(id, nick, 31)
get_user_name(target[id], nick2, 31)
set_hudmessage(0, 255, 0, -1.0, 0.24, 0, 6.0, 5.0)
show_hudmessage(0, "%s dal FreeDay'a wiezniowi %s", nick, nick2)
blokada[target[id]] = true
freeday = true
entity_set_int(target[id], EV_INT_skin, 3)
Użytkownik Andrzejek edytował ten post 23.11.2012 11:45
speedkill
25.11.2012
O takie coś chodzi ?
public ShowMenu(id){ new Menu = menu_create("Wybierz gracza:", "MenuChoose"); new szBuffer[2][64]; for(new i = 1; i < 33; i++){ if(is_user_alive(i) && get_user_team(i) == 1){ get_user_name(i, szBuffer[0], 63); num_to_str(i, szBuffer[1], 63); menu_additem(Menu, szBuffer[0], szBuffer[1]); } } menu_setprop(Menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, Menu); } public MenuChoose(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } new iAccess, i, iCallBack; new szInfo[64]; menu_item_getinfo(menu, item, iAccess, szInfo, 63, _, _, iCallBack); i = str_to_num(szInfo); // id wybranej osoby if(is_user_alive(i) && get_user_team(i) == 1){ //Kod dla wybranego gracza np. set_user_health(i, 120); new g_Name[2][64]; get_user_name(id, g_Name[0], 63); get_user_name(i, g_Name[1], 63); set_hudmessage(0, 255, 0, -1.0, 0.24, 0, 6.0, 5.0); show_hudmessage(0, "%s dal FreeDay'a wiezniowi %s", g_Name[0], g_Name[1]); blokada[i] = true; freeday = true; entity_set_int(i, EV_INT_skin, 3); } menu_destroy(menu); return PLUGIN_HANDLED; }
Andrzejek
25.11.2012
chyba ta:
Ale zawsze można zrobić osobna
Użytkownik Andrzejek edytował ten post 25.11.2012 12:36
blokada[i] = true;
Ale zawsze można zrobić osobna
Użytkownik Andrzejek edytował ten post 25.11.2012 12:36
speedkill
25.11.2012
public ShowMenu(id){ new Menu = menu_create("Wybierz gracza:", "MenuChoose"); new szBuffer[2][64]; for(new i = 1; i < 33; i++){ if(is_user_alive(i) && get_user_team(i) == 1 && !blokada[i]){ get_user_name(i, szBuffer[0], 63); num_to_str(i, szBuffer[1], 63); menu_additem(Menu, szBuffer[0], szBuffer[1]); } } menu_setprop(Menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, Menu); } public MenuChoose(id, menu, item){ if(item == MENU_EXIT){ menu_destroy(menu); return PLUGIN_HANDLED; } new iAccess, i, iCallBack; new szInfo[64]; menu_item_getinfo(menu, item, iAccess, szInfo, 63, _, _, iCallBack); i = str_to_num(szInfo); // id wybranej osoby if(is_user_alive(i) && get_user_team(i) == 1 && !blokada[i]){ //Kod dla wybranego gracza np. set_user_health(i, 120); new g_Name[2][64]; get_user_name(id, g_Name[0], 63); get_user_name(i, g_Name[1], 63); set_hudmessage(0, 255, 0, -1.0, 0.24, 0, 6.0, 5.0); show_hudmessage(0, "%s dal FreeDay'a wiezniowi %s", g_Name[0], g_Name[1]); blokada[i] = true; freeday = true; entity_set_int(i, EV_INT_skin, 3); } menu_destroy(menu); return PLUGIN_HANDLED; }
Andrzejek
25.11.2012
Dzięki masz +
Można zamknać
Użytkownik Andrzejek edytował ten post 25.11.2012 13:20
Można zamknać
Użytkownik Andrzejek edytował ten post 25.11.2012 13:20
sebul
25.11.2012
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL