Jump to content
Close
Matheuus

Scripting [PEDIDO] Script de !support

Recommended Posts

Boa noite galera, gostaria de pedir uma script que ao digitar !support exibisse todos os nomes da staff e falasse se está online ou offline.

 

Um exemplo:

11.png.0da1ddc583ca9d711594d5d38e58d973.png

TFS 0.4

 

REP++


Edited by Matheuus (see edit history)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other 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.


Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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>


Edited by Matheuus (see edit history)

Share this post


Link to post
Share on other 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

 



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

ALGUNS DOS MEUS TRABALHOS:

Spoiler

WODBOHS[DOWNLOAD DISPONIVEL EM OUTRO FÓRUM]

Newstory dbo+nto+bleach[DOWNLOAD DISPONIVEL EM OUTRO FÓRUM]

 

- Projetos lançados também feitos por mim {

DBO SKY

POKE SKY

WODBOWARS

Tic-tac-War

Dbo Universe(em desenvolvimento)

}

universe.png.579c2e3c78f88666e1ffda5e74db4516.png

 

Te Ajudei? Rep + e ficamos Quits

166420979_logoyanliimaornight.png.33f822b8970081a5b3646e85dbfd5934.png

Precisando de ajuda?

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

Mini programador de LUA, PHP e JavaScript

Juntos somos lendas, separados somos Mitos!

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

Share this post


Link to post
Share on other 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


Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other 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


Edited by Matheuus (see edit history)

Share this post


Link to post
Share on other 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.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other 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!


Share this post


Link to post
Share on other sites

@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?


Edited by Matheuus (see edit history)

Share this post


Link to post
Share on other 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.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other 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


Edited by Matheuus (see edit history)

Share this post


Link to post
Share on other 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(_)
			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.*]

 

Dota System 8.6 Com Buffs Automáticos + MAPA (100%) - PVP

Link para Downloadhttps://www.4shared.com/rar/SMta8CQ8fi/Dota_Venda.html?

[+]--------------------------------------[+]-------------------------------------------[+]

 

DISCORDvodkart#6090

 

Share this post


Link to post
Share on other 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


Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Open Tibia Server

Quer aprender a criar seu próprio servidor de Tibia? Então está no lugar certo, aqui você encontrará milhares de tutorias, scripts, códigos, mapas e utilitários para que você possa fazer o seu próprio servidor de Tibia partindo do zero.

Redes Sociais

Anuncie no Tibia King

Precisa de mais visibilidade em seus projetos? Quer publicidade para o seu servidor? Anuncie no Tibia King e faça sua divulgação, possuímos centenas de acessos simultâneos e milhares diários, com certeza será a sua solução! A publicação do seu anuncio é instantânea!

×
×
  • Create New...