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 postuNapisano 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