Здание производит ограниченное кол-во юнитов
|
|
sumert | Дата: Четверг, 02 Апреля 2015, 07:45:07 | Сообщение # 1 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Нужна помощь с алгоритмом. Хочу попробовать сделать так, чтобы здание производило ограниченное кол-во юнитов. Например, казармы могут создать только 5 пехотинцев. Когда один из них умирает, соответственно казарма делает еще одного, чтобы было 5. Сложность в том, что казармы могут быть построены неограниченное кол-во раз. Посоветуйте рациональный и просто способ, как это сделать. У меня одна, но довольно глупая идея. Сделать создание юнитов через заклинание. Скажем, у здания 25 маны, каждое создание стоит 5 маны. Мана не восстанавливается. При создании юнита, заносить его в хеш-таблицу, и само здание, и через таймер периодически проверять, жив он или нет. Если мертв, добавить 5 маны зданию.
|
|
|
|
Волчачка | Дата: Четверг, 02 Апреля 2015, 14:53:42 | Сообщение # 2 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата sumert ( ) Нужна помощь с алгоритмом. Хочу попробовать сделать так, чтобы здание производило ограниченное кол-во юнитов. Например, казармы могут создать только 5 пехотинцев. Когда один из них умирает, соответственно казарма делает еще одного, чтобы было 5. Хочешь по 5 юнитов на казарму :D? UnitCustomValue: Массив [CustomValue] = {1..2..3..4..5}; Лучше реализовать методом покупки - так легче блокировать(т.е. запрещать покупку юнита для данного здания):D И да устанавливаем пехотинцам CustomValue CustomValue от казарм, чтобы их различать.
Сообщение отредактировал Волчачка - Четверг, 02 Апреля 2015, 14:58:38 |
|
|
|
sumert | Дата: Четверг, 02 Апреля 2015, 15:19:48 | Сообщение # 3 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Волчачка, а если это стратегия и казарм можно строить сколько хочешь? И не один игрок это будет делать.
|
|
|
|
Волчачка | Дата: Четверг, 02 Апреля 2015, 15:42:17 | Сообщение # 4 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| sumert, лимит пищи же не даст нанять больше пехотагеров)))000 Добавлено (02 Апреля 2015, 15:42:17) --------------------------------------------- Хотя можешь замутить второй массив на каждого игрока, в которым будет записываться общее кол-во пехотинцев; ИЛИ поставить лимит на казармы в В игроке макс юнитов такого типа КАЗАРМЫ 9 штук к примеру)))0
|
|
|
|
sumert | Дата: Четверг, 02 Апреля 2015, 16:02:30 | Сообщение # 5 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Волчачка нет. Мне так не надо. Пехотинцы будут стоить 0 еды. У игроков будет ограничение на постройку зданий. И конкретно надо, чтобы казарма произвела макисмум лишь 5 пехотинцев. Никаких других лимитов не надо. Для меня это лишнее. В принципе можно попробовать с массивами... Есть массив зданий, массив производимых юнитов и массив принадлежности юнитов к зданиям. Потом проверять, сколько юнитов определенной принадлежности и в зависимости от этого запрещать казарме производить или нет.
|
|
|
|
Волчачка | Дата: Четверг, 02 Апреля 2015, 19:43:14 | Сообщение # 6 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата sumert ( ) Волчачка нет. Мне так не надо. Пехотинцы будут стоить 0 еды. У игроков будет ограничение на постройку зданий. И конкретно надо, чтобы казарма произвела макисмум лишь 5 пехотинцев. Никаких других лимитов не надо. Для меня это лишнее. В принципе можно попробовать с массивами... Есть массив зданий, массив производимых юнитов и массив принадлежности юнитов к зданиям. Потом проверять, сколько юнитов определенной принадлежности и в зависимости от этого запрещать казарме производить или нет. Там достаточно одного массива и просто можно использовать Custom Value; Эта функа просто будет хранить число от 0 до max_array_size; Ну можешь юзать два, если тебе надо от 0 до 8090) F1,F2 = 0 B1 =0, B2 = 1; сдыхает F1 M[F1.CV] = M[F1.CV] - 1 а если казарама создаёт M[B1.CV] = M[B1.CV] + 1 F1.CV = B1.CV Лалка ты)))
Сообщение отредактировал Волчачка - Четверг, 02 Апреля 2015, 19:45:14 |
|
|
|
sumert | Дата: Четверг, 02 Апреля 2015, 20:16:47 | Сообщение # 7 |
10 уровень
Группа: Проверенные
Сообщений: 2330
Награды: 2
Репутация: 1094
Блокировки:
| Волчачка, ты ведешь себя глупова-то. Как один массив будет отслеживать все казармы и всех юнитов, которые они производят? А потом еще и при смерти юнита точно определит, к каой казарме этот умерший принадлежал
|
|
|
|
Волчачка | Дата: Четверг, 02 Апреля 2015, 20:23:24 | Сообщение # 8 |
САЙТ УМЕР ППЦ
Группа: Проверенные
Сообщений: 1361
Награды: 0
Репутация: 2165
Блокировки:
| Цитата sumert ( ) Волчачка, ты ведешь себя глупова-то. Как один массив будет отслеживать все казармы и всех юнитов, которые они производят? А потом еще и при смерти юнита точно определит, к каой казарме этот умерший принадлежал Я говорю о Custom Value он же Get\SetUnitUserData() - полезная вещь для такой операции, которую ты хочешь провернуть. Допустим 1 казарма имеет 0 соответственно пехотагеры будет создаваться и им будет устанавливаться тот же индекс казарма два имеет индекс 1 мы им тоже будет давать индекс если они построятся.
Barrack{0}F{00000} >>Barrack{1}F{11111}>>n+1 Даже индекс можно при смерти отслеживать)))00
|
|
|
|
Svanir2 | Дата: Пятница, 10 Апреля 2015, 08:14:30 | Сообщение # 9 |
2 уровень
Группа: Пользователи
Сообщений: 32
Награды: 0
Репутация: 2
Блокировки:
| Скачай Unit Indexer с хива и делай вот такие вот триггеры: Создаём переменную типа целочисленная(integer) с массивом. Назовём её Х. И ещё одну переменную типа Боевая еденица с массивом. Её назовём Y. Далее первый триггер: Событие: Завершает подготовку боевой еденицы Условие: Подготовленный юнит = Пехотинец; Переключающий юнит = Казарма Действие: Устаовить перемнную Х[обычное значение юнита(Переключающий юнит)] = Арифметика (Х[обычное значение юнита(Переключающий юнит)] + 1); Установить переменную Y[обычное значение юнита (подготовленный юнит)] = Переключающий юнит; Если Х[обычное значение юнита(Переключающий юнит)] = 5, то поставить переключающего юнита на паузу (ну это к примеру, как запретить обучение). И второй: Событие: Умирает Условие: Умирающий юнит = Пехотинец Действие: Установить переменную Х[обычное значение юнита(Y[обычное значение юнита(умирающий юнит)] = Арифметика (Х[обычное значение юнита(Y[обычное значение юнита(умирающий юнит)] - 1); Если Х[обычное значение юнита(Y[обычное значение юнита(умирающий юнит)] = 0, то снять Переключающий юнит с паузы (если ты воспользовался такой методикой).Добавлено (10 Апреля 2015, 08:14:30) --------------------------------------------- Упс, ошибся, в последней строчке будет: то снять Y[обычное значение юнита (умирающий юнит)] с паузы. И простите пожалуйста за оффтоп. но как тут редактировать сообщения???
|
|
|
|