Ir para conteúdo
Banner com Efeitos

Featured Replies

Postado

.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())

 

w31Cm4K.png

 

PokeWorks-Pokemon Rpg Online

venha Fazer parte dessa Incrivel Aventura

Criar Conta

____________##___________

Object Builder 0.5.441 

  • Respostas 7
  • Visualizações 841
  • Created
  • Última resposta

Top Posters In This Topic

Postado
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
				if getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, name) then
					selfSay('Sorry, your pokemon not have nickname', cid)
					talkState[talkUser] = 0
				end	
				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())   

 

Postado
  • Autor

deu este erro

 I/O warning : failed to load external entity "data/npc/Billy Fantasy.xml"
[Warning - Npc::loadFromXml] Cannot load npc file (data/npc/Billy Fantasy.xml).
Info: failed to load external entity "data/npc/Billy Fantasy.xml"

 

w31Cm4K.png

 

PokeWorks-Pokemon Rpg Online

venha Fazer parte dessa Incrivel Aventura

Criar Conta

____________##___________

Object Builder 0.5.441 

Postado
16 horas atrás, jenison06 disse:

deu este erro

 I/O warning : failed to load external entity "data/npc/Billy Fantasy.xml"
[Warning - Npc::loadFromXml] Cannot load npc file (data/npc/Billy Fantasy.xml).
Info: failed to load external entity "data/npc/Billy Fantasy.xml"

 

não é erro no script, é erro no xml

Postado
  • Autor

nussa mosquei no Npc agora nao passa da parte

20:15 Billy Fantasy: Sorry, but I have nothing to talk to you.

 

 

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 = 7750
	local checkQuest = getPlayerStorageValue(cid,questSt)
	local playerPos = getCreaturePosition(cid)
	local playerLevel = getPlayerLevel(cid)
	local questLevel = 10
	local tab = {
		[1] = {fName = "Thor Costume", fId = 17487, pName = "Addon Electabuzz"},
	}

	if(msgcontains(msg, 'Fantasy')) 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 addon 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, Billy Fantasy has given you the '..tab[checkQuest].fName..'. After many years of study and dedication, I discovered a new method to crafit fantasy pokemon. 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
				if getItemAttribute(getPlayerSlotItem(cid, CONST_SLOT_FEET).uid, name) then
					selfSay('Sorry, your pokemon not have nickname', cid)
					talkState[talkUser] = 0
				end	
				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())

 

w31Cm4K.png

 

PokeWorks-Pokemon Rpg Online

venha Fazer parte dessa Incrivel Aventura

Criar Conta

____________##___________

Object Builder 0.5.441 

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Conteúdo Similar

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.7k

Informação Importante

Confirmação de Termo