#include <amxmodx>
#include <fakemeta>
#define MAX_BS 2
new Float:bs_absmin[MAX_BS][3]
new Float:bs_absmax[MAX_BS][3]
public plugin_init()
{
set_task(5.0,"znajdz_bsy")
}
public znajdz_bsy(id)
{
static bs_id=33//pierwszy numer id, jakim może być bs (1-32 to gracze)
for(new i=0;i<MAX_BS;i++)
{
new bs=engfunc(EngFunc_FindEntityByString, bs_id, "classname", "func_bomb_target")
if(!bs)
return 0
bs_id=bs+1//aby szukało następnego entity, a nie tego już znalezionego
pev(bs,pev_absmin,bs_absmin[i])
pev(bs,pev_absmax,bs_absmax[i])
}
return 0
}
public is_in_bs(id)
{
new Float:plr_origin[3]
pev(id,pev_origin,plr_origin)
for(new b=0;b<MAX_BS;b++)
{
if((bs_absmin[b][0]-14<=plr_origin[0]<=bs_absmax[b][0]+14)
&&(bs_absmin[b][1]-14<=plr_origin[1]<=bs_absmax[b][1]+14)
&&(bs_absmin[b][2]-14<=plr_origin[2]<=bs_absmax[b][2]+14))
return 1
}
return 0
}
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.
|
Guest Message by DevFuse
is_in_bs(id)Zwraca, czy gracz znajduje się na bsie.
Temat rozp. grankee, 24.06.2010 20:20
5 odpowiedzi w tym temacie
#1
Napisano 24.06.2010 20:20
Jak w temacie, funkcja zwraca, czy gracz znajduje się na bsie, czyli w założeniu czy może podłożyć aktualnie pakę.
#2
Napisano 24.06.2010 20:51
Nie wiem czy całość wyciąłem( z BS Limiter'a), ale czy coś takiego nie było by lepsze ?
#define MAXBSNUM 10 //maksymalna ilosc BS'ow na mapie
new BsList[MAXBSNUM], num //bs'y
public check_bs()
{
num = 0
new ent = -1
while ((ent = find_ent_by_class(ent, "func_bomb_target")))
BsList[num++] = ent
while ((ent = find_ent_by_class(ent, "info_bomb_target")))
BsList[num++] = ent
}
public in_bs(id)
{
static Float:origin[3]
entity_get_vector(id, EV_VEC_origin, origin)
new ent = -1, i
while ((ent = find_ent_in_sphere(ent, origin, 30.0)))
for (i=0; i<num; i++)
if (ent == BsList[i])
return 1
return 0
}
#3
Napisano 26.06.2010 10:31
a nie zadziała?
Dokumentacja AMXX.pl - Nieoficjalny polski support AMX Mod X
#define CS_MAPZONE_BOMBTARGET (1<<1) //bombsite
albo hook Msg Ikonki z bs'a>
Dokumentacja AMXX.pl - Nieoficjalny polski support AMX Mod X
#define CS_MAPZONE_BOMBTARGET (1<<1) //bombsite
albo hook Msg Ikonki z bs'a>
#4
Napisano 26.06.2010 12:35
To zależy czy nie jest wymagana paka ?
Ikonka na pewno nie zadziała jak nie ma c4.
Ikonka na pewno nie zadziała jak nie ma c4.
#5
Napisano 26.06.2010 13:11
Zrobiłem kod:
I najwyrazniej dotyk z bs'em, buyzone itp. jest wywolywany co frame - wystarczy zrobic tablice dla graczy, dajesz ent ostatnio dotknietego bs'a i czas ostatniego dotkniecia - jesli czas jest mniejszy od 0.1s to jestes w bs'ie :F
func_bomb_target player - bs dotyka gracza, ale gracz nigdy nie dotyka bs'a
public plugin_init() { register_forward(FM_Touch, "fwd_touch") } public fwd_touch(ptr, ptd) { new name[32],name2[32] entity_get_string(ptr,EV_SZ_classname,name,31) entity_get_string(ptd,EV_SZ_classname,name2,31) client_print(0,print_chat,"%s %s",name,name2) }
I najwyrazniej dotyk z bs'em, buyzone itp. jest wywolywany co frame - wystarczy zrobic tablice dla graczy, dajesz ent ostatnio dotknietego bs'a i czas ostatniego dotkniecia - jesli czas jest mniejszy od 0.1s to jestes w bs'ie :F
func_bomb_target player - bs dotyka gracza, ale gracz nigdy nie dotyka bs'a
#6
Napisano 26.06.2010 17:56
No dobrze Miczu, to jakbyś chciał na bieżąco wykrywać czy ktoś jest na bs to jest dobre, ale jednorazowo...
Użytkownicy przeglądający ten temat: 0
0 użytkowników, 0 gości, 0 anonimowych