Witam,
Chciałbym się dowiedzieć, czy w fakemeta jest odpowiednik find_ent_by_owner z Engine.
Jeśli tak, to jaki?
Za wszelkie odpowiedzi bardzo dziękuję.
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.
|
Najlepsza odpowiedź Asiap, 30.09.2015 18:12
moj stock ![]()
stock bool:find_ent_by_owner(id, szClassName[])
{
static iEnt = FM_NULLENT;
while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", szClassName)))
{
if(pev(iEnt, pev_owner) == id)
{
return true;
}
}
return false;
}
zwraca true jesli wlascicielem enta o podanej nazwie klasy jest gracz od indeksie id
Przejdź do postu
Napisano 30.09.2015 17:36
Witam,
Chciałbym się dowiedzieć, czy w fakemeta jest odpowiednik find_ent_by_owner z Engine.
Jeśli tak, to jaki?
Za wszelkie odpowiedzi bardzo dziękuję.
Napisano 30.09.2015 18:12 Najlepsza odpowiedź
moj stock ![]()
stock bool:find_ent_by_owner(id, szClassName[])
{
static iEnt = FM_NULLENT;
while((iEnt = engfunc(EngFunc_FindEntityByString, iEnt, "classname", szClassName)))
{
if(pev(iEnt, pev_owner) == id)
{
return true;
}
}
return false;
}
zwraca true jesli wlascicielem enta o podanej nazwie klasy jest gracz od indeksie id
Napisano 30.09.2015 18:43
dzięki Asiap, szkoda tylko że nie ma wbudowanej funkcji tak jak w Engine
Mam jeszcze jedno pytanie, mam taki kod.
static szClassName[32] pev(ent,pev_classname,szClassName,31) if(equal(szClassName,"FirstAid")) //reszta kodu
i nie mam bladego pojęcia jak to działa ![]()
Dlaczego ta tablica ma 32 elementy?
I dlaczego przy pev na końcu jest 31?
Resztę myślę że rozumiem ![]()
Napisano 30.09.2015 19:05
spokojnie te 32 mozesz zamienic na 9 a 31 na 8 ![]()
jest to rozmiar tablicy czyli ilosc przechowywanych znakow w tablicy
31 to jest rozmiar tablicy - 1
Napisano 30.09.2015 20:21
Przepraszam, że jestem taki dociekliwy ale dlaczego rozmiar tablicy-1? Jedna komórka tablicy to wartownik czy coś takiego?
I miejmy nadzieję ostatni mój problem a mianowicie napisałem takie coś:
public entremover(id)
if(id==0)
{
new players[32]
get_players(players,a)
i=sizeof entter-1
while(a)
{
if(is_user_alive(a))
{
if(find_ent_by_owner(-1,entter[i],a))
{
remove_entity(find_ent_by_owner(-1,entter[i],a))
a--
i=sizeof entter-1
}
else if(i<=0)
{
a--
i=sizeof entter-1
}
else
{
i--
}
}
else
{
a--
}
}
}
else
{
i=sizeof entter-1
while(i>=0)
{
remove_entity(find_ent_by_owner(-1,entter[i],id))
i--
}
dostales[id]=0
}
W zamierzeniu mało to usuwać wszystkie elementy o klasach podanych w tablicy
new const entter[][]={"FirstAid","AmmoBag","Medicbag"}
Jednak usuwa tylko te z klasą FirstAid w dodatku nie wiem czy dla wszystkich graczy, gdyż boty niezbyt sobie radzą z pluginami ![]()
Użytkownik Bunker edytował ten post 30.09.2015 20:27
Napisano 30.09.2015 22:10
Ostatni element tablicy - stringu to \0 czyli koniec ciągu znaków. W przypadku tablic które nie są stringami taka sytuacja nie ma miejsca
Napisano 01.10.2015 15:59
Czyli w przypadku tablic przechowujących tekst, ostatni element przechowuje zakończenie tego tekstu?
Więc zapisuje się jeden element miej niż jest w tablicy aby miejsce na zakończenie tekstu zostało puste a tablica szClassName przechowuje nazwę klasy.
Czy dobrze zrozumiałem?
A jeśli chodzi o te usuwanie elementów aktualnie wszystko działa, wystarczyło zamienić "AmmoBag" "Medicbag" miejscami ![]()
0 użytkowników, 0 gości, 0 anonimowych