- Katılım
- 4 yıl 11 ay 6 gün
- Mesajlar
- 417
Herkese merhabalar karşılaştığım sunucuların çoğunda en basit bazı scriptler bile 0.10 çekiyor. Bu yüzden bu rehberi oluşturuyorum. Dikkatlice okursanız ve yaparsanız script'i bozmadan resmon optimizasyonu yapabilirsiniz.
HERHANGİ BİR YARDIM VS. YAPMAYACAĞIM
Bu işlemleri yapmadan önce editleyeceğiniz script'in kopyasını alın.
İlk önce ;
kodunu kesinlikle kullanmıyoruz. Eğer script'in içinde var ise şu şekilde değiştiriyoruz.
İkinci Aşama ;
ile başlayan kodları editleyeceğiz.
Bu kodların ms arttırma sebebi " Citizen.Wait() " kodudur. Parantezin içindeki kod ne kadar az ise o kadar hızlı kontrol ediyordur içinde ki kod satırlarını.
1000 = 1 saniye
Citizen.Wait(1000) = 1 saniyede 1 kontrol demektir.
O yüzden bu kodları editleyeceğiz. Burdaki mantık en çok,bir yerde misin değil misin diye kontrol yapar.
Bu kodları şu şekilde düzelteceğiz. Eğer kişi belirlenen alandan uzak ise 5 veya 4 saniyede bir şekilde, eğer kişi belirlenen kodlara daha yakın ise daha hızlı kontrol yapacak.
Şöyle yapacağız.
esx_advancedgarage ile örnek veriyorum. Marker oluşturma kodu ;
Editlemiş olduğum hali :
Bu şekilde "sleep" kodları ile sadece belirlenen koordinatlara yakın ise çalışır şekilde editledim ve 0.25 çeken bu scripti 0.01'e düşürdüm. Bütün kodu editleyerek, sizde bu şekilde edit yaparak resmon optimizasyonu yapabilirsiniz.
HERHANGİ BİR YARDIM VS. YAPMAYACAĞIM
Bu işlemleri yapmadan önce editleyeceğiniz script'in kopyasını alın.
İlk önce ;
Kod:
GetPlayerPed(-1)
kodunu kesinlikle kullanmıyoruz. Eğer script'in içinde var ise şu şekilde değiştiriyoruz.
Kod:
PlayerPedId()
İkinci Aşama ;
Kod:
CreateThread(function()
ile başlayan kodları editleyeceğiz.
Bu kodların ms arttırma sebebi " Citizen.Wait() " kodudur. Parantezin içindeki kod ne kadar az ise o kadar hızlı kontrol ediyordur içinde ki kod satırlarını.
1000 = 1 saniye
Citizen.Wait(1000) = 1 saniyede 1 kontrol demektir.
O yüzden bu kodları editleyeceğiz. Burdaki mantık en çok,bir yerde misin değil misin diye kontrol yapar.
Bu kodları şu şekilde düzelteceğiz. Eğer kişi belirlenen alandan uzak ise 5 veya 4 saniyede bir şekilde, eğer kişi belirlenen kodlara daha yakın ise daha hızlı kontrol yapacak.
Şöyle yapacağız.
esx_advancedgarage ile örnek veriyorum. Marker oluşturma kodu ;
Editlemiş olduğum hali :
Kod:
Citizen.CreateThread(function()
while true do
local sleep = 2000
while ESX == nil do
TriggerEvent('esx:getSharedObject', function(obj) ESX = obj end)
Citizen.Wait(0)
end
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed)
if Config.UseCarGarages == true then
-- Car Garages
for k,v in pairs(Config.CarGarages) do
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PointMarker.x, Config.PointMarker.y, Config.PointMarker.z, Config.PointMarker.r, Config.PointMarker.g, Config.PointMarker.b, 100, false, true, 2, false, false, false, false)
DrawMarker(Config.MarkerType, v.DeletePoint.x, v.DeletePoint.y, v.DeletePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.DeleteMarker.x, Config.DeleteMarker.y, Config.DeleteMarker.z, Config.DeleteMarker.r, Config.DeleteMarker.g, Config.DeleteMarker.b, 100, false, true, 2, false, false, false, false)
end
end
-- Car Pounds
for k,v in pairs(Config.CarPounds) do
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PoundMarker.x, Config.PoundMarker.y, Config.PoundMarker.z, Config.PoundMarker.r, Config.PoundMarker.g, Config.PoundMarker.b, 100, false, true, 2, false, false, false, false)
end
end
end
if Config.UseBoatGarages == true then
-- Boat Garages
for k,v in pairs(Config.BoatGarages) do
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PointMarker.x, Config.PointMarker.y, Config.PointMarker.z, Config.PointMarker.r, Config.PointMarker.g, Config.PointMarker.b, 100, false, true, 2, false, false, false, false)
DrawMarker(Config.MarkerType, v.DeletePoint.x, v.DeletePoint.y, v.DeletePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.DeleteMarker.x, Config.DeleteMarker.y, Config.DeleteMarker.z, Config.DeleteMarker.r, Config.DeleteMarker.g, Config.DeleteMarker.b, 100, false, true, 2, false, false, false, false)
end
end
-- Boat Pounds
for k,v in pairs(Config.BoatPounds) do
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PoundMarker.x, Config.PoundMarker.y, Config.PoundMarker.z, Config.PoundMarker.r, Config.PoundMarker.g, Config.PoundMarker.b, 100, false, true, 2, false, false, false, false)
end
end
end
if Config.UseAircraftGarages == true then
-- Aircraft Garages
for k,v in pairs(Config.AircraftGarages) do
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PointMarker.x, Config.PointMarker.y, Config.PointMarker.z, Config.PointMarker.r, Config.PointMarker.g, Config.PointMarker.b, 100, false, true, 2, false, false, false, false)
DrawMarker(Config.MarkerType, v.DeletePoint.x, v.DeletePoint.y, v.DeletePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.DeleteMarker.x, Config.DeleteMarker.y, Config.DeleteMarker.z, Config.DeleteMarker.r, Config.DeleteMarker.g, Config.DeleteMarker.b, 100, false, true, 2, false, false, false, false)
end
end
-- Aircraft Pounds
for k,v in pairs(Config.AircraftPounds) do
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PoundMarker.x, Config.PoundMarker.y, Config.PoundMarker.z, Config.PoundMarker.r, Config.PoundMarker.g, Config.PoundMarker.b, 100, false, true, 2, false, false, false, false)
end
end
end
if Config.UseHelicopterGarages == true then
-- Aircraft Garages
for k,v in pairs(Config.HelicopterGarages) do
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PointMarker.x, Config.PointMarker.y, Config.PointMarker.z, Config.PointMarker.r, Config.PointMarker.g, Config.PointMarker.b, 100, false, true, 2, false, false, false, false)
DrawMarker(Config.MarkerType, v.DeletePoint.x, v.DeletePoint.y, v.DeletePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.DeleteMarker.x, Config.DeleteMarker.y, Config.DeleteMarker.z, Config.DeleteMarker.r, Config.DeleteMarker.g, Config.DeleteMarker.b, 100, false, true, 2, false, false, false, false)
end
end
-- Aircraft Pounds
for k,v in pairs(Config.HelicopterPounds) do
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PoundMarker.x, Config.PoundMarker.y, Config.PoundMarker.z, Config.PoundMarker.r, Config.PoundMarker.g, Config.PoundMarker.b, 100, false, true, 2, false, false, false, false)
end
end
end
if Config.UsePrivateCarGarages == true then
-- Private Garages
for k,v in pairs(Config.PrivateCarGarages) do
if not v.Private or has_value(userProperties, v.Private) then
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.GaragePoint.x, v.GaragePoint.y, v.GaragePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.PointMarker.x, Config.PointMarker.y, Config.PointMarker.z, Config.PointMarker.r, Config.PointMarker.g, Config.PointMarker.b, 100, false, true, 2, false, false, false, false)
DrawMarker(Config.MarkerType, v.DeletePoint.x, v.DeletePoint.y, v.DeletePoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.DeleteMarker.x, Config.DeleteMarker.y, Config.DeleteMarker.z, Config.DeleteMarker.r, Config.DeleteMarker.g, Config.DeleteMarker.b, 100, false, true, 2, false, false, false, false)
end
end
end
end
if Config.UseJobCarGarages == true then
-- esx_policejob
if ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'police' then
for k,v in pairs(Config.PolicePounds) do
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.JobPoundMarker.x, Config.JobPoundMarker.y, Config.JobPoundMarker.z, Config.JobPoundMarker.r, Config.JobPoundMarker.g, Config.JobPoundMarker.b, 100, false, true, 2, false, false, false, false)
end
end
end
-- esx_ambulancejob
if ESX.PlayerData.job ~= nil and ESX.PlayerData.job.name == 'ambulance' then
for k,v in pairs(Config.AmbulancePounds) do
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < 20.0) then
sleep = 5
end
if (GetDistanceBetweenCoords(coords, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, true) < Config.DrawDistance) then
DrawMarker(Config.MarkerType, v.PoundPoint.x, v.PoundPoint.y, v.PoundPoint.z, 0.0, 0.0, 0.0, 0, 0.0, 0.0, Config.JobPoundMarker.x, Config.JobPoundMarker.y, Config.JobPoundMarker.z, Config.JobPoundMarker.r, Config.JobPoundMarker.g, Config.JobPoundMarker.b, 100, false, true, 2, false, false, false, false)
end
end
end
end
Citizen.Wait(sleep)
end
end)
Bu şekilde "sleep" kodları ile sadece belirlenen koordinatlara yakın ise çalışır şekilde editledim ve 0.25 çeken bu scripti 0.01'e düşürdüm. Bütün kodu editleyerek, sizde bu şekilde edit yaparak resmon optimizasyonu yapabilirsiniz.
Son düzenleme: