TUTORIAL DUEL SYSTEM PARA POKEMON
Passos: (São 6)
1 - Recursos Necessários
2 - Instalar as funções na source
3 - Adicionar os controles na source
4 - Compilar a source
5 - Instalar o controle no servidor
6 - Configurando duelconfig.xml
RECURSOS NECESSÁRIOS (DOWNLOADS)
StiansDevCppRepack v2 - Clique para baixar
KronoX Duel Repack v1.1 - Clique para baixar
Ter sua source(distro) em mãos - Download Versão 8.54 -
Versões
Versão v1.0 : Versão Inicial do sistema Versão v1.1 : Tentativa de correção de bugs no Party.cpp
INSTALANDO AS FUNÇÕES NECESSÁRIAS NA SOURCE
Abra sua source(distro) no Dev-C++. PS (Se seu SO for windows 7 abra-o como administrador)
Vá ao arquivo luascript.cpp
Depois da linha:
lua_register(m_luaState,"doPlayerJoinParty",LuaScriptInterface::luaDoPlayerJoinParty);
Adicione:
//doPlayerLeaveParty(cid)
lua_register(m_luaState,"doPlayerLeaveParty",LuaScriptInterface::luaDoPlayerLeaveParty);
E depois da linha:
int32_t LuaScriptInterface::luaDoPlayerJoinParty(lua_State* L)
Adicione:
int32_t LuaScriptInterface::luaDoPlayerLeaveParty(lua_State* L)
{
//doPlayerLeaveParty(cid)
ScriptEnviroment* env = getEnv();
Player* player = env->getPlayerByUID(popNumber(L));
if(!player)
{
errorEx(getError(LUA_ERROR_PLAYER_NOT_FOUND));
lua_pushboolean(L, false);
}
g_game.playerLeaveParty(player->getID());
lua_pushboolean(L, true);
return 1;
}
Após isso abra o arquivo luascript.h
Depois da linha:
static int32_t luaDoPlayerJoinParty(lua_State* L);
Adicione:
static int32_t luaDoPlayerLeaveParty(lua_State* L);
ADICIONANDO OS CONTROLES NA SOURCE
Em seu Dev-C++ com sua source carregada navegue no canto esquerdo até encontrar um arquivo chamado Party.cpp .
Clique com o lado direito nesse Party.CPP e clique em "Remove File" .
Feito isso vá na aba Project , clique em Add to project e selecione o arquivo chamado Party.CPP que se encontra dentro do KronoX Duel Repack(Seção Downloads), e de Abrir.
COMPILANDO SUA SOURCE
Após fazer todos os passos anteriores vá na aba File e Clique Em Save All.
Após isso aperte CTRL + F11 e aguarde até que sua source seja compilada.
INSTALANDO CONTROLE NO SERVIDOR
Abra a pasta data/creaturescripts e abra o arquivo creaturescripts.xml
Abaixo de <creaturescripts> Adicione:
<event type="think" name="duelsys" event="script" value="duel.lua"/>
<event type="death" name="dueldie" event="script" value="dueldie.lua"/>
Depois, onde está localizado esse creaturescripts.xml tera uma pasta chamada scripts.
Abra essa pasta e abra o arquivo login.lua.
Nesse arquivo depois da linha:
registerCreatureEvent(cid, "onPrepareDeath")
Adicione:
registerCreatureEvent(cid, "duelsys")
Salve e feche o arquivo.
Nessa mesma pasta tera um arquivo chamado logout.lua. Abra ele.
Apos a linha:
function onLogout(cid, forceLogout)
Adicione:
function getDuelConfig(name)
local configFile = io.open('data/creaturescripts/scripts/duelconfig.xml','r')
if not configFile then
return 100
end
local maximo = configFile:read(-1):lower():match(''..name..'='..name:lower()..'')
data:close()
return maximo
end
local battlex = getDuelConfig('battleStorage')
if getPlayerStorageValue(cid, battlex) == 1 then
doPlayerSendTextMessage(cid, 27, "Sorry, you cant logout if you are in a duel!")
return false
end
Salve e feche o arquivo.
Após isso abra a pasta data/actions/scripts e abra o arquivo goback.lua (nome provavel do seu goback). OBS: Se tiver mais de um arquivo de goback (great ball/master etc..) repita este processo a seguir em todos eles.
Procure por registerCreatureEvent(creature, "DiePoke") ou algo parecido com registerCreatureEvent(ALGO QUE NÃO SEJA CID, ALGO QUE PAREÇA COM DIE)
Após ter localizado esta linha adicione na linha de baixo:
registerCreatureEvent(O QUE ESTA AQUI NA LINHA DE CIMA,"dueldie")
Atenção: Mude esse O QUE ESTA AQUI NA LINHA DE CIMA pelo que aparece escrito ali na linha de cima ("ALGO QUE NÃO SEJA CID" escrito em azul, você ira pelo que tiver em seu server)
OBS: Ficará MAIS OU MENOS assim -> registerCreatureEvent(creature, "dueldie")
Depois disso, na parte que volta o pokemon para a pokebola ( geralmente onde tem doRemoveCreature ):
Adicione na linha abaixo:
setPlayerStorageValue(cid,93000,50)
Salve e feche o arquivo.
Após isso copie os arquivos duelsys.lua , dueldie.lua e duelconfig.xml que estão no KronoX Duel Repack e coloque eles na pasta data/creaturescripts/scripts.
CONFIGURANDO SEU DUELCONFIG.XML (BETA)
vá na pasta data/creaturescripts/scripts e abra o arquivo duelconfig.xml com o bloco de notas.
Atenção: Este arquivo não pode ser editado, com excessão da função usablePokes.
O Erro da versão BETA é que ainda não se pode escolher o número de pokemons na batalha, pois esse número é editado no arquivo duelconfig.xml.
Para escolher o tanto de pokes que irá usar por duelo , nesse arquivo, basta mudar a opção usablePokes=3 para usablePokes=NumeroDePokes
Lembrando que não pode ser mais que 6 e que o carry system do server deve ser por cap.
Como usar:
Apenas Clique com ctrl e lado direito no adversário e clique em "Invite to party" (Que pode ser modificado no client).
Como sair do duelo:
Apenas Clique com ctrl e lado direito em VOCÊ e clique em "Leave Party" (Que pode ser modificado no client).
É isso aí, não tá perfeito mas jajá a gente chega lá!
Créditos: Stians pelo stians devcpp repack (DevC++ pra tibia) e Lucasbaragatti (eu) por fazer o sistema e postar aqui no XTibia. ;D
Gostou? Dê REP+ , não cai o dedo =P
Qualquer erro no sistema favor postar aqui! Obrigado!