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

Kolejność wczytywania funkcji


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

#1 Filip1512

    Wszechmogący

  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 16.10.2013 22:11

Cześć,

dość banalne pytanie, ale nie bardzo mam czasu szukać tego. Mógłby ktoś przypomnieć kolejność wczytywania funkcji przy wejściu na serwer i kiedy już są one wczytywane?

Chodzi mi o funkcje client_authorized, client_putinserver, client_connected ii.. to chyba wszystkie? :P


  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#2 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 16.10.2013 22:29

Pierwsze jest client_connect, potem client_putinserver, a następnie client_authorized. Lecz nie zawsze client_authorized jest ostatnie, czasami putinserver.

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#3 Filip1512

    Wszechmogący

  • Autor tematu
  • Power User

Reputacja: 137
Zaawansowany

  • Postów:641
  • Steam:steam
  • Imię:Filip
  • Lokalizacja:Poland
Offline

Napisano 16.10.2013 22:36

Dzięki ;) A jakieś bardziej szczegółowe uwagi, kiedy one zaczynają się ładować z punktu widzenia gracza?


  • +
  • -
  • 0
Filip / `NN
Wymuszanie rate'ów co spawna - update v2.1!

#4 GT Team

    Ten lepszy xD

  • Zbanowany

Reputacja: 321
Wszechpomocny

  • Postów:1 435
  • GG:
  • Imię:Tomasz i Grzegorz
  • Lokalizacja:Wojkowice
Offline

Napisano 16.10.2013 22:41

http://forums.alliedmods.net/showthread.php?t=194451
a tu kawałek z tego
client_connect is called when the client connects to the server
client_putinserver is called a second or 2 before he sees the MOTD and is fully in
client_authorized is called when the client has gotten a SteamID

1 will always be first, but 2 and 3 can be in any order
tam dalej wspominają, że authorized jest niby pomiędzy. Możliwe, poczekaj zaraz sprawdzę u siebie
Edit, sprawdziłem i o to wynik:
"pluginmenu.amxx"
- >>>>>connect
L 10/16/2013 - 23:37:45: [admin.amxx] Login: "STRIKER--McPr0 :D<13><VALVE_ID_LOOPBACK><>" became an admin (account "loopback") (access "abcdefghijklmnopqrstu") (address "loopback")
- >>>>>authorized
* Privileges set 

BUILD 3266 SERVER (0 CRC)
Server # 13
L 10/16/2013 - 23:37:46: [admin.amxx] Login: "STRIKER--McPr0 :D<13><VALVE_ID_LOOPBACK><>" became an admin (account "loopback") (access "abcdefghijklmnopqrstu") (address "loopback")
- >>>>>putinserver
STRIKER--McPr0 :D connected
Couldn't 
a plugin:
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "author"


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	
	// Add your code here...
}
public client_connect(id)
	server_print("connect")
public client_putinserver(id)
	server_print("putinserver")
public client_authorized(id)
	server_print("authorized")
Wynik jest jednoznaczny, ja testuję na non-steamie, więc u mnie pobranie steam-id było zapewne krótsze. I dlatego authorized jest pomiędzy.

Nowa wersja Tower Defense 0.2 Alpha | Inne Mody -> Nowości

 


#5 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

  • Postów:5 411
  • Steam:steam
  • Imię:Sebastian
  • Lokalizacja:Ostrołęka
Offline

Napisano 16.10.2013 23:22

"client_authorized" przeważnie jest pomiędzy, ale to nie jest regułą.
  • +
  • -
  • 1

Posiadam TBM (inaczej PTB), które działa dużo lepiej niż zwykłe PTB, nawet na modach z lvlami. Zainteresowany? Proszę bardzo


#6 GwynBleidD

    Godlike

  • Przyjaciel

Reputacja: 1 869
Godlike

  • Postów:3 066
  • Steam:steam
  • Lokalizacja:Przemyśl
Offline

Napisano 17.10.2013 11:32

Moment wywołania client_authorized zależy silnie od połączenia z głównymi serwerami steam. Gdy odpowiedź od serwerów przyjdzie, że gracz jest autoryzowany, forward zostanie wywołany. Odbywa się to różnie i może się zmieniać... Kiedyś wykonywało się zawsze PO client_putinserver, nawet zdążył ktoś dołączyć do teamu zanim się to wykonało, jednak Valve przyspieszyło proces autoryzacji gracza i wykonuje się teraz prawie zawsze przed client_putinserver.

 

UWAGA! Forward client_authorized może nie wykonać się WCALE!!! Szczególnie na serwerach z dproto z przed aktualizacji, gdy występował bug, że serwer nie odczytywał SteamID. Właśnie wtedy client_authorized się wcale nie wykonywał, bo nie następowała autoryzacja gracza.


  • +
  • -
  • 1

NIE pomagam na PW. Nie trudź się, na zlecenia nie odpiszę... Od pomagania jest forum.
NIE zaglądam w tematy wysłane na PW. Jeśli są na forum to prędzej czy później je przeczytam. Jeśli mam co w nich odpisać, to odpiszę.
 
1988650.png?theme=dark


#7 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

Napisano 17.10.2013 11:47

Ten kawałek kodu wyjaśni troche dlaczego jest to tak niepewna funkcja
void C_StartFrame_Post(void)
{
	if (g_auth_time < gpGlobals->time)
	{
		g_auth_time = gpGlobals->time + 0.7f;
		CList<CPlayer*>::iterator a = g_auth.begin();

		while (a)
		{
			const char*	auth = GETPLAYERAUTHID((*a)->pEdict);

			if ((auth == 0) || (*auth == 0))
			{
				a.remove();
				continue;
			}

			if (strcmp(auth, "STEAM_ID_PENDING"))
			{
				(*a)->Authorize();
				if (g_auth_funcs.size())
				{
					List<AUTHORIZEFUNC>::iterator iter, end=g_auth_funcs.end();
					AUTHORIZEFUNC fn;
					for (iter=g_auth_funcs.begin(); iter!=end; iter++)
					{
						fn = (*iter);
						fn((*a)->index, auth);
					}
				}
				executeForwards(FF_ClientAuthorized, static_cast<cell>((*a)->index));
				a.remove();
				
				continue;
			}
			++a;
		}
	}

Użytkownik DarkGL edytował ten post 17.10.2013 11:47

  • +
  • -
  • 2




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

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