Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

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

is_in_bs(id)Zwraca, czy gracz znajduje się na bsie.


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

#1 grankee

    Godlike

  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

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ę.

#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
}

  • +
  • -
  • 0

#2 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1725
Godlike

  • Postów:6881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

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
}

  • +
  • -
  • 0

#3 Vertricus

    Godlike

  • Przyjaciel

Reputacja: 426
Wszechobecny

  • Postów:1549
  • Lokalizacja:.
Offline

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>
  • +
  • -
  • 0

#4 mgr inż. Pavulon

    C35H60Br2N2O4

  • Przyjaciel

Reputacja: 1725
Godlike

  • Postów:6881
  • Steam:steam
  • Imię:Konrad
  • Lokalizacja:Koniecpol
Offline

Napisano 26.06.2010 12:35

To zależy czy nie jest wymagana paka ?
Ikonka na pewno nie zadziała jak nie ma c4.
  • +
  • -
  • 0

#5 Miczu

    Godlike

  • Przyjaciel

Reputacja: 646
Wszechmogący

  • Postów:2862
Offline

Napisano 26.06.2010 13:11

Zrobiłem kod:
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 :&
  • +
  • -
  • 0

#6 grankee

    Godlike

  • Autor tematu
  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

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...
  • +
  • -
  • 0




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

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