Skocz do zawartości

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.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

[ROZWIĄZANE] Orpheu. Zamiana wyników drużyn


  • Zamknięty Temat jest zamknięty
4 odpowiedzi w tym temacie

#1 M@lpa

    Nowy

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:6
  • Lokalizacja:Kraków
Offline

Napisano 13.05.2012 21:28

Witam.
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

  • +
  • -
  • 0

#2 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 13.05.2012 22:01


#include <amxmodx>
#include <amxmisc>
#include <orpheu>
#include <orpheu_memory>

new g_pGameRules;

#define set_mp_pdata(%1,%2) ( OrpheuMemorySetAtAddress( g_pGameRules, %1, 1, %2 ) )
#define get_mp_pdata(%1) ( OrpheuMemoryGetAtAddress( g_pGameRules, %1 ) )

public plugin_precache()
{
OrpheuRegisterHook( OrpheuGetFunction( "InstallGameRules" ), "OnInstallGameRules", OrpheuHookPost );
}

public OnInstallGameRules()
{
g_pGameRules = OrpheuGetReturn();
}

public plugin_init ()
{
register_plugin( "Set Team Score", "1.0.0", "Arkshine" );
register_concmd( "amx_tscore", "ClientCommand_SetTeamScore", ADMIN_RCON, "- <Team> <Score>" );
}

public ClientCommand_SetTeamScore ( const player, const level, const cid )
{
if ( !cmd_access( player, level, cid, 3 ) )
{
return PLUGIN_HANDLED;
}

new team [ 2 ];
new score[ 6 ];

read_argv( 1, team , charsmax( team ) );
read_argv( 2, score, charsmax( score ) );

new signedShort = 32768;
new scoreToGive = clamp( str_to_num( score ), -signedShort, signedShort );

switch ( team[ 0 ] )
{
case 'C', 'c' :
{
set_mp_pdata( "m_iNumCTWins", scoreToGive );
}
case 'T', 't' :
{
set_mp_pdata( "m_iNumTerroristWins", scoreToGive );
}
case '@' :
{
set_mp_pdata( "m_iNumCTWins", scoreToGive );
set_mp_pdata( "m_iNumTerroristWins", scoreToGive );
}
default :
{
return PLUGIN_HANDLED;
}
}

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 );
}


Sygnatury w załączniku

amx_tscore <T|CT|@ALL> <score> ( jeśli chcesz możesz wpisać tylko pierwsze literki czyli: c, t, lub @ )

Załączone pliki


  • +
  • -
  • 2

#3 M@lpa

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:6
  • Lokalizacja:Kraków
Offline

Napisano 13.05.2012 22:33

Słuchaj, a dałbyś radę to zrobić tak, żeby po wpisaniu amx_tscore wyniki podmieniały się automatycznie(bez żadnych opcji)? Bo już nie myślę, a muszę mieć to na dzisiaj ;/.
  • +
  • -
  • 0

#4 M@lpa

    Nowy

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:6
  • Lokalizacja:Kraków
Offline

Napisano 14.05.2012 12:59

@UP nieaktualne. MisieQ dzięki.
  • +
  • -
  • 0

#5 Misiaczek ;c

    /dev/null

  • Moderator

Reputacja: 1 678
Godlike

  • Postów:2 496
  • GG:
  • Steam:steam
  • Imię:Michał
  • Lokalizacja:Halemba
Offline

Napisano 14.05.2012 13:59

Wiadomość wygenerowana automatycznie


Ten temat został zamknięty przez moderatora.

Powód: Pomoc udzielona

Jeśli się z tym nie zgadzasz, Dołączona grafika raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.


Z pozdrowieniami,
Zespół AMXX.PL
  • +
  • -
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych