Jump to content


Photo

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

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

  • Please log in to reply
1486 replies to this topic

#81 OFFLINE   Pe4eneg

Pe4eneg

    Рядовой

  • Пользователи
  • 17 posts
  • Откуда:челябинск

Posted 26 September 2013 - 14:06

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

 Я портировал его в 1.0 версию но кроме оружия там нечего купить нельзя. Так как вся техника здесь уже переименована а самому переписывать. Не знаю как да и парится не собираюсь.


  • 0

#82 OFFLINE   VIRrusR

VIRrusR

    Рядовой

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

Posted 12 October 2013 - 22:59

Помогите с такой ситуацией, пожалуйста: есть отделение солдат, есть нейтральная (пустая) машина. Требуется чтобы один из бойцов отделения занял место водителя (решено использованием команды MoveInDriver для одного из бойцов по достижении вейтпоинта) и отправился по заданию независимо от прочих членов отряда. Проще говоря, нужно либо расформировать подразделение, либо вывести одного бойца из его состава. Как?


  • 0

#83 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

  • Модераторы
  • 1035 posts

Posted 12 October 2013 - 23:35

VIRrusR

[soldier] join grpNull;

  • 0

#84 OFFLINE   VIRrusR

VIRrusR

    Рядовой

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

Posted 12 October 2013 - 23:52

HarryWorner, ага, пасибки! Только что накопал это же решение. Но теперь новая проблема - солдатик снова следует за командиром группы (автоприсоединение к старшему по званию?),а мне нужно, чтобы он сел в машину и отправился в самостоятельное путешествие. Как сделать, чтобы он не возвращался в строй, а сел в машину и уехал? И, кстати, в машину то я его посадить могу, а вот как вейпоинты дальше раскидать?! Машина то пустой объект! Помогите разобраться - как мне обращаться к своему солдатику после отделения от группы и как ему вейпоинты дальше назначать (собственно именно это и интересует, ибо прописывать все его дальнейшие действия только и исключительно скриптами - мне знаний не хватает).


  • 0

#85 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

  • Модераторы
  • 1035 posts

Posted 13 October 2013 - 11:28

VIRrusR, написал пример, но для этого использовал внешний скрипт который назвал NewWaypoints.sqf чтобы создать вейпоинты динамически. Откроете блокнотом и посмотрите что и как. Все описано с помощью комментариев.

 

 

 

Машина то пустой объект!

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

Attached Files


  • 0

#86 OFFLINE   VIRrusR

VIRrusR

    Рядовой

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

Posted 14 October 2013 - 19:54

HarryWorner, ещё раз спасибо! :) Попробую разобраться... 

:db:  :Koshechka_08:  :crazy: Ур-р-р-р-р-рря-я-а-а-а-а-а-а-а!!! Получилось! Не, ну Вы прикиньте, а? Получилось!!! :russian:

Как я и предполагал проблема была в непонимании синтаксиса скрипта!

Вобщем, поматюкавшись и упёршись рогом в грунт, отправился переводить каждое слово из примера, предложенного уважаемым HarryWorner`ом, за что ему ещё раз огромаднейшее спасибище! Не вдаваясь в подробности вписал вот это прямо в поле "При активации" вейпоинта:

 

Во чего оно надо было!
И всё поехало! Отделение солдат подбегает к грузовику и убегает дальше, оставив солдата Джо, который садится за руль и едет к наблюдающему за всем этим игроку VIRrusR. :Koshechka_08:
P.S. Поубирал паузы и вывод строкового значения  - так и не понял что оно выводит? Численность подразделения Джо? Очень трудно разбираться - описание команд кругом на английском... И надо всё же разбираться с синтаксисом - без этого, видимо, никак. 
 
P.P.S. Недостаток метода в том, что в дальнейшем придётся обращаться к Джо только и исключительно через скрипты - редактор не отображает его вейпоинты вообще никак  :sorry: , т.е. всякий раз, когда Вы захотите чтобы Джо куда то отправился, Вам придётся дописывать конструкцию _wp[_x]=JoeGRP addWaypoint [] , что крайне неудобно, если вписывать скрипт прямо в условие "при активации" вейпоинта в редакторе - значит без внешних скриптов не обойтись, либо использовать конструкцию для одного-двух действий.

Edited by VIRrusR, 14 October 2013 - 19:59.

  • 0

#87 OFFLINE   Rain^^

Rain^^

    Рядовой

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

Posted 18 October 2013 - 12:42

Подскажите как сделать что бы скрипт(ы) запускался на определённую клавишу?

 

почему то пример из biwiki displaySetEventHandler не работает, возможно я что-то делаю не так.

 

Init.sqf

keyspressed = compile preprocessFile "keyspressed.sqf";_display = findDisplay 46;_display displaySetEventHandler ["KeyDown","_this call keyspressed"];

keyspressed.sqf

private['_handled'];_handled = false;switch (_this select 1) do{	//F key	case 33: 	{		// code here		_handled = true;	};};_handled;

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

(FindDisplay 46) displayAddEventHandler ["KeyDown","hint str _this"];

  • 0

#88 OFFLINE   badger

badger

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:www.our-army.su

Posted 19 October 2013 - 13:47

Rain^^, я тоже долго пробовал запустить это в АА3, в итоге мне кажется что БИСы сломали эту функцию как например работу с биноклями. Лучше поискать другой вариант реализации. Например добавлять экшен с хоткеем.


  • 0

#89 OFFLINE   СТРИТЦЕФЕР

СТРИТЦЕФЕР

    Рядовой

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

Posted 29 October 2013 - 11:40

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

Другими словами как отключить "сыкливость" ботов?? :D

Подскажите пожалуйста))....


Edited by СТРИТЦЕФЕР, 29 October 2013 - 11:47.

  • 0

#90 OFFLINE   WAF3R

WAF3R

    Майор

  • ex. Администратор
  • 2234 posts

Posted 29 October 2013 - 13:16

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


  • 0

#91 OFFLINE   СТРИТЦЕФЕР

СТРИТЦЕФЕР

    Рядовой

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

Posted 29 October 2013 - 16:31

Отлично спасибо! вечером опробую


  • 0

#92 OFFLINE   Nkey

Nkey

    Старшина

  • Пользователи
  • 413 posts
  • Откуда:Минск

Posted 30 October 2013 - 01:09

keyspressed

это должен быть не файл, а название функции


  • 0

#93 OFFLINE   DmitRich

DmitRich

    Прапорщик

  • Пользователи
  • 562 posts
  • Откуда:Санкт-Петербург

Posted 10 February 2014 - 15:24

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

 

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


Edited by DmitRich, 10 February 2014 - 15:26.

  • 0

#94 OFFLINE   hipp0cat

hipp0cat

    Ефрейтор

  • Пользователи
  • 82 posts
  • Отряд:OSA

Posted 10 February 2014 - 19:25

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


  • 1

#95 OFFLINE   DmitRich

DmitRich

    Прапорщик

  • Пользователи
  • 562 posts
  • Откуда:Санкт-Петербург

Posted 10 February 2014 - 21:37

вызывается через int.sqf

v1 execVM "scripts\vehresp.sqf";
v2 execVM "scripts\vehresp.sqf";
v3 execVM "scripts\vehresp.sqf"

где v1, v2, v3 имя техники, которая должна спавнится на том же месте, где стояла после  ее уничтожения.

 

Можно ли сделать чтоб скрипт работал не у всех клиентов, а только у сервера?


  • 0

#96 OFFLINE   hipp0cat

hipp0cat

    Ефрейтор

  • Пользователи
  • 82 posts
  • Отряд:OSA

Posted 10 February 2014 - 22:04

Ну тогда все понятно. Init.sqf отрабатывает у всех игроков при заходе на сервер. Чтобы скрипт работал только на сервере, попробуй сделать так:



if (isServer) then
{
  v1 execVM "scripts\vehresp.sqf";
  v2 execVM "scripts\vehresp.sqf";
  v3 execVM "scripts\vehresp.sqf";
};

Также хочу заметить, что в Арме 3 есть специальный модуль (F7) для респавна техники (находится в категории Multiplayer). Вероятно, использовать его будет эффективнее, чем самописные скрипты.


Edited by hipp0cat, 10 February 2014 - 22:04.

  • 1

#97 OFFLINE   DmitRich

DmitRich

    Прапорщик

  • Пользователи
  • 562 posts
  • Откуда:Санкт-Петербург

Posted 13 February 2014 - 00:19

hipp0cat, проверил, теперь все правильно работает, с модулем тоже попробую разобраться, огромное спасибо! 

 

И еще одна проблемка: на моем полигоне стоит скрипт изменения погоды и времени, но опять же все это меняется у клиента, возможно ли сделать, так чтоб изменения происходили на сервере (для всех)?

Attached File  test.png   275.38KB   5 downloads


Edited by DmitRich, 13 February 2014 - 01:34.

  • 0

#98 OFFLINE   Blender

Blender

    Прапорщик

  • Администраторы
  • 615 posts
  • Откуда:Torrevieja, España

Posted 13 February 2014 - 07:08

И еще одна проблемка: на моем полигоне стоит скрипт изменения погоды и времени, но опять же все это меняется у клиента, возможно ли сделать, так чтоб изменения происходили на сервере (для всех)?
attachicon.giftest.png


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

"var_changeFog" addPublicVariableEventHandler {
	_array = _this select 1;
	_time = _array select 0;
	_fog = _array select 1;
	_time setFog _fog
};

Далее остается только передать параметры:

var_changeFog = [5, 0.6];
 publicVariable "var_changeFog";

Т.е. в данном случае - у всех клиентов выполнится команда 5 setFog 0.6


  • 1

#99 OFFLINE   DmitRich

DmitRich

    Прапорщик

  • Пользователи
  • 562 posts
  • Откуда:Санкт-Петербург

Posted 13 February 2014 - 13:15

Blender,спасибо, как я понял нужно создавать отдельный скрипт и активировать через init.sqf


  • 0

#100 OFFLINE   Blender

Blender

    Прапорщик

  • Администраторы
  • 615 posts
  • Откуда:Torrevieja, España

Posted 13 February 2014 - 15:23

Создавать ничего уже не надо. Все что нужно - я написал.

Сам обработчик ("var_changeFog" addPublicVariableEv...) положить можно и в init.sqf.

А откуда выполнять - это уже от ваших желаний.


  • 1




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