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
 

Ortega - zdjęcie

Ortega

Rejestracja: 25.03.2009
Aktualnie: Nieaktywny
Poza forum Ostatnio: 05.12.2015 12:32
*****

#665531 Metin2 Mod v2.00 Build 9 RC 1

Napisane przez Ortega w 29.09.2014 08:54

Cześć, dziś mam dla was perełkę. Taki mały prezencik znalazłem na dysku, trochę zakurzony. Nowa wersja 2.05 z (chyba) odbugowanymi niektórymi rzeczami.

 

Co nowego? Dodałem po jednej specjalnej umiejętności dla każdej postaci. Reszty nie pamiętam. No i nowa paczka dźwięków bez których nie ruszy, w załączniku.

Załączone pliki


  • +
  • -
  • 4


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

Napisane przez Ortega w 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 ;)
  • +
  • -
  • 1


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

Napisane przez Ortega w 04.07.2012 08:55

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.
  • +
  • -
  • 1


#405386 Pobranie ID gracza, który jest w naszym zasięgu wzroku

Napisane przez Ortega w 02.05.2012 20:50

is_visible && is_in_viewcone
  • +
  • -
  • 3


#400620 MySQL - z czym to się je.

Napisane przez Ortega w 23.04.2012 11:55

if (do_timeout && info->max_timeout)
{
		mysql_options(mysql, MYSQL_OPT_CONNECT_TIMEOUT, (const char *)&(info->max_timeout));
}
//MysqlDriver.cpp amxmodx_source1.8.1

Domyślnie parametr jest 0, jeśli ustawisz go na wartość 5 lub większą wtedy po upłynięciu czasu do otrzymania odpowiedzi zapytania(jeśli nie zwróci), moduł zwróci errorcode timeout z sql do funkcji.
  • +
  • -
  • 1


#304900 Skarga na administrację

Napisane przez Ortega w 09.10.2011 08:47

Ja sobie tutaj tak siedzę przed ekranem monitora i się uśmiecham, co wy do cholery ludzie tu robicie ? Czy ktoś mi wytłumaczy co ma na celu obrażanie się nawzajem, co ma na celu pokazanie kto ma więcej władzy lub kto zrobił najgorzej ? Po jaką cholerę całe to zamieszanie wprowadzające niepotrzebny zamęt na forum ? Jak mam być szczery to obaj panowie teraz spie***liliście sprawę równo. Dla ścisłości prawo działa w obie strony i prawo nie działa wstecz, naruszenie praw autorskich w przypadku obu własności i publikowanie niestety łamie prawo RP. Powiem od siebie, byłem nie raz administratorem lecz również byłem później osobą zaufaną na różnych forach, czasem mi odbijało ale do takich dziecinnych zabaw jak te tutaj nie śmiałem nawet podchodzić. Powiem szczerze, że nie wiem od czego dokładnie zaczęliście, bo tego nie śledzę na forum, nie mam czasu aczkolwiek jak widzę, że robi się taki burdel to jest już niefajne jak to się kończy. Najlepsze rozwiązanie jakie widzę: obie strony niech sobie przemyślą co im nie pasuje i o co im chodzi, następnie wyłóżcie kawę na ławę co zrobiliście źle i czego oczekujecie, wtedy patrząc, że obaj postąpiliście nieładnie polecam k**wa jak małym dzieciom przeprosić za złe zachowanie. Czy to jest takie trudne ? Możliwe nawet, że ta moja skromna wypowiedź nic nie zmieni, ponieważ nie wiem o co poszło, że tak zawzięcie się tutaj staracie pogryźć ale myślę, że trochę pomogłem. Jak się niepotrzebnie wtrącam można usunąć ten post :) A teraz idźcie i to rozwiążcie jak ludzie..

PS. Osobiście nie byłbym zadowolony z przerobienia mojej twarzy na Adolfa ale wy tu ewidentnie robicie sobie nawzajem krzywdę, więc nie płaczcie tyle.
  • +
  • -
  • 18


#293964 przezroczystość obrazka

Napisane przez Ortega w 08.09.2011 20:22

Nie zrobisz tego.
  • +
  • -
  • 1


#293936 Podmienianie modelu gracza - jaki sposób lepszy

Napisane przez Ortega w 08.09.2011 19:37

Ślepy czy niewidomy? Znajdź mi taką funkcję natywną w oficjalnej dokumentacji jak: cs_set_player_model. Odpowiem, nie ma, ponieważ to natyw z innego pluginu stworzonego przez MeRcyLeZZ ;)
  • +
  • -
  • 1


#293933 przezroczystość obrazka

Napisane przez Ortega w 08.09.2011 19:32

1. Nie
2. Tak*

*Silnik ma możliwość wyświetlania TGA, więc opcje wyświetlania też można podać zatem da się ustawić alpha ;)
  • +
  • -
  • 1


#288905 Dokumentacja - podstawowe funkcje

Napisane przez Ortega w 29.08.2011 09:16

Totalny bezsens. Już nie wspominam, że autor napisał ten temat jakby chciał, a nie mógł. W pawn pod CS nie ma możliwości wykonania wszystkiego za pomocą modułu core, dlatego są moduły pomocnicze tj. cstrike, fun, fakemeta, hamsadwich, orpheu. Każdy z tych modułów wnosi (lub powinien) swoje dodatkowe możliwości operowania silnikiem gry. Niezbędne jest poznanie najpierw sposobu działania silnika, a dopiero następnie używania funkcji natywnych z modułów. Niezbędna jest logika oraz znajomość matematyki przynajmniej na jakichś podstawach. Trzeba umieć czytać i filtrować wiadomości, a wszystko jest praktycznie opisane w dokumentacji jak nie naszej to na amxmodx.org. W razie czego zostaje właśnie forum aby ewentualnie coś wyjaśnić lub/i połączyć w całość, bądź zoptymalizować. Tyle w tym temacie mi się wydaje.
  • +
  • -
  • 2


#288142 Funkcja - 50% na odrodzenie dla CT.

Napisane przez Ortega w 28.08.2011 10:10

Spawn z fun jest nieco zabugowany dlatego użyj ham:
ExecuteHamB( Ham_CS_RoundRespawn, id );

  • +
  • -
  • 1


#287666 niebo z gwiazdami 24/7

Napisane przez Ortega w 27.08.2011 15:07

http://amxx.pl/topic...post__p__204865
  • +
  • -
  • 1


#286388 [Orpheu] Podstawowe zagadnienia.

Napisane przez Ortega w 22.08.2011 10:08

Precache wykonuje się wcześniej niż init, a nie zawsze wiadomo czy podmiana czegoś da pożądany efekt bo może być już za późno aby to ustawić.
  • +
  • -
  • 1


#283688 Nieskończona ilość pieniędzy - inaczej....

Napisane przez Ortega w 16.08.2011 15:06

amxmodx\configs\orpheu\functions\CBasePlayer\

Załączone pliki


  • +
  • -
  • 1


#280785 Nieskończona ilość pieniędzy - inaczej....

Napisane przez Ortega w 10.08.2011 14:35

A gdyby tak użyć po prostu pluginu od Arkshine:
#include < amxmodx >
#include < orpheu >
#include < orpheu_memory >
#include < orpheu_stocks >

const null = 0;
const minOrigStartMoney = 800;
const maxOrigStartMoney = 16000;
const maxSignedLong = 2147483583;

public plugin_precache( ) {
OrpheuRegisterHook( OrpheuGetFunction( "AddAccount", "CBasePlayer" ), "CBasePlayer_AddAccount", OrpheuHookPre );
OrpheuPatchMeM( );

}

public OrpheuHookReturn:CBasePlayer_AddAccount( const player, const amount, const bool:trackChange ) {
return OrpheuSupercede;
}

public OrpheuPatchMeM( ) {
PatchMem
(
"minStartMoney@CheckStartMoney()#SetCvar" , float( minOrigStartMoney ), float( null ),
"maxStartMoney@CheckStartMoney()#SetCvar" , float( maxOrigStartMoney ), float( maxSignedLong ),
"minStartMoney@ClientPutInServer()#SetCvar" , float( minOrigStartMoney ), float( null ),
"maxStartMoney@ClientPutInServer()#SetCvar" , float( maxOrigStartMoney ), float( maxSignedLong ),
"minStartMoney@HandleMenu_ChooseTeam()#SetCvar" , float( minOrigStartMoney ), float( null ),
"maxStartMoney@HandleMenu_ChooseTeam()#SetCvar" , float( maxOrigStartMoney ), float( maxSignedLong ),
"minStartMoney@CheckStartMoney()#Check" , minOrigStartMoney, null,
"maxStartMoney@CheckStartMoney()#Check" , maxOrigStartMoney, maxSignedLong,
"minStartMoney@ClientPutInServer()#Check" , minOrigStartMoney, null,
"maxStartMoney@ClientPutInServer()#Check" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@HandleMenu_ChooseTeam()#Check" , minOrigStartMoney, null,
"maxStartMoney@HandleMenu_ChooseTeam()#Check" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CBasePlayer::AddAccount()#Check" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CBasePlayer::AddAccount()#Set" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CBasePlayer::JoiningThink()#Check" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CBasePlayer::JoiningThink()#Set" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CBasePlayer::Reset()#Check" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CBasePlayer::Reset()#Set" , maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CHalfLifeTraining::PlayerThink()#Check", maxOrigStartMoney, maxSignedLong,
"maxStartMoney@CHalfLifeTraining::PlayerThink()#Set" , maxOrigStartMoney, maxSignedLong
);

}

PatchMem( any:... ) {
enum Patch {
memoryIdentifier[ 64 ],
any:valueOriginal,
any:valueToReplace
};

new data[ Patch ];
new rowCount = numargs( ) / 3;
new offsetsPatched;

for ( new i = 0, c, j, row; i < rowCount; i++ )
{
row = i * 3;
while ( ( c = getarg( row, j ) ) ) { data[ memoryIdentifier ][ j++ ] = c; }

data[ memoryIdentifier ][ j++ ] = '^0';
data[ valueOriginal ] = getarg( row + 1 );
data[ valueToReplace ] = getarg( row + 2 );

if ( OrpheuMemorySet( data[ memoryIdentifier ], 1, data[ valueToReplace ] ) )
{
server_print( "^t[OK] %s", data[ memoryIdentifier ] );
offsetsPatched++;
}
else
{
server_print( "^t[NOT FOUND] %s", data[ memoryIdentifier ] );
}
j = 0;
}

}


Sygnatura w załączniku -> /orpheu/memory/

Załączone pliki


  • +
  • -
  • 2