Ir para conteúdo

# Sistema De Domínio De Castelos


Posts Recomendados

Nome: Sistema de Domínio de Castelo

Versão testada: TFS 8.22

Autor: AlissonLinneker

Dificuldade: estreladj4.gifestreladj4.gifestreladj4.gif 3/5

 

Olá! Vim mostrar para vocês o meu novo projeto " em desenvolvimento " :rofl:

 

-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. :gasp:

 

-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 alavanca

alavanca_id2 = 1946 --- ID da alavanca

liber_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 castelo

castelos_id2 =
6565
---
UNIQUE ID representando o segundo castelo

castelos_id3 =
6460
---
UNIQUE ID representando o terceiro castelo

castelos_id4 =
6461
---
UNIQUE ID representando o quarto castelo

castelos_id5 =
6462
---
UNIQUE ID representando o quinto castelo

 

---
NOMES DOS CASTELOS:

castelo1 = "
Normahn
" ---
Nome do primeiro castelo

castelo2 = "
Sleifyr
" ---
Nome do segundo castelo

castelo3 = "
Daraphin
" ---
Nome do terceiro castelo

castelo4 = "
Morgrart
" ---
Nome do quarto castelo

castelo5 = "
Tehlos
" ---
Nome do quinto castelo

 

efeito = 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 Prelinimares

if item.uid == castelos_id then

castelo = castelo1

elseif item.uid == castelos_id2 then

castelo = castelo2

elseif item.uid == castelos_id3 then

castelo = castelo3

elseif item.uid == castelos_id4 then

castelo = castelo4

elseif item.uid == castelos_id5 then

castelo = castelo5

elseif item.uid == liber_alavanca then

castelo = 0

end

 

nick = 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 guild

msg_guild = "Eu, " .. nick .. ", da Guild " .. guild .. ", dominei o castelo " .. castelo .. "!!"

 

--- Mensagem. Quando o jogador não tem guild

msg_noguild = "Eu, " .. nick .. ", dominei o castelo " .. castelo .. "!!"

 

--- Erro. Quando o jogador não tem o level requerido para dominar castelos

no_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 castelo

castle_domin = "Este castelo ja foi dominado, tente na proxima vez."

 

--- Erro. Quando o jogador não tem access para reiniciar castelos

access_error = "Voce nao tem capacidade para reiniciar castelos."

 

--- Mensagem. Quando o jogador que tem access para reiniciar castelos reinicia

castle_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 then

if item.uid < liber_alavanca or item.uid > liber_alavanca then

 

if lv >= lv_min then

 

if global_search <= 0 or per_search == 1 then

 

if verif > 0 then

doPlayerSay(cid,msg_guild, efeito)

else

doPlayerSendTextMessage(cid,22,msg_noguild)

pos = getPlayerPosition(cid)

doSendMagicEffect(pos,efeito)

end

setGlobalStorageValue(item.uid, 1)

if item.uid == castelos_id then

setPlayerStorageValue(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 then

setPlayerStorageValue(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 then

setPlayerStorageValue(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 then

setPlayerStorageValue(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 then

setPlayerStorageValue(cid, castelos_id, 1)

setPlayerStorageValue(cid, castelos_id2, 1)

setPlayerStorageValue(cid, castelos_id3, 1)

setPlayerStorageValue(cid, castelos_id4, 1)

setPlayerStorageValue(cid, item.uid, 0)

end

 

else

doPlayerSendTextMessage(cid,efeito_msg,castle_domin)

error = 1

 

end

else

doPlayerSendTextMessage(cid,efeito_msg,no_lv)

error = 1

end

 

end

 

 

 

if item.uid == liber_alavanca then

if getPlayerAccess(cid) >= access then

setGlobalStorageValue(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 )

else

doPlayerSendTextMessage(cid,efeito_msg,access_error)

error = 1

end

end

 

if error == 0 then

if item.itemid == alavanca_id1 then

doTransformItem(item.uid,alavanca_id2)

elseif item.itemid == alavanca_id2 then

doTransformItem(item.uid,alavanca_id1)

end

end

else

setGlobalStorageValue(global, 0)

doPlayerSendTextMessage(cid,efeito_msg,off_msg)

error = 1

end

end

 

 

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.lua

talkaction-desativar.lua

talkaction-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 GM

msg_gm = "
O sistema foi ativado.
"

 

---
Mensagem que envia para todo servidor

servermsg = "
Inicia agora o evendo de domínio de castelo.
"

 

--- Erro:
quando o jogador não é GM ou superior

error = "
Voce nao pode usar este comando.
"

 

--- Erro:
quando a guerra já está ativada

error2 = "
A guerra ja esta ativada.
"

 

---
Efeito (cor) da mensagem enviada ao GM (normal: 22)

ef =
22

 

-------------- Códigos

---- Preliminares

access = getPlayerAccess(cid)

ppos = getPlayerPosition(cid)

 

---- Completos

if access >= gm then

if getGlobalStorageValue(global_id) == -1 then

setGlobalStorageValue(global_id, 1)

doPlayerSendTextMessage(cid,ef,msg_gm)

broadcastMessage(servermsg, 21)

else

doPlayerSendCancel(cid,error2)

end

else

doPlayerSendCancel(cid,error)

end

end

 

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 GM

msg_gm = "
O sistema foi desativado.
"

 

---
Mensagem que envia para todo servidor

serveroffmsg = "
O evento de domínio de castelo foi finalizado.
"

 

--- Erro:
quando o jogador não é GM ou superior

error = "
Voce nao pode usar este comando.
"

 

--- Erro:
quando a guerra já está ativada

error2 = "
A guerra ja esta desativada.
"

 

---
Efeito (cor) da mensagem enviada ao GM (normal: 22)

ef =
22

 

-------------- Códigos

---- Preliminares

access = getPlayerAccess(cid)

 

---- Completos

if access >= gm then

if getGlobalStorageValue(global_id) == 1 then

setGlobalStorageValue(global_id, -1)

doPlayerSendTextMessage(cid,ef,msg_gm)

broadcastMessage(serveroffmsg, 21)

else

doPlayerSendCancel(cid,error2)

end

else

doPlayerSendCancel(cid,error)

end

end

 

E por fim o talkaction-resetar.lua:

function onSay(cid, words, param)

 

-------------- Configurações

---
IDs dos castelos
na mesma ordem do script

castelos_id =
6564
--- UNIQUE ID representando o primeiro castelo

castelos_id2 =
6565
--- UNIQUE ID representando o segundo castelo

castelos_id3 =
6460
--- UNIQUE ID representando o terceiro castelo

castelos_id4 =
6461
--- UNIQUE ID representando o quarto castelo

castelos_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 GM

msg_gm = "
Os castelos foram reiniciados com sucesso!
"

 

--- Erro:
quando o jogador não é GM ou superior

error = "
Voce nao pode usar este comando.
"

 

---
Efeito (cor) da mensagem enviada ao GM (normal: 22)

ef =
22

 

-------------- Códigos

---- Preliminares

access = getPlayerAccess(cid)

error = 0

global = getGlobalStorageValue(castelos_id)

global2 = getGlobalStorageValue(castelos_id2)

global3 = getGlobalStorageValue(castelos_id3)

global4 = getGlobalStorageValue(castelos_id4)

global5 = getGlobalStorageValue(castelos_id5)

 

---- Completos

if access >= gm then

setGlobalStorageValue(castelos_id, 0)

setGlobalStorageValue(castelos_id2, 0)

setGlobalStorageValue(castelos_id3, 0)

setGlobalStorageValue(castelos_id4, 0)

setGlobalStorageValue(castelos_id5, 0)

doPlayerSendTextMessage(cid,ef,msg_gm)

else

doPlayerSendCancel(cid,error)

end

end

 

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

:surprised:

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:

 

 

castelori6.gif

crisiscityqb0.gif

 

*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

:great:

 

 

 

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 :hehe:

Até a ´próxima :yipi:

:XTibia_smile:

Editado por AlissonLinneker
Link para o comentário
Compartilhar em outros sites

  • Respostas 39
  • Created
  • Última resposta

Top Posters In This Topic

  • 2 weeks later...
parece ser muito bom

eu vou testar agora mesmo

parece com a war of emprerium do ragnarok =P

 

 

sim é como ela WOE

=D

 

 

é o seguinte...

to mudando umas coisas aqui no script e proxima versão dele tera o sistema de acess so para os membros da guild vencedora.

 

Alem disso irei fazer o mapa ja proto com as actions para download.

 

O sistema ficara perfeito, dentro do castelo irei colocar algumas hunts e alguns npc´s.

 

 

Em breve atualizarei este aqui...

até+

Link para o comentário
Compartilhar em outros sites

cara, é exatamente o que eu to procurando, to esperando para a proxima atualização onde somente os membros da guild possam entrar.

 

Dúvida: funciona para 8.3 sql?

 

 

=D

to quase terminando aqui, ainda ta com alguns bugs mais jaja to postando.

 

Olha so, eu uso o TFS 8.22, creio q no 8.31 funcione perfeitamente.

Mais vou testar aqui para ter certeza :smile_positivo:

Link para o comentário
Compartilhar em outros sites


×
×
  • Criar Novo...