Ir para conteúdo
  • 0

[Ajuda] Teleport abre para o último a sobreviver


Guizera123

Pergunta

Olá, gostaria de pedir a ajuda para um evento que estou criando.

É um torneio, porém, não tenho a script de existir apenas um ganhador, seria o seguinte...

Todos entram e o último que sobrar ganha acesso a sala de premiação.

 

Caso eu consiga preparar o evento e deixar 100%, compartilharei ele no fórum.

 

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

Os players morrem? Ou quando a vida acaba eles são mandados peo templo?

Eles são mandados para o templo.

@@Guizera123, vc ainda não tem nada, nada desse sistema? Tipo, vc pelo menos ja tem o script pra abrir o teleport, criar o monstro, etc?

Sim tenho, é um NPC que em x dia, x horário abre as inscrições para o evento. Mas tenho o teleport automático também. No caso não seria de raid de monstros seria um matando o outro e o último que restar vence.

O que falta no sistema é apenas a script de apenas um vencer, o último que restar.

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

  • 0

Manda o script do npc aí. (e caso o script do tp ñ seja o msm do npc, mande tb)

 

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}

 

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 creatureSayCallback(cid, type, msg)

 

if(not npcHandler:isFocused(cid)) then

return false

end

 

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

 

local cfg = {

price = 1000, -- Taxa cobrada pelo NPC

startPos = {x = 683, y = 394, z = 7}, -- Posição central da sala de torneio

hour = "19:50:00", -- Horário que inícia as inscrições

maxhour = "20:00:00", -- Horário que termina as inscrições

}

 

 

 

if msgcontains(msg, 'tournament') or msgcontains(msg, 'torneio') then

selfSay('Você tem certeza que deseja increver-se no torneio por um valor de '..cfg.price..' gold coins?', cid)

talkState[talkUser] = 2

 

 

elseif talkState[talkUser] == 2 then

 

if msgcontains(msg, 'yes') or msgcontains(msg, 'sim') then

 

if os.date("%X") < cfg.hour or os.date("%X") > cfg.maxhour then

selfSay('As inscrições para o torneio não estão abertas no momento, volte novamente mais tarde.', cid)

return true

end

 

if doPlayerRemoveMoney(cid, cfg.price) then

doTeleportThing(cid, {x = 683, y = 394, z = 7})

doPlayerSendTextMessage(cid, 27, "Bem-vindo ao torneio, ele iniciará em instantes.")

else

 

selfSay('Você não possui dinheiro suficiente ('..cfg.price..').', cid)

end

else

selfSay('Você quer participar então? Ok. Vejo você na próxima vez.', cid)

talkState[talkUser] = 0

end

end

end

 

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)

npcHandler:addModule(FocusModule:new())

 

Link para o comentário
Compartilhar em outros sites

  • 0

Cadê o script do evento, quando o player eh mandado para o templo? Eh so você fazer um count. Toda vez que um player inscrever, count = count +1. Toda vez que um player for teleportado count = count-1. Quando count for zero, o player que sobrar eh vencedor. (Via storage)

Link para o comentário
Compartilhar em outros sites

  • 0

Cadê o script do evento, quando o player eh mandado para o templo? Eh so você fazer um count. Toda vez que um player inscrever, count = count +1. Toda vez que um player for teleportado count = count-1. Quando count for zero, o player que sobrar eh vencedor. (Via storage)

Poderia me ajudar com isso?

Não sou bom com scripts.

Link para o comentário
Compartilhar em outros sites

  • 0

Posta o script uai, vc so pos o do npc.

Brother, o que tenho é basicamente o NPC e as actions.

Mas de qualquer forma vou postar.

 

creaturescript:

 

local cfg = {

leftPos = {x = 679, y = 382, z = 7},

rightPos = {x = 681, y = 379, z = 7},

}

 

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

if isInRange(getCreaturePosition(pid), cfg.leftPos, cfg.rightPos) then

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)

doCreatureAddMana(cid, getCreatureMaxMana(cid))

doRemoveConditions(cid, false)

return false

end

return true

end

 

 

Actions: Baú e placa que entra no evento.

 

function onUse(cid, item, frompos, item2, topos)

 

local cfg = {

salaAward = {x = 683, y = 385 , z = 7}, -- Cordenadas da sala de premiação

}

 

local area = {fromx =682, fromy = 386, fromz = 7, tox = 684, toy = 384, toz = 7} -- Positions

local check = getPlayersInArea(area)

local maxhour = "15:19:00"

 

if #check > 1 then

doPlayerSendTextMessage(cid, 27, "O torneio ainda não acabou, você só pode usar a alavanca quando o torneio terminar.")

return true

end

 

if os.date("%X") < maxhour then

doPlayerSendTextMessage(cid, 27, "Aguarde até que todos os participantes entrem no torneio.")

return true

end

 

doTeleportThing(cid, cfg.salaAward)

doPlayerSendTextMessage(cid, 20, "Parabéns, você sobreviveu a todas as raids, o seu prêmio está no baú!")

doBroadcastMessage("O jogador "..getCreatureName(cid).." sobreviveu ao torneio, parabéns!", MESSAGE_STATUS_CONSOLE_RED)

end

 

 

 

function onUse(cid, item, frompos, item2, topos)

 

local cfg = {

awardId = 2148, -- Item que o jogador ganha

awardAmount = 100, -- Quantidade

}

 

doPlayerAddItem(cid, cfg.awardId, cfg.awardAmount)

doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))

doPlayerSendTextMessage(cid, 27, "Parabéns, você sobreviveu e recebeu o prêmio.")

return true

end

 

Para facilitar eu vou tentar explicar como funcionar...

 

Mapa:

SQV2hYF.png

 

Você fala com o NPC (script acima) e se estiver ocorrendo o torneio no momento ele teletransporta você em troca de uma taxa em dinheiro.

Depois que você já foi teleportado você cairá na sala de baixo onde tem a alavanca, até acabar as inscrições, após isso você pode clicar na alavanca e ser teleportado para o centro da arena (script acima).

Porém depois disso não consegui continuar e falta a script de o último jogador que permanecer vivo ser o vencedor e ganhar acesso a sala de premiação.

Link para o comentário
Compartilhar em outros sites

  • 0

local cfg = {
leftPos = {x = 679, y = 382, z = 7},
rightPos = {x = 681, y = 379, z = 7},
}

local area = {fromx =682, fromy = 386, fromz = 7, tox = 684, toy = 384, toz = 7} -- Positions

function onPrepareDeath(cid, lastHitKiller, mostDamageKiller)

if isInRange(getCreaturePosition(pid), cfg.leftPos, cfg.rightPos) then
doTeleportThing(cid, getTownTemplePosition(getPlayerTown(cid)))
doCreatureAddHealth(cid, getCreatureMaxHealth(cid), 65535, 256, true)
doCreatureAddMana(cid, getCreatureMaxMana(cid))
doRemoveConditions(cid, false)

local check = getPlayersInArea(area)

if #check == 1 then

doTeleportThing(check[1], POSIÇÃO_SALA_RECOMPENSA)

end

return false
end
return true
end

 

Quando um player no evento morrer ele checará quantos restam. Quando restar só um ele teleporta esse um para a sala de recompensas.

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

×
×
  • Criar Novo...