PT-BR/Recursos:Map Manager: Difference between revisions
m (moved PT-BR/Map manager to Resource:PT-BR/Map manager: Fix mistakes.) |
m (moved Resource:PT-BR/Map manager to PT-BR/Recursos:Map manager: Trying to fix a page bug.) |
Revision as of 20:30, 31 July 2012
O map manager é um recurso que já está incluido na instalação do servidor. Ele oferece comandos, funções e eventos para que gamemodes administrem dinamicamente seus mapas. Por exemplo, quando um servidor de corrida precisa carregar mapas diferentes para cada partida, em vez de armazenar todos esses mapas em um único recurso, estes podem ser amarzenados em recursos separados e carregados com uma função simples, chamada de "changeGamemodeMap".
Esta ferramenta faz uma lista de gamemodes/mapas e gerencia o carregamento destes no servidor. Com base em certas informações, contidas em cada mapa, o map manager afeta o mundo do jogo (exemplo: o nível do mar ou a gravidade), afeta o gamemode em execução e altera o nome do mapa que está vigorando no momento. Está incluido também uma ferramenta para disponibilizar em tempo real, via a um website, o mapa e o gamemode que estão sendo execultados no momento.
Um simples tutorial
Nesta sessão iremos incrementar o gamemode básico que criamos no artigo Introdução ao Scripting. Primeiramente, vamos criar um recurso que funciona como um simples mapa contendo um spawnpoint e vamos fazer com que o script de nosso gamemode criado anteriormente carregue estes dados para que os jogadores possam nascer.
Para começar, criemos uma pasta em /server/mods/deathmatch/resources/[gamemodes]/[meu_gamemode]/[maps]/, e vamos nomea-la como "meu_mapa". Dentro da pasta "meu_mapa", crie um arquivo com o bloco de notas chamado "meta.xml", o qual é requisito existir em todos os recursos.
Copie as seguintes linhas para o arquivo "meta.xml":
<meta> <info type="map" gamemodes="meu_gamemode"/> <map src="mymap.map"/> </meta>
- A marcação info type="" indica o que seu recurso é: um script, gamemode ou mapa.
- Note que este mapa está "ligado" ao nosso recurso devido a definição gamemodes="", a qual contém o nome do mesmo.
- A marcação map src="" indica qual é o nome do arquivo do tipo .map que vai conter os dados dos posicionamentos de spawnpoints, objetos ou pickups no mundo do GTA.
Agora vamos criar um outro arquivo na mesma pasta chamado "meumapa.map", e escrever as seguintes linhas dentro dele:
<map> <spawnpoint id="spawnpoint1" posX="1959.5487060547" posY="-1714.4613037109" posZ="18" rot="63.350006103516" model="0"/> </map>
O "spawnpoint" é um tipo de um elemento usado pela função getElementsByType, tanto como "id" é usada pela função getElementByID.
Para carregar os dados do mapa, o nosso script precisa ter acesso ao mapa de fato. Então editemos nosso script.lua de nosso gamemode adicionando as seguintes linhas:
function loadMap(startedMap) mapRoot = getResourceRootElement(startedMap) end addEventHandler("onGamemodeMapStart", getRootElement(), loadMap)
- Basicamente, o evento "onGamemodeMapStart" nos dá as informações do seguinte mapa ("startedMap") fornecido pelo recurso que nós temos o controle.
function joinHandler() local spawn = getElementsByType("spawnpoint", mapRoot) local x,y,z,r for key, value in pairs(spawn) do x = getElementData(value, "posX") y = getElementData(value, "posY") z = getElementData(value, "posZ") r = getElementData(value, "rot") end spawnPlayer(source, x, y, z) fadeCamera(source, true) end
- Com o tal recurso "em mãos", vamos extrair as informações do spawnpoint (posição, rotação, skin do personagem...). Dê uma olhada na função joinHandler(). Em vez de especificar as cordenadas x, y e z, usamos as que estão contidas no mapa extraido.
Agora vamos, via o console do servidor (MTAserver.exe), iniciar o nosso gamemode com o seguinte comando:
gamemode myserver mymap
Voilà, nascemos exatamente no local onde está posicionado o spawnpoint. Se quiser expandir seus conhecimentos para desenolver mais o seu gamemode é ensenssial que você explore nossa Página Inicial e visite o nosso Fórum para tirar suas dúvidas ou fazer sugestões.
Uso
Para usar o map manager, seus recursos precisam ser marcados como gamemodes ou mapas.
Se seu recurso for um gamemode, devemos informar isso ao nosso servidor, usando a marcação type na sessção info:
<info description="Nosso gamemode" type="gamemode" />
Se seu recurso for um mapa ele precisa tanto da marcação type="map", como também da marcação gamemodes="...", onde os "..." seriam os gamemodes compatíveis com o mapa. Estes precisam ser separados com virgula e sem espaços.
<info description="Um mapa para o nosso gamemode" type="map" gamemodes="ctv,koth" />
- Lembrando que a marcação description serve para você adicionar uma descrição para seu recurso.
Só pode haver um gamemode e um mapa rodando no servidor.
Marcações opicionais
Se você desejar, podes adicionar as seguintes informações na sessão info:
name: Esta informação serve para você adicionar um nome amigável para seu mapa ou gamemode em vez de ser disponibilizado o nome do arquivo/pasta para os jogadores:
<info description="Um mapa para o nosso gamemode" type="map" gamemodes="ctv,koth" name="[Race]Nosso Mapa" />
Comandos
changemap novomapa [novogamemode] (muda o mapa para o qual você deseja. É opicional também mudar o gamemode)
changemode novogamemode [novomapa] (muda para um novo gamemode. É opicional começar um mapa com ele)
gamemode newgamemode [newmap] (tem a mesma função da anterior)
stopmode (para o atual gamemode e mapa)
stopmap (para o mapa atual)
maps [gamemode] (lista todos os mapas instalados no servidor. É opicional também listar somente aqueles que são compatíveis com o gamemode específicado)
gamemodes (lista todos os gamemodes)
Configurações
*mapmanager.color [as cores em hexadecimal] (muda a cor das mensagens do mapmanager. Por padrão é: #E1AA5A)
*mapmanager.messages [boolean] (Indica se o mapmanager pode enviar uma mensagem a todos a cada vez que um mapa/gm muda. Por padrão é: ture (verdadeiro).
*mapmanager.ASE [boolean] (Permite que a ferramenta automaticamente publique o gamemode/mapa atual para todos os jogadores que estão na janela Browser ou no site da gamemonitor. Por padrão é: ture)
Funções
- Essas são as funções que o mapmamanger oferece para ser usado em seu script.
bool changeGamemode ( resource novoGamemode, [ resource mapaParaCarregar ] )
Muda o gamemode atual para um novo (novoGamemode). É opicional especificar um mapa (mapaParaCarregar) para carregar junto a ele, pois o gamemode vai iniciar sozinho (sem um mapa junto).
bool changeGamemodeMap ( resource novoMapa, [ resource gamemodeParaCarregar ] )
Muda o mapa atual para um novo (novoMapa). É opicional especificar um gamemode (gamemodeParaCarregar) para carregar junto a ele, caso o contrário, o mapa vai carregar sem afetar o gamemode em execulção.
table getGamemodes ( )
Retorna uma tabela com todos os gamemodes disponíveis.
table getGamemodesCompatibleWithMap ( resource oMapa )
Retorna uma tabela com os gamemodes compatíveis com o mapa especificado (oMapa).
table getMaps ( )
Retorna uma tabela com todos os mapas disponíveis.
table getMapsCompatibleWithGamemode ( [ resource oGamemode ] )
Retorna uma tabela com os mapas compatíveis com o gamemode especificado (oGamemode). Se o gamemode não for especificado, o resultado será aqueles mapas que não são compatíveis com nenhum gamemode.
resource getRunningGamemode ( )
Retorna o gamemode que está rodando no servidor.
resource getRunningGamemodeMap ( )
Retorna o mapa que está rodando no servidor.
bool isGamemode ( resource oGamemode )
Verifica se o gamemode especificado (oGamemode) está rodando ou não.
bool isGamemodeCompatibleWithMap ( resource oGamemode, resource oMapa )
Verifica se o gamemode (oGamemode) especificado é compatível com um mapa (oMapa) ou não.
bool isMap ( resource oMapa )
Verifica se o recurso especificado (oMapa) é um mapa ou não.
bool isMapCompatibleWithGamemode ( resource oMapa, resource oGamemode )
Verifica se o mapa especificado (oMapa) é compatível com um gamemode (oGamememode) ou não.
bool stopGamemode ( )
Para de execultar o gamemode e o seu mapa.
bool stopGamemodeMap ( )
Para de execultar somente o mapa.
Eventos
Para todos esses eventos, "source" equivale a todos os recursos que estão rodando no servidor.
onGamemodeStart ( resource oGamemodeQueComeçou )
O evento é ativado depois que um gamemode é iniciado.
onGamemodeStop ( resource oGamemodeQueParou )
O evento é ativado depois que um gamemode é parado.
onGamemodeMapStart ( resource oMapaQueComeçou )
O evento é ativado depois que um mapa é iniciado.
onGamemodeMapStop ( resource oMapaQueParou )
O evento é ativado depois que um mapa é parado.
Configurações suportadas
Todo mapa pode ser configurado para alterar o comportamento do mundo do jogo, como a gravidade, a hora, o clima, o número mínimo/máximo de jogadores que podem jogar e entre outros. Isso só é possivel mediante ao sistema de preferências feito justamente para que os usuários possam customizar de uma maneira mais facil o comportamento dos recursos. A maioria dos recursos que já vem instalados já contam com um GUI pronto para adicionar estas informações no meta.xml de uma maneira mais rápida.
gamespeed [number]: The map's game speed.
gravity [number]: The map's gravity.
time [string of the form hh:mm]: The map's time.
weather [number]: The map's weather ID.
waveheight [number]: The map's wave height.
locked_time [boolean]: Whether the set time will be frozen by the manager or not.
minplayers [number]: The required minimum number of players to start the map.
maxplayers [number]: The allowed maximum number of players to start the map.