можно дерево сделать из юнитов. Самое простое из всех возможных. Тогда можно отследить удары, урон. И сделать полную ИИ-иммитацию добычи через приказы. Отправил добывать, юнит пошел. Отслеживаем урон, и проверяем хп, когда наберет нужное, то сразу меняем аниму с дровами и отправляем обратно к хате. Или ищем ближайшее здание с абилкой приема, и отправляем туда юнита. Когда он туда приходит, сразу возвращаем аниму.
можно сделать декорацию камня, железа. Помню хотел сделать нестанд ресурс из декора. У раба есть абилка добычи леса, там автоматически добыча идет на дерево. Пробовал сделать из дерева камень, но нужно было сделать так чтобы абилка добычи леса перестала нацеливаться и работать на камень, иначе автоматически рабочие еще и камень собирать будут.
В настройках декорации некогда дерева я изменил тип цели, теперь дровосеки не смогли добывать камень. Сделал копию абилки добычи леса, только вместо нее - другие настройки, на камень (теперь мне не нужно через атаку добычу делать, как у юнитов, либо декор нельзя навести мышкой без спец абилки добычи. с этой абилкой достаточно ПКМ отправить). Отдал ее каменьщикам. Но не все идеально, не помню че там. Кажется, автоматическая добыча не работала (не уверен, мне не удалось проверить тк ресурс не добывался никак), короче абилка добычи леса работает только на дерево, иначе колотит бесконечно по камню, и рабу не начисляют то самое дерево, он просто никогда не отправиться сдавать его, тк нету у него дерева.
Отследить добычу дерева - нет таких событии. Есть только костыльные методы - через приказы. Приказами можно отследить отдачу приказов добычи и таргет-цели. Можно как способ автоматически сделать ИИ-имитацию добычи. Проблема в том, что у декора не отследить удары по камню. Кто ударил и прочее?
Есть решения это проверять хп декора, близость декора и юнита. Вот проблема - когда юнит начинает замахиваться.
Самый просто способ - это не менять настройки камня. Пусть камень считают деревом. Просто попробовать перенацеливаться приказами. Если дровосек получает приказ добычи камня, то ищем ему дерево и перебиваем текущий приказ. Аналогично, с каменьщиками. Проблема отследить получение этого дерева, чтобы вместо него камень был. Можно просто событием проверять получение дерева, и подход каменьщика к зданию. Можно просто не давать каменьщику подходить к пункту приема.
TimerGetRemaining(timer)
надо прописывать таймер, а ты целое число Integer. поэтому прога и ругает, что вместо таймера ты число пизаешь
LoadInteger(Hash,GetHandleId(target),1)
LoadTimerHandle(Hash,GetHandleId(target),1) не забудь сохранить таймер
да че то эта штука глючная. таймером обновления выводишь - в зависимости от объема текста (мало текста - норм или микро-лаги, много текста - микро-лаги или зависания ).
Ладно отключаем таймер обновления. Решил просто напрямую добавить. Запускаешь операцию с кучей инфы за раз, зависание игры. А в конец русские символы неизвестно во что превратились. это хорошо что я поделил на части отладку. И вывожу нужную.только для индивидуальных тестов в каком месте оборвалось мб и сгодится. А если всю карту, то не пойдет.
либо сократить кол-ва текста за раз. Выводишь кучу текста, и лаг уже.
и загрузить сложнее с ФАЙЛА txt
quq_CCCP, мб стоило тогда сравнивать в буфере величину строки StringLength? Это можно сделать? если буфер меняется, значит чистка и перезапись. зачем каждый раз чистить и запись делать
попозже опробую идею
PT153, тем не менее явное сравнение с эпсилономту автора не работает даже с 0.01
Прости. Обманул. Работает. Просто запутался, мне надо было ставить "не равно", а с этим эпсилоном поставил "равно". надо not (a-b < 0.001). я сделал (a-b < 0.001) и выключил дебаг на ложь. Bergi_Bear, но мне это не нужно. достаточно просто координаты сравнить.
ScorpioT1000, и что нужно делать для сравнения? отсечь дробную часть? или какое решение? у меня даже сравнение координат не работает. стало даже хуже, подвисы из-за циклов, видать выйти не может из-за того, что не может себе пару точек найти.
самый норм посмотрел у комментатора Flux. там карта. похоже действительно можно. пробовал задать в его карте слишком большие параметры. чтобы вызвать искуственно проблемы. Приводит лишь к легким подвисам камеры и возвращается в норму, удвоив привело к сильному подтормаживанию и потом игра вернуласб. Юниты заморозились, потом резко ускорилисб, и потом вернулось. А если задать огромные значение, то либо подвис игры и сворачивание игры. или фатал с недостаточной памятью
Блин, забыл сказать, чё ты как нубяра на гуи пишешь, переходи на zinc/lua и будь нормальным мужиком!
потом перейду. когда напишу на jass хоть какую то карту.
думаю на zinc еще можно попробовать
кстати, я вот пробовал одновременно несколько проверок-условии зафигарить.
На подобии
if точка принадлежит then
Принадлежит
else
Не принадлежит
endif
И они должны были вывести на экран. Но на экран, все время выводилось одно и то же, то есть ложь. Решил отделить, и оно заработало. Условия походу че-то одновременно не работали. Не знаю, подводные камни вара.
ладно прочитал. немного смутно че то понял. ну или совсем не понял. понял что там какая то таблица, которая не дает генерировать похожие строки и имеет лимит на число символов. И беспокоить об этом нет смысла, тк наверное очищает или заново перезаписывает. неизвестно. Но не понятно, точно из-за кривого английского. Но это все на уровне слухов, тк не понимаю как подтвердить информацию.
вопросы все равно остались. Что надо делать чтобы такого не было? вопрос, а нужно ли записывать все тексты в глобальный массив.
s[0] = "Привет"
s[1]= "Я крут"
понимаю это система была бы полезна для диалогов или системы подсказок. но нужно ли делать так как в гуи?
.....
Как это делает в гуи. Если записать текст в гуи, и создать. Потом эта строка заносится в массив
если конвентировать в код, то вместо текста там "TRIGSTR_122"
его можно найти в файлике. инфа тут
стоит ли так делать? вот здесь это решить. пример можно посмотреть. к сожалении копии не осталось. но думаю можно попробовать искусственно вызвать тормоза
call SaveInteger(Hash,GetHandleId(GetTriggerUnit()),5555, CurrentNumberOfSettlement) в одном триггере сохраняем
set CurrentNumberOfSettlement = LoadInteger(Hash,GetHandleId(GetTriggerUnit()),5555) в другом триггере для проверки выгружаем
рабочий вариант
local integer id = GetHandleId(GetTriggerUnit())
call SaveInteger(Hash,id,5555, CurrentNumberOfSettlement) в одном триггере сохраняем
set CurrentNumberOfSettlement = LoadInteger(Hash,id,5555) в другом триггере для проверки выгружаем
Короче вернул обратно локалки, и все заработало. И почему первый вариант не работал. Ладно будут искать подводные камни. Наверное после чистой оптимизации что-то перестало работать. эх... придеться посравнивать. похоже старый код где то мб лучше. только времени потратил на методы тыка.
David David, так переключи выбор магаза на героя через приказ. у магазина есть кнопка выбора, дана специально на случай если к магазину подойдут два героя, и можно перекидывать выбор. измени настройки выбора юнитов магазином
так тут ответом то сложно назвать. Просто переустанови винду и смени видео-карту - это не ответ же. лучше вопросов не задавать таких. А реальная причина ??? рефорджевский варик гуляет и грешит этим. Если камеру прикрутить в эт часть карты, то там вместо деревьев анима срубленных деревьев
строительство - просто создание с %. в абилке ремонта есть проценты стройки от изначальных времени и ресурсов
ремонт - восстановление хп зданию. так ремонт идет от абилки ремонта, какие проценты в абилке ремонта указано от изначальных времени и ресурсов затрачивается.
можно попробовать хп восстановить триггерно, вернув часть хп. можно выдавать разные абилки ремонта с разными параметрами
if Hero[p]!=null then
loop
exitwhen i>5
set t[i]=UnitItemInSlot(Hero[p],i)
set i=i+1
endloop
endif
У тебя потом все равно обрыв потока, тк после иначе ты ищешь у не существующего юнита. Из-за этого вы достаете не существующие ячейки... вернее пустые ячейки.. и все остальное
попробовал сделать так но проблема осталась надо ли создавать мультиборд после выбора героя?
Radioactive, так и надо делать. можно сначала отобразить не полноценный мульт. А после отобразить со всеми слотами
в своей карте я вот также растения сажал. Но с одним условием, он должен был просто посадить, а дальше оно само строилось. Через триггеры, тк нужно на скорость роста влиять (ночью медленно/днем быстро). У рабов хуманов строительство идет через абилку ремонта, у которой в целях указана техника. И убрать растениям в ро в классификации технику, то раб просто ставит недостроенное, и все. Поскольку достраивать такой ремонт-абилкой не может. Это была просто маленькая хитрость.
так сложно сказать. без карты примера. но сталкивался с таким. скорее дело в абилке ремонта
смотри в абилке ремонта, а точнее разрешенные цели. здание должно иметь: механический тип цели, или транспорт имеет классификацию: техника. Короче ремонт-абилы это те же самые хилящие абилки, могут чинить только механизмы, а не живых существ.
не проще было бы открывать двери выделением? короче кликом мыши. Клик, дверь открылась. Клик - открытая дверь закрылась. или попробовать еще на уровне приказов отслеживать, чтобы выделение не снималось со своих воинов.
У варика самый отстой отследить клик
Ред. MpW
» WarCraft 3 / Триггерный опыт с рубки леса.
» WarCraft 3 / Ищу разработчика по наработке с земельным участком
Ред. MpW
» WarCraft 3 / Двойные абилки здания активируют триггер без причин
Ред. MpW
» WarCraft 3 / Вернуть оставшееся время таймера по его Айди
надо прописывать таймер, а ты целое число Integer. поэтому прога и ругает, что вместо таймера ты число пизаешь
LoadInteger(Hash,GetHandleId(target),1)
LoadTimerHandle(Hash,GetHandleId(target),1) не забудь сохранить таймер
Ред. MpW
» WarCraft 3 / работа с прелоадом: обязательно ли чистить периодически буфер?
и загрузить сложнее с ФАЙЛА txt
Ред. MpW
» WarCraft 3 / работа с прелоадом: обязательно ли чистить периодически буфер?
попозже опробую идею
» Naruto - Nindogatari / DebugSystem
Ред. MpW
» WarCraft 3 / Как определить, что отрезок прямой?
Bergi_Bear, но мне это не нужно. достаточно просто координаты сравнить.
Ред. MpW
» WarCraft 3 / Как определить, что отрезок прямой?
» WarCraft 3 / Как определить, что отрезок прямой?
Ред. MpW
» WarCraft 3 / Как определить, что отрезок прямой?
Ред. MpW
» WarCraft 3 / Как определить, что отрезок прямой?
Ред. MpW
» WarCraft 3 / Как определить, что отрезок прямой?
Ред. MpW
» WarCraft 3 / Есть ли у вакрафта проблема со строками и вывода текста?
Принадлежит
else
Не принадлежит
endif
Ред. MpW
» WarCraft 3 / Есть ли у вакрафта проблема со строками и вывода текста?
вопросы все равно остались. Что надо делать чтобы такого не было? вопрос, а нужно ли записывать все тексты в глобальный массив.
s[0] = "Привет"
s[1]= "Я крут"
понимаю это система была бы полезна для диалогов или системы подсказок. но нужно ли делать так как в гуи?
.....
Как это делает в гуи. Если записать текст в гуи, и создать. Потом эта строка заносится в массив
его можно найти в файлике. инфа тут
стоит ли так делать? вот здесь это решить. пример можно посмотреть. к сожалении копии не осталось. но думаю можно попробовать искусственно вызвать тормоза
Ред. MpW
» WarCraft 3 / У меня не сохраняется/либо не грузится информация хэш-таблицы
set CurrentNumberOfSettlement = LoadInteger(Hash,GetHandleId(GetTriggerUnit()),5555) в другом триггере для проверки выгружаем
call SaveInteger(Hash,id,5555, CurrentNumberOfSettlement) в одном триггере сохраняем
set CurrentNumberOfSettlement = LoadInteger(Hash,id,5555) в другом триггере для проверки выгружаем
Ред. MpW
» WarCraft 3 / Показать инвентарь другого юнита Мемхак
Ред. MpW
» WarCraft 3 / Вылеты при мультиплеерной игре
Ред. MpW
» WarCraft 3 / Можно как-то поменять время и цену ремонта триггерно? Reforged
ремонт - восстановление хп зданию. так ремонт идет от абилки ремонта, какие проценты в абилке ремонта указано от изначальных времени и ресурсов затрачивается.
можно попробовать хп восстановить триггерно, вернув часть хп.
можно выдавать разные абилки ремонта с разными параметрамиРед. MpW
» WarCraft 3 / Непонятная проблема
Ред. MpW
» WarCraft 3 / Баг на карте warcraft 3 классика
Ред. MpW
» WarCraft 3 / Баг на карте warcraft 3 классика
смотри в абилке ремонта, а точнее разрешенные цели. здание должно иметь: механический тип цели, или транспорт имеет классификацию: техника. Короче ремонт-абилы это те же самые хилящие абилки, могут чинить только механизмы, а не живых существ.
Ред. MpW
» Лаборатория Маньяка / Ворота
У варика самый отстой отследить клик
» WarCraft 3 / Что не так с отрядом
» WarCraft 3 / Что не так с отрядом