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
extremist

[РЕЛИЗ] Пользовательская точка спауна через базу данных

Recommended Posts

Хочу предложить Вашему вниманию возможность спауниться определённому игроку в определённом месте на карте.

 

Область применения:

1. Админский спаун на админской базе

2. Донатерский спаун на донатерской базе

3. Наказание для игроков

 

по п.1,2 пояснений давать нет смысла, а вот п.3 объясню.

На своём сервере я построил тюрьму, в которую игроки помещаются за нарушение правил сервера. Задав UID  и координаты местоположения в тюрьме игрок будет всегда спауниться после смерти в тюрьме. При этом свою тюрьму я сделал неприступным островом, сбежать из которой можно лишь при помощи другого игрока на вертолёте )))) После отправок игроков на нары желание нарушать установленные правила резко сокращается - проверено.

 

Теперь инструкция о том как создать кастомную точку спауна:

 

Установка:

------------------------------------------------------------------​


1. Зайдите в  PHPmyAdmin.​


2. Кликните по названию своей базы данных ( обычно dayz_epoch)


3. Кликните на вкладку  SQL (наверху).


4. Теперь в окне SQL вставьте следующий код:​

CREATE TABLE `cust_spawn` (
`PlayerUID` INT(10) NULL DEFAULT NULL,
`worldspace` VARCHAR(50) NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

Нажмите OK.​


Этот код создаст новую таблицу с названием "cust_spawn"  в вашей базе данных.​


5. Кликните "clear/очистить"  на странице ввода  SQL кода.​


6. Вставьте следующий код в окно SQL :​


CREATE TRIGGER `custom_spawn`
  BEFORE INSERT ON `character_data`
  FOR EACH ROW
BEGIN
DECLARE x INT;
DECLARE y varchar(50);
SET x = (SELECT `PlayerUID` FROM `cust_spawn` WHERE `PlayerUID`=NEW.PlayerUID);
SET y = (SELECT `worldspace` FROM `cust_spawn` WHERE `PlayerUID`=NEW.PlayerUID);
IF NEW.PlayerUID = x THEN
SET NEW.worldspace=y;
END IF;
END;$$

 

Перед тем как нажать ОК в окошке разделитель(delimiter) вставьте без кавычек " $$ " и лишь затем нажмите ОК.​

Теперь у Вас есть таблица для кастомного спауна с тригером, который будет спаунить игрока из таблицы​ "cust_spawn" по указанным в ней координатам каждый раз когда игрок будет умирать.
Для того чтобы задать игроку точку спауна достаточно указать UID игрока и координаты в таблице "cust_spawn".

 

Пример координат для спауна игрока:​


[268,[8627.69,12631.1,0.002]]

ВНИМАНИЕ!!! Перед тем как осуществлять какие либо манипуляции со своей базой данных создайте резервную копию!!!!

Edited by Xotabl4
Перед тем как нажать ОЛ исправлено на ОК (see edit history)

Share this post


Link to post
Share on other sites





Вопрос -

А почему через SQL?

Не проще - скриптом по UID задавать player setPOS, при логине?

И сажать можно прямо в игре, без релога...

 

Турьма это интересно)

Как в УО))

Надо еще добавить - вырубку леса) И пока не нарубит ххх леса не выпускать)

Share this post


Link to post
Share on other sites

Ну и даже если через SQL, то почему именно phpmyadmin. Есть и другой софт :)

Share this post


Link to post
Share on other sites

админ распостранен бесплатно, и стоит наряду с апачем у большинства.

Хостеры юзают в большинстве своем.

Входит в пакет денвера, который даже тугой поставит в 2 клика_)

Локализации на всех языках....

 

Ну, и плюс - веб интерфейс как бэ намекает))

 

Так что...

Share this post


Link to post
Share on other sites

Вопрос -

А почему через SQL?

Не проще - скриптом по UID задавать player setPOS, при логине?

И сажать можно прямо в игре, без релога...

Через базу данных потому что в таблицу проще вносить данные нежели постоянно распаковывать миссию или сервер, чтобы внести новые UIDы или координаты, при желании можно форму добавить к админке от Nightmare PrivateHiveTools  и вносить изменения станет элементарным.

 

Ну и даже если через SQL, то почему именно phpmyadmin. Есть и другой софт :)

Пример привел на phpadmin потому что привык в нём  подобные вещи совершать, кто может сделать самостоятельно в Navicat  делайте там. Главное-суть, а не исполнение.

Share this post


Link to post
Share on other sites

Интересно, можно ли подобным образом настроить точки спауна транспорта?

Share this post


Link to post
Share on other sites

А почему нет.

Как угодно можно сделать - триггер\php скрипт который будет добавлять технику после рестарта в указанную позицию.

Проверяй по запросу к бд, - есть ли в данной точке чтолибо, если нет добавляй запись в БД.

 

Только зачем это?

Тебе еще прийдется писать проверку для БД, чтобы посчитать кол-во техники с CharacterID=0 (безхозной), чтоб не спавнить ее постоянно. Иначе переполниш сервер.

Share this post


Link to post
Share on other sites

Делаю через Navicat
Открываю таблицу с базой данных сервера 1.0.4.2а (официалка с оф сайта)
открываю консоль
вбиваю 1-й код, энтер, пишет, что вроде как успешно.
Обновляю, таблица появилась.
Вбиваю 2-й код, энтер, пишет, что всё врое как ок.
Обновляю, таблица на месте.

Захожу в неё - пишет следующее со скриншота. Что делать?
Вопрос 2: фразу

Перед тем как нажать ОК в окошке разделитель(delimiter) вставьте без кавычек " $$ " и лишь затем нажмите ОК.​


я не понял

Скриншот:
wvdQi.png

Edited by super.55885 (see edit history)

Share this post


Link to post
Share on other sites

Пишет, что отсутствует уникальный индекс для ячейки таблицы.

Т.е. или ты руками пытаешься добавить запись с индексом который уже есть в БД, или делаешь тоже самое скриптом.

Данное поле должно заполнятся автоматически(sql сам сгенерит индекс для поля).

Share this post


Link to post
Share on other sites

Пишет, что отсутствует уникальный индекс для ячейки таблицы.

Т.е. или ты руками пытаешься добавить запись с индексом который уже есть в БД, или делаешь тоже самое скриптом.

Данное поле должно заполнятся автоматически(sql сам сгенерит индекс для поля).

на видео заснять как делаю? Может ошибку найдёшь. Строго по инструкции, только с навиката.

Edited by super.55885 (see edit history)

Share this post


Link to post
Share on other sites

NoNameUltima, просто проблема в том, что даже если я делаю это по теме этой через  phpmyadmin,  и открываю созданную таблицу потом в phpmyadmin, то в нём всё ок. А вот в навикате если открыть (тупо открыть, не создавать с него) ошибка та же выскакивает.

Edited by super.55885 (see edit history)

Share this post


Link to post
Share on other sites

NoNameUltima, просто проблема в том, что даже если я делаю это по теме этой через  phpmyadmin,  и открываю созданную таблицу потом в phpmyadmin, то в нём всё ок. А вот в навикате если открыть (тупо открыть, не создавать с него) ошибка та же выскакивает.

$$ с разделителем запроса разберись. В phpMyAdmin он вставляется чуть ниже самого запроса(поле delimiter).

Возможно из-за этого ошибка. В код особо не вдавался...

Share this post


Link to post
Share on other sites

 

NoNameUltima, просто проблема в том, что даже если я делаю это по теме этой через  phpmyadmin,  и открываю созданную таблицу потом в phpmyadmin, то в нём всё ок. А вот в навикате если открыть (тупо открыть, не создавать с него) ошибка та же выскакивает.

$$ с разделителем запроса разберись. В phpMyAdmin он вставляется чуть ниже самого запроса(поле delimiter).

Возможно из-за этого ошибка. В код особо не вдавался...

Вписывал это в phpMyAdmin, не помогло. Может вписываю как-то не правильно? Пишу там в графу после точки с запятой

Share this post


Link to post
Share on other sites

Вроде бы допёр с другом как убрать эту ошибку в навикате. Могу заснять на видео, если кому надо.
Спс за гайд, работает ;)
P.S. вопросик: таким же образом можно же и лут индивидуальный назначать, верно понял?

Share this post


Link to post
Share on other sites

Что за мода в инете пошла, писать слово лут, куда не попадя.

Слово лут, пошло с игры Ultima Online(первой онлайн ММО игры). И означало оно - шмот дохлого\убитого персонажа.

Отсюда и словоформы - полутать, лутануть... - убить и обнести.

Вещи остающиеся после смерти нпц, назывались всегда - дроп.

Остальное - спаун\спавн.

 

Включая телепатор - Ты наверное имеешь ввиду - стартовый инвентарь. Так и пиши тогда. - Это возможно, но нафиг не нужно, через БД. Есть обычный скрипт, на стартовый инвентарь, для отдельных групп игроков.

Или, ты хочешь - индивидуальный спаун предметов, для каждого персонажа сделать?

Или???

Share this post


Link to post
Share on other sites

NoNameUltima, да банальный стартовый лут отдельным игрокам. Нашёл скриптик с простенькими коммандами для mpmissions, работает. Вроде бы всё пробивается там кроме инвентаря в рюкзаке.

Edited by super.55885 (see edit history)

Share this post


Link to post
Share on other sites

А так - пробовал?

 

 

GearAdd = (vehicle player);
GearAdd addWeapon 'm16a4_acg';
GearAdd addMagazine '30Rnd_556x45_Stanag';
GearAdd addBackpack 'DZ_ALICE_Pack_EP1';
(Unitbackpack GearAdd) addMagazineCargoGlobal ['ItemBloodbag', 4];
(Unitbackpack GearAdd) addMagazineCargoGlobal ['ItemEpinephrine', 4];
(Unitbackpack GearAdd) addMagazineCargoGlobal ['ItemSodaPepsi', 4];

Share this post


Link to post
Share on other sites

Вроде бы допёр с другом как убрать эту ошибку в навикате. Могу заснять на видео, если кому надо.

Спс за гайд, работает ;)

P.S. вопросик: таким же образом можно же и лут индивидуальный назначать, верно понял?

ну ка ... можно просто рассказать как ошибку пройти.)

 

 

 

 

Всё,спасибо. не нужно. Разобрался.

Ставил через хейди

Edited by psychosis (see edit history)

Share this post


Link to post
Share on other sites

Не а, спс за наводку, попробую)

 

и как результат? работает?

Share this post


Link to post
Share on other sites

Подскажите пожалуйста.
Как добавить модель (для скина) и инвентарь?

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

Столбцы добавить могу, но я так понимаю, что им нужен еще триггер.

Как это сделать подскажите пожалуйста? 

Share this post


Link to post
Share on other sites

Ну можно еще добавить:  Navicat, HeidiSQL или phpmyadmin. МНе HeidiSQL понравился больше  :smile:

Сори за глупый вопрос, но как, кроме редактрора (СТРЛ+Е) можно определить коардинаты? В том числе и в здании (высота аля этаж)

Edited by kisho (see edit history)

Share this post


Link to post
Share on other sites

Ну можно еще добавить:  Navicat, HeidiSQL или phpmyadmin. МНе HeidiSQL понравился больше  :smile:

Сори за глупый вопрос, но как, кроме редактрора (СТРЛ+Е) можно определить коардинаты? В том числе и в здании (высота аля этаж)

По форуму смотри, я кидал скрипты.

Share this post


Link to post
Share on other sites

такс. назрела проблема. после перевода на стим. ИД у игроков значительно увеличился в значении.. если раньше к примеру было 6-10 цифр . сейчас от 16 .
Соответственно ид вставить не даёт ошибка . (прикрепить скрин не смог,оказывается можно прикреплять файлы размером аж 1кб....)
В общем ругается на длинну ид. увеличение допустимой длинны ничего не изменило 

Edited by psychosis (see edit history)

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

×
×
  • 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.