←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

plugin_end i client_disconnect

Locked

  • +
  • -
diggs's Photo diggs 20.06.2011

Witam, pytanie dotyczy dwóch funkcji z tytułu tematu. Chodzi o to która funkcja wykona się pierwsza przy zmianie mapy plugin_end czy client_disconnect. Do tej pory w pluginie mam wykonanie paru czynności w client_disconnect i myślę czy nie przenieść ich do plugin_end i wykonać ich dla wszystkich graczy obecnych na serwerze, ponieważ tak było by szybciej i wydajniej ale teraz pytanie która funkcja będzie wywołana szybciej.

EDIT.
Ponieważ nie wszyscy mogli zrozumieć o co mi chodzi.

Jeśli w pluginie mam wyżej podane funkcje to przy zmianie mapy która z tych funkcji będzie wykonana jako pierwsza, to znaczy najpierw gracz wychodzi (przymusowo) z serwera przy zmianie mapy czy najpierw kończy się plugin (plugin_end - koniec mapy).

Dodam że przy zmianie mapy na 100% wykonuję się funkcja client_disconnect ponieważ gracz przy zmianie mapy robi jakby przymusowego reconnecta.
Edited by diggs, 20.06.2011 20:19.
Quote

Nenczoks's Photo Nenczoks 21.06.2011

Plugin_end - koniec mapy.
client_disconnect - gracz, który podłącza się.
Więc client_disconnect "wywoła" jak to napisałeś się pierwszy. I będzie ono ciągle, jak dany gracz wbijał na serwer.
Możesz też użyć eventu przy starcie każdej rundy.
Edited by Nenczoks, 21.06.2011 08:46.
Quote

  • +
  • -
diggs's Photo diggs 21.06.2011

client_disconnect - jest to rodzaj eventu a raczej forwardu, a ścieślej funkcja która go obsługuje. To zdarzenie jest wbudowane w amxx'a i w tym przypadku funkcja client_disconnect jest wywoływana przez zdarzenie - wyjścia gracza z serwera -

Ponawiam pytanie czy najpierw przy zmianie mapy gracz wychodzi z serwera (czyli wywołana będzie funkcja client_disconnect) czy może jest wywoływana funkcja która ma zakończyć w jakiś szczególny sposób działanie pluginu (plugin_end).

Lub drugie pytanie, jak sprawić by jakieś czynności w pluginie wykonały się dokładnie przed zmianą mapy, ale przed rozłączeniem graczy z serwerem (rozłączeniem które jest wymuszone.




Co do pierwszego pytania można na nie odpowiedzieć samemu za pomocą prostej sztuczki - w obu funkcjach zrobić wpis do logów dla każdej inny i po prostu zmienić mapę, ale (zresztą jak zawsze jest jakieś "ale") czy zawsze funkcje będą wywoływane w takiej samej kolejności.

PS. Zawracam tak trochę wam dupe, bo nie mam za bardzo czasu tego sam sprawdzić, a jak już osiądę do pisania kolejnej wersji pluginu w którym będzie mi to potrzebne chciałbym już znać odpowiedź. Dodatkową motywacją, aby zapytać forumowiczów jest bardzo duża chęć rozdawania plusików przeze mnie.
Edited by diggs, 21.06.2011 14:37.
Quote

  • +
  • -
sebul's Photo sebul 21.06.2011

Przed zmianą mapy to chyba dobrym rozwiązaniem będzie task ;]
Dokumentacja AMXX.pl: Core >> amxmodx > set_task
Quote

  • +
  • -
diggs's Photo diggs 21.06.2011

Niestety nie, mapa trwa minimum 4 rundy, dodatkowo gracze mogą ją przedłużyć, a admin zmienić ją wcześniej. A to co się ma wykonać przed zmianą mapy to zapis danych do MySQL. Zabieg ten ma na celu zoptymalizowanie pluginu dodam że taki zabieg dość mocno wpłynie na wydajność samego pluginu i szybkość zapisu tych danych.
Quote

  • +
  • -
Knopers's Photo Knopers 21.06.2011

Kiedyś pisałem pewien plugin do zliczania fragów itp.
próbowałem zapisu w public_end() ale było to za późno, po fakcie rozłączenia graczy.
Co do momentu przed rozłączeniem gracza z powodu zmiany mapy, nie spotkałem się aby istniał jakiś event/forward na to.
Quote

  • +
  • -
diggs's Photo diggs 21.06.2011

dzięki Knopers, jeśli można jak rozwiązałeś swój problem??
Quote

  • +
  • -
Knopers's Photo Knopers 21.06.2011

Zapis pozostawiłem w client_disconnect.
Quote

  • +
  • -
diggs's Photo diggs 21.06.2011

Ehhh chyba tez tak będę musiał zrobić :/
Dzięki.
Quote
Locked