Racja, mój błąd.
Tu rozwiązanie napisane na kolanie (nie testowane):
Spoiler
#include <amxmodx> #include <amxmisc> #include <cstrike> #define FLAGA_DOSTEPU_DO_KOMENDY ADMIN_KICK #define MAKS_ILOSC_POSIADANYCH_PIENIEDZY 16000 new g_szTrescKomendy[] = "/daj_pieniadze"; public plugin_init() { register_plugin("Dawanie/Zabieranie pieniedzy", "1.0" , "_McHappy"); register_clcmd("say", "hUchwytSay"); register_clcmd("say_team", "hUchwytSay"); } public hUchwytSay(id) { new szWpisanyTekst[128] read_args(szWpisanyTekst, charsmax(szWpisanyTekst)); remove_quotes(szWpisanyTekst); new szTrescWpisanejKomendy[32]; strbreak(szWpisanyTekst, szTrescWpisanejKomendy, charsmax(szTrescWpisanejKomendy), szWpisanyTekst, charsmax(szWpisanyTekst)); if(!equali(szTrescWpisanejKomendy, g_szTrescKomendy)) return PLUGIN_CONTINUE; new szWpisanyNickGracza[32], iGraczDocelowy; strbreak(szWpisanyTekst, szWpisanyNickGracza, charsmax(szWpisanyNickGracza), szWpisanyTekst, charsmax(szWpisanyTekst)); if(!(iGraczDocelowy = cmd_target(id, szWpisanyNickGracza, 0))) { if(szWpisanyNickGracza[0]) client_print(id, print_center, "Nie znaleziono gracza z nickiem podobnym do ^"%s^"...", szWpisanyNickGracza); return PLUGIN_HANDLED; } new iWpisanaIloscPieniedzy, bool:bTrybOdejmowania; if((bTrybOdejmowania = (szWpisanyTekst[0] == '-'))) replace(szWpisanyTekst, charsmax(szWpisanyTekst), "-", ""); if(!(iWpisanaIloscPieniedzy = str_to_num(szWpisanyTekst))) { client_print(id, print_center, "Ilosc pieniedzy musi byc liczba niezerowa..."); return PLUGIN_HANDLED; } new iDeltaIlosciPieniedzy, iIloscPieniedzyGraczaDocelowego = cs_get_user_money(iGraczDocelowy); if(bTrybOdejmowania) { if(!iIloscPieniedzyGraczaDocelowego) { client_print(id, print_center, "Wybrany gracz nie posiada zadnych pieniedzy..."); return PLUGIN_HANDLED; } iDeltaIlosciPieniedzy = clamp(iWpisanaIloscPieniedzy, 1, iIloscPieniedzyGraczaDocelowego); cs_set_user_money(iGraczDocelowy, iIloscPieniedzyGraczaDocelowego - iDeltaIlosciPieniedzy, 1); } else { if(iIloscPieniedzyGraczaDocelowego >= MAKS_ILOSC_POSIADANYCH_PIENIEDZY) { client_print(id, print_center, "Wybrany gracz posiada maksymalna ilosc pieniedzy..."); return PLUGIN_HANDLED; } iDeltaIlosciPieniedzy = clamp(iWpisanaIloscPieniedzy, 1, MAKS_ILOSC_POSIADANYCH_PIENIEDZY-iIloscPieniedzyGraczaDocelowego); cs_set_user_money(iGraczDocelowy, iIloscPieniedzyGraczaDocelowego + iDeltaIlosciPieniedzy, 1); } new szNazwaGracza[32], szNazwaAdmina[32]; get_user_name(iGraczDocelowy, szNazwaGracza, charsmax(szNazwaGracza)) get_user_name(id, szNazwaAdmina, charsmax(szNazwaAdmina)); client_print(0, print_chat, "[ Informacja ] Admin %s %s %d dolarow graczowi %s.", szNazwaAdmina, (bTrybOdejmowania ? "zabral" : "dodal"), iDeltaIlosciPieniedzy, szNazwaGracza); return PLUGIN_HANDLED; }
Użycie:
/daj_pieniadze <NickGracza> <Kwota>
Podanie kwoty na minusie zabierze pieniądze graczowi.
Komenda możliwa do zmiany na górze kodu pluginu.
Domyślnie pieniądze może dawać/zabierać admin z ustaloną flagą ADMIN_KICK (do zmiany tak jak opcja powyżej).