Ir para conteúdo
  • 0

[Resolvido] [Pedido] 3 Npcs [Acredito Médio]


NdboHakai

Pergunta

Boa noite, rapaziada do Xtibia

TFS 0.4

  

Gostaria de um npc que o jogador entregava 6 items e em troca recebesse a storage.

 

Outro Npc \/

 

Tenho uma duvida, tem sistemas como por exemplo os de Graduação

Eles utilizam o Look para mostrar qual graduação o jogador está, mas como eu faço para um npc entregar uma storage com valor 1,2,3,4,5 como os de Graduação?

 

e Ultimo Npc \/

 

Gostaria de um npc que seria Travel, só que para ir pros locais que estão nesse npc

[Obs: mesmo ele sabendo o nome da cidade ele teria que fazer isso] = O jogador teria que escrever "Viajar"

E ele teria outras três funções = Só poderia funcionar com players sem PK e o jogador não precisaria falar "hi/viajar/templo/yes"

Queria que o jogador só falasse "hi/viajar/templo" e já seria teleportado

Eu poderia escolher se a cidade seria Premium ou Free

 

Por gentileza se poderem enviar no pastebin.com , porque aqui no forum toda vez que vou copiar algum script fica com error no script não sei porque.

 

Espero que me ajudem.

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0
  • Diretor

Conforme o pedido, NPC3:

XML:

Spoiler

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Travel" script="travel.lua" walkinterval="0" floorchange="0" walkable = "false">
	<health now="100" max="100"/>
	<look type="287"/>
	<parameters>
		<parameter key="module_shop" value="1"/>
		<parameter key="message_greet" value="Bem-vindo, |PLAYERNAME|. Você quer viajar? diga {viajar}."/>
	</parameters>
</npc>

 

 

LUA:

Spoiler

local DESTINO = {x=1024, y=1026, z=7} -- POS
local DESTINO2 = {x=1358, y=669, z=6} -- POS
local DESTINO3 = {x=592, y=829, z=7} -- POS

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:lower())   end
function onThink()                  npcHandler:onThink()                  end
local talkState = {}
 
function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
      return false
   end
 
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
 if getCreatureCondition(cid, CONDITION_INFIGHT) == false then
 
   if msgcontains(msg, "viajar") then
   selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}", cid)
   elseif msgcontains(msg, "hakai city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
   elseif msgcontains(msg, "desert city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
   elseif msgcontains(msg, "ice city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO3)
      doSendMagicEffect(DESTINO3, 10)
   end
   else
         selfSay("Desculpe, mas você está em batalha.", cid)
end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

@NdboHakai

Não ta no pastebin porque fiz rapidão aqui mesmo.
1º NPC:

 

Spoiler

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 storage = xxx
local storage2 = ttt
local itemID = yyy
local quantidade = uuu
 
function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if msgcontains(msg, "entregar") then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("preciso que voce me traga X itens tal. voce aceita a missao?", cid)
				talkState[talkUser] = 1
			elseif getPlayerStorageValue(cid, storage) == 1 then
				selfSay("voce me trouxe os itens?", cid)
				talkState[talkUser] = 1
			else
				selfSay("voce ja me foi de grande ajuda.", cid)
				talkState[talkUser] = 0
			end
			npcHandler:addFocus(cid)
		end
		

	
	if msgcontains(msg, "yes") and talkState[talkUser] == 1 then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("obrigado por aceitar a missao", cid)
				setPlayerStorageValue(cid, storage, 1)
			elseif getPlayerStorageValue(cid, storage) == 1 and doPlayerRemoveItem(cid, itemID, quantidade) then
				selfSay("obrigado pela ajuda. como recompensa, lhe darei acesso ao lugar X", cid)
				setPlayerStorageValue(cid, storage, 2)
				setPlayerStorageValue(cid, storage2, 1)
			else
				selfSay("voce nao tem os X itens, esta tentando me enganar?", cid)
			end

	elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then
        selfSay("então porque veio até mim?", cid)
        talkState[talkUser] = 0	
	end
	 
    return true
end

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

 


2º NPC
Só você definir o valor da storage que vai representar a graduação X e na hora que o NPC setar a nova graduação, você seta a storage com o novo valor. 
Exemplo: A storage é 1111 e o aluno é valor 1, professor é valor 2 e mestre valor 3. Então, se quiser que vá de graduação nenhuma pra aluno, você faz> setPlayerStorageValue(cid, 1111, 1). Se quiser ir de aluno pra professor, você faz> setPlayerStorageValue(cid, 1111, 2). E assim por diante.

3º NPC
Não está com a necessidade de precisar falar "viajar", mas não precisa falar "yes", ele já manda na hora que você falar o nome da cidade.
 

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

-- se nao quiser que tenha level, é so tirar.
-- basta repetir esses travelNode para os outros locais que você deseja adicionar


local travelNode = keywordHandler:addKeyword({'nome da cidade'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, level = 1 , cost = 0, destination = {x=XXXX, y=YYYY, z=ZZZZ}})


        
npcHandler:addModule(FocusModule:new())

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, gabriel28 disse:

@NdboHakai

Não ta no pastebin porque fiz rapidão aqui mesmo.
1º NPC:

 

  Mostrar conteúdo oculto


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 storage = xxx
local storage2 = ttt
local itemID = yyy
local quantidade = uuu
 
function creatureSayCallback(cid, type, msg)
    if not npcHandler:isFocused(cid) then
        return false
    end
    local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
	
	if msgcontains(msg, "entregar") then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("preciso que voce me traga X itens tal. voce aceita a missao?", cid)
				talkState[talkUser] = 1
			elseif getPlayerStorageValue(cid, storage) == 1 then
				selfSay("voce me trouxe os itens?", cid)
				talkState[talkUser] = 1
			else
				selfSay("voce ja me foi de grande ajuda.", cid)
				talkState[talkUser] = 0
			end
			npcHandler:addFocus(cid)
		end
		

	
	if msgcontains(msg, "yes") and talkState[talkUser] == 1 then
			if getPlayerStorageValue(cid, storage) <= 0 then
				selfSay("obrigado por aceitar a missao", cid)
				setPlayerStorageValue(cid, storage, 1)
			elseif getPlayerStorageValue(cid, storage) == 1 and doPlayerRemoveItem(cid, itemID, quantidade) then
				selfSay("obrigado pela ajuda. como recompensa, lhe darei acesso ao lugar X", cid)
				setPlayerStorageValue(cid, storage, 2)
				setPlayerStorageValue(cid, storage2, 1)
			else
				selfSay("voce nao tem os X itens, esta tentando me enganar?", cid)
			end

	elseif msgcontains(msg, "no") and talkState[talkUser] == 1 then
        selfSay("então porque veio até mim?", cid)
        talkState[talkUser] = 0	
	end
	 
    return true
end

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

 


2º NPC
Só você definir o valor da storage que vai representar a graduação X e na hora que o NPC setar a nova graduação, você seta a storage com o novo valor. 
Exemplo: A storage é 1111 e o aluno é valor 1, professor é valor 2 e mestre valor 3. Então, se quiser que vá de graduação nenhuma pra aluno, você faz> setPlayerStorageValue(cid, 1111, 1). Se quiser ir de aluno pra professor, você faz> setPlayerStorageValue(cid, 1111, 2). E assim por diante.

3º NPC
Não está com a necessidade de precisar falar "viajar", mas não precisa falar "yes", ele já manda na hora que você falar o nome da cidade.
 

  Mostrar conteúdo oculto


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

-- se nao quiser que tenha level, é so tirar.
-- basta repetir esses travelNode para os outros locais que você deseja adicionar


local travelNode = keywordHandler:addKeyword({'nome da cidade'}, StdModule.say, {npcHandler = npcHandler, onlyFocus = true, level = 1 , cost = 0, destination = {x=XXXX, y=YYYY, z=ZZZZ}})


        
npcHandler:addModule(FocusModule:new())

 

 

Certo, irei testar

Sobre o npc 1, tem condições de eu adicionar + de 1 item? exemplo : id 1 , 2 , 3 , 4 ,5 

Sobre o npc 3, se o jogador tiver PK ele ainda assim vai teleportar o jogador? e como adiciono para a cidade ser premium?

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

  • 0

Primeiro NPC :

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 

str = 98144 --- STORAGE QUE VAI GANHAR
local temitens = {2160, 8306, 2400, 5878, 2494, 2486, 2491} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!


function onItemPlayer(cid, itemid)
for i = 1, #temitens do
if getPlayerItemCount(cid, temitens[i]) < 1 then
return false
end
end
return true
end

function removeItem(cid)
for i in ipairs (temitens) do
doPlayerRemoveItem(cid, temitens[i], 1)
end
end

if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then
removeItem(cid)
setPlayerStorageValue(cid, str, 1)
doSendMagicEffect(getThingPos(cid), 12)
selfSay("Storage Adicionada !", cid)
else
selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid)
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Terceiro NPC: 

 

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 

postemplo = {x=80, y=348, z=7} --- POSIÇÃO DO TEMPLO QUE O PLAYER VAI SER TELEPORTADO
premium = true --- se precisar de premium mude para TRUE se não precisar deixe FALSE


if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

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

O segundo npc eu não entendi nada do que você quer, explica melhor

Link para o comentário
Compartilhar em outros sites

  • 0
1 minuto atrás, Kuro o Shiniga disse:

Primeiro NPC :


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 

str = 98144 --- STORAGE QUE VAI GANHAR
local temitens = {2160, 8306, 2400, 5878, 2494, 2486, 2491} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!


function onItemPlayer(cid, itemid)
for i = 1, #temitens do
if getPlayerItemCount(cid, temitens[i]) < 1 then
return false
end
end
return true
end

function removeItem(cid)
for i in ipairs (temitens) do
doPlayerRemoveItem(cid, temitens[i], 1)
end
end

if msgcontains(msg, "trocar") and onItemPlayer(cid, temitens) and getPlayerStorageValue(cid, str) < 1 then
removeItem(cid)
setPlayerStorageValue(cid, str, 1)
doSendMagicEffect(getThingPos(cid), 12)
selfSay("Storage Adicionada !", cid)
else
selfSay("Voce nao tem os itens necessarios ou ja tem a storage!", cid)
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Terceiro NPC: 

 


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 

postemplo = {x=80, y=348, z=7} --- POSIÇÃO DO TEMPLO QUE O PLAYER VAI SER TELEPORTADO
premium = true --- se precisar de premium mude para TRUE se não precisar deixe FALSE


if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

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

O segundo npc eu não entendi nada do que você quer, explica melhor

Primeiro Npc = Aonde adiciono a quantidade do item?

Segundo Npc = na realidade era uma coisa que eu tinha em mente, mas desistir. Mas na verdade oque eu gostaria era de um npc de missão.

Terceiro Npc = como faço para adicionar + de 1 cidade??

Link para o comentário
Compartilhar em outros sites

  • 0

Primeiro NPC: Você adiciona aqui os IDS dos itens que deseja, mas antes apaga os que tem dentro dos {}, e sempre que adicionar um ID coloca a ",", igual ta aqui \/

Citar

local temitens = {2160, 8306, 2400, 5878, 2494, 2486, 2491} --- ID DOS ITENS QUE PRECISA PRA TROCAR PELA STORAGE!

Segundo NPC: me fala como você quer a missão do npc que eu faço pra você!

 

Terceiro NPC: pra adicionar mais de uma cidade vai ter que fazer algumas alterações, esse ai só manda pra uma, deixa as posições de cada cidade que você quer e o nome de cada uma que faço pra você.

Link para o comentário
Compartilhar em outros sites

  • 0
17 minutos atrás, Kuro o Shiniga disse:

Primeiro NPC: Você adiciona aqui os IDS dos itens que deseja, mas antes apaga os que tem dentro dos {}, e sempre que adicionar um ID coloca a ",", igual ta aqui \/

Segundo NPC: me fala como você quer a missão do npc que eu faço pra você!

 

Terceiro NPC: pra adicionar mais de uma cidade vai ter que fazer algumas alterações, esse ai só manda pra uma, deixa as posições de cada cidade que você quer e o nome de cada uma que faço pra você.

Primeiro NPC: sobre isso eu já entendi, mas sobre a quantidade de cada item aonde eu posso mexer ?

Segundo NPC:

O jogador poderia falar com o npc a qualquer level 

[Hi/Lista] ou [Hi/Missoes], ai aparecia uma lista com todas missões ai o jogador escolhe uma, [Hi/Lista/Nome/yes ou Hi/Nome/Yes], O npc mandaria ele catar items

Exemplo : Quantidade : 50 [ID: 2160], Quantidade : 30 [ID: 2159], Quantidade : 50 [ID: 2161] e em troca , daria 1 item pro jogador.

Obs: os exemplo que fiz a cima foram quantidades e IDS aleatórios, mas é praticamente isso que eu gostaria que o npc de missão funcionasse.

Teria 6 missões, as recompensas seria : 11990,11991,11992,11993,11994 e 11995.

 

Terceiro NPC: é que eu ainda não criei as cidades, tô montando elas ainda mas já tenho 3 pronta : Hakai City Position: 1024 1026 7 , Desert City Position: 1358 669 6  e Ice City Position: 592 829 7.

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

  • 0
  • Diretor
23 minutos atrás, NdboHakai disse:

@Up

Aqui no fórum comentar up ou bump no proprio tópico é proibido. Para isso existe o botão "up.png.8f80e31a2616fbc02f6ea18db3a80aac.png" que estará disponivel a cada 24hrs.

....

 

O NPC travel em que te enviei funcionou? Agora só falta o NPC2?

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

  • 0
20 minutos atrás, Yan Liima disse:

Aqui no fórum comentar up ou bump no proprio tópico é proibido. Para isso existe o botão "up.png.8f80e31a2616fbc02f6ea18db3a80aac.png" que estará disponivel a cada 24hrs.

....

 

O NPC travel em que te enviei funcionou? Agora só falta o NPC2?

Desculpe pelo error.

Testei o npc, mas não teria como proibir o jogador de falar a cidade antes do "viajar" não?

E aonde adiciono se quero a cidade premium ou não?

 

Sobre o Npc 2 sim

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

  • 0

Pro NPC de viajem, troca:
 

Spoiler

if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

 

Por:
 

Spoiler

if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1
end

if msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
7 minutos atrás, gabriel28 disse:

Pro NPC de viajem, troca:
 

  Ocultar conteúdo


if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1


elseif msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end
end

 

Por:
 

  Ocultar conteúdo


if msgcontains(msg, "viajar") then
selfSay("digite (templo)", cid)
talkState[talkUser] = 1
end

if msgcontains(msg, "templo") and talkState[talkUser] == 1 and isPremium(cid) == premium and isPlayerPzLocked(cid) == false then
selfSay("que assim seja", cid)
doTeleportThing(cid, postemplo)
doSendMagicEffect(getThingPos(cid), 10)
talkState[talkUser] = 0
end

 

 

Fazendo isso dá error na linha 35.

Mesmo assim testei adicionar +1 end ali no segundo end, e não retorna nenhum error e não teleporta o player.

 

O npc do @Yan Liima de viajar, tá sendo o que mais chegou perto do que eu queria, só faltou eu escolher qual cidade eu gostaria que seria premium.

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

  • 0

@NdboHakai
Vê agora. (mude todo o script)
 

Spoiler

local DESTINO = {x=1024, y=1026, z=7} -- POS
local DESTINO2 = {x=1358, y=669, z=6} -- POS
local DESTINO3 = {x=592, y=829, z=7} -- POS

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:lower())   end
function onThink()                  npcHandler:onThink()                  end
local talkState = {}
 
function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
      return false
   end
 
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
 if getCreatureCondition(cid, CONDITION_INFIGHT) == false then
 
   if msgcontains(msg, "viajar") then
   selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}", cid)
   talkState[talkUser] = 1
   npcHandler:addFocus(cid)
   end
   
   if msgcontains(msg, "hakai city") and talkState[talkUser] == 1 then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
   elseif msgcontains(msg, "desert city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
   elseif msgcontains(msg, "ice city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO3)
      doSendMagicEffect(DESTINO3, 10)
   end
   else
         selfSay("Desculpe, mas você está em batalha.", cid)
end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Link para o comentário
Compartilhar em outros sites

  • 0
4 minutos atrás, gabriel28 disse:

@NdboHakai
Vê agora. (mude todo o script)
 

  Ocultar conteúdo


local DESTINO = {x=1024, y=1026, z=7} -- POS
local DESTINO2 = {x=1358, y=669, z=6} -- POS
local DESTINO3 = {x=592, y=829, z=7} -- POS

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:lower())   end
function onThink()                  npcHandler:onThink()                  end
local talkState = {}
 
function creatureSayCallback(cid, type, msg)
   if(not npcHandler:isFocused(cid)) then
      return false
   end
 
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
 if getCreatureCondition(cid, CONDITION_INFIGHT) == false then
 
   if msgcontains(msg, "viajar") then
   selfSay("Posso te levar para: {Hakai City}, {Desert City}, {Ice City}", cid)
   talkState[talkUser] = 1
   npcHandler:addFocus(cid)
   end
   
   if msgcontains(msg, "hakai city") and talkState[talkUser] == 1 then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO)
      doSendMagicEffect(DESTINO, 10)
   elseif msgcontains(msg, "desert city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO2)
      doSendMagicEffect(DESTINO2, 10)
   elseif msgcontains(msg, "ice city") then
      selfSay("OK!", cid)
      doSendMagicEffect(getThingPos(cid), 10)
      npcHandler:releaseFocus(cid)
      doTeleportThing(cid, DESTINO3)
      doSendMagicEffect(DESTINO3, 10)
   end
   else
         selfSay("Desculpe, mas você está em batalha.", cid)
end
   return true
end
 
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

 

Desculpe, mas gostaria de saber oque você fez no npc? [Obs: o npc só precisava de 2 funções = Premium em cidade escolhida e Se possivel proibir viajar para alguma cidade sem falar "viajar" antes.

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

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...