Bu konuda sahsi fikrimi sunayim.
Bir developer olarak kodlamada hem kolaylik hem de paketin (client side) daha optimize çalismasini sagliyor.
Neden kolaylik sagliyor ?
Herhangi bir distance = #(playerpos, doorpos) vs kullanmadan direk hangi koordinata istiyorsan oraya target i yerlestirebiliyorsun.
Bu bir ped olabilir, bir obje olabilir, belirlenen bir polyzone olabilir .. yani kodlamada sadece buraya bunu koy, target açildiginda ve su opsiyon seçildiginde bu event i triggerla diye ayarlaman yetiyor.
Peki neden daha optimize dedim ?
Benim gözümde bütün sistemleri olabildigince target e geçirmeliyiz, kendi sunucumda client tarafinda 0.7 ila 1.2 ms almaktayim 1050 mobile bir grafik karti ve i7 gen9 bir cpu ile.
Söyle örneklendireyim, yukarida arkadas marker i target e tercih ederim demis.
Marker i entegre etmek için once bir loop un içerisine bir kaç local açariz, nedir bunlar :
local playerped
local playercoord
local markercoor
local distance = #(playercoord - markercoor)
Bunlar devamli bir loop içerisinde dönüyor ve if distance < 10 dedigimizde istedigimiz script i çalistirmaya basliyor, sonrasinda onkeypress eventleri, waitler vs vs ...
Bu sekilde yapildiginda diyelimki marker in yakinina geldiginde client tarafinda resmon yemeye basliyor.
Peki ya bunu target e çevirirsek ne olur ?
QBCore daki ana fikir minimal loops maximum functions / triggers.
Yani looplari (while true do ..... ) minimum a indirip yerine functionlar ve triggerlar kullanarak resmon u en aza indirmek.
Target sistemini kullanabilmek için yukarida verdigim örnekten sadece if distance < 10 kodlamasindan sonra gelen kodlari almaniz yeterli ve bunu bir event in içerisine koymaliyiz. Bu kodlarin içerisinden onkeypress, release vs gibi user input gerektiren seyleri de attikmi sadece o event triggerlandiginda ne yapmasi gerektigini yaziyoruz.
Daha sonra herhangi bir yere bir target koyup o target açildiginda ve o option seçildiginde yukarida yazdigimiz event triggerlensin diyoruz ve olay bitiyor.
Yani aradaki en büyük fark optimizasyon, biri (aktif degilken) döngü içerisinde hesaplamalar yapip resmon yerken digeri sadece aktifken, yani triggerlendiginde anlik resmon yiyip tekrar 0 a düsüyor.
Görsellik açisindan birsey diyemem, renkler ve zevkler tartisilmaz, ama bir developer olarak diyebilirimki, eger optimizasyonu düsünüyorsaniz o zaman target e geçin.
Alternatifi varmi? evet o da var, polyzone + textui.
Sonuçta target de polyzone kullanarak target yerlerini belirliyor.
Direk polyzone kullanarak ispontinside ile kisinin polyzone içerisine girdiginde sadece herhangi bir kodu çalistirip devamli hesaplama yaptirmana gerek kalmaz.
Biraz uzattim galiba özür dilerim, nacizane fikirlerim bunlardir.