Merhaba arkadaslar,
Forumda konuyu açmadan arastirdim ama bu konuyu tam anlamiyla anlatan bir içerik göremedim ve sizlerle bu bilgiyi paylasayim istedim.
Öncelikle sunu belirteyim Onesync - Infinity herhangi bir optimizasyonla veya kaldirabilecegi oyuncu sayisiyla ilgilui birsey degildir.
# Nasil aktif edilir ?
Startup argümani olarak (.bat dosyasinda) : +set onesync on
server.cfg den : set onesync on
Onesync - Infinity nin kullanimi 48 slot a kadar BEDAVA dir, daha fazla slot için kullanmak istediginizde patreon key satin alip aktif edebilirsiniz.
# Scriptleri adapte etmek
Anlatmasi pek kolay birsey degil çünki kodlamasi degiskenlik gösteriyor ve bu yüzden biraz da kendi yorumunuzu eklemeniz gerek.
Infinity açik oldugunda / etkinlestirildiginde kullanicinin (client) bir kapsam araligi vardir, yani bilgisayarinizin "görebildigi" bir alan.
Bu araligin IÇERISINDEKI herseyi makinaniz algilayip yükliyecektir ve bu araligin DISARISINDAKI birseyden haberdar degildir.
Bunun en kolay örnegi, ben sehirdeysem ve diger oyuncu üst kasabadaysa benim bilgisayarim o kisinin orada oldugunu algilayamaz.
Yani, bunu ayarlamadan kullanmaya kalksaydim ve oradaki adama teleport atmaya kalksaydim bilgisayarim (client) kendine teleportlanirdi çünki diger kisinin koordinatlarini alamiyor olacaktim.
Ama sunucumuz bunu biliyor, diger oyuncunun koordinatlarinin ne oldugunu. Yani yapmamiz gereken bu bilgiyi sunucu (server) dan alip oyuncu (client) tarafina tasimaliyiz.
Baska bir önemli nokta da (burasi çokomelli) kapsamimiz disindaki kisilerden haberdar olmadigimiz için full oyuncu listesini almak istedigimizde de ayni sekilde bu info yu sunucu tarafindan çektirmemiz gerekecek.
# Koordinatlari almak
Bu biraz basittir, sunucu tarafinda GetEntityCoords kullanip ardindan bu bilgiyi event veya callback sayesinde geri gönderebilirsiniz.
Bu native hakkinda detayli bilgi için buraya bakabilirsiniz :
# Oyunculari çektirmek
Sunucudaki oyunculari çektirmek için buna benzer native ler kullanabilirsiniz:
veya QB fonksyonu kullanarak :
# Alan disinda bir araç spawnlama
Eger bir script yaziyorsaniz ve bir noktada araç spawnlamaniz gerekiyorsa ve bu araç sizin infinity scope unuz yani kapsam araligi disarisindaysa o zaman bu araci server tarafli olusturabilirsiniz:
Bu kod ile araci spawnlayip id sini callback ile client tarafina entity id olusturuldu mu diye kontrol ettirmek için gönderebilirsiniz.
Bu entity sistemsel olarak client (oyuncu) kapsam içerisine girene kadar var olmayacaktir. Oyuncu kapsama alani içerisine girene kadar bu entity sunucuya ait olacaktir.
Bir oyuncu infinity kapsamina girdiginde bu entity nin sahibi olacak ve kullanabilecektir. Biliyorum biraz kafa karistirici ama baska türlü anlatamadim.
Forumda konuyu açmadan arastirdim ama bu konuyu tam anlamiyla anlatan bir içerik göremedim ve sizlerle bu bilgiyi paylasayim istedim.
Öncelikle sunu belirteyim Onesync - Infinity herhangi bir optimizasyonla veya kaldirabilecegi oyuncu sayisiyla ilgilui birsey degildir.
# Nasil aktif edilir ?
Startup argümani olarak (.bat dosyasinda) : +set onesync on
server.cfg den : set onesync on
Onesync - Infinity nin kullanimi 48 slot a kadar BEDAVA dir, daha fazla slot için kullanmak istediginizde patreon key satin alip aktif edebilirsiniz.
# Scriptleri adapte etmek
Anlatmasi pek kolay birsey degil çünki kodlamasi degiskenlik gösteriyor ve bu yüzden biraz da kendi yorumunuzu eklemeniz gerek.
Infinity açik oldugunda / etkinlestirildiginde kullanicinin (client) bir kapsam araligi vardir, yani bilgisayarinizin "görebildigi" bir alan.
Bu araligin IÇERISINDEKI herseyi makinaniz algilayip yükliyecektir ve bu araligin DISARISINDAKI birseyden haberdar degildir.
Bunun en kolay örnegi, ben sehirdeysem ve diger oyuncu üst kasabadaysa benim bilgisayarim o kisinin orada oldugunu algilayamaz.
Yani, bunu ayarlamadan kullanmaya kalksaydim ve oradaki adama teleport atmaya kalksaydim bilgisayarim (client) kendine teleportlanirdi çünki diger kisinin koordinatlarini alamiyor olacaktim.
Ama sunucumuz bunu biliyor, diger oyuncunun koordinatlarinin ne oldugunu. Yani yapmamiz gereken bu bilgiyi sunucu (server) dan alip oyuncu (client) tarafina tasimaliyiz.
Baska bir önemli nokta da (burasi çokomelli) kapsamimiz disindaki kisilerden haberdar olmadigimiz için full oyuncu listesini almak istedigimizde de ayni sekilde bu info yu sunucu tarafindan çektirmemiz gerekecek.
# Koordinatlari almak
Bu biraz basittir, sunucu tarafinda GetEntityCoords kullanip ardindan bu bilgiyi event veya callback sayesinde geri gönderebilirsiniz.
Bu native hakkinda detayli bilgi için buraya bakabilirsiniz :
Linkleri,görmek için
Giriş yap veya üye ol.
# Oyunculari çektirmek
Sunucudaki oyunculari çektirmek için buna benzer native ler kullanabilirsiniz:
Kod:
for _, player in ipairs(GetActivePlayers()) do
local ped = GetPlayerPed(player)
-- birseyler yap
end
veya QB fonksyonu kullanarak :
Kod:
for _, player in pairs(QBCore.Functions.GetPlayers()) do
local ped = GetPlayerPed(player)
-- birseyler yap
end
# Alan disinda bir araç spawnlama
Eger bir script yaziyorsaniz ve bir noktada araç spawnlamaniz gerekiyorsa ve bu araç sizin infinity scope unuz yani kapsam araligi disarisindaysa o zaman bu araci server tarafli olusturabilirsiniz:
Kod:
local SpawnPoints = {
vector4(-1327.479736328, -86.045326232910, 49.31, 52),
vector4(-2075.888183593, -233.73908996580, 21.10, 52),
vector4(-972.1781616210, -1530.9045410150, 4.890, 52),
vector4(798.18426513672, -1799.8173828125, 29.33, 52),
vector4(1247.0718994141, -344.65634155273, 69.08, 52),
}
QBCore.Functions.CreateCallback('qb-truckrobbery:server:spawntruck', function(source, cb)
local coords = SpawnPoints[math.random(#SpawnPoints)]
local CreateAutomobile = GetHashKey("CREATE_AUTOMOBILE")
local truck = Citizen.InvokeNative(CreateAutomobile, GetHashKey('stockade'), coords, coords.w, true, false)
while not DoesEntityExist(truck) do
Wait(25)
end
if DoesEntityExist(truck) then
local netId = NetworkGetNetworkIdFromEntity(truck)
cb(netId)
else
cb(0)
end
end)
Bu kod ile araci spawnlayip id sini callback ile client tarafina entity id olusturuldu mu diye kontrol ettirmek için gönderebilirsiniz.
Bu entity sistemsel olarak client (oyuncu) kapsam içerisine girene kadar var olmayacaktir. Oyuncu kapsama alani içerisine girene kadar bu entity sunucuya ait olacaktir.
Bir oyuncu infinity kapsamina girdiginde bu entity nin sahibi olacak ve kullanabilecektir. Biliyorum biraz kafa karistirici ama baska türlü anlatamadim.