1. Zamanlama Mantığını Tanımlama
- Kaza etkinliğinin hangi saatte başlayacağı ve kaç saniye sürdüğü
startTime,durationdeğişkenleriyle belirlenir. - Örnek:
Kod:local startTime = 3600 -- 01:00:00 (saniye cinsinden) local duration = 1800 -- 30 dakika
2. Anlık Kontrol Mekanizması
- Sunucu tekrar başlatıldığında etkinliğin hâlâ geçerli olup olmadığını kontrol etmek için
os.time()kullanılır. - ```lua
local now = os.time()
local eventActive = (now >= startTime) and (now <= startTime + duration)
Kod:## 3. NPC davranışını güncelleme - Etkinlik açıkken NPC’nun konuşma, ödül ve yükleme davranışları değişir. - ```lua if eventActive then NPC_SetTalk( NpcId, "Kaza etkinliğine hoş geldiniz!" ) NPC_AddLoot( NpcId, "Kaza_Puan" ) else NPC_SetTalk( NpcId, "Şu an etkinlik yok." ) end
4. Script’i Sunucuya Yükleme
npc.luadosyasını/data/call.npcklasörüne koyun.npc /data/call.npckomutuyla yeniden yükleyin.- Yedek almayı unutmayın:
cp /data/call.npc /data/call.npc.bak.
5. Sık Yapılan Hatalar
| Hatayı | Neden Sorun | Doğru Çözüm |
|---|---|---|
startTime ve duration değerlerini 12‑saat formatında yazmak | os.time() saniye cinsinden çalışır. | Saatleri saniyeye çevirerek (hh*3600 + mm*60 + ss) belirtin. |
eventActive değişkenini global tutmak | Sunucu yeniden başladığında değer kaybolur. | Her script çağrısında now ile hesaplayın. |
NPC_AddLoot yerine NPC_SetLoot kullanmak | Tek seferlik ödül yerine sürekli ödül verir. | NPC_AddLoot sadece etkinlik süresince aktif olur. |
| Script’i otomatik yeniden yükleme yoksa | Kaza etkinliği güncel kalmaz. | AddTimer(300, "reload npc.lua") ekleyin. |
6. Artı‑Eksiler
| Yöntem | Artılar | Eksiler |
|---|---|---|
| Temel timer (os.time) | Kolay kurulum, hafif kaynak tüketimi | Süre değişikliği sunucu kapanışında kaybolabilir |
| DB tabanlı zamanlama | Değişiklikleri kalıcı, web arayüzüyle yönetilebilir | Ek veritabanı sorgusu, artan gecikme |
Özet
Kısa Lua kodu ile NPC’ye zamanlı kaza etkinliği eklemek mümkün. Doğru zaman formatı, anlık kontrol ve doğru script yükleme adımları hatasız çalışmayı sağlar. Hata yakalama ve yedekleme, istikrarlı sunucu yönetiminin anahtarıdır.Siz hangi zamanlama yöntemini tercih edersiniz?