Ir para conteúdo

The Commander 0.1 Alpha


Chose

Posts Recomendados

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 | B) 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.

Link para o comentário
Compartilhar em outros sites

Como vai Lucas?

Achei seu sistema legal (também né, quem ensinou? hehehe brincadeira) e bem criativo, quando estiver pronto ficará realmente bom. Continue assim.

 

A respeito das dúvidas com I/O acho que você conseguiu né? Não vai mais precisar de mim :p

 

Novamente, meus parabéns.

Link para o comentário
Compartilhar em outros sites

  • 4 months later...
×
×
  • Criar Novo...