Ir para conteúdo
Entre para seguir isso  
Chose~*

[7.6~8.2]The Commander|Ferramenta p/ GMs

Recommended Posts

Chose~*    0
Chose~*

Opa, sou eu de novo.

Dessa vez, vim liberar um script que ainda estou desenvolvendo já que é muito grande. Trata-se de um painél que dará diversas ferramentas para o GM trabalhar no servidor com maior facilidade.

 

O que faz isso?

 

Por enquanto por se tratar de uma versão "Alpha", existem poucos recursos dentre eles:

 

  • Informações detalhadas do servidor
  • Informação de um determinado jogador
  • Procura de um item em um jogador (para investigar hacks de itens por exemplo)
  • Configuração e uso amigável

 

A versão 0.1 BETA que deverá sair nesse final de semana ou no próximo terá tudo acima listado e mais:

 

  • Administração de bans
  • Possibilidade de uso de senha
  • Gravação de atividades no log via log
  • Mudanças no sistema in-game
  • Broadcasts de diversas cores

 

Estou aceitando sugestões. Bom, agora vamos ao código:

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-- The Commander 0.1 Alpha Release - By Chose
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Commander = 
{
password = {true, "123"},
log = false, -- not working yet
firstTime = true,
useDeepSearch = TRUE
}

function Commander:new (i)
i = i or {}
setmetatable(i, self)
self.__index = self
return i
end

function Commander:scanItem(cid, itemName, deepSearch)
local targetItem = getItemIdByName(itemName)
if (isPlayer(cid) then
	if (getPlayerItemById(cid, deepSearch, targetItem)) then
		return true
	end
end
end

function Commander:passwordCheck(entry)
if (entry == self.password[2]) then
	return true
end
end

function Commander:writeLog(cid, action)
local file = io.open(getPlayerName(cid), "a+")
file:write("[" .. os.date("%x") .. "] [" ..  os.date("%X") .. "]" .. action)
io.close(file)
end

function Commander:getServerStats()
return serverStats = 
	{
		players = getWorldCreatures(0),
		monsters = getWorldCreatures(1),
		npcs = getWorldCreatures(1),
		uptime = { hours = math.floor(os.clock() / 3600), minutes =  math.ceil((os.clock() - (3600 * hours))/ 60)},
		playerList = getPlayersOnlineList()
	}
end


function Commander:getPlayerStats(cid)
local online = false

if (isPremium(cid) == TRUE) then
	_premium = "Y"
else
	_premium = "N"
end

if (isPlayer(cid) == TRUE) then
	_online = "Y"
else
	_online = "N"
end
if (isPlayer(cid)) then
	return playerStats =
		{
			level = getPlayerLevel(cid),
			magic = getPlayerMagLevel(cid),
			sex = getPlayerSex(cid),
			hp = getCreatureHealth(cid),
			hpMax = getCreatureMaxHealth(cid),
			mp = getPlayerMana(cid),
			mpMax = getPlayerMaxMana(cid),
			premium = _premium,
			online = _online
		}
end
return false
end

--[[
MESSAGE_STATUS_WARNING = 18
MESSAGE_EVENT_ADVANCE = 19
MESSAGE_EVENT_DEFAULT = 20
MESSAGE_STATUS_DEFAULT = 21
MESSAGE_INFO_DESCR = 22
MESSAGE_STATUS_SMALL = 23
MESSAGE_STATUS_CONSOLE_BLUE = 24
MESSAGE_STATUS_CONSOLE_RED  = 25
]]

function Commander:broadcastMessage(type, msg)
local messageColors = {18, 19, 20, 21, 22, 23, 24, 25}
if (isInArray(messageColors, type)) then
	broadcastMessageEx(type, msg)
end
return false
end

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

function onSay(cid, words, param)
local separator = param:find(',') or 0 
if (words == "!commander")
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Welcome to The Commander. Choose what you want to admin:')
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, '1) Server | 2) Players | 3) Item Scan | 4) Banishments | 5) Broadcast | 6) Options'
elseif (words == "1") then
	Commander:getServerStats()
elseif (words == "2") then
	if (separator > 0) then
		if (Commander:getPlayerStats(getPlayerByName(param:sub(1, separator - 1)))) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Level: ' .. Commander:getPlayerStats(cid).level .. ' | Magic: ' .. Commander:getPlayerStats(cid).magic .. ' | Sex: ' .. Commander:getPlayerStats(cid).sex .. ' | HP: ' .. Commander:getPlayerStats(cid).hp .. '/' .. Commander:getPlayerStats(cid).hpMax .. ' | MP: ' .. Commander:getPlayerStats(cid).mp .. '/' .. Commander:getPlayerStats(cid).mpMax .. ' | Premium: ' .. Commander:getPlayerStats(cid).premium .. ' | Online: ' .. Commander:getPlayerStats(cid).online)
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Player not exists or it is not online.')
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Player Manager. Please type "!2, <player name>". E.g: !2, Chose')
	end
elseif (words == "3") then
	if (separator > 0) then
		local targetPlayer, targetItem = param:sub(1, separator - 1), param:sub(separator + 1, param:len())
		if (Commander:scanItem(getPlayerByName(targetPlayer), targetItem, Commander.useDeepSearch)) then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item found.')
		else
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Item not found.')
		end
	else
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Item Scan. Please type "!3, <player name>, <item name>". E.g: !3, Chose, Carlin Sword')
	end
elseif (words == "!4") then	
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Not working yet.')
elseif (words == "!5") then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Not working yet.')
elseif (words == "!6") then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Options Manager')
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Choose what you want to change: A) Enable/Disable Log System |  Enable/Disable Deep Search')
elseif (words == "!A") then
	if (Commander.log) then
		Commander.log = false
	else
		Commander.log = true
	end
elseif (words == "!B") then
	if (Commander.useDeepSearch == TRUE) then
		Commander.useDeepSearch == FALSE
	else	
		Commander.useDeepSearch == TRUE
	end
else
	return false
end
end

 

E em talkactions.xml você adiciona as words: !commander, !1, !2, !3, !4, !5, !6, !A, !B.

 

Lembrando que o script ainda não está 100% mas que os sistemas que listei estão funcionando corretamente. O sistema apenas está faltando coisas que eu ainda irei implementar.

Compartilhar este post


Link para o post
Nord    2
Nord

Apesar de não ter o padrão de postagem é muito útil, após o tópico ser movido edite e coloque o padrão por favor.

 

Realmente muito útil, APROVADO

Compartilhar este post


Link para o post
Mock    32
Mock

gostei porem tem mto comando que na maioria dos ots e bloqueado como io.open~

e tb mtas funçoes ai n existem hj em dia.

mas mesmo assim fico bom vlw.

Compartilhar este post


Link para o post
Majesty    1755
Majesty

Gostei dessa ferramenta, agiliza muito o trabalho de um GM, um amigo meu que tem um ot, será bem a calhar para ele :)

Nunca pensei que fosse sair um script assim como o seu, parabéns pelo trabalho, logo todo mundo que tem um ot 8.2 conseguirá cuidar de um ot com mais rapidez e facilidade.

Idéia: nesse script pode ter também HighScores pois players vivem perguntando quem é o top do ot e isso seria mais fácil in-game.

 

Majesty~

Compartilhar este post


Link para o post
Taviaum    0
Taviaum

Gostaria de saber aonde eu coloco o script. Crio um .lua no talkactions/scripts?

 

Abraços!

Compartilhar este post


Link para o post
[ B a l i l l o ]    0
[ B a l i l l o ]

Interessante! Tem funções ai que ainda são novas para mim, como param:sub (se é que isto é uma função).

 

Agradeceria muito se vc construisse um tutorial baseando-se neste 'The Commander' e explicando toda sua funcionalidade e etc.

 

Grato,

Balillo

Compartilhar este post


Link para o post
MotoBoy    0
MotoBoy

sahuhusa

o pessoal num conhece alguns comando pq ele criou ¬¬"

o script começa como um bancod e dados..

e funciona como uma aprte do global.lua =P

 

ótimo cara

mandou muuuito bem!!!!!

muuuiot util!!

flws

vlw!!

Compartilhar este post


Link para o post
Cotar    0
Cotar

@Chose

num tah faltando algo aki

elseif (words == "1") then

Commander:getServerStats()

elseif (words == "2") then

if (separator > 0) then

if (Commander:getPlayerStats(getPlayerByName(param:sub(1, separator - 1)))) then

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Level: ' .. Commander:getPlayerStats(cid).level .. ' | Magic: ' .. Commander:getPlayerStats(cid).magic .. ' | Sex: ' .. Commander:getPlayerStats(cid).sex .. ' | HP: ' .. Commander:getPlayerStats(cid).hp .. '/' .. Commander:getPlayerStats(cid).hpMax .. ' | MP: ' .. Commander:getPlayerStats(cid).mp .. '/' .. Commander:getPlayerStats(cid).mpMax .. ' | Premium: ' .. Commander:getPlayerStats(cid).premium .. ' | Online: ' .. Commander:getPlayerStats(cid).online)

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, 'Player not exists or it is not online.')

end

else

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_RED, 'Player Manager. Please type "!2, <player name>". E.g: !2, Chose')

end

elseif (words == "3") then

if (separator > 0) then

 

ou estou equivocado?

 

grande abraço!

Compartilhar este post


Link para o post
GM_Elnight    0
GM_Elnight

Muito util mesmo...

adorei essa ideia...

continue desenvolvendo esse script.Que tenho crteza que irá se tornar padrão nos otservs

 

obrigado!

Compartilhar este post


Link para o post
Elys Zarox    0
Elys Zarox

nossa bem util e interessante aprovadissimo vlw ai por colaborar com agente

Compartilhar este post


Link para o post
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×