Zmiana drużyn i wyników
M@lpa
15.05.2012
Witam.
Mam plugin który po X rundach powinien zamieniać graczy drużynami i zmieniać wyniki. Działa właściwie dobrze, ale tylko w przypadku, jeśli gra się z botami. Gdy sprawdzałem go na serwerze, działał tylko gdy było 1vs1. Gdy gracze dochodzili, wyświetlała się wiadomość o zmianie drużyn, zmieniał się wynik, ale gracze dalej pozostawali w swoich teamach. W logach nic nie wyrzuca.
Użytkownik M@lpa edytował ten post 15.05.2012 23:38
Mam plugin który po X rundach powinien zamieniać graczy drużynami i zmieniać wyniki. Działa właściwie dobrze, ale tylko w przypadku, jeśli gra się z botami. Gdy sprawdzałem go na serwerze, działał tylko gdy było 1vs1. Gdy gracze dochodzili, wyświetlała się wiadomość o zmianie drużyn, zmieniał się wynik, ale gracze dalej pozostawali w swoich teamach. W logach nic nie wyrzuca.
/* Plugin generated by AMXX-Studio */ #include <amxmodx> #include <amxmisc> #include <cstrike> #include <orpheu> #include <orpheu_memory> #include <ColorChat> #define set_mp_pdata(%1,%2) ( OrpheuMemorySetAtAddress( g_pGameRules, %1, 1, %2 ) ) #define get_mp_pdata(%1) ( OrpheuMemoryGetAtAddress( g_pGameRules, %1 ) ) new g_pGameRules; new pCvarResult; new lic = 0; new ttscore = 0; new ctscore = 0; public plugin_precache() { OrpheuRegisterHook( OrpheuGetFunction( "InstallGameRules" ), "OnInstallGameRules", OrpheuHookPost ); } public OnInstallGameRules() { g_pGameRules = OrpheuGetReturn(); } public plugin_init() { register_plugin("mr12", "1.0", "author") register_event("TeamScore", "teamScore", "a") pCvarResult = register_cvar("change_team_result","12"); } public teamScore(){ new sTeam[2]; read_data(1, sTeam, 1); if( sTeam[0] == 'T' ) ttscore = read_data(2); else ctscore = read_data(2); if(ttscore+ctscore >= get_pcvar_num(pCvarResult)) changeTeams(); } public changeTeams(){ lic++; if(lic > 1) return PLUGIN_HANDLED; set_mp_pdata( "m_iNumCTWins", ttscore ); set_mp_pdata( "m_iNumTerroristWins", ctscore ); ColorChat(0, RED, "--------------!!!ZMIANA DRUZYN!!!--------------"); for(new i = 1 ; i < 33; i++ ){ if(!is_user_connected(i) || cs_get_user_team(i) == CS_TEAM_SPECTATOR || cs_get_user_team(i) == CS_TEAM_UNASSIGNED ) return PLUGIN_HANDLED; cs_set_user_team (i, cs_get_user_team(i) == CS_TEAM_CT?CS_TEAM_T:CS_TEAM_CT, CS_DONTCHANGE) } UpdateTeamScores( .notifyAllPlugins = true ); return PLUGIN_HANDLED; } } UpdateTeamScores ( const bool:notifyAllPlugins = false ) { static OrpheuFunction:handleFuncUpdateTeamScores; if ( !handleFuncUpdateTeamScores ) { handleFuncUpdateTeamScores = OrpheuGetFunction( "UpdateTeamScores", "CHalfLifeMultiplay" ) } ( notifyAllPlugins ) ? OrpheuCallSuper( handleFuncUpdateTeamScores, g_pGameRules ) : OrpheuCall( handleFuncUpdateTeamScores, g_pGameRules ); }
Użytkownik M@lpa edytował ten post 15.05.2012 23:38
mierzwi 19.05.2012
spróbuj zmieniać teamy tak, mi to działa.
Użytkownik emu edytował ten post 19.05.2012 00:49
new iTeam = get_user_team( id ); switch( iTeam ) { case 1: { cs_set_user_team( id, CS_TEAM_CT, CS_CT_GIGN ); emake_TeamInfo( id, "CT" ); } case 2: { cs_set_user_team( id, CS_TEAM_T, CS_T_LEET ); emake_TeamInfo( id, "TERRORIST" ); } }
emake_TeamInfo( id, sTeam[] ) { if( !id ) { return 0; } emessage_begin( MSG_ALL, get_user_msgid("TeamInfo"), { 0, 0, 0 }, 0 ); ewrite_byte( id ); ewrite_string( sTeam ); emessage_end(); return 1; }
Użytkownik emu edytował ten post 19.05.2012 00:49