• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

Funkcja, która sprawdza...

hugq

Member
Joined
Mar 17, 2010
Messages
166
Reaction score
9
Cześć
Chciałbym przerobić funkcję, żeby sprawdzała czy jest dany item w obrębie, ale nie wiem jak się do tego zabrać.
Mam funkcję która sprawdza czy jest jakiś gracz, potwór i chciałbym z niej właśnie skorzystać.
Code:
function getCreaturesInRange(position, radiusx, radiusy, showMonsters, showPlayers, showSummons)
	local creaturesList = {}
	for x = -radiusx, radiusx do
		for y = -radiusy, radiusy do
			if not (x == 0 and y == 0) then
				local creature = getTopCreature({x = position.x+x, y = position.y+y, z = position.z})
				if (creature.type == 1 and showPlayers) or (creature.type == 2 and showMonsters and (not showSummons or (showSummons and getCreatureMaster(creature.uid) == (creature.uid)))) then
					table.insert(creaturesList, creature.uid)
				end
			end
		end
	end

	local creature = getTopCreature(position)
	if (creature.type == 1 and showPlayers) or (creature.type == 2 and showMonsters and (not showSummons or (showSummons and getCreatureMaster(creature.uid) == (creature.uid)))) then
		if not(table.find(creaturesList, creature.uid)) then
			table.insert(creaturesList, creature.uid)
		end
	end
		return creaturesList
end

Przykład jak powinno być po przerobieniu

Code:
if getItemsInRange(pozycja xyz, 2, 2,  1387) == TRUE then

Dzięki.
 
nikt ci tego nie napisze , napisz sam wstaw co ci wyszlo ew. jakie bledy wyala i wtedy napewno znajdzie sie chetny a nie Siema mam taki a chce owaki to mi zrob
 
Chciałbym przerobić funkcję, żeby sprawdzała czy jest dany item w obrębie, ale nie wiem jak się do tego zabrać.
Pisz po polsku. W obrębie czego? Twojego województwa?
 
zmień tą funkcję:

getTopCreature

na jakąś typu
getThingFromPos lub Position (z głowy piszę, więc sprawdź dokładną funkcje w DOTC --> LUA_FUNCTIONS
 
Code:
function f(p, r, i)
	for x = p.x - r, p.x + r do
		for y = p.y - r, p.y + r do
			local v = getTileItemById(Position(x, y, p.z), i).uid
			if v ~= 0 then
				return true
			end
		end
	end
	return false
end
 
Code:
function f(p, r, i)
	for x = p.x - r, p.x + r do
		for y = p.y - r, p.y + r do
			local v = getTileItemById(Position(x, y, p.z), i).uid
			if v ~= 0 then
				return true
			end
		end
	end
	return false
end

Powodzenia...
 
Cos nie tak?

Ludzie, którzy nie umieją przyswoić sobie wzoru zawsze będą krytykować mądrzejszych ;/


Wystarczy odpowiednio podstawić pod funkcje :), zresztą lepsza cała funkcja zwracająca TRUE lub FALSE niż 20x w skrypcie wklejać taki sam kod :)
 
Cos nie tak?

Ludzie, którzy nie umieją przyswoić sobie wzoru zawsze będą krytykować mądrzejszych ;/


Wystarczy odpowiednio podstawić pod funkcje :), zresztą lepsza cała funkcja zwracająca TRUE lub FALSE niż 20x w skrypcie wklejać taki sam kod :)


Edit:
@dla masteuszx
ja to rozumiem tak, że P to jest nasza pozycja, a R to zasięg (zapewne r od radius~~, lub r jako r- promień okręgu, gdyż takie coś stworzy nam coś ala koło), I to jest zapewne nasz itemid
jeśli coś źle zrozumiałem to proszę o sprostowanie bez napinki :)
 
Back
Top