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.
|
Guest Message by DevFuse
[ROZWIĄZANE] Runda Trwa i Trwa i Trwa...
Started By
dasiek
, 04.07.2012 08:36
7 replies to this topic
#1
Posted 04.07.2012 08:36
Witam. Chciałbym przykładowy kod na to żeby runda trwała i trwała dopóki COŚ się nie stanie np. Ew w moim kodzie na koniec tego COSia wszyscy z przegranej drużyny giną więc najbardziej zalezy mi na tym żeby runda Trwała nawet po tym jak się jej czas skończy.
#2
Posted 04.07.2012 08:42
http://amxx.pl/topic...infinite-round/
Tu masz podobny plugin na DeathMatcha
Nie wiem czy ogarniesz bo jest orpheu
Tylko usuń, nieskończony koniec rundy [nawet po czasie]
Tu masz podobny plugin na DeathMatcha
Nie wiem czy ogarniesz bo jest orpheu
Tylko usuń, nieskończony koniec rundy [nawet po czasie]
Edited by HubertTM, 04.07.2012 08:52.
Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!
Na zlecenie i bez zlecenia zresztą też!
#3
Posted 04.07.2012 08:55
Proponuję prostsze rozwiązanie:
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.
#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
Posted 04.07.2012 09:11
a czy jest możliwość wykonania nieskończonej rundy bez orpheu?
bo nie każdy serwer go posiada...
bo nie każdy serwer go posiada...
Edited by CheQ, 04.07.2012 09:12.
#5
Posted 04.07.2012 09:58
"What's wrong using Orpheu ? Tell me, and please don't say "because I don't want to add another module", it's really a bullshit." ~Arkshine
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
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_*
Posted 04.07.2012 12:15
Orpheu nie działa na specyficznych środowiskach oprogramowania, w związku z tym nie każdy ma możliwość instalacji tego modułu.
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.
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
Posted 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
Posted 04.07.2012 20:05
Wiadomość wygenerowana automatycznie
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
Ten temat został zamknięty przez moderatora.
Powód: Pomoc udzielona
Jeśli się z tym nie zgadzasz, raportuj ten post, a moderator lub administrator rozpatrzy go ponownie.
Z pozdrowieniami,
Zespół AMXX.PL
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users