Witam. Mam problem. Otóż chcę dodać prezent dla najlepszego gracza rozgrzewki. Osoba, która będzie miała najwięcej fragów na rr otrzyma w pierwszej rundzie po rozgrzewce dodatkowe 200$, czyli łącznie będzie miała ich 1000. I tutaj pojawia się problem, jakiego eventu użyć, by gracz otrzymał dodatkowe pieniądze w tylko i wyłącznie w pierwszej rundzie po rr? Rozgrzewka trwa minutę, jest reset i gra zaczyna się od nowa.
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.
|
Pierwsza runda po rr
#2
Napisano 30.01.2014 15:11
I tutaj pojawia się problem, jakiego eventu
event nowej rundy. pod koniec rozgrzewki daj boolean'a z tym żeby dać i zapisz do zmiennej id gracza który wygrał. w funkcji odpowiadającej za nowa rundę sprawdz czy bolean jest na TAK , i dodaj graczowi hajs jednocześnie ustawiając takiego booleana na false;
#3
Napisano 30.01.2014 16:19
Jak dodam do rozgrzewki taki kod, to zadziała to dawanie kasy? Chodzi mi o to, żeby ono było tylko i wyłącznie w pierwszej rundzie i żeby otrzymał je najlepszy gracz rozgrzewki.
public client_connect(id) { prezent[id] = false; } public Koniec() { new players[32], num get_players(players, num) new rank[1] for(new i = 0; i < num; i++) { new id = players[i] prezent[id] = false if(frags[id] > rank[0]) { rank[0] = id } frags[i] = 0 } prezent[rank[0]] = true; } /* Naliczanie */ public Death() { new iKiller = read_data(1) new iVictim = read_data(2) new a = get_user_team(iKiller) new b = get_user_team(iVictim) new c = is_user_connected(iKiller) new d = is_user_connected(iVictim) if(a != b && c && d) { frags[iKiller]++ } } /* Prezent */ public New_Round() { { gRound++; } if(is_user_alive(id) && prezent[id]) { cs_set_user_money(id,cs_get_user_money(id) + 200) } if( gRound >= 2) { prezent[id]=false; }
#4
Napisano 30.01.2014 17:34
na pierwszy rzut oka już widzę że nie gdyż New_Round() nie ma parametru ID do którego chcesz się odwołać.
Reszta wydaje się być "ok" choć zamiast tworzyć tablicę dla każdego lepiej zrobić coś takiego.
Pseudo kod :
zmienne :
new bool:daj_hajs = false; new najlepszy_gracz = 0;
gdy rozgrzewka się skończy sprawdzaj kto ma najwięcej fragów (tak jak to zrobiłeś powinno styknąć) id gracza zapisuj w najlepszy_gracz i ustaw daj_hajs na true.
w evencie nowej rundy sprawdzaj czy daj_hajs jest true , jak tak ,
cs_set_user_money(najlepszy_gracz,cs_get_user_money(najlepszy_gracz)+200); daj_hajs = false;
powinno styknąć. wiele nie pomogę gdyż dawno nie bawiłęm się w tym + nie mam kodu Twojej rozgrzewki.
Powodzenia!
#5
Napisano 30.01.2014 20:39
#include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <StripWeapons> #define PLUGIN "Rozgrzewka" #define VERSION "1.0" #define AUTHOR "Jenot" #define MAX 32 #define SPAWN_TASKID 9999 #define TASK_EQUIP 99999 #define RESTART_TASKID 123 #define ACTIVE_TASKID 124 enum PluginSounds { psJeden, psDwa, psTrzy, psMuzyka }; stock const gPluginSounds[ PluginSounds ][ 128 ] = { "sound/rozgrzewka/jeden.wav", "sound/rozgrzewka/dwa.wav", "sound/rozgrzewka/trzy.wav", "sound/rozgrzewka/muzyka.mp3" } stock const gPluginPause[ ][ ] = { "imessage.amxx", "redbull.amxx", "scrollmsg.amxx", "vip.amxx", "RoundSound.amxx", "ultimate_sounds.amxx" } new bool:Active = false; new bool:gbPlay[ MAX + 1 ]; new bool:daj_hajs = false; new frags[33]; new gPcvar[ 3 ]; public plugin_init( ) { register_plugin( PLUGIN, VERSION, AUTHOR ) register_event("TextMsg", "Game_Restart", "a", "2&#Game_C"); register_event("DeathMsg","onDeath","a"); register_event("CurWeapon","eventCurWeapon","be","1=0", "2!0"); register_event("HLTV", "New_Round", "a", "1=0", "2=0"); RegisterHam(Ham_Spawn, "player", "fwSpawn",1); gPcvar[ 0 ] = register_cvar( "rozgrzewka_czas", "95" ); gPcvar[ 1 ] = register_cvar( "rozgrzewka_odrodzenie", "2.0" ); gPcvar[ 2 ] = get_cvar_pointer( "mp_freezetime" ); blockBuy( ); } public plugin_precache( ) { for( new i = 0; i < sizeof( gPluginSounds ); i++) { precache_generic( gPluginSounds[ PluginSounds: i ] ); } } public Game_Restart( ) { if( Active ) { remove_task( RESTART_TASKID ); return; } Active = true; new iRTime = get_pcvar_num( gPcvar[ 0 ] )+ get_pcvar_num( gPcvar[ 2 ] ) + 1; for( new i = 1; i < MAX + 1; i++ ) { gbPlay[ i ] = true; } new param[ 1 ]; param[ 0 ]= iRTime; set_task( 1.0, "CountDown", RESTART_TASKID, param, 1); for(new i = 0; i < sizeof gPluginPause; i++) { pause( "ac", gPluginPause[ i ] ); } } public CountDown( param[ 1 ] ) { new iNow = param[ 0 ]--; switch( iNow ) { case 0:{ server_cmd("sv_restartround 1"); clearRespawns(); new param[ 1 ]; param[ 0 ] = 0; set_task(1.0, "Activation", ACTIVE_TASKID, param, 1); for(new i = 0; i < sizeof gPluginPause; i++) { unpause( "ac", gPluginPause[ i ] ); } } case 1: play( 0, gPluginSounds[ psJeden ] ); case 2: play( 0, gPluginSounds[ psDwa ] ); case 3: play( 0, gPluginSounds[ psTrzy ] ); } if( iNow >= 1) { set_task( 1.0, "CountDown", RESTART_TASKID, param, 1); } new fx = 0; if( iNow <= 5) { fx=1; } set_hudmessage( random_num( 0, 255 ), random_num( 0, 255 ), random_num( 0, 255 ), 0.65, 0.75, fx, 6.0, 1.0 ) show_hudmessage(0, "Czas rozgrzewki^n%2d:%02d",iNow/60,iNow%60); } public Activation( param[ 1 ] ) { Active = ( param[ 0 ] == 0 )?false:true; } public onDeath( ) { new vid = read_data( 2 ); if( Active ) { set_task( get_pcvar_float(gPcvar[ 1 ]), "respawn", SPAWN_TASKID + vid); } return PLUGIN_CONTINUE; } public fwSpawn( id ) { if( Active && is_user_alive( id ) ) { if( gbPlay[ id ] ) { play( id, gPluginSounds[ psMuzyka ] ); gbPlay[ id ] = false; } if(task_exists(TASK_EQUIP +id ) ) { remove_task( TASK_EQUIP + id ); } set_task(0.2, "taskEquip", TASK_EQUIP + id); } } public eventCurWeapon( id ) { if( Active ) { if( task_exists( TASK_EQUIP + id ) ) { remove_task( TASK_EQUIP + id ); } set_task(0.5, "taskEquip", TASK_EQUIP + id); } } public taskEquip( id ) { id -= TASK_EQUIP; if( Active && is_user_alive( id ) ) { StripWeapons(id, Primary); StripWeapons(id, Secondary); StripWeapons(id, Grenades); StripWeapons(id, C4); } } public respawn( task_id ) { ExecuteHamB( Ham_CS_RoundRespawn, task_id - SPAWN_TASKID ); } public clearRespawns(){ for( new i = 1; i <= MAX; i++) { if( task_exists( SPAWN_TASKID + i ) ) { remove_task(SPAWN_TASKID+i); } if( task_exists( TASK_EQUIP + i ) ) { remove_task( TASK_EQUIP + i ); } } } /* Blokada */ public blockBuy( ) { register_clcmd( "drop", "block" ) register_clcmd( "cl_setautobuy", "block" ) register_clcmd( "cl_autobuy", "block" ) register_clcmd( "cl_setrebuy", "block" ) register_clcmd( "cl_rebuy", "block" ) register_clcmd( "buy", "block" ) register_clcmd( "p228", "block" ); register_clcmd( "228compact", "block" ); register_clcmd( "shield", "block" ); register_clcmd( "scout", "block" ); register_clcmd( "hegren", "block" ); register_clcmd( "xm1014", "block" ); register_clcmd( "autoshotgun", "block" ); register_clcmd( "mac10", "block" ); register_clcmd( "aug", "block" ); register_clcmd( "bullpup", "block" ); register_clcmd( "sgren", "block" ); register_clcmd( "elites", "block" ); register_clcmd( "fn57", "block" ); register_clcmd( "fiveseven", "block" ); register_clcmd( "ump45", "block" ); register_clcmd( "sg550", "block" ); register_clcmd( "krieg550", "block" ); register_clcmd( "galil", "block" ); register_clcmd( "defender", "block" ); register_clcmd( "famas", "block" ); register_clcmd( "clarion", "block" ); register_clcmd( "usp", "block" ); register_clcmd( "km45", "block" ); register_clcmd( "glock", "block" ); register_clcmd( "9x19mm", "block" ); register_clcmd( "awp", "block" ); register_clcmd( "magnum", "block" ); register_clcmd( "mp5", "block" ); register_clcmd( "smg", "block" ); register_clcmd( "m249", "block" ); register_clcmd( "m3", "block" ); register_clcmd( "12gauge", "block" ); register_clcmd( "m4a1", "block" ); register_clcmd( "tmp", "block" ); register_clcmd( "mp", "block" ); register_clcmd( "g3sg1", "block" ); register_clcmd( "d3au1", "block" ); register_clcmd( "flash", "block" ); register_clcmd( "deagle", "block" ); register_clcmd( "nighthawk", "block" ); register_clcmd( "sg552", "block" ); register_clcmd( "krieg552", "block" ); register_clcmd( "ak47", "block" ); register_clcmd( "cv47", "block" ); register_clcmd( "p90", "block" ); register_clcmd( "c90", "block" ); register_clcmd( "primammo", "block" ); register_clcmd( "secammo", "block" ); register_clcmd( "vest", "block" ); register_clcmd( "vesthelm", "block" ); register_clcmd( "nvgs", "block" ); } public block( id ) { if( Active ) { client_print( id, print_center, "Nie tym razem" ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } /* Odtwarzanie */ play( id, const sound[ ] ) { new end = strlen( sound ) - 4; if( containi(sound, ".mp3" ) == end && end > 0 ) client_cmd( id, "mp3 play %s", sound); else if( containi(sound,".wav") == end && end > 0) client_cmd(id, "spk %s", sound); else client_cmd(id, "speak %s",sound); } public client_connect(id) { daj_hajs[id] = false; } public Koniec() { new najlepszy_gracz = 0; get_players(najlepszy_gracz, num) new rank[1] for(new i = 0; i < num; i++) { new id = najlepszy_gracz[i] daj_hajs[id] = false if(frags[id] > rank[0]) { rank[0] = id } frags[i] = 0 } daj_hajs[rank[0]] = true; } /* Naliczanie */ public Death() { new iKiller = read_data(1) new iVictim = read_data(2) new a = get_user_team(iKiller) new b = get_user_team(iVictim) new c = is_user_connected(iKiller) new d = is_user_connected(iVictim) if(a != b && c && d) { frags[iKiller]++ } } /* Prezent */ public New_Round(id) { new gRound = 0; { gRound++; } get_user_name(najlepszy_gracz, name, 34); client_print(najlepszy_gracz, print_chat,"Najlepszym graczem rozgrzewki zostal %s i otrzymal 200$",name); if(is_user_connected(najlepszy_gracz) { if(is_user_alive(id) && daj_hajs[id]) { cs_set_user_money(najlepszy_gracz,cs_get_user_money(najlepszy_gracz)+200); daj_hajs = false; } } if( gRound >= 2) { daj_hajs[id]=false; }
Tak będzie dobrze?
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych