←  Pytania

AMXX.pl: Support AMX Mod X i SourceMod

»

startowy armor

  • +
  • -
lexar's Photo lexar 15.07.2014

Witam

Jak zrobić aby na starcie każdy miał 20 armoru, a gracz który posiada np: flagę H nie dostawał by tego startwego armoru xD takie troche masło maślane ale myślę, że jest zrozumiałe :D

 

Pozdrawiam

Quote

  • +
  • -
0-0-0's Photo 0-0-0 15.07.2014

#include <amxmodx>
#include <cstrike>
#include <hamsandwich>

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


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}
public fwHamPlayerSpawnPost(id)
{
	if(!(get_user_flags(id) & ADMIN_CFG)){
		cs_set_user_armor(id, 20, CS_ARMOR_VESTHELM)
	}
}
Quote

  • +
  • -
lexar's Photo lexar 15.07.2014

sypie errorami :o

 

[AMXX] Displaying debug trace (plugin "armor_na_start.amxx")
L 07/15/2014 - 22:26:42: [AMXX] Run time error 10: native error (native "cs_set_user_armor")
L 07/15/2014 - 22:26:42: [AMXX]    [0] armor_na_start.sma::fwHamPlayerSpawnPost (line 18)
 
Quote

  • +
  • -
szelbi's Photo szelbi 15.07.2014

Co jest wyżej? Wklej cały log.
Quote

  • +
  • -
lexar's Photo lexar 15.07.2014

sorki cały log:

 

L 07/15/2014 - 22:26:42: Info (map "zm_dusthorror") (file "addons/amxmodx/logs/error_20140715.log")
L 07/15/2014 - 22:26:42: [CSTRIKE] Invalid player 1
L 07/15/2014 - 22:26:42: [AMXX] Displaying debug trace (plugin "armor_na_start.amxx")
L 07/15/2014 - 22:26:42: [AMXX] Run time error 10: native error (native "cs_set_user_armor")
L 07/15/2014 - 22:26:42: [AMXX]    [0] armor_na_start.sma::fwHamPlayerSpawnPost (line 18)

 

Quote

  • +
  • -
szelbi's Photo szelbi 15.07.2014

Musisz sprawdzić czy gracz jest połączony lub żywy.

Quote

  • +
  • -
Puchate's Photo Puchate 15.07.2014

Ten plugin pokazuje błąd w hamsandwich / engine gry (nie zagłębiałem się dokładnie). Flaga ustawiona jest na post więc funkcja powinna wykonać się gry gracz jest już żywy, lecz wykonuje się dwukrotnie: zanim będzie żywy oraz gdy już serwer go odrodzi.

#include <amxmodx>
#include <cstrike>
#include <hamsandwich>

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


public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	RegisterHam(Ham_Spawn, "player", "fwHamPlayerSpawnPost", 1)
}
public fwHamPlayerSpawnPost(id)
{
	if(is_user_alive(id) && !(get_user_flags(id) & ADMIN_CFG)){
		cs_set_user_armor(id, 20, CS_ARMOR_VESTHELM)
	}
}

Edited by Puchate, 15.07.2014 23:10.
Quote

  • +
  • -
BlackPerfum's Photo BlackPerfum 16.07.2014

en plugin pokazuje błąd w hamsandwich / engine gry (nie zagłębiałem się dokładnie).

To nie jest żaden bug
 

Flaga ustawiona jest na post więc funkcja powinna wykonać się gry gracz jest już żywy, lecz wykonuje się dwukrotnie: zanim będzie żywy oraz gdy już serwer go odrodzi.

To że wykonuje się spawn na gracz nie oznacza że zostanie ożywiony!!! Jedynie że jego byt zostanie poprawnie zrespiony (dla hl) Podczas wchodzenia na serwer wykonuje się ten event 2x gdyż najpierw jest spawn naszego bytu byśmy mogli być na mapie jako spec w odpowiednim miejscu (w tym momęcie wykonuje się event client_putinserver) a następnie spawn jako gracza (dla cs'a) tzn. ustawia nam model itd

Dlaczego spawn nr. 1 jest wymagany? Bez niego nasz byt gracza nie jest zrespiony i bysmy nie mogli latać na spectu przed pierwszym spawnem jako gracza (tzn. ustawia nam model i możemy biegać, strzelać itd)

Dalsze spawny jedynie powodują odebranie nam niepotrzebnych flag (+ wszystkie właściwości bytu żyjącego) + ustawienie w odpowiednim miejscu na mapie

Dodam że użycie Ham_Spawn jest błędne gdyż ten event jest przeznaczony do spawnu bytu nie określonego lub bytu określonego którego spawn nie jest wymuszany.
Jesli chcesz złapać poprawny spawn gracza to złap Ham_CS_RoundRespawn
Quote