Ir para conteúdo
  • Cadastre-se

Corrigindo bugs relacionados a containers


Posts Recomendados

Desculpem pelo título chamativo e/ou pela área está incorreta, mas enfim, lhes trago a solução definitiva pros problemas de bug relacionados a conteiners, como ficar comprando bp's infinitamente até crashar o server, stackar várias bps dentro de bps, jogar dentro da casa e usar o comando !leavehouse (ou algo do tipo) o que causa lag (talvez crash?) por conta da database ter que processar tantos itens saindo da house pro dp ou qualquer outra merda desse tipo.

Vá em  ...\data\npc\lib\npcsystem procure por: -- Handles onBuy events. If you wish to handle this yourself, use the CALLBACK_ONBUY callback.

Substitua toda a função por:

 

Spoiler

function NpcHandler:onBuy(cid, itemid, subType, amount, ignoreCap, inBackpacks)

		local config = {
		sto = 11000, --storage
		tempo = 60, --tempo de cooldown para comprar novamente
		it = {2144, 2149}, --id dos itens
		total = 10 --total de itens que pode ser comprado por vez
		}
		
		if isInArray(config.it, itemid) and amount >= config.total then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "nao pode comprar mais que "..config.total.." itens desse.")
			return false
		elseif getPlayerStorageValue(cid, config.sto) > os.time() and isInArray(config.it, itemid) and amount <= config.total then
			doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, "espere "..(getPlayerStorageValue(cid, config.sto) - os.time()).." segundo(s) para comprar novamente.")
			return false
		elseif isInArray(config.it, itemid) and amount <= config.total then
			setPlayerStorageValue(cid, config.sto, os.time() + config.tempo)
		end
		
		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
	end

 


Explicando: 
Se o player tentar comprar mais de X itens de id Y, o npc não irá vender. Quando o player comprar uma quantidade menor que X, ganhará um cooldown de Z segundos até poder comprar novamente. Tudo isso configurável na tabela.
Pra te prejudicar com esse tipo de bug agora, só se o "player" tiver com uma puta vontade de te foder.
Testado e totalmente funcional em TFS 0.4 rev 3884, mas qualquer coisa é só adaptar pra outras versões que tenho certeza que funciona.

EDIT: Não sei se já tem script similar por ai, mas esse ai é de minha autoria.
Pra quem usa OTX, tem esse fix na source:
https://github.com/mattyx14/otxserver/tree/otxserv2/path_8_6x
Créditos ao Celulose que mandou.

Editado por gabriel28 (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Este tópico foi movido para a área correta. Esta é uma mensagem automática!
Pedimos que leia as regras do fórum!

Spoiler

This topic has been moved to the correct area. This is an automated message!
Please read the forum rules.

 

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

@Celulose 
Acrescentarei. Mas essa mudança já é o suficiente pra desencorajar quem queira prejudicar o server, fora que não mudará em nada as funcionalidades dos NPCs de venda, qualquer outro item que não esteja na tabela, será vendido normalmente.

 

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

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