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


Фотография

Касательно sleep


Лучший Ответ HarryWorner , 18 June 2015 - 08:33

Если вы функцию вызываете через команду Call, тогда нужно обязательно убрать все строки с командой sleep в данной функции. Если без sleep не обойтись, то используйте команду Spawn. Для примера: 

[] Spawn keyspressed; 

Но тогда функция будет работать не так мгновенно в некоторых случаях.

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


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

#1 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

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

Отправлено 18 June 2015 - 08:10

if (side player == west) exitwith {};
if !(side player == civilian) exitwith {};


waituntil {time > 1};

/// функция вызываемая при нажатии клавиш
keyspressed = {
	private["_key","_exit"];
                  
	_key = _this select 1;

	/// переменная может понадобиться для работы функции
	//_exit = false;
	


/// T
	if (_key == 20) then {
	    
		/// создать копию
if (time - lasttime < 30) exitWith {}; /// задержка на нажатие
lasttime = time;

if (isServer) then {
_side = createCenter civilian;
_groupThing = createGroup civilian;
_manThing = _groupThing createUnit ["C_scientist_F", [0, 0, 0], [], 0, "NONE"];
_manThing setpos getPos player;
_manThing setdir getdir player;
_manThing disableAI "move";
_manThing setunitpos "up";

/// ругается на sleep, если его прописать

};
};
};
/// создаём дисплей нажатия клавиатуры с ярлыком - EH_keyDown
EH_keyDown = (findDisplay 46) displayAddEventHandler ["keyDown", "_this call keyspressed"];

Есть такой скрипт.

Скрипт ругается на sleep.

 

И у меня два вопроса.

 

1. Почему ругается на sleep?

2. Как заменить sleep? 

Думал сделать переменную с условием, либо через for, но это ведь костыль. 


  • 0

#2 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

  • Модераторы
  • 1035 сообщений

Отправлено 18 June 2015 - 08:33   Лучший Ответ

Если вы функцию вызываете через команду Call, тогда нужно обязательно убрать все строки с командой sleep в данной функции. Если без sleep не обойтись, то используйте команду Spawn. Для примера: 

[] Spawn keyspressed; 

Но тогда функция будет работать не так мгновенно в некоторых случаях.


  • 0

#3 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

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

Отправлено 18 June 2015 - 08:53

да даже без call выдаёт ошибку.

а через

 [] Spawn keyspressed;  

 

всё налажено блин, не хочется портить.

 

Ладно, спасибо! 


  • 0

#4 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 18 June 2015 - 18:40

да даже без call выдаёт ошибку.

а через

 [] Spawn keyspressed;  

 

всё налажено блин, не хочется портить.

 

Ладно, спасибо! 

Так получилось или нет?


 

Думал сделать переменную с условием, либо через for, но это ведь костыль. 

На уровне движка скриптовая команда sleep так и выглядит как называемый вами костыль.

То есть происходит всё та же проверка условия.


Сообщение отредактировал SteelRat: 18 June 2015 - 18:41

  • 0

#5 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

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

Отправлено 18 June 2015 - 19:21

Получилось. 

Но  наверное я сделал как-то по другому.

 

Скину целый скрипт, чтобы было понятнее.

 

Так запускаю

call {[] execvm "sposobnost\SPOSOBNOSTI.sqf"};

Сам скрипт *будет пополняться*.

проблема sleep была в 

/// спавн клонов

Скрытый текст


Сообщение отредактировал TankiSD: 18 June 2015 - 19:23

  • 0

#6 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 18 June 2015 - 20:07

_ManThingSpawn = {
	if (isServer) then {

		_side = createCenter civilian;
		_groupThing = createGroup civilian;
		_manThings = [];
		_dirs = [0, 45, 90, 130, 180, 225, 270, 325];
		
		for "_i" from 0 to 7 do {
			_manThing = _groupThing createUnit ["C_scientist_F", [0, 0, 0], [], 0, "NONE"];
			_manThing setpos getPos crPlow;
			_manThing setdir (_dirs select _i);
			_manThing setunitpos "up";
			_manThing disableAI "anim";
			_manThing switchmove "AmovPercMrunSnonWnonDf";
			
			_manThings pushBack _manThing;
		};	
		
		sleep 1;
		_mol="ModuleLightning_F" createUnit [getpos crPlow, group igcam];
	
		sleep 8;
		_dirs = [0, 225, 270, 325, 0, 45, 90, 135];
		{
			if !(isNull _x) then {
				_x setdir (_dirs select _forEachIndex);
			};
		} foreach _manThings;
		
		
		sleep 10;
		_mol1="ModuleLightning_F" createUnit [getpos crPlow, group igcam];
		{
			if !(isNull _x) then {
				deletevehicle _x;
			};
		} foreach _manThings;
	};
}; 

  • 1




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