Jump to content


Photo

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

  • Please log in to reply
1486 replies to this topic

#441 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 23 August 2016 - 13:25

dos622, из всех extended в Арме есть только предописанные в конфигах обычные обработчики событий, ни каких сверх естественных обработчиков они не дают
  • 0

#442 OFFLINE   dos622

dos622

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

  • Пользователи
  • 702 posts

Posted 23 August 2016 - 14:08

vlad333000, я в курсе :) потому автору вопроса и дал сылку на вики. 


Edited by dos622, 23 August 2016 - 14:13.

  • 0

#443 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 23 August 2016 - 23:41

 

_rand = N;
 _i = count MyMassive;

while {_i > _rand} do {
	_randomIndex = floor (random _i);
	MyMassive set [_randomIndex,0];
	
	// Вы не предполагаете такой ситуации, когда в следующем цикле окажется выбранным индекс
	// который уже будет больше чем реальная длинна массива? Ибо вы каждый цикл меняете размер массива
	MyMassive = MyMassive - [0];
	
	
	_i = _i - 1;
};

 

Цикл

Вроде выкидываем один элемент (случайный)

уменьшаем на единицу кол- во элементов

Цикл

или я что то упустил?

 

я тупанул, всё нормально.


Edited by SteelRat, 23 August 2016 - 23:46.

  • 0

#444 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 24 August 2016 - 05:02

at=[0,[0,1]];
_a=at select 1;
at select 1 deleteRange[1,1];
hint str at;
systemChat str _a;

как наиболее эргономично сделать at==[0,[0]] and _a==[0,1] ?


Edited by Ilias, 24 August 2016 - 08:11.

  • 0

#445 OFFLINE   Kraisston

Kraisston

    Ефрейтор

  • Пользователи
  • 70 posts

Posted 25 August 2016 - 08:24

Вопрос не совсем по скриптингу, но не хотелось создавать новую тему. Мод ace. Какое возрождение используется для этого мода? Спасибо.


  • 0

#446 OFFLINE   Sandefend

Sandefend

    Ефрейтор

  • Пользователи
  • 40 posts

Posted 30 August 2016 - 18:15

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

 

 

UPD: оказывается можно назначать лицо НПС, Только сейчас заметил. Проблема решена 

 

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


Edited by Sandefend, 30 August 2016 - 19:11.

  • 0

#447 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 30 August 2016 - 18:40

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

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

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


  • 1

#448 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 30 August 2016 - 19:21

 

Attached File  Civil_armed.Stratis.7z   1.9KB   1 downloads


  • 1

#449 OFFLINE   Kraisston

Kraisston

    Ефрейтор

  • Пользователи
  • 70 posts

Posted 30 October 2016 - 06:27

Скрипт на маркеры игроков на карте.

Вопрос. После смерти маркер игрока становится фиолетовым и не виден другим игрокам. Можно сделать так, что бы после смерти (в ожидании когда тебя поднимут), маркер игрока был виден всем остальным?

 

if (isDedicated) exitWith {}; // is server  
if (!isNil{aero_player_markers_pos}) exitWith {}; // already running
                   
private ["_marker","_markerText","_temp","_unit","_vehicle","_markerNumber","_show","_injured","_text","_num","_getNextMarker","_getMarkerColor","_showAllSides","_showPlayers","_showAIs","_l"];

_showAllSides=false;
_showPlayers=false;
_showAIs=false;

if(count _this==0) then {
    _showAllSides=false;
    _showPlayers=true;
    _showAIs=!isMultiplayer;
};
                         
{
    _l=toLower _x;
    if(_l in ["player","players"]) then {
        _showPlayers=true;
    };
    if(_l in ["ai","ais"]) then {
        _showAIs=true;
    };
    if(_l in ["allside","allsides"]) then {
        _showAllSides=true;
    };
} forEach _this;

aero_player_markers_pos = [0,0];
onMapSingleClick "aero_player_markers_pos=_pos;";

_getNextMarker = {
    private ["_marker"];
    _markerNumber = _markerNumber + 1;
    _marker = format["um%1",_markerNumber];    
    if(getMarkerType _marker == "") then {
        createMarkerLocal [_marker, _this];
    } else {
        _marker setMarkerPosLocal _this;
    };
    _marker;
};

_getMarkerColor = {    
    [(((side _this) call bis_fnc_sideID) call bis_fnc_sideType),true] call bis_fnc_sidecolor;
};

while {true} do {
      
    waitUntil {
        sleep 0.025;
        true;
    };
    
    _markerNumber = 0;
    
    // show players or player's vehicles
    {
        _show = false;
        _injured = false;
        _unit = _x;
        
        if(
            (
                (_showAIs && {!isPlayer _unit} && {0=={ {_x==_unit} count crew _x>0} count allUnitsUav}) ||
                (_showPlayers && {isPlayer _unit})
            ) && {
                _showAllSides || side _unit==side player
            }
        ) then {    
            if((crew vehicle _unit) select 0 == _unit) then {
                _show = true;
            };        
            if(!alive _unit || damage _unit > 0.9) then {
                _injured = true;
            };      
            if(!isNil {_unit getVariable "hide"}) then {
                _show = false;
            };  
            if(_unit getVariable ["BTC_need_revive",-1] == 1) then {
                _injured = true;
                _show = false;
            };          
            if(_unit getVariable ["NORRN_unconscious",false]) then {
                _injured = true;
            };                  
        };
                  
        if(_show) then {
            _vehicle = vehicle _unit;                        
            _pos = getPosATL _vehicle;                              
            _color = _unit call _getMarkerColor;  

            _markerText = _pos call _getNextMarker;                        
            _markerText setMarkerColorLocal _color;                                              
             _markerText setMarkerTypeLocal "c_unknown";                         
            _markerText setMarkerSizeLocal [0.8,0];

            _marker = _pos call _getNextMarker;            
            _marker setMarkerColorLocal _color;
            _marker setMarkerDirLocal getDir _vehicle;
            _marker setMarkerTypeLocal "hd_dot";
            _marker setMarkerTextLocal "";            
            if(_vehicle == vehicle player) then {
                _marker setMarkerSizeLocal [0.8,1];
            } else {
                _marker setMarkerSizeLocal [0.5,0.7];
            };
            
             if(_vehicle != _unit && !(_vehicle isKindOf "ParachuteBase")) then {                                     
                _text = format["[%1]", getText(configFile>>"CfgVehicles">>typeOf _vehicle>>"DisplayName")];
                if(!isNull driver _vehicle) then {
                    _text = format["%1 %2", name driver _vehicle, _text];    
                };                                                     
                
                if((aero_player_markers_pos distance getPosATL _vehicle) < 50) then {
                    aero_player_markers_pos = getPosATL _vehicle;
                    _num = 0;
                    {
                        if(alive _x && isPlayer _x && _x != driver _vehicle) then {                        
                            _text = format["%1%2 %3", _text, if(_num>0)then{","}else{""}, name _x];
                            _num = _num + 1;
                        };                        
                    } forEach crew _vehicle;
                } else {
                    _num = {alive _x && isPlayer _x && _x != driver _vehicle} count crew _vehicle;
                    if (_num>0) then {                    
                        if (isNull driver _vehicle) then {
                            _text = format["%1 %2", _text, name (crew _vehicle select 0)];
                            _num = _num - 1;
                        };
                        if (_num>0) then {
                            _text = format["%1 +%2", _text, _num];
                        };
                    };
                };                         
            } else {
                _text = name _x;            
            };
            _markerText setMarkerTextLocal _text;
        };
        
    } forEach allUnits;


    // show player controlled uavs
    {
        if(isUavConnected _x) then {    
            _unit=(uavControl _x) select 0;
            if(
                (                
                    (_showAIs && {!isPlayer _unit}) ||
                    (_showPlayers && {isPlayer _unit})
                ) && {
                    _showAllSides || side _unit==side player
                }
            ) then {
                _color = _x call _getMarkerColor;                                                                                            
                _pos = getPosATL _x;
                
                _marker = _pos call _getNextMarker;            
                _marker setMarkerColorLocal _color;
                _marker setMarkerDirLocal getDir _x;
                _marker setMarkerTypeLocal "hd_dot";            
                _marker setMarkerTextLocal "";
                if(_unit == player) then {
                    _marker setMarkerSizeLocal [0.8,1];
                } else {
                    _marker setMarkerSizeLocal [0.5,0.7];
                };
                                              
                _markerText = _pos call _getNextMarker;    
                _markerText setMarkerColorLocal _color;       
                _markerText setMarkerTypeLocal "c_unknown";
                _markerText setMarkerSizeLocal [0.8,0];
                _markerText setMarkerTextLocal format["%1 [%2]", name _unit, getText(configFile>>"CfgVehicles">>typeOf _x>>"DisplayName")];    
            };
        };
    } forEach allUnitsUav;
    
    
    

    _markerNumber = _markerNumber + 1;
    _marker = format["um%1",_markerNumber];    
    while {(getMarkerType _marker) != ""} do {
        deleteMarkerLocal _marker;
        _markerNumber = _markerNumber + 1;
        _marker = format["um%1",_markerNumber];
    };
    
};
 


  • 0

#450 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 30 October 2016 - 12:52

После смерти маркер игрока становится фиолетовым и не виден другим игрокам. Можно сделать так, что бы после смерти (в ожидании когда тебя поднимут), маркер игрока был виден всем остальным?

Нужно использовать команды с глобальным эффектом, например,

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

вместо createMarkerLocal.


  • 0

#451 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 11 November 2016 - 15:40

В каком namespace сохраняются глобальные переменные назначенные в init.sqf ?


  • 0

#452 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 11 November 2016 - 19:08

Ilias, mission, всегда в mission, если не сказано обратное
  • 1

#453 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 15 November 2016 - 11:39

а при missionnamespace setvariable['t','_'] создаётся|меняется на всех компьютерах?


  • 0

#454 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 15 November 2016 - 15:14

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

.


  • 0

#455 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 posts
  • Откуда:Кострома

Posted 15 November 2016 - 16:44

Schatten, можно воспользоватся третьим параметров в setVariable
  • 0

#456 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1831 posts

Posted 15 November 2016 - 16:50

vlad333000, конечно!


  • 0

#457 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 15 November 2016 - 21:31

Теоретически должно быть так, но кажется последний раз создавалось на всех, придётся проверять


  • 0

#458 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 23 November 2016 - 14:42

Забыл спасибо написать ) , извиняюсь


  • 0

#459 OFFLINE   Ilias

Ilias

    Прапорщик

  • Пользователи
  • 512 posts

Posted 24 November 2016 - 02:32

Спасите пожалуйста, снова ) , почему ничего из этого не работает? (один раз что то сработало, не уверен что и из за чего)

description.ext 
disableChannels[]={{0,true,true},{1,true,true},{2,true,true},{3,true,false}};
disableChannels[]={0,1,2,3};
class RadioChannels{
	class DirectSpeakingChannel{
		level = 0;
		micOuts = "micOuts";
		noise = "loop";
		pauseAfterNumber = 0;
		pauseAfterUnitList = 0.05;
		pauseAfterWord = 0;
		pauseInNumber = 0;
		pauseInUnitList = 0;
	};
	delete GlobalChannel;
	delete SideChannel;
	delete CommandChannel;
	delete GroupChannel;
	delete VehicleChannel;
};

И как можно было бы послать выполнение чего нибудь на сервер и получить ответ(

client:

[[0,1],3]remoteexec['pushback',2]

server:

|execution|

client:

|_|==2

)


Edited by Ilias, 24 November 2016 - 02:34.

  • 0

#460 OFFLINE   Artanis

Artanis

    Рядовой

  • Пользователи
  • 5 posts

Posted 28 November 2016 - 00:29

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


  • 0




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