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

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

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

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

    Там вы можете продать или купить
    Всё что касается игровых серверов
extremist

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

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

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

 

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

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]]

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

Изменено пользователем Xotabl4
Перед тем как нажать ОЛ исправлено на ОК (история изменений)

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


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


Вопрос -

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

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

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

 

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

Как в УО))

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

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


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

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

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

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

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

 

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

 

Так что...

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


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

Вопрос -

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

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

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

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

 

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

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

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


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

А почему нет.

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

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

 

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

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

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


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

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

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

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


я не понял

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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


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

 

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

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

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

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

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


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

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

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


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

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

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

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

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

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

 

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

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

Или???

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


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

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

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

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


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

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

 

 

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];

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


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

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

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

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

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

 

 

 

 

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

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

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

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


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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

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

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

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

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