←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

[ROZWIĄZANE] Runda Trwa i Trwa i Trwa...

Zablokowany

  • +
  • -
dasiek - zdjęcie dasiek 04.07.2012

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

  • +
  • -
Droso - zdjęcie Droso 04.07.2012

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]
Użytkownik HubertTM edytował ten post 04.07.2012 08:52
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 04.07.2012

Proponuję prostsze rozwiązanie:
#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.
Odpowiedz

  • +
  • -
dasiek - zdjęcie dasiek 04.07.2012

a czy jest możliwość wykonania nieskończonej rundy bez orpheu?
bo nie każdy serwer go posiada...
Użytkownik CheQ edytował ten post 04.07.2012 09:12
Odpowiedz

  • +
  • -
Ortega - zdjęcie Ortega 04.07.2012

"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 ;)
Odpowiedz

Gość_21977_* 04.07.2012

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

  • +
  • -
dasiek - zdjęcie dasiek 04.07.2012

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

  • +
  • -
MarWit - zdjęcie MarWit 04.07.2012

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
Odpowiedz
Zablokowany