• 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!
  • New resources must be posted under Resources tab. A discussion thread will be created automatically, you can't open threads manually anymore.

TalkAction Advanced player searching

Tairens

Member
Joined
Sep 23, 2007
Messages
90
Reaction score
5
Code:
function onSay(cid, words, param)
local position = getCreaturePosition(cid)
local pid,pos = 0,0
local margin = {}
	if(param == "") then
		doPlayerSendTextMessage(cid, 22, 'Command param required.')
		return true
	end
	pid = getPlayerByNameWildcard(param)
	if(not pid or (isPlayerGhost(pid) and getPlayerAccess(pid) > getPlayerAccess(cid))) then
		doPlayerSendTextMessage(cid, 22, 'Player '..param..' not found.')
		return true
	end
	pos = getCreaturePosition(pid)
	margin = getMargin(position, pos)
	if(margin.x == 0 and margin.y == 0) then
		doPlayerSendTextMessage(cid, 22, param..' is on '..margin.dir3..' ['..margin.z..' levels]  level.')
	elseif(margin.x == 0) then
		doPlayerSendTextMessage(cid, 22, param..' is on '..margin.dir2..' ['..margin.y..' squares] on '..margin.dir3..' ['..margin.z..' levels] level.')
	elseif(margin.y == 0) then
		doPlayerSendTextMessage(cid, 22, param..' is on '..margin.dir1..' ['..margin.x..' squares] on '..margin.dir3..' ['..margin.z..' levels] level.')
	else
		doPlayerSendTextMessage(cid, 22, param..' is on '..margin.dir2..' ['..margin.y..' squares] - '..margin.dir1..' ['..margin.x..' squares] on '..margin.dir3..' ['..margin.z..' levels] level.')
	end
return true
end

function getMargin(position, pos)
	local margin = {x = 0, y = 0, z = 0, dir1 = "West", dir2="North", dir3="higher"}
		margin.x = position.x - pos.x
		margin.y = position.y - pos.y
		margin.z = position.z - pos.z
		if(margin.x < 0) then
			margin.x = -margin.x
			margin.dir1 = "East"
		end
		if(margin.y < 0) then
			margin.y = -margin.y
			margin.dir2 = "South"
		end
		if(margin.z < 0) then
			margin.z = -margin.z
			margin.dir3 = "lower"
		elseif(margin.z == 0) then
			margin.dir3 = "same"
		end
	return margin
end
Code:
<talkaction words="!search" hide="yes" event="script" value="searching.lua"/>

15hiyr.jpg


If you want search person use
Code:
!search player_name

In version 0.2 I want include fixing the closest town.

Regards,
Tairens
 
Would it be possible to edit this script so that it shows where an "npc" is.



Lets say you'd edit the script adding all npcs names and then making it so it shows where on the map npc is?
 
Back
Top