Skocz do zawartości
l0nger

Przydatne funkcje/snippety

Rekomendowane odpowiedzi

Hejo. W języku LUA stosujemy też jakieś funkcje, żeby sobie ułatwić programowanie.

Chcesz się z nimi podzielić? To jest odpowiednie miejsce do tego czynu.

addCommandHandlerEx

Rozszerza możliwości komend, do użycia kilku nazw w jednej komendzie.

Kod:

addCommandHandlerEx = function(cmd, fn, restricted, caseSensitive)
	if type(cmd)~="table" then
		cmd={cmd}
	end
	for i,v in pairs(cmd) do
		if i==1 then
			addCommandHandler(v, fn, restricted, false)
		else
			addCommandHandler(v, function(plr, ...)
				fn(plr, ...)
			end, false, false)
		end
	end
end
Przykład użycia:

addCommandHandlerEx({"czesc", "witaj", "hello", "welcome"}, function(plr, cmd) -- od teraz mozemy uzywac /czesc /witaj /hello /welcome
   if not plr then return end
   
   outputChatBox("Wywolales komende " .. cmd .. "!", plr)
end)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

To ja dodam od siebie kilka funkcji prosto z gry SpinTires®:

1. Funkcja konwertująca liczbę na stopnie:

function ToDegree(a)
	return a / (2 * math.pi) * 360
end
2. Funkcja konwertująca liczbę na radiany:
function ToRadians(a)
	return a / 360.0 * 2 * math.pi
end
3. Funkcja pozwalająca na sprawdzenie, czy kąt jest bliżej 360 stopni, czy dalej:
function To360(a)
	while(a > 2 * math.pi) do
		a = a - 2 * math.pi
	end
	while(a < 0) do
		a = a + 2 * math.pi
	end
	return a
end
4. Funkcja pozwalająca na pobranie różnicy kątów (wymaga funkcji To360!):
function GetAngleDifference(a, b)
	a = To360(a)
	b = To360(b)

	local difference = nil
	if (a > b) then
		difference = a - b
	else
		difference = b - a
	end

	if (difference > math.pi) then
		difference = 2 * math.pi - difference
	end

	return difference
end
5. Funkcja sprawdzająca, czy jest różnica kątów (również wymaga użycia To360):
function IsAngleDifference(a, b)
	a = To360(a)
	b = To360(b)

	local difference = b - a
	if ((difference > 0 and difference < math.pi) or (difference < -math.pi and difference > - 2 * math.pi)) then
		return false
	end

	return true
end
Edytowane przez Shiny

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników przeglądających tę stronę.

×