Ir para conteúdo
  • 0

[Npc] De Troca!


vocriaumot

Pergunta

Pessoal estou mechendo com um globalfull 9.6 e quero saber como posso fazer um npc de troca!

Exemplo:

 

o Npc pega 100 Fish_Fin.gifFish Fin e 50 Ape_Fur.gifApe Fur e troca por 1 Huge_Chunk_of_Crude_Iron.gifHuge Chunk of Crude Iron.

 

e tambem preciso de outro npc que troque. 20 Demon Dust Demon_Dust.gif, 30 Vampire Dust Vampire_Dust.gif, 10 Iron Ore Iron_Ore.gif, 5 Ankh Ankh.gif e 1 Spool of Yarn Spool_of_Yarn.gif ai ele troca tudo isso por 1 Soul Stone Soul_Stone.gif e 5 Enchanted Chicken Wing Enchanted_Chicken_Wing.gif.

 

 

só quero saber como faço esses npc de troca para algumas quest q eu mesmo estou fazendo no meu servidor.

 

+REP pra quem me ajudar

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

aqui o npc 1

data\npc\scripts\nomedoarquivo.lua

tem que editar ja deixei pra vc configurar

------------------- By Notle -------------------
local keywordHandler = KeywordHandler:new()																																																	  
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local troca = {
2163,100,
2160,50			  -- aqui vc edita os ID do item que tem que ter  e quantos
}
local id = 2160   --- id do item que vai ganhar dps da troca
local quant = 1 -- item que ganhar Contém quantos?
local sto = 1585 --  Storage
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 msgcontains(msg, 'trocaitem') then
status = getPlayerStorageValue(cid,sto)
if status == -1 then
if doPlayerRemoveItem(cid,troca[1],troca[2]) and doPlayerRemoveItem(cid,troca[3],troca[4])then
doPlayerAddItem(cid,id,quant)
setPlayerStorageValue(cid,sto,1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "coloca um texto aqui")   -- edita aqui
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você Não Contém Uns Dos Itens Não Posso Troca.")  -- edita aqui
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não Pode Troca De novo")
end
return TRUE
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

data\npc\nomedoarquivo.xml

<npc name="NOMEDONPC" script="data/npc/scripts/nomedoarquivo.lua" walkinterval="2000" floorchange="0">
	<health now="100" max="100"/>
	<look type="134" head="78" body="88" legs="0" feet="88" addons="3"/>
					<parameters>
													<parameter key="message_greet" value="Ola. Para mais informacoes de meus servicos diga {trocaitem}." />
													<parameter key="message_farewell" value="Tchau." />
													<parameter key="message_walkaway" value="Tchau." />
					</parameters>
</npc>

 

edita os em red

local troca = {

2163,100,

2160,50 -- aqui vc edita os ID do item que tem que ter e quantos

}

local id = 2160 --- id do item que vai ganhar dps da troca

local quant = 1 -- item que ganhar Contém quantos?

 

NPC 2

------------------- By Notle -------------------
local keywordHandler = KeywordHandler:new()																																																	  
local npcHandler = NpcHandler:new(keywordHandler)
NpcSystem.parseParameters(npcHandler)
local troca = {
2160,20,
2161,30,
2162,10,
2163,5,
2164,1			 -- aqui vc edita os ID do item que tem que ter  e quantos
}
local id = {2160,2161}   --- id do item que vai ganhar dps da troca
local qnt = {1,5} -- item que ganhar Contém quantos?
local sto = 7552 --  Storage
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 msgcontains(msg, 'trocaitem') then
status = getPlayerStorageValue(cid,sto)
if status == -1 then
if doPlayerRemoveItem(cid,troca[1],troca[2]) and doPlayerRemoveItem(cid,troca[3],troca[4]) and doPlayerRemoveItem(cid,troca[5],troca[6]) and doPlayerRemoveItem(cid,troca[7],troca[8]) and doPlayerRemoveItem(cid,troca[9],troca[10]) then
doPlayerAddItem(cid,id[1],qnt[1])
doPlayerAddItem(cid,id[2],qnt[2])
setPlayerStorageValue(cid,sto,1)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "coloca um texto aqui")   -- edita aqui
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você Não Contém Uns Dos Itens Não Posso Troca.")  -- edita aqui
end
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você não Pode Troca De novo")
end
return TRUE
end
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

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

  • 0

Vamos lá amigo, caso o do amigo acima não funcione teste esse, mais simples e bem simplificado.. crie um arquivo.lua na pasta npc com isto dentro ...

 

 

local keywordHandler = KeywordHandler:new()

local npcHandler = NpcHandler:new(keywordHandler)

NpcSystem.parseParameters(npcHandler)

local talkState = {20}

local focus = 0

local talk_start = 0

local target = 0

local following = false

local attacking = false

 

 

storage = 10007 --storage id

item = 8855 -- feather, ou outro item q ele pede pra buscar

quantiitem = 50 -- quantidade de item q precisa pegar

premio1 = 2278 -- item do premio no caso dinheiro

quant1 = 1 -- quantidade do premio

pexp = 3000 -- experiencia do premio

 

 

 

 

 

 

 

function msgcontains(txt, str)

return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end

 

 

 

 

function onThingMove(creature, thing, oldpos, oldstackpos, item, itemEx)

 

end

 

function onCreatureAppear(creature)

 

end

 

 

function onCreatureDisappear(cid, pos)

if focus == cid then

selfSay('Good bye then.',cid)

focus = 0

talk_start = 0

talkState[talkUser] = 0

end

end

function onCreatureTurn(creature)

 

end

 

function msgcontains(txt, str)

return (string.find(txt, str) and not string.find(txt, '(%w+)' .. str) and not string.find(txt, str .. '(%w+)'))

end

 

 

function onCreatureSay(cid, type, msg)

 

local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid

 

if getDistanceToCreature(cid) > 4 then

return false

end

 

if talkState[talkUser] ~= 3 then

msg = string.lower(msg)

end

 

if (msgcontains(msg, 'hi')) then

 

if #getCreatureSummons(cid) >= 1 then

selfSay('Please back your Pokemon to the pokeball...', cid)

focus = 0

talkState[talkUser] = 1

return false

end

 

if getPlayerStorageValue(cid, 17001) == 1 then

focus = 0

talkState[talkUser] = 1

 

selfSay('You Are riding .', cid)

return false

end

if getPlayerStorageValue(cid, 7778) >= 1 then

focus = 0

talkState[talkUser] = 1

selfSay('You are using ability.', cid)

return false

end

 

fala = "olá! eu preciso urgente de 50 bat wing para um projeto meu... pode me ajudar?"

 

selfSay(fala,cid)

talkState[talkUser] = 1

elseif ( ( msgcontains(msg,"yes") or (msgcontains(msg,"sim") ) ) and talkState[talkUser] == 1 ) then

 

quest1 = getPlayerStorageValue(cid,storage)

if quest1 == 2 then

selfSay('Bem! você já me ajudou!',cid)

else

 

if quest1 ==1 then

selfSay('Bom! Então vc trouxe minhas Bat wing? Deixe-me ve-las.',cid)

if doPlayerRemoveItem(cid, item, quantiitem) == true then

selfSay('Obrigado! Agora poderei fazer meu projeto. Aqui sua recompença!',cid)

doPlayerAddItem(cid,premio1,quant1)

doPlayerAddExp(cid,pexp)

setPlayerStorageValue(cid,storage, 2)

talkState[talkUser] = 0

else

selfSay('Voce não trouxe minhas bat wings... Volte quando tivelas.',cid)

talkState[talkUser] = 0

end

 

else

selfSay('Me traga 50 Bat Wings para um projeto meu, Se voce me trazer te recompensarei com 1 venom stone e 3000 de experiencia!',cid)

setPlayerStorageValue(cid,storage, 1)

end

end

 

 

 

 

 

 

 

 

 

 

 

 

 

 

elseif(msgcontains(msg, 'no')) then

talkState[talkUser] = 0

selfSay('Ok Bye Then.', cid)

elseif(msgcontains(msg, 'bye')) then

selfSay('Ok Bye Then.', cid)

talkState[talkUser] = 0

end

 

end

 

 

function onCreatureChangeOutfit(creature)

 

end

 

 

 

Agora o arquivo NPC, xml.. será este

 

 

<?xml version="1.0" encoding="UTF-8"?>

 

<npc name="Task" script="arquivo.lua" floorchange="0" speed="0">

<health now="150" max="150"/>

 

<look type="171" head="97" body="114" legs="114" feet="0"/>

 

<parameters>

 

<parameter key="message_greet" value="Ola eu sou o professor Oak."/>

 

<parameter key="message_farewell" value="Good bye!"/>

 

<parameter key="message_idletimeout" value="Good bye!"/>

 

<parameter key="message_walkaway" value="Good bye!"/>

 

</parameters>

 

</npc>

 

 

 

Onde está grifado um é o nome do NPC, outro o nome do arquivo.lua outra é a newtype caso você toma debug, ou o npc fique com outfit bugada, basta trocar.

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...