.Qual servidor ou website você utiliza como base?
pokestorm
Qual o motivo deste tópico?
Ajuda com Adaptação
Salve Galera queria saber se é possivel fazer com que o npc troca o item pelo pokemon como abaixo e apenas aceitar a troca se setar o Nick no pokemon
Você tem o código disponível? Se tiver publique-o aqui:
Abaixo Npc que troca Item por poke
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 questSt = 6650
local checkQuest = getPlayerStorageValue(cid,questSt)
local playerPos = getCreaturePosition(cid)
local playerLevel = getPlayerLevel(cid)
local questLevel = 100
local tab = {
[1] = {fName = "Dome Fossil", fId = 8776, pName = "Kabuto"},
[2] = {fName = "Helix Fossil", fId = 8777, pName = "Omanyte"},
[3] = {fName = "Ancient Fossil", fId = 8775, pName = "Aerodactyl"},
}
if(msgcontains(msg, 'Harry')) then
if checkQuest < 1 then -- Quer saber mais
selfSay('Sorry, but I have nothing to talk to you.', cid)
elseif checkQuest >= 1 and checkQuest <= 3 then -- Quer saber mais mas já fez a Parte 1.
selfSay('Oh! How is my husband? Is he fine? There are two years since I last seen him! By the way, are you here to give me {something}?', cid)
talkState[talkUser] = 1
else -- Quer saber mais mas já fez a Parte Final.
selfSay('How are you doing with your ancient pokémon?', cid)
end
elseif(msgcontains(msg, 'Something') and talkState[talkUser] == 1) then -- Tem algo pra dar
talkState[talkUser] = 2
selfSay('Yes, as I expected. Let me check one thing.', cid)
selfSay('As I see, Harry has given you the '..tab[checkQuest].fName..'. After many years of study and dedication, I discovered a method to bring fossils back to life. Do you want me to transform your '..tab[checkQuest].fName..' into '..tab[checkQuest].pName..'? Just say {yes} or {no}.', cid)
elseif talkState[talkUser] == 2 then
if msgcontains(msg, 'Yes') then -- Quer transformar o fossil
if getPlayerItemCount(cid, tab[checkQuest].fId) >= 1 then
selfSay('Fine then! There it is, your '..tab[checkQuest].fName..' has been transformed into '..tab[checkQuest].pName..'! Congratulations!', cid)
if #getPlayerPokeballs(cid) >= 6 then
local newpokeball = doCreatePokeball(tab[checkQuest].pName, 2469)
doPlayerSendMailByName(getCreatureName(cid), newpokeball)
doPlayerSendTextMessage(cid, 27, "You are holding six pokémons, your ("..tab[checkQuest].pName..") will be teleported to the Pokemon Center!")
else
local newpokeball = doCreatePokeball(tab[checkQuest].pName, 2470)
doPlayerAddItemEx(cid, newpokeball)
end
doPlayerRemoveItem(cid, tab[checkQuest].fId, 1)
doSendMagicEffect(playerPos, 162)
doSendMagicEffect(playerPos, 28)
addEvent(doSendMagicEffect, 600, playerPos, 29)
addEvent(doSendMagicEffect, 1200, playerPos, 28)
setPlayerStorageValue(cid, questSt, 4)
else
selfSay("Sorry, but you have no "..tab[checkQuest].fName.." with you.",cid)
end
talkState[talkUser] = 0
elseif msgcontains(msg, 'No') then -- Nao quer transformar o fossil
selfSay('Right then. Then come back when you want it!', cid)
talkState[talkUser] = 1
end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())
Npc Nick que uso na Base
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
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
NickQuestStorage = 8850
NickQuestBookId = 1955
NickQuestGameBoyId = 2630
local questStatus = getPlayerStorageValue(cid, NickQuestStorage)
local playerLevel = getPlayerLevel(cid)
if msgcontains(msg, "nicknames") then
if isPremium(cid) then
if playerLevel >=50 then
if questStatus == -1 then
selfSay("Before I give nicknames to your pokemons, can you do some favours to me?", cid)
selfSay("I need a book that I lent to Albert, because it contains so much information that I use in my job. Last time I visited Albert he was living in a little house, in the east of Viridian.", cid)
setPlayerStorageValue(cid, NickQuestStorage, 0)
elseif questStatus == 0 then
selfSay("I need a book that I lent to Albert, because it contains so much information that I use in my job. Last time I visited Albert he was living in a little house, in the east of Viridian.", cid)
elseif questStatus == 1 then
if doPlayerRemoveItem(cid, NickQuestBookId, 1) then
setPlayerStorageValue(cid, NickQuestStorage, 2)
selfSay("Thank you! I was really missing this book. Now just one more favour, can you get my Game Boy, which is with Ralf? I left with him to fix it, his workshop is in Celadon.", cid)
else
selfSay("I need a book that I lent to Albert, because it contains so much information that I use in my job. Last time I visited Albert he was living in a little house, in the east of Viridian.", cid)
end
elseif questStatus == 2 then
selfSay("Can you get my Game Boy, which is with Ralf? I left with him to fix it, his workshop is in Celadon.", cid)
elseif questStatus == 3 then
if doPlayerRemoveItem(cid, NickQuestGameBoyId, 1) then
setPlayerStorageValue(cid, NickQuestStorage, 4)
selfSay("Thank you VERY MUCH! Now my son won't cry no more and I can do my job tranquil. Do you want me to give {nicknames} to your pokemons?", cid)
else
selfSay("Can you get my Game Boy, which is with Ralf? I left with him to fix it, his workshop is in Celadon.", cid)
end
elseif questStatus >= 4 then
selfSay("Oh, ok. Would you like to {give} or {remove} a nickname?", cid)
talkState[talkUser] = 1
end
else
selfSay("Sorry, come back when you are level 50 or higher.", cid)
end
else
selfSay("Hey, I'm so sorry, but you must be premium account to give nicknames to your pokemons", cid)
end
elseif talkState[talkUser] == 1 then
if msgcontains(msg, "give") then
selfSay("Oh, ok. Which nickname would you like to give to the pokemon in the slot?", cid)
talkState[talkUser] = 2
elseif msgcontains(msg, "remove") then
selfSay("Oh, ok. You want to remove the nickname to the pokemon in the slot for 5K?", cid)
talkState[talkUser] = 3
end
elseif talkState[talkUser] == 2 then
local msg = msg:trim()
if msg:len() < 4 then
selfSay("This nickname is too short.", cid)
elseif msg:len() > 15 then
selfSay("This nickname is too long.", cid)
elseif not isValidName(msg) then
selfSay("This name contains invalid symbols.", cid)
elseif getMonsterPokedex(msg, false) then
selfSay("You can't use other's pokemon name.", cid)
else
selfSay("Would you like to give the nickname \""..msg.."\" to the pokemon in the slot for 10K?", cid)
talkState[talkUser] = msg
end
elseif talkState[talkUser] == 3 then
if msgcontains(msg, "yes") then
local pokeball = getPlayerSlotItem(cid, CONST_SLOT_FEET)
if isPokeballOut(pokeball.itemid) then
selfSay("Call your pokemon back before changing his nickname.", cid)
elseif isPokeballIn(pokeball.itemid) then
if doPlayerRemoveMoney(cid, 500000) then
local pokeballInfo = getPokeballInfo(pokeball.uid)
setPokeballDescription(pokeball.uid, pokeballInfo.name, false, pokeballInfo.health, pokeballInfo.healthmax)
selfSay("Now your pokemon not have a nickname!", cid)
else
selfSay("Sorry, you don't have 5K.", cid)
end
else
selfSay("There's no pokeball in the slot!", cid)
end
else
selfSay("Ok then.", cid)
end
talkState[talkUser] = 0
elseif type(talkState[talkUser]) == "string" then
if msgcontains(msg, "yes") then
local pokeball = getPlayerSlotItem(cid, CONST_SLOT_FEET)
if isPokeballOut(pokeball.itemid) then
selfSay("Call your pokemon back before changing his nickname.", cid)
elseif isPokeballIn(pokeball.itemid) then
if doPlayerRemoveMoney(cid, 1000000) then
local pokeballInfo = getPokeballInfo(pokeball.uid)
setPokeballDescription(pokeball.uid, pokeballInfo.name, talkState[talkUser], pokeballInfo.health, pokeballInfo.healthmax)
selfSay("Now your pokemon have a new nickname! Enjoy it :)", cid)
else
selfSay("Sorry, you don't have 10K.", cid)
end
else
selfSay("There's no pokeball in the slot!", cid)
end
elseif msgcontains(msg, "no") then
selfSay("Why not? This nickname was so good!", cid)
end
talkState[talkUser] = 0
else
talkState[talkUser] = 0
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())