WarCraft 3: Заключение союзов

База примеров на GUI

Заключение союзов

Данная наработка может пригодиться для карт любого жанра. Будь это стандартные сражения, RPG, арены или мини-игры. Позволяет заключать\разрывать союзы между игроками в течение игры.
варианты союзов:
  1. Через написание в чат.
  2. Через диалоговое окно.
И так, подробнее о системках:

Через написание в чат.

Импорт в карту не вызовет никаких трудностей, для этого нужно скопировать всего один триггер в вашу карту, не забыв включить автосоздание новых переменных в настройках вашего редактора.
Наработка использует всего две глобальные перменные:
AlianceNumber - тип _целочисленная переменная в которую мы будем записывать номер игрока, с которым бы мы хотели заключить или разорвать союз._
Ally[] - тип логическая, массив, будет хранить всю информацию, необходимую для работы системы, так сказать её ядро.
На изображении ниже в событии указан все игроки, конечно же их должно быть ровно, столько, сколько на карте игроков, которым доступна система.
Как это работает:
При вводе в чат команды, в переменную AlianceNumber заносится номер игрока, с которым мы хотим заключить или разорвать союз. Каждый игрок имеет в распоряжении 12 ячеек в переменной Ally[], отвечающей за отношение игрока к другим. В условиях прописаны позиции не реагирующие на попытки игрока заключить\разорвать союз с самим собой.
Конечно можно было бы использовать для каждого игрока свою переменную Ally, но тогда их нужно было бы делать до 12 штук. А это значит, либо 12 триггеров. Либо один огромный убер-триггер. Все эти неудобства решаются внедрением в расчет ячеек массивной переменной Ally[] поправочного числа, в карте примере это 50.
Это может быть, конечно любое число, но обязательно больше, чем число игроков, которым доступна система. Для чего?
Чтобы ограничить ячейки, или точнее сказать зарезервировать группы ячеек для каждого игрока. В противном случае ячейки будут перезаписаны данными других игроков, что приведет к некорректной работе системы.
В карте примере красному игроку принадлежат ячейки переменной Ally[] под номерами с 51 по 62.
Синему с 101 по 112. И так далее...
После введения в чат команды о предложении союза, игроку отправляется сообщение, информирующее об возможности заключения союза с другим игроком. При введении другим игроком аналогичной команды, содержащей номер нужного игрока, система заключает союз между ними, информируя об этом всех игроков.
Особо важное ы системе это защита от введения игроком буквы вместо цифры. Ведь если игрок случайно введет букву вместо цифры то будет фатал.

Ссылка на скачивание примера ( xgm.guru/files/100/94052/Aspects_of_Alliances.w3x )
Автор: Sansaney
Добавил пример: God_of_light
Отредактировал: Sergant1000

Через диалоговое окно.

Наработка использует всего одну переменную:
AllyN[] - тип целочисленная, массив, будет хранить номер игрока которому шлем запрос.
Ну и сам пример будет состоять из 2х триггеров:
  1. отвечает за ввод игроком команды на предложение союза или объявления вара.
  1. ну и соответственно само диалоговое окно.
Как это работает:
Игрок вводит команду на союз с номером игрока, в переменную под номером игрока которому шлем записываем номер предложившего игрока. Далее создается диалоговое окно с сообщением что такойто игрок хочет с вами союза и две кнопки. Согласиться или отвергнуть. И сообщение самому игроку что он отправил запрос такому то игроку.
При сошлашении игрока, всем сообщяется что такой то и токой то игроки заключили союз. Если игрок отказывается то предложивцему игроку отсылается сообщение об отказе.
Ну а если игрок хочет вар то он пишет в чат команду с номером игрока и сэтого момента они враги, ну и соответственно сообщение всем что кто то с кем то враги.
Система так же содержит защиту от неверно введенного символа.
Ссылка на скачивание примера ( xgm.guru/files/100/94052/Aspects_of_Alliances2.w3x )

Просмотров: 5 213

Sergant1000 #1 - 5 лет назад 0
Кто добавил статью, ответьте. Надо добавить защиту от введения игроками символов не входящих в перечисление между 1 и 12. иначе будут фаталы.
Добавь еще пример Альянса с диалоговым окном, вот файлы. от туда и возьми защиту.
прикреплены файлы
Sergant1000 #2 - 4 года назад 0
АУУУ!!!!!!!! СОЗДАТЕЛЬ ТЕМЫ, ОТЗОВИСЬ!!!!!!!
Ledon #3 - 4 года назад 1
Sergant1000, защита от введения не тех чисел - это элементарно: к тем условиям, которые уже есть добавляешь ещё два условия (прикрепляю файл). Там стоят цифры (4,4) - в твоём случае они могут быть другими - зависит от длинны вводимого сообщения.
Кстати, не я автор статьи, если что, просто помочь решил :)
прикреплены файлы
Sergant1000 #4 - 4 года назад 0
Ledon, в первом сообщении я выложил систему защиты и если присмотреться то видно что моя от твоей ничем ни отличается.
Ledon #5 - 4 года назад 0
Sergant1000, я извиняюсь. Я не правильно понял твоё сообщение. Мне показалось, что ты хочешь, чтобы тебе кто-то помог сделать защиту. А ты просто пытался сказать автору, чтобы он дополнил статью. Глупо как-то вышло :)
Sergant1000 #6 - 4 года назад 0
Все отредактировал первый пример и добавил еще один.