Исходники С1 (декомпиляция) - Страница 2 - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II

Lineage II
Дискуссии на тему создания, настройки и обслуживания серверов Lineage 2. При поддержке: Премиум услуги по рекламе

Ответ
Опции темы
Непрочитано 11.04.2018, 11:17   #11
Аватар для Zubastic
ZG troll squad

По умолчанию Re: Исходники С1 (декомпиляция)

Адепт с1 присоединился к нам
__________________
Zubastic вне форума Ответить с цитированием
Непрочитано 11.04.2018, 19:58   #12
Аватар для MasterToma
Пользователь

Автор темы (Топик Стартер) Re: Исходники С1 (декомпиляция)

Цитата:
Сообщение от demort Посмотреть сообщение
есть l2z чем он плох?
Он работает с админ-сокетом CacheD? Или непосредственно в базе ковыряется? Из всех, что видел, только GM OFF PANEL работает с сокетом CacheD, предназначенным для администрации.
MasterToma вне форума Ответить с цитированием
Непрочитано 11.04.2018, 21:06   #13
Аватар для demort
Пользователь

По умолчанию Re: Исходники С1 (декомпиляция)

Цитата:
Сообщение от MasterToma Посмотреть сообщение
Он работает с админ-сокетом CacheD? Или непосредственно в базе ковыряется? Из всех, что видел, только GM OFF PANEL работает с сокетом CacheD, предназначенным для администрации.
да с CacheD + база.
demort вне форума Ответить с цитированием
Непрочитано 12.04.2018, 12:59   #14
Аватар для MasterToma
Пользователь

Автор темы (Топик Стартер) Re: Исходники С1 (декомпиляция)

Все таки l2z для С4. Но все равно спасибо, можно будет подсмотреть.
MasterToma вне форума Ответить с цитированием
Непрочитано 14.04.2018, 19:35   #15
Аватар для MasterToma
Пользователь

Автор темы (Топик Стартер) Re: Исходники С1 (декомпиляция)

L2Auth портирован под x64! Следующие на очереди: LogD и L2CacheD. Параллельно идет портирование кода под Линукс.

Если ты достаточно опытен, чтобы заменить Windows IO Completion Ports на boost::asio - welcome! Как только закончишь работу, будет дан полный доступ к нашим репо.
MasterToma вне форума Ответить с цитированием
Непрочитано 15.04.2018, 11:10   #16
Аватар для demort
Пользователь

По умолчанию Re: Исходники С1 (декомпиляция)

Цитата:
Сообщение от MasterToma Посмотреть сообщение
Все таки l2z для С4. Но все равно спасибо, можно будет подсмотреть.
Там не много отличий
demort вне форума Ответить с цитированием
Непрочитано 26.04.2018, 18:52   #17
Аватар для MasterToma
Пользователь

Автор темы (Топик Стартер) Re: Исходники С1 (декомпиляция)

CacheD полностью восстановлен и протестирован. Так же был порт под х64. L2NPC следующий на очереди
MasterToma вне форума Ответить с цитированием
Непрочитано 26.04.2018, 22:10   #18
Аватар для Deazer

По умолчанию Re: Исходники С1 (декомпиляция)

Цитата:
Сообщение от MasterToma Посмотреть сообщение
CacheD полностью восстановлен и протестирован. Так же был порт под х64. L2NPC следующий на очереди
я так понял сам MSSQL вы оставляете ?
Deazer вне форума Ответить с цитированием
Непрочитано 27.04.2018, 11:38   #19
Олдфаг

По умолчанию Re: Исходники С1 (декомпиляция)

ну если есть вариант конвертировать базы и процедуры в например POSTGRESQL или MySQL то весьма очевидный шаг
smeli вне форума Ответить с цитированием
Непрочитано 28.04.2018, 16:34   #20
Аватар для Deazer

По умолчанию Re: Исходники С1 (декомпиляция)

Цитата:
Сообщение от smeli Посмотреть сообщение
ну если есть вариант конвертировать базы и процедуры в например POSTGRESQL или MySQL то весьма очевидный шаг
Можно и довольно просто, фиксируй.
PHP код:
-- `items`
CREATE TABLE IF NOT EXISTS `items` (
  `
item_idINT UNSIGNED NOT NULL DEFAULT 0,
  `
owner_idINT UNSIGNED NOT NULL,
  `
item_typeMEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
  `
amountBIGINT /*UNSIGNED*/ NOT NULL DEFAULT 0,
  `
locationENUM('VOID','INVENTORY','PAPERDOLL','WAREHOUSE','FREIGHT','CLANWH','MAIL','PET_INVENTORY','PET_PAPERDOLL'NOT NULL DEFAULT 'VOID',
  `
slotINT NOT NULL DEFAULT -1,
  `
enchantSMALLINT UNSIGNED NOT NULL DEFAULT 0,
  
CONSTRAINT `pk_itemsPRIMARY KEY (`item_id`),
  
KEY `k_owner_id` (`owner_id`),
  
KEY `k_item_type` (`item_type`),
  
KEY `k_location` (`location`)
ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `items_duration` (
  `
item_idINT UNSIGNED NOT NULL DEFAULT 0,
  `
durationINT NOT NULL DEFAULT -9999,
  
CONSTRAINT `pk_items_durationPRIMARY KEY (`item_id`)
ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `items_period` (
  `
item_idINT UNSIGNED NOT NULL DEFAULT 0,
  `
periodINT NOT NULL DEFAULT -1,
  
CONSTRAINT `pk_items_periodPRIMARY KEY (`item_id`)
ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `items_attributes` (
  `
item_idINT UNSIGNED NOT NULL DEFAULT 0,
  `
attack_typeTINYINT NOT NULL DEFAULT -2,
  `
attack_valueSMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `
defence_fireSMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `
defence_waterSMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `
defence_windSMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `
defence_earthSMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `
defence_holySMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `
defence_unholySMALLINT UNSIGNED NOT NULL DEFAULT 0,
  
CONSTRAINT `pk_items_attributesPRIMARY KEY (`item_id`)
ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `items_variation` (
  `
item_idINT UNSIGNED NOT NULL DEFAULT 0,
  `
stat1SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  `
stat2SMALLINT UNSIGNED NOT NULL DEFAULT 0,
  
CONSTRAINT `pk_items_variationPRIMARY KEY (`item_id`)
ENGINE=InnoDB;

CREATE TABLE IF NOT EXISTS `items_options` (
  `
item_idINT UNSIGNED NOT NULL DEFAULT 0,
  `
blessedINT NOT NULL DEFAULT 0,
  `
damagedINT NOT NULL DEFAULT 0,
  `
energyINT NOT NULL DEFAULT 0,
  `
flagsINT UNSIGNED NOT NULL DEFAULT 0,
  `
item_vis_typeMEDIUMINT UNSIGNED NOT NULL DEFAULT 0,
  
CONSTRAINT `pk_items_optionsPRIMARY KEY (`item_id`)
ENGINE=InnoDB;

DELIMITER $$

/* Get full item by item_id (objId) */
DROP PROCEDURE IF EXISTS `lip_GetItem` $$
CREATE PROCEDURE `lip_GetItem` (IN iItemID INTEGER UNSIGNED)
 
NOT DETERMINISTIC
 SQL SECURITY DEFINER
BEGIN
  SELECT SQL_NO_CACHE 
    
`i`.`item_id` AS `item_id`,
    `
i`.`owner_id` AS `owner_id`,
    `
i`.`item_type` AS `item_type`,
    `
i`.`amount` AS `amount`,
    `
i`.`location` AS `location`,
    `
i`.`slot` AS `slot`,
    `
i`.`enchant` AS `enchant`,
    
IFNULL(`id`.`duration`, -9999) AS `duration`,
    
IFNULL(`ip`.`period`, -1) AS `period`,
    
IFNULL(`ia`.`attack_type`, -2) AS `attack_attr_type`,
    
IFNULL(`ia`.`attack_value`, 0) AS `attack_attr_val`,
    
IFNULL(`ia`.`defence_fire`, 0) AS `defence_attr_fire`,
    
IFNULL(`ia`.`defence_water`, 0) AS `defence_attr_water`,
    
IFNULL(`ia`.`defence_wind`, 0) AS `defence_attr_wind`,
    
IFNULL(`ia`.`defence_earth`, 0) AS `defence_attr_earth`,
    
IFNULL(`ia`.`defence_holy`, 0) AS `defence_attr_holy`,
    
IFNULL(`ia`.`defence_unholy`, 0) AS `defence_attr_unholy`,
    
IFNULL(`iv`.`stat1`, 0) AS `variation_stat1`,
    
IFNULL(`iv`.`stat2`, 0) AS `variation_stat2`,
    
IFNULL(`io`.`blessed`, 0) AS `blessed`,
    
IFNULL(`io`.`damaged`, 0) AS `damaged`,
    
IFNULL(`io`.`energy`, 0) AS `item_energy`,
    
IFNULL(`io`.`flags`, 0) AS `custom_flags`,
    
IFNULL(`io`.`item_vis_type`, 0) AS `item_vis_type`
  
FROM
    
`items` `i`
    
LEFT JOIN 
      
`items_duration` `id`
    
ON
      
`id`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_period` `ip`
    
ON
      
`ip`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_attributes` `ia`
    
ON
      
`ia`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_variation` `iv`
    
ON
      
`iv`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_options` `io`
    
ON
      
`io`.`item_id` = `i`.`item_id` -- iItemID
  WHERE 
`i`.`item_id` = iItemID LIMIT 1;
END $$


/* Load all item by owner_id */
DROP PROCEDURE IF EXISTS `lip_LoadItemsByOwner` $$
CREATE PROCEDURE `lip_LoadItemsByOwner` (IN iOwnerID INTEGER UNSIGNED)
 
NOT DETERMINISTIC
 SQL SECURITY DEFINER
BEGIN
  SELECT SQL_NO_CACHE 
    
`i`.`item_id` AS `item_id`,
    `
i`.`owner_id` AS `owner_id`,
    `
i`.`item_type` AS `item_type`,
    `
i`.`amount` AS `amount`,
    `
i`.`location` AS `location`,
    `
i`.`slot` AS `slot`,
    `
i`.`enchant` AS `enchant`,
    
IFNULL(`id`.`duration`, -9999) AS `duration`,
    
IFNULL(`ip`.`period`, -1) AS `period`,
    
IFNULL(`ia`.`attack_type`, -2) AS `attack_attr_type`,
    
IFNULL(`ia`.`attack_value`, 0) AS `attack_attr_val`,
    
IFNULL(`ia`.`defence_fire`, 0) AS `defence_attr_fire`,
    
IFNULL(`ia`.`defence_water`, 0) AS `defence_attr_water`,
    
IFNULL(`ia`.`defence_wind`, 0) AS `defence_attr_wind`,
    
IFNULL(`ia`.`defence_earth`, 0) AS `defence_attr_earth`,
    
IFNULL(`ia`.`defence_holy`, 0) AS `defence_attr_holy`,
    
IFNULL(`ia`.`defence_unholy`, 0) AS `defence_attr_unholy`,
    
IFNULL(`iv`.`stat1`, 0) AS `variation_stat1`,
    
IFNULL(`iv`.`stat2`, 0) AS `variation_stat2`,
    
IFNULL(`io`.`blessed`, 0) AS `blessed`,
    
IFNULL(`io`.`damaged`, 0) AS `damaged`,
    
IFNULL(`io`.`energy`, 0) AS `item_energy`,
    
IFNULL(`io`.`flags`, 0) AS `custom_flags`,
    
IFNULL(`io`.`item_vis_type`, 0) AS `item_vis_type`
  
FROM
    
`items` `i`
    
LEFT JOIN 
      
`items_duration` `id`
    
ON
      
`id`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_period` `ip`
    
ON
      
`ip`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_attributes` `ia`
    
ON
      
`ia`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_variation` `iv`
    
ON
      
`iv`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_options` `io`
    
ON
      
`io`.`item_id` = `i`.`item_id` -- iItemID
  WHERE 
`i`.`owner_id` = iOwnerID;
END $$

/* Load all item by owner_id and loc */
DROP PROCEDURE IF EXISTS `lip_LoadItemsByOwnerAndLoc` $$
CREATE PROCEDURE `lip_LoadItemsByOwnerAndLoc` (IN iOwnerID INTEGER UNSIGNEDIN eLoc ENUM
            
('VOID',
             
'INVENTORY',
             
'PAPERDOLL',
             
'WAREHOUSE',
             
'FREIGHT',
             
'CLANWH',
             
'MAIL',
             
'PET_INVENTORY',
             
'PET_PAPERDOLL'))
 
NOT DETERMINISTIC
 SQL SECURITY DEFINER
BEGIN
  SELECT SQL_NO_CACHE 
    
`i`.`item_id` AS `item_id`,
    `
i`.`owner_id` AS `owner_id`,
    `
i`.`item_type` AS `item_type`,
    `
i`.`amount` AS `amount`,
    `
i`.`location` AS `location`,
    `
i`.`slot` AS `slot`,
    `
i`.`enchant` AS `enchant`,
    
IFNULL(`id`.`duration`, -9999) AS `duration`,
    
IFNULL(`ip`.`period`, -1) AS `period`,
    
IFNULL(`ia`.`attack_type`, -2) AS `attack_attr_type`,
    
IFNULL(`ia`.`attack_value`, 0) AS `attack_attr_val`,
    
IFNULL(`ia`.`defence_fire`, 0) AS `defence_attr_fire`,
    
IFNULL(`ia`.`defence_water`, 0) AS `defence_attr_water`,
    
IFNULL(`ia`.`defence_wind`, 0) AS `defence_attr_wind`,
    
IFNULL(`ia`.`defence_earth`, 0) AS `defence_attr_earth`,
    
IFNULL(`ia`.`defence_holy`, 0) AS `defence_attr_holy`,
    
IFNULL(`ia`.`defence_unholy`, 0) AS `defence_attr_unholy`,
    
IFNULL(`iv`.`stat1`, 0) AS `variation_stat1`,
    
IFNULL(`iv`.`stat2`, 0) AS `variation_stat2`,
    
IFNULL(`io`.`blessed`, 0) AS `blessed`,
    
IFNULL(`io`.`damaged`, 0) AS `damaged`,
    
IFNULL(`io`.`energy`, 0) AS `item_energy`,
    
IFNULL(`io`.`flags`, 0) AS `custom_flags`,
    
IFNULL(`io`.`item_vis_type`, 0) AS `item_vis_type`
  
FROM
    
`items` `i`
    
LEFT JOIN 
      
`items_duration` `id`
    
ON
      
`id`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_period` `ip`
    
ON
      
`ip`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_attributes` `ia`
    
ON
      
`ia`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_variation` `iv`
    
ON
      
`iv`.`item_id` = `i`.`item_id` -- iItemID
    LEFT JOIN
      
`items_options` `io`
    
ON
      
`io`.`item_id` = `i`.`item_id` -- iItemID
  WHERE 
`i`.`owner_id` = iOwnerID AND `i`.`location` = eLoc;
END $$


/* Delete item from db by item_id */
DROP PROCEDURE IF EXISTS `lip_DeleteItem` $$
CREATE PROCEDURE `lip_DeleteItem` (IN iItemID INTEGER UNSIGNED)
 
NOT DETERMINISTIC
 SQL SECURITY DEFINER
BEGIN
  DELETE FROM 
`itemsWHERE `items`.`item_id` = iItemID LIMIT 1;
  
DELETE FROM `items_durationWHERE `items_duration`.`item_id` = iItemID LIMIT 1;
  
DELETE FROM `items_periodWHERE `items_period`.`item_id` = iItemID LIMIT 1;
  
DELETE FROM `items_attributesWHERE `items_attributes`.`item_id` = iItemID LIMIT 1;
  
DELETE FROM `items_variationWHERE `items_variation`.`item_id` = iItemID LIMIT 1;  
  
DELETE FROM `items_optionsWHERE `items_options`.`item_id` = iItemID LIMIT 1;
END $$

/* Save item */
DROP PROCEDURE IF EXISTS `lip_StoreItem` $$
CREATE PROCEDURE `lip_StoreItem` (IN iItemID INTEGER UNSIGNED,
                                 
IN iOwnerID INTEGER UNSIGNED,
                                 
IN iItemType MEDIUMINT UNSIGNED,
                                 
IN iAmount BIGINT,
                                 
IN iSlot INTEGER,
                                 
IN eLoc ENUM('VOID','INVENTORY','PAPERDOLL','WAREHOUSE','FREIGHT','CLANWH','MAIL','PET_INVENTORY','PET_PAPERDOLL'),
                                 
IN iEnchant SMALLINT UNSIGNED,
                                 
IN iDuration INTEGER,
                                 
IN iPeriod INTEGER,
                                 
IN iAttackType TINYINT,
                                 
IN iAttackVal SMALLINT,
                                 
IN iDefFire SMALLINT,
                                 
IN iDefWater SMALLINT,
                                 
IN iDefWind SMALLINT,
                                 
IN iDefEarth SMALLINT,
                                 
IN iDefHoly SMALLINT,
                                 
IN iDefUnholy SMALLINT,
                                 
IN iVariStat1 SMALLINT UNSIGNED,
                                 
IN iVariStat2 SMALLINT UNSIGNED,
                                 
IN iBlessed INTEGER,
                                 
IN iDamaged INTEGER,
                                 
IN iItemEnergy INTEGER,
                                 
IN iCustomFlags INTEGER UNSIGNED,
                                 
IN iItemVisType MEDIUMINT UNSIGNED)
 
NOT DETERMINISTIC
 SQL SECURITY DEFINER
entry
BEGIN
  
DECLARE iRowCount INTEGER DEFAULT 0;
  IF (
iAmount <= 0) OR (iDuration 0) OR (iPeriod 0) OR (iOwnerID 0THEN -- OR (eLoc 'VOID')
    
CALL `lip_DeleteItem`(iItemID);
    
LEAVE entry;
  
END IF;
  
  
INSERT LOW_PRIORITY INTO `items` (
    `
item_id`,
    `
owner_id`,
    `
item_type`,
    `
amount`,
    `
location`,
    `
slot`,
    `
enchant`
  ) 
VALUES (
    
iItemID,
    
iOwnerID,
    
iItemType,
    
iAmount,
    
eLoc,
    
iSlot,
    
iEnchant
  
ON DUPLICATE KEY UPDATE 
    
`owner_id` = iOwnerID,
    `
item_type` = iItemType,
    `
amount` = iAmount,
    `
location` = eLoc,
    `
slot` = iSlot,
    `
enchant` = iEnchant;
  
  
SET iRowCount ROW_COUNT();
  -- 
SELECT 'lip_StoreItem[303]'iRowCount;
  
  -- 
TODOROW_COUNT() bug ???
  CASE 
    
WHEN iRowCount 1 THEN -- insert new
      
BEGIN
        
IF iDuration 0 THEN -- new item duration
          INSERT LOW_PRIORITY INTO 
`items_duration` (
            `
item_id`,
            `
duration`
          ) 
VALUES (
            
iItemID,
            
iDuration
          
ON DUPLICATE KEY UPDATE
            
`duration` = iDuration;
          -- 
SELECT 'lip_StoreItem[316]'iItemIDiDurationROW_COUNT();
        
END IF;
        
        IF 
iPeriod 0 THEN -- new item period
          INSERT LOW_PRIORITY INTO 
`items_period` (
            `
item_id`,
            `
period`
          ) 
VALUES (
            
iItemID,
            
iPeriod
          
ON DUPLICATE KEY UPDATE
            
`period` = iPeriod;
          -- 
SELECT 'lip_StoreItem[326]'iItemIDiPeriodROW_COUNT();
        
END IF;
        
        IF ((
iAttackType > -2) AND (iAttackVal 0)) OR -- have attack or some defence in new item
           
(iDefFire 0) OR (iDefWater 0) OR 
           (
iDefWind 0) OR (iDefEarth 0) OR 
           (
iDefHoly 0) OR (iDefUnholy 0THEN
          INSERT LOW_PRIORITY INTO 
`items_attributes` (
            `
item_id`,
            `
attack_type`,
            `
attack_value`,
            `
defence_fire`,
            `
defence_water`,
            `
defence_wind`,
            `
defence_earth`,
            `
defence_holy`,
            `
defence_unholy`
          ) 
VALUES (
            
iItemID,
            
iAttackType,
            
iAttackVal,
            
iDefFire,
            
iDefWater,
            
iDefWind,
            
iDefEarth,
            
iDefHoly,
            
iDefUnholy
          
ON DUPLICATE KEY UPDATE
            
`attack_type` = iAttackType,
            `
attack_value` = iAttackVal,
            `
defence_fire` = iDefFire,
            `
defence_water` = iDefWater,
            `
defence_wind` = iDefWind,
            `
defence_earth` = iDefEarth,
            `
defence_holy` = iDefHoly,
            `
defence_unholy` = iDefUnholy;

          -- 
SELECT 'lip_StoreItem[353]'iItemID,iAttackType,iAttackVal,iDefFire,iDefWater,iDefWind,iDefEarth,iDefHoly,iDefUnholy,ROW_COUNT();
        
END IF;
      
        IF (
iVariStat1 0) OR (iVariStat2 0THEN -- have some variation(augumentationin new item
          INSERT LOW_PRIORITY INTO 
`items_variation` (
            `
item_id`,
            `
stat1`,
            `
stat2`
          ) 
VALUES (
            
iItemID,
            
iVariStat1,
            
iVariStat2
          
ON DUPLICATE KEY UPDATE
            
`stat1` = iVariStat1,
            `
stat2` = iVariStat2;
          -- 
SELECT 'lip_StoreItem[365]'iItemIDiVariStat1iVariStat2ROW_COUNT();
        
END IF;
        
        IF (
iBlessed 0) OR (iDamaged 0) OR (iItemEnergy 0) OR (iCustomFlags 0) OR (iItemVisType 0THEN -- have some rare or custom flag in item
          INSERT LOW_PRIORITY INTO 
`items_options` (
            `
item_id`,
            `
blessed`,
            `
damaged`,
            `
energy`,
            `
flags`,
            `
item_vis_type`
          ) 
VALUES (
            
iItemID,
            
iBlessed,
            
iDamaged,
            
iItemEnergy,
            
iCustomFlags,
            
iItemVisType
          
ON DUPLICATE KEY UPDATE
            
`blessed` = iBlessed,
            `
damaged` = iDamaged,
            `
energy` = iItemEnergy,
            `
flags` = iCustomFlags,
            `
item_vis_type` = iItemVisType;
          -- 
SELECT 'lip_StoreItem[381]'iItemIDiBlessediDamagediItemEnergyiCustomFlagsROW_COUNT();
        
END IF;
      
END;
    
WHEN (iRowCount 0) OR (iRowCount 2) OR (iRowCount 3THEN -- not changed or updated or Bug#46675(or toad for mysql future?)
      
BEGIN
        
IF iDuration 0 THEN
          UPDATE LOW_PRIORITY 
`items_durationSET `duration` = iDuration WHERE `item_id` = iItemID LIMIT 1;
--           
INSERT LOW_PRIORITY INTO `items_duration` (
--             `
item_id`,
--             `
duration`
--           ) 
VALUES (
--             
iItemID,
--             
iDuration
--           ) ON DUPLICATE KEY UPDATE 
--             `duration` = iDuration;
--        
SELECT 'lip_StoreItem[395]'iItemIDiDurationROW_COUNT();
        
END IF;
        
        IF 
iPeriod 0 THEN
          UPDATE LOW_PRIORITY 
`items_periodSET `period` = iPeriod WHERE `item_id` = iItemID LIMIT 1;
--           
INSERT LOW_PRIORITY INTO `items_period` (
--             `
item_id`,
--             `
period`
--           ) 
VALUES (
--             
iItemID,
--             
iPeriod
--           ) ON DUPLICATE KEY UPDATE 
--             `period` = iPeriod;
--        
SELECT 'lip_StoreItem[407]'iItemIDiDurationROW_COUNT();
        
END IF;
        
        IF ((
iAttackType > -2) AND (iAttackVal 0)) OR -- have attack or some defence
           
(iDefFire 0) OR (iDefWater 0) OR 
           (
iDefWind 0) OR (iDefEarth 0) OR 
           (
iDefHoly 0) OR (iDefUnholy 0THEN
          INSERT LOW_PRIORITY INTO 
`items_attributes` ( -- add new or update old
            
`item_id`,
            `
attack_type`,
            `
attack_value`,
            `
defence_fire`,
            `
defence_water`,
            `
defence_wind`,
            `
defence_earth`,
            `
defence_holy`,
            `
defence_unholy`
          ) 
VALUES (
            
iItemID,
            
iAttackType,
            
iAttackVal,
            
iDefFire,
            
iDefWater,
            
iDefWind,
            
iDefEarth,
            
iDefHoly,
            
iDefUnholy
          
ON DUPLICATE KEY UPDATE 
            
`attack_type` = iAttackType,
            `
attack_value` = iAttackVal,
            `
defence_fire` = iDefFire,
            `
defence_water` = iDefWater,
            `
defence_wind` = iDefWind,
            `
defence_earth` = iDefEarth,
            `
defence_holy` = iDefHoly,
            `
defence_unholy` = iDefUnholy;
          -- 
SELECT 'lip_StoreItem[443]'iItemID,iAttackType,iAttackVal,iDefFire,iDefWater,iDefWind,iDefEarth,iDefHoly,iDefUnholy,ROW_COUNT();
        ELSE -- or 
delete (eg remove attribute)
          
DELETE LOW_PRIORITY FROM `items_attributesWHERE `item_id` = iItemID LIMIT 1;
          -- 
SELECT 'lip_StoreItem[447]'iItemID,iAttackType,iAttackVal,iDefFire,iDefWater,iDefWind,iDefEarth,iDefHoly,iDefUnholy,ROW_COUNT();
        
END IF;
        
        
        IF (
iVariStat1 0) OR (iVariStat2 0THEN -- have some new variation(augumentationin existing item
          INSERT INTO 
`items_variation` (
            `
item_id`,
            `
stat1`,
            `
stat2`
          ) 
VALUES (
            
iItemID,
            
iVariStat1,
            
iVariStat2
          
ON DUPLICATE KEY UPDATE 
            
`stat1` = iVariStat1,
            `
stat2` = iVariStat2;
          -- 
SELECT 'lip_StoreItem[462]'iVariStat1iVariStat2ROW_COUNT();
        ELSE -- 
delete variation (variation was removed or newer exists)
          
DELETE LOW_PRIORITY FROM `items_variationWHERE `item_id` = iItemID LIMIT 1;
          -- 
SELECT 'lip_StoreItem[465]'iVariStat1iVariStat2ROW_COUNT();
        
END IF;
        
        IF (
iBlessed 0) OR (iDamaged 0) OR (iItemEnergy 0) OR (iCustomFlags 0) OR (iItemVisType 0THEN -- have some new rare or custom flag in item
          INSERT LOW_PRIORITY INTO 
`items_options` (
            `
item_id`,
            `
blessed`,
            `
damaged`,
            `
energy`,
            `
flags`,
            `
item_vis_type`
          ) 
VALUES (
            
iItemID,
            
iBlessed,
            
iDamaged,
            
iItemEnergy,
            
iCustomFlags,
            
iItemVisType
          
ON DUPLICATE KEY UPDATE
            
`blessed` = iBlessed,
            `
damaged` = iDamaged,
            `
energy` = iItemEnergy,
            `
flags` = iCustomFlags,
            `
item_vis_type` = iItemVisType;
          -- 
SELECT 'lip_StoreItem[484]'iItemIDiBlessediDamagediItemEnergyiCustomFlagsROW_COUNT();
        ELSE -- 
remove rare flags 
          DELETE LOW_PRIORITY FROM 
`items_optionsWHERE `item_id` = iItemID LIMIT 1;
          -- 
SELECT 'lip_StoreItem[487]'iItemIDiBlessediDamagediItemEnergyiCustomFlagsROW_COUNT();
        
END IF;
      
END;
    ELSE
      
BEGIN
        
-- exception
        
-- SELECT 'lip_StoreItem[384] exception'iRowCount;
        
CALL `Unexpected ROW_COUNT() result in lip_StoreItem`;
      
END;
  
END CASE;
END $$

DELIMITER 
Deazer вне форума Ответить с цитированием
Ответ

Метки
decompile, pts исходники, source


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Декомпиляция и Компиляция xPalarmax Работа со скриптами 4 08.12.2013 10:20
[Видео мануал] Декомпиляция и компиляция ядра L2j mazillka Тех-документация 3 13.05.2012 14:25
[шара]Исходники Scoria 3\4, исходники защиты SPS, powerpak'a Perfecto Lineage II 0 26.04.2010 17:18
Декомпиляция Java Сервера Evil-Soft Lineage II 6 20.08.2009 18:15


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 04:25. Часовой пояс GMT +3.

Вверх