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

Sprawdzanie czy gracz kliknął przycisk (nie prethink)


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

#1 Sniper Elite

    Master

  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 04.07.2014 20:23

Witam. Zastanawiałem się jak odciążyć mój serwer i mam takie pytanko:

czy jest optymalniejszy sposób wychwycenia czy gracz naciska przycisk (IN_ATTACK, IN_ATTACK2, poruszania się, skoku i kucania) niż w funkcji client_PreThink?

 

Kiedyś dodawałem jakąś moc i tak zapytam przy okazji kiedy (co ile) wywołuje się ta funkcja?:

register_forward(FM_CmdStart, "CmdStart");

Dzięki za pomoc.


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#2 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 04.07.2014 22:12

Jeśli trzymasz jakiś przycisk to chyba wywołuje się dokładnie tyle samo razy co think, a jak nic nie trzymasz, to wtedy nic się nie dzieje.
  • +
  • -
  • 0

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


#3 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 05.07.2014 00:13

Czyli sprawdzanie czy gracz wcisnął przycisk bardziej opłaca się sprawdzać w funkcji CmdStart?


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.


#4 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 05.07.2014 12:01

Zdecydowanie tak.
  • +
  • -
  • 1

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


#5 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 05.07.2014 14:25

Jeśli trzymasz jakiś przycisk to chyba wywołuje się dokładnie tyle samo razy co think, a jak nic nie trzymasz, to wtedy nic się nie dzieje.

Wtedy było by to za wspaniałe. Niestety tak się nie dzieje :(

Ten event za każdym razem jak think się uruchomi sprawdza czy te wartości zmieniły wartość:
enum ClientData
{
	CD_Origin,			// float array[3]
	CD_Velocity,		// float array[3]
	CD_ViewModel,		// int
	CD_PunchAngle,		// float array[3]
	CD_Flags,			// int
	CD_WaterLevel,		// int
	CD_WaterType,		// int
	CD_ViewOfs,			// float array[3]
	CD_Health,			// float
	CD_bInDuck,			// int
	CD_Weapons,			// int
	CD_flTimeStepSound,	// int
	CD_flDuckTime,		// int
	CD_flSwimTime,		// int
	CD_WaterJumpTime,	// int
	CD_MaxSpeed,		// float
	CD_FOV,				// float
	CD_WeaponAnim,		// int
	CD_ID,				// int
	CD_AmmoShells,		// int
	CD_AmmoNails,		// int
	CD_AmmoCells,		// int
	CD_AmmoRockets,		// int
	CD_flNextAttack,	// float
	CD_tfState,			// int
	CD_PushMsec,		// int
	CD_DeadFlag,		// int
	CD_PhysInfo,		// string[256]
	CD_iUser1,			// int
	CD_iUser2,			// int
	CD_iUser3,			// int
	CD_iUser4,			// int
	CD_fUser1,			// float
	CD_fUser2,			// float
	CD_fUser3,			// float
	CD_fUser4,			// float
	CD_vUser1,			// float array[3]
	CD_vUser2,			// float array[3]
	CD_vUser3,			// float array[3]
	CD_vUser4			// float array[3]
}
I jeśli chociaż jedna się zmieni/zostanie wymuszona (nawet z tą samą wartością) uruchamia się event :( W wyniku czego event uruchamia się tyle razy samo co think (sporadycznie rzadziej o 1~5 klatek) i niczym się od niego nie różni (poza parametrami)
  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#6 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 05.07.2014 15:03

Być może funkcja wykonuje się częściej, ale "nic nie trzymasz = praktycznie nic się nie zmienia z tych wartości", czyli funkcja się nie wykona, czyli event ten dalej bardziej nadaje się do wychwytywania naciskanych przycisków, niż think, bo na pewno nie wykonuje się tyle samo co think i nie działa tak jak think, więc te dwie funkcję różnią się i to nawet znacznie. Gdyby nie było tak jak piszę, to wiedziałbym o tym, bo już ze trzy lata temu bawiłem się z tymi dwiema funkcjami.
  • +
  • -
  • 1

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


#7 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 05.07.2014 19:45

"nic nie trzymasz = praktycznie nic się nie zmienia z tych wartości"

Przypatrz się tu:

I jeśli chociaż jedna się zmieni/zostanie wymuszona (nawet z tą samą wartością) uruchamia się event

Z naciskiem na:

(nawet z tą samą wartością)


Rozumiem ciężko w to uwierzyć. Zrobłem ci taki maluki plugin patrz:
#include <amxmodx>
#include <fakemeta>

new Float:Time[2],x,y

public plugin_init()
{
	register_plugin("CmdStart","Beta","BlackPerfum")
	register_clcmd("say /start","start")
	register_forward(FM_CmdStart, "CmdStart");
}

public start(id) y = id

public CmdStart(id, cos, cd)
{
	if(id != y)	return
	
	global_get(glb_time,Time[0])
	if(!Time[1])	Time[1] = Time[0]
	
	x++
	if(Time[0]-1.0 > Time[1])
	{
		client_print(0,print_chat,"Po %f CmdStart wykonalo sie %i razy",Time[0]-Time[1],x)
		x = 0
		Time[1] = Time[0]
	}
}
Zobaczysz że na sekundę (nawet jak totalnie nic nie robisz) wykona się funkcja tyle razy co masz fps.
Wiesz co tu jest najciekawsze. Przypatrz się na chat podczas gry. Dokładnie na liczbe po przecinku w tym miejscu : "Po 1.0xxxx CmdStart". zauważ że w pluginie jest 1.0 a tu jest 1.0xxx tzn. to xxx jest czasem między wiadomościami xD
  • +
  • -
  • 2
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#8 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 05.07.2014 22:20

Ale chwila. Chodzi Ci o to, że po naciśnięciu funkcja wykonuje się x razy, czy o to, że nawet jak nic nie naciskasz to funkcja się wykonuje? Bo ja ciągle piszę o tym, że funkcja się nie wykonuje, jeśli chociażby stoimy w miejscu (czyli nic nie naciskmy). Bawiłem się tym ze 3 lata temu i to co mogłem zrobić w thinku, nie zrobiłem w "FM_CmdStart", bo po prostu funkcja ta nie wykonywała się ciągle.
  • +
  • -
  • 1

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


#9 BlackPerfum

    Pseudo interakcja??

  • Power User

Reputacja: 459
Wszechobecny

  • Postów:575
  • Lokalizacja:...
Offline

Napisano 06.07.2014 00:12

Chodzi Ci o to, że po naciśnięciu funkcja wykonuje się x razy, czy o to, że nawet jak nic nie naciskasz to funkcja się wykonuje?

Chodzi mi o to że nawet jak ty nic nie robisz to ona się wykonuje ;D
  • +
  • -
  • 1
Chcesz napisać do mnie na PW to:
Spoiler

Mój tok myślenia jest błędny? Wskaż mi błąd zmienie to!

Aktualnie bije limit 32 graczy (łącze serwery) ale nadal są lagi przy zbyt dużym przesyłu informacji Dołączona grafika
Gra się płynnie do 40~50 graczy potem łącze pada i zamiast biegać ludzie się teleportują Dołączona grafika

#10 sebul

    Godlike

  • Przyjaciel

Reputacja: 2 035
Godlike

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

Napisano 06.07.2014 00:56

Patrzę z niedowierzaniem... Tak jak pisałem, jakieś 3 lata temu, przenosiłem kod, który był w thinku do "CmdStart" i kod nie działał, bo potrzebował właśnie ciągłego wykonywania się, tak ja to jest w thinku, więc teraz po prostu osłupiałem. Sprawdzałem teraz to nawet na dwóch wersjach silnika, starszy i najnowszy, wszędzie to samo. Nie wiem co wtedy było nie tak, ale to było kopiuj -> wklej, więc błędu nie mogło być, ale teraz to już zbyt odległy czas, żeby nad tym bardziej się zastanawiać. Jeszcze dodam, że jak dobrze pamiętam, ktoś jeszcze miał na tym forum podobne zdanie do mojego, więc coś w tym musiało być. Ale i tak dalej uważam, że think można zostawić do innych rzeczy, a w "CmdStart" wykonywać coś, co wymaga wciśnięcia czegoś. Dodatkowo, wciśnięty przycisk można pobrać z uchwytu
get_uc(handle, UC_Buttons);

  • +
  • -
  • 1

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


#11 Sniper Elite

    Master

  • Autor tematu
  • Power User

Reputacja: 176
Profesjonalista

  • Postów:981
  • GG:
  • Imię:Konrad
  • Lokalizacja:Skryptolandia
Offline

Napisano 06.07.2014 08:41

Patrzyłem, funkcja wykonuje się nawet gdy stoimy w miejscu.

Nie ma czegoś bardziej optymalnego do wychwytywania klikniętego guzika?


  • +
  • -
  • 0

Kontakt:

Steam: CSnajper

GG: 4394855

 

Na steam i GG pomagam wyłącznie odpłatnie.





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

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