Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной

Рекомендованные сообщения

и этот sqf Надо постоянно загружать или 1 раз достаточно и все?

это не sqf а sql запрос в БД. После его выполнения в БД появятся соотв. процедуры и функция, которые описаны в первом посте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах





 

это не sqf а sql запрос в БД. После его выполнения в БД появятся соотв. процедуры и функция, которые описаны в первом посте.

ну я опечатался , имел ввиду sql. хотел просто узнать 1 раз досточно добавить или каждый день

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну я опечатался , имел ввиду sql. хотел просто узнать 1 раз досточно добавить или каждый день

Один раз! Ты первый пост вообще читал?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

что - то ошибочки выдает

 

 

 

 

[Err] 1304 - PROCEDURE pMain already exists
[Err] -- ---
-- pMain
-- ---

CREATE DEFINER=`dayz_epoch`@`localhost` PROCEDURE `pMain`()
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN
#Unlock Non Key Vehicles
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;

#startsCleanup
CALL pCleanup();
END
;
[Err] 1304 - FUNCTION FindVehicleKeysCount already exists
[Err] -- ---
-- FindVehicleKeysCount
-- ---

CREATE DEFINER=`dayz_epoch`@`localhost` FUNCTION `FindVehicleKeysCount`(`KeyId` INT)
RETURNS int(11)
LANGUAGE SQL
DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
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
;


-- ---
-- pCleanup
-- ---

CREATE DEFINER=`dayz_epoch`@`localhost` PROCEDURE `pCleanup`()
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN


DELETE FROM object_data WHERE Damage > 0.9;


DELETE FROM character_data WHERE Alive = 0;


DELETE FROM character_data WHERE LastLogin < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 30 DAY);


DELETE FROM object_data WHERE (Classname = "MMT_Civ" or Classname = "Old_bike_TK_INS_EP1") AND DATE(LastUpdated) < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 1 DAY);


DELETE FROM player_login WHERE DATE(Datestamp) < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY);


DELETE FROM `Object_DATA` WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 14 DAY) AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') OR (`Inventory` = '[[[],[]],[[],[]],[[],[]]]') );


DELETE FROM `Object_DATA` WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 DAY) AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 42 DAY);


UPDATE `Object_DATA` SET `Damage`=0.1 WHERE `ObjectUID` <> 0 AND `CharacterID` <> 0 AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') );

END
;
DELIMITER ;
[Msg] Finished - Unsuccessfully
--------------------------------------------------
 

 

 

 

Изменено пользователем davidx (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

У вас Pmain и FindVehicleKeysCount уже используются. Ошибок нету.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сделал батник:

 

@echo off
title Restarter
:start
color 0a
echo ------------------------------------------------------------------------
echo.
echo Starting spawn vehicles...
timeout /t 3 >NUL
cd "C:\xampp\mysql\bin"
mysql.exe --user=xxx --password=xxx --host=localhost --port=3306 --database=xxx --execute="call pMain"
echo.

 

 

выдаёт "Warning: Using a password on the command line interface can be insecure."

Так и должно быть или необходимо как-то скрыть пароль? Насколько я знаю, можно подставить файл конфига, где будет этот пароль (типа этого что-то: mysql --defaults-extra-file=/path/to/config.cnf), но для меня это слишком сложно :facepalm:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

выдаёт "Warning: Using a password on the command line interface can be insecure."

 

 

Это просто предупреждение. В нем говорится что Использование пароля в интерфейсе командной строки может быть небезопасно.

Изменено пользователем stspartak (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это просто предупреждение. В нем говорится что Использование пароля в интерфейсе командной строки может быть небезопасно.

Я понял, что в нём говорится. Главное, что бы выполнялось. Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

вроде все настроил , все работает. Спасибо авторам

Изменено пользователем davidx (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Сколько не пробовал не как не получалось их залить подсткажите что не так не появляются процедуры.

 

[Err] 144 - Table '.\mysql\proc' is marked as crashed and last (automatic?) repair failed
[Err] -- ---
-- Создаем процедуру pMain
-- ---

CREATE DEFINER=`root`@`localhost` PROCEDURE `pMain`()
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN
#Unlock Non Key Vehicles
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;

#startsCleanup
CALL pCleanup();
END
;
[Err] 144 - Table '.\mysql\proc' is marked as crashed and last (automatic?) repair failed
[Err] -- ---
-- Создаем функцию FindVehicleKeysCount
-- ---

CREATE DEFINER=`root`@`localhost` FUNCTION `FindVehicleKeysCount`(`KeyId` INT)
RETURNS int(11)
LANGUAGE SQL
DETERMINISTIC
READS SQL DATA
SQL SECURITY DEFINER
COMMENT ''
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
;
[Err] 144 - Table '.\mysql\proc' is marked as crashed and last (automatic?) repair failed
[Err] -- ---
-- Создаем процедуру pCleanup
-- ---

CREATE DEFINER=`root`@`localhost` PROCEDURE `pCleanup`()
LANGUAGE SQL
NOT DETERMINISTIC
MODIFIES SQL DATA
SQL SECURITY DEFINER
COMMENT ''
BEGIN

#Обновляем торговцев
UPDATE traders_data SET qty = 50 WHERE qty < 10;

#Удаляем взорванную или разбитую технику включая постройки (раздамаженую больше 80%)
DELETE FROM object_data WHERE Damage > 0.8;

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

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

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

#Очищаем историю заходов на сервер
DELETE FROM player_login WHERE DATE(Datestamp) < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY);

#Удаляем заброшенные объекты хранения и технику с пустым инвентарем нетронутые 14 дней
DELETE FROM `Object_DATA` WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 14 DAY) AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 DAY) AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') OR (`Inventory` = '[[[],[]],[[],[]],[[],[]]]') );

#Удаляем заброшеные постройки и технику нетронутые 24 дня
DELETE FROM `Object_DATA` WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 24 DAY) AND `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 42 DAY);

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

END
;
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 1
[Err] DELIMITER ;
[Msg] Finished - Unsuccessfully
--------------------------------------------------

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так у тебя же все написано

[Err] 144 - Table '.\mysql\proc' is marked as crashed and last (automatic?) repair failed

Походу ты удалил таблицы самого мускула. Переставляй Mysql.

Ну а в конце у тебя синтаксическая ошибка.

Перед тем как копировать.вставить надо хотя бы смотреть что ты копируешь...

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нихрина в вашем гайде не понятно, можно поподробнее написать, а еще лучше видео гайд сделать? 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нихрина в вашем гайде не понятно, можно поподробнее написать, а еще лучше видео гайд сделать? 

Как будет время - запилю видос

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Нихрина в вашем гайде не понятно, можно поподробнее написать, а еще лучше видео гайд сделать? 

Что именно не понятно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

мне нужно создать процедуру которая бы чистила трупы в базе данных. Я захожу в БД далее в "PhpMyAdmin" а дальше не понимаю что делать (БД в этой вкладке моей нет она выше "dayz".

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Для этого достаточно одной процедуры с одним лишь запросом


Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

 

Имя процедуры......................................pCleanup


Тип.........................................................PROCEDURE


Параметры (Направление, Имя, Тип, Длина/значения, Параметры) - Удаляем строчку нажатием на красный крестик справа!


В поле "Определение" вставляем код:

 

DELETE FROM character_data WHERE Alive = 0;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Для этого достаточно одной процедуры с одним лишь запросом

 

attachicon.gifBD.jpg

 

Имя процедуры......................................pCleanup

Тип.........................................................PROCEDURE

Параметры (Направление, Имя, Тип, Длина/значения, Параметры) - Удаляем строчку нажатием на красный крестик справа!

В поле "Определение" вставляем код:

 

DELETE FROM character_data WHERE Alive = 0;

я кажется понял, только как это в навикате сделать?

Изменено пользователем nikolya200 (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

я кажется понял, только как это в навикате сделать?

Ну так то гайд написан под phpMyAdmin

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ну так то гайд написан под phpMyAdmin

в шапке для навикат тоже всё описано

1. Подключаемся к нашей БД => в верхнем меню кнопка "Functions" =>  "New function"

2. В появившемся окне ставим галку Type - Procedure и жмем "Finish"

3. Вкладка Definition:

В поле для SQL запроса всё стираем и вставляем код

DELETE FROM character_data WHERE Alive = 0;

 

Parameter..............................................оставляем пустым

Return Type............................................неактивно (оставляем пустым)

Type......................................................PROCEDURE

   Вкладка Advanced:

Security.................................................DEFINER

Definer...................................................пользователь БД@localhost

Data Access..........................................MODIFIES SQL DATA

Deterministic..........................................галка снята

   Вкладка Comment - оставляем пустой

Изменено пользователем Karakurd (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

в шапке для навикат тоже всё описано

1. Подключаемся к нашей БД => в верхнем меню кнопка "Functions" =>  "New function"

2. В появившемся окне ставим галку Type - Procedure и жмем "Finish"

3. Вкладка Definition:

В поле для SQL запроса всё стираем и вставляем код

DELETE FROM character_data WHERE Alive = 0;

 

Parameter..............................................оставляем пустым

Return Type............................................неактивно (оставляем пустым)

Type......................................................PROCEDURE

   Вкладка Advanced:

Security.................................................DEFINER

Definer...................................................пользователь БД@localhost

Data Access..........................................MODIFIES SQL DATA

Deterministic..........................................галка снята

   Вкладка Comment - оставляем пустой

Спасибо большое все получилось!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скажите мне тупому одно. К чему это, если серверные файлы епохи уже имеют готовые sql-ки с этими процедурами и эвентами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Скажите мне тупому одно. К чему это, если серверные файлы епохи уже имеют готовые sql-ки с этими процедурами и эвентами?

1. Править надо их все равно под свои нужны.

2. Даже готовую SQL 80% пользователей не могут залить из-за ошибок или не знания куда пихать, вот и пользуются этой темой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

:good:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

К чему это, если серверные файлы епохи уже имеют готовые sql-ки с этими процедурами и эвентами?

 

 

 

BEGIN
##########################################################################################################################################
# Adding column for procedure cleanup
ALTER TABLE `Character_DATA` ADD COLUMN `LastUpdated` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP AFTER `Infected`;
ALTER TABLE `Character_DATA` CHANGE COLUMN `lastupdated` `LastUpdated` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP AFTER `Infected`;
ALTER TABLE `Object_DATA` ADD COLUMN `LastUpdated` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP AFTER `Damage`;
ALTER TABLE `Object_DATA` CHANGE COLUMN `lastupdated` `LastUpdated` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP AFTER `Damage`;
##########################################################################################################################################
#==================================================================================================================
#==================================================================================================================
#===== Работа с техникой должна идти именно в таком порядке! ======================================================
# Открываем закрытые машины, неактивные более 14 дней
UPDATE `Object_DATA` SET `CharacterID` = 0
WHERE `Classname` NOT REGEXP 'barrier|storage|shed|bench|wall|floor|fence|pump|wood|hrescue|stick|pole|generator|panel|house|rack|bag|stand|barrel|canvas|wire|hedgehog|net|trap|ramp|fort|sand|scaffold|nest|Tank|Tent|Locked|Cinder|Bench|LightPole|ASC_EU_LHVSidl3|ASC_EU_LHSSidl2|ASC_EU_BulbO'
AND `LastUpdated` < DATE_SUB(NOW() , INTERVAL 14 DAY);
#==================================================================================================================
# Удаляем технику без ключей и с пустым инвентарем стоящую более 7 дней
DELETE FROM `object_data`
WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY)
AND `CharacterID` = '0'
AND ( (`Inventory` IS NULL) OR (`Inventory` = '[]') OR (`Inventory` = '[[[],[]],[[],[]],[[],[]]]') )
AND `Classname` NOT REGEXP 'barrier|storage|shed|bench|wall|floor|fence|pump|wood|hrescue|stick|pole|generator|panel|house|rack|bag|stand|barrel|canvas|wire|hedgehog|net|trap|ramp|fort|sand|scaffold|nest|Tank|Tent|Locked|Cinder|Bench|LightPole|ASC_EU_LHVSidl3|ASC_EU_LHSSidl2|ASC_EU_BulbO';
#==================================================================================================================
# Наносим урон в 50% технике, неиспользуемой более 14 дней
UPDATE `Object_DATA`  SET `Damage`=`Damage`+ 0.5
WHERE `Classname` NOT REGEXP 'barrier|storage|shed|bench|wall|floor|fence|pump|wood|hrescue|stick|pole|generator|panel|house|rack|bag|stand|barrel|canvas|wire|hedgehog|net|trap|ramp|fort|sand|scaffold|nest|Tank|Tent|Locked|Cinder|Bench|LightPole|ASC_EU_LHVSidl3|ASC_EU_LHSSidl2|ASC_EU_BulbO'
AND `LastUpdated` < DATE_SUB(NOW() , INTERVAL 14 DAY);
#===== Работа с техникой должна идти именно в таком порядке! ======================================================
#==================================================================================================================
#==================================================================================================================
#==================================================================================================================
#==================================================================================================================
#===== Работа с сейфами и локбоксами должна идти именно в таком порядке! ==========================================
# Удаление открытых сейфов и локбоксов, нетронутых более 20 дней
DELETE FROM `object_data` WHERE (Classname = "VaultStorageLocked" or Classname = "LockboxStorageLocked") and `CharacterID` = 0 and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 21 DAY); 

# Обновление статуса сейфов до состояния "открыто" (нетронутых болеее 30 дней)
UPDATE `object_data` SET `CharacterID` = 0 
WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 31 DAY) 
AND `CharacterID` > 0 AND `Classname` = "VaultStorageLocked";
 
# Обновление статуса локбоксов до состояния "открыто" "RED 00" (нетронутых болеее 30 дней)
UPDATE `object_data` SET `CharacterID` = 10000 
WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 31 DAY) 
AND `CharacterID` > 0 AND `Classname` = "LockboxStorageLocked";
#===== Работа с сейфами и локбоксами должна идти именно в таком порядке! ==========================================
#==================================================================================================================
#==================================================================================================================
# Наносим урон строениям каждые 3 дня в 0.08 (на 30 дней)
UPDATE `Object_DATA` SET `Damage`=`Damage`+ 0.08
WHERE `LastUpdated` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 3 DAY)
AND `Classname` REGEXP 'barrier|storage|shed|bench|wall|floor|fence|pump|wood|hrescue|stick|pole|generator|panel|house|rack|bag|stand|barrel|canvas|wire|hedgehog|net|trap|ramp|fort|sand|scaffold|nest|Tank|Tent|Locked|Cinder|Bench|LightPole|ASC_EU_LHVSidl3|ASC_EU_LHSSidl2|ASC_EU_BulbO';
# Удаляем товар, лежащий более 30 дней на барахолке
DELETE FROM `store` WHERE `Datestamp` < DATE_SUB(CURRENT_TIMESTAMP, INTERVAL 30 DAY);
# Обновление предметов у торговцев до 100
UPDATE `Traders_DATA` SET qty=100 WHERE qty<30;
# Удаляем взорванную или разбитую технику (и неоплаченные базы)
DELETE FROM `object_data` WHERE `Damage` > 0.9;  
# Удаляем велосипеды, нетронутые более 3 дней
DELETE FROM `object_data` WHERE (Classname = "MMT_Civ" or Classname = "Old_bike_TK_INS_EP1") AND `LastUpdated` < DATE_SUB(NOW() , INTERVAL 3 DAY); 
# Удаляем персонажей, незаходивших на сервер более 30 дней
DELETE FROM `character_data` WHERE `LastLogin` < DATE_SUB(NOW() , INTERVAL 30 DAY);  
# Удаляем мёртвых персонажей из базы после 7 дней
DELETE FROM `character_data` WHERE Alive = 0 and `LastUpdated` < DATE_SUB(NOW() , INTERVAL 7 DAY);  
# Очищаем историю заходов на сервер после 10 дней 
DELETE FROM `player_login` WHERE DATE(Datestamp) < CURDATE() - INTERVAL 10 DAY;
#==================================================================================================================
#==================================================================================================================
END

 

 

Сравним качество очистки базы родным файлом и тем,  что я привел? 

За поправки\дополнения даже спасибо нажму.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Внесу поправку player_login можно стирать раз в рестарте куда удобней и чище БД.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: 123new
      Вижу крайне много любопытных вопросов по поводу идентификаторов игрока в игре. Что же, разжую для не знающих немного.
       
      В игре есть следующие типы идентификаторов:
      1. Steam64ID идентификатор профиля игрока (на пиратках его UID называют), примерно такой: 765475....65 (17 цифр).
      2. Так называемый мною, BIS ID - uid из окна (консоли) сервера игры и ADM-файлов логов сервера, который пишется самой игрой
      3. Battleye GUID игрока.
       
      Первый идентификатор (Steam64ID) на ПК является прямым идентификатором стим-профиля игрока, уникальным у каждого игрока. Т.е. публичным идентификатором вашего профиля для большинства стим-игр (например, Counter-Strike).
      Второй идентификатор (BIS ID) является определенной хеш-суммой, полученной из Steam64ID посредством конвертации сначала в sha256, а затем в base64. Спасибо за это разъяснение и пример кода-конвертации авторам игры на своем официальном форуме.
      Третий идентификатор (Battleye GUID) является публичным идентификатором Battleye античита, получаемый также из Steam64ID поcредством получения его хеш-суммы MD5. Этот же идентификатор есть в логах сервера от Battleye, в любых RCON-приложениях (DART, BEC и т.п.), также его можно конвертировать самим.
       
      Так вот, как же получить Steam64ID:
      1. Зайти на любой ресурс, предназначенный для сбора таких данных. например на: https://steamid.io/
      2. Ввести ссылку на ваш стим-профиль
      3. Получить результат из кучи данных, одно поле из которых и будет содержать ваш Steam64ID
       
      Как получить BIS ID:
      1. Открыть любой Phyton v2.7 -конвертер в интернете, например: https://onecompiler.com/python2/3ycz55xew
      2. Ввести в него следующий код:
      # Hello World program in Python from hashlib import sha256 from base64 import b64encode def construct_bi_uid(steam_id): hashed = sha256() hashed.update(str(steam_id)) return b64encode(hashed.digest()) print construct_bi_uid(76514925976798981) 3. заменить 76514925976798981 на ваш Steam64ID
      4. Отправить код в исполнение, нажав Execute.
      5. Получить результат
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      [Альтернатива] Метод на основе PHP:
      <?php /** * This is how you get user id (bohemia id) like you see in .ADM files from steam id. */ $steam_id = "76514925976798981"; $user_id = base64url_encode(hash('sha256', $steam_id, true)); function base64url_encode($data) { $b64 = base64_encode($data); if ($b64 === false) { return false; } $url = strtr($b64, '+/', '-_'); return $url; } echo $user_id; [Альтернатива] Метод для javascript - node.js:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result);  
      Как получить Battleye GUID:
      1. Открыть любой ресурс с готовой формой конвертирования, например:
      https://armstalker.com/guid/
      https://dayzrussia.com/f/index.php?pages/dayzguid/
      либо написать свою, на основе данных, предложенных на странице Github
      https://gist.github.com/chris579/53053b6d6438df9a9718c23c0d6bbd69
      Оставлю ниже код для Phyton:
      # Thanks to gunlinux import md5 steamid=76514925976798981 temp = "" for i in range(8): temp += chr((steamid & 0xFF)) steamid >>= 8 m = md5.new("BE"+temp) print m.hexdigest() Код для PHP:
      var crypto = require('crypto'); var body = "76514925976798981"; var hash = crypto.createHash("sha256"); var hash_result = hash.update(body, 'utf8').digest('base64'); console.log(hash_result); '2. Вставить в поле ввода UID(Steam64ID) ваш Steam64ID
      3. Нажать кнопку конвертирования или исполнить код, и получить в готовом виде Battleye GUID
       
      Возможно имеются и другие методы и наработки в получении данных идентификаторов более простыми методами, на других языках, либо автоматически. Я описал лишь известные мне.
      Все желающие могут добавить в комментариях свои способы конвертаций, возможно это поможет кому-либо.
    • Автор: vitacite
      Бесплатные проекты - "пацаны собрались и замутили сервачок" долго не живут.  В этом я убеждался много раз. Нет сначала на интузиазме эффективность неплохая, но затем все это затухает управляемость команды падает.  Начинаются вопросы - "а почему это должен делать я?",  отмазки "да я на даче сегодня", "да у меня командировка" и тд...  + кто-то должен спонсировать оплату сервера, антидудосов и прочей лобуды, а такого человека интерес тоже может пропасть в любой момент. А чтобы проект был хороший - кому-то надо реально "въебывать", как на второй работе, и  кому-то постоянно вливать туда бабло.
      Поэтому, лично я, считаю любой некоммерческий проект заранее проваленным!  Побегать недельку другую с друзьями это да. Что-то более серьезное, не тратьте свои силы и время! Как минимум на  тему сталкера я таких проектов видел 10 штук и в некоторых даже сам поучаствовал. Начиналось все амбициозно и даже набирало онлайн до 100 человек. Но заканчивалось все одинаково 3-4 месяца и с десято скучающих тел, на безлюдном сервере.  С точки зрения администации, игроки ведут себя как проститутки, бегая с сервера на сервер, друзья перешли, или потому что на том добавили новый прикольный скрип, или прикольную тачку, или тут плохой пинг, а там хороший, или админ козел забанил за читы и тд.  а все эти приколюхи требуют денег, а игровое сообщество не очень расположено их платить за некачественный контент. Да и сама администрация достаточно быстро забивает и расслабляется.
      (я сейчас не говорю о конкретном проекте, скорее это собирательный образ халявы).
       
      А теперь по-существу.  Так сколько должен стоить контент с хотя бы приемлемым качеством?  

      Свое мнение я написал ниже.
       
       
      Спасибо за внимание.
       
      А что думаете Вы напишите ниже в комментариях!
       
       
    • Автор: DrTauren
      Как всем известно, сегодня, 19 сентября разработчики DayZ Standalone официально опубликовали документацию серверов Dayz, а также предоставили возможность скачать файлы для запуска сервера DayZ. Ниже прилагается перевод официальной документации этих самых файлов с форума DayZ, а также документация касательно других файлов, которых нет в официальной документации. Пользуйтесь на здоровье 
       
      Скачать серверные файлы через Steam: steam://rungameid/223350
      На данный момент присутствует ошибка с невозможностью скачать файлы сервера, если на вашем аккаунте Steam отсутствует купленная DayZ.
       
      P.S. Если у вас есть чем заполнить эту статью, обязательно пишите мне в лс 
    • Автор: Serdce
      Ссылка на первоисточник - https://github.com/BrettNordin/Exile
      Я всего лишь перевёл
      Собственно переходим по ссылке, и скачиваем архив.
      Для тех, кто не знает как качать с хаба скрин 
      И так, едем дальше
      Скачанный архив распаковываем в удобное место для работы,
      Идём в ваш @ExileServer, там нас интересуют файлы - extDB2.dll , extDB2.so , extDB2-conf.ini , XM8.dll , XM8.so Удаляем эти файлы
      Далее идём в @ExileServer которую мы скачали, всё её содержимое копируем в аналогичную папку на сервере.
      Теперь идём в вашу MPmissions и там распаковываем вашу миссию "Exile.название карты",
      Туда мы копируем содержимое папки Exile.MapName из архива,
      Далее открываем ваш config.cpp и ищем там class CfgExileCustomCode 
      В него мы добавляем - #include "CfgExileCustomCode.cpp"
      Должно получится так
      Запаковываем обратно)
      Ну и теперь из архива мы копируем tbbmalloc.dll, tbbmalloc_x64.dll в папку расположения вашего Arma3_server.exe
      Не забываем поменять в вашем файле запуска сервера с arma3server.exe на arma3server_x64.exe 
      Ну и финишная прямая, открываем вашу базу данных ( желательно с название exile ) и добавляем файл Exile_Database_Update_64x.sql
      Далее настройте под себя ваш extdb3-conf.ini
       
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.