LE
dúvida

[Erro] Npc Que Teleporta Com Item

Por Leoxtibia, 03 de jun. de 2012 em Scripts

script
19
2.9k
LeoxtibiaL
03 de junho de 2012 às 18:53

Aí galera, eu tenho o script desse Npc que teleporta se tiver X item, mas não deve remover o item.

 

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
local pos = {x=921,y=714,z=7} -------------- Pos para onde o player sera levado
local itemid = 2345 ----------------- Id do item que vai ser removido do player
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
if msgcontains(msg, "quest") or msgcontains(msg, "help") then
	selfSay("Eu posso te levar a um lugar por um "..getItemNameById(itemid).." fale {travel} se quiser viajar.", cid)
	talkState[cid] = 0
elseif msgcontains(msg, 'travel') then
   selfSay("Boa viagem.", cid)
 doTeleportThing(cid, pos)
 else
 selfSay("Voce nao tem o item necessario.", cid)
 end
 end
 return TRUE  
 end

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

 

Mas ta aparecendo o seguinte erro, alguém sabe como resolver ou teria um funcionando?

 

[03/06/2012 18:45:52] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/telequest.lua
[03/06/2012 18:45:52] data/npc/scripts/telequest.lua:31: '<eof>' expected near 'end'

Editado Junho 3 por Leoxtibia

Makelin1M
03 de junho de 2012 às 19:20

local keywordHandler = KeywordHandler:new()
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
local pos = {x=921,y=714,z=7} -------------- Pos para onde o player sera levado
local itemid = 2345 ----------------- Id do item que vai ser removido do player
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
    if msgcontains(msg, "quest") or msgcontains(msg, "help") then
		    selfSay("Eu posso te levar a um lugar por um "..getItemNameById(itemid).." fale {travel} se quiser viajar.", cid)
		    talkState[cid] = 0
    elseif msgcontains(msg, 'travel') then
	   selfSay("Boa viagem.", cid)
	 doTeleportThing(cid, pos)
	 doPlayerRemoveItem(cid,itemid,1)
	 else
	 selfSay("Voce nao tem o item necessario.", cid)
	 end
	 end
	 return TRUE
	 end

 

olha eu removi akilo escrito no fim então eu não sei se e o script que você não posto inteiro ai removi akilo e editei essa parte e estava sem a função de remover o item

ate

LeoxtibiaL
03 de junho de 2012 às 19:21

Certo, aquilo era o erro do distro... mas se eu não quiser que remova o item como faz?

Editado Junho 3 por Leoxtibia

Makelin1M
03 de junho de 2012 às 19:26

so ir no script e procura por isso

 

local itemid = 2345 ----------------- Id do item que vai ser removido do player

 

e remova isso

 

e dps também procure por isso

 

doPlayerRemoveItem(cid,itemid,1)

 

e pronto espero ter ajudado

ate

LeoxtibiaL
03 de junho de 2012 às 19:33

Não funcionou, eu retirei essa linha e mesmo assim não funcionou

doPlayerRemoveItem(cid,itemid,1)

Eu quero que o Npc só teleport se ele tiver o item 2345 mas que não remova o item =S

Makelin1M
03 de junho de 2012 às 19:35

então add essa função

 

getPlayerItemCount(cid,2345)

 

e pronto que vai funcionar

saulosS
03 de junho de 2012 às 19:39

smartbox ali no algoritmo local pos = {x=921,y=714,z=7} substituindo esse pos com lugar e o local colocano isso:{{x=129, y=53, z=6}, 1} nao funcionaria?

LeoxtibiaL
03 de junho de 2012 às 19:40

Não funcionou =S

saulosS
03 de junho de 2012 às 19:44

leo faz oque eu falei pro smartbox fazer vai fikar mais ou menos assim:

 

local keywordHandler =KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {}

local lugar = {{x=129, y=53, z=6}, 1} -------------- Pos para onde o player sera levado

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

if msgcontains(msg, "quest") or msgcontains(msg, "help") then

selfSay("Eu posso te levar a um lugar por um "..getItemNameById(itemid).." fale {travel} se quiser viajar.", cid)

talkState[cid] = 0

elseif msgcontains(msg, 'travel') then

selfSay("Boa viagem.", cid)

doTeleportThing(cid, pos)

doPlayerRemoveItem(cid,itemid,1)

else

selfSay("Voce nao tem o item necessario.", cid)

end

end

return TRUE

end

 

coloque o seguinte no script do seu npc:

 

<?xml version="1.0" encoding="UTF-8"?>

<npc name="nome do npc" script="data/npc/scripts/policial.lua" walkinterval="2000" speed="2000" floorchange="0">

<health now="100" max="100"/>

<look type="134" head="79" body="86" legs="114" feet="0" addons="3"/>

</npc>

Editado Junho 3 por saulins

LeoxtibiaL
03 de junho de 2012 às 19:44

Mas eu quero que o npc não verifique se ele tem o item, mas não remova. Aí vai remover não é?

saulosS
03 de junho de 2012 às 19:48

nao ue no meu script o npc so verifikara

 

na verdade meu script nao verificaria nada no caso eu nao sie oque fazer mas axo que fikaria legal se retirase assim você poderia ussar esse doll como donate

LeoxtibiaL
03 de junho de 2012 às 20:00

Não funciona também, será que alguém aí não sabe o erro ou tem um que possa teleportar caso o player tenha o item mas não o remova?

VodkartV
03 de junho de 2012 às 20:10
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 item,pos = 2123,{x=129, y=53, z=6}

if (msgcontains(msg, 'travel') or msgcontains(msg, 'viajar'))then
npcHandler:say("Você precisa ter na bag 1 "..getItemNameById(item).." para teleportar, você quer teleportar? {yes}", cid)
talkState[talkUser] = 1
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 1 then
if getPlayerItemCount(cid, item) >= 1 then  
doTeleportThing(cid, pos)
else
npcHandler:say("Você não tem o item!", cid)
end
elseif msg == "no" then  
selfSay("Then not", cid)  
talkState[talkUser] = 0  
npcHandler:releaseFocus(cid)  
end
return TRUE
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

LeoxtibiaL
03 de junho de 2012 às 20:12

Vlw mesmo velho! Funcionando certinho! Quando liberar o Rep te reputo ^^

Editado Junho 3 por Leoxtibia

Makelin1M
03 de junho de 2012 às 20:18

Duvida Sanada Tópico reportado