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

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

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

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

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

нашел скрипт на самовосстановление крови

нашел вот такой вот простой скриптик, как бы в этом и есть фишка дейз что сам здоровье не восстанавливаешь, но думаю будет более реалистичным если сделать небольшое восстановление, но как я понимаю скрипт это делает всегда, как бы так добавить исключения что если идет кровь, голод или жажда меньше 50% или игрок находится в бою или перегружен то скрипт не работает? Так же в идеале было бы сделать градацию к примеру если игрок бегает восстанавливается по 1ед. крови, если ходит по 3ед., крадется 4ед, ползает 5ед, стоит 7 ед., сидит 10ед.
Вот собственно скрипт: 

bloodAmount = 1;

while {true} do
{

if(r_player_blood > 12000) then {
r_player_blood = 12000;
} else {
sleep 2;
r_player_blood = r_player_blood + bloodAmount;
};
};

 

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


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

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

  • 0

Ну пытаюсь потихоньку разбираться, я конечно новчиек но с помощью скрипта на восстановление крови в палатке получается что то вроде этого:
 

bloodAmountrun = 1;
bloodAmountwalk = 2;
bloodAmountsneak = 4;
bloodAmountcrawl = 6;
bloodAmountstay = 10;
bloodAmountsit = 15;
bloodAmountsleep = 1000;

while {true} do
{
   if(r_player_blood > 12000) then {
        r_player_blood = 12000;
    } else {
       sleep 2;
       if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountrun;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountwalk;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountsneak;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountcrawl;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountstay;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountsit;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountsleep;
      };
    } else {
       if(bleeding  &&  inCombat  &&  hungry < 0.5  && thirsty < 0.5  &&  temperature < 32) then {
       r_player_blood = r_player_blood;
      };
};
};

Понятно что это не правильно, но я суть пытаюсь уловить, подскажите как правильно записать s_player_ для бега, ходьбы, крастся, ползать, стоять, сидеть, и как правильно записать во втором else то что перечислено: кровотечение, в бою, сытость меньше 50%, жажда меньше 50%, температура тела меньше 32. Так же подходит ли && для выражения "и/или" или нужно писать "or"?

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


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





  • 0

&& = and

с этим я уже разобрался, понял что немного структура не правильная, как я понял нужно писать так:

если крови > 12000 тогда не восстанавливается;

если кровотечение или в бою и т.д. то кровь = кровь

в других случаях

в случае бега кровь=кровь + восстановленеи при беге

в случае ходьбы кровь=кровь + восстановленеи при ходьбе

 

я правильно понимаю?

 

Так же вот нашел в скриптах в дейз_код:

r_player_unconscious = true без сознания

r_player_injured = true кровотечение
r_player_infected = true заражен
r_fracture_legs = true сломаны ноги
r_fracture_arms = true сломаны руки
r_player_bloodDanger = true 20% крови
r_player_inpain = true боль
r_player_loaded = true перегружен
dayz_hunger = 1 голоден
dayz_thirst = 1 жажда
dayz_combat = 1 в бою
dayz_isSwimming плавать
dayz_isKneeling крастся
dayz_isCrawling ползать

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

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


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

пока что как то так получается:
 

bloodAmountrun = 1;
bloodAmountwalk = 2;
bloodAmountsneak = 4;
bloodAmountcrawl = 6;
bloodAmountstay = 10;
bloodAmountsit = 15;
bloodAmountsleep = 1000;

while {true} do
{
   if(r_player_blood > 12000) then {
        r_player_blood = 12000;
		};
	if(r_player_unconscious = true or r_player_injured = true or r_player_infected = true or r_fracture_legs = true or r_fracture_arms = true or r_player_inpain = true or r_player_loaded = true or r_player_bloodDanger = true or dayz_hunger = 0.5 or dayz_thirst = 0.5 or dayz_combat = 1) then {
       r_player_blood = r_player_blood;
    } else {
       sleep 2;
	   if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountrun;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountwalk;
      };
           if(dayz_isKneeling = true != -1) then {
       r_player_blood = r_player_blood + bloodAmountsneak;
      };
           if(dayz_isCrawling = true != -1) then {
       r_player_blood = r_player_blood + bloodAmountcrawl;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountstay;
      };
           if(s_player_ != -1) then {
       r_player_blood = r_player_blood + bloodAmountsit;
      };
           if(s_player_sleep != -1) then {
       r_player_blood = r_player_blood + bloodAmountsleep;
      };
 };
};

поправьте где что не так =)

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


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

если крови > 12000 тогда не восстанавливается;

больше 12000 у тебя никогда не будет, вернее, - может кикнуть античит, если каким то хреном успееш столько залить. Добавь переменную, и увеличивай ее - переменную. А после увеличения проверяй условие - > 11999.

Если больше - делай 12000

А уже потом присвоение к r_player_blood

 

     if(s_player_ != -1) then {
r_player_blood = r_player_blood + bloodAmountrun;
};
if(s_player_ != -1) then {
r_player_blood = r_player_blood + bloodAmountwalk;
};

 

Оба условия выполнятся - эдакая мега быстрая заливалка.

 

После условия надо либо делать выход, либо использовать else, либо использовать инструкции switch case

 

bloodAmountrun = 1;
bloodAmountwalk = 2;
bloodAmountsneak = 4;
bloodAmountcrawl = 6;
bloodAmountstay = 10;
bloodAmountsit = 15;
bloodAmountsleep = 1000;

 

Это должно быть объявлено, в секции Private , и в согласии с правилами армы2 иметь нижнее подчеркивание перед именами.

Иначе, это глобальные переменные.

 

И еще, - при перечислении множества условий - or \ and все они должны быть заключены в скобки, как в C++ Delphi -

if ( (x < y) or (a > b........ ) then

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

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


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

Оба условия выполнятся - эдакая мега быстрая заливалка. Так там же условия не дописаны, разве если там будет стоять (пишу так как незнаю как правильно это условия написать):
if(s_player_running != -1) then {
r_player_blood = r_player_blood + bloodAmountrun;
};
if(s_player_walking != -1) then {
r_player_blood = r_player_blood + bloodAmountwalk;
};

Как то так?

 

private ["_run","_walk","_sneak","_crawl","_stay","_sit","_sleep"];
_run = 1;
_walk = 2;
_sneak = 4;
_crawl = 6;
_stay = 10;
_sit = 15;
_sleep = 1000;

while {true} do
{
   if(r_player_blood > 11999) then {
        r_player_blood = 12000;
		};
	if((r_player_unconscious = true) or (r_player_injured = true) or (r_player_infected = true) or (r_fracture_legs = true) or (r_fracture_arms = true) or (r_player_inpain = true) or (r_player_loaded = true) or (r_player_bloodDanger = true) or (dayz_hunger = 0.5) or (dayz_thirst = 0.5) or (dayz_combat = 1)) then {
       r_player_blood = r_player_blood;
    } else {
	    switch (r_player_blood) do {
			case s_player_ :		{r_player_blood = (r_player_blood + _run);};
			case s_player_  :		{r_player_blood = (r_player_blood + _walk);};
			case dayz_isKneeling :	{r_player_blood = (r_player_blood + _sneak);};
			case dayz_isCrawling :	{r_player_blood = (r_player_blood + _crawl);};
			case s_player_ :		{r_player_blood = (r_player_blood + _stay);};
			case s_player_ :		{r_player_blood = (r_player_blood + _sit);};
			case s_player_sleep :		{r_player_blood = (r_player_blood + _sleep);};
		};
		sleep 2;
	};
};


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


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

Нет.

1. r_player_unconscious = true

true можно не писать. Можно писать так -

if ( (r_player_unconscious) or (....) ) then

 

2. После

if(r_player_blood > 11999) then

  {
   r_player_blood = 12000;

тут выход из скрипта - нахрена ему дальше то работать???

};

 

3. Инструкция switch case работает не так как у тебя написано....

Пример работы -

_vasia = 2;

switch (_vasia) do

{

 case 0: ....;

 case 2: ....;//Выполнено будет, то что тут.

 case 3: ....;

};

 

4. Я же говорил - добавь переменную, для крови - так будет правильней.

private[..........,"_blood"];

И наращивай ее.

_blood = r_player_blood + _run;

А потом проверяй

if (_blood > 11999) then

 { _blood = 12000; };

И только потом устанавливай глобальную переменную игрока -

r_player_blood = _blood;

 

5. В таком ключе как у тебя switch case не подойдет.

А если if то что это вообще такое-

if (s_player_) then {r_player_blood = (r_player_blood + _run);};
if (s_player_) then {r_player_blood = (r_player_blood + _walk);};

Условия одинаковые - if (s_player_) then они оба выполнятся(там еще и ниже выполнятся такие же).

 

Правильно как то так -

_blood = r_player_blood;

if (dayz_isKneeling) then 

 {

   _blood = r_player_blood + _sneak;

 }

else
 if (dayz_isCrawling) then

    {

     _blood = r_player_blood + _crawl;

   }

 else
  if (s_player_sleep) then

    {

      _blood = r_player_blood + _sleep;

    };

Одна проверка. Следующая проверка, будет выполнена, только в случае, если предыдущее условие не подошло.

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


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

1) понял, спасибо
2)как сделать выход?
3)Если так, то не получается придумать структуру которая будет работать через swich case, даже не представляю как туда переменную поставить, то есть скажем если в свич поставить значение крови, то дальше как писать? Разе что как то так:
 

_regeneration = 1;
switch (_regeneration) do
{
case 0: {if (dayz_isKneeling) then  {
   _blood = r_player_blood + (_regeneration * 2);
 };};
case 2: ....;//Выполнено будет, то что тут.
case 3: ....;
};

 

или я не совсем понял что в моем варианте я могу поставить в swich

4)Примерно понял, а вот только все остальное _run, _walk и т.д. мне так же в переменной следует оставлять, ведь они то константы, хотя если пункт 3 правильный, то мне они вообще не понадобятся, просто делаю переменную _regeneration и все

5)Там не дописаны условия, я просто не знаю как прописать бег, ходьбу и так далее, нашел только это:

s_player_sleep - спать
dayz_isCrawling - ползти
dayz_isKneeling - крастся
и то не уверен правильно ли это
потому пока те значения поставил просто s_player_

Не пинай сильно, это мой первый скрипт, потому и настолько глупые вопросы задаю
Изменено пользователем ka3ant1p (история изменений)

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


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

2. exitWith {};

* внутри {} можно написать код который будет выполнен при выходе. Например вывести текст мол кровь заллита.

 

По условию switch, или не используй, и юзай if , или я бы посмотрел в сторону анимации -

 

acinpknlmstpsraswrfldnon - тащит за шиворот раненного товарища
acrgpknlmstpsnonwnondnon_amovpercmstpsraswrfldnon_getouthigh - выпрыгивает сверху транспорта
aidlpknlmstpslowwrfldnon_idlesteady02 - Из положения стоя присаживается на колено

 

Мб как то можно получить текущую анимацию - ползет\бежит....

 

Если можно его получить, то использовать его можно было бы как то так -

 

_status = как_то_получаем_статус; - к примеру вернется, dayz_isCrawling, или dayz_isKneeling.... -

Тогда далее так

 

switch (_status) do

{

 dayz_isCrawling: {};

 dayz_isKneeling: {};

....

};

 

Если запарно или нельзя, то юзай if

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


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

2. exitWith {};

* внутри {} можно написать код который будет выполнен при выходе. Например вывести текст мол кровь заллита.

 

По условию switch, или не используй, и юзай if , или я бы посмотрел в сторону анимации -

 

acinpknlmstpsraswrfldnon - тащит за шиворот раненного товарища

acrgpknlmstpsnonwnondnon_amovpercmstpsraswrfldnon_getouthigh - выпрыгивает сверху транспорта

aidlpknlmstpslowwrfldnon_idlesteady02 - Из положения стоя присаживается на колено

 

Мб как то можно получить текущую анимацию - ползет\бежит....

 

Если можно его получить, то использовать его можно было бы как то так -

 

_status = как_то_получаем_статус; - к примеру вернется, dayz_isCrawling, или dayz_isKneeling.... -

Тогда далее так

 

switch (_status) do

{

 dayz_isCrawling: {};

 dayz_isKneeling: {};

....

};

 

Если запарно или нельзя, то юзай if

 

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

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


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

Если персонаж в транспорте, об этом можно узнать

                         _veh =  gettext (configFile >> 'CfgVehicles' >> (typeof vehicle player) >> 'displayName');

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


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

вот нашел:
Prone:
Ppne

Kneeling:
Pknl

Stand:
Perc

ex:
"AmovPercMstpSrasWrflDnon" - Standing
"AmovPknlMstpSrasWrflDnon" - Kneeling
"AmovPpneMstpSrasWrflDnon" - Prone

If you want to get what the unit's current stance is you can use this:

Code:
_animState = animationState _unit;
_animStateChars = toArray _animState;
_animP = toString [_animStateChars select 5,_animStateChars select 6,_aniMStateChars select 7];

Which will return just those 3 letters in a string.
И вот еще полный список анимаций:

https://community.bistudio.com/wiki/ArmA2:_Moves
как бы это засунуть в _staus = ?
 

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


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

я так посмотрел, там слишком много анимаций, и все прописать будет очень напряжно, как я предполагаю, не может выполнятся одновременно несколько анимация, и если учесть только те анимации что я написал, то при других анимациях как лечение другого игрока или перезарядка в эти моменты скрипт работать не будет, так что анимации отпадают. Тогда действительно логичнее делать привязку к скорости движения с проверкой в транспорте игрок или нет. Только идея делать через свич кейс мне понравилась более, она кажется удобнее чем последовательные проверки по средствам if else.
Думаю тогда структура должна выглядеть как то так:
Переменные кровь, восстановление, скорость

восстановление = 2

скорость = получение скорости

кровь(локальная переменная) = кровь(глобальная переменная)
1 проверка: если крови > 11999 то кровь(локальная переменная) = 12000

конец функции
2 проверка: если без сознания, ранен, прегружен и т.д. то кровь(локальна переменная)=кровь(локальна переменная)

в остальных случаях
проверка если в машине то кровь(локальна переменная) = кровь(локальна переменная) + (восстановление * 5)
в остальных случаях

если игрок не спит то

свич (скорость) применять:
скорость 1:  кровь(локальна переменная) + (восстановление) // бег
скорость 2:  кровь(локальна переменная) + (восстановление * 2) // ходьба
скорость 3:  кровь(локальна переменная) + (восстановление * 3) // крадется
скорость 4:   кровь(локальна переменная) + (восстановление * 5) // ползет

скорость 5:   кровь(локальна переменная) + (восстановление * 10) // сидит или стоит
в остальных случаях 
если игрок спит тогда кровь(локальна переменная) + (восстановление * 1000)
 

как то так, было проще выразить мысль на русском чем с помощью (скорее всего не правильно написанного) скрипта =)

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


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

используй if и голову не ломай.

 

если спит кровь+а

в противном случае

если идет кровь+б

в противном случае

.......

вот и все.

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


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

используй if и голову не ломай.

 

если спит кровь+а

в противном случае

если идет кровь+б

в противном случае

.......

вот и все.

как то так, понятно много ошибок и надо дабвить функцию на получение скорости, и не разобрался на счет sleep, но сдается мне конец близок =)

 

private ["_blood","_speed","_regeneration","_inCombat","_timeout","_veh"];
_blood = r_player_blood;
_speed = ; //here need to paste a way it will get current speed
_regeneration = 2;
_timeout = player getVariable["combattimeout", 0];
_inCombat = if (_timeout >= diag_tickTime) then { true } else { false };
 _veh =  gettext (configFile >> 'CfgVehicles' >> (typeof vehicle player) >> 'displayName');

while {true} do {
   if(_blood > 11999) then {
        _blood = 12000;
	};
	exitWith {};
	if((r_player_unconscious) or (r_player_injured) or (r_player_infected) or (r_fracture_legs) or (r_fracture_arms) or (r_player_inpain) or (r_player_loaded) or (r_player_bloodDanger) or (dayz_hunger = 0.5) or (dayz_thirst = 0.5) or (_inCombat)) then {
       _blood = _blood;
	} else {
	if (_veh) then {
		_blood = _blood + (_regeneration * 5);
	} else {
	if (s_player_sleep) then {
		_blood = _blood + (_regeneration * 500);
	} else {
	    switch (_speed) do {
			case >= 14 :	{_blood = _blood + _regeneration;}; //when running regeneration = 2
			case >= 5 :		{_blood = _blood + (_regeneration * 2);}; //when walking regeneration = 4
			case >= 3 :		{_blood = _blood + (_regeneration * 3);}; //when sneaking regeneration = 6
			case >= 1 :		{_blood = _blood + (_regeneration * 4);}; //when crawling regeneration = 8
			case == 0 :		{_blood = _blood + (_regeneration * 10);}; //when seating or staying regeneration = 20
		};
	};
	sleep 2;
};

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


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

if(_blood > 11999) then {
_blood = 12000;
    };
    exitWith {};

 

Ты смысл фигурных скобок понимаешь?

{ - Begin - начало процедуры

} - end - конец процедуры

 

У тебя внутри должен быть выход -

 

if(_blood > 11999) then

{
 _blood = 12000;

  exitWith {};

};

Да и то не верно - зачем делать присвоение

_blood = 12000;

если ты потом сразу выйдешь?

Эта проверка должна быть в самом низу кода.

Когда у тебя прошли все условия.

Ты внутри нее проверяешь чему стала равна кровь. И если кровь по максимуму - присваиваешь новое значение и выходишь.

 

if(_blood > 11999) then

{
r_player_blood = 12000;

exitWith {};

};

а если не стало 12000 - выполняем скрипт дальше....

 

 

Это вообще эпик))) -

_blood = _blood;

вася=вася_)

 

if (_veh) then

Эээээ в _veh будет текст! или survivor, или имя техники в которой он.

так что тут надо смотреть - если это survivor, то одно, в противном случае - чар в технике сидит.

как то так -

if (_veh = "survivor") then

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


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

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

Про _veh я хотел написать что если в транспорте тогда кровь = кровь + восстановление * 5, то есть что бы в транспорте восстанавливалось 10 крови раз в 2 секунды

кровь = кровь, а как по другому написать что бы не восстанавливалось?

ут же уже почти конец, может подправишь просто немного, у меня мозг уже просто кипит от такого кол-ва новой информации =(

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


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

private ["_blood","_incblood"];

while { (alive player) } do

    {

        //Если крови меньше 11999 и чар не ранен и т.д. и т.п. тогда

        if ( (r_player_blood < 11999) and !(r_player_unconscious) and !(r_player_injured) ) then

            {

                _blood = r_player_blood; //Получаем текущее значение крови

                _incblood = 0; //Прирост крови

                if (dayz_isKneeling) then //Если чар крадется приращивать будем 10 крови

                    {

                        _incblood = 10;

                    }

                else

                    {

                        if (dayz_isCrawling) then //Если чар ползет приращивать будем 20 крови

                            {

                                _incblood = 20;

                            };

                    };        

                //Наращиваем значение крови

                _blood = _blood + _incblood;

                //Проверяем - если кровищи больше чем максимум

                if (_blood > 11999) then

                    {

                        r_player_blood = 12000;

                    }

                else//Если меньше максимума - тупо пополняем

                    {

                        r_player_blood = _blood;

                    };

            };

        sleep 2;//Пауза 2 секунды.

    };

 

 

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

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


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

как то ты половину кода выкинул =(
Дело в том что я не уверен что dayz_isCrawling и dayz_isKneeling вообще имеют то значение которое имеется ввиду, тем не менее у нас есть еще s_player_sleep и все, а написать если  игрок бежит, идет и т.д. как неизвестно, только через анимацию. Потому я подумал использовать параметр скорость. 
Я общался с первосоздателем скрипта, он подал идею скорости, говорил проверял со скоростью работает, только он простой совсем сделал дабавил 2 значения скорости.
Так же проверка нужна наъодится ли игрок в транспорте

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


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

Вот и добавь переменную скорость.

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

else

 {

.......

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


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

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

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


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

Мне кажется как то так, к сожалению не имею пока что проверить, посмотри плиз:
 

private ["_timeout","_inCombat","_vehicle","_inVehicle","_blood","_regeneration","_speed"];
_timeout = player getVariable["combattimeout", 0];
_inCombat = if (_timeout >= diag_tickTime) then { true } else { false };
_vehicle = vehicle player;
_inVehicle = (_vehicle != player);

while { (alive player) } do {
	if (r_player_blood > 11999) then {
		r_player_blood = 12000;
		exitWith {systemChat ('Now you are in a full health');}; // Если здоровье полное - нет необходимости дальнейших проверок, выходим сообщением
	} else {
		r_player_blood = _blood; // в остальных случаях присваиваем локальную переменную
	};
	if ( (_blood < 11999) and !(r_player_unconscious) and !(r_player_injured) and !(r_player_infected) and !(r_fracture_legs) and !(r_fracture_arms) and !(r_player_inpain) and !(r_player_loaded) and !(dayz_hunger < 0.5) and !(dayz_thirst < 0.5) and !(dayz_temperatur < 0.5) and !(_inComabt) ) then { //Список проверок, при выполнении которых скрипт продолжает проверки
		_regeneration = 0; // не знаю нужна ли эта строка вообще
		if (_inVehicle) then {
			_regeneration = 10; // Если в транспорте
		} else {
			if (s_player_sleep) then {
				_regeneration = 1000; // Если игрок спит
			};
		} else {
			_speed = player speed;
			switch (_speed) do { // не уверен правильно ли case записан, хотел написать более равно такой то скорости
				case >= 14 :	{_regeneration = 2;}; // При беге
				case >= 5 :		{_regeneration = 4;}; // при ходьбе
				case >= 3 :		{_regeneration = 6;}; // при движении присев
				case >= 1 :		{_regeneration = 8;}; // при ползание
				case == 0 :		{_regeneration = 20;}; //при отсутствии движения (стоит или сидит)
			};
		};
		_blood = _blood + _regeneration; // назначаем прирост крови при выполнении 1 из условий выше после положительного прохождения проверок
	} else {
	_blood = r_player_blood // если не прошел проверку на ранее и т.д. возвращаем значение глобальной переменной
	};
	sleep 2; // повторение каждые 2 секунды
};
Изменено пользователем ka3ant1p (история изменений)

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


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

решил использовать switch case дабы не делать километровую структуру if - else

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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