Witam,
Mam plugin, którym mogę przelewać pieniądze innym graczom z Serwera.
Problem w tym, że w menu przelewanie są tylko ci gracze, którzy są od początku mapy.
Czyli np. Gracz wejdzie w trakcie połowy mapy, to jemu nie można przelać pieniędzy. Nie ma go na liście w menu.
KOD:
Spoiler
#include <amxmodx> #include <amxmisc> #include <cstrike> #include <colorchat> #define TASK 235 new Taker[33], bool:blokada[33]; new const g_commands[][] = { "say /kasa", "say_team /kasa" }; public plugin_init() { register_plugin("Cash Transfer","1.0","oeN."); for(new i = 0; i<sizeof(g_commands); i++){ register_clcmd(g_commands[i], "CashMenu"); } register_clcmd("Ile_Kasy", "GiveCash"); } public client_connect(id) blokada[id]=false; public CashMenu(id, level, cid) { if(blokada[id]) { ColorChat(id, RED, "^x04[BANK] ^x01Pieniadze mozesz przesylac raz na 2 minuty."); return PLUGIN_HANDLED; } new menu = menu_create("\rWybierz gracza", "CashMenuHandle"); new players[32], pnum, tempid; new szName[32], szTempid[10], szItem[64], iMoney; get_players(players, pnum); for( new i; i<pnum; i++ ) { tempid = players[i]; if(!is_user_connected(i) || id == tempid || cs_get_user_money(tempid) == 16000 || cs_get_user_team(tempid) == CS_TEAM_SPECTATOR) continue; iMoney = cs_get_user_money(tempid) get_user_name(tempid, szName, charsmax(szName)); num_to_str(tempid, szTempid, charsmax(szTempid)); formatex(szItem, charsmax(szItem), "%s (%i$)", szName, iMoney) menu_additem(menu, szItem, szTempid, 0); } menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu, 0); return PLUGIN_HANDLED; } public CashMenuHandle(id, menu, item) { if( item == MENU_EXIT ) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], szName[64]; new access, callback; menu_item_getinfo(menu, item, access, data,charsmax(data), szName,charsmax(szName), callback); Taker[id] = str_to_num(data); client_cmd(id, "messagemode Ile_Kasy"); menu_destroy(menu); return PLUGIN_HANDLED; } public GiveCash(id) { new szCash[64]; read_argv(1, szCash, 63) remove_quotes(szCash); new Cash = str_to_num(szCash); new giverMoney = cs_get_user_money(id); new takerMoney = cs_get_user_money(Taker[id]); if(Cash <= 0) { client_print(id, print_center, "Liczba musi byc wieksza od 0"); return PLUGIN_HANDLED; } if(giverMoney < Cash){ client_print(id, print_center, "Nie masz tyle kasy"); return PLUGIN_HANDLED; } if(takerMoney == 16000) { client_print(id, print_center, "Gracz ma $16000"); return PLUGIN_HANDLED; } if(takerMoney + Cash > 16000) { client_print(id, print_center, "Za duzo!"); return PLUGIN_HANDLED; } if( id == Taker[id]) { client_print(id, print_center, "Nie mozesz dac sobie!"); return PLUGIN_HANDLED; } new name[32] new name2[32] get_user_name(id, name, 32); get_user_name(Taker[id], name2, 32); cs_set_user_money(id, giverMoney - Cash); cs_set_user_money(Taker[id], takerMoney + Cash); ColorChat(id, GREEN, "[BANK]^x01 Przelales graczowi [^x04%s^x01] - [^x04%i dolarow^x01]", name2, Cash) ColorChat(Taker[id], GREEN, "[BANK]^x01 Otrzymales od gracza [^x04%s^x01] - [^x04%i dolarow^x01]", name, Cash) blokada[id]=true; new data[1]; data[0]=id; set_task(120.0, "odblokuj", .parameter=data, .len=1) return PLUGIN_CONTINUE; } public odblokuj(data[]) { new id=data[0]; blokada[id]=false; }