İçeriğe geç

Şebeke çekimi

Bir telefonun kaç çubuğu olduğu ve hiç çubuğu kalmayınca ne olduğu.

Kapalı olarak gelir. Şebeke çekimi istemeyen bir şehir, hep sahip olduğu telefonu alır — her yerde tam çubuk, hiçbir şey reddedilmez, hiçbir şey ölçülmez:

-- shared/config/signal.lua
Enabled = false, -- turn it on when you want bars that come from where the player is standing

Açılıp başka hiçbir şey değiştirilmezse yine de pek bir şey olmaz: baz istasyonu ve ölü bölge yoksa harita tam çekimdedir ve tek fark, sonunda doğruyu söyleyen bir sinyal göstergesidir. Aşağıya bir satır ekleyin; anlam kazanmaya başlar.

Hepsi sunucuda karara bağlanır, oyuncunun gerçekte durduğu yere göre. Kendi sinyaline kendisi karar veren bir istemci, biri onu ararken çubuğu olmayan, kendisi dışarı ararken dört çubuğu olan bir istemcidir.


Uçak modunun anlamıyla aynı, çünkü aynı gerçek, öbür taraftan bakıldığında: şehir o telefona ulaşamıyor.

  • Gelen ve giden aramalar reddedilir ve telefon kullanılamıyor yerine Burada sinyaliniz yok der.
  • Mesajlar gönderilemez, onlara gönderilen mesajlar ise saklanır.
  • Şehrin iletmeye çalıştığı her şey, çubuklar geri geldiği anda teslim edilir — hiçbir şey kaybolmaz, bekler.
  • Telefonun kendisi çalışmaya devam eder: kamera, notlar, el feneri, içindeki fotoğraflar.

Durum çubuğu elindeki çubukları çizer ve hiç yokken Servis yok yazar.


Şehir dışında, kurulacak hiçbir şey olmadan

Section titled “Şehir dışında, kurulacak hiçbir şey olmadan”
-- shared/config/signal.lua
City = {
Centre = vector3(195.0, -890.0, 30.0), -- Legion Square, near enough
Full = 3000.0, -- full signal within this
None = 9000.0, -- nothing at all past this
},

Şehirde tam çubuk, dışarı çıkarken birer birer azalır. Yukarıdaki varsayılanlarla canlı bir sunucuda ölçülen:

NeredeÇubuk
Legion Square4
Sandy Shores3
Paleto Bay1

Kapatıp yalnızca baz istasyonlarını kullanmak için City = false yapın.

Baz istasyonları, şebeke çekiminin oyuncuların parmakla gösterebileceği bir şey olduğu şehir için

Section titled “Baz istasyonları, şebeke çekiminin oyuncuların parmakla gösterebileceği bir şey olduğu şehir için”
Range = 900.0, -- full signal this close to a mast
Fade = 1400.0, -- and nothing this much further out
Masts = {
vector3(-75.0, -818.0, 326.0), -- the tower on Maze Bank
vector3(2358.0, 2570.0, 46.0), -- the masts above Sandy Shores
},

Bu listede herhangi bir şey olduğunda, çubuklar en yakın baz istasyonundan gelir ve City yok sayılır. Birinin havaya uçurduğu bir baz istasyonu, tamir edilene kadar telefonsuz bir mahalledir — şehriniz bununla bir şeyler yapmak istiyorsa değerli olan sürüm de budur.

Dead = {
{ Coords = vector3(895.0, -3245.0, -98.0), Radius = 120.0, Bars = 0 }, -- the labs
{ Coords = vector3(480.0, -1310.0, 29.0), Radius = 40.0, Bars = 1 }, -- the chop shop
},

Bir delik, baz istasyonlarının söylediği her şeyin önüne geçer ve ikisi çakıştığında küçük olan sayı kazanır: bir vadinin içindeki bir sığınak, ikisinde birden olduğu için daha iyi kapsanmış olmaz. Bars = 0 hiçbir şey demektir; başka herhangi bir sayı, hâlâ bir çubuk alan bir bodrumdur.

Bir küre, çünkü bir kürenin ortasını tek bir komutla bulabilirsiniz.


exports.mic_phone:GetSignal(src) --> 0 to Config.Signal.Bars
exports.mic_phone:SetJammed(src, true) --> takes their bars away until you give them back

Bu ikisi de şebeke çekimi kapalıyken çalışır. GetSignal tam sayıyı döndürür; böylece bir script, özelliğin var olup olmadığını sormadan okuyabilir — ve sinyal kesme yine de birinin çubuklarını alır, çünkü içinde telefon olmayan bir bina isteyen bir soygun ya da hapishane, bunun için önce tüm özelliğin yapılandırılmasına ihtiyaç duymamalıdır. Varsayılan bir kurulumda bir telefonun sinyalini kaybedebileceği tek durum budur ve bunun sebebi başka bir kaynağın bunu istemiş olmasıdır.

Sinyal kesme bilerek sunucu tarafındadır: istemcinin yazabildiği bir state bag, istemcinin silebildiği bir state bag’dir. Bir soygunun, bir hapishanenin ya da bir hikâyenin kullandığı budur — binadaki herkesin sinyalini kesin ve iş bitince bırakın.

Bag üzerinden okumanın hiçbir maliyeti yoktur:

if (Player(src).state.phoneSignal or 4) == 0 then
-- nobody is calling the police from in here
end
  • Enabled = true olana kadar zamanlamanın hiçbir önemi yoktur; kapalıyken hiçbir şey ölçülmez.
  • Her Config.Signal.Tick saniyede bir hesaplanır, varsayılan olarak beş. Kısa bir listeye karşı bir mesafe kontrolüdür ve kimsenin saniyesi saniyesine ihtiyaç duyduğu bir şey değildir.
  • Config.Signal.Tell, çubuklar bittiğinde ve geri geldiğinde telefonun bir şey söyleyip söylemeyeceğini belirler. İkisi de açıktır: sinyali kaybetmenin bir sebebi olmalıdır ve geri kazanmak, bekleyen her şeyin ulaştığı andır.