Ir para conteúdo

Npc de Troca para PDA


Posts Recomendados

Boa Tarde galera, hoje eu vim trazer um npc que um amigo meu fez, e que eu gostei e irei posta-lo para vocês.

 

Ele funciona da seguinte forma: você precisa de 3 Items (se quiser colocar mais e só adicionar mais uma linha, vou fazer uma explicação depois) no meu caso, eu coloquei o Old amber, Dome Fossil, e Helix Fossil. e então eu chego no NPC, e falo: Hi, Help, e ele irá perguntar se você está com os itens que ele pediu, ai então você diz: Yes, e ele te entrega um aerodactyl (pode modifica-lo tambem). entao vamos ao script:

 

separador+blog.jpg

 

Vá em data/npc/script/ e cria um arquivo .lua, e cole isso:

 

 

--//
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
msg = string.lower(msg)
--\\

local need = {
--item id....quantidade
{id = 12579, qt = 1},
{id = 12580, qt = 1},
{id = 12581, qt = 1},
}
local storage = 83497 -- nem mexe
local pokemon = "Aerodactyl" -- nome do poke q vai ganha..lembrando que n tenho 100% q vai funfa ;x
--//

if msgcontains(string.lower(msg), 'city') or msgcontains(string.lower(msg), 'help') then
if getPlayerStorageValue(cid, storage) == 1 then
selfSay("você já completou minha quest!", cid)
return true
end
--//
selfSay("olá, você gostaría de trocar alguns itens e em troca eu dou um pokémon? os items necessaríos são {Old amber, Dome Fossil, Helix Fossil}!", cid)
talkState[talkUser] = 2
return true
elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
if getPlayerItemCount(cid, need[1].id) < need[1].qt or getPlayerItemCount(cid, need[2].id) < need[2].qt or getPlayerItemCount(cid, need[3].id) < need [3].qt then
selfSay("você não tem todos itens necessaríos que eu pedi, volte aqui quando tive-los todos!", cid)
return true
end
for i = 1, #need do
doPlayerRemoveItem(cid, need.id, need.qt)
end
addPokeToPlayer(cid, pokemon, 0, 1, 'normal', true)
selfSay("nossa muito bom, obrigado e faça um bom proveito do seu novo pokémon!", cid)
setPlayerStorageValue(cid, storage, 1)
talkState[talkUser] = 0
return true
end
return true
end

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

 

 

separador+blog.jpg

 

Explicação:

 

Azul: você coloca o id dos items, e se quiser colocar mais do que 3 items, é so fazer assim:

{id = 12579, qt = 1},
{id = 12580, qt = 1},
{id = 12581, qt = 1},

{id = 12581, qt = 1}, << assim, é so da um enter, copiar e colar. ai e só mudar o id.

 

Verde: você coloca a quantidade de items que precisa para completar oque o NPC pede.

Vermelho: você escolhe o Pokemon que você queira que receba.

 

separador+blog.jpg

 

Agorá vá em data/npc/ e cria um arquivo em XML, e cole isso:

 

<?xml version="1.0" encoding="UTF-8"?>
<npc name="Lyu" script="troca.lua" walkinterval="0" floorchange="0" access="5" level="100" maglevel="1">
<health now="15" max="15"/>
<look type="516" head="114" body="119" legs="114" feet="114" corpse="3058"/>
 
<parameters>
<parameter key="message_greet" value="Ola |PLAYERNAME|, oque voce quer de min?"/>
</parameters>
</npc>
Você pode colocar o nome que quiser . eu só deixei Lyu porque gostei do nome.
separador+blog.jpg
Creditos:
Eu (por postar o NPC)
Stylo maldoso (Por criar o NPC)
Comentem ai galera, flws.
Editado por SamueLGuedes
Link para o comentário
Compartilhar em outros sites

 

 

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
msg = string.lower(msg)
 
local need = {
--item id....quantidade
{id = 12579, qt = 1},
{id = 12580, qt = 1},
{id = 12581, qt = 1},
}
local storage = 83497
local pokemon = "Aerodactyl"   
               -- // --
   
 if msgcontains(string.lower(msg), 'help') or msgcontains(string.lower(msg), 'help') then
         if getPlayerStorageValue(cid, storage) == 1 then
             selfSay("você já completou minha quest!", cid)
               talkState[talkUser] = 0
                 return true
                            end      
 selfSay("olá, você gostaría de trocar alguns itens e em troca eu dou um pokémon? os items necessaríos são {Old amber, Dome Fossil, Helix Fossil}!", cid)
 talkState[talkUser] = 2
   return true
 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
         for i = 1, #need do
          if getPlayerItemCount(cid, need[i].id) <need[i].qt then
            selfSay("você não tem todos itens necessaríos que eu pedi, volte aqui quando tive-los todos!", cid)
              talkState[talkUser] = 0
                return true
            end
        end     
            if not addPokeToPlayer(cid, pokemon, 0, -1, "normal", true) then
                selfSay("você esta com 6 pokemons na sua bag, volte aqui contendo espaço para o seu novo pokemon!", cid)
             talkState[talkUser] = 0
             return true
          end
             for i = 1, #need do
                doPlayerRemoveItem(cid, need[i].id, need[i].qt)
            end
 selfSay("nossa muito bom, obrigado e faça um bom proveito do seu novo pokémon!", cid)
   setPlayerStorageValue(cid, storage, 1)
   talkState[talkUser] = 0
                    return true
                end
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

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

@Smix

 

Nossa! surprendido pelo seu comentarío.

 

 

 

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
msg = string.lower(msg)
 
local need = {
--item id....quantidade
{id = 12579, qt = 1},
{id = 12580, qt = 1},
{id = 12581, qt = 1},
}
local storage = 83497
local pokemon = "Aerodactyl"   
               -- // --
   
 if msgcontains(string.lower(msg), 'help') or msgcontains(string.lower(msg), 'help') then
         if getPlayerStorageValue(cid, storage) == 1 then
             selfSay("você já completou minha quest!", cid)
               talkState[talkUser] = 0
                 return true
                            end      
 selfSay("olá, você gostaría de trocar alguns itens e em troca eu dou um pokémon? os items necessaríos são {Old amber, Dome Fossil, Helix Fossil}!", cid)
 talkState[talkUser] = 2
   return true
 elseif msgcontains(msg, 'yes') and talkState[talkUser] == 2 then
         for i = 1, #need do
          if getPlayerItemCount(cid, need[i].id) <need[i].qt then
            selfSay("você não tem todos itens necessaríos que eu pedi, volte aqui quando tive-los todos!", cid)
              talkState[talkUser] = 0
                return true
            end
        end     
            if not addPokeToPlayer(cid, pokemon, 0, -1, "normal", true) then
                selfSay("você esta com 6 pokemons na sua bag, volte aqui contendo espaço para o seu novo pokemon!", cid)
             talkState[talkUser] = 0
             return true
          end
             for i = 1, #need do
                doPlayerRemoveItem(cid, need[i].id, need[i].qt)
            end
 selfSay("nossa muito bom, obrigado e faça um bom proveito do seu novo pokémon!", cid)
   setPlayerStorageValue(cid, storage, 1)
   talkState[talkUser] = 0
                    return true
                end
    return true
end
 
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

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

  • 1 month later...
×
×
  • Criar Novo...