VA
pedido

NPC que troca vocation

Por VaizardX, 03 de mai. de 2015 em Scripts

resolvido
otserv
tibia
7
2.4k
VaizardXV
03 de maio de 2015 às 16:53

Olá galera , tudo bem ?

Queria um NPC que troca a vocation do player pela escolhida.

 

Explicando melhor :

 

Um Player com vocation 1 fala com o NPC e ele da a opção de trocar para as seguintes vocations (20,30,40,50)

 

Aguardo respostas happy.png

03 de maio de 2015 às 17:33

so usar no npc

setplayervocation(cid, 20)

etc..

VaizardXV
03 de maio de 2015 às 17:36

so usar no npc

setplayervocation(cid, 20)

etc..

Pode me dar uma ajudano script ?

Sou bem novato em LUA e não sei criar scripts do zero , apenas editar alguns :X

03 de maio de 2015 às 20:12
Melhor resposta

tente

Aqui, vá em npcs/script e crie um arquivo chamado vocacao.lua e coloque isso dentro

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
 
local choose = {}
local cancel = {}
local available = {}
function creatureSayCallback(cid, type, msg)
 
	if(not npcHandler:isFocused(cid)) then
		return false
	end
	local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_PRIVATE and 0 or cid
	
if(msgcontains(msg, "info")) then  
		selfSay("Olá "..getCreatureName(cid)..", Você quer trocar de vocação, digite o nome da sua proxima vocação. Temos Sorcerer, Druid, Knight e Paladin.", cid)      
		talkState[talkUser] = 1
	elseif msgcontains(msg, "sorcerer") or msgcontains(msg, "SORCERER") and talk_state == 1 then
	    doPlayerSetVocation(cid, 1)
		selfSay("Parabéns, você virou um Sorcerer", cid)
		broadcastMessage("O jogador "..getCreatureName(cid).." virou um Sorcerer")
	elseif msgcontains(msg, "druid") or msgcontains(msg, "DRUID") and talk_state == 1 then
	    doPlayerSetVocation(cid, 2)
		selfSay("Parabéns, você virou um Druid", cid)
		broadcastMessage("O jogador "..getCreatureName(cid).." virou um Druid")
   	elseif msgcontains(msg, "paladin") or msgcontains(msg, "PALADIN") and talk_state == 1 then
	    doPlayerSetVocation(cid, 3)
		selfSay("Parabéns, você virou um Paladin", cid)
		broadcastMessage("O jogador "..getCreatureName(cid).." virou um Paladin")
	elseif msgcontains(msg, "KNIGHT") or msgcontains(msg, "KNIGHT") and talk_state == 1 then
	    doPlayerSetVocation(cid, 4)
		selfSay("Parabéns, você virou um Knight", cid)
		broadcastMessage("O jogador "..getCreatureName(cid).." virou um Knight")
	elseif(msgcontains(msg, "bye") or msgcontains(msg, "goodbye") or msgcontains(msg, "cya")) then
		selfSay("cya!", cid, TRUE)
		closeShopWindow(cid)
		removeFocus(cid)
	end
end    

npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

e depois volte uma pasta, onde fica os xmls dos npc e crie um novo arquivo chamado vocacao.xml e coloque isso dentro

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Vocation Changer" script="data/npc/scripts/vocacao.lua" walkinterval="0" floorchange="0">
	<health now="150" max="150"/>
  <look type="131" head="95" body="95" legs="95" feet="95" corpse="6080"/>
</npc>
FelipeXTF
03 de maio de 2015 às 20:16

^

Editado Maio 3 por ShadowsinXT

VaizardXV
04 de maio de 2015 às 00:03

@ roriscrave

 

Funcionou perfeitamente !! Rep++

Pode fechar o tópico , pedido sanado

FurabioF
04 de maio de 2015 às 10:29

Tópico movido para a seção de dúvidas e pedidos resolvidos.