Ir para conteúdo
  • Cadastre-se

(Resolvido)Colocar Limite de venda no NPC


Ir para solução Resolvido por LeoTK,

Posts Recomendados

Galera como posso colocar exausted ou limite de venda de itens nesse npc?

ex: apenas vender 50 itens por segundos por aii..

 Motivo ( quando um player tem varios itens e vai vender pro npc, gera um lag enorme no server )

 

Script:

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

local shopModule = ShopModule:new()
npcHandler:addModule(shopModule)

shopModule:addBuyableItem({'jashin amulet'}, 2138, 20000, 1, 'jashin amulet')


shopModule:addSellableItem({'orochimaru tunic'}, 2534, 30000, 'orochimaru tunic')
shopModule:addSellableItem({'anbu mask'}, 2518, 30000, 'anbu mask')
shopModule:addSellableItem({'anbu armor'}, 2393, 30000, 'anbu armor')
shopModule:addSellableItem({'icy legs'}, 2428, 30000, 'icy legs')
shopModule:addSellableItem({'elite anbu mask'}, 2451, 30000, 'elite anbu mask')
shopModule:addSellableItem({'chouji armor'}, 8852, 30000, 'chouji armor')
shopModule:addSellableItem({'dual slayer eletrik'}, 7868, 30000, 'dual slayer eletrik')
shopModule:addSellableItem({'haku armor'}, 2422, 30000, 'haku armor')
shopModule:addSellableItem({'orochimaru boots'}, 8869, 30000, 'orochimaru boots')
shopModule:addSellableItem({'anbu mask'}, 2518, 30000, 'anbu mask')
shopModule:addSellableItem({'dark legs'}, 7386, 30000, 'dark legs')
shopModule:addSellableItem({'bandana'}, 2381, 30000, 'bandana')
shopModule:addSellableItem({'akatsuki tunic'}, 2395, 30000, 'akatsuki tunic')
shopModule:addSellableItem({'taijutsu legs'}, 8868, 30000, 'taijutsu legs')
shopModule:addSellableItem({'dual slayer'}, 7875, 30000, 'dual slayer')
shopModule:addSellableItem({'gaara legs'}, 7457, 30000, 'gaara legs')
shopModule:addSellableItem({'sasuke legrobe'}, 7389, 30000, 'sasuke legrobe')
shopModule:addSellableItem({'war coat'}, 2141, 30000, 'war coat')
shopModule:addSellableItem({'leaft jounin protector'}, 7427, 30000, 'leaft jounin protector')
shopModule:addSellableItem({'dual slayer'}, 7867, 30000, 'dual slayer')
shopModule:addSellableItem({'dual katana imperium'}, 7379, 30000, 'dual katana imperium')
shopModule:addSellableItem({'hyuuga glove'}, 2383, 30000, 'hyuuga glove')
shopModule:addSellableItem({'akatsuki boots'}, 2529, 30000, 'akatsuki boots')


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

 

Link para o post
Compartilhar em outros sites

@leozincorsair não seria mais fácil deixar vender 100 por 100 porém colocar um exausted de 5 segundos para cada venda?

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
4 minutos atrás, LeoTK disse:

@leozincorsair não seria mais fácil deixar vender 100 por 100 porém colocar um exausted de 5 segundos para cada venda?

tipo o npc vende 100 por 100, so que o player fica clicando em 'ok' na janela de trader vendendo varios por segundos dai vem o lag.

Link para o post
Compartilhar em outros sites

@leozincorsair exatamente ai você pode adicionar um cooldown para ele não rushar clicando no botão pra vender cada click vai ter o cooldowm de 5 segundos para vender mesmo que o infeliz tente ficar clicando tem que esperar 5 segundos cada venda de 100

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
5 minutos atrás, LeoTK disse:

@leozincorsair exatamente ai você pode adicionar um cooldown para ele não rushar clicando no botão pra vender cada click vai ter o cooldowm de 5 segundos para vender mesmo que o infeliz tente ficar clicando tem que esperar 5 segundos cada venda de 100

isso seria otimo, porem nao consigo fazer pois n manjo de script bem..

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

@leozincorsair 

Para source 0.4

Para source 0.3.6 vou passar como esta no meu

Data/Npc/Lib/npcsystem/npchandler.lua
Procure por:

-- Handles onBuy events. If you wish to handle this yourself, use the CALLBACK_ONBUY callback.

logo abaixo vai ter as funções de compra e venda gerais de todo o sistema ai eu adicionei um cooldown nas duas código completo V

Spoiler



	function NpcHandler:onBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks)
	local config = { 
	cooldown = 3,  --- tempo entre um uso e outro
	}
	if os.time() - getPlayerStorageValue(cid, 11246) >= config.cooldown then
	setPlayerStorageValue(cid, 11246, os.time())
		local callback = self:getCallback(CALLBACK_ONBUY)
		if(callback == nil or callback(cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
			if(self:processModuleCallback(CALLBACK_ONBUY, cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
				--
			end
		end
		else
		doPlayerSendCancel(cid, "Espere "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 11246))).." segundo para comprar novamente.")
	end
end	

	-- Handles onSell events. If you wish to handle this yourself, use the CALLBACK_ONSELL callback.
	function NpcHandler:onSell(cid, itemid, subType, amount, ignoreCap, inBackpacks)
	local config = { 
	cooldown = 3,  --- tempo entre um uso e outro
	}
	if os.time() - getPlayerStorageValue(cid, 11246) >= config.cooldown then
	setPlayerStorageValue(cid, 11246, os.time())
		local callback = self:getCallback(CALLBACK_ONSELL)
		if(callback == nil or callback(cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
			if(self:processModuleCallback(CALLBACK_ONSELL, cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
				--
			end
		end
		else
		doPlayerSendCancel(cid, "Espere "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 11246))).." segundo para vender novamente.")		
	end
end	


 

 

Compre seus Scripts Agora totalmente seguro e de forma rápida, aceitamos também encomendas.

discord.gg/phJZeHa2k4

 

Projeto ATS (Naruto)

Informações Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Link para o post
Compartilhar em outros sites
20 minutos atrás, LeoTK disse:

@leozincorsair 

Para source 0.4

Para source 0.3.6 vou passar como esta no meu

Data/Npc/Lib/npcsystem/npchandler.lua
Procure por:


-- Handles onBuy events. If you wish to handle this yourself, use the CALLBACK_ONBUY callback.

logo abaixo vai ter as funções de compra e venda gerais de todo o sistema ai eu adicionei um cooldown nas duas código completo V

  Mostrar conteúdo oculto

 



	function NpcHandler:onBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks)
	local config = { 
	cooldown = 3,  --- tempo entre um uso e outro
	}
	if os.time() - getPlayerStorageValue(cid, 11246) >= config.cooldown then
	setPlayerStorageValue(cid, 11246, os.time())
		local callback = self:getCallback(CALLBACK_ONBUY)
		if(callback == nil or callback(cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
			if(self:processModuleCallback(CALLBACK_ONBUY, cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
				--
			end
		end
		else
		doPlayerSendCancel(cid, "Espere "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 11246))).." segundo para comprar novamente.")
	end
end	

	-- Handles onSell events. If you wish to handle this yourself, use the CALLBACK_ONSELL callback.
	function NpcHandler:onSell(cid, itemid, subType, amount, ignoreCap, inBackpacks)
	local config = { 
	cooldown = 3,  --- tempo entre um uso e outro
	}
	if os.time() - getPlayerStorageValue(cid, 11246) >= config.cooldown then
	setPlayerStorageValue(cid, 11246, os.time())
		local callback = self:getCallback(CALLBACK_ONSELL)
		if(callback == nil or callback(cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
			if(self:processModuleCallback(CALLBACK_ONSELL, cid, itemid, subType, amount, ignoreCap, inBackpacks)) then
				--
			end
		end
		else
		doPlayerSendCancel(cid, "Espere "..(config.cooldown - (os.time() - getPlayerStorageValue(cid, 11246))).." segundo para vender novamente.")		
	end
end	

 

 

 

 

 

Me ajudou muito man, obrigado !!!

o meu so tinha exausted na onbuy.

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo