Ir para conteúdo
  • Cadastre-se

(Resolvido)Evento PvP


Ir para solução Resolvido por Vodkart,

Posts Recomendados

Olá, meu evento pvp funciona até a parte de levar o player para o evento e tal (pra sala de espera depois para o evento) e depois na hora de entregar o premio, ele não leva o player para o templo e entrega o premio, gostaria de dar 2 itens diferentes com quantias diferentes tem como ajustar isto na script? (se possivel os premios dentro de uma ou 2 bags seria no total 18 slots o premio 1,5k de gold e 300 de uma moeda especial) gostaria também se possivel que tivesse como marcar hora do evento para acontecer mas se não tiver como ou se não souber tudo bem.

Script dentro do globalevents:

Spoiler

function onThink(interval, lastExecution)

local total_players = 0
local storage = 24658 -- ALTERAR storage usado no sistema deixar todos iguais
local item_premio = 2160 -- ALTERAR item dado de premio, caso não queira dar item, coloque 2160
local item_quantidade_premio = 1500 -- 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 = 1028, y = 915, z = 6} -- 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 = 1024, y = 892, z = 12} -- ALTERAR pos do canto superior esquerdo da arena
local pos2_arena = {x = 1224, y = 1085, z = 12} -- 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

Script dentro do talkactions se precisar:

Spoiler

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 = 1028, y = 915, z = 6} -- 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 = 1002, y = 800, z = 12} -- ALTERAR pos do canto superior esquerdo da sala de espera
local pos2_espera = {x = 1016, y = 809, z = 12} -- 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 = 1002, y = 800, z = 12} -- ALTERAR pos do canto superior esquerdo da sala de espera
local pos2_espera = {x = 1016, y = 809, z = 12} -- 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 = 1002, y = 800, z = 12} -- ALTERAR pos do canto superior esquerdo da sala de espera
local pos2_espera = {x = 1016, y = 809, z = 12} -- ALTERAR pos do canto inferior direito da sala de espera
local pos_arena = {x = 1095, y = 963, z = 12} -- 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

 

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

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites
  • Solução

testa assim, se funcionar depois eu coloco em determinado horário.

 

 

function onThink(interval, lastExecution)
	local storage = {24658,24659} -- ALTERAR storage usado no sistema deixar todos iguais
	local items = {{2160,1500},{9020,300}} -- itens
	local arena = {{x = 1024, y = 892, z = 12},{x = 1224, y = 1085, z = 12}} -- area positions	
	if getGlobalStorageValue(storage[1]) <= 0 then
		return true
	end	
	function getPlayersInLixoEvent()
		local t = {}
		for _, pid in pairs(getPlayersOnline()) do
			if isInRange(getPlayerPosition(pid), arena[1], arena[2]) and getPlayerAccess(pid) < 3 then 
				t[#t+1] = pid
			end
		end
		return t
	end
	function getLixoRewards(cid, items)
		local backpack = doPlayerAddItem(cid, 10518, 1) -- backpackID
		for _, i_i in ipairs(items) do
			local item, amount = i_i[1],i_i[2]
			if isItemStackable(item) or amount == 1 then
				doAddContainerItem(backpack, item, amount)
			else
				for i = 1, amount do
					doAddContainerItem(backpack, item, 1)
				end
			end
		end
	end		
	function checkArenaLixo()
		if #getPlayersInLixoEvent() > 1 then
			addEvent(checkArenaLixo, 3000) -- ainda em batalha
		elseif #getPlayersInLixoEvent() == 1 then
			local cid = getPlayersInLixoEvent()[1]
			setGlobalStorageValue(storage[1], -1)
			setGlobalStorageValue(storage[2], -1)
			getLixoRewards(cid, items)
			doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)), false)
			doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você é o Vencedor do Evento.") -- ALTERAR frase para o vencedor do premio
			doBroadcastMessage("O Player "..getPlayerName(cid).." é o Vencedor do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
		else
			setGlobalStorageValue(storage[1], -1)
			setGlobalStorageValue(storage[2], -1)
			doBroadcastMessage("Todos os Jogadores Se mataram, fim do Evento.",22) -- ALTERAR frase para todos, do ganhador do premio
		end
	end
	if getGlobalStorageValue(storage[2]) <= 0 then
		setGlobalStorageValue(storage[2], 1) 
		addEvent(checkArenaLixo, 3000)
	end
	return true
end

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart Funcionou, poderia adicionar também a script, um broadcast de quando os players entram no evento? algo tipo "o player NOME DO PLAYER esta participando do evento"

11 horas atrás, Vodkart disse:

testa assim, se funcionar depois eu coloco em determinado horário.

 

No horario que abrir você poderia fazer aparecer um NPC ao invés do teleport?

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites

kkkkk

 

quem sabe quando eu tiver tempo eu refaço esse código, até pq tem que colocar uma sala de espera, etc... npc que apareça em determinado horário, tempo de espera e por ai vai.

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart ja tem sala de espera e um npc que te teleporta pra lá só preciso que o npc apareça em X local quando o evento iniciar X horas e que anuncie quando X player entrar para participar do evento

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

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites

@Vodkart 
NPC:

Spoiler

<?xml version="1.0"?>
<npc name="Minato Namikazze" 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="1023" head="115" body="76" legs="35" feet="117" addons="2" corpse="6080"/>
<parameters>
<parameter key="message_greet" value="Ola Eu Posso Teleporta Voce Para a Area De {Evento}"/>
<parameter key="module_shop" value="0"/>
</parameters>
</npc>

NPC/SCRIPTS

Spoiler

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, 100000) == true then -- ALTERAR 10000, esse é o valor para entrar
doTeleportThing(cid, {x=1009,y=804,z=12}) -- ALTERAR coordenada da sala de espera
npcHandler:say("Obrigado Até Mais!.", cid) -- ALTERAR frase que o npc fala após entrar na sala de espera
else
npcHandler:say("Voce Não Possui 10g.", 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 Tive 10g", cid) -- ALTERAR frase caso o player diga No
return true
end

local node0 = keywordHandler:addKeyword({'evento'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce Possui 10g Para Me Paga?'}) -- ALTERAR segunda frase de interação
node0:addChildKeyword({'yes'}, oracle, {blessing = 1})
node0:addChildKeyword({'no'}, oracle1, {blessing = 1})

npcHandler:addModule(FocusModule:new())

 

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites

npc

 

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, 1000) then -- ALTERAR 10000, esse é o valor para entrar
doTeleportThing(cid, {x=1009,y=804,z=12}) -- ALTERAR coordenada da sala de espera
doBroadcastMessage("O Player "..getPlayerName(cid).." entrou no evento.",22)
else
npcHandler:say("Voce Não Possui 1000 gold.", 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 Tive 1000 gold", cid) -- ALTERAR frase caso o player diga No
return true
end
local node0 = keywordHandler:addKeyword({'evento'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce Possui 10g Para Me Paga?'}) -- ALTERAR segunda frase de interação
node0:addChildKeyword({'yes'}, oracle, {blessing = 1})
node0:addChildKeyword({'no'}, oracle1, {blessing = 1})
npcHandler:addModule(FocusModule:new())

 

npc por tempo:

 

https://tibiaking.com/forums/topic/27682-globalevents-npc-aparecendo-sozinho/

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart o npc por tempo onde eu coloco a hora que ele vai nascer junto do evento? que seria as 14 hrs

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites
7 minutos atrás, King Laker disse:

@Vodkart o npc por tempo onde eu coloco a hora que ele vai nascer junto do evento? que seria as 14 hrs

 

dai usa assim:

 

npcgoup.lua

function onTimer()
local pos = {x=1050,y=1060,z=7} -- Local onde aparece o npc
local npc = doCreateNpc("Goup", pos ) -- Altere o (Goup) pelo nome do seu npc.
local nMin = 15 -- tempo em minuto para o npc sumir.
addEvent(doRemoveCreature, nMin*60*1000, npc)
return true
end

 

e a tag vc usa desse jeito:

 

<globalevent name="NpcSumir" time="14:00" event="script" value="npcgoup.lua"/>

 

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart ja tinha feito amigo <3 e no meu servidor seria 14:00:00 mas mt obrigado

3 horas atrás, King Laker disse:

@Vodkart ja tem sala de espera e um npc que te teleporta pra lá só preciso que o npc apareça em X local quando o evento iniciar X horas e que anuncie quando X player entrar para participar do evento

como faço para anunciar "o player X esta participando do evento PvP" toda vez que alguem entrar no evento?

@Vodkart como faço para anunciar "o player X esta participando do evento PvP" toda vez que alguem entrar no evento?

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites
20 minutos atrás, King Laker disse:

@Vodkart ja tinha feito amigo <3 e no meu servidor seria 14:00:00 mas mt obrigado

como faço para anunciar "o player X esta participando do evento PvP" toda vez que alguem entrar no evento?

@Vodkart como faço para anunciar "o player X esta participando do evento PvP" toda vez que alguem entrar no evento?

 

eu ja coloquei no npc qndo ele entrar, vai ser anunciado...

vodkart_logo.png

[*Ninguém será digno do sucesso se não usar suas derrotas para conquistá-lo.*]

 

DISCORDvodkart#6090

 

Link para o post
Compartilhar em outros sites

@Vodkart como faço para o evento iniciar ao meio dia automaticamente junto do npc?

Em 20/06/2018 em 16:29, Vodkart disse:

npc

 


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, 1000) then -- ALTERAR 10000, esse é o valor para entrar
doTeleportThing(cid, {x=1009,y=804,z=12}) -- ALTERAR coordenada da sala de espera
doBroadcastMessage("O Player "..getPlayerName(cid).." entrou no evento.",22)
else
npcHandler:say("Voce Não Possui 1000 gold.", 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 Tive 1000 gold", cid) -- ALTERAR frase caso o player diga No
return true
end
local node0 = keywordHandler:addKeyword({'evento'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, text = 'Voce Possui 10g Para Me Paga?'}) -- ALTERAR segunda frase de interação
node0:addChildKeyword({'yes'}, oracle, {blessing = 1})
node0:addChildKeyword({'no'}, oracle1, {blessing = 1})
npcHandler:addModule(FocusModule:new())

 

npc por tempo:

 

https://tibiaking.com/forums/topic/27682-globalevents-npc-aparecendo-sozinho/

quando o evento ta aberto o npc diz que ta fechado

@Vodkart Tem como me ajudar neste evento desde o 0 por PV?

VlVKQKC.png&key=d5c17620ae9567a1f898dd7a

 

 

 

  • 532144234_Logo_NTO_BLOOD_Finish_HIM_By_Antonio_Luckas(3).png.fd58d1af125a7e82ccdd751637e9ca93.png
Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo