Ir para conteúdo
  • 0

[Npc] Npc De Troca De Item


Adolfohrq

Pergunta

Bom Galera, a situação é a seguinte. Estou com um sistema que gera pontos ao jogador a cada tantas horas que ele fica online. Esse sistema proporciona a função de realizar a troca de pontos por items em algum npc, utilizando as seguintes funções:

 

getPoints(cid) A função retorna a quantidade de pontos do player.

doPlayerAddPoints(cid, quant)A função adiciona a quantidade(quant) de pontos ao player.

doPlayerRemovePoints(cid, quant) A função remove a quantidade(quant) de pontos do player

 

 

 

Contudo queria pedir a vocês que criassem esse npc e que eu possa acrescentar esses items quando eu quiser (consigo configurar um npc, menos criar um).

Se alguem poder realizar isso estarei grato!

Abraços..

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

10 respostass a esta questão

Posts Recomendados

  • 0

@adolfuu,

ai está, procure o arquivo .lua do seu respectivo NPC (NPC/scripts) e ponha esse script:

 

 

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() enditem = 'You do not have suficient points.'
done = 'Here you are.'
function creatureSayCallback(cid, type, msg)
if(not npcHandler:isFocused(cid)) then
return false
end
if msgcontains(msg, 'offer') then
	 selfSay('You can here change some items for {item1}, {item2}.', cid)
elseif msgcontains(msg, 'item1') then
   if getPoints(cid) >= 10 then
		  selfSay('You can buy a item1 for 10 points?', cid)
		  talk_state = 1
   else
		  selfSay('Sorry this item cost 10 points.', cid)
		  talk_state = 0
   endelseif msgcontains(msg, 'yes') and talk_state == 1 then
   talk_state = 0
   if doPlayerRemovePoints(cid,10) == TRUE then
		  selfSay(done, cid)
		  doPlayerAddItem(cid, ID item1, 1)
   else
		  selfSay(item, cid)
   end
end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

Substitua:

item1 = NOME DO ITEM

ID item1 = ID DO ITEM 1

 

Fiz o script mas não testei mas creio que não terá problemas, se tiver posta ai denovo, tambem fiz com apenas 1 item a venda, se tiver dificuldades para colocar + items poste aqui novamente.

PS: Qual é esses sistema que você esta usando?, tem como postar o link? EDITED: Não presica já achei e esta em outro fórum xD

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

  • 0

@Vodkart,

pelo trade? usando o valor de uma storage?

 

é Vodkart, eu sou um menino perto de você msm, se puder faz ai pra gente, quero aprender mais!

 

Quem disse que é por storage? porém dá para fazer por storage também, aliás eu fiz isso com o honor points ;)

 

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 shopWindow = {}
local t = {
  [2195] = {price = 15},
  [2493] = {price = 25},
  [2361] = {price = 30},
  [8851] = {price = 20},
  [8925] = {price = 30},
  [2640] = {price = 50},
  [2494] = {price = 100},
  [9932] = {price = 50},
  [2472] = {price = 70},
  [8931] = {price = 100}
  }
local onBuy = function(cid, item, subType, amount, ignoreCap, inBackpacks)
if  t[item] and getPoints(cid) < t[item].price then
	  selfSay("você não tem "..t[item].price.." points", cid)
		 else
	doPlayerAddItem(cid, item)
	doPlayerRemovePoints(cid, t[item].price)
	selfSay("aqui está seu item!", cid)
   end
return true
end
if (msgcontains(msg, 'trade') or msgcontains(msg, 'TRADE'))then
		for var, ret in pairs(t) do
				table.insert(shopWindow, {id = var, subType = 0, buy = ret.price, sell = 0, name = getItemNameById(var)})
			end
		openShopWindow(cid, shopWindow, onBuy, onSell)
	end
return true
end
npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback)
npcHandler:addModule(FocusModule:new())

 

[2195] = {price = 15},

 

[iD DO ITEM] = {price = qntos pontos vao custar o item}

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

  • 0

Sim, perfeito, só que pelo que eu entendi do @adolfuu o sistema dele incrementava 1 ponto a cada 1h online por exemplo, e esse ponto era incrementado em uma storage.

 

EDIT:

 

A não ta certo, to confundindo esse tópico com outro.

Eu só não sabia fazer isso pelo trade!

 

 

VODKART POR FAVOR ME AJUDE NESSES TÓPICOS EM MINHA ASSINATURA!

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

  • 0

Obrigado pessoal, muito interessante ter a troca pela opção trade.. Eu ia pedir por ela mais achei meio complicado. Sem mais Agradeço pela ajuda e vai um rep+ para os dois.

 

 

Alias, Vodkart a troca está sendo realizada somente com gold e não por troca de pontos, poderia rever o script?? Porfavor..

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

  • 0

Obrigado pessoal, muito interessante ter a troca pela opção trade.. Eu ia pedir por ela mais achei meio complicado. Sem mais Agradeço pela ajuda e vai um rep+ para os dois.

 

 

Alias, Vodkart a troca está sendo realizada somente com gold e não por troca de pontos, poderia rever o script?? Porfavor..

 

Na verdade é assim mesmo, você precisa ter gps na bag, porém os gps não serão removidos, somente os points xd

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, tens razão, gostei irmão. Obrigadão mesmo =D! Não é possivel remover isso: Demon Armor: 100 gold ( trocar por ) Demon armor: 100 pontos. É possivel?

Link para o comentário
Compartilhar em outros sites

  • 0

Opa, tens razão, gostei irmão. Obrigadão mesmo =D! Não é possivel remover isso: Demon Armor: 100 gold ( trocar por ) Demon armor: 100 pontos. É possivel?

Então, acho que teria que modificar na lib também, nunca tentei até hoje, mas acho que é possível xd

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...