Przy okazji pisania komuś pluginu w ramach pomocy musiałem zrobić prostą funkcję, która umożliwiła mi ustalenia originu entu.
Chciałem sprawdzić odległość między bytem func_breakable a graczem, niestety func_breakable-w moim przypadku kratka wentylacyjna na nuku miała origin 0 więc musiałem go ustalić korzystając z absmin i absmax, a dokładniej musiałem odnieść się do punktu leżącego w samym środku, który to był dla mnie originem. Potrzebowałem między trzema elementami absmin i absmax ustalić punkt środkowy czyli połowę, do tego zrobiłem prostą funkcję, która zwraca mi tablicę ze środkami.
wartosc_srodkowa(const Float:liczba1[3],const Float:liczba2[3],Float:wynik[3]) { new Float:roznica for(new a=0;a<3;a++) { roznica=liczba1[a]-liczba2[a] if(roznica==0) { wynik[a]=0.0 continue } wynik[a]=(roznica>0)?(liczba1[a]-(roznica/2)):(liczba2[a]-(floatabs(roznica)/2)) } }
Dla jasności jeśli podamy dwie tablica o wartościach
tabmin[3]={10,20,30}
tabmax[3]={20,40,60}
to zwroci nam wynik {15,30,45}
Oczywiście działa też dla liczb ujemnych i kombinacji ujemnych i dodatnich