Ir para conteúdo
  • 0

Pegar lvl 8 e já ir direto teleportado pra pos e falar hi


luccagomes

Pergunta

Usando sources 0.4

 

Alguém poderia me fazer um script que ao upar lvl 8, ir teleportado pra pos x= 100, y= 100, z= 7

E chegar falando hi com o npc? Ou começar alguma coisa pra ele saber q ta falando com o npc ou tem que falar com npc com clareza pra ir pra main?

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Vá em data\creaturescripts e adicione essa tag ao arquivo creaturescripts.xml:

<event type="advance" name="Advance8NPC" event="script" value="advance8npc.lua"/>

Agora vá em data\creaturescripts\scritps e crie um arquivo chamado advance8npc.lua e coloque isso dentro:

local pos = {x=100, y=100, z=7}
local msg = "Parabéns! Você alcançou o level 8. Fale com o NPC para prosseguir sua caminhada"  --vc pode editar essa mensagem, só precisa deixar ela dentro das aspas duplas!

function onAdvance(cid, position)
    if getLevel(cid) == 8 then
		doTeleportThing(cid, pos)
		doPlayerSendTextMessage(cid, 18, msg)
    end
return true
end

Agora vá em data\creaturescripts\scritps abra o arquivo login.lua e adicione isso antes do ultimo return true:

registerCreatureEvent(cid, "Advance8NPC")
Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro de tudo:

 

function onAdvance(cid, position)


O callback correto é onAdvance(cid, skill, oldLevel, newLevel)
Segundo:
getLevel(cid) == 8
Isso aqui vai dar erro porque em 0.4 não existe getLevel... mas não precisa usar função pra pegar o level, vc tá avançando e um dos parametros é o level novo.

Fica assim:
local pos = {x=100, y=100, z=7}
local msg = "Parabéns! Você alcançou o level 8. Fale com o NPC para prosseguir sua caminhada"  --vc pode editar essa mensagem, só precisa deixar ela dentro das aspas duplas!
local stor = 27182

function onAdvance(cid, skill, oldLevel, newLevel)
    if (newLevel == 8 and skill == SKILL__LEVEL and oldLevel < newLevel) and getPlayerStorageValue(cid, stor) < 1 then
		doTeleportThing(cid, pos)
		doPlayerSendTextMessage(cid, 18, msg)
		setPlayerStorageValue(cid, stor, 1)
    end
return true
end 

Essa segunda checagem é pra garantir que o player não morra em main, upe e seja enviado novamente pra posição do oracle (por ex);
As primeiras são pra garantir integridade -> tem que ser nv 8, tem q ser a skill level (onAdvance serve pra todas as skills) e o nível anterior tem que ser menor que o novo (tem casos em q morrer ativa o callback onAdvance, n sei pq e só acontece em algumas sources)

 

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...