Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

Arena War


Informações:
Todos os Players Falam com o NPC, e vão param em uma sala de espera, após um período todos são teleportados para uma arena, quando todos se matarem e só restar 1 ele ganhara um premio.

Descrição:
ADM Usa o comando !epvp e libera o acesso de todos os players no evento. Não testado, bugs me procurem.

OBS: IMPORTANTE! Colocar piso no-logout na arena e na sala de espera para evitar futuros bugs.

Sigam as instruções das linhas que apresentam "-- Alterar".


Instalação


Vá em data/npc/ e cria um arquivo chamado pvp.xml, dentro dele coloque.


<?xml version="1.0"?>
<npc name="Oracle" script="data/npc/scripts/pvp.lua" access="3" speed="0" lookdir="2" walkinterval="2000">
<mana now="800" max="800"/>
<health now="200" max="200"/>
<look type="309" head="115" body="76" legs="35" feet="117" addons="2" corpse="6080"/>
<parameters>
<parameter key="message_greet" value="Voce e forte suficiente para entrar no evento?({yes})"/>
<parameter key="module_shop" value="0"/>
</parameters>
</npc>



Negrito - Frase de inicio do NPC

Vá em data/npc/scripts/ e cria um arquivo chamado pvp.lua, dentro dele coloque.



local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)

function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) end
function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end
function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) end
function onThink() npcHandler:onThink() end

function oracle(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end

if getGlobalStorageValue(24658) ~= 0 then -- ALTERAR Storage usado no Sistema, colocar sempre o mesmo
npcHandler:say("O Evento Está Fechado.", cid)
return true
end

if doPlayerRemoveMoney(cid, 10000) == true then -- ALTERAR 10000, esse é o valor para entrar
doTeleportThing(cid, {x=153,y=48,z=7}) -- ALTERAR coordenada da sala de espera
npcHandler:say("Até mas!.", cid) -- ALTERAR frase que o npc fala após entrar na sala de espera
else
npcHandler:say("Voce nao possue 10k.", cid) -- ALTERAR frase caso o player não tenha 10k
return true
end

return true
end

function oracle1(cid, message, keywords, parameters, node)
if(not npcHandler:isFocused(cid)) then
return false
end
npcHandler:say("Volte quando tiver 10k entao!", cid) -- ALTERAR frase caso o player diga No
return true
end



local node0 = keywordHandler:addKeyword({'yes'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce possue 10k para entrar no evento?({yes} ou {no})'}) -- ALTERAR segunda frase de interação
node0:addChildKeyword({'yes'}, oracle, {blessing = 1})
node0:addChildKeyword({'no'}, oracle1, {blessing = 1})

npcHandler:addModule(FocusModule:new())



Vá em data/talkactions.xml e adicione essa linha.


<talkaction log="yes" words="!epvp" access="5" event="script" value="pvp.lua"/>



Vá em data/talkactions/scripts/ e cria um arquivo chamado pvp.lua, dentro dele coloque.



function onSay(cid, words, param)

if getGlobalStorageValue(24658) >= 0 then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Evento Já esta Online.")
end

doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Evento Acabou de Ser Ativado.")
local tempo_espera = 60 * 1000 -- ALTERAR tempo de espera na sala, 1 minuto

doBroadcastMessage("Evento PVP foi Ativado.",22) -- ALTERAR frase que aparece para todos quando usar o comando
setGlobalStorageValue(24658, 0) -- ALTERAR storage usado no sistema, deixar todos iguais
addEvent(
function ()


local pos_templo = {x = 156, y = 56, z = 7} -- ALTERAR coordenada do templo do seu ot server
doBroadcastMessage("Evento Iniciado.",22) -- ALTERAR frase quando todos forem para a arena
setGlobalStorageValue(24658, 1) -- ALTERAR storage usado no sistema, deixar todos iguais
local players = getPlayersOnline()
local i = 1
local total_player = 0

while i <= #players do
local pos_player = getPlayerPosition(players)
local pos1_espera = {x = 152, y = 47, z = 7} -- ALTERAR pos do canto superior esquerdo da sala de espera
local pos2_espera = {x = 155, y = 49, z = 7} -- ALTERAR pos do canto inferior direito da sala de espera
if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then
total_player = total_player + 1
end

i = i + 1
end

i = 1
if total_player <= 1 then
doBroadcastMessage("Evento Cancelado, Players Insuficientes.",22) -- ALTERAR Frase de evento cancelado por falta de players
setGlobalStorageValue(24658, -1) -- ALTERAR storage usado no sistema, deixar todos iguais

while i <= #players do
local pos_player = getPlayerPosition(players)
local pos1_espera = {x = 152, y = 47, z = 7} -- ALTERAR pos do canto superior esquerdo da sala de espera
local pos2_espera = {x = 155, y = 49, z = 7} -- ALTERAR pos do canto inferior direito da sala de espera
if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then
doTeleportThing(players, pos_templo)
end

i = i + 1
end

return TRUE
end

while i <= #players do
local pos_player = getPlayerPosition(players)
local pos1_espera = {x = 152, y = 47, z = 7} -- ALTERAR pos do canto superior esquerdo da sala de espera
local pos2_espera = {x = 155, y = 49, z = 7} -- ALTERAR pos do canto inferior direito da sala de espera
local pos_arena = {x = 160, y = 54, z = 7} -- ALTERAR do inicio da arena
if pos_player.x >= pos1_espera.x and pos_player.y >= pos1_espera.y and pos_player.x <= pos2_espera.x and pos_player.y <= pos2_espera.y then
doTeleportThing(players, pos_arena)
doPlayerSendTextMessage(players, MESSAGE_STATUS_CONSOLE_BLUE, "Batalhe pela sua vida.") -- ALTERAR frase que vai aparecer para o player quando ele entrar na arena
end

i = i + 1
end

end
,tempo_espera)

return true
end



Vá em data/globalevents.xml e adicione essa linha. (não alterar o tempo)


<globalevent name="arenawar" interval="5000" event="script" value="pvp.lua"/>



Vá em data/globalevents/scripts/ e cria um arquivo chamado pvp.lua, dentro dele coloque.



function onThink(interval, lastExecution)

local total_players = 0
local storage = 24658 -- ALTERAR storage usado no sistema deixar todos iguais
local item_premio = 2190 -- ALTERAR item dado de premio, caso não queira dar item, coloque 2160
local item_quantidade_premio = 1 -- ALTERAR quantidade do item ganho, caso não queira dar item , coloque 0
local player_escolhido = 0
local players = getPlayersOnline()
local i = 1
local pos_templo = {x = 156, y = 56, z = 7} -- ALTERAR coordenada do templo do seu ot server

if getGlobalStorageValue(storage) == 1 then
else
return TRUE
end

while i <= #players do
local pos_player = getPlayerPosition(players)
local pos1_arena = {x = 159, y = 53, z = 7} -- ALTERAR pos do canto superior esquerdo da arena
local pos2_arena = {x = 161, y = 55, z = 7} -- ALTERAR pos do canto inferior direito da arena
if pos_player.x >= pos1_arena.x and pos_player.y >= pos1_arena.y and pos_player.x <= pos2_arena.x and pos_player.y <= pos2_arena.y then
total_players = total_players + 1
player_escolhido = players

end
i = i + 1
end

if total_players == 1 then
setGlobalStorageValue(storage, -1)
doTeleportThing(player_escolhido, pos_templo)
doPlayerAddItem(player_escolhido, item_premio, item_quantidade_premio)
doPlayerSendTextMessage(player_escolhido, MESSAGE_STATUS_CONSOLE_BLUE, "Você é o Vencedor do Evento.") -- ALTERAR frase para o vencedor do premio
doBroadcastMessage("O Player "..(getPlayerName(player_escolhido)).." é o Vencedor do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
return TRUE
else
if total_players <= 0 then
setGlobalStorageValue(storage, -1)
doBroadcastMessage("Todos os Jogadores Se mataram, fim do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
return TRUE
end
end

return TRUE
end



Pronto instalado com sucesso.
Créditos Pelo Script:
100% - Gabisa00

Créditos Pela Ideia:
100% - 161996

Dúvidas, bugs, sugestões, somente no tópico.

Gostou do Sistema Faça Seu Pedido Aqui!

Editado por gabisa00 (veja o histórico de edições)

  • Respostas 69
  • Visualizações 4.8k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • gabisa00 e pessoal que ta usando o script:   Dei uma olhada no script e achei um bug, quando o evento é fechado (por falta de players) ele só tira o valor da storage global, não mandando os jogadore

  • Amigo imagine o seguinte, você esta colocando as coordenadas erradas.   veja isso imagine que isso seja a arena.                . <- aqui é a coordenada do canto superior esquerdo            

  • Postei na pagina de pedidos pelo motivo de que isso foi o pedido de um internauta, o pedido foi feito na pagina, por isso achei que deveria relata-lo como pedido, mas tudo bem vivendo e parendendo,

Posted Images

Postado

O tópico foi movido para a área correta, preste mais atenção da próxima vez!

Leia as regras do fórum: http://tibiaking.com/forum/topic/1281-regras-gerais/?p=7680

Este tópico foi movido:

De: "OTServSuporte OTServSuporte de Scripts"

Para: "OTServScriptingSistemas e MODs"

--

O título do seu tópico foi alterado por estar inadequado, procure relacionar o título com o tópico facilitando a todos.

 

Leia as regras do fórum: Regras

YDmXTU2.png

 

Entenda tudo sobre VPS, DEDICADOS & HOSPEDAGENS. => Clique aqui

Global Full Download 10.9x - TFS 1.2/FERUMBRAS/KRAILOS. => Clique aqui

 

Muitos querem aquilo que você tem, 
mas vão desistir quando souberem o preço que você pagou.

 

skype-favicon.png lu.lukinha

message-16.png [email protected]

Postado
  • Autor

Postei na pagina de pedidos pelo motivo de que isso foi o pedido de um internauta, o pedido foi feito na pagina, por isso achei que deveria relata-lo como pedido, mas tudo bem vivendo e parendendo, ^^

Editado por gabisa00 (veja o histórico de edições)

Postado

tem um erro no  globalevents/scripts/ e cria um arquivo chamado pvp.lua

 

ERROR: pvp.lua:11: unexpected symbol near ','
tem erro no talkactions/scripts/ e cria um arquivo chamado pvp.lua
 
 
ERROR: pvp.lua:16: unexpected symbol near ','

a axo q não tem as coordenadas ainda né ?


rep + pelo evento.

Postado
  • Autor

a ausência das coordenadas vai implicar no não funcionamento, provavelmente é isso. Muito Obrigado pela Rep.

Editado por gabisa00 (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo