Jump to content
  • 0

Otimizar function [HELP]


New'gadu
 Share

Question

Alguém me ajuda a otimizar essa function para otx 2.12, ela funciona porém ao roda a function o servidor "congela" e após a function completar sua verificação o servidor "descongela"

 

	addEvent(function (removeMonsterInArea)
						if not isCreature(cid) then
							return
						end
						local positionsCheck = {}
						for i = config.from.x, config.to.x do
							positionsCheck[#positionsCheck+1] = {x=i, y = config.from.y, z = config.from.z, stackpos = 0}
							for j = config.from.y+1, config.to.y do
								positionsCheck[#positionsCheck+1] = {x=i, y = j, z = config.from.z, stackpos = 0}
							end
						end
						for j=1, #positionsCheck do
							for i = 0, 255 do
								positionsCheck[j].stackpos = i
								local tile = getTileThingByPos(positionsCheck[j])
								if isMonster(tile.uid) then
									doRemoveCreature(tile.uid)
								end
							end
						end
						return true
					end, config.time*60*1000, cid)

 

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Realmente é uma função que pode pesar se vc configurar um área muito grande.

 

Acho que a tentativa mais fácil aqui é vc verificar se esse for

for i = 0, 255 do

é realmente necessário... as vezes os monstros ficam em um só stackpos, porque monstros não andam um sobre os outros, e player tbm não pode atravessar monstro, acho que só empilharia (usaria mais de um stack) se tivesse uma escada descendo nessa área, algo assim. Só não lembro pra te dizer em qual stackpos os monstros ficam por padrão.

 

Se você souber, e não tiver escadas nessa área, sugiro com primeira tentativa, configurar o stackpos e tirar esse for.

 

Como segunda tentativa, o ideal seria rever como surgem esses monstros que voce está removendo, se for spawn normal acho que não teria como, mas se esses monstros  surgirem com uma alavanca daria pra salvar o ID deles e depois remover por ID, em vez de scanear o mapa atrás dele, mas aqui teria uma pouco mais de trabalho

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...