Nome: Sistema de Domínio de CasteloVersão testada: TFS 8.22
Autor: AlissonLinneker
Dificuldade:
3/5
Olá! Vim mostrar para vocês o meu novo projeto " em desenvolvimento "
-O que este script faz? :neutral:
Simples, é um sistema de domínio de castelos, bom para eventos de guerra.
Mas não é exatamente o domínio do castelo, etc...
Na verdade, trata-se apenas de uma mensagem dizendo que o cara dominou tal castelo...
Mais em breve atualizarei esse script para um que so permite a entrada no castelo os membros da guild vencedora.
-Como funciona? :lol:
Haverá uma alavanca... O jogador irá até essa alavanca e irá puxar.
Dependendo da UNIQUE ID da alavanca o castelo podera ter qualquer nome
Se o jogador tiver guild, ele menciona que tem guild, se não, ele nem se quer fala sobre guild.
E quando ele puxa a alavanca aparece ele falando em VERMELHO:
Player sem guild:
(sem guild) "Eu, NICK, dominei o castelo X!"
Player com guild:
(com guild) "Eu, NICK, do clan ALGUM, dominei o castelo TAL!!"
O script é dividido em dois trechos: :reload:
Configurações, que é onde você configura normalmente, e Códigos, que é uma área restrita apenas para quem mexe com Actions. Aconselho não tentarem modificar o script...
E se precisarem/quiserem adicionar castelos, só mandar MP com os nomes dos castelos novos que eu indicarei o que fazer.
Enfim, vamos ao script!
Iniciarei com o mais dificil ok?
:smile_positivo:
Crie um arquivo com o nome dominio-de-castelo.lua dentro da pasta data\actions\scripts. Em seguida adicione o script abaixo dentro dele:
-------------------------------------------------By Alisson Linneker-------------------www.alisson.vai.la------------------------------------------------------------------XTibia User--------------------------www.xtibia.com----------------------------------------------------function onUse(cid, item, frompos, item2, topos)-------------------- Configurações (Altere)--- ID GLOBAL (WAR ON/OFF)global_id = 6550------- Tente não alterar os IDs do script pois, se alterar aqui, terá de alterar em outros scripts!alavanca_id1 = 1945 --- ID da alavancaalavanca_id2 = 1946 --- ID da alavancaliber_alavanca = 6560 --- UNIQUE ID da alavanca que irá reiniciar os castelos (Opcional adicionar no mapa, pois existe o comando)access = 5 --- Nível de access para reiniciar os castelos (normal: 5, GOD)---UNIQUE ID´s QUE SERÃO ADICIONADAS NAS ALAVANCAS NO CASTELO:castelos_id =6564---UNIQUE ID representando o primeiro castelocastelos_id2 =6565---UNIQUE ID representando o segundo castelocastelos_id3 =6460---UNIQUE ID representando o terceiro castelocastelos_id4 =6461---UNIQUE ID representando o quarto castelocastelos_id5 =6462---UNIQUE ID representando o quinto castelo---NOMES DOS CASTELOS:castelo1 = "Normahn" ---Nome do primeiro castelocastelo2 = "Sleifyr" ---Nome do segundo castelocastelo3 = "Daraphin" ---Nome do terceiro castelocastelo4 = "Morgrart" ---Nome do quarto castelocastelo5 = "Tehlos" ---Nome do quinto casteloefeito = 11 ---ID da cor da fala do jogador (normal: 11, vermelho)lv_min = 20 ---Level mínimo para dominar castelos (normal: 20)efeito_msg = 13 ---ID do efeito das mensagens de erros (normal: 13, vermelho)------- Configurações Avançadas--- Códigos Prelinimaresif item.uid == castelos_id thencastelo = castelo1elseif item.uid == castelos_id2 thencastelo = castelo2elseif item.uid == castelos_id3 thencastelo = castelo3elseif item.uid == castelos_id4 thencastelo = castelo4elseif item.uid == castelos_id5 thencastelo = castelo5elseif item.uid == liber_alavanca thencastelo = 0endnick = getPlayerName(cid)lv = getPlayerLevel(cid)guild = getPlayerGuildName(nick)verif = getPlayerGuildId(nick)global_search = getGlobalStorageValue(item.uid)per_search = getPlayerStorageValue(cid, item.uid)ppos = getPlayerPosition(cid)error = 0--- Mensagem. Quando o jogador tem uma guildmsg_guild = "Eu, " .. nick .. ", da Guild " .. guild .. ", dominei o castelo " .. castelo .. "!!"--- Mensagem. Quando o jogador não tem guildmsg_noguild = "Eu, " .. nick .. ", dominei o castelo " .. castelo .. "!!"--- Erro. Quando o jogador não tem o level requerido para dominar castelosno_lv = "Voce precisa ter level " .. lv_min .. " ou superior para dominar castelos."--- Erro. Quando o castelo já foi dominado por alguém e o jogador não pertence à um castelocastle_domin = "Este castelo ja foi dominado, tente na proxima vez."--- Erro. Quando o jogador não tem access para reiniciar castelosaccess_error = "Voce nao tem capacidade para reiniciar castelos."--- Mensagem. Quando o jogador que tem access para reiniciar castelos reiniciacastle_restart = "Os castelos foram reiniciados com sucesso."--- Erro. Quando a guerra está desativada.off_msg = "Os castelos nao estao em guerra."-------------------- Códigos (Não altere)if getGlobalStorageValue(global_id) == 1 thenif item.uid < liber_alavanca or item.uid > liber_alavanca thenif lv >= lv_min thenif global_search <= 0 or per_search == 1 thenif verif > 0 thendoPlayerSay(cid,msg_guild, efeito)elsedoPlayerSendTextMessage(cid,22,msg_noguild)pos = getPlayerPosition(cid)doSendMagicEffect(pos,efeito)endsetGlobalStorageValue(item.uid, 1)if item.uid == castelos_id thensetPlayerStorageValue(cid, item.uid, 0)setPlayerStorageValue(cid, castelos_id2, 1)setPlayerStorageValue(cid, castelos_id3, 1)setPlayerStorageValue(cid, castelos_id4, 1)setPlayerStorageValue(cid, castelos_id5, 1)elseif item.uid == castelos_id2 thensetPlayerStorageValue(cid, castelos_id, 1)setPlayerStorageValue(cid, item.uid, 0)setPlayerStorageValue(cid, castelos_id3, 1)setPlayerStorageValue(cid, castelos_id4, 1)setPlayerStorageValue(cid, castelos_id5, 1)elseif item.uid == castelos_id3 thensetPlayerStorageValue(cid, castelos_id, 1)setPlayerStorageValue(cid, castelos_id2, 1)setPlayerStorageValue(cid, item.uid, 0)setPlayerStorageValue(cid, castelos_id4, 1)setPlayerStorageValue(cid, castelos_id5, 1)elseif item.uid == castelos_id4 thensetPlayerStorageValue(cid, castelos_id, 1)setPlayerStorageValue(cid, castelos_id2, 1)setPlayerStorageValue(cid, castelos_id3, 1)setPlayerStorageValue(cid, item.uid, 0)setPlayerStorageValue(cid, castelos_id5, 1)elseif item.uid == castelos_id5 thensetPlayerStorageValue(cid, castelos_id, 1)setPlayerStorageValue(cid, castelos_id2, 1)setPlayerStorageValue(cid, castelos_id3, 1)setPlayerStorageValue(cid, castelos_id4, 1)setPlayerStorageValue(cid, item.uid, 0)endelsedoPlayerSendTextMessage(cid,efeito_msg,castle_domin)error = 1endelsedoPlayerSendTextMessage(cid,efeito_msg,no_lv)error = 1endendif item.uid == liber_alavanca thenif getPlayerAccess(cid) >= access thensetGlobalStorageValue(castelos_id, 0)setGlobalStorageValue(castelos_id2, 0)setGlobalStorageValue(castelos_id3, 0)setGlobalStorageValue(castelos_id4, 0)setGlobalStorageValue(castelos_id5, 0)doPlayerSendTextMessage(cid,efeito_msg,castle_restart )elsedoPlayerSendTextMessage(cid,efeito_msg,access_error)error = 1endendif error == 0 thenif item.itemid == alavanca_id1 thendoTransformItem(item.uid,alavanca_id2)elseif item.itemid == alavanca_id2 thendoTransformItem(item.uid,alavanca_id1)endendelsesetGlobalStorageValue(global, 0)doPlayerSendTextMessage(cid,efeito_msg,off_msg)error = 1endend
Pois bem, agora vá até o arquivo actions.xml e adicione isso:
<action uniqueid="6564" script="dominio-de-castelo.lua"/> --- Primeiro Castelo<action uniqueid="6565" script="dominio-de-castelo.lua"/> --- Segundo Castelo<action uniqueid="6460" script="dominio-de-castelo.lua"/> --- Terceiro Castelo<action uniqueid="6461" script="dominio-de-castelo.lua"/> --- Quarto Castelo<action uniqueid="6462" script="dominio-de-castelo.lua"/> --- Quinto Castelo<action uniqueid="6560" script="dominio-de-castelo.lua"/> --- Alavanca Resetadora
Pronto, fechamos com as actions.
Vamos agora para as TalkActions.
Pois bem, dentro da pasta data\talkactions\scripts crie 3 arquivos com os nomes:
talkaction-ativar.luatalkaction-desativar.luatalkaction-resetar.lua
Agora abra o talkaction-ativar.lua e adicione isso:
function onSay(cid, words, param)-------------- Configurações--- ID GLOBAL (WAR ON/OFF)global_id = 6550---Access GM (Número que representa o nível de acesso de Game Masters)gm =1---Mensagem que aparece para o GMmsg_gm = "O sistema foi ativado."---Mensagem que envia para todo servidorservermsg = "Inicia agora o evendo de domínio de castelo."--- Erro:quando o jogador não é GM ou superiorerror = "Voce nao pode usar este comando."--- Erro:quando a guerra já está ativadaerror2 = "A guerra ja esta ativada."---Efeito (cor) da mensagem enviada ao GM (normal: 22)ef =22-------------- Códigos---- Preliminaresaccess = getPlayerAccess(cid)ppos = getPlayerPosition(cid)---- Completosif access >= gm thenif getGlobalStorageValue(global_id) == -1 thensetGlobalStorageValue(global_id, 1)doPlayerSendTextMessage(cid,ef,msg_gm)broadcastMessage(servermsg, 21)elsedoPlayerSendCancel(cid,error2)endelsedoPlayerSendCancel(cid,error)endend
Chegou a vez do talkaction-desativar.lua. Abra-o e adicione o script:
function onSay(cid, words, param)-------------- Configurações--- ID GLOBAL (WAR ON/OFF)global_id = 6550---Access GM (Número que representa o nível de acesso de Game Masters)gm =1---Mensagem que aparece para o GMmsg_gm = "O sistema foi desativado."---Mensagem que envia para todo servidorserveroffmsg = "O evento de domínio de castelo foi finalizado."--- Erro:quando o jogador não é GM ou superiorerror = "Voce nao pode usar este comando."--- Erro:quando a guerra já está ativadaerror2 = "A guerra ja esta desativada."---Efeito (cor) da mensagem enviada ao GM (normal: 22)ef =22-------------- Códigos---- Preliminaresaccess = getPlayerAccess(cid)---- Completosif access >= gm thenif getGlobalStorageValue(global_id) == 1 thensetGlobalStorageValue(global_id, -1)doPlayerSendTextMessage(cid,ef,msg_gm)broadcastMessage(serveroffmsg, 21)elsedoPlayerSendCancel(cid,error2)endelsedoPlayerSendCancel(cid,error)endend
E por fim o talkaction-resetar.lua:
function onSay(cid, words, param)-------------- Configurações---IDs dos castelosna mesma ordem do scriptcastelos_id =6564--- UNIQUE ID representando o primeiro castelocastelos_id2 =6565--- UNIQUE ID representando o segundo castelocastelos_id3 =6460--- UNIQUE ID representando o terceiro castelocastelos_id4 =6461--- UNIQUE ID representando o quarto castelocastelos_id5 =6462--- UNIQUE ID representando o quinto castelo---Access GM (Número que representa o nível de acesso de Game Masters)gm =1---Mensagem que aparece para o GMmsg_gm = "Os castelos foram reiniciados com sucesso!"--- Erro:quando o jogador não é GM ou superiorerror = "Voce nao pode usar este comando."---Efeito (cor) da mensagem enviada ao GM (normal: 22)ef =22-------------- Códigos---- Preliminaresaccess = getPlayerAccess(cid)error = 0global = getGlobalStorageValue(castelos_id)global2 = getGlobalStorageValue(castelos_id2)global3 = getGlobalStorageValue(castelos_id3)global4 = getGlobalStorageValue(castelos_id4)global5 = getGlobalStorageValue(castelos_id5)---- Completosif access >= gm thensetGlobalStorageValue(castelos_id, 0)setGlobalStorageValue(castelos_id2, 0)setGlobalStorageValue(castelos_id3, 0)setGlobalStorageValue(castelos_id4, 0)setGlobalStorageValue(castelos_id5, 0)doPlayerSendTextMessage(cid,ef,msg_gm)elsedoPlayerSendCancel(cid,error)endend
Pronto. Criamos a estrutura do talkaction. Agora vem a base.
Abra o arquivo: talkactions.xml e adicione as seguintes linhas à ele:
<talkaction words="!war on" script="talkaction-ativar.lua" /><talkaction words="!war off" script="talkaction-desativar.lua" /><talkaction words="!resetar castelos" script="talkaction-resetar.lua" />
FIM
Calma, Calma.
ISSO FOI APENAS OS SCRIPTS, AGORA VEM A PARTE DE ADICIONAR TUDO NO MAPA.
Vou dar exemplo com apenas 1 Castelo. Siga os exemplos mostrados na foto caso não saiba como configurar as actions:
*Obs: a alavanca de resetar é opcional, não é necessário colocar ela.
Adicionais:
Agora que ja esta tudo pronto, basta você entrar no jogo com um GOD e falar os comando para poder ligar, desligar, ou resetar o sistema.
Comandos:
!war on
!war off
!resetar castelos
Dicas:
Aconselho fazer o reset todo fim de semana, daí o jogador, ou a guild, podem ficar com o castelo a semana toda
Adicionais:
Para próxima versão:
% Script que permite apenas a entrada do player ou da guild que dominou o castelo
- Erros e bugs podem ser postados aqui que irei corrigir
Créditos: 100% AlissonLinneker
Até a ´próxima
:XTibia_smile: