Witam, jestem młodym programistą amxx i mam drobny problem
z napisanym przeze mnie pluginem na podstawie poradnika na tym forum.
W skrócie plugin ten co 5 rund na początku rundy losuje jednego gracza i daje mu bonus pod
postacią dolarów, monet lub expa. Warto też zaznaczyć, że napisałem go na Cod mod.
Jaki jest problem?
Zdarza się, że zamiast potencjalnego gracza wylosowane zostaje HLTV, przez co nagroda jest
tracona.
W związku z tym, mam 3 pytania:
1.Czy dobrym rozwiązaniem jest dodanie 1 if, który sprawdzał by, czy gracz ma wybraną klasę?
Jednak nie koniecznie zwykły gracz musi akurat w tej chwili mieć klasę, może właśnie wszedł?
2.Czy jest jakaś komenda, która "cofała by kod", tak, aby w przypadku wylosowania gracza o
nicku HLTV cały kod poleciał od początku, aż do natrafienia na innego gracza?
Niby można wsadzić cały kod w pętlę..
3.Czy jest po prostu inny sposób, na wylosowanie gracza pomijając HLTV?
Jak powiedziałem jestem młodym programistą i nie znam wszystkich komend i rozwiązań.
Jeśli jeden z moich pomysłów jest trafny to wskażcie mi go, jeśli znacie lepsze rozwiązanie,
proszę o podzielenie się nim
#include <amxmodx> #include <cstrike> #include <codmod> native cod_set_user_coins(id, wartosc); native cod_get_user_coins(id); #define add_user_money(%1,%2) cs_set_user_money(%1,cs_get_user_money(%1)+%2) #define add_user_coins(%1,%2) cod_set_user_coins(%1,cod_get_user_coins(%1)+%2) #define add_user_xp(%1,%2) cod_set_user_xp(%1, cod_get_user_xp(%1)+%2) //zmienne zawierające - raczej latwe new runda, maxPlayers,bool:nagrodzeni[33]; new cvar_rebkasa = 8000; new cvar_rebmonety = 15; new cvar_rebxp = 1000; public plugin_init() { register_plugin("Randomb Event Bonus", "0.2", "Hagis"); register_event("HLTV", "newRound", "a", "1=0", "2=0"); register_logevent("roundStart", 2, "1=Round_Start"); register_logevent("GameCommencing", 2, "1=Game_Commencing"); /* * cvar_rebkasa = register_cvar("random_event_bonus_money", "8000"); * cvar_rebmonety = register_cvar("random_event_bonus_coins", "10"); * cvar_rebxp = register_cvar("random_event_bonus_experience", "1000"); * Nie umiem tego do konca uzywac i dzieja sie dziwne rzeczy.. */ } //pobieranie maxPlayers public plugin_cfg(){ maxPlayers=get_maxplayers(); } //nowa runda public newRound(){ ++runda; } //podwójny reset na poczatku każdej mapy public GameCommencing(){ runda=0; } public roundStart(){ new name[32]; switch(runda){ case 5, 10, 15, 20, 25, 30:{ //Więcej nie powinno być //client_print(0, print_chat, "Losowanie wypalilo w rundzie %d", runda); // new gracze[32]; new liczbaGraczy; for (new id=1; id<=maxPlayers; ++id){ gracze[liczbaGraczy]=id; ++liczbaGraczy; } switch(random(3)) //PAMIĘTAJ, ŻE MA BYĆ O 1 WIĘCEJ { case 0: { if(liczbaGraczy){ //nagroda w dolarach new zwyciezca=gracze[random(liczbaGraczy)]; add_user_money(zwyciezca, cvar_rebkasa); client_print(zwyciezca, print_chat, "To twoj szczesliwy dzien! Dostales %d dolarow!",cvar_rebkasa); get_user_info(zwyciezca, "name", name, 31); client_print(0, print_chat, "%s dostal bonus w tej rundzie.", name ); nagrodzeni[zwyciezca]=true; } } case 1: { if(liczbaGraczy){ //nagroda w monetach new zwyciezca=gracze[random(liczbaGraczy)]; add_user_coins(zwyciezca, cvar_rebmonety); client_print(zwyciezca, print_chat, "To twoj szczesliwy dzien! Dostales %d monet!", cvar_rebmonety); get_user_info(zwyciezca, "name", name, 31); client_print(0, print_chat, "%s dostal bonus w tej rundzie.", name ); nagrodzeni[zwyciezca]=true; } } case 2: { if(liczbaGraczy){ //nagroda w expie new zwyciezca=gracze[random(liczbaGraczy)]; add_user_xp(zwyciezca, cvar_rebxp); client_print(zwyciezca, print_chat, "To twoj szczesliwy dzien! Dostales dodatkowe %d expa!", cvar_rebxp); get_user_info(zwyciezca, "name", name, 31); client_print(0, print_chat, "%s dostal bonus w tej rundzie.", name ); nagrodzeni[zwyciezca]=true; } } } } } } public client_putinserver(id){ nagrodzeni[id]=false; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
Jak widać próbowałem w kodzie umieścić cvary. Próbowałem, to dobre słowo.
Nie umiem tego do końca robić, w chwili wrzucania tego na serwer nie wiedziałem,
że cvary trzeba również umieścić w configach i 2 graczy dostało 6-cyfrową liczbę monet...
Jakby ktoś miał link do odpowiedniego tutorialu co do cvarów, to bardzo chętnie go przegryzę