Ir para conteúdo
  • 0

Talkaction Lista jogadores com Vip2 e Multi client Check


CoLoRaDo

Pergunta

Olá, estou usando esse script de talkaction para mostrar a lista de jogadores que possuem vip1(que no caso é por storage).

function onSay(cid, words, param)
local query, msg = db.getResult("SELECT name FROM players WHERE id IN (SELECT player_id FROM player_storage WHERE key = 99999);"), ""
if (query:getID() ~= -1) then
while (true) do
local name = query:getDataString("name")
msg = msg..name.."\n"
if not(query:next()) then
break
end
end
else
return doShowTextDialog(cid, param, "Nobody.")
end
return doShowTextDialog(cid, param, msg) and true
end

Eu gostaria de fazer um comando que mostre a lista de jogadores que tenham vip2(que no caso é em toda conta pela tabela viptime) e não sei como fazer isso.

 

================================================================

 

O outro pedido é um script de talkaction do /mc que checa os jogadores com o mesmo ip, pois ele mostra todos jogadores fora de ordem, e eu gostaria que mostrasse os jogadores com o mesmo ip um em baixo do outro.

 

Grato!

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

salve em talkactions/scripts/ com nome de multicheck.lua

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

<talkaction log="yes" words="/mc" access="5" event="script" value="multicheck.lua"/>

Basta digitar /mc que mostrará todos players que estiverem com mesmo IP

Link para o comentário
Compartilhar em outros sites

  • 0

salve em talkactions/scripts/ com nome de multicheck.lua

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

<talkaction log="yes" words="/mc" access="5" event="script" value="multicheck.lua"/>

Basta digitar /mc que mostrará todos players que estiverem com mesmo IP

 

Ele continua mostrando os jogadores que estão com o mesmo ip fora de ordem.

 

Eu gostaria que ele agrupasse os jogadores com o mesmo ip.

Link para o comentário
Compartilhar em outros sites

  • 0

pode postar o script que lista os jogadores que tem vip1? Pra mim pode vê como que é e editar.

 

É o script que eu postei no meu tópico mesmo.

 

function onSay(cid, words, param)

local query, msg = db.getResult("SELECT name FROM players WHERE id IN (SELECT player_id FROM player_storage WHERE key = 99999);"), ""

if (query:getID() ~= -1) then

while (true) do

local name = query:getDataString("name")

msg = msg..name.."\n"

if not(query:next()) then

break

end

end

else

return doShowTextDialog(cid, param, "Nobody.")

end

return doShowTextDialog(cid, param, msg) and true

end

Link para o comentário
Compartilhar em outros sites

  • 0

Não faço ideia de como o tempo é armazenado nesta tabela, logo supus que, tendo valor superior a zero, a conta seria VIP.

function onSay(cid, words, param)
    local query, vip_players = db.getResult("SELECT id FROM accounts WHERE viptime > 0"), {}
    
    if query:getID() == -1 then return true end
    
    repeat
        local account_info = db.getResult("SELECT name FROM players WHERE account_id = "..query:getDataInt("id"))
        
        if account_info:getID() ~= -1 then      
            repeat          
                table.insert(vip_players, account_info:getDataString("name"))
            until not account_info:next()  
            account_info:free()
        end
    until not query:next() 
    query:free()
    
    doShowTextDialog(cid, param, "VIP players: "..table.concat(vip_players, "\n"))
    return true
end
Editado por zipter98
Link para o comentário
Compartilhar em outros sites

  • 0

 

Não faço ideia de como o tempo é armazenado nesta tabela, logo supus que, tendo valor superior a zero, a conta seria VIP.

function onSay(cid)
    local query, vip_players = db.getResult("SELECT id FROM accounts WHERE viptime > 0"), {}
    
    if query:getID() == -1 then return true end
    
    repeat
        local account_info = db.getResult("SELECT name FROM players WHERE account_id = "..query:getDataInt("id"))
        
        if account_info:getID() ~= -1 then      
            repeat          
                table.insert(vip_players, account_info:getDataString("name"))
            until not account_info:next()  
            account_info:free()
        end
    until not query:next() 
    query:free()
    
    doPlayerPopupFYI(cid, "VIP players: "..table.concat(vip_players, "\n"))
    return true
end

 

Tem como fazer pra mostrar com um showTextDialog igual o da vip1?

 

RtXczqx.png

Link para o comentário
Compartilhar em outros sites

  • 0

OK, editado.

 

Funcionou perfeitamente. Muito obrigado!

 

E sobre o comando do /mc:

Tu saberia como agrupar os que tem o mesmo IP para mostrar um abaixo do outro? pois mostra um que tem IP X ai mostra um que tem IP Y e depois IP X denovo.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...