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


Фотография

лагерь возрождений


Лучший Ответ Forsion , 02 March 2018 - 12:14

Именно так))
Советую такой, быстрый вариант
if(isNil {resp}) then {} else {удаляем старый спавнпоинт}

вот теперь скрипт работает как надо.
 

//RespawnCamp.sqf//
if(isNil {resp}) then {} else 
{
resp call BIS_fnc_removeRespawnPosition; 
deletevehicle camp; 
deletevehicle camp1;
};
camp = "Land_TentDome_F" createvehicle position m1;
camp1 = "Campfire_burning_F" createvehicle position m1;
resp = [west,position m1,"camp"] call BIS_fnc_addRespawnPosition;
 
спасибо за помощь!

дальше я сам

Перейти к сообщению


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

#1 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 01 March 2018 - 22:31

хочу сделать некий "Respaw Camp".
в чем суть?
-нажимаешь кнопку
-появляется новая точка респауна на твоей позиции
-на месте этой точки спавнится небольшой лагерь
-кнопка уходит в кд, например на 10 мин
-при повторном создании новой точки возрождения старая должна исчезнуть

_camp = "Land_TentDome_F" createvehicle position player;
_camp = "Campfire_burning_F" createvehicle position player;
_resp = [west, position player, "camp"] call BIS_fnc_addRespawnPosition;

это все на что меня хватило.
пытался удалять старую точку респауна с помощью  BIS_fnc_removeRespawnPosition; но ничего не выходит, основная проблема именно в этом + не могу понять как уход в кд сделать.

буду признателен за помощь 
 


  • 0

#2 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 00:47

Смотря какая кнопка, GUI или просто addAction

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


  • 1

#3 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 10:22

Смотря какая кнопка, GUI или просто addAction

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

кнопка через addAction
мне нужно создавать точки респауна уже в самой игре на позиции игрока который и будет их создавать.
это должно быть что то вроде аналога ралли поинта из squad.
например ты подошел к базе противника и перед штурмом поставил RespawnCamp чтобы в случаи смерти не нужно было бежать с о своей базы, а можно было заспавниться на респаун кемпе и продолжать штурм.


  • 0

#4 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 11:34

С addAction тебе примерно такая последовательность нужна
1. myAction = player addAction “blabla”
2. В этом myAction, нужно исполнить скрипт, который удалит myAction, то есть - когда исполнятся этот экшн, он удаляет сам себя, потом ждёт 10 мин «слип 600», а потом снова добавляет

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

А по поводу респавна опиши подробнее как ты делаешь, а лучше прикрепи сам скрипт
  • 1

#5 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 11:45


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

Твой респ короче сделан приватно - _resp
Тебе нужно убрать нижнее подчёркивание, а потом, когда надо будет удалять старую точку респа сделай так:
resp call BIS fnc removeRespawnPosition
  • 1

#6 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 11:55

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

Твой респ короче сделан приватно - _resp
Тебе нужно убрать нижнее подчёркивание, а потом, когда надо будет удалять старую точку респа сделай так:
resp call BIS fnc removeRespawnPosition

во! теперь работает, хоть и с ошибкой в начале
 

//RespawnCamp.sqf//
resp call BIS_fnc_removeRespawnPosition;
_camp = "Land_TentDome_F" createvehicle position m1;
_camp = "Campfire_burning_F" createvehicle position m1;
resp = [west,position m1,"camp"] call BIS_fnc_addRespawnPosition;

я так понимаю чтобы избавиться от этой ошибки нужно через if проверять наличие старой точки респа и если она есть удалять её и ставить новую?
 


  • 0

#7 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 12:01

Именно так))
Советую такой, быстрый вариант
if(isNil {resp}) then {} else {удаляем старый спавнпоинт}

Сообщение отредактировал ReXcOr: 02 March 2018 - 12:05

  • 1

#8 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 12:14   Лучший Ответ

Именно так))
Советую такой, быстрый вариант
if(isNil {resp}) then {} else {удаляем старый спавнпоинт}

вот теперь скрипт работает как надо.
 

//RespawnCamp.sqf//
if(isNil {resp}) then {} else 
{
resp call BIS_fnc_removeRespawnPosition; 
deletevehicle camp; 
deletevehicle camp1;
};
camp = "Land_TentDome_F" createvehicle position m1;
camp1 = "Campfire_burning_F" createvehicle position m1;
resp = [west,position m1,"camp"] call BIS_fnc_addRespawnPosition;
 
спасибо за помощь!

дальше я сам


Сообщение отредактировал Forsion: 02 March 2018 - 13:34

  • 0

#9 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 12:16

Обращайся)
  • 1

#10 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 13:43

Обращайся)

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


  • 0

#11 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 15:09

В initPlayerLocal.sqf

waitUntil {time >= 0};
campTimer = 0;

В скрипт твоего действия

//твойЭкшн.sqf

if(campTimer <= time) then {

//Тут код твоего скрипта, типа разворачиваешь лагерь и т.д.
campTimer = campTimer + 600;//Создаем собственно КД

}
else
{

hint format ["Вы сможете развернуть новый лагерь через %1 секунд",(campTimer - time)]

};

Вроде этого должно получиться


  • 1

#12 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 15:29

В initPlayerLocal.sqf

waitUntil {time >= 0};
campTimer = 0;

В скрипт твоего действия

//твойЭкшн.sqf

if(campTimer <= time) then {

//Тут код твоего скрипта, типа разворачиваешь лагерь и т.д.
campTimer = campTimer + 600;//Создаем собственно КД

}
else
{

hint format ["Вы сможете развернуть новый лагерь через %1 секунд",(campTimer - time)]

};

Вроде этого должно получиться

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


  • 0

#13 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 15:40

Что-бы минуты и секунды точно не помню формулу к сожалению, а вот что-бы просто минуты, надо вот так

//твойЭкшн.sqf

if(campTimer <= time) then {

//Тут код твоего скрипта, типа разворачиваешь лагерь и т.д.
campTimer = campTimer + 600;//Создаем собственно КД

}
else
{

hint format ["Вы сможете развернуть новый лагерь через %1 секунд",(round (campTimer - time)/60)]

};

И на счет русских букв...

Это надо у наших старожилов поинтересоваться, тк я с таким не сталкивался, но есть подозрение, что для этого тебе надо делать скрипт в NotePad++

И выставлять кодировку(вкладки сверху) на UTF-8 без BOM


  • 1

#14 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 15:46

Что-бы минуты и секунды точно не помню формулу к сожалению, а вот что-бы просто минуты, надо вот так

//твойЭкшн.sqf

if(campTimer <= time) then {

//Тут код твоего скрипта, типа разворачиваешь лагерь и т.д.
campTimer = campTimer + 600;//Создаем собственно КД

}
else
{

hint format ["Вы сможете развернуть новый лагерь через %1 секунд",(round (campTimer - time)/60)]

};

И на счет русских букв...

Это надо у наших старожилов поинтересоваться, тк я с таким не сталкивался, но есть подозрение, что для этого тебе надо делать скрипт в NotePad++

И выставлять кодировку(вкладки сверху) на UTF-8 без BOM

 да это в кодировке проблема, совсем забыл про нё
а от огромных цифр которые идут за минутами после точки никак не избавится?


  • 0

#15 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 15:54

Я добавил команду round, она должна была решить этот трабл))
Блин не туда запихнул, пардон, надо поправить на вот это
round((campTimer - time)/60)
round перед скобками

Сообщение отредактировал ReXcOr: 02 March 2018 - 15:59

  • 0

#16 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 16:00

Я добавил команду round, она должна была решить этот трабл))

странно но она не решила, может и тут в кодировке дело?


  • 0

#17 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 16:01

//твойЭкшн.sqf

if(campTimer <= time) then {

//Тут код твоего скрипта, типа разворачиваешь лагерь и т.д.
campTimer = campTimer + 600;//Создаем собственно КД

}
else
{

hint format ["Вы сможете развернуть новый лагерь через %1 секунд",(round ((campTimer - time)/60))]

};

Вот так)


  • 1

#18 OFFLINE   Forsion

Forsion

    Ефрейтор

  • Пользователи
  • 38 сообщений
  • Откуда:акула
  • Отряд:Shark Squad

Отправлено 02 March 2018 - 16:08

//твойЭкшн.sqf

if(campTimer <= time) then {

//Тут код твоего скрипта, типа разворачиваешь лагерь и т.д.
campTimer = campTimer + 600;//Создаем собственно КД

}
else
{

hint format ["Вы сможете развернуть новый лагерь через %1 секунд",(round ((campTimer - time)/60))]

};

Вот так)

 

ооо да! теперь все просто идеально!
еше раз спасибо огромное за труды!
сам бы я еше долго со всем этим разбирался


  • 0

#19 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

  • Пользователи
  • 264 сообщений
  • Откуда:Moscow

Отправлено 02 March 2018 - 16:09

:drinks:  :drinks:  :drinks:


  • 1

#20 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 02 March 2018 - 16:28

Кстати, если мне память не изменяет в ваниль встроен вариант создания подобного респавна, ещё со времён создания Зевса.

Если я не ошибаюсь в ванили лежат объекты, матрас и палатка, которые реализуют эту тему.

 

Примерная суть в том, что если во время игрового процесса создать на некой позиции один из объектов, то данная позиция превращается в респавн пойнт, так же при постановке нового старый удаляется, это на сколько я помню, скажем приблизительно).


Сообщение отредактировал SteelRat: 02 March 2018 - 16:31

  • 0




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