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

ForwardyCzy obicazaja serwer ?


  • Zamknięty Temat jest zamknięty
16 odpowiedzi w tym temacie

#1 Pittero

    Wszechwiedzący

  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 14.03.2011 18:09

	register_forward(FM_CmdStart, "CmdStart")
register_forward(FM_Voice_SetClientListening, "fw_SetClientListening");
register_forward(FM_SetClientKeyValue, "fw_SetClientKeyValue")
register_forward(FM_EmitSound, "EmitSound")


Czy te forwardy moga obciazac serwer az tak mocno ze beda lagi ?
Jak powinno sie konczyc dany forward ?
return FMRES_SUPERCEDE czy return FMRES_IGNORED ?
dzięki za odpowiedz.
  • +
  • -
  • 0

#2 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.03.2011 19:20

same forwardy to nie wszystko, ważne co w nich robisz i jak często się wykonują; nawet je uporządkowałeś po częstotliwości wykonywania :P tzn najmniej kod powinno być w CmdStart, za to w emit sound możesz robić co chcesz; najgorszy jest pod tym względem addtofullpack

jak tylko słuchasz to ignored, jak chcesz blokować/zmieniać to supercede czy handled
  • +
  • -
  • 1

#3 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 14.03.2011 19:40

public CmdStart(id, uc_handle)
{
if(!is_user_connected(id) || !is_user_alive(id))
{
return FMRES_IGNORED;
}
if(deagle_duel[id])
{
cs_set_user_bpammo(id, CSW_DEAGLE, 1)
}
return FMRES_IGNORED;
}

Taki zapis jest poprawny ?
  • +
  • -
  • 0

#4 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.03.2011 20:31

jak najbardziej poprawny, ale wątpię by o to Ci chodziło; cmdstart jest prawie jak prethink, kilkadziesiąt razy na sekudnę
  • +
  • -
  • 1

#5 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 14.03.2011 20:43

jak najbardziej poprawny, ale wątpię by o to Ci chodziło; cmdstart jest prawie jak prethink, kilkadziesiąt razy na sekudnę

I to moze lagowac serwa...
A reszta forwardow jak sie wykonuje ?
Czym mozna zastapic cmdstart ? Jesli chce uzyc tego do pojedynkow czyli do dgla ma ustawiac 1 naboj :D
  • +
  • -
  • 0

#6 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.03.2011 21:10

CurWeapon albo z HamSandwich któryś z itemw (deploy?)
  • +
  • -
  • 0

#7 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 14.03.2011 21:15

CurWeapon albo z HamSandwich któryś z itemw (deploy?)

CurWeapon sie wlacza jak zmieniamy bron, a hamsandwich to nie mam pojecia jak uzyc :D
  • +
  • -
  • 0

#8 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.03.2011 21:31

czyli nie masz też pojęcia jak użyć CurWeapon xD

sry musiałem

Half-Life 1 Game Events - AlliedModders Wiki
ClipAmmo

złap
register_event("CurWeapon", "eventCurWeapon", "be", "1=1");

public eventCurWeapon(id){
	if(read_data(3))
		return;
	//daj pocisk/przeladuj
}

  • +
  • -
  • 0

#9 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 14.03.2011 21:48

R3X, a poprawnie jest:
1.
public CurWeapon(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
{
return PLUGIN_HANDLED;
}
}

czy 2.
public CurWeapon(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
{
return FMRES_IGNORED;

}
}

  • +
  • -
  • 0

#10 Ortega

    mów mi Orti

  • Power User

Reputacja: 363
Wszechpomocny

  • Postów:640
  • GG:
  • Steam:steam
  • Imię:Marcin
  • Lokalizacja:Sosnowiec
Offline

Napisano 14.03.2011 21:52

W tym przypadku obie formy są poprawne.
  • +
  • -
  • 0

#11 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.03.2011 21:57

są poprawne, bo zwrócona wartość nie ma znaczenia:

amxconst.inc
#define PLUGIN_CONTINUE		0	/* Results returned by public functions */

fakemeta_const.inc
#define FMRES_IGNORED	1	// Calls target function, returns normal value

wartości nie są takie same, a jako message/event to przetwarzane jest przez Core, czyli PLUGIN_* by pasowało
FMRES_* dotyczy forwardów fakemety


Nie ma sensu sprawdzać czy gracz jest żywy i podłączony w 1 ifie : jeśli jest żywy to musi być podłączony
  • +
  • -
  • 0

#12 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 14.03.2011 22:17

JEszcze mam jendo pytanie :D
Ktore read_data odpowiada za sprawdzenie czy gracz wystrzelil naboj w CurWeapon ?
  • +
  • -
  • 0

#13 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.03.2011 22:19

czy wystrzelił? tzn czy ma pusty magazynek tak? to read_data(3) == 0 wtedy
  • +
  • -
  • 0

#14 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 14.03.2011 22:27

czy wystrzelił? tzn czy ma pusty magazynek tak? to read_data(3) == 0 wtedy

Czy jak raz strzelil
  • +
  • -
  • 0

#15 R3X

    Godlike

  • Przyjaciel

Reputacja: 2 987
Godlike

  • Postów:4 248
  • Lokalizacja:Nie
Offline

Napisano 14.03.2011 22:33

3 parametr to po prostu ilość pocisków w magazynku
  • +
  • -
  • 0

#16 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

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

Napisano 14.03.2011 22:37


#define MAX 32



public CurWeapon(id)

{

	static iPlayerWeapon[MAX+1],iPlayerAmmo[MAX+1];

	new wid = read_data(2)	// Id broni

	new ammo = read_data(3)	// liczba naboi w magazynku

	if(iPlayerWeapon[id] != wid){

		iPlayerWeapon[id] = wid;

		iPlayerAmmo[id] = ammo;

	}

	else if(iPlayerAmmo[id] > ammo){

		//strzelilem

	}

	iPlayerAmmo[id] = ammo;

	

}

  • +
  • -
  • 0

#17 Pittero

    Wszechwiedzący

  • Autor tematu
  • Użytkownik

Reputacja: 40
Pomocny

  • Postów:545
  • GG:
  • Lokalizacja:Polska
Offline

Napisano 15.03.2011 09:58

A co oznacza parametr "be" w curweapon oraz "1=1"
moglby ktos napisac mi przyklady uzycia eventu na:
1. Sprawdzenie broni jaka ma grac "w reku" aktualnie
2. Pobranie momentu przeladowania.
3. Wykonanie akcji jesli bron to noz, a drugi na to jesli bron inna niz noz.
4. Jak zablokowac uzywanie broni z tzw automatow ktore daja bron po wcisnieciu buttonu?
  • +
  • -
  • 0




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

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