Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] Script NPC


Ir para solução Resolvido por jhonyirie,

Posts Recomendados

Olá galera do TK, queria um script de NPC que o player só consiga ser teleportado se ele não estiver PZ e nem PK

 

Caso queiram saber, o meu script é esse...

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local talkState = {}
 
local pos = {x=513,y=57,z=0}
local itemid = 2160
 
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, "offer") or msgcontains(msg, "help") then
        selfSay("Para Prosseguir Com Sua Jornada "..getItemNameById(itemid).."Diga yes.", cid)
        talkState[cid] = 0
    elseif msgcontains(msg, 'yes') then
       if doPlayerRemoveItem(cid, itemid, 0) then
        selfSay("Adeus!.", cid)
     doTeleportThing(cid, pos)
     else
     selfSay("Voce nao tem o item nescessario.", cid)
     end
     end
     return TRUE   
     end
     
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Link para o post
Compartilhar em outros sites

Arrumei o script e adicionei a função desejada:

local t = {
    pos = {x = 160, y = 57, z = 7},
    itemid = {2160, 1}
}

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)
   local msg = msg:lower();
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
   if(not npcHandler:isFocused(cid)) then
   return false
   end

    if msgcontains(msg, "offer") or msgcontains(msg, "help") then
       if isPlayerPzLocked(cid) == false then
          selfSay("Para prosseguir em sua jornada você deve me entregar "..t.itemid[2].." "..getItemNameById(t.itemid[1])..", deseja continuar?", cid)
          talkState[talkUser] = 1
       else
          selfSay("Você não pode prosseguir em batalha.", cid)
       end
    elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
       if doPlayerRemoveItem(cid, t.itemid[1], t.itemid[2]) then
          selfSay("Adeus.", cid)
          doTeleportThing(cid, t.pos)
       else
          selfSay("Você não tem "..t.itemid[2].." "..getItemNameById(t.itemid[1])..".", cid)
          talkState[talkUser] = 0
       end
    end
  return true
end
     
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Link para o post
Compartilhar em outros sites

 

Arrumei o script e adicionei a função desejada:

local t = {
    pos = {x = 160, y = 57, z = 7},
    itemid = {2160, 1}
}

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)
   local msg = msg:lower();
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
   if(not npcHandler:isFocused(cid)) then
   return false
   end

    if msgcontains(msg, "offer") or msgcontains(msg, "help") then
       if isPlayerPzLocked(cid) == false then
          selfSay("Para prosseguir em sua jornada você deve me entregar "..t.itemid[2].." "..getItemNameById(t.itemid[1])..", deseja continuar?", cid)
          talkState[talkUser] = 1
       else
          selfSay("Você não pode prosseguir em batalha.", cid)
       end
    elseif msgcontains(msg, "yes") and talkState[talkUser] == 1 then
       if doPlayerRemoveItem(cid, t.itemid[1], t.itemid[2]) then
          selfSay("Adeus.", cid)
          doTeleportThing(cid, t.pos)
       else
          selfSay("Você não tem "..t.itemid[2].." "..getItemNameById(t.itemid[1])..".", cid)
          talkState[talkUser] = 0
       end
    end
  return true
end
     
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

Não funciona esse script, quando falo Yes não acontece nada...

Link para o post
Compartilhar em outros sites

Que estranho, eu testei e está normal, tente assim:

local t = {
    pos = {x = 160, y = 57, z = 7},
    itemid = {2160, 1}
}

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)
   local msg = msg:lower();
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
   if(not npcHandler:isFocused(cid)) then
   return false
   end

    if msgcontains(msg, "offer") or msgcontains(msg, "help") then
       if isPlayerPzLocked(cid) == false then
          selfSay("Para prosseguir em sua jornada você deve me entregar "..t.itemid[2].." "..getItemNameById(t.itemid[1])..", deseja continuar?", cid)
          talkState[talkUser] = 1
       else
          selfSay("Você não pode prosseguir em batalha.", cid)
       end
    elseif msgcontains(msg, "yes") then
       if talkState[talkUser] == 1 then
          if doPlayerRemoveItem(cid, t.itemid[1], t.itemid[2]) then
             selfSay("Adeus.", cid)
             doTeleportThing(cid, t.pos)
          else
             selfSay("Você não tem "..t.itemid[2].." "..getItemNameById(t.itemid[1])..".", cid)
             talkState[talkUser] = 0
          end
       end
    end
  return true
end
     
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Link para o post
Compartilhar em outros sites

 

Que estranho, eu testei e está normal, tente assim:

local t = {
    pos = {x = 160, y = 57, z = 7},
    itemid = {2160, 1}
}

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)
   local msg = msg:lower();
   local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid
   if(not npcHandler:isFocused(cid)) then
   return false
   end

    if msgcontains(msg, "offer") or msgcontains(msg, "help") then
       if isPlayerPzLocked(cid) == false then
          selfSay("Para prosseguir em sua jornada você deve me entregar "..t.itemid[2].." "..getItemNameById(t.itemid[1])..", deseja continuar?", cid)
          talkState[talkUser] = 1
       else
          selfSay("Você não pode prosseguir em batalha.", cid)
       end
    elseif msgcontains(msg, "yes") then
       if talkState[talkUser] == 1 then
          if doPlayerRemoveItem(cid, t.itemid[1], t.itemid[2]) then
             selfSay("Adeus.", cid)
             doTeleportThing(cid, t.pos)
          else
             selfSay("Você não tem "..t.itemid[2].." "..getItemNameById(t.itemid[1])..".", cid)
             talkState[talkUser] = 0
          end
       end
    end
  return true
end
     
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

mesma coisa :/

Link para o post
Compartilhar em outros sites

Algum erro na distro?, me passe o script com sua configuração pra eu dar uma olhada.

não aparece nada na distro, o player só não é teleportado para o local '-'

aquele primeiro script que mandei é o original, com ele funciona normal, porém player sem PZ pode ser teletransportado,,,

Editado por 36312872 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Você alterou a 
    pos = {x = 160, y = 57, z = 7},
para o lugar desejado? talvez seja isso

misM6ca.png

vVmiKPu.png


"Não importa o quanto tente, você sozinho não pode mudar o mundo. Mas este é o lado bonito do mundo."

Link para o post
Compartilhar em outros sites
  • Solução

Você alterou a 

    pos = {x = 160, y = 57, z = 7},

para o lugar desejado? talvez seja isso

sim mudei, mas ele não vai do msm jeito...

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo