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


Фотография

Изменение цвета сектора при его захвате


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

#1 OFFLINE   susamin

susamin

    Сержант

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

Отправлено 29 April 2015 - 19:59

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

Создаю миссию, в которой необходимо захватить город или аэропорт или еще какую площадь. Проблем не возникает миссия почти создана, на 99,9% без скриптов, за счет инструментов редактора, проще сказать играбельно. Но хотелось бы внести некоторые удобства. Нужно разделить захватываемую площадь на сектора (например 50 на 50 метров). Далее идут условия для этих секторов:
1. при старте миссии эти сектора должны быть закрашены красным цветом;
2. до того момента пока я не появился в секторе он всегда должен быть красный и не должен менять свой цвет, даже если в секторе нет врага;
3. после уничтожения всех единиц врага, сектор перекрашивается в зеленый (синий, серобурокозявчетый все равно) цвет;
4. если в секторе появляется враг, он опять перекрашивается в красный цвет.

Как то так.

Мне кажется логика проста, но как осуществить это в коде не знаю, точнее не знаю какие скриптовые команды ставить, и читать про каждую не реально, их почти 2000 штук и многие не переведены с инглиша:
Если я в секторе_n, то
если враг в секторе_n, то сектор_n красный, иначе зеленый,
иначе сектор_n красный.
Только присутствует ощущение, что при большом количестве таких проверок (скажем около 10 штук, 10 секторов) комп начнет изрядно тормозить. правда по этой структуре получается что если я выйду из сектора, то он опять станет красным, а этого быть не должно.

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



Не получилось сделать так как на видео, что то не работает.

ЗЫ: Если есть страничка со стеной текста (пусть на инглише) или видео по данной теме, то прошу Вас уважаемые форумчане-знатоки скинуть ссыль, буду разбираться сам, учить меня и писать мне скрипт мне не обязательно. Но если вдруг выложите скрипт не буду копировать его бездумно и обязательно разложу его по полочкам и вникну.


Сообщение отредактировал susamin: 30 April 2015 - 13:26

  • 0

#2 OFFLINE   susamin

susamin

    Сержант

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

Отправлено 30 April 2015 - 15:18

Товарищи нарыл по моей теме кое-что.  Играем за красных. Создаем красный квадратный марке 50*50 метров с названием sector1.

Создаем два триггера, которые совпадают по размерам с маркером.

 

--- RedSide1 Первый триггер назовем RedSide1, он один раз проверяет условие присутствия красных в триггере и если условие выполнено, в блоке «активация» присваиваем какой-нить переменной значение true например RedSideHere1 = true.

 

--- BlueSide1 Создаем еще один триггер, назовем BlueSide1 с условием повторяющейся проверки отсутствия синих в триггере. В блок «условие» вписываем переменную RedSideHere1, чтоб проверка условий триггера BlueSide1 началась только после того, как я войду в sector1. В блок «активация вписываем инструкцию "sector1" setMarkerColor "colorGreen"; в блок деактивация вписываем инструкцию "сector1" setMarkerColor "colorRed";.

 

По идее все четыре условия должны выполнятся:

1.при старте миссии эти сектора должны быть закрашены красным цветом; стоит красный маркер

2. до того момента пока я не появился в секторе он всегда должен быть красный и не должен менять свой цвет, даже если в секторе нет врага; пока переменной RedSideHere1 не присвоится значение True сектор так и останется красным, даже если условие "нет синих" выполнится.

3. после уничтожения всех единиц врага, сектор перекрашивается в зеленый цвет; условие синих нет выполнено, условие RedSideHere1 = true выполнено, если инструкция в блоке «активация» "sector1" setMarkerColor "colorGreen" написана грамотно, а судя по вики

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

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

4. если в секторе появляется враг, он опять перекрашивается в красный цвет. Условие «синих нет НЕ выполнено», а значит, срабатывает инструкция в блоке «деактивация» "сector1" setMarkerColor "colorRed";

 

Есть вопросы:

 --- по триггеру BlueSide1, при проверки условий какое условие будет проверено, то что в блоке «условие» или оба условия нет синих и блок «условие»? Может быть создать еще один триггер, который проверит отсутствие синих в триггере и присвоит переменной в блоке «активация» BlueSideDed1 значение True. Если условие триггера нарушается, то в поле деактивации переменной  BlueSideDed1 присваиваем значение False. И уже третий триггер, назовем sectorColor1 будет красить маркер в разные цвета и проверке переменных BlueSideDed1 and RedSideHere1.

--- второй вопрос по инструкциям "sector1" setMarkerColor "colorGreen"; "sector1" setMarkerColor "colorRed"; правильно написаны?

--- тритий вопрос Ваше мнение будет ли это работать, и что может быть не правильно, подводные камни, что подправить? Может это все можно упростить и забить код в один триггер? Пока времени нет проверить это в редакторе.

--- Если я создам таких 10 секторов, те 10 маркеров и 20 триггеров, а то и 30, будет ли существенная нагрузка на процессор  (интел i5 4690)?

 

Проверил, работает схема из трех триггеров, маркер меняет цвет по 4 условиям, которые были выставлены. Я конечно не программист, но схема из трех триггеров на один сектор, а их может быть до сотни на большой карте, мне кажется громоздкой, скорее всего можно упростить. Вот например проверку условия в триггере sectorColor1, где проверяются значения двух переменных, ведь можно сделать всего один на все 100 секторов, если использовать циклы и логические операторы, надо будет подумать на досуге как это сделать. На 100 секторов получается 100 переменных RedSideHereN и 100 переменных BlueSideDedN, скорее всего можно упростить с помощью массивов. Надо будет подумать. 

 

Форумчане-знатоки, если я замарачиваюсь и есть способ легче и проще прошу направьте меня в нужном направлении. 

 

Товарищи почему никто не отвечает, может я не понятно пишу или очень много пишу?


Сообщение отредактировал susamin: 30 April 2015 - 23:45

  • 0

#3 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 May 2015 - 19:48

 

Товарищи почему никто не отвечает, может я не понятно пишу или очень много пишу?

Вы не только много пишете, но у вас и самого не дурно получается).

Если так и продолжите, через месяц меня уму разуму будете учить.

Удачи.


  • 0

#4 OFFLINE   Sa-Matra

Sa-Matra

    Ефрейтор

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

Отправлено 02 May 2015 - 01:57

Прочитал всю стену текста, видя столько стараний в поиске решения, не могу отказать в помощи. Готов написать скриптовое решение, если ты сможешь показать мне конкретные примеры своих территорий для захвата. Я так понимаю ты хочешь задать прямоугольные территории A на B метров в такой-то позиции X и Y (выставлять их в редакторе маркером для удобства?), разбить их на квадраты, скажем 50х50 метров и дальше красить по мере прохождения по ним игроками или же врагами и моментальном смене цвета всех квадратов на захваченный игроком, если в этой территории не осталось врагов? Нужна ли синхронизация по сети?


  • 1




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