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

SDKHooks 2.0.0


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
6 odpowiedzi w tym temacie

#1 Nomaf

    Wszechpomocny

  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 20.08.2011 12:22

*
Popularny

SDKHooks


Dołączona grafika

SDKHooks to biblioteka z bardzo dobrymi funkcjami, umożliwiającymi o wiele lepsze pisanie pluginów. Praktycznie każda większa modyfikacja wymaga SDKHooks to działania, więc warto zawczasu wyposażyć się w te potężne narzędzie skryptera. Jest ono dostępne dla Windows'a i Linux'a oraz Mac'a, ale jego nie będę wrzucał, bo i tak nikt nie zakłada na tym serwerów :)

Dołączona grafika

Zawartość archiwum wrzucamy do /nazwa_gry/.

Dołączona grafika

Aby skorzystać z biblioteki, należy na początku pluginu dać:
#include <sdkhooks>

Podstawowy hook (możemy go wpisać praktycznie, gdzie chcemy):
SDKHook(entity, SDKHookType:type, SDKHookCB:callback)


1 parametr to byt (id, index, client, ent, entity czy co tam wymyślimy)
2 parametr to typ hook'a. Dostępne są:
Spoiler

3 parametr to natomiast nazwa funkcji, która będzie się wykonywała przy hook'u. Możliwości:
Spoiler


Przykładowy kod (zwiększa ilość hp o 1 po zadaniu obrażeń):
public OnClientPutInServer(client)
{
SDKHook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost);
}

public OnTakeDamagePost(victim, attacker, inflictor, Float:damage, damagetype)
{
SetUserHealth(attacker, GetUserHealth(attacker) + 1)

return Plugin_Changed
}


Dołączona grafika

Windows:
Załączony plik  sdkhooks-2.0.0-hg127-windows.zip   732,85 KB  357 Ilość pobrań


Linux:
Załączony plik  sdkhooks-2.0.0-hg127-linux.tar.gz   523,11 KB  339 Ilość pobrań


Poradnik stworzony przez: Nomaf dla AMXX.pl - Support AMX Mod X
Kopiowanie bez mojej zgody jest zakazane!


Użytkownik Nomaf edytował ten post 20.08.2011 12:37

  • +
  • -
  • 7

#2 Fili:P

    Godlike

  • Power User

Reputacja: 754
Guru

  • Postów:1 679
  • Imię:Darek
  • Lokalizacja:Warszawa
Offline

Napisano 22.08.2011 16:27

To zapewne takie GoldSrc-owe, fake lub orpheu ?
  • +
  • -
  • 0

#3 Nomaf

    Wszechpomocny

  • Autor tematu
  • Użytkownik

Reputacja: 157
Profesjonalista

  • Postów:344
  • GG:
  • Imię:Mateusz
  • Lokalizacja:Polska
Offline

Napisano 22.08.2011 19:46

Bardziej bym powiedział hamsandwich + fakemeta.
  • +
  • -
  • 0

#4 G[o]Q

    I'm G[o]Q

  • Przyjaciel

Reputacja: 1 344
Godlike

  • Postów:3 563
  • Steam:steam
  • Imię:Krzysiek
  • Lokalizacja:C: / program Files / Valve / Cstrike / G[o]Q.dem
Offline

Napisano 22.08.2011 23:27

mi to przypomina bardziej register_forwad/_event/logevent :D
  • +
  • -
  • 0
Manual ponad wszystko, konsola ponad manual :D :&

Chcesz wysłać do mnie PW ? użyj nazwy GoQ zamiast G[o]Q
Chcesz Kupić moduł płatności via Pukawka,Tserwery, Gamesol, Zabijaka do mojego sklepu? napisz PW cena to tylko 10 zł/sztuka

GG:6022845 (nie pomagam za free osobom ponizej rangi MoD) :D

#5 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 19.09.2015 10:05

Taka uwaga jak już cos rejestrujemy (rejestruje w większości w OnClientPutInServer)

 

to przy rozłączeniu gracza musi zrobić unhooka, bo inaczej później mogą być problemy.

Więc przykład powinien wyglądać tak:

public OnClientPutInServer(client)
{
SDKHook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost);
}

public OnTakeDamagePost(victim, attacker, inflictor, Float:damage, damagetype)
{
    SetUserHealth(attacker, GetUserHealth(attacker) + 1)
    
    return Plugin_Changed
}

public OnClientDisconnect(client)
{   

       SDKUnhook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost);
 
}

Użytkownik Droso edytował ten post 21.09.2015 16:43

  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!


#6 Linux'

    Pan Pomocny

  • Power User

Reputacja: 549
Wszechwiedzący

  • Postów:1 501
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:AmxMod i SourceMod
Offline

Napisano 19.09.2015 10:29


Taka uwaga jak już cos rejestrujemy (rejestruje w większości w OnClientPutInServer)

to przy rozłączeniu gracza musi zrobić unhooka, bo inaczej później mogą być problemy.
Więc przykład powinien wyglądać tak:

public OnClientPutInServer(client){SDKHook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost);}public OnTakeDamagePost(victim, attacker, inflictor, Float:damage, damagetype){	SetUserHealth(attacker, GetUserHealth(attacker) + 1)		return Plugin_Changed}public OnClientDisconnect(client){      if(IsClientInGame(client))   {	   SDKUnhook(client, SDKHook_OnTakeDamagePost, OnTakeDamagePost);   }}


Droso jak najbardziej ale sprawdzanie czy gracz jest podlaczony jest zbedna. Funkcja disconnect wykonuje sie przed rozlaczeniem gracza z serwera wiec gracz zawsze bedzie podlaczony. Poza tym obawiam sie, ze nawet gdyby tak nie bylo to to nie zadziala. Sama funkcja clientingame nie dokonca dobrze sprawdza czy gracz jest na serwerze wiec lepiej uzyc stocka.
  • +
  • -
  • 0

b35020692_qesnxqa.png


#7 Droso

    Dawniej HubertTM

  • Support Team

Reputacja: 1 291
Godlike

  • Postów:2 371
  • Steam:steam
  • Imię:Hubert
  • Lokalizacja:Wrocław
Offline

Napisano 19.09.2015 12:07


Droso jak najbardziej ale sprawdzanie czy gracz jest podlaczony jest zbedna. Funkcja disconnect wykonuje sie przed rozlaczeniem gracza z serwera wiec gracz zawsze bedzie podlaczony.

Wiem o tym, że jest to przed rozłączeniem gracza, sam dodaje IsClientInGame, bo tak kiedyś zobaczyłem w przykładzie, że tak powinno się robić, więc teraz nie wiem czy to jest słuszne hm.

 


Poza tym obawiam sie, ze nawet gdyby tak nie bylo to to nie zadziala. Sama funkcja clientingame nie dokonca dobrze sprawdza czy gracz jest na serwerze wiec lepiej uzyc stocka.

Nigdy nie miałem problemów, podasz więcej info na pw? A co do stocka chodzi o

stock bool:IsValidClient(client)
{
	return bool:(client >= 1 && client <= MaxClients && IsClientConnected(client) && IsClientInGame(client));
}

?


  • +
  • -
  • 0

Piszę pluginy pod: AMX MOD X oraz SOURCE MOD!

Na zlecenie i bez zlecenia zresztą też!





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

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