Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
davidx

Запрос с БД

Добрый день. создал SQL файл с запросом

 

BEGIN
# Открываем закрытые машины, неактивные более 7 дней
UPDATE Object_DATA
SET Object_DATA.CharacterID = 0
WHERE Object_DATA.CharacterID <> 0
AND Object_DATA.CharacterID <= 12500
AND Object_DATA.Classname NOT LIKE 'Tent%'
AND Object_DATA.Classname NOT LIKE '%Locked'
AND Object_DATA.Classname NOT LIKE 'Land%'
AND Object_DATA.Classname NOT LIKE 'Cinder%'
AND Object_DATA.Classname NOT LIKE 'Wood%'
AND Object_DATA.Classname NOT LIKE 'Metal%'
AND Object_DATA.Classname NOT LIKE '%Fuel%'
AND Object_DATA.Classname NOT LIKE '%Storage%'
AND Object_DATA.Classname NOT IN ('OutHouse_DZ', 'GunRack_DZ', 'WorkBench_DZ', 'Sandbag1_DZ', 'FireBarrel_DZ', 'DesertCamoNet_DZ', 'StickFence_DZ', 'LightPole_DZ', 'DeerStand_DZ', 'ForestLargeCamoNet_DZ', 'Plastic_Pole_EP1_DZ', 'Hedgehog_DZ', 'FuelPump_DZ', 'Fort_RazorWire', 'SandNest_DZ', 'ForestCamoNet_DZ', 'Fence_corrugated_DZ', 'CanvasHut_DZ', 'Generator_DZ','BagFenceRound_DZ')
and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 7 DAY);
#==================================================================================================================
# Наносим урон в 50% технике, неиспользуемой более 10 дней
UPDATE Object_DATA SET `Damage`=`Damage`+ 0.9
WHERE Object_DATA.CharacterID <> 0
AND Object_DATA.CharacterID <= 12500
AND Object_DATA.Classname NOT LIKE 'Tent%'
AND Object_DATA.Classname NOT LIKE '%Locked'
AND Object_DATA.Classname NOT LIKE 'Land%'
AND Object_DATA.Classname NOT LIKE 'Cinder%'
AND Object_DATA.Classname NOT LIKE 'Wood%'
AND Object_DATA.Classname NOT LIKE 'Metal%'
AND Object_DATA.Classname NOT LIKE '%Fuel%'
AND Object_DATA.Classname NOT LIKE '%Storage%'
AND Object_DATA.Classname NOT IN ('OutHouse_DZ', 'GunRack_DZ', 'WorkBench_DZ', 'Sandbag1_DZ', 'FireBarrel_DZ', 'DesertCamoNet_DZ', 'StickFence_DZ', 'LightPole_DZ', 'DeerStand_DZ', 'ForestLargeCamoNet_DZ', 'Plastic_Pole_EP1_DZ', 'Hedgehog_DZ', 'FuelPump_DZ', 'Fort_RazorWire', 'SandNest_DZ', 'ForestCamoNet_DZ', 'Fence_corrugated_DZ', 'CanvasHut_DZ', 'Generator_DZ','BagFenceRound_DZ')
and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 10 DAY);

#==================================================================================================================

# Удаляем взорванную или разбитую технику
DELETE FROM `object_data` WHERE `Damage` > 0.9; 

# Удаляем технику без ключей и с пустым инвентарем стоящую более 3 дней
DELETE FROM `object_data` WHERE `CharacterID` = 0 AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') OR (`Inventory` = '[[[],[]],[[],[]],[[],[]]]') ) AND Object_DATA.Classname NOT LIKE '%Fuel%' and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 3 DAY); 

# Удаляем велосипеды, нетронутые более 3 дней
DELETE FROM `object_data` WHERE (Classname = "MMT_Civ" or Classname = "Old_bike_TK_INS_EP1") AND DATE(LastUpdated) < CURDATE() - INTERVAL 3 DAY;

# Удаляем мёртвых персонажей из базы
DELETE FROM `character_data` WHERE Alive = 0; 

# Удаляем персонажей, незаходивших на сервер более 25 дней
DELETE FROM `character_data` WHERE `LastLogin` < DATE_SUB(NOW() , INTERVAL 25 DAY); 

# Очищаем историю заходов на сервер 
DELETE FROM `player_login` WHERE DATE(Datestamp) < CURDATE() - INTERVAL 10 DAY;

#Наносим дамаг любой технике и постройкам в 10% раз в 2 дня
UPDATE `Object_DATA` SET `Damage`=0.1 WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') );

=====================================================================================================================
# Обновление статуса сейфов и локбоксов до состояния "открыто" (нетронутых болеее 15 дней)
UPDATE `object_data` SET `CharacterID` = 0 WHERE (Classname = "VaultStorageLocked" or Classname = "LockboxStorageLocked") and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 15 DAY); 
#Удаляем товар, лежащий более недели на аукционе
DELETE FROM `store` WHERE `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY); 
 

END

При попытке загрузить в navicat (execute SQL file) выдает ошибки 

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE Object_DATA
SET Object_DATA.CharacterID = 0
WHERE Object_DATA.Character' at line 3
[Err] BEGIN

и запросы не загружаются. Кто может помочь?

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

у меня эвент не запускается. сервак на платном хосте. бд там же. в навикат пишет что эвент оff

 

Гугл всегда помогает в таких ситуациях.

Заходишь в папку с XAMPP (обычно в корне диска С:), находишь там файл my.ini, в него в раздел [mysqld] вписываешь event_scheduler=ON, чтобы получилось примерно так:

[mysqld]
port= 3306
socket = "C:/xampp/mysql/mysql.sock"
basedir = "C:/xampp/mysql" 
tmpdir = "C:/xampp/tmp" 
datadir = "C:/xampp/mysql/data"
pid_file = "mysql.pid"
# enable-named-pipe
key_buffer = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
log_error = "mysql_error.log"
event_scheduler = on

Всё, ивенты включены. Презапускаешь XAMPP и радуешься.

 

По поводу открытия техники. Создаёшь процедуру в твоём Navicat с названием "FindVehicleKeysCount" и таким кодом:

BEGIN
    DECLARE totalKeys INT DEFAULT 0;
    DECLARE keyName VARCHAR(32) DEFAULT "";
    DECLARE keysInChar INT DEFAULT 0;
    DECLARE keysInObj INT DEFAULT 0;

    SET keyName = (CASE
        WHEN `keyId` < 2501 THEN CONCAT('ItemKeyGreen', `keyId`)
        WHEN `keyId` < 5001 THEN CONCAT('ItemKeyRed', `keyId` - 2500)
        WHEN `keyId` < 7501 THEN CONCAT('ItemKeyBlue', `keyId` - 5000)
        WHEN `keyId` < 10001 THEN CONCAT('ItemKeyYellow', `keyId` - 7500)
        WHEN `keyId` < 12501 THEN CONCAT('ItemKeyBlack', `keyId` - 10000)
        ELSE 'ERROR'
    END);

    SET keysInChar = (SELECT COUNT(*) FROM `Character_DATA` WHERE `Alive` = '1' AND (`Inventory` LIKE CONCAT('%', keyName, '%') OR `Backpack` LIKE CONCAT('%', keyName, '%')));
    SET keysInObj = (SELECT COUNT(*) FROM `Object_DATA` WHERE `Inventory` LIKE CONCAT('%', keyName, '%'));

    RETURN (keysInChar + keysInObj);
END

Затем создаёшь ивент с таким кодом:

UPDATE Object_DATA
        SET Object_DATA.CharacterID = 0
        WHERE Object_DATA.CharacterID <> 0
            AND Object_DATA.CharacterID <= 12500
            AND Object_DATA.Classname NOT LIKE 'Tent%'
            AND Object_DATA.Classname NOT LIKE '%Locked'
            AND Object_DATA.Classname NOT LIKE 'Land%'
            AND Object_DATA.Classname NOT LIKE 'Cinder%'
            AND Object_DATA.Classname NOT LIKE 'Wood%'
            AND Object_DATA.Classname NOT LIKE 'Metal%'
            AND Object_DATA.Classname NOT LIKE '%Storage%'
            AND Object_DATA.Classname NOT IN ('OutHouse_DZ', 'GunRack_DZ', 'WorkBench_DZ', 'Sandbag1_DZ', 'FireBarrel_DZ', 'DesertCamoNet_DZ', 'StickFence_DZ', 'LightPole_DZ', 'DeerStand_DZ', 'ForestLargeCamoNet_DZ', 'Plastic_Pole_EP1_DZ', 'Hedgehog_DZ', 'FuelPump_DZ', 'Fort_RazorWire', 'SandNest_DZ', 'ForestCamoNet_DZ', 'Fence_corrugated_DZ', 'CanvasHut_DZ', 'Generator_DZ')
            AND FindVehicleKeysCount(Object_DATA.CharacterID) = 0

 

???

Profit!

 

Удачи с сервером!

Edited by TheLinsus (see edit history)

Share this post


Link to post
Share on other sites



  • 0

Добрый день. создал SQL файл с запросом

 

BEGIN
# Открываем закрытые машины, неактивные более 7 дней
UPDATE Object_DATA
SET Object_DATA.CharacterID = 0
WHERE Object_DATA.CharacterID <> 0
AND Object_DATA.CharacterID <= 12500
AND Object_DATA.Classname NOT LIKE 'Tent%'
AND Object_DATA.Classname NOT LIKE '%Locked'
AND Object_DATA.Classname NOT LIKE 'Land%'
AND Object_DATA.Classname NOT LIKE 'Cinder%'
AND Object_DATA.Classname NOT LIKE 'Wood%'
AND Object_DATA.Classname NOT LIKE 'Metal%'
AND Object_DATA.Classname NOT LIKE '%Fuel%'
AND Object_DATA.Classname NOT LIKE '%Storage%'
AND Object_DATA.Classname NOT IN ('OutHouse_DZ', 'GunRack_DZ', 'WorkBench_DZ', 'Sandbag1_DZ', 'FireBarrel_DZ', 'DesertCamoNet_DZ', 'StickFence_DZ', 'LightPole_DZ', 'DeerStand_DZ', 'ForestLargeCamoNet_DZ', 'Plastic_Pole_EP1_DZ', 'Hedgehog_DZ', 'FuelPump_DZ', 'Fort_RazorWire', 'SandNest_DZ', 'ForestCamoNet_DZ', 'Fence_corrugated_DZ', 'CanvasHut_DZ', 'Generator_DZ','BagFenceRound_DZ')
and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 7 DAY);
#==================================================================================================================
# Наносим урон в 50% технике, неиспользуемой более 10 дней
UPDATE Object_DATA SET `Damage`=`Damage`+ 0.9
WHERE Object_DATA.CharacterID <> 0
AND Object_DATA.CharacterID <= 12500
AND Object_DATA.Classname NOT LIKE 'Tent%'
AND Object_DATA.Classname NOT LIKE '%Locked'
AND Object_DATA.Classname NOT LIKE 'Land%'
AND Object_DATA.Classname NOT LIKE 'Cinder%'
AND Object_DATA.Classname NOT LIKE 'Wood%'
AND Object_DATA.Classname NOT LIKE 'Metal%'
AND Object_DATA.Classname NOT LIKE '%Fuel%'
AND Object_DATA.Classname NOT LIKE '%Storage%'
AND Object_DATA.Classname NOT IN ('OutHouse_DZ', 'GunRack_DZ', 'WorkBench_DZ', 'Sandbag1_DZ', 'FireBarrel_DZ', 'DesertCamoNet_DZ', 'StickFence_DZ', 'LightPole_DZ', 'DeerStand_DZ', 'ForestLargeCamoNet_DZ', 'Plastic_Pole_EP1_DZ', 'Hedgehog_DZ', 'FuelPump_DZ', 'Fort_RazorWire', 'SandNest_DZ', 'ForestCamoNet_DZ', 'Fence_corrugated_DZ', 'CanvasHut_DZ', 'Generator_DZ','BagFenceRound_DZ')
and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 10 DAY);

#==================================================================================================================

# Удаляем взорванную или разбитую технику
DELETE FROM `object_data` WHERE `Damage` > 0.9; 

# Удаляем технику без ключей и с пустым инвентарем стоящую более 3 дней
DELETE FROM `object_data` WHERE `CharacterID` = 0 AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') OR (`Inventory` = '[[[],[]],[[],[]],[[],[]]]') ) AND Object_DATA.Classname NOT LIKE '%Fuel%' and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 3 DAY); 

# Удаляем велосипеды, нетронутые более 3 дней
DELETE FROM `object_data` WHERE (Classname = "MMT_Civ" or Classname = "Old_bike_TK_INS_EP1") AND DATE(LastUpdated) < CURDATE() - INTERVAL 3 DAY;

# Удаляем мёртвых персонажей из базы
DELETE FROM `character_data` WHERE Alive = 0; 

# Удаляем персонажей, незаходивших на сервер более 25 дней
DELETE FROM `character_data` WHERE `LastLogin` < DATE_SUB(NOW() , INTERVAL 25 DAY); 

# Очищаем историю заходов на сервер 
DELETE FROM `player_login` WHERE DATE(Datestamp) < CURDATE() - INTERVAL 10 DAY;

#Наносим дамаг любой технике и постройкам в 10% раз в 2 дня
UPDATE `Object_DATA` SET `Damage`=0.1 WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 2 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') );

=====================================================================================================================
# Обновление статуса сейфов и локбоксов до состояния "открыто" (нетронутых болеее 15 дней)
UPDATE `object_data` SET `CharacterID` = 0 WHERE (Classname = "VaultStorageLocked" or Classname = "LockboxStorageLocked") and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 15 DAY); 
#Удаляем товар, лежащий более недели на аукционе
DELETE FROM `store` WHERE `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY); 
 

END

При попытке загрузить в navicat (execute SQL file) выдает ошибки 

[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE Object_DATA
SET Object_DATA.CharacterID = 0
WHERE Object_DATA.Character' at line 3
[Err] BEGIN

и запросы не загружаются. Кто может помочь?

 

Попробуй каждый отдельно запихнуть как Ивент.

Создаёшь например ивент с таким кодом:

UPDATE Object_DATA
SET Object_DATA.CharacterID = 0
WHERE Object_DATA.CharacterID <> 0
AND Object_DATA.CharacterID <= 12500
AND Object_DATA.Classname NOT LIKE 'Tent%'
AND Object_DATA.Classname NOT LIKE '%Locked'
AND Object_DATA.Classname NOT LIKE 'Land%'
AND Object_DATA.Classname NOT LIKE 'Cinder%'
AND Object_DATA.Classname NOT LIKE 'Wood%'
AND Object_DATA.Classname NOT LIKE 'Metal%'
AND Object_DATA.Classname NOT LIKE '%Fuel%'
AND Object_DATA.Classname NOT LIKE '%Storage%'
AND Object_DATA.Classname NOT IN ('OutHouse_DZ', 'GunRack_DZ', 'WorkBench_DZ', 'Sandbag1_DZ', 'FireBarrel_DZ', 'DesertCamoNet_DZ', 'StickFence_DZ', 'LightPole_DZ', 'DeerStand_DZ', 'ForestLargeCamoNet_DZ', 'Plastic_Pole_EP1_DZ', 'Hedgehog_DZ', 'FuelPump_DZ', 'Fort_RazorWire', 'SandNest_DZ', 'ForestCamoNet_DZ', 'Fence_corrugated_DZ', 'CanvasHut_DZ', 'Generator_DZ','BagFenceRound_DZ')
and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 7 DAY);

Потом следующий и так далее по одному.

Share this post


Link to post
Share on other sites
  • 0

кто знает как сделать, чтобы машины от которых был утерян ключ ,открывались после рестарта? пробовал разные варианты. не помогают

Share this post


Link to post
Share on other sites
  • 0

Попробуй каждый отдельно запихнуть как Ивент.

Создаёшь например ивент с таким кодом:

UPDATE Object_DATA
SET Object_DATA.CharacterID = 0
WHERE Object_DATA.CharacterID <> 0
AND Object_DATA.CharacterID <= 12500
AND Object_DATA.Classname NOT LIKE 'Tent%'
AND Object_DATA.Classname NOT LIKE '%Locked'
AND Object_DATA.Classname NOT LIKE 'Land%'
AND Object_DATA.Classname NOT LIKE 'Cinder%'
AND Object_DATA.Classname NOT LIKE 'Wood%'
AND Object_DATA.Classname NOT LIKE 'Metal%'
AND Object_DATA.Classname NOT LIKE '%Fuel%'
AND Object_DATA.Classname NOT LIKE '%Storage%'
AND Object_DATA.Classname NOT IN ('OutHouse_DZ', 'GunRack_DZ', 'WorkBench_DZ', 'Sandbag1_DZ', 'FireBarrel_DZ', 'DesertCamoNet_DZ', 'StickFence_DZ', 'LightPole_DZ', 'DeerStand_DZ', 'ForestLargeCamoNet_DZ', 'Plastic_Pole_EP1_DZ', 'Hedgehog_DZ', 'FuelPump_DZ', 'Fort_RazorWire', 'SandNest_DZ', 'ForestCamoNet_DZ', 'Fence_corrugated_DZ', 'CanvasHut_DZ', 'Generator_DZ','BagFenceRound_DZ')
and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 7 DAY);

Потом следующий и так далее по одному.

у меня эвент не запускается. сервак на платном хосте. бд там же. в навикат пишет что эвент оff

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Vitalik
      Всем привет ребят,подскажите как сделать запрос в базу данных на удаление палаток которые не используются или с пустым инвентарем и ещё есть такой вопрос,может кто подскажет, слыхал есть такое что после рестарта открывается техника от которой утерян ключ подскажите кто знает как это делается. 
    • By dok379
      Можно ли поставить БД на exile через XAMPP(MySQL)? Не взаимодействия с Navicat Premium 10.1.6 и MySQL 5.5.
       
      Если да, то где вот этот пункт нужно делать исходя из инструкции по установке exile сервера
       
      2.1) - идем в папку "mysql" (мой путь C:\Program Files\MySQL\MySQL Server 5.5) и ищем там файл "my.ini"
       
      ищем параметр :
      sql-mode="STRICT_TRANS_TABLE,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
       
      меняем на этот:
      sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
       
      или удалить, что бы было так:
      sql_mode=""
    • By MeinCain
      Доброго времени суток!
       
      Что-то я зачастил с созданием тем, но... В общем, какая-то херь происходит с коннектом к БД. Помогите, пожалуйста, разобраться, что за ерунда!
       
      В общем, сейчас был рестарт и когда зашел на сервер, то ни одной базы не было, ни одной единицы техники. Перезапустил сервер и все стало гут.
       
      То я писал про краш сервера, то про обнуление хумки и мне кажется, что все это как-то связано, так как не смотря на то, что объекты все восстановились сейчас после перезапуска сервера, деньги из некоторых (а может и изо всех) сейфов пропали. Вот лог, который выдал мне RPT:
       
       
      Лог HiveExt (частично вырезал, оставив важное):
       
       
      На всякий случай сам Hive:
       
       
      И конфиг mysql:
       
       
    • By MeinCain
      Доброго времени суток!
       
      Что-то последнее время я зачастил с созданием тем, но вот вопросы подкопились просто.
       
      Подскажите, пожалуйста, можно ли как-то из бд вытащить базы игроков? Например, сделал на сервере вайп, но есть желание сохранить именно базы игроков (обычные, не редакторные). Можно ли как-то такое осуществить? Никто не заморачивался случайно?))
       
      Заранее благодарен за возможную помощь
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.