Jump to content
  • Chmurka
  • Boróweczka
  • Jabłuszko
  • Limonka
  • Czekoladka
  • Węgielek

Recommended Posts

Posted (edited)

Czesc , przychodze do was z pytaniem dopiero zaczynam z SourcePawnem nie zaczynam dopiero z programowaniem bo mam juz stycznosc z innymi jezykami takimi jak C++ , Pytanie: Jak dodawac eventy korzystam z kanalu @MAGNET'a ktory wszystko dokladnie tlumaczy , Gdy pisze kod zaczynam od 

#include <sourcemod>
  
  public void OnPluginStart() {
  		RegConsoleCmd("sm_win", DaneWin "Pokazuje komunikat na srodku ekranu Monitora)
  }
  itd ....
 Jak dodac te Eventy z dokumentacji SourceMod ? ? ?

Glownie chodzi mi o to jak dodawac te eventy i skladac to , przepraszam za ortografie , ale moja klawiatura odmawia mi posluszenstwa po dwoch latach.

Edited by mm-dd-yyyy
  • Kocham to! 1

Share this post


Link to post
Share on other sites

Musisz w OnPluginStart zrobić hook`a np.

HookEvent("round_end", Event_RoundEnd);


Później się musisz do tego odnieść.

 

public Action Event_RoundEnd(Event event, const char[] name, bool dontBroadcast)
{
	// Twój kod
}

W taki sposób dodałeś event. 
 

  • Lubię to! 1

Share this post


Link to post
Share on other sites

Aha czyli rozumujac ,.... (tak kazdy event zapisuje ale kazdy jest inny) (round_end) w zaleznosci od eventa tak ?

 

Znasz jakies poradniki dotyczace sourcemoda oprocz @MAGNET'a ?

By Vasto_Lorde,

Łącze posty ^^

Share this post


Link to post
Share on other sites

Tu masz spis eventów CS:GO -> https://wiki.alliedmods.net/Counter-Strike:_Global_Offensive_Events
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!
Masz tam napisane wszystko co możesz z tego eventu wziąć. np. W player_death możesz wyciągnąć ID osoby, która umarła oraz osoby, która zabiła.
 

int victim = GetClientUserId(event.GetInt("userid")); // Osoba, która została zabita
int attacker = GetClientUserId(event.GetInt("attacker")); // Osoba, która zabiła

 

  • Lubię to! 2

Share this post


Link to post
Share on other sites

Każdy event z linku który Brum Brum podał wyżej odpowiada za inne wydarzenie, które można przechwycic i wyciągnąc z niego informacje. Nie jestem pewien czy dokładnie o to Ci chodziło - musisz doprecyzować

 

Na marginesie - błędów w ortografii się nie doszukałem, ale interpunkcja zostawia dużo do życzenia. Nie potrafię rozgryźć o czym piszesz. I nie jest to kwestia złej klawiatury. Niby głupie kropki i przecinki, a jak dużo zmieniają... ?

Share this post


Link to post
Share on other sites

Hej! Pomimo tego, że temat został wytłumaczony, to myślę, że da się ten temat jeszcze co nieco rozszerzyć lub opowiedzieć o nim inaczej. Zaczynam:
 

Znasz już C++, to dobrze, jednakże tutaj jako że piszemy pluginy do gry, wygląda to lekko inaczej. W prostych programach w C i językach podobnych, wszystko dzieje się liniowo. To znaczy, podajemy na wejściu jakiś zestaw danych, przetwarzamy je, program się kończy. W SourcePawnie natomiast, bardzo upraszczając i zniekształcając trochę, mamy wiele wątków i zdarzeń które mogą się się wydarzyć w różnych odstępach czasowych spowodowane różnymi "włącznikami" płynącymi z gry. Mam tu na myśli właśnie Eventy/Zdarzenia o których mówisz w temacie. Nie można ustawić wszystkim graczom 200HP na samym początku działania pluginu bo... nie ma wtedy żadnych graczy. Trzeba to zrobić za każdym razem gdy się odrodzą. Już tłumaczę z kodem:
 

//Tutaj mamy bardzo ładną funkcję uaktywniającą się gdy plugin zaczyna działać na serwerze
public void OnPluginStart() {}

//Tutaj mamy bardzo ładną funkcję przyjmującą jako argument ID klienta
//Dzięki temu możemy używać zmiennej "client" w obrębie tej funkcji
//Funkcja jak widzimy działa dla danego klienta, ustawiając mu 200 HP
public void GivePlayerHP(int client) {
	SetEntityHealth(client, 200);
}

 

SetEntityHealth
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! oraz OnPluginStart
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami! są już zamieszczone w SourceModzie i kompilator/gra wiedzą do czego one służą. Natomiast nie wiedzą kiedy ma się wykonać GivePlayerHP. Musimy "złapać" moment w którym gracz się rodzi i wtedy włączyć dla niego tą funkcję. Tutaj wkraczamy z Rejestracją/Hookowaniem/"Zaczepianiem" Funkcji/Eventów/Zdarzeń. Taka czynność odbywa się prawie zawsze w OnPluginStart (czasami w OnMapStart). 

 

public void OnPluginStart() {
	//Tutaj właśnie Hookujemy Event, zdarzenie "player_spawned"
	//I przekazujemy pluginowi, że funkcja Event_PlayerSpawned
	//Będzie odpowiedzialna za obsługę tego zdarzenia
	HookEvent("player_spawned", Event_PlayerSpawned);
}

public void GivePlayerHP(int client) {
	SetEntityHealth(client, 200);
}

//Tutaj jest funkcja obsługująca Event spawnu gracza, posiadająca
//Określone zmienne które przyjmuje, na ten moment nie trzeba ich
//Znać, ale jest obowiązkowe by funkcja je przyjmowała
public Action Event_PlayerDeath(Event event, const char[] name, bool dontBroadcast) {
	//Tutaj możemy bez przeszkód wykonać naszą funkcję GivePlayerHP... Ale...
	//Nie mamy ID gracza! Możemy je pozyskać w ten sposób
	int client = GetClientOfUserId(event.GetInt("userid"));
	
	//Dzięki temu w zmiennej client mamy ID klienta dla którego wywołała się 
	//Ta funkcja. I możemy już użyć naszej funkcji:
	GivePlayerHP(client);
}

 

Tutaj dokumentacja HookEvent
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!. Pamiętaj, że funkcja Event_PlayerDeath będzie wywoływana dla każdego gracza. Powyższy kod pokazuje jak powiązać dane zdarzenie z akcją jaką chcemy wykonać. Prawie zawsze zachodzi związek przyczynowo skutkowy w SourceModzie: Rejestracja zdarzenia -> Oczekiwanie na aktywację zdarzenia (czy to przez komendę gracza czy rozgrywkę gry) -> wykonanie kodu związanego z danym zdarzeniem przy jego aktywacji.

 

Spis wszystkich Eventów, które możesz zarejestrować poprzez HookEvent tak jak podał @Brum Brum możesz znaleźć na tej stronie
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!
. Natomiast jeśli jeszcze chciałbyś poczytać o rejestracji Eventów, polecam ten o tu tę stronę
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!

 

Oczywiście HookEvent to nie jedyny sposób na rejestrację zdarzeń. Istnieją jeszcze SDKHooks
Hej! Skorzystałeś z linku lub pobrałeś załącznik? Uhonoruj naszą pracę poprzez rejestrację na forum i rośnij razem z nami!, które oferują jeszcze inne zdarzenia do zhookowania.

 

 

Jakbyś miał jeszcze jakieś pytania w tym temacie, pytaj ?

  • Lubię to! 1
  • Kocham to! 3
By MAGNET,

1000 lajkuf dla tego pana!

Share this post


Link to post
Share on other sites

Wiadomość wygenerowana automatycznie

 

Temat został zamknięty. Powodem jest całkowite rozwiązanie problemu zawartego w temacie.

 

Jeśli się z tym nie zgadzasz, zaraportuj ten post z prośbą o ponowne otwarcie i kontynuację dyskusji.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

Nasza historia

Na początku byliśmy małą grupą internetowych znajomych, którzy stwierdzili, że potrzebne jest solidne forum, na którym znajdą się ludzie z dużą wiedzą programistyczną ukierunkowaną na CS:GO. Pomysł powstał na początku 2018 roku, a parę miesięcy później, 19 kwietnia, powstała ta strona internetowa. Jako alternatywna odpowiedź na inne tego typu miejsca, poważnie podeszliśmy do tematu, najpierw tłumacząc angielską dokumentację SourceMod'a na język polski, a potem pisząc rozległe poradniki i wypełniając forum najpotrzebniejszymi rzeczami dla właścicieli serwerów i programistów. Cała nasza Ekipa jest dumna z pracy jaką w to włożyliśmy i cieszymy się że zbierają się wokół nas zarówno ludzie znający tematy sourcepawn'a i konfiguracji, jak i również nowe twarze w tym "biznesie", którym z chęcią niesiemy wiedzę oraz pomoc w rozwiązywaniu problemów.

Największe modyfikacje serwerowe

×
×
  • Create New...