Ir para conteúdo
  • 0

Talkaction Player Por Ip


luisfe23

Pergunta

Fala XTibianos! Beleza?

 

Preciso de uma talkaction para GOD parecida com a /mc, porém um pouco diferente.

Funciona assim:

Quando eu escrever /ip xxx.xxx.xxx.xxx ele irá mostrar todos os jogadores do servidor que possuem o IP xxx.xxx.xxx.xxx

 

Obrigado e abraços.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Tenho esse script aqui que já tava pronto em um otserv:

function onSay(cid, words, param, channel)
local _ip = nil
   if(param ~= '') then
       _ip = tonumber(param)
       if(not _ip or _ip == 0) then
           local revertIp = doRevertIp(param)
           if(not revertIp) then
               local tid = getPlayerByNameWildcard(param)
               if(not tid) then
                   _ip = nil
               else
                   _ip = getPlayerIp(tid)
               end
           else
               _ip = doConvertIpToInteger(revertIp)
           end
       end
   end
local list, ips = {}, {}
local players = getPlayersOnline()
   for i, pid in ipairs(players) do
       local ip = getPlayerIp(pid)
       local tmp = table.find(ips, ip)
       if(tmp ~= nil and (not _ip or _ip == ip)) then
           if(table.countElements(list, ip) == 0) then
               list[players[tmp]] = ip
           end
           list[pid] = ip
       end
       table.insert(ips, ip)
   end
   if(table.maxn(list) > 0) then
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently online players with same IP address(es):")
       for pid, ip in pairs(list) do
           doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(pid) .. " (" .. doConvertIntegerToIp(ip) .. ")")
       end
   else
       doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently there aren't any players with same IP address(es).")
   end
return TRUE
end

Link para o comentário
Compartilhar em outros sites

  • 0

Galera, ta tão difícil de entender? Esquece totalmente o MC, pois foi só um exemplo, não tem nada a ver com o que eu quero...

 

Eu quero uma talkaction assim, quando eu (GOD) digitar /ip xxx.xxx.xxxx.xx

 

Aparecerá o jogador (ou os jogadores) que possuir este ip.

 

Entenderam?

Link para o comentário
Compartilhar em outros sites

  • 0

Não e culpa sua luisfelipe e que confundiram mais enfim

 

Eu fiz o script

 

function onSay(cid, words, param, channel)

str = "Ip:\n\n"

for _, pid in ipairs(getPlayersOnline()) do

if getPlayerIp(pid) == param then

str = str .. getPlayerIp(pid) .. " - Nome do Player [(".. getPlayerName(pid) ..")] Level ["..getPlayerLevel(pid).."]\n"

end

end

doShowTextDialog(cid, 1397, str)

return true

end

 

 

<talkaction words="!ip" script="ip.lua" />

A tag

 

<talkaction words=r" script="NomeDoArquivo.lua" />

Link para o comentário
Compartilhar em outros sites

  • 0

Que bom que alguém entendeu o que eu quero, porém eu testei o script aqui e não funcionou.

 

 

Não sei se vai servir pra alguma coisa, mas vou postar o meu /mc que funciona.

function onSay(cid, words, param, channel)
local _ip = nil
if(param ~= '') then
	_ip = tonumber(param)
	if(not _ip or _ip == 0) then
		local revertIp = doRevertIp(param)
		if(not revertIp) then
			local tid = getPlayerByNameWildcard(param)
			if(not tid) then
				_ip = nil
			else
				_ip = getPlayerIp(tid)
			end
		else
			_ip = doConvertIpToInteger(revertIp)
		end
	end
end

local list, ips = {}, {}
local players = getPlayersOnline()
for i, pid in ipairs(players) do
	local ip = getPlayerIp(pid)
	local tmp = table.find(ips, ip)
	if(tmp ~= nil and (not _ip or _ip == ip)) then
		if(table.countElements(list, ip) == 0) then
			list[players[tmp]] = ip
		end

		list[pid] = ip
	end

	table.insert(ips, ip)
end

if(table.maxn(list) > 0) then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently online players with same IP address(es):")
	for pid, ip in pairs(list) do
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, getCreatureName(pid) .. " (" .. doConvertIntegerToIp(ip) .. ")")
	end
else
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Currently there aren't any players with same IP address(es).")
end

return true
end

 

 

Desde já agradeço por estar tentando ajudar.

Abraços.

Editado por LuisFelipe
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...