Ir para conteúdo
  • Cadastre-se

(Resolvido)Npc que vende após completar uma quest


Ir para solução Resolvido por KotZletY,

Posts Recomendados

Olá galera.. é possivel fazer um npc vender certas coisas após você completar uma quest?

Por exemplo: O npc vende algumas coisinhas.. mas quando você termina uma determinada quest, quando você vai falar com ele, ele está vendendo mais coisas que antes, porém só está vendendo essas coisas novas para quem completou a quest.. é possivel fazer um script assim?

Se sim, alguém pode fazer? :v

Link para o post
Compartilhar em outros sites

@kinomoto sim, quando você completa uma quest você ganha ums storage que completou, bota pro npc checar ela, se ele tiver, ele vende, se não tiver, não vendi! 

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
2 minutos atrás, KotZletY disse:

@kinomoto sim, quando você completa uma quest você ganha ums storage que completou, bota pro npc checar ela, se ele tiver, ele vende, se não tiver, não vendi! 

como ponho pra ele checar as storages? :v

Link para o post
Compartilhar em outros sites
5 horas atrás, KotZletY disse:

@kinomoto me passe o script do npc que você deseja a alteração.

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

<npc name="Bahiery" script="default.lua" walkinterval="2000" floorchange="0">

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

<look type="132" head="3" body="86" legs="87" feet="76" addons="0"/>

<voices>

<voice text="Vendo coisas para pally!" interval2="100" margin="1" yell="no"/>

</voices>

<parameters>

<parameter key="message_greet" value="Bem vindo!."/>

<parameter key="message_farewell" value="Valeu ae."/>

<parameter key="message_walkaway" value="Flw." />

<parameter key="message_sendtrade" value="Aqui, de uma olhada." />

<parameter key="module_shop" value="1"/>

<parameter key="shop_sellable" value="Burst Arrow,2546,4;Poison Arrow,2545,3" />

<parameter key="shop_buyable" value="Fishing Rod,2580,50" />

</parameters>

</npc>

Link para o post
Compartilhar em outros sites

@kinomoto não tem como fazer tal check direto da xml, então você teria que fazer um script que faça a mesma coisa, e nele você adicionaria os mesmo itens, isso por script, não tem como fazer por xml tal check. 

 

Irei fazer o npc por script.

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
7 horas atrás, KotZletY disse:

@kinomoto não tem como fazer tal check direto da xml, então você teria que fazer um script que faça a mesma coisa, e nele você adicionaria os mesmo itens, isso por script, não tem como fazer por xml tal check. 

 

Irei fazer o npc por script.

poww mt obrigado msm :DD

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

@kinomoto sorry, esqueci completamente. Muitas notificações, e também andei um tiquin ocupado. Huahsuahs!

Tava procurando uma notificação de alguns dias atrás, e então vir a sua. Kkkkk

 

Bom, achei esse npc aqui mesmo no tk, porém tinha coisa desnecessária, linhas que não precisava, então eu o comprimir e deixei mais simples.

 

Spoiler

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 storage = 1500 -- storage da quest
local Trade = {
{id=10522, buy=200, sell=0, name='crown backpack'},
{id=10518, buy=200, sell=0, name='demon backpack'},
}

local function setNewTradeTable(table)
local items = {}
  for _, v in ipairs(table) do
  items[v.id] = {itemId = v.id, buyPrice = v.buy, sellPrice = v.sell, subType = 0, realName = v.name}
  end
return items
end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
 return false
end

if(msgcontains(msg, 'Trade') or msgcontains(msg, 'trade')) and getPlayerStorageValue(cid, storage) == 1 then
selfSay('Essas são minhas ofertas!', cid)

local items = setNewTradeTable(Trade)
local function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks)
 if items[item].buyPrice then
  doPlayerAddItem(cid, items[item].itemId, amount)
  doPlayerRemoveMoney(cid, items[item].buyPrice * amount)
  return true
 end
return true
end

openShopWindow(cid, Trade, onBuy, false)
else
selfSay('Desculpe, mas você não tem o que é necessário para negociar comigo.', cid)
end
return TRUE
end


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

 

 

Copia qualquer xml e modificar para usar esse script.

 

Hi, trade, 

 

se o player tiver a storage da quest, a storage que ganha nela, ele pode fazer, se não tiver, então o npc nem abre a janela de trade.

                                                              ezgif-1-98aab239f3.gif.1a897c9c3225228909e7b356a5cfb8e4.gif

Link para o post
Compartilhar em outros sites
11 horas atrás, KotZletY disse:

@kinomoto sorry, esqueci completamente. Muitas notificações, e também andei um tiquin ocupado. Huahsuahs!

Tava procurando uma notificação de alguns dias atrás, e então vir a sua. Kkkkk

 

Bom, achei esse npc aqui mesmo no tk, porém tinha coisa desnecessária, linhas que não precisava, então eu o comprimir e deixei mais simples.

 

  Ocultar conteúdo


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 storage = 1500 -- storage da quest
local Trade = {
{id=10522, buy=200, sell=0, name='crown backpack'},
{id=10518, buy=200, sell=0, name='demon backpack'},
}

local function setNewTradeTable(table)
local items = {}
  for _, v in ipairs(table) do
  items[v.id] = {itemId = v.id, buyPrice = v.buy, sellPrice = v.sell, subType = 0, realName = v.name}
  end
return items
end

function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
 return false
end

if(msgcontains(msg, 'Trade') or msgcontains(msg, 'trade')) and getPlayerStorageValue(cid, storage) == 1 then
selfSay('Essas são minhas ofertas!', cid)

local items = setNewTradeTable(Trade)
local function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks)
 if items[item].buyPrice then
  doPlayerAddItem(cid, items[item].itemId, amount)
  doPlayerRemoveMoney(cid, items[item].buyPrice * amount)
  return true
 end
return true
end

openShopWindow(cid, Trade, onBuy, false)
else
selfSay('Desculpe, mas você não tem o que é necessário para negociar comigo.', cid)
end
return TRUE
end


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

 

 

Copia qualquer xml e modificar para usar esse script.

 

Hi, trade, 

 

se o player tiver a storage da quest, a storage que ganha nela, ele pode fazer, se não tiver, então o npc nem abre a janela de trade.

Ficou mt bom!!! mt obrigado!! + REP

Link para o post
Compartilhar em outros sites
  • 2 months later...

Desculpe, desde já, reviver o tópico mas tentei fazer esse npc que além de vender items, compre... não consegui :(

 

local items = setNewTradeTable(Trade)
local function onBuy(cid, item, subType, amount, ignoreCap, inBackpacks)
	if items[item].buyPrice then
		doPlayerAddItem(cid, items[item].itemId, amount)
		doPlayerRemoveMoney(cid, items[item].buyPrice * amount)
		return true
    end
return true
end


openShopWindow(cid, Trade, onBuy, false)

local function onSell(cid, item, subType, amount, ignoreCap, inBackpacks)
if items[item].sellPrice then
		doPlayerRemoveItem(cid, items[item].itemId, amount)
		doPlayerAddMoney(cid, items[item].sellPrice * amount)
		return true
	end
return true
end
openShopWindow(cid, Trade, onSell, false)

Tentei fazer além de uma nova função, usar o elseif
Se puder dar uma força! 

obrigado! :)

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