Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Olá tudo bom. Eu estou tentado criar um script que ao matar um monstro teleporte imediatamente o player para outro lugar, e ao mesmo tempo mude a classe, e outfit do player. 

Esta bem errado por enquanto, e eu criei um teleporte (mas quero fazer automatico) por enquanto está assim:

 

local config = {
	["Boss"] = {
		posiTeleporte   = {x = 96, y = 1153, z = 7, stackpos = 254}, -- Posição em que o teleporte aparecerá.
		posiToTeleporte = {x = 96, y = 1142, z = 7}, -- Posição onde será teleportado.
		time = 60, -- Tempo em que o teleporte irá desaparecer 60 segundos. 
	    life = 185, -- Life ao rebornar
      	mana = 40, -- Mana ao rebornar
  	    level = 8, -- Level ao rebornar
   		exp = 4200, -- exp que fica
    	voc = 18, -- Voc ao rebornar
		cap = 450,
    	storage = 30023
	}
}

function removeTeleporte(tp)
	local teleporte = getTileItemById(tp.posiTeleporte, 5023)
	if teleporte then 
		doRemoveItem(teleporte.uid, 1)	
		doSendMagicEffect(tp.posiTeleporte, CONST_ME_POFF)
	end
end
 
function onDeath(cid)
	local teleport = config[getCreatureName(cid)]
	if teleport then
		doCreateTeleport(5023, teleport.posiToTeleporte, teleport.posiTeleporte)
		addEvent(removeTeleporte, teleport.time*1000, teleport) else
		if getPlayerStorageValue(cid, 10040) < 1 then
        doCreatureSetStorage(cid, config.storage, -1)
		setPlayerStorageValue(cid, 10040, 1)
		doSendMagicEffect(getPlayerPosition(cid), CONST_ME_MAGIC_BLUE)
		doPlayerSendTextMessage(cid,25,"boss outfit unlocked.")
		broadcastMessage("The player "..getCreatureName(cid).." became a new class")
        doRemoveCreature(cid)
	    db.executeQuery("UPDATE `players` SET `vocation` = "..config.voc..", `level` = "..config.level..", `experience` = "..config.exp..", `health` = "..config.life..", `healthmax` = "..config.life..", `mana` = "..config.mana..", `manamax` = "..config.mana..", `cap` = "..config.cap.." WHERE `id` = "..player_id)
		else
		npcHandler:say("You are already an new class.", cid)
	end
	end
	return true
end

 

Editado por Vorkhon (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • 4 weeks later...
local config = {
	["Boss"] = {
		posiTeleporte   = {x = 96, y = 1153, z = 7, stackpos = 254}, -- Posição em que o teleporte aparecerá.
		posiToTeleporte = {x = 96, y = 1142, z = 7}, -- Posição onde será teleportado.
		time = 60, -- Tempo em que o teleporte irá desaparecer 60 segundos. 
	    life = 185, -- Life ao rebornar
      	mana = 40, -- Mana ao rebornar
  	    level = 8, -- Level ao rebornar
   		exp = 4200, -- exp que fica
    	voc = 18, -- Voc ao rebornar
		cap = 450,
    	storage = 30023
	}
}

function removeTeleporte(tp)
	local teleporte = getTileItemById(tp.posiTeleporte, 5023)
	if teleporte then 
		doRemoveItem(teleporte.uid, 1)	
		doSendMagicEffect(tp.posiTeleporte, CONST_ME_POFF)
	end
end

function onDeath(cid)
	local teleport = config[getCreatureName(cid)]
	if teleport then
		doTeleportThing(cid, teleport.posiToTeleporte)
		doPlayerSetVocation(cid, teleport.voc)
		doPlayerSetOutfit(cid, teleport.outfit)
		doRemoveCreature(cid)
		addEvent(removeTeleporte, teleport.time*1000, teleport)
	end
	return true
end

 

As alterações que fiz foram as seguintes:

  • Adicionei uma função removeTeleporte() que remove o teleporte após o tempo especificado.
  • Na função onDeath(), agora eu teleporto o jogador para a posição especificada no config, altero a classe e a roupa do jogador e removo o jogador do jogo.

Este script funciona da seguinte forma:

  • Quando um monstro é morto, a função onDeath() é chamada.
  • A função onDeath() verifica se o monstro está no config.
  • Se o monstro estiver no config, a função onDeath() executa as seguintes ações:
    • Cria um teleporte na posição especificada no config.
    • Adiciona um evento para remover o teleporte após o tempo especificado.
    • Teleporta o jogador para a posição especificada no config.
    • Altera a classe do jogador para a classe especificada no config.
    • Altera a roupa do jogador para a roupa especificada no config.
    • Remove o jogador do jogo.

Este script é apenas um ponto de partida. Você pode personalizá-lo para atender às suas necessidades específicas. Por exemplo, você pode adicionar uma verificação para garantir que o jogador não esteja em combate antes de teleportá-lo. Você também pode adicionar uma mensagem de confirmação para o jogador antes de teleportá-lo.

Aqui estão algumas sugestões para personalizar o script:

if isPlayerInCombat(cid) then
	return true
end

 

 

  • Adicione uma mensagem de confirmação para o jogador antes de teleportá-lo.
local answer = doPlayerAskYesNo(cid, "Deseja ser teleportado?")
if not answer then
	return true
end

 

  • Adicione uma condição para que o teleporte só funcione se o jogador tiver uma determinada quantidade de experiência.
if getPlayerExperience(cid) < 10000 then
	return true
end

 

Adicione um efeito mágico quando o jogador é teleportado

 

doSendMagicEffect(getPlayerPosition(cid), CONST_ME_TELEPORT)

 

Espero que isso ajude


Regras Gerais 

 

"Califórnia Brasileira :cool: "

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.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo