Drop Similator - SQL

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 117

Admin

Knight Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
45,967
Selamlar,

Databasedeki canavar droplarını ayarladıktan sonra simüle edebileceğiniz bir prosedür geliştirdim.

Çalışma Mantığı
Prosedür parametre olarak monsterId ve NumKill (yani kaç kere canavar kesileceği) alır. Bu parametrelere göre dropları simule ederek size sonuç döner. Tam olarak Ko içerisinde kullanılan True Random Generate mantığı ile çalışmaz. Sadece fikir verir.

2102 Apostle

İstediğiniz gibi alıntı yapın, yeter ki benim diye paylaşmayın. Zaten önceden yapılmış birşey değil.

Örnek:



Kod:
USE [kn_online] GO /****** Object:  StoredProcedure [dbo].[SimulateDrops]    Script Date: 25.06.2026 22:23:04  ******/ /*Author: erthejosea*/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[SimulateDrops2]     @MonsterSSID INT,     @NumKills INT = 10000 AS BEGIN         SELECT DISTINCT TOP(5)         K_NPCPOS.ZoneID,         K_NPCPOS.NPCId,         k_monster.strName,         k_monster_item.iItem01,         k_monster_item.sPersent01,         k_monster_item.iItem02,         k_monster_item.sPersent02,         k_monster_item.iItem03,         k_monster_item.sPersent03,         k_monster_item.iItem04,         k_monster_item.sPersent04,         k_monster_item.iItem05,         k_monster_item.sPersent05     INTO #TempKDrops     FROM K_NPCPOS     JOIN k_monster ON K_NPCPOS.NPCId = k_monster.ssid     JOIN k_monster_item ON K_NPCPOS.NPCId = k_monster_item.sindex     WHERE k_monster.ssid = @MonsterSSID;     SELECT         g.iItemGroupNum,         g.iItem_1, g.iItem_2, g.iItem_3, g.iItem_4, g.iItem_5,         g.iItem_6, g.iItem_7, g.iItem_8, g.iItem_9, g.iItem_10,         g.iItem_11, g.iItem_12, g.iItem_13, g.iItem_14, g.iItem_15,         g.iItem_16, g.iItem_17, g.iItem_18, g.iItem_19, g.iItem_20,         g.iItem_21, g.iItem_22, g.iItem_23, g.iItem_24, g.iItem_25,         g.iItem_26, g.iItem_27, g.iItem_28, g.iItem_29, g.iItem_30     INTO #TempItemGroups     FROM MAKE_ITEM_Group g     JOIN #TempKDrops d ON g.iItemGroupNum IN (         d.iItem01, d.iItem02, d.iItem03, d.iItem04, d.iItem05     );         CREATE TABLE #SimulatedDrops (         ItemID INT,         DropCount INT     );         DECLARE @KillCount INT = 0;     DECLARE @RandValue FLOAT;     DECLARE @DropChance INT;     DECLARE @GroupNum INT;     DECLARE @ItemID INT;         WHILE @KillCount < @NumKills     BEGIN                 SET @KillCount = @KillCount + 1;                 DECLARE DropCursor CURSOR FOR         SELECT iItem01, sPersent01 FROM #TempKDrops         UNION ALL         SELECT iItem02, sPersent02 FROM #TempKDrops         UNION ALL         SELECT iItem03, sPersent03 FROM #TempKDrops         UNION ALL         SELECT iItem04, sPersent04 FROM #TempKDrops         UNION ALL         SELECT iItem05, sPersent05 FROM #TempKDrops;         OPEN DropCursor;         FETCH NEXT FROM DropCursor INTO @GroupNum, @DropChance;         WHILE @@FETCH_STATUS = 0         BEGIN                         SET @RandValue = RAND() * 10000;                         IF @RandValue <= @DropChance              PRINT 'RandomValue: ' + CAST(@RandValue AS VARCHAR(10));              PRINT 'DropChance: ' + CAST(@DropChance AS VARCHAR(10));             BEGIN                                 SELECT TOP 1 @ItemID = CASE WHEN @GroupNum = iItemGroupNum THEN                     CASE FLOOR(RAND() * 30)                         WHEN 0 THEN iItem_1                         WHEN 1 THEN iItem_2                         WHEN 2 THEN iItem_3                         WHEN 3 THEN iItem_4                         WHEN 4 THEN iItem_5                         WHEN 5 THEN iItem_6                         WHEN 6 THEN iItem_7                         WHEN 7 THEN iItem_8                         WHEN 8 THEN iItem_9                         WHEN 9 THEN iItem_10                         WHEN 10 THEN iItem_11                         WHEN 11 THEN iItem_12                         WHEN 12 THEN iItem_13                         WHEN 13 THEN iItem_14                         WHEN 14 THEN iItem_15                         WHEN 15 THEN iItem_16                         WHEN 16 THEN iItem_17                         WHEN 17 THEN iItem_18                         WHEN 18 THEN iItem_19                         WHEN 19 THEN iItem_20                         WHEN 20 THEN iItem_21                         WHEN 21 THEN iItem_22                         WHEN 22 THEN iItem_23                         WHEN 23 THEN iItem_24                         WHEN 24 THEN iItem_25                         WHEN 25 THEN iItem_26                         WHEN 26 THEN iItem_27                         WHEN 27 THEN iItem_28                         WHEN 28 THEN iItem_29                         WHEN 29 THEN iItem_30                     END                 END                 FROM #TempItemGroups;                                 INSERT INTO #SimulatedDrops (ItemID, DropCount)                 VALUES (@ItemID, 1);             END;             FETCH NEXT FROM DropCursor INTO @GroupNum, @DropChance;         END;         CLOSE DropCursor;         DEALLOCATE DropCursor;     END;         SELECT         sd.ItemID,         i.strName,         COUNT(*) AS TotalDropCount           FROM         #SimulatedDrops sd     JOIN         ITEM i ON sd.ItemID = i.Num     GROUP BY         sd.ItemID, i.strName     ORDER BY         TotalDropCount DESC;     --SELECT * FROM #TempKDrops         DROP TABLE #TempKDrops;     DROP TABLE #TempItemGroups;     DROP TABLE #SimulatedDrops; END; GO

Alastor Network
Drop Simulator - SQL Nedir ve Knight Online Geliştiricileri İçin Neden Önemlidir?

Knight Online özel sunucu geliştiricileri için temel yapı taşlarından biri olan Drop Simulator mekanizması, oyuncuların NPC'lerden veya canavarlardan item düşüşlerini simüle eden sistemdir. Bu sistem, SQL tabanlı veritabanlarında tanımlanarak sunucu üzerinde gerçekçi ve dengeli bir oyun deneyimi sunmayı hedefler. Özellikle KO Development süreçlerinde doğru şekilde ayarlanan drop oranları, sunucunuzun popülerliğini doğrudan etkiler.

SQL ile Drop Sistemlerinin Kurulumu

Drop Simulator, genellikle zone server ve game server dosyalarında tanımlanır. Bu yapı, oyuncuların bir NPC'yi öldürdüğünde belirlenen itemlerin belirli bir olasılıkla düşmesini sağlar. Bu oranlar genellikle SQL üzerinden drop_rate, item_id gibi parametrelerle tanımlanır. Örneğin bir Chitin Shell veya Iron Necklace gibi itemlerin düşme şansı, SQL tablosunda tanımlanan yüzdelere göre belirlenir. Bu tablolarda yapılan yanlış ayarlamalar, sunucuda item enflasyonuna veya eksik drop oranlarına neden olabilir.

Drop Tablolarının Tanımı ve Yapılandırılması

Knight Online özel sunucularında yaygın olarak kullanılan USKO, ROFD veya iKO gibi sistemlerde, drop sistemleri genellikle item.bin, mob.bin ve npc.bin dosyalarıyla entegre çalışır. Ancak bu dosyaların doğrudan düzenlemesi yerine, geliştiriciler genellikle SQL üzerinden MobDropTable, ItemDropRate gibi tablolar oluşturarak sistemi daha esnek hale getirir. Bu sayede sunucu üzerindeki her bir NPC'nin düşürdüğü itemler, geliştirici tarafından kolayca kontrol edilebilir ve optimize edilebilir.

Drop Oranlarının Dengelemesi ve Sunucu Dengelemesi

KO Development sürecinde, doğru drop oranları sunucunun uzun vadeli başarısı için hayati öneme sahiptir. Çok yüksek drop oranları kısa vadede oyuncu kazandırabilir ancak uzun vadede item değerlerinin düşmesine ve ekonomik dengenin bozulmasına neden olur. Bu nedenle Drop Simulator sistemlerindeki SQL ayarları, KO Cap 83 ya da Cap 70 gibi seviye sistemlerine uygun olarak dengelenmelidir. Ayrıca, PvP sunucularında Lycaon, Felankor gibi boss karakterlerin düşürdüğü özel itemlerin oranı, sunucu oyun dengesini korumak için dikkatle ayarlanmalıdır.

Knight Lobby ile Drop Simulator Geliştirme

Knight Lobby, Knight Online özel sunucu geliştiricileri için gerekli araçlara ve bilgiye ulaşmalarını sağlayan bir platformdur. Drop simulator sistemlerinin doğru kurulması ve test edilmesi konusunda uzman geliştiricilerle paylaşılan bilgiler sayesinde, sunucularınızın daha dengeli ve kaliteli hale gelmesini sağlayabilirsiniz. Knight Lobby üzerinden sunucularınızda kullanabileceğiniz örnek SQL dosyaları ve drop tabloları hakkında bilgi alabilirsiniz.

Sonuç

Drop Simulator sistemlerinin SQL üzerinden doğru şekilde yapılandırılması, Knight Online özel sunucularında oyun deneyimini ciddi anlamda etkileyen kritik bir unsurdur. Geliştiricilerin bu sistemleri doğru şekilde yönetmeleri, hem oyuncu memnuniyetini artırır hem de sunucunun uzun vadeli başarısını garanti altına alır.


What is Drop Simulator - SQL and Why Is It Important for Knight Online Developers?

Knight Online private server developers rely on the Drop Simulator mechanism, which simulates item drops from NPCs or monsters. This system, defined within SQL based databases, aims to provide a realistic and balanced gaming experience. Properly configured drop rates during KO Development directly impact your server's popularity.

Setting Up Drop Systems with SQL

Drop Simulator is typically defined in zone server and game server files. This structure ensures that when a player kills an NPC, specific items will drop according to predetermined probabilities. These rates are often set via SQL using parameters like drop_rate and item_id. For instance, the drop chance of items such as Chitin Shell or Iron Necklace is determined by percentages defined in SQL tables. Incorrect configurations in these tables may lead to item inflation or insufficient drop rates on your server.

Defining and Configuring Drop Tables

In Knight Online private servers using systems like USKO, ROFD, or iKO, drop systems typically work integrated with item.bin, mob.bin, and npc.bin files. However, instead of editing these files directly, developers often create MobDropTable, ItemDropRate, and similar tables via SQL for more flexibility. This allows developers to easily control and optimize the items dropped by each NPC on their server.

Balancing Drop Rates and Server Equilibrium

Within KO Development, correct drop rates are crucial for the long-term success of your server. Excessively high drop rates might attract players in the short term but could cause item value depreciation and economic imbalance over time. Therefore, SQL settings in Drop Simulator systems must be adjusted according to level systems like KO Cap 83 or Cap 70. Additionally, on PvP servers, the drop rates of special items from bosses like Lycaon or Felankor must be carefully configured to maintain game balance.

Developing Drop Simulator with Knight Lobby

Knight Lobby provides essential tools and information for Knight Online private server developers. Thanks to shared knowledge from experienced developers regarding the proper setup and testing of drop simulator systems, you can enhance your servers with more balanced and high-quality gameplay. You can access sample SQL files and drop tables available on Knight Lobby.

Conclusion

Correctly configuring Drop Simulator systems via SQL is a critical factor affecting the gaming experience on Knight Online private servers. When developers manage these systems properly, both player satisfaction and the long-term success of the server are enhanced.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Geri
Üst Alt