Olá Pessoal do TK olha eu aqui di novo
Então,meu problema agora é com um script de Castle War.
script:
ps: esse guarda é configurado para não atacar os ‘donos’ do castelo! :fail:
Instalação
Actions
Va na pasta Data/action/action.xml e adicione isto:
Quote
<action actionid="9999" event="script" value="castlewar1.lua"/>
<action actionid="9998" event="script" value="castledoor1.lua"/>
<action actionid="8888" event="script" value="castlewar2.lua"/>
<action actionid="8887" event="script" value="castledoor2.lua"/>
Agora vá em Data/actions/scripts , crie esses 4 arquivos abaixo:
castlewar1.lua
-----------------------------------
---------SCRIPT por PC98------------ NAO REMOVA OS CREDITOS
-----------------------------------
function onUse(cid, item, frompos, item2, topos)
------------------ Inicio das Config ------------
local castle_one_name = "Ratim Bum" -- Nome do castelo 1
local storages = {154154,54321,123123} -- Storages ( se vc eh iniciante, deixe como está...)
-------PREMIOs I N D I V I D U A L ---------
local premio_por_vezes = 1 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa.
local premio_vezes = 13 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 2472 -- ID do Premio
local premio_cont = 1 -- Quantidade do Premio
local premio_reset = 1 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO
-------FIM PREMIOs I N D I V I D U A L ---------
----------------- FIM DAS CONFIG -----------------
local sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)
if isPlayerGuild(cid) == TRUE then
if sto_ativ == 1 or sto_ativ == -1 then
guildname = getPlayerGuildName(cid)
guild = getPlayerGuildId(cid)
guild_sto = getGlobalStorageValue(storages[3])
if guild ~= guild_sto then
setPlayerStorageValue(cid,guild_sto,guild)
if getPlayerStorageValue(cid,storages[1]) == -1 then
setPlayerStorageValue(cid,storages[1],0)
end
sto_vezes = getPlayerStorageValue(cid,storages[1])
setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
sto_vezes_total = getPlayerStorageValue(cid,storages[1])
doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_one_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
doSendMagicEffect(position, 39)
if premio_por_vezes == 1 then
if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
doPlayerAddItem(cid, premio,premio_cont)
doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
----------------------------------------------- --
if premio_reset == 1 then --
setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem
end --
----------------------------------------------- --
else
doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
end
end
end
else
doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
doSendMagicEffect(position, 2)
end
else
doPlayerSendCancel(cid,"O sistema está desativado")
end
else
doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
doSendMagicEffect(position, 2)
end
end
------------------------- por pc98
function additem(cid,premio,premio_cont,premio_reset)
if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
doPlayerAddItem(cid, premio,premio_cont)
doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
if premio_reset == 1 then
setPlayerStorageValue(cid,storages[1],0)
end
stopEvent(additem)
else
doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
addEvent(additem,10000,cid)
end
end
------------------------- por pc98
function isPlayerGuild(cid)
if getPlayerGuildName(cid) ~= "" then
return TRUE
else
return FALSE
end
end
castlewar2.lua
-----------------------------------
---------SCRIPT por PC98------------ NAO REMOVA OS CREDITOS
-----------------------------------
function onUse(cid, item, frompos, item2, topos)
------------------ Inicio das Config ------------
local castle_two_name = "do Dracula" -- Nome do castelo 2
local storages = {154154,54321,321321} -- Storages ( se vc eh iniciante, deixe como está...)
-------PREMIOs I N D I V I D U A L ---------
local premio_por_vezes = 1 -- Premio por vezes de conquista de castelo. (1) = Ativo (0) = Desativa.
local premio_vezes = 13 -- Caso ativo, a quantidade de conquista que o player tem, para ganhar PREMIO.
local premio = 2472 -- ID do Premio
local premio_cont = 1 -- Quantidade do Premio
local premio_reset = 0 -- Resetar o contador do premio depois que atingir a meta?? (1) = SIM (0) = NAO
-------FIM PREMIOs I N D I V I D U A L ---------
----------------- FIM DAS CONFIG -----------------
local sto_ativ = getGlobalStorageValue(storages[2])
position = getCreaturePosition(cid)
if isPlayerGuild(cid) == TRUE then
if sto_ativ == 1 or sto_ativ == -1 then
guildname = getPlayerGuildName(cid)
guild = getPlayerGuildId(cid)
guild_sto = getGlobalStorageValue(storages[3])
if guild ~= guild_sto then
setPlayerStorageValue(cid,guild_sto,guild)
-----------------------------------------------------
if getPlayerStorageValue(cid,storages[1]) == -1 then
setPlayerStorageValue(cid,storages[1],0)
end
-----------------------------------------------------
sto_vezes = getPlayerStorageValue(cid,storages[1])
setGlobalStorageValue(storages[3],getPlayerGuildId(cid))
setPlayerStorageValue(cid,storages[1], sto_vezes + 1)
sto_vezes_total = getPlayerStorageValue(cid,storages[1])
doBroadcastMessage("O(a) "..getCreatureName(cid).." acabou de conquistar o castelo "..castle_two_name.." para a guild \""..guildname.."\" pela "..sto_vezes_total.."ª vez(s).", 22)
doSendMagicEffect(position, 39)
if premio_por_vezes == 1 then
if getPlayerStorageValue(cid,storages[1]) == premio_vezes then
if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
doBroadcastMessage("O "..getCreatureName(cid).." ganhou uma(o) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!", 21)
doPlayerAddItem(cid, premio,premio_cont)
doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
----------------------------------------------- --
if premio_reset == 1 then --
setPlayerStorageValue(cid,storages[1],0) -- Resetar a contagem
end --
----------------------------------------------- --
else
doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Vamos verificar novamente em 10 segundos!")
addEvent(additem,10000,cid,premio,premio_cont,premio_reset)
end
end
end
else
doPlayerSendCancel(cid,"Este castelo ja foi conquistado pela sua guild!")
doSendMagicEffect(position, 2)
end
else
doPlayerSendCancel(cid,"O sistema está desativado")
end
else
doPlayerSendCancel(cid,"É nescessario ter guild para dominar o castelo!")
doSendMagicEffect(position, 2)
end
end
------------------------- Por PC98.
function additem(cid,premio,premio_cont,premio_reset)
if getItemWeightById(premio,1) <= getPlayerFreeCap(cid) then
doPlayerAddItem(cid, premio,premio_cont)
doPlayerSendTextMessage(cid, 18, "Voce recebeu o(a) "..getItemNameById(premio).." como recompensa das suas "..premio_vezes.." conquistas!")
if premio_reset == 1 then
setPlayerStorageValue(cid,storages[1],0)
end
stopEvent(additem)
else
doPlayerSendTextMessage(cid, 18, "Voce nao tem capacidade para ganhar o item. Verificando novamente em 10 segundos!")
addEvent(additem,10000,cid)
end
end
------------------------- por pc98
function isPlayerGuild(cid)
if getPlayerGuildName(cid) ~= "" then
return TRUE
else
return FALSE
end
end
castledoor1.lua
---------------
-----BY PC98-------
---------------
function onUse(cid, item, frompos, item2, topos)
-------------------------Config-----------------------------------------------------------------
door_opened = 1228 -- ID da porta aberta
storage_guild = getGlobalStorageValue(123123) -- A 3ª storage configurada em Castle.lua
guarda_ativ = 1 -- Caso um invasor tente abrir a porta, sumonar o Monstro "Guarda"?? | (1) = SIM (0) = NAO
guarda_cont = 2 -- Caso ativo: a quantidade de guardas a sumonar
guarda_pos = {x=123,y=123,y=7} -- Posiçao a ser sumonada os guardas!
-------------------------Fim de Config-----------------------------------------------------------
if getPlayerGuildId(cid) == storage_guild then
doTeleportThing(cid,getThingPos(item.uid))
doTransformItem(item.uid, door_opened)
doPlayerSendTextMessage(cid, 22, "Seja bem vindo a vosso castelo!")
return TRUE
else
if guarda_ativ == 1 then
doPlayerSendTextMessage(cid, 22, "Guaaaardas, tirem esses invasores daqui!!")
for i=1, guarda_cont do
doSummonCreature("Guarda", guarda_pos)
end
return FALSE
else
doPlayerSendTextMessage(cid, 22, "Este castelo nao pertence a sua guild")
return FALSE
end
end
end
castledoor2.lua
---------------
-----BY PC98-------
---------------
function onUse(cid, item, frompos, item2, topos)
-------------------------Config-----------------------------------------------------------------
door_opened = 1228 -- ID da porta aberta
storage_guild = getGlobalStorageValue(321321) -- A 3ª storage configurada ( ja esta configurada o PADRAO )
guarda_ativ = 1 -- Caso um invasor tente abrir a porta, sumonar o Monstro "Guarda"?? | (1) = SIM (0) = NAO
guarda_cont = 4 -- Caso ativo: a quantidade de guardas a sumonar
guarda_pos = {x=321,y=321,y=7} -- Posiçao a ser sumonada os guardas!
-------------------------Fim de Config-----------------------------------------------------------
if getPlayerGuildId(cid) == storage_guild then
doTeleportThing(cid,getThingPos(item.uid))
doTransformItem(item.uid, door_opened)
doPlayerSendTextMessage(cid, 22, "Seja bem vindo a vosso castelo!")
return TRUE
else
if guarda_ativ == 1 then
doPlayerSendTextMessage(cid, 22, "Guaaaardas, tirem esses invasores daqui!!")
for i=1, guarda_cont do
doSummonCreature("Guarda", guarda_pos)
end
return FALSE
else
doPlayerSendTextMessage(cid, 22, "Este castelo nao pertence a sua guild")
return FALSE
end
end
end
Talkactions
Va na pasta Data/talkaction/talkactions.xml , clique com o botao direito e depois editar.
Adicione esta linha:
<talkaction words="/war" event="script" value="castlesystem.lua"/>
Agora va na pasta scripts , e crie um arquivo lua chamado castlesystem.lua.
castlesystem.lua
function onSay(cid, words, param)
access = 4 -- Coloque aqui o access requirido para Ativar/Desativar o sistema
if param == "start" then
if getPlayerAccess(cid) == access then
setGlobalStorageValue(54321,1)
doPlayerSendTextMessage(cid, 20, "Voce ativou o Castle Wars com suscesso!")
return TRUE
end
elseif param == "stop" then
if getPlayerAccess(cid) == access then
setGlobalStorageValue(54321,2)
doPlayerSendTextMessage(cid, 20, "Voce desativou o Castle Wars com suscesso!")
return TRUE
end
end
end
Monster
O mostro Guarda... aquele que eu disse que pode ficar dentro do castelo :]
Instalaçao:
va na pasta data/monsters e edite o arquivo Monster.xml , adicionando esta linha:
<monster name="Guarda" file="guarda.xml"/>
e depois crie um arquivo na mesma pasta chamado guarda.xml
guarda.xml
<?xml version="1.0"?>
<monster name="Guarda" nameDescription="the guard" experience="6000" speed="268" race="Blood">
<health now="20000" max="20000"/>
<look type="73" corpse="6080"/>
<strategy attack="200" defense="300"/>
<targetchange speed="420" chance="1"/>
<flags>
<flag canpushitems="1"/>
<flag canpushcreatures="1"/>
<flag attackable="1"/>
<flag pushable="0"/>
<flag staticattack="90"/>
<flag targetdistance="1"/>
</flags>
<attacks>
<attack name="melee" interval="2000" chance="100" min="-400" max="-800" range="1"/>
<attack name="physical" interval="4000" chance="25" min="-600" max="-700" range="7" radius="8" target="1">
<attribute key="shootEffect" value="arrow"/>
</attack>
</attacks>
<defenses defense="45" armor="40"/>
<immunities>
<immunity name="paralyze"/>
<immunity name="invisible"/>
</immunities>
<voices speed="2200" chance="75">
<voice sentence="Grrrrrrrrrr" yell="1"/>
<voice sentence="Saia daqui intrusos!" yell="1"/>
<voice sentence="Sua resistencia e inutil!" yell="1"/>
<voice sentence="Voce vai ser preso!" yell="1"/>
</voices>
<script>
<event name="guard"/>
</script>
<elements/>
<loot/>
</monster>
Creatures Scripts
Bom, agora a gente tem de configurar pra esse bixo nao atacar os donos do castelo neh, se nao ele vai sair porai matando GERAL . Vamo nessa.
Va na pasta data/creaturescripts e edite o arquivo creaturescripts.xml adicionando esta linha:
<event type="combat" name="guard" script="guard.lua"/>
agora abra a pasta scripts, que esta na mesma pasta e crie um arquivo chamado guard.lua.
guard.lua
function onCombat(cid, target)
if(not isPlayer(target)) then
return TRUE
else
targets = getMonsterTargetList(cid)
if getPlayerGuildId(target) == getGlobalStorageValue(123123) then
addEvent(check,1000,cid,targets)
return FALSE
else
return TRUE
end
end
end
function check(cid,targets)
for i=1, #targets do
if getPlayerGuildId(targets[i]) == getGlobalStorageValue(123123) then
addEvent(check,1000,cid,targets)
return FALSE
else
stopEvent(check)
return TRUE
end
end
end
Esta configurado o Monstro! Vamos pra proxima etapa!
Instalaçao no MapaEditor
Va ate no primeiro castelo, e adicione uma lavanca ( id recomendado: 1945 ) e coloque aonde voce quiser. Depois de colocado a lavanca, clique nela com o botao direito do mouse e va em property.
No campo "ActionID:" coloque 9999.
Faça a mesma coisa com o segundo castelo, crie la a lavanca, e coloque actionID 8888.
Se voce quiser voce pode criar uma porta especial, por onde so os 'donos' do castelo pode entrar, afinal, ja ta instalado! :fail:
Coloque ActionID 9998 na porta no primeiro castelo, e actionID 8887 na porta do segundo castelo.
Comandos
/war start - Para Ativar o sistema ( ja vem ativado por padrao)
/war stop - Para desativar o sistema.
Bom, eh isso ai. Eh meu primeiro Script ( de muitos ) pro forum tibiaking, e espero ta ajudando o forum.
Creditos:
PC98 - Pelo script
MonsterEditor - Pelo mosntro Guarda. ( blackdemon)
obs: Esse mesmo script foi postado em outro forum, porem fui eu mesmo que postei ( PC98 - mesmo nick ).
abraços!
Ele funciona certinho,mas o problema é o /war stop,não funciona,sendo assim o castle fica ativado para sempre,se alguém souber como resolver me ajuda.Tentei falar com o auto to script,ele falou que não lembrava mais,e tals...Então é isso.
Abraços.