Potrzebuję zrobić plugin, który po 12 rundach przenosi graczy do przeciwnych drużyn oraz zmienia wyniki. Przenoszenie graczy działa bez zarzutu, ale przy wyniku zaczynają się schodki. Dowiedziałem się, że trzeba użyć oprheu, ale nie miałem z nim zbyt wiele do czynienia, więc znalazłem kod w sieci. Całość prezentuje się tak:
/* Plugin generated by AMXX-Studio */
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <orpheu>
#include <orpheu_memory>
#define SCORE_T 0
#define SCORE_CT 1
#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 g_TeamScore[2];
new pCvarResult, lic;
public plugin_init() {
register_plugin("New Plug-In", "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' )
		g_TeamScore[SCORE_T] = read_data(2);
	else
		g_TeamScore[SCORE_CT] = read_data(2);
if(g_TeamScore[SCORE_CT]+ g_TeamScore[SCORE_T] >= get_pcvar_num(pCvarResult)) changeTeams();
}
public changeTeams(){
lic++;
if(lic > 1)
  return PLUGIN_HANDLED;
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 ) continue;
  cs_set_user_team(i,cs_get_user_team(i) == CS_TEAM_CT ? CS_TEAM_T : CS_TEAM_CT,cs_get_user_team(i) == CS_TEAM_CT ? CS_T_LEET : CS_CT_GIGN);
}
set_mp_pdata( "m_iNumCTWins", g_TeamScore[SCORE_T] );
		  
	set_mp_pdata( "m_iNumTerroristWins", g_TeamScore[SCORE_CT] );
	  
	UpdateTeamScores( .notifyAllPlugins = true );
}
UpdateTeamScores ( const bool:notifyAllPlugins = false )
	{
		static OrpheuFunction:handleFuncUpdateTeamScores;
		if ( !handleFuncUpdateTeamScores )
		{
			handleFuncUpdateTeamScores = OrpheuGetFunction( "UpdateTeamScores", "CHalfLifeMultiplay" )
		}
		( notifyAllPlugins ) ?
			OrpheuCallSuper( handleFuncUpdateTeamScores, g_pGameRules ) :
			OrpheuCall( handleFuncUpdateTeamScores, g_pGameRules );
	}
public plugin_precache()
{
	OrpheuRegisterHook( OrpheuGetFunction( "InstallGameRules" ), "OnInstallGameRules", OrpheuHookPost );
}
public OnInstallGameRules()
{
	g_pGameRules = OrpheuGetReturn();
}
I... dalej nie działa zmienianie wyników a w konsoli wywala:
L 05/13/2012 - 22:23:03: [ORPHEU] Invalid memory structure "m_iNumCTWins" L 05/13/2012 - 22:23:03: [AMXX] Run time error 10 (plugin "mr12.amxx") (native "OrpheuMemorySetAtAddress") - debug not enable


 Forum
 
Forum
 Użytkownicy
 
Użytkownicy
 Kalendarz
 
Kalendarz
 Dodatki SourceMod
 
Dodatki SourceMod



 
	 Temat jest zamknięty
 Temat jest zamknięty![[ROZWIĄZANE] Orpheu. Zamiana wyników drużyn: post #1](https://amxx.pl/public/style_images/tctc91_luminous/icon_share.png) 
					

 
				
				

 raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
 raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.







