Ir para conteúdo
Entre para seguir isso  
Undead Slayer

[8.0+] Castle Invasion Sistem

Recommended Posts

Undead Slayer    0
Undead Slayer

-------------------------------

 

Nome: Castle Invasion

Versão: 8.0+

Tipo do script: Action

Servidor Testado: Aeries Server 3.0 e The Forgotten Server (versão:?)

Autor: Runando

 

-------------------------------

 

É o mesmo sistema de Ragnarok nas wars, a muito o que fazer, porem, compensara, pois o sistema é mto massa.

 

COMO É O SISTEMA?

 

QUANDO LIBERA A GUERRA, A GUILD QUE TOMAR PRIMERO O CASTELO GANHA UM ITEM, OU XP, OU LEVEL, A SER DECIDIDO PELO GOD, ALEM DO PRETIGIO

 

1º: Faça um castelo a seu gosto, e no fim dele coloque um piso especial.

 

2º: Coloque em TODOS :P os SQMs comuns do castelo, a actionid 10030, e no piso especial, coloque a actionid 10029.

 

3º: A entrada do castelo tem de ser de 3 QMS, e dps de feita a entrada, cerque-a de grade, para ninguem entrar no castelo, como na imagem abaixo (OBS: Ela não pode nem tem que ser uma house):

 

cior9.png

 

4º: Vamos aos scripts:

 

Va em data/movements/scripts, copie qualquer arquivo, remoneie para Castle Invasion, apague tudo dentro e coloque o codigo abaixo, não deixando de colocar a localização do templo onde pede:

 

----- Castle Invasion Sistem by Runando -----
function onStepIn(cid, item, pos) -- 

-------- ITEM --------

local n_action = 10030

local e_action = 10029

-------- FRASES --------

local msg_winner = "Parabéns! A sua guild ganhou! Vocês ganharam o castelo."

local msg_cannot = "Não esta havendo uma guerra para você ganha-la."

local msg_not_guild = "Em tempo de guerra, players sem guild não podem entrar no castelo."

local msg_not_guild_winner = "Desculpe, mas sua guild não ganhou, muito menos você tem guild."

-------- CORDENADAS --------

local temple_position = {x=, y=, z=} --- COLOQUE AQUI Posição do templo

-------- STORAGE --------

local the_storage = 63000

local new_storage = 1

local battle_storage = 0

local cannot_storage = -1

-------- SISTEMA --------

if item.actionid == e_action then
if getGlobalStorageValue(the_storage) == battle_storage then
	player_guild_winner = getPlayerName(cid)
	guild_winner = getPlayerGuildName(player_guild_winner)
	doPlayerSendTextMessage(cid,22,msg_winner)
	doPlayerSay(cid,"Hoje, a guild "..guild_winner.." sai com a vitoria do castelo, ganho pelo player "..player_guild_winner.." e pela ajuda de todos da guild. Parabens "..guild_winner.."!",9)
	doSendAnimatedText(pos,'Winner',5)
	setGlobalStorageValue(the_storage,new_storage)

elseif item.actionid == n_action then
if getGlobalStorageValue(the_storage) == battle_storage then
	if getPlayerGuildName(getPlayerName(cid)) == nil then
		doTeleportThing(cid,temple_position)
		doPlayerSendTextMessage(cid,22,msg_not_guild)

elseif getGlobalStorageValue(the_storage) == new_storage then

	if getPlayerGuildName(getPlayerName(cid)) ~= guild_winner then
		doTeleportThing(cid,temple_position)
		doPlayerSendTextMessage(cid,22,"Desculpe! Sua guild perdeu, a guild que ganhou foi '..guild_winner..'.")
		doSendAnimatedText(temple_position,"Loser",18)

	elseif getPlayerGuildName(getPlayerName(cid)) == nil then
		doTeleportThing(cid,temple_position)
		doPlayerSendTextMessage(cid,22,msg_not_guild_winner)

	end
	end
end
end
end
end

 

Agora, para você decidir quando começar a guerra e para tirar aquelas grades, precisa ter um comando:

 

Va em data/talkaction/scripts, copie qualquer arquivo, renomeie para begin, apague tudo dentro, e coloque isto no lugar, não esquecendo de colocar o nome do castelo, a localização das grades, e a id da grade onde esta pedindo:

 

function onSay(cid, words, param)

-------- NOME --------

local castelo_name = Y --- COLOQUE AQUI O NOME DO CASTELO

-------- CORDENADAS --------

local wall_1 = {x=, y=, z=, stackpos=1} --- COLOQUE AQUI A Posição da primeira grade que esta tampando a entrada do castelo
local item_to_remove_1 = getThingfromPos(wall_1)

local wall_2 = {x=, y=, z=, stackpos=1} --- COLOQUE AQUI A Posição da segunda grade que esta tampando a entrada do castelo
local item_to_remove_2 = getThingfromPos(wall_2)

local wall_3 = {x=, y=, z=, stackpos=1} --- COLOQUE AQUI A Posição da terçeira grade que esta tampando a entrada do castelo
local item_to_remove_3 = getThingfromPos(wall_3)

local part = Z --- COLOQUE AQUI A ID DA GRADE

-------- SISTEMA --------

if getPlayerAccess(cid) >= 3 then
doPlayerSay(cid,"A guerra das guilds no Castelo "..castelo_name.." acabou de começar. GUILDS, PREPAREM-SE! Valendo: \n"..param.."!",9)
doRemoveItem(item_to_remove_1.uid,part)
doRemoveItem(item_to_remove_2.uid,part)
doRemoveItem(item_to_remove_3.uid,part)
setGlobalStorageValue(63000,0)

end
end

 

Quando for chamar este comando, fale:

 

/begin "nome do item que a guild recebera caso ganhe o castelo


COMO POR EXEMPLO


/begin "demon set

 

OBS: Com este comando, você não coloca para dar o item aos players, apenas avisa qual o premio, o item deve ser criado por você na hora.

 

Agora se você quer fechar o castelo depois que todos da guild vencedora ganharam item e sairam do castelo, e dps de uma guerra, precisa de um comando:

 

Va em data/talkaction/scripts, copie qualquer arquivo, renomeie para rg, delete tudo dentro e coloque isto, lembrando que é preciso editar as cordenadas das grades e a id da grade:

 

function onSay(cid, words, param)

-------- CORDENADAS --------

local wall_1 = {x=, y=, z=, stackpos=1} --- COLOQUE AQUI A Posição da primeira parede que esta tampando a entrada do castelo
local item_to_create_1 = getThingfromPos(wall_1)

local wall_2 = {x=, y=, z=, stackpos=1} --- COLOQUE AQUI A Posição da segunda parede que esta tampando a entrada do castelo
local item_to_create_2 = getThingfromPos(wall_2)

local wall_3 = {x=, y=, z=, stackpos=1} --- COLOQUE AQUI A Posição da terçeira parede que esta tampando a entrada do castelo
local item_to_create_3 = getThingfromPos(wall_3)

local part = Z --- COLOQUE AQUI A ID DA GRADE

-------- SISTEMA --------

if getPlayerAccess(cid) >= 3 then
doCreateItem(part,1,wall_1)
doCreateItem(part,1,wall_2)
doCreateItem(part,1,wall_3)
setGlobalStorageValue(63000,-1)

end
end

 

Para fechar o castelo basta falar /rg

 

Agora, para finalizar, tem que cocar as TAGS

 

Va em movements.xml e adicione isto:

 

<movevent event="StepIn" actionid="10029" script="Castle Invasion.lua" /> 
<movevent event="StepIn" actionid="10030" script="Castle Invasion.lua" /> 

 

Va em talkactions.xml e adicione isto:

 

<talkaction words="/rg" script="rg.lua" />  
<talkaction words="/begin" script="begin.lua" />  

 

Fazendo isto, acaba o sistema, coloque o OT On, e teste a primera war das guilds no castelo, aposto que os players vão adorar

 

Creditos: 90% Runando

10% Haxy, por a reformulação foi a partir do script dele, apesar de eu não ter copiado dele

 

Se for divulgado use meus creditos

 

COMENTEM

Editado por Runando

Compartilhar este post


Link para o post
Dark    3
Dark

Legal, só o ruim é colocar actionid em tudo :P

 

Aprovado

Compartilhar este post


Link para o post
Undead Slayer    0
Undead Slayer

Eu tmb axei foda, mas fazer o que, eele tinha que verificar em cada piso do castelo se tem alguem de guild perdedora no castelo

Compartilhar este post


Link para o post
Mililo    0
Mililo

Mtu foda, axo q o melhor script q eu vi até hj.

Paraabéns, tá perfeito!!!

Editado por Mililo

Compartilhar este post


Link para o post
kronoz    0
kronoz

Rox...Erra isso que eu tava em busca =P

Agora meu ot vai pega fogo. VLW

Compartilhar este post


Link para o post
Sago    0
Sago

Muito Massa... Adorei muito legal seu script

Excelente =D

Obrigado por postar na OTNET

Aprovado

Compartilhar este post


Link para o post
Voros    3
Voros

mto bom kara...!!!

achei esse script d+

amei (L)

AprovadO ~

Compartilhar este post


Link para o post
griutrer    0
griutrer

o meu ta dando erro

 

[17/07/2008 15:30:18] Lua Script Error: [MoveEvents Interface]

[17/07/2008 15:30:18] data/movements/scripts/Castle Invasion.lua

 

[17/07/2008 15:30:18] data/movements/scripts/Castle Invasion.lua:33: attempt to index global 'item' (a nil value)

[17/07/2008 15:30:18] Warning: [Event::loadScript] Can not load script. data/movements/scripts/Castle Invasion.lua

 

 

[17/07/2008 15:30:18] Lua Script Error: [MoveEvents Interface]

[17/07/2008 15:30:18] data/movements/scripts/Castle Invasion.lua

 

[17/07/2008 15:30:18] data/movements/scripts/Castle Invasion.lua:33: attempt to index global 'item' (a nil value)

[17/07/2008 15:30:18] Warning: [Event::loadScript] Can not load script. data/movements/scripts/Castle Invasion.lua

Compartilhar este post


Link para o post
Undead Slayer    0
Undead Slayer

@All

 

Malz, eu troquei uma coisa do rg com o begin, então, aposto que as grades não se removem nem se acrescentem, mas eu ja concertei, peçom deculpa a todos (Y)

Compartilhar este post


Link para o post
ryandometal    0
ryandometal

Ficou legal, pra isso que você queria que eu fizesse os castelos né? :P

Abraços

Compartilhar este post


Link para o post
Marcelo Côrtes    0
Marcelo Côrtes

Pessoalmente não gostei.

1º Um sistema desse não é tão legal

2º O negócio do GM dar o item, também não é legal, sou contra o contato GM-Player.

3º O sistema de castelo do Trevours e Viking é mais divertido e mais fácil de fazer

4º sem mais

 

Mas não tiro o seu mérito, parabéns.

Compartilhar este post


Link para o post
Kaotar    5
Kaotar

Sistema realmente legal, pena que tem um erro (simples, e eu acho que é so esse)

Fico triste pois todos os outros que postaram neste tópico não haviam testado o script.

E como o Dark disse meio chato botar actions ids em todos os sqms, até daria para padronizar o id do piso e usar loops para verificar a area mas iria fazer o server pesar muito se houve-se muitos players.

 

Erro:

----- Castle Invasion Sistem by Runando -----
function onStepIn(cid, item, pos) -- 

-------- ITEM --------

local n_action = 10030
local e_action = 10029

-------- FRASES --------

local msg_winner = "Parabéns! A sua guild ganhou! Vocês ganharam o castelo."
local msg_cannot = "Não esta havendo uma guerra para você ganha-la."
local msg_not_guild = "Em tempo de guerra, players sem guild não podem entrar no castelo."
local msg_not_guild_winner = "Desculpe, mas sua guild não ganhou, muito menos você tem guild."

-------- CORDENADAS --------

local temple_position = {x=, y=, z=} --- COLOQUE AQUI Posição do templo

-------- STORAGE --------

local the_storage = 63000
local new_storage = 1
local battle_storage = 0
local cannot_storage = -1

-------- SISTEMA --------

   if item.actionid == e_action then
       if getGlobalStorageValue(the_storage) == battle_storage then
           player_guild_winner = getPlayerName(cid)
           guild_winner = getPlayerGuildName(player_guild_winner)
           doPlayerSendTextMessage(cid,22,msg_winner)
           doPlayerSay(cid,"Hoje, a guild "..guild_winner.." sai com a vitoria do castelo, ganho pelo player "..player_guild_winner.." e pela ajuda de todos da guild. Parabens "..guild_winner.."!",9)
           doSendAnimatedText(pos,'Winner',5)
           setGlobalStorageValue(the_storage,new_storage)
       [color=Red]end[/color]
   elseif item.actionid == n_action then
       if getGlobalStorageValue(the_storage) == battle_storage then
           if getPlayerGuildName(getPlayerName(cid)) == nil then
               doTeleportThing(cid,temple_position)
               doPlayerSendTextMessage(cid,22,msg_not_guild)
           elseif getGlobalStorageValue(the_storage) == new_storage then
               if getPlayerGuildName(getPlayerName(cid)) ~= guild_winner then
                   doTeleportThing(cid,temple_position)
                   doPlayerSendTextMessage(cid,22,"Desculpe! Sua guild perdeu, a guild que ganhou foi '..guild_winner..'.")
                   doSendAnimatedText(temple_position,"Loser",18)
               elseif getPlayerGuildName(getPlayerName(cid)) == nil then
                   doTeleportThing(cid,temple_position)
                   doPlayerSendTextMessage(cid,22,msg_not_guild_winner)
               end
           end
       end
   end
end

 

O erro esta em vermelho. No script original esse end esta no final, mas para o correto funcionamento do script teria que ser aonde ele esta agora.

 

Ps: Eu nao testei o script, pois tenho preguisa de fazer mapas, mas creio que estaja funcionando sim.

 

Kaotar, Flws

Compartilhar este post


Link para o post
Deragon    25
Deragon

doPlayerSay(cid,"Hoje, a guild "..guild_winner.." sai com a vitoria do castelo, ganho pelo player "..player_guild_winner.." e pela ajuda de todos da guild. Parabens "..guild_winner.."!",9)

não seria BroadcastMessage ? e quando você executar o comando /rg, os players lá dentro ficarão presos... então basta fazer uma verificação de storage 60000 com um "if getPlayerStorageValue == 60000"

Compartilhar este post


Link para o post
Barragan    0
Barragan

MUITO BOMMMMMMMMMMMMMMMMMMMMMMMMMMM

É realmente, tem uma utilidade tremenda no atrativo de players!

Compartilhar este post


Link para o post
felipefbt    0
felipefbt

nossa q script loco, to pondo ele no meu ot agora

 

pra quem acha dificil por action id em todos os sqm faz assim:

 

pega um sqm, poe o action id, da ok, clica com o botao direito do mouse no sqm com action id clica em copy, agora, segure (ctrl + v) e vai passando o cursor do mouse onde vc quer q os sqm vao dai vai criando sqm igual, com o action id ja adicionado como se tivesse segurando o botao do mouse ^^

Compartilhar este post


Link para o post
Undead Slayer    0
Undead Slayer

@Kaotar: Ta funcionando perfeitamente com o end no final, eu testei no meu OT, pra funcionar vc tem que copiar sem modificar qualquer parte

 

@Deragon: LoL, vai la em global e vc vai ver que o numero 9 em questão de doPlayerSay é igual a Broadcast, e se vc tivesse lido o tutorial intero teria lido que tem que usar o /rg somente quando tudo acabar e todos sairem do castelo, eu fiz assim pra deixar na descisão do GOD quando ele quer abrir ou fechar o castelo.

Compartilhar este post


Link para o post
Bull Yincol    0
Bull Yincol

esse troco n funciona!!

Compartilhar este post


Link para o post
The_Spock    7
The_Spock

Ta bacana, : )

Mais só não entendi uma coisa. Os jogadores que ganharem, ficão presos la dentro ? o.0

Compartilhar este post


Link para o post
reinan16    1
reinan16

e para abri os portoes ???

abre sem guild?....

 

eu ja falei 1000x /begin

 

e nao acontece nada.. msg fast

Compartilhar este post


Link para o post
Machine!    2
Machine!

uma action bem grande!..

mas deve compensar o trabalho ^^

gostei do q vc disse q ela faz e vc ainda explocou como por ela nu map editro

vlws

 

flws!

Compartilhar este post


Link para o post
Visitante
Este tópico está impedido de receber novos posts.
Entre para seguir isso  
  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×