Перейти к содержимому


Фотография

Удаление ботов игрока


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 OFFLINE   acejas67

acejas67

    Рядовой

  • Пользователи
  • 4 сообщений

Отправлено 07 January 2023 - 17:01

Приветствую дорогие форумчане и скриптоделы и т.п
У меня появилась проблема, после того как сделал миссию для выделенного сервера, а именно, что при спавне игрока на свой слот - он(или его бот) автоматически умирают. После чего игрок возрождается и труп его старый и будущий будет спавнится на 00 координатах - тобишь труп слота не удаляется. Как пофиксить? 

 

Нашел на просторах интернета скрипт, но не знаю, поможет ли он и как правильно реализовать его? Сам по сути еще нулевой в этом деле, но пытаюсь понимтать. 
Заранее, спасибо 
 

if ( isServer ) then 
{
{if ( !(_x in units player) AND (side _x) == east ) then {deleteVehicle _x;};

if ( !(_x in units player) AND (side _x) == west ) then {
deleteVehicle _x;
};
 
} forEach allUnits;
 
};

  • 0

#2 OFFLINE   forummailandlogin

forummailandlogin

    Ефрейтор

  • Пользователи
  • 41 сообщений

Отправлено 07 January 2023 - 20:20

 

Приветствую дорогие форумчане и скриптоделы и т.п

 

  1. Форматировать текст не учили?
  2. Зачем вообще осуществлять проверку занимаемой стороны если действие для обеих сторон одно и тоже?

  • 0

#3 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 07 January 2023 - 22:03

при спавне игрока на свой слот - он(или его бот) автоматически умирают. После чего игрок возрождается и труп его старый и будущий будет спавнится на 00 координатах - тобишь труп слота не удаляется. Как пофиксить?

Если я правильно понял, ты говоришь про то, что когда игрок выходит из миссии, его юнит становится ботом. Чтобы этого не происходило, создай файл initServer.sqf, куда помести такой код:

addMissionEventHandler ["HandleDisconnect", { false }];

  • 0

#4 OFFLINE   acejas67

acejas67

    Рядовой

  • Пользователи
  • 4 сообщений

Отправлено 07 January 2023 - 23:00

 

 

Приветствую дорогие форумчане и скриптоделы и т.п

 

  1. Форматировать текст не учили?
  2. Зачем вообще осуществлять проверку занимаемой стороны если действие для обеих сторон одно и тоже?

 

Проще разговаривать сначала нужно, я считаю.
Я написал, что код нашел и узнаю, как реализовать его - если он есть решение.


 

при спавне игрока на свой слот - он(или его бот) автоматически умирают. После чего игрок возрождается и труп его старый и будущий будет спавнится на 00 координатах - тобишь труп слота не удаляется. Как пофиксить?

Если я правильно понял, ты говоришь про то, что когда игрок выходит из миссии, его юнит становится ботом. Чтобы этого не происходило, создай файл initServer.sqf, куда помести такой код:

addMissionEventHandler ["HandleDisconnect", { false }];

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


Сообщение отредактировал acejas67: 07 January 2023 - 23:02

  • 0

#5 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 07 January 2023 - 23:12

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

А это не какой-то код делает?
Попробуй установить этот параметр: 

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


Сообщение отредактировал Schatten: 07 January 2023 - 23:12

  • 0

#6 OFFLINE   acejas67

acejas67

    Рядовой

  • Пользователи
  • 4 сообщений

Отправлено 30 January 2023 - 03:47

 

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

А это не какой-то код делает?
Попробуй установить этот параметр: 

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

Cпасибо, решил проблему)

Еще вопрос, если ты работал с БД конечно....

 

Представим:

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

 

Примерно так:

Таблица BD:
p_boxname | p_invbox
---------------------
"Какой-то ящик"  | "какой то инвентарь в нем"

Запросы  в BD:

[newBox] // если поставили какой-то ящик
SQL1_1 = INSERT INTO
SQL1_2 =     boxs (p_boxname, p_invbox)
SQL1_3 = VALUES
SQL1_4 =     (?,?)

SQL1_INPUTS = 1,2

[loadBox] //загрузка ящика
Return InsertID = false
Prepared Statement = true

SQL1_1 = SELECT
SQL1_2 =     p_invbox
SQL1_3 = FROM
SQL1_4 =     boxs
SQL1_5 = WHERE
SQL1_6 =     p_boxname = ?
SQL1_7 = LIMIT 1

SQL1_INPUTS = 1

[saveBox] //сохранения ящика
Return InsertID = false
Prepared Statement = true

SQL1_1 = UPDATE
SQL1_2 =     boxs
SQL1_3 = SET
SQL1_4 =     p_invbox = ?,
SQL1_5 = WHERE
SQL1_6 =     p_boxname = ?
SQL1_7 = LIMIT 1

SQL1_INPUTS = 1,2



Сам scripts должен быть примерно:

_box = select 0
_inv = select 1
_box getUnitLoadout _inv

Что-то типо того, если понял) 

 

Учусь,пытаюсь, но чет печально(

У меня есть сохранение снаряжения игрока по бд, оно работает. А вот с ящиками пока мудрю...


Сообщение отредактировал acejas67: 30 January 2023 - 04:00

  • 0

#7 OFFLINE   acejas67

acejas67

    Рядовой

  • Пользователи
  • 4 сообщений

Отправлено 30 January 2023 - 03:57

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


  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 30 January 2023 - 13:32

Cпасибо, решил проблему)

И как решил?
 

Сам scripts должен быть примерно: _box = select 0 _inv = select 1 _box getUnitLoadout _inv

С ящиком не получится одной командой всё выгребсти. Могу предложить функцию, в которой выгребается содержимое контейнера (ящик -- это контейнер). Адаптируй код под свои нужды.

Прикрепленный файл  moveItemsInAreaToContainer.sqf   2.66К   1 Количество загрузок:


  • 0




Яндекс.Метрика