Ir para conteúdo
  • 0

Duuhzinhow

Pergunta

Galera eu nao sei se é muito complexo ou nao, mas assim eu quero um npc que te teleporte para coordenadas "x=...y=...z=.."Mas apenas teleportar se o player tiver 9 itens de id diferente (Configuravel). Mas assim, caso o player pague esses itens uma vez, na proxima n ira precisar pagar.

 

Bem, espero que possam me ajudar, qualquer duvida sobre como quero só perguntar ai.. vlw!

 

Rep+

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Npc.lua

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 pos = {x= 1, y= 2, z= 3} -- posição pra onde sera teleportado
local itemid = {2382, 12252, 12253, 12254, 12255, 12256, 12257, 12258, 2160} --items que precisa pra pode passa
 
 
if(msgcontains(msg, 'yes') then
if getPlayerStorageValue(cid, 21321312312) == 1
doTeleportThing(cid, pos)
selfSay('Voce foi teleportado.', cid)
elseif getPlayerItemCount(cid, itemid) >= 1 then
doPlayerSetStorageValue(cid, 21321312312, 1)
doTeleportThing(cid, pos)
selfSay('Voce foi teleportado.', cid)
else
selfSay('Voce nao tem os items nessessarios.', cid)
end
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Npc.xml

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Nome do npc" script="Nome do Script.lua" walkinterval="0" floorchange="0">
                <health now="100" max="100"/>
                <look type="128" head="17" body="54" legs="114" feet="0" addons="2"/>
                <parameters>
                                <parameter key="message_greet" value="Oi |PLAYERNAME|, Voce que ser teleportado diga {yes}."/>
                </parameters>
</npc>

testa ai qualquer erro fala que eu resolvo.

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

  • 0

Deu esse erro aqui : [19/02/2014 22:23:24] [Error - LuaScriptInterface::loadFile] data/npc/scripts/teleporta.lua:20: ')' expected near 'then'

[19/02/2014 22:23:24] [Warning - NpcScript::NpcScript] Cannot load script: data/npc/scripts/teleporta.lua
[19/02/2014 22:23:24] data/npc/scripts/teleporta.lua:20: ')' expected near 'then'
Link para o comentário
Compartilhar em outros sites

  • 0

ta ae ..

 

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 pos = {x= 160, y= 54, z= 7}
local items = {2195, 
                2641, 
                7886, 
                2640, 
                2190, 
                2383, 
                2643, 
                7424, 
                2520}


local check = 0


local storage = 1015 


 if msgcontains(msg, 'yes') then
      if getPlayerStorageValue(cid, storage) <= 0 then
         for i = 1, #items do
           if getPlayerItemCount(cid, items[i]) >= 1 then
              check = check + 1
           end
         end
             if check == #items then
                doTeleportThing(cid, pos)
                  for j = 1, #items do
                   doPlayerRemoveItem(cid, items[j], 1)
                  end
                selfSay('Parabéns, Você foi teleportado.', cid)
                setPlayerStorageValue(cid, storage, 1)
             else
                selfSay('Voce precisa de todos os items.', cid)
             end
      else 
            doTeleportThing(cid, pos)
            selfSay('Parabéns, Você foi teleportado.', cid)
      end
      
 elseif msgcontains(msg, 'no') then
       selfSay('Ok, então', cid)
 end


return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado por DuuhCarvalho
Link para o comentário
Compartilhar em outros sites

  • 0

Para checar se o jogador possui os 9 items, eu recomendaria fazer assim:

 

local items = {ids}
local check = 0
    for i = 1, #items do
        if getPlayerItemCount(cid, items[i]) >= 1 then
            check = check + 1
        end
    end
    if check == #items then
        ...
    else
        ...
    end
Link para o comentário
Compartilhar em outros sites

  • 0

 

Para checar se o jogador possui os 9 items, eu recomendaria fazer assim:

local items = {ids}
local check = 0
    for i = 1, #items do
        if getPlayerItemCount(cid, items[i]) >= 1 then
            check = check + 1
        end
    end
    if check == #items then
        ...
    else
        ...
    end

 

verdade mano. Acho que do jeito que eu tinha feito se o player não tivesse os 9 items o removia os items que o player tinha e não era teleportado.

 

agora vai funcionar direitinho . editei lá .

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

  • 0

sera possible modificar para que remova X cantidad de Items

 

exemplo:

2195, 100,

2145, 50,

2160, 20,

 

testa ae ..

o seu eu fiz assim :

 

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 pos = {x= 160, y= 54, z= 7} -- posição pra onde o player vai ser teleportado

local storage = 1015 -- storage que ganha (assim ele só paga os items 1 vez)

local item1 = 2195  -- id do item 1
local item2 = 2145  -- id do item 2
local item3 = 2160  -- id do item 3

local quant1 = 100 -- quanto vai remover do item 1
local quant2 = 50  -- quanto vai remover do item 2
local quant3 = 20  -- quanto vai remover do item 3

 if msgcontains(msg, 'yes') then
      
      if getPlayerStorageValue(cid, storage) <= 0 then
           if doPlayerRemoveItem(cid, item1, quant1) and doPlayerRemoveItem(cid, item2, quant2) and doPlayerRemoveItem(cid, item3, quant3) then
                doTeleportThing(cid, pos)
                selfSay('Parabéns, Você foi teleportado.', cid)
                setPlayerStorageValue(cid, storage, 1)
           else
                selfSay('Voce precisa de todos os items.', cid)
           end
      else 
            doTeleportThing(cid, pos)
            selfSay('Parabéns, Você foi teleportado.', cid)
      end
      
 elseif msgcontains(msg, 'no') then
       selfSay('Ok, então', cid)
 end

return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Editado por DuuhCarvalho
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...