Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Script de !support


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Cria a talkaction no xml e referencia pra um arquivo lua com o seguinte código:

-- by Nazo (tibiaking.com)

local function getStaffPlayers()
	return db.getResult("SELECT name FROM `players` WHERE `access` >= 2;")
end

function onSay(cid, words, param, channel)
	staff = getStaffPlayers()
	text = "Equipe:\n"
	for _, name in ipairs(staff) do
		text = text .. "Nome: " .. name .. " | Status: "
		if (isPlayer(getCreatureByName(name))) then
			text = text .. "Online\n"
		else
			text = text .. "Offline\n"
		end
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
	return true
end

 

Escrevi sem testar, caso algo dê errado, me informe.

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Link para o post
Compartilhar em outros sites
2 horas atrás, Nazo disse:

Cria a talkaction no xml e referencia pra um arquivo lua com o seguinte código:


-- by Nazo (tibiaking.com)

local function getStaffPlayers()
	return db.getResult("SELECT name FROM `players` WHERE `access` >= 2;")
end

function onSay(cid, words, param, channel)
	staff = getStaffPlayers()
	text = "Equipe:\n"
	for _, name in ipairs(staff) do
		text = text .. "Nome: " .. name .. " | Status: "
		if (isPlayer(getCreatureByName(name))) then
			text = text .. "Online\n"
		else
			text = text .. "Offline\n"
		end
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
	return true
end

 

Escrevi sem testar, caso algo dê errado, me informe.

 

Não deu certo. Deu um erro de mysql, mas troquei o acces por group_id e o erro saiu. Porém não exibe o nome dos admins, apenas aparece Equipe:. E não exibe nenhum erro.

Link para o post
Compartilhar em outros sites

Eu havia errado no group_id mesmo, perdão.

Testa agora:

-- by Nazo (tibiaking.com)

local function getStaffPlayers()
	query = db.getResult("SELECT `name` FROM `players` WHERE `group_id` >= 2;")
	return query:getDataString("name")
end

function onSay(cid, words, param, channel)
	staff = getStaffPlayers()
	text = "Equipe:\n"
	for _, name in ipairs(staff) do
		text = text .. "Nome: " .. name .. " | Status: "
		if (isPlayer(getCreatureByName(name))) then
			text = text .. "Online\n"
		else
			text = text .. "Offline\n"
		end
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
	return true
end

 

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Link para o post
Compartilhar em outros sites
5 horas atrás, Nazo disse:

Eu havia errado no group_id mesmo, perdão.

Testa agora:


-- by Nazo (tibiaking.com)

local function getStaffPlayers()
	query = db.getResult("SELECT `name` FROM `players` WHERE `group_id` >= 2;")
	return query:getDataString("name")
end

function onSay(cid, words, param, channel)
	staff = getStaffPlayers()
	text = "Equipe:\n"
	for _, name in ipairs(staff) do
		text = text .. "Nome: " .. name .. " | Status: "
		if (isPlayer(getCreatureByName(name))) then
			text = text .. "Online\n"
		else
			text = text .. "Offline\n"
		end
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
	return true
end

 

 

O comando agora n funciona, quando tento usar da esse erro na distro:

[12/12/2018 20:29:20] [Error - TalkAction Interface] 
[12/12/2018 20:29:20] data/talkactions/scripts/support.lua:onSay
[12/12/2018 20:29:20] Description: 
[12/12/2018 20:29:20] data/talkactions/scripts/support.lua:9: bad argument #1 to 'ipairs' (table expected, got string)
[12/12/2018 20:29:20] stack traceback:
[12/12/2018 20:29:20]     [C]: in function 'ipairs'
[12/12/2018 20:29:20]     data/talkactions/scripts/support.lua:9: in function <data/talkactions/scripts/support.lua:6>

Editado por Matheuus (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Estou meio enferrujado, tenta ai:

-- by Yan Liima(Night for Tibiaking.com)

function onSay(cid, words, param, channel)
local staff = db.getResult("SELECT name, online FROM players WHERE group_id >= 2;")
local name = staff:getDataString("name")
local online = staff:getDataInt("online")

if isPlayer(getCreatureByName(name)) then
	msg = "Nome : " .. name .. " | Status: [".. (online == 1 and "Online" or "Offline") .."]\n"
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg)
	return true
end

 

════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═══╗

Te Ajudei? Rep + e ficamos Quits

166420979_logoyanliimaornight.png.33f822b8970081a5b3646e85dbfd5934.png

Precisando de ajuda?

discord.png.1ecd188791d0141f74d99db371a2e0a4.png.890d5a38d7bcde75543c72b624a65de1.pngDiscord: Yan Liima #3702

Programador Júnior de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

╚══════════════════════════ҳ̸Ҳ̸ҳஜ۩۞۩ஜҳ̸Ҳ̸ҳ═════════════════════════════╝

Link para o post
Compartilhar em outros sites
26 minutos atrás, Yan Liima disse:

Estou meio enferrujado, tenta ai:


-- by Yan Liima(Night for Tibiaking.com)

function onSay(cid, words, param, channel)
local staff = db.getResult("SELECT name, online FROM players WHERE group_id >= 2;")
local name = staff:getDataString("name")
local online = staff:getDataInt("online")

if isPlayer(getCreatureByName(name)) then
	msg = "Nome : " .. name .. " | Status: [".. (online == 1 and "Online" or "Offline") .."]\n"
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, msg)
	return true
end

 

 

 

Caracaa por um momento achei que deu certo. Teve apenas um pequeno problema. Ele exibe tudo certinho porem só aparece o nome do primeiro ADM da database, n aparece todos que tem. E quando desloga o adm ainda fica aparecendo "Online". E se poder poderia por uma msg caso nao houvesse nenhum adm na database. E bem vindo de volta kkkk agradeço pela ajuda.

@Yan Liima @Nazo é com vcs <3

Link para o post
Compartilhar em outros sites

Vê agora:

-- by Nazo (tibiaking.com)

local function getStaffPlayers()
	local query = db.storeQuery("SELECT `name` FROM `players` WHERE `group_id` >= 2;")
	return query
end

function onSay(cid, words, param, channel)
	local staff = getStaffPlayers()
	if staff ~= false then
		text = "Equipe:\n"
		repeat
			text = text .. "Nome: " .. result.getDataInt(staff, "name") .. " | Status: " .. isPlayer(getCreatureByName(result.getDataInt(staff, "name"))) and "Online" or "Offline"
		until not result.next(staff)
		result.free(staff)
	else
		text = "Não há staffs cadastrados no banco de dados."
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
	return true
end

 

Programador PHP, Lua, Java, database administrator.

 

"Nada é verdade, tudo é permitido."

Requiescat in pace.

Link para o post
Compartilhar em outros sites
local min_group_id = 1 -- aqui vai contar a partir do 2, 3, 4 ...
function onSay(cid, words, param, channel)
    local query, str = db.getResult("SELECT `name`, `group_id` FROM `players` WHERE `group_id` > "..min_group_id), "--> STAFF <--\n\n[Group]Nick | Status\n"
    if (query:getID() ~= -1) then
        repeat
            local _ = query:getDataString("name")
            local target_online = getPlayerByNameWildcard(_)
            str = str .. "\n ["..getGroupInfo(query:getDataInt("group_id")).name.."]".._.." | "..(not isPlayer(target_online) and "Offline" or "Online")
        until not(query:next())
        query:free()
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)
    return true
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
5 horas atrás, Nazo disse:

Vê agora:


-- by Nazo (tibiaking.com)

local function getStaffPlayers()
	local query = db.storeQuery("SELECT `name` FROM `players` WHERE `group_id` >= 2;")
	return query
end

function onSay(cid, words, param, channel)
	local staff = getStaffPlayers()
	if staff ~= false then
		text = "Equipe:\n"
		repeat
			text = text .. "Nome: " .. result.getDataInt(staff, "name") .. " | Status: " .. isPlayer(getCreatureByName(result.getDataInt(staff, "name"))) and "Online" or "Offline"
		until not result.next(staff)
		result.free(staff)
	else
		text = "Não há staffs cadastrados no banco de dados."
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text)
	return true
end

 

 

O seu deu erro:

Spoiler

[Error - TalkAction Interface] 
[13/12/2018 13:7:38] data/talkactions/scripts/support.lua:onSay
[13/12/2018 13:7:38] Description: 
[13/12/2018 13:7:38] data/talkactions/scripts/support.lua:13: attempt to concatenate a boolean value
[13/12/2018 13:7:38] stack traceback:
[13/12/2018 13:7:38]     data/talkactions/scripts/support.lua:13: in function <data/talkactions/scripts/support.lua:8>

 

3 horas atrás, Vodkart disse:

local min_group_id = 1 -- aqui vai contar a partir do 2, 3, 4 ...
function onSay(cid, words, param, channel)
    local query, str = db.getResult("SELECT `name`, `group_id` FROM `players` WHERE `group_id` > "..min_group_id), "--> STAFF <--\n\n[Group]Nick | Status\n"
    if (query:getID() ~= -1) then
        repeat
            local _ = query:getDataString("name")
            local target_online = getPlayerByNameWildcard(_)
            str = str .. "\n ["..getGroupInfo(query:getDataInt("group_id")).name.."]".._.." | "..(not isPlayer(target_online) and "Offline" or "Online")
        until not(query:next())
        query:free()
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)
    return true
end

 

 

O seu funcionou perfeitamente REP+ tu é um Deus kkkk obrigado

Só uma pergunta, eu fiz um test aqui e ele está apenas exibindo o maximo 12 jogadores, tem como por para exibir mais? tipo, todos os que estiver na staff mesmo

 

ahh e agradeço a ajuda do @Nazo e do @Yan Liima tmj galera

Editado por Matheuus (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Matheuus 

Tente trocar essa linha:

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)

por

 

doShowTextDialog(cid, 8304, str)

 

ou também você pode usar 

 

esta função

 

doPlayerPopupFYI(cid, str)

 

 

lembrando que as funções "doPlayerSendTextMessage" e "doPlayerPopupFYI" tem limite de caracteres.

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
40 minutos atrás, Vodkart disse:

@Matheuus 

Tente trocar essa linha:


doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)

por

 


doShowTextDialog(cid, 8304, str)

 

ou também você pode usar 

 

esta função

 


doPlayerPopupFYI(cid, str)

 

 

lembrando que as funções "doPlayerSendTextMessage" e "doPlayerPopupFYI" tem limite de caracteres.

 

 

Ahh eu prefiro por 

doPlayerSendTextMessage

Mas blz nao sabia que tinha essa de limite de caracteres. De qualquer forma muito obrigado, continue assim tu manja muito amigo, otimo script!

Link para o post
Compartilhar em outros sites
  • 5 weeks later...

@Vodkart so uma pequena duvida. Percebi que se o adm tivesse com ghost mesmo assim no comando exibia que ele estava online

Entao troquei:

"..(not isPlayer(target_online) and "Offline" or "Online")

por

"..(not isPlayerGhost(target_online) and "Offline" or "Online")

no caso o ghost funcionaria mas daria problema em verificar se o jogador esta realmente off ne?

Editado por Matheuus (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

@Matheuus 

 

local min_group_id = 1 -- aqui vai contar a partir do 2, 3, 4 ...
function onSay(cid, words, param, channel)
    local query, str = db.getResult("SELECT `name`, `group_id` FROM `players` WHERE `group_id` > "..min_group_id), "--> STAFF <--\n\n[Group]Nick | Status\n"
    if (query:getID() ~= -1) then
        repeat
            local _ = query:getDataString("name")
            local target_online = getPlayerByNameWildcard(_)
            str = str .. "\n ["..getGroupInfo(query:getDataInt("group_id")).name.."]".._.." | "..(isPlayerGhost(target_online) or not isPlayer(target_online) and "Offline" or "Online")
        until not(query:next())
        query:free()
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)
    return true
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart ao dar reload nao exibe nenhum erro, mas ao tentar usar o comando com eu estando de ghost da esse ero:

[Error - TalkAction Interface] 
data/talkactions/scripts/support.lua:onSay
Description: 
data/talkactions/scripts/support.lua:8: attempt to concatenate a boolean value
stack traceback:
data/talkactions/scripts/support.lua:8: in function <data/talkactions/scripts/support.lua:2>

E nao aparece nada. Mas quando to sem ghost funciona normal

Editado por Matheuus (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

@Matheuus 

local min_group_id = 1 -- aqui vai contar a partir do 2, 3, 4 ...
function onSay(cid, words, param, channel)
	local query, str = db.getResult("SELECT `name`, `group_id` FROM `players` WHERE `group_id` > "..min_group_id), "--> STAFF <--\n\n[Group]Nick | Status\n"
	if (query:getID() ~= -1) then
		repeat
			local _ = query:getDataString("name")
			local target_online = getPlayerByNameWildcard(_)
			if (not target_online or (isPlayerGhost(target_online) and getPlayerGhostAccess(target_online) > getPlayerGhostAccess(cid))) then
				status = "Offline"
			else
				status = "Online"
			end
			str = str .. "\n ["..getGroupInfo(query:getDataInt("group_id")).name.."]".._.." | "..status
		until not(query:next())
		query:free()
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)
	return true
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites
3 horas atrás, Vodkart disse:

@Matheuus 


local min_group_id = 1 -- aqui vai contar a partir do 2, 3, 4 ...
function onSay(cid, words, param, channel)
	local query, str = db.getResult("SELECT `name`, `group_id` FROM `players` WHERE `group_id` > "..min_group_id), "--> STAFF <--\n\n[Group]Nick | Status\n"
	if (query:getID() ~= -1) then
		repeat
			local _ = query:getDataString("name")
			local target_online = getPlayerByNameWildcard(_)
			if (not target_online or (isPlayerGhost(target_online) and getPlayerGhostAccess(target_online) > getPlayerGhostAccess(cid))) then
				status = "Offline"
			else
				status = "Online"
			end
			str = str .. "\n ["..getGroupInfo(query:getDataInt("group_id")).name.."]".._.." | "..status
		until not(query:next())
		query:free()
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, str)
	return true
end

 

 

Aff tu é um Deus. I love you! <3

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo