🔀Command
Documentação da Classe Commands
A classe Commands é usada para processar comandos de jogadores, permitindo extrair números ou strings de argumentos fornecidos. Esta documentação explica as funções de forma clara, intuitiva e com exemplos práticos para facilitar o uso.
Como Usar a Classe Commands
Declaração: A classe
Commandsjá está declarada no arquivoGameServer.lua, então não é necessário declará-la novamente. Use diretamente o objetocommandspara acessar suas funções.Uso de Funções: As funções são chamadas com a sintaxe
commands:função(argumentos), onde os argumentos geralmente são a string do comando digitada pelo jogador.Observação:
Os comandos são baseados nos argumentos fornecidos pelo jogador, e as funções ajudam a extrair números ou strings de posições específicas na string do comando.
Os comandos são registrados usando
Commands.Register, associando um comando a uma função personalizada.
Funções da Classe Commands
Abaixo estão as funções disponíveis, explicadas de forma simples com exemplos práticos:
1. getNumber(String, Position)
getNumber(String, Position)Descrição: Extrai um número da string do comando na posição especificada. Cada posição é separada por espaços.
Exemplo:
local number = commands:getNumber("addmonster 500 3", 1) -- Extrai o número na posição 1 (500) LogAdd(string.format("[Command] - Número extraído na posição 1: %d", number), 0)
2. getString(String, Position, FullString)
getString(String, Position, FullString)Descrição: Retorna a string na posição especificada da string do comando. Se
FullStringfortrue, retorna a string completa (sem o comando inicial).Exemplo:
local str = commands:getString("say hello world", 1, false) -- Extrai "hello" LogAdd(string.format("[Command] - String extraída na posição 1: %s", str), 0) local fullStr = commands:getString("say hello world", 0, true) -- Extrai "hello world" LogAdd(string.format("[Command] - String completa: %s", fullStr), 0)
Como Criar um Comando
Os comandos são criados em scripts Lua, geralmente em arquivos separados, e registrados com Commands.Register. Abaixo está um exemplo de como criar e registrar um comando personalizado.
Estrutura de um Comando
Função do Comando: Recebe o índice do jogador (
aIndex) e os argumentos do comando (Args).Verificações: Valide permissões (ex.: nível de Game Master) e configurações antes de executar a lógica.
Registro: Use
Commands.Register(nomeComando, função)para associar o comando à função.
Exemplo Prático Completo
Abaixo está um exemplo fictício que cria um comando para invocar monstros no mapa do jogador, usando as funções da classe Commands. Este código verifica permissões, extrai argumentos e realiza ações com base nos dados fornecidos.
-- Sistema de invocação de monstros
MONSTER_SPAWN = {}
function MONSTER_SPAWN.Command(aIndex, Args)
-- Cria um objeto User para o jogador
local player = User.new(aIndex)
local playerName = player:getName()
-- Verifica se o comando está ativado
if MONSTER_SPAWN_COMMAND_SWITCH == 0 then
SendMessage(string.format("O comando não está ativado."), aIndex, 1)
LogAdd(string.format("[MonsterSpawn] - [%s] tentou usar o comando, mas está desativado", playerName), 0)
return
end
-- Verifica permissão de Game Master
if CheckGameMasterLevel(player:getAccountID(), playerName, MONSTER_SPAWN_COMMAND_GAME_MASTER_LEVEL) == 0 then
SendMessage(string.format("Você não tem permissão para usar este comando."), aIndex, 1)
LogAdd(string.format("[MonsterSpawn] - [%s] não tem permissão para usar o comando", playerName), 0)
return
end
-- Obtém informações do jogador
local map = player:getMapNumber()
local x = player:getX()
local y = player:getY()
-- Extrai argumentos do comando
local monsterClass = commands:getNumber(Args, 1) -- Classe do monstro
local quantity = commands:getNumber(Args, 2) -- Quantidade de monstros
-- Loga os argumentos extraídos
LogAdd(string.format("[MonsterSpawn] - [%s] invocando monstro classe %d, quantidade: %d", playerName, monsterClass, quantity), 0)
-- Invoca os monstros
if quantity > 0 then
for i = 1, quantity do
local monster = AddMonster(map)
SetMapMonster(monster, map, math.floor(x + math.random(-2, 2)), math.floor(y + math.random(-2, 2)))
SetMonster(monster, monsterClass)
end
LogAdd(string.format("[MonsterSpawn] - [%s] invocou %d monstro(s) da classe %d", playerName, quantity, monsterClass), 0)
else
local monster = AddMonster(map)
SetMapMonster(monster, map, x, y)
SetMonster(monster, monsterClass)
LogAdd(string.format("[MonsterSpawn] - [%s] invocou 1 monstro da classe %d", playerName, monsterClass), 0)
end
end
-- Registra o comando
Commands.Register(MONSTER_SPAWN_COMMAND, MONSTER_SPAWN.Command)
return MONSTER_SPAWNResumo
A classe
Commandssimplifica a extração de números (getNumber) e strings (getString) de comandos digitados pelos jogadores.Os comandos são registrados com
Commands.Register, associando um nome a uma função personalizada.O exemplo prático mostra como criar um comando para invocar monstros, verificando permissões, extraindo argumentos e logando ações com
LogAdd.
Last updated
