Skocz do zawartości
klqs

[ZAMKNIĘTY]Eventy

Rekomendowane odpowiedzi

Tak po krótce. Co to wgl jest? Określa to jaki public ma się wykonać po jakim evencie. Po naszemu: co ma sie wykonać po jakiejś sytuacji na serwerze :D. Będę dodawał opisy, przykłady użycia, żeby Wam bylo łatwiej zrozumieć. Odrazu mówie, że niektóre kody w tym poradniku są zaczerpnięte, lecz opisy pisane własnoręcznie. Cały spis eventów (po angielsku) -> Klik <-

Start mapy:

plugin_init()
{
	//kod
}

//kod wykona się zaraz po załadowaniu mapy. W tym najczęściej rejestruje się sam plugin, komendy, cvary etc. które musza się wczytać oczywiscie na samym początku. Występuje praktycznie w każdym pluginie

 

Koniec mapy:

plugin_end ( )
{
	//kod
}

//kod wykona się tuż przed zmianą mapy/wyłączeniem serwera. Już wykorzystywany w bardziej zaawansowanych pluginach. Można w nim np. zamknąć uchwyt do pliku nvault. 

 

Wejscie na serwer:

public client_putinserver(id){
	//kod

}

Wykona się gdy bedziesz miał juz do wyboru team. (Po załadowaniu wszystkeigo). To tutaj najlepiej pobierac uprawnienia gracza.

 

Połączenia się z serwerem:

public client_connect(id)
{
	//kod
}

Gdy gracz nacisnie connect. Można tu pobierać takie informacje jak nick gracza. W przeciwienstwie do poprzednikanie radze pobierac uprawnień gracza (admin, vip itp.)

 

Rozłączenie się z serwerem:

public client_disconnect(id)
{
	//kod
}

Gdy gracz wpisze disconnect w konsoli lub wcisnie wyjdz z serwera/wyjdz z gry. Można tu resetować np. zapisane dane na danym id. Np gdy gracz wejdzie na serwer sprawdzamy czy jest on adminem i dajemy do zmiennej o nazwie powiedzmy admini[id] = true. Tutaj możemy to zmienić na false dla porządku w kodzie. Gdyby nie było to sprawdzane przy wejsciu tylko np. przy jakiejś sytuacji albo po kilku/nastu sekundach to gracz który wejdzie na to id będzie miał przez ten czas opcje które ten plugin udostępnai dla admina. Mam nadzieje, że wytlumaczylem w maire zrozumiale.

 

Nowa runda:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("HLTV", "Nowa_Runda", "a", "1=0", "2=0")
}
 
public Nowa_Runda()
{
	//kod
}

Wykona się odrazu po rozpoczęciu rundy. Tuż przed spawnem albo na samym spawnie. Można wykorzystać np do liczenia upłyniętych rund.

 

Początek rundy:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_logevent("Poczatek_Rundy", 2, "1=Round_Start")  
}
 
public Poczatek_Rundy()
{
	//kod
}

Wykona się po zakończeniu freeza. Z doświadczenia wiem, że dawanie rzeczy takich jak hp, bronie etc. jest najlepiej pisać w "Nowa runda" po ustawieniu taska na jakiś krótki czas. (czyli opóźnienia), chociaż w tym też da radę.

 

Koniec rundy:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_logevent("Koniec_Rundy", 2, "1=Round_End")
}
 
public Koniec_Rundy()
{
	//kod
}

Wykonuje się wtedy kiedy wyświetla się, która drużyna wygrała (lub remis). Można tu np. wyświetlać najlepszego gracza rundy (oczywiscie po wcześniejszym kodzie który zliczał jego fragi i hsy).

 

Zadanie obrażeń:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("Damage", "Damage", "b", "2!=0")
}
 
public Damage(id) 
{
	new vid = read_data(0) // vid == id
	
	new damage = read_data(2) // obrazenia
	
	new Origins[3]			// Wspolrzedne gracza, granatu, obiektu wywolujacego obrazenia
	Origins[0] = read_data(4) //wspolrzedna X
	Origins[1] = read_data(5) //wspolrzedna Y
	Origins[2] = read_data(6) //wspolrzedna Z
	
	new kid = get_user_attacker(id)	// Gracz atakujacy
 
	//kod
	
}

Wykonuje się gdy ktoś dostanie obrażenia. kid - osoba zadajaca obrażenia, vid/id - osoba otrzymująca. Można tu dowolnie edytować obrazenia (zwiekszac, zmniejszac, szansa % na 100% kill etc.).

 

Śmierć:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("DeathMsg", "DeathMsg", "a")
}
 
public DeathMsg()
{
	new kid = read_data(1)	// zabojca
	new vid = read_data(2)	// ofiara
	new hs = read_data(3)	// HeadShot (1 == true)
	
	new weapon[64]		
	read_data(4,weapon,63)	//krotka nazwa broni (bez weapon_ / CSW_ )
 
	//kod
}

Wykonuje się gdy w prawym górnym rogu wyświetli nam się informacja o zabójstwie. Można tu np. dodać bonusy graczom za HS, kase za killa, odbierac za deda etc.

Gdy gracz się sam zabije lub dostanie slaya to kid == vid

Gdy gracz spadnie z wysokosci/spłonie kid == 0

Nazwy broni do "weapons": -> Klik <-

 

Zmiana broni/otrzymanie broni:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("CurWeapon","CurWeapon","be", "1=1")
}
 
public CurWeapon(id)
{
	new wid = read_data(2)	// Id broni
	new ammo = read_data(3)	// liczba naboi w magazynku
	//kod
}

Wykonuje się gdy otrzymamy lub zmienimy broń, strzelimy lub przeładujemy. Dotyczy tylko trzymanej broni. Możemy tu np. blokować wyjmowanie, usuwac jesli wyjmie, dodawać ammo gdy dojdzie do 0 itp. Ammo dla noża i granatów == -1

ID broni do "wid": -> Klik <-

 

Podniesienie broni:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("WeapPickup", "WeapPickup", "b")
}
 
public WeapPickup(id)
{
	new wid = read_data(1) // id broni
 
	//kod
}

Wykona sie gdy podniesiemy broń, na starcie, przy zakupie. Wykona się za każdym razem, nie ważne czy trzymamy ją w ręce (tym się rózni od zmiany broni - może się wykonać 2 razy na spawnie gdy otrzymamy nóz i pistolet albo więcej gdy razem z tym dostaniemy z vipa np. broń + ammo + granaty :D) Nie liczy podniesienia/kupienia: defa, tarczy, noktowizora i kamizelki. Można tu dodać np ammo lub wywalić/usunąć:D

ID broni do "wid": -> Klik <-

 

Zmiana w pieniądzach:

#include <amxmodx>
#include <amxmisc>
 
public plugin_init() {
	register_event("Money", "Money", "be")
}
 
public Money(id)
{
	new Money = read_data(1) // aktualna kasa
 
	//kod
}

Gdy coś kupimy, dostaniemy za fraga itp. Można tu sie dowolnie bawić pieniędzmi :D:D

 

Eventów jest duużo więcej. Podałem te które najczęściej się wykorzystuje. Nie wszystkie są takie proste, inne są potrzebne do bardziej skomplikowanych sytuacji, a niektórych nie rozumiem. Nie chciałem podawać niezrozumiałych mi a już tym bardziej próbować wytłumaczyć ich działania. Mam nadzieje, że komuś się przyda. W razie jakiś problemów / niejasności można pisać PW, z chęcią odpowiem jeśli tylko będę znał odpowiedź. Dla jasności. Gdy chcemy wychwycić np nową runde i koniec rundy to dopisujemy do tego samego plugin_init a nie tworzymy dwóch. Każda funkcja może być tylko jedna. Po prostu dopisujemy pod sobą.

Odnośnik do komentarza
Udostępnij na innych stronach


watekzamkniety.png
 

Wątek został zamknięty przez moderatora forum.
Jeśli się z tym nie zgadzasz skontaktuj się z moderatorem lub administratorem, w celu ponownego otworzenia tematu.

Pozdrawiamy,
Zespół Multi-Head.pl

Odnośnik do komentarza
Udostępnij na innych stronach


Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.


  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...