Jump to content


Photo

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

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

  • Please log in to reply
1486 replies to this topic

#1181 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

  • Пользователи
  • 189 posts
  • Откуда:SPB

Posted 28 February 2018 - 04:06


синтаксис команды соответствующий:

Писал на память

Да там не string

_side       =    WEST;
_group    =    createGroup _side;


Пусстаня группа эквивалентно grpNull не эквивалентно nil

Еще раз говорю - писал на память.


Лучше подредактируйте тот пост, что бы новички не видели его и не ломали часами голову почему не работает

А не надо вслепую копипастить :acute:

 

P.S. Отвлекают часто))


  • 0

#1182 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

  • Пользователи
  • 189 posts
  • Откуда:SPB

Posted 28 February 2018 - 04:21


Пусстаня группа эквивалентно grpNull не эквивалентно nil

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

Установить его на группу низя, => только на юнитов группы. Понятное дело, что правильней на лидера.

Но чтобы все это дело проворачивать, желательно иметь менеджер групп(по крайней мере, когда писал для своего мода ИИ, - добавлял такой менджер себе, для пересоздания групп, патрулей и т.д. и т.п. с таймерами респавна, логами - сколько живых ну в целом понятно думаю)

Так вот - когда в группе все юниты сдохли, арма удалит группу автоматом(не помню сколько там секунд она еще будет существовать, но не сразу), и в массиве данная переменная(указатель на объект - группу), будет именно nil и ни о каком grpNull речи не будет идти.


  • 0

#1183 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 28 February 2018 - 04:23

NoNameUltima сказал(а):
А не надо вслепую копипастить

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

NoNameUltima сказал(а):
Писал на память

Ну что могу сказать... развивайте память

NoNameUltima сказал(а):
_side = WEST;
_group = createGroup _side;

Вполне себе обычный объект
myGroup = createGroup WEST;
myGroupLeader = leader myGroup;
diag_log [
  myGroupLeader,
  getPos myGroupLeader,
  name myGroupLeader,
  alive myGroupLeader,
  typeOf myGroupLeader,
  getUnitLoadout myGroupLeader,
  getAllHitPointsDamage myGroupLeader,
  animationState myGroupLeader,
  group myGroupLeader,
  damage myGroupLeader,
  getStamina myGroupLeader
];
[<NULL-object>,[0,0,0],"Error: No vehicle",false,"",[],[],"",<NULL-group>,0,<null>]
PS getStamina походу не number возвращает :D очень странно ведут с ней другие команды:
diag_log [
  getStamina objNull,
  getStamina objNull isEqualType true,
  getStamina objNull isEqualType 1,
  isNull getStamina objNull,
  isNull getStamina objNull isEqualType true,
  isNull getStamina objNull isEqualType 1,
  str getStamina objNull,
  str isNull getStamina objNull
]
[<null>,bool,bool,bool,bool,bool,string,string]

Edited by vlad333000, 28 February 2018 - 04:25.

  • 1

#1184 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 28 February 2018 - 04:41

Но чтобы все это дело проворачивать, желательно иметь менеджер групп(по крайней мере, когда писал для своего мода ИИ, - добавлял такой менджер себе, для пересоздания групп, патрулей и т.д. и т.п. с таймерами респавна, логами - сколько живых ну в целом понятно думаю)

Есть небольшая разница между подобной вещью и коротким сценарием, в первом (вашем) мало что определено, во втором (инициатора сей затеи) - все строго
Может почти 8 минут мало? (Убил я их примерно на 50 секунде естественным путем - расстреляв)
grps = [grp1, grp2];
onEachFrame {
  hintSilent str [
    time,
    grps,
    grp1,
    grp2,
    leader grp1,
    leader grp2
  ];
};

Edited by vlad333000, 28 February 2018 - 04:42.

  • 0

#1185 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

  • Пользователи
  • 189 posts
  • Откуда:SPB

Posted 28 February 2018 - 04:47


Может почти 8 минут мало?

Попробуй группу создать так -

_side       =    WEST;
_group    =    createGroup [_side, true];

Arma 3 v1.67

Вроде 1 минуты должно хватить.

 

P.S. кстати забавно, - да, группа не удаляется - 10 минут прождал, 100% раньше удалялось и без него. Видимо добавили флажок, и нынче(с 1.67) автоудаление группы только с флагом true работает.


Edited by NoNameUltima, 28 February 2018 - 04:57.

  • 0

#1186 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 28 February 2018 - 13:46

Если группа пустая - переменной не будет. - Будет nil

_side = WEST;
_group = createGroup [_side, true];

Все же протестировал и как я ожидал ничего подобного:

Переменная как существовала, так и существует
grp1 = createGroup [WEST, true];
grp2 = createGroup [EAST, true];
grps = [grp1, grp2]; 
onEachFrame { 
  hintSilent str [ 
    time, 
    grps, 
    grp1, 
    grp2, 
    leader grp1, 
    leader grp2 
  ]; 
};

Edited by vlad333000, 28 February 2018 - 13:51.

  • 0

#1187 OFFLINE   Ego_Brain

Ego_Brain

    Ефрейтор

  • Пользователи
  • 49 posts
  • Откуда:Холмск

Posted 04 March 2018 - 14:09

Всем привет!

В собственный аддон (myaddon) поместили звуковые файлы .ogg и .wss (Sounds.pbo).

Как из скрипта обратится к звуковому файлу, какой должен быть путь?

Как воспроизвести звук, если файл находится в папке с миссией я знаю, а как из собственного аддона не понятно.


  • 0

#1188 OFFLINE   NoNameUltima

NoNameUltima

    Сержант

  • Пользователи
  • 189 posts
  • Откуда:SPB

Posted 04 March 2018 - 14:17

Ego_Brain,

 

x\addons\имя_аддона\путь_к_файл_в_аддоне\имя_файла.ogg

в аддоне кстати есть файл
$PREFIX$
в котором указан путь к аддону
x\addons\имя_аддона


Edited by NoNameUltima, 04 March 2018 - 14:18.

  • 0

#1189 OFFLINE   Ego_Brain

Ego_Brain

    Ефрейтор

  • Пользователи
  • 49 posts
  • Откуда:Холмск

Posted 04 March 2018 - 14:20

Ego_Brain,

 

x\addons\имя_аддона\путь_к_файл_в_аддоне\имя_файла.ogg

в аддоне кстати есть файл
$PREFIX$
в котором указан путь к аддону
x\addons\имя_аддона

@MyAddon\AddonName\Sounds\sound.ogg так? Как то странно, у меня же нет там каталога AddonName.

Можешь на конкретном примере?


  • 0

#1190 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 04 March 2018 - 16:55

 

P.S. кстати забавно, - да, группа не удаляется - 10 минут прождал, 100% раньше удалялось и без него. Видимо добавили флажок, и нынче(с 1.67) автоудаление группы только с флагом true работает.

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

 

Но это как вероятный вариант.


  • 0

#1191 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 04 March 2018 - 17:03

 

Если группа пустая - переменной не будет. - Будет nil

_side = WEST;
_group = createGroup [_side, true];

Все же протестировал и как я ожидал ничего подобного:

Переменная как существовала, так и существует
grp1 = createGroup [WEST, true];
grp2 = createGroup [EAST, true];
grps = [grp1, grp2]; 
onEachFrame { 
  hintSilent str [ 
    time, 
    grps, 
    grp1, 
    grp2, 
    leader grp1, 
    leader grp2 
  ]; 
};

 

Ни чего удивительного, null, objNull, grpNull, итд, это совсем не nil, а вполне себе значения.

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


Edited by SteelRat, 04 March 2018 - 17:07.

  • 0

#1192 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 02 May 2018 - 20:02

всем привет!банальный вопрос что мог забыть указать если после запуска сервера  не работает 3-лицо?P,s в профиле везде значение 1.сервер на линуске

difficulty="custom";
class DifficultyPresets
{
    class CustomDifficulty
    {
        class Options
        {
            reducedDamage=0;
            groupIndicators=1;
            friendlyTags=0;
            enemyTags=0;
            detectedMines=0;
            commands=0;
            waypoints=1;
            weaponInfo=1;
            stanceIndicator=1;
            staminaBar=1;
            weaponCrosshair=1;
            visionAid=0;
            thirdPersonView=1;
            cameraShake=1;
            scoreTable=1;
            deathMessages=1;
            vonID=1;
            mapContent=0;
            autoReport=0;
            multipleSaves=0;
        };
        aiLevelPreset=3;
        class CustomAILevel
        {
            skillAI=0.0099999998;
            precisionAI=0.55000001;
        };
    };
};
sceneComplexity=400000;
shadowZDistance=100;
viewDistance=1000;
preferredObjectViewDistance=800;
terrainGrid=25;
volumeCD=10;
volumeFX=10;
volumeSpeech=10;
volumeVoN=10;
singleVoice=0;
maxSamplesPlayed=96;
vonRecThreshold=0.029999999;

class Missions
{
    class Mission_1
    {
        template = "ывыф.Malden";
        difficulty = "custom";
    };


};

Edited by lopster102, 02 May 2018 - 20:05.

  • 0

#1193 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 02 May 2018 - 21:59

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


Edited by vlad333000, 02 May 2018 - 22:49.

  • 0

#1194 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 02 May 2018 - 23:47

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

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

P>S в браузере  серверов пишет что Custom сложность

вот так сейчас

-profiles=/home/armaman/steamcmd/arma3/cfg" -name=default

в папке cfg лежит папка  default а  в ней уже сама профиль  default.Arma3Profile

 

 

мб так надо?

 

 "./default -name=default" -port=2302 "-config=/home/armaman/steamcmd/arma3/cfg/TADST_config.cfg" "-cfg=/home/armaman/steamcmd/arma3/cfg/TADST_basic.cfg" "-profiles=/home/armaman/steamcmd/arma3/cfg" -filePatching -autoInit -enableHT


Edited by lopster102, 04 May 2018 - 12:52.

  • 0

#1195 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 06 May 2018 - 20:04

вот картиночка

Attached Files


  • 0

#1196 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 18 May 2018 - 21:47

здрв!пинг игрока узнать ?!скиньте пожалуйста кто юзал названия команды?


  • 0

#1197 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 18 May 2018 - 23:10

lopster102, командами - никак, есть вариант только с использованием расширений. И вообще это нигде не нужно (Разве что выводить где-нибудь его для наглядности, но без этого можно жить)

Edited by vlad333000, 18 May 2018 - 23:11.

  • 0

#1198 OFFLINE   TopDen

TopDen

    Мл. лейтенант

  • Пользователи
  • 803 posts
  • Откуда:Москва
  • Отряд:[АТР] АРМАТОП

Posted 19 May 2018 - 02:07

Парни, помогите в качестве примера как сделать addaction (если это реализовано этой командой)  игроку, чтобы нужное действие не искать скролом мыши в меню, а сделать его появление при наведение на "цель" на определенном расстояни? И чтоб его не было в меню. Примерно так, как работает бисовский ревайв, когда игрок подходит к игроку и нажатием кнопки совершает действие на "цели". Или может у кого-то есть готовый пример .


  • 0

#1199 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 19 May 2018 - 02:13

lopster102, командами - никак, есть вариант только с использованием расширений. И вообще это нигде не нужно (Разве что выводить где-нибудь его для наглядности, но без этого можно жить)

ну так то да


  • 0

#1200 OFFLINE   lopster102

lopster102

    Ст.сержант

  • Пользователи
  • 267 posts
  • Откуда:mscw

Posted 19 May 2018 - 02:23

Парни, помогите в качестве примера как сделать addaction (если это реализовано этой командой)  игроку, чтобы нужное действие не искать скролом мыши в меню, а сделать его появление при наведение на "цель" на определенном расстояни? И чтоб его не было в меню. Примерно так, как работает бисовский ревайв, когда игрок подходит к игроку и нажатием кнопки совершает действие на "цели". Или может у кого-то есть готовый пример .

чисто акшеном можно через условия  !isnil{cursorobject getvariable ["состояние ранения",nil]} сделать(когда наведешь на раненого появится акшен тока опять же в параметрах укажи чтобы он вылезал на центр экрана) а как в бисовском сделано акшене почитай функциию BIS_fnc_reviveOnState там вроде можно найти как накладывают акшен твой из бисовской медецины


  • 0




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