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

[ROZWIĄZANE] Runda Trwa i Trwa i Trwa...
#1
Napisano 04.07.2012 08:36
#2
Napisano 04.07.2012 08:42
Tu masz podobny plugin na DeathMatcha
Nie wiem czy ogarniesz bo jest orpheu
Tylko usuń, nieskończony koniec rundy [nawet po czasie]
Użytkownik HubertTM edytował ten post 04.07.2012 08:52
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
#3
Napisano 04.07.2012 08:55
#include < amxmodx >
#include < orpheu >
#include < orpheu_memory >
#include < orpheu_stocks >
new bool:isLinuxServer;
public plugin_init( ) {
isLinuxServer = bool:is_linux_server( );
OrpheuRoundE( );
}
public stalo_sie_cos( ) {
OrpheuCall( OrpheuGetFunction( "CheckWinConditions" , "CHalfLifeMultiplay" ), "CheckConditions" );
if ( !( isLinuxServer ) )
UnlockTimeRound( );
}
public OrpheuRoundE( ) {
OrpheuRegisterHook( OrpheuGetFunction( "CheckMapConditions" , "CHalfLifeMultiplay" ), "CheckConditions" );
OrpheuRegisterHook( OrpheuGetFunction( "CheckWinConditions" , "CHalfLifeMultiplay" ), "CheckConditions" );
if ( isLinuxServer ) {
OrpheuRegisterHook( OrpheuGetFunction( "HasRoundTimeExpired" , "CHalfLifeMultiplay" ), "CheckConditions" );
}
else {
BytesToReplace( "roundTimeCheck", { 0x90, 0x90, 0x90 } );
}
}
public OrpheuHookReturn:CheckConditions( ) {
/*if( sth ) return as true*/
OrpheuSetReturn( false );
return OrpheuSupercede;
}
public UnlockTimeRound( ) {
BytesToReplace( "roundTimeCheck", { 0x1, 0x1, 0x1 } );
}
//joraquimandrade's stock
stock BytesToReplace ( identifier[], const bytes[], const bytesLength = sizeof bytes ) {
new address;
OrpheuMemoryGet( identifier, address );
for ( new i; i < bytesLength; i++)
{
OrpheuMemorySetAtAddress( address, "roundTimeCheck|dummy", 1, bytes[ i ], address );
address++;
}
}
Sygnatury pobierz z tematu co dał @up. Potem w swoim kodzie wywołujesz stalo_sie_cos( ); a w CheckConditions musisz podać warunek od czego ma być zależny return. Nie jestem pewien co do poprawności tej metody w przypadku win server.
#4
Napisano 04.07.2012 09:11
bo nie każdy serwer go posiada...
Użytkownik CheQ edytował ten post 04.07.2012 09:12
#5
Napisano 04.07.2012 09:58
Możesz zrobić to bez pomocy Orpheu ale nie jest to efektywne wyjście. Możesz napisać sub moduł do Rage, który podmieni w pamięci te wartości albo uchwyci zdarzenia. Możesz też użyć modułu MemHack zamiast Rage, chociaż wtedy nie osiągniesz pełnego efektu. Innymi słowy, są różne metody ale póki co tylko ta z Orpheu jest wystarczająco efektywna. Reszta może powodować błędy itp. Ewentualnie jak wspomniałem moduł Rage, ale jest dość skomplikowany i wymaga znajomości C++.
Tutaj masz post, w którym jest wyszczególnione do czego najbardziej przydaje się Orpheu.
AlliedModders - View Single Post - Orpheu VS Hamsandwhich
Mówienie, że ten moduł jest zły/ bądź chcę spróbować czegoś innego mnie denerwuje, bo to po prostu świadczy o braku wiedzy. Jeśli już ktoś nie potrafi dodać modułu na serwer i wrzucić raptem pięciu plików to współczuję i polecam iść zająć się czymś prostszym jak na przykład obieranie ziemniaków

#6
Gość_21977_*
Napisano 04.07.2012 12:15
Do tej pory nikt na AM nie znalazł rozwiązania, a ConnorMcLeod nawet proponuje przerzucić się na Rage, który z kolei działa wszędzie.
#7
Napisano 04.07.2012 13:12
Mówienie, że ten moduł jest zły/ bądź chcę spróbować czegośinnego mnie denerwuje
Nie powiedziałem że Orpheu jest zły. Dodając plugin na forum większość może się "skrzywić" (to chyba odpowiednie słowo) na samą myśl o tym że muszą coś robić więcej niż skopiować do odpowiednich folderów (nie obrażając użytkowników forum)
Skoro ta metoda jest najlepsza skorzystam z niej. Dziękuje za kod.
#8
Napisano 04.07.2012 20:05
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz,

Z pozdrowieniami,
Zespół AMXX.PL
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych