Здравствуйте!
Я хочу сделать Ферму, в которую можно будет погружать крестьян. Затем, каждые несколько секунд будет начисляться игроку золото. Так вот, я создал переменную Krestyanin, каждый раз изменяющуюся. Krestyanin = кол-во Крестьян, сидящих на ферме * 100. Начисление золота игроку = Krestyanin.
Мне кажется, что здесь неправильная применяемая способность.
Если что, я скинул карту.
Пожалуйста, помогите! Надеюсь, своим задаванием вопросов я никого не разозлил.

Принятый ответ

Vadikem, да.
Событие - юнит - Погружен в транспорт
условие - тип (trigger юнит) = твой тип
действие - переменная + 1 общее кол-во крестьян
действие - unit - set custom value кол-во крестьян в одной ферме (а отслеживается в разделе целочисленная с помощью Get unit custom value)
А вот отследить когда выходит, сложнее. Отслеживаем приказ.
Когда ты наводишь мышкой и кликаешь на иконку юнита, в этот момент срабатывает приказ unload. Инициатором этого приказа якобы является логово орков. И раб, на которого кликнули, выходит. Также можно отслеживать по приказу smart, но разницы никакой. Это равнозначный приказ.
Событие - юнит - отдал приказ (цель-объект)
условие - тип (trigger юнит) = логово
условие - приказ (order) = unload
условие = тип цели (target unit) = работник
Когда раб высаживается, у него срабатывает в этот момент приказ stop. С этой стороны не очень удобно отслеживать этот приказ, потому что в других ситуациях он может также выполнить стоп
Событие - юнит - отдал приказ (без цели)
условие - тип (trigger юнит) = рабочий
условие - приказ (order) = stop
Есть еще одно, когда ты попытаешься всех выгрузить из логова. У логово это например топорик "вернуться к работе", У транспортного суда, типа дирижабля или лодки, это по-другому называется выгрузить всех (unloadall), выгружает в определенную точку, поэтому событие там будет другим "отдал приказ (в точку)". Не знаю можно ли убрать эти способности. но недостаток в том, что нельзя отследить сколько юнитов ты выгрузил (только по приказу stop, см. выше). Именно в кол-ве, сколько юнитов в ферме. Есть идея использовать "юнит - custom value" для хранения кол-во юнитов в одной ферме, один заходит, плюсуем в кастум валуе этой фермы. Потом будешь выбирать все логова, которые есть у игрока, и вычислять сколько крестьян в каждом логове
Событие - юнит - отдал приказ (без цели)
условие - тип (trigger юнит) = логово
условие - приказ (order) = standdown
в этом файле заранее занес все события с приказами, и отслеживаю приказы. В нем пример того, что описал выше
вот то что нашел на форуме
2
16
7 лет назад
2
Отслеживай момент, когда крестьянин входит в ферму и увеличивай переменную на 1. Отслеживай момент, когда выходит - и уменьшай. Каждый N секунд давай 100*(переменная) золота игроку-владельцу фермы.
0
6
7 лет назад
0
Naadir, событие вхождения - погружён в транспорт?
Кстати, для того, что-бы крестьянин вошёл в ферму, я использовал способность логова орков.
2
27
7 лет назад
Отредактирован MpW
2
Vadikem, да.
Событие - юнит - Погружен в транспорт
условие - тип (trigger юнит) = твой тип
действие - переменная + 1 общее кол-во крестьян
действие - unit - set custom value кол-во крестьян в одной ферме (а отслеживается в разделе целочисленная с помощью Get unit custom value)
А вот отследить когда выходит, сложнее. Отслеживаем приказ.
Когда ты наводишь мышкой и кликаешь на иконку юнита, в этот момент срабатывает приказ unload. Инициатором этого приказа якобы является логово орков. И раб, на которого кликнули, выходит. Также можно отслеживать по приказу smart, но разницы никакой. Это равнозначный приказ.
Событие - юнит - отдал приказ (цель-объект)
условие - тип (trigger юнит) = логово
условие - приказ (order) = unload
условие = тип цели (target unit) = работник
Когда раб высаживается, у него срабатывает в этот момент приказ stop. С этой стороны не очень удобно отслеживать этот приказ, потому что в других ситуациях он может также выполнить стоп
Событие - юнит - отдал приказ (без цели)
условие - тип (trigger юнит) = рабочий
условие - приказ (order) = stop
Есть еще одно, когда ты попытаешься всех выгрузить из логова. У логово это например топорик "вернуться к работе", У транспортного суда, типа дирижабля или лодки, это по-другому называется выгрузить всех (unloadall), выгружает в определенную точку, поэтому событие там будет другим "отдал приказ (в точку)". Не знаю можно ли убрать эти способности. но недостаток в том, что нельзя отследить сколько юнитов ты выгрузил (только по приказу stop, см. выше). Именно в кол-ве, сколько юнитов в ферме. Есть идея использовать "юнит - custom value" для хранения кол-во юнитов в одной ферме, один заходит, плюсуем в кастум валуе этой фермы. Потом будешь выбирать все логова, которые есть у игрока, и вычислять сколько крестьян в каждом логове
Событие - юнит - отдал приказ (без цели)
условие - тип (trigger юнит) = логово
условие - приказ (order) = standdown
в этом файле заранее занес все события с приказами, и отслеживаю приказы. В нем пример того, что описал выше
вот то что нашел на форуме
Принятый ответ
0
6
7 лет назад
0
Steal nerves, спасибо, помогло. Кстати, ссылка на карту сломана. Как я могу сделать так, что-бы золота добавлялось столько, сколько времени наработал юнит. Ладно, мне сложно объяснить.
Например, Крестьянин зашёл на Ферму, затем, через пять секунд заходит другой Крестьянин, а за это время первый успевает наработать 10 золота.
Ладно, как я могу посчитать время, которое юнит сидит на Ферме? Затем, добавить золота: время * 10
0
27
7 лет назад
Отредактирован MpW
0
вот
Vadikem, правда сложнее реализовать, сам как-то задумываюсь. Может при каждом входе на ферму создавать таймер, запускать его на 9999к сек. (функцию таймером можно не вызывать, пишешь null), а когда он выходит, смотрим сколько у таймера истекло времени (истекшее время). У каждого юнита должен быть свой таймер. Но все это я как-то на коде, просто на гуи не знаю как-то создать таймеры, еще и хэш-таблицы. Может ребята на форуме получше подскажут Чето-то мне не кажется лучшим вариантом создавать кучу таймеров, и тем более сложно отследить при выгрузке всех юнитов.
Придумал как отследить при выгрузке всех юнитов, при входе на ферме запоминаем статус, можно установить юниту валуе = 1, что значит, находится на ферме. А когда выходит, отслеживаешь выход по приказу "стоп", проверяешь статус. Также использовать можно классификацию (подрывник и др)
Событие - юнит - отдал приказ (без цели)
условие - тип (trigger юнит) = рабочий
условие - СТАТУС рабочего (Get unit value = 1, или  классификация )
условие - приказ (order) = stop
р
Загруженные файлы
0
6
7 лет назад
Отредактирован Vadikem
0
Steal nerves, спасибо, у меня получилось. Я создал группу Status_Krestyanin, и добавлял в неё крестьян, работающих на ферме, и выгонял, если они не работают. Остаётся сделать эту переменную массивом, что-бы её имел каждый игрок.
Vadikem, сделал, остаётся каким-то образом считывать время, которое Крестьянин находится на ферме.
Что-то не работает здесь:
Мне нужно сделать то, что если какой-то юнит из группы Status_krestyanin имеет time 10, то time именно у этого юнита будет 0, и добавление золота игроку.
Как выбрать юнитов Крестьянин, при условии, что time_krestyanin => 10?
Загруженные файлы
0
27
7 лет назад
Отредактирован MpW
0
Vadikem, не будет лагать от такого? ладно вот сделал с таймерчиком
юзается хэш-таблица вместо кучи массивов, и перебора.
блин, кастум валуе забыл кое-где подправить
Хотелось бы все на 1 таймер, тогда как у тебя надо всех юнитов каждую секунду перебирать, и добавлять 1 секунду в переменную. У тебя там группа утекает, не удаляешь ее..Выбрать всех юнитов .... - выбор всех юнитов в группу
Мне нужно сделать то, что если какой-то юнит из группы Status_krestyanin имеет time 10, то time именно у этого юнита будет 0, и добавление золота игроку.
Как выбрать юнитов Крестьянин, при условии, что time_krestyanin => 10?
тогда таймер создавай не на 9999к сек., а на 10 сек. запускай. Блин тогда надо было при вызове таймера функцию указывать.Можно попробовать создать триггер, который каждые 10 сек. будет всех крестьянов перебирать
Почему не сделать наподобие светлячков в золотых шахтах?
Загруженные файлы
Чтобы оставить комментарий, пожалуйста, войдите на сайт.