[Paylaşım] Item Arama Prosedürü (BANKA & Inventory)

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

Admin

Knight Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
45,967
[HIDE-REPLY]Merhabalar,

Konu başka bir forumdan alıntıdır. İşinize yarayabileceğini düşündüm.

1299,18xx,19xx,20xx,21xx,22xx sürümlerde çalışmaktadır.

Prosedür:

Kod:
-- ============================================= -- Author: SexyReplay -- Create date: 04/16/2009 -- Description: Find who has X item -- ============================================= Create procedure [dbo].[FindItems] @num int, @mode int as if @mode in (1,2) begin if @mode = 1 begin if exists (select * from sysobjects where id = object_id(N'found') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table found CREATE TABLE found([StrUserID] [varchar](21) NULL) end if @mode = 2 begin if exists (select * from sysobjects where id = object_id(N'found') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table found CREATE TABLE found([strAccountID] [varchar](21) NULL) end declare @item varbinary(4), @i int set @item = substring(cast(@num as varbinary(4)),4,1)+substring(cast(@num as varbinary(4)),3,1)+substring(cast(@num as varbinary(4)),2,1)+substring(cast(@num as varbinary(4)),1,1) set @i = 1 if @mode = 1 -- Find X item on all char's begin while @i < 401 begin insert found select struserid from userdata where substring(stritem, @i,4) = @item set @i = @i + 8 end end else if @mode = 2 -- Find X item on all inn's begin while @i < 1601 begin insert found select straccountid from warehouse where substring(warehousedata, @i,4) = @item set @i = @i + 8 end end select * from found drop table found end


Kullanımı:

Kod:
exec finditems 999999995, 1 (Char uzerinde arar) exec finditems 310310010, 2 (Bankada Arar)


Item numaralarını yazarak kullanabilirsiniz. Aramak istediğiniz itemin kodunu yazmanız yeterli.[/HIDE-REPLY]
Knight Online Private Server dünyasında item aramak, hem geliştiriciler hem de oyuncular için önemli bir konudur. Özellikle banka ve envanter verilerinde spesifik itemleri bulabilmek, sunucu yönetimi ve hata ayıklama süreçlerinde büyük kolaylık sağlar. Bu makalede, Item Arama Prosedürü konusuna odaklanarak, hem banka hem de envanter verileri üzerinde nasıl arama yapılacağı detaylı olarak ele alınacaktır.

Knight Online özel sunucularında geliştirme yapanlar, çoğunlukla database üzerinde çalışarak farklı tablolarda verileri düzenlemek zorundadır. Bu veriler arasında character_inventory, character_bank gibi tablolar yer alır. Bu tablolarda yer alan itemler, genellikle item_instance adlı bir yapıya referans verir. Dolayısıyla, belirli bir itemin hangi karaktere veya bankaya ait olduğunu bulmak için bu yapıları anlamak gerekir.

Öncelikle, banka verilerini inceleyelim. Banka verisi, genellikle character_bank adlı tabloda tutulur. Her bir banka slotu, bir karakterin bankasındaki belirli bir konumu temsil eder. Bu tablo, genellikle char_id (karakter ID), slot_id (slot numarası), item_id (itemin eşsiz ID'si) ve count (sayısı) gibi alanlardan oluşur. Belirli bir itemi bankada aramak için, item_id alanını kullanarak SQL sorgusu yazmak yeterlidir.

Örnek sorgu: SELECT char_id, slot_id FROM character_bank WHERE item_id = X; Burada X, aranan itemin ID'sidir. Bu sorgu, belirtilen itemin hangi karakterlerin bankasında ve hangi slotlarda bulunduğunu gösterir.

Benzer şekilde, envanter[/BR] verileri de character_inventory tablosunda saklanır. Bu tablo da char_id, slot_id, item_id, count gibi alanları içerir. Envanterde arama yapmak için benzer bir sorgu kullanılabilir: SELECT char_id, slot_id FROM character_inventory WHERE item_id = X;

Ayrıca, geliştiricilerin dikkat etmesi gereken önemli bir konu da item.bin dosyasıdır. Bu dosya, sunucuda tanımlı olan tüm itemlerin temel özelliklerini içerir. Eğer bir item ID'si item.bin dosyasında tanımlı değilse, o item sunucuda görünmeyecektir. Bu nedenle, arama yaparken hem database hem de item.bin dosyasının senkronize olduğundan emin olmak gerekir.

Sunucu geliştirme sürecinde, macro bot veya KO Bot gibi sistemler üzerinden istenmeyen itemlerin dağıldığı durumlar da olabilir. Bu durumlarda, hızlıca bu itemleri tespit etmek ve silmek için yukarıdaki prosedür oldukça faydalıdır. Ayrıca, KO Addon sistemleri üzerinden de envanter ve banka verileri takip edilebilir. MyKO gibi araçlarla veri analizi daha da kolaylaştırılabilir.

Sonuç olarak, Item Arama Prosedürü, hem banka hem de envanter verileri üzerinde çalışırken oldukça kritik bir işlemdir. Knight Online özel sunucularında aktif olarak geliştirme yapan herkes için bu bilgiler, verimli ve hatasız bir yönetim sağlar. Bu tür işlemlerde dikkatli olunması gereken diğer bir konu ise, SQL injection gibi güvenlik açıklarına karşı korunmak için sorguların kontrollü bir şekilde yazılmasıdır. KnightLobby olarak, bu konulara odaklanan geliştiricilere kaynak sunuyoruz.


Knight Online Private Server world, searching for items is important for both developers and players. Especially finding specific items in bank and inventory data provides great convenience during server management and debugging processes. In this article, we will focus on the Item Search Procedure and detail how to search within bank and inventory data.

In Knight Online private servers, developers often work on the database by editing data in different tables. These data include tables like character_inventory and character_bank. These tables usually reference a structure called item_instance. Therefore, understanding these structures is necessary to find which character or bank a specific item belongs to.

Firstly, let's examine the bank data. Bank data is usually stored in the table named character_bank. Each bank slot represents a specific location in a character’s bank. This table typically consists of fields such as char_id (character ID), slot_id (slot number), item_id (unique ID of the item), and count (quantity). To search for a specific item in the bank, writing an SQL query using the item_id field is sufficient.

Example query: SELECT char_id, slot_id FROM character_bank WHERE item_id = X; Here, X is the ID of the searched item. This query shows which characters’ banks and slots the specified item is located in.

Similarly, inventory data is also stored in the character_inventory table. This table also includes fields like char_id, slot_id, item_id, and count. A similar query can be used to search in the inventory: SELECT char_id, slot_id FROM character_inventory WHERE item_id = X;

Another important point developers must pay attention to is the item.bin file. This file contains the basic properties of all items defined on the server. If an item ID is not defined in the item.bin file, that item will not appear on the server. Therefore, when searching, it is crucial to ensure synchronization between the database and the item.bin file.

During the server development process, unwanted items might be distributed via systems like macro bot or KO Bot. In such cases, the above procedure is highly useful to quickly detect and remove these items. Additionally, inventory and bank data can be tracked through KO Addon systems. Tools like MyKO can further simplify data analysis.

In conclusion, the Item Search Procedure is a critical operation when working with bank and inventory data. For everyone actively developing on Knight Online private servers, these pieces of information provide efficient and error-free management. Another topic that requires careful attention during such operations is writing queries in a controlled manner to protect against security vulnerabilities such as SQL injection. As KnightLobby, we provide resources focused on these topics.
 

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

Benzer konular

Geri
Üst Alt