Skocz do zawartości

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

find_ent_by_owne w fakemeta


Najlepsza odpowiedź Asiap, 30.09.2015 18:12

moj stock :D

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


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

#1 Bunker

    Początkujący

  • Użytkownik

Reputacja: 0
Nowy

  • Postów:12
Offline

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

 


  • +
  • -
  • 0

#2 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 30.09.2015 18:12   Najlepsza odpowiedź

moj stock :D

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


  • +
  • -
  • 1

#3 Bunker

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:12
Offline

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 :P


  • +
  • -
  • 0

#4 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

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


  • +
  • -
  • 1

#5 Bunker

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:12
Offline

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 :D


Użytkownik Bunker edytował ten post 30.09.2015 20:27

  • +
  • -
  • 0

#6 DarkGL

    Nie oddam ciasteczka !

  • Administrator

Reputacja: 6 555
Godlike

  • Postów:11 983
  • GG:
  • Steam:steam
  • Imię:Rafał
  • Lokalizacja:Warszawa
Offline

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


  • +
  • -
  • 1

#7 Bunker

    Początkujący

  • Autor tematu
  • Użytkownik

Reputacja: 0
Nowy

  • Postów:12
Offline

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 :D


  • +
  • -
  • 0

#8 Asiap

    Wszechpomocny

  • Girl

Reputacja: 171
Profesjonalista

  • Postów:323
  • Lokalizacja:Kętrzyn
Offline

Napisano 02.10.2015 01:15

tutaj masz ladnie opisane http://stackoverflow.com/a/4711475


  • +
  • -
  • 0




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

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