27

» WarCraft 3 / Триггерный опыт с рубки леса.

Принятый ответ
это для 1.26
  1. можно дерево сделать из юнитов. Самое простое из всех возможных. Тогда можно отследить удары, урон. И сделать полную ИИ-иммитацию добычи через приказы. Отправил добывать, юнит пошел. Отслеживаем урон, и проверяем хп, когда наберет нужное, то сразу меняем аниму с дровами и отправляем обратно к хате. Или ищем ближайшее здание с абилкой приема, и отправляем туда юнита. Когда он туда приходит, сразу возвращаем аниму.
  2. можно сделать декорацию камня, железа. Помню хотел сделать нестанд ресурс из декора. У раба есть абилка добычи леса, там автоматически добыча идет на дерево. Пробовал сделать из дерева камень, но нужно было сделать так чтобы абилка добычи леса перестала нацеливаться и работать на камень, иначе автоматически рабочие еще и камень собирать будут.
В настройках декорации некогда дерева я изменил тип цели, теперь дровосеки не смогли добывать камень. Сделал копию абилки добычи леса, только вместо нее - другие настройки, на камень (теперь мне не нужно через атаку добычу делать, как у юнитов, либо декор нельзя навести мышкой без спец абилки добычи. с этой абилкой достаточно ПКМ отправить). Отдал ее каменьщикам. Но не все идеально, не помню че там. Кажется, автоматическая добыча не работала (не уверен, мне не удалось проверить тк ресурс не добывался никак), короче абилка добычи леса работает только на дерево, иначе колотит бесконечно по камню, и рабу не начисляют то самое дерево, он просто никогда не отправиться сдавать его, тк нету у него дерева.
Отследить добычу дерева - нет таких событии. Есть только костыльные методы - через приказы. Приказами можно отследить отдачу приказов добычи и таргет-цели. Можно как способ автоматически сделать ИИ-имитацию добычи. Проблема в том, что у декора не отследить удары по камню. Кто ударил и прочее?
Есть решения это проверять хп декора, близость декора и юнита. Вот проблема - когда юнит начинает замахиваться.

Самый просто способ - это не менять настройки камня. Пусть камень считают деревом. Просто попробовать перенацеливаться приказами. Если дровосек получает приказ добычи камня, то ищем ему дерево и перебиваем текущий приказ. Аналогично, с каменьщиками. Проблема отследить получение этого дерева, чтобы вместо него камень был. Можно просто событием проверять получение дерева, и подход каменьщика к зданию. Можно просто не давать каменьщику подходить к пункту приема.
27

» WarCraft 3 / Вернуть оставшееся время таймера по его Айди

Принятый ответ
TimerGetRemaining(timer)
надо прописывать таймер, а ты целое число Integer. поэтому прога и ругает, что вместо таймера ты число пизаешь
LoadInteger(Hash,GetHandleId(target),1)
LoadTimerHandle(Hash,GetHandleId(target),1) не забудь сохранить таймер
27

» WarCraft 3 / работа с прелоадом: обязательно ли чистить периодически буфер?

Принятый ответ
да че то эта штука глючная. таймером обновления выводишь - в зависимости от объема текста (мало текста - норм или микро-лаги, много текста - микро-лаги или зависания ).
Ладно отключаем таймер обновления. Решил просто напрямую добавить. Запускаешь операцию с кучей инфы за раз, зависание игры. А в конец русские символы неизвестно во что превратились. это хорошо что я поделил на части отладку. И вывожу нужную.только для индивидуальных тестов в каком месте оборвалось мб и сгодится. А если всю карту, то не пойдет.

либо сократить кол-ва текста за раз. Выводишь кучу текста, и лаг уже.
и загрузить сложнее с ФАЙЛА txt
27

» WarCraft 3 / работа с прелоадом: обязательно ли чистить периодически буфер?

quq_CCCP, мб стоило тогда сравнивать в буфере величину строки StringLength? Это можно сделать? если буфер меняется, значит чистка и перезапись. зачем каждый раз чистить и запись делать
попозже опробую идею
27

» Naruto - Nindogatari / DebugSystem

зачем каждый раз обновлять буфер таймером? Объясните смысл? смотрите, заводим массив строк. Каждый интервал 0.03 сек чистим буфер, потом записываем массив. И?
27

» WarCraft 3 / Как определить, что отрезок прямой?

ScorpioT1000:
PT153, тем не менее явное сравнение с эпсилономту автора не работает даже с 0.01
Прости. Обманул. Работает. Просто запутался, мне надо было ставить "не равно", а с этим эпсилоном поставил "равно". надо not (a-b < 0.001). я сделал (a-b < 0.001) и выключил дебаг на ложь.
Bergi_Bear, но мне это не нужно. достаточно просто координаты сравнить.
27

» WarCraft 3 / Как определить, что отрезок прямой?

вариант 1 (рабочий)
if not((Ax == Vx2[F1]) or (Ay == Vy2[F1])) then
endif
вариант 2 (рабочий)
if not((Angle == 0) or (Angle == 360.) or (Angle == -360.) or (Angle == 180.) or (Angle == -180.) or (Angle == 90.) or (Angle == -90.)) then 
endif
карта <= функция Trig_triigger_DU_2 в шапке. работает хорошо и норм щас
Загруженные файлы
27

» WarCraft 3 / Как определить, что отрезок прямой?

смотрите, использую.
не работает (вариант скорпа)
не срабатывает ни ложь, ни истина. глухота. мб из-за RAbsBJ, там типа тоже сравнение идет?
if (RAbsBJ(Ax - Vx2[F1]) < 0.00001) or (RAbsBJ(Ay - Vy2[F1]) < 0.00001) then
	call DisplayDebugTextToPlayer2("проверяем дальше")
else
	call DisplayDebugTextToPlayer2("2-точка не подходит")
endif
вариант PT153 работает (изменил условие)
27

» WarCraft 3 / Как определить, что отрезок прямой?

ScorpioT1000, и что нужно делать для сравнения? отсечь дробную часть? или какое решение? у меня даже сравнение координат не работает. стало даже хуже, подвисы из-за циклов, видать выйти не может из-за того, что не может себе пару точек найти.
27

» WarCraft 3 / Как определить, что отрезок прямой?

эх.. варик. наверное действительно проще координаты сравнить, чем угол подсчитать и сравнить. чего я туплю
27

» WarCraft 3 / Есть ли у вакрафта проблема со строками и вывода текста?

самый норм посмотрел у комментатора Flux. там карта. похоже действительно можно. пробовал задать в его карте слишком большие параметры. чтобы вызвать искуственно проблемы. Приводит лишь к легким подвисам камеры и возвращается в норму, удвоив привело к сильному подтормаживанию и потом игра вернуласб. Юниты заморозились, потом резко ускорилисб, и потом вернулось. А если задать огромные значение, то либо подвис игры и сворачивание игры. или фатал с недостаточной памятью

Блин, забыл сказать, чё ты как нубяра на гуи пишешь, переходи на zinc/lua и будь нормальным мужиком!
потом перейду. когда напишу на jass хоть какую то карту.

думаю на zinc еще можно попробовать

кстати, я вот пробовал одновременно несколько проверок-условии зафигарить.
На подобии
if точка принадлежит then
Принадлежит
else
Не принадлежит
endif
И они должны были вывести на экран. Но на экран, все время выводилось одно и то же, то есть ложь. Решил отделить, и оно заработало. Условия походу че-то одновременно не работали. Не знаю, подводные камни вара.
27

» WarCraft 3 / Есть ли у вакрафта проблема со строками и вывода текста?

ладно прочитал. немного смутно че то понял. ну или совсем не понял. понял что там какая то таблица, которая не дает генерировать похожие строки и имеет лимит на число символов. И беспокоить об этом нет смысла, тк наверное очищает или заново перезаписывает. неизвестно. Но не понятно, точно из-за кривого английского. Но это все на уровне слухов, тк не понимаю как подтвердить информацию.
вопросы все равно остались. Что надо делать чтобы такого не было? вопрос, а нужно ли записывать все тексты в глобальный массив.
s[0] = "Привет"
s[1]= "Я крут"
понимаю это система была бы полезна для диалогов или системы подсказок. но нужно ли делать так как в гуи?
.....
Как это делает в гуи. Если записать текст в гуи, и создать. Потом эта строка заносится в массив
если конвентировать в код, то вместо текста там "TRIGSTR_122"
его можно найти в файлике. инфа тут
стоит ли так делать? вот здесь это решить. пример можно посмотреть. к сожалении копии не осталось. но думаю можно попробовать искусственно вызвать тормоза

NazarPunk, спасибо за отклик на глупые вопросы
Загруженные файлы
27

» WarCraft 3 / У меня не сохраняется/либо не грузится информация хэш-таблицы

Принятый ответ
ладно. заработало.
не рабочий вариант
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) в другом триггере для проверки выгружаем
Короче вернул обратно локалки, и все заработало. И почему первый вариант не работал. Ладно будут искать подводные камни. Наверное после чистой оптимизации что-то перестало работать. эх... придеться посравнивать. похоже старый код где то мб лучше. только времени потратил на методы тыка.
27

» WarCraft 3 / Показать инвентарь другого юнита Мемхак

David David, так переключи выбор магаза на героя через приказ. у магазина есть кнопка выбора, дана специально на случай если к магазину подойдут два героя, и можно перекидывать выбор. измени настройки выбора юнитов магазином
27

» WarCraft 3 / Вылеты при мультиплеерной игре

так тут ответом то сложно назвать. Просто переустанови винду и смени видео-карту - это не ответ же. лучше вопросов не задавать таких. А реальная причина ??? рефорджевский варик гуляет и грешит этим. Если камеру прикрутить в эт часть карты, то там вместо деревьев анима срубленных деревьев
27

» WarCraft 3 / Можно как-то поменять время и цену ремонта триггерно? Reforged

строительство - просто создание с %. в абилке ремонта есть проценты стройки от изначальных времени и ресурсов
ремонт - восстановление хп зданию. так ремонт идет от абилки ремонта, какие проценты в абилке ремонта указано от изначальных времени и ресурсов затрачивается.
можно попробовать хп восстановить триггерно, вернув часть хп.
можно выдавать разные абилки ремонта с разными параметрами
27

» WarCraft 3 / Непонятная проблема

Radioactive, надо
if Hero[p]!=null then
    loop
        exitwhen i>5
        set t[i]=UnitItemInSlot(Hero[p],i)
        set i=i+1
    endloop
endif
У тебя потом все равно обрыв потока, тк после иначе ты ищешь у не существующего юнита. Из-за этого вы достаете не существующие ячейки... вернее пустые ячейки.. и все остальное

попробовал сделать так но проблема осталась надо ли создавать мультиборд после выбора героя?
Radioactive, так и надо делать. можно сначала отобразить не полноценный мульт. А после отобразить со всеми слотами
27

» WarCraft 3 / Баг на карте warcraft 3 классика

в своей карте я вот также растения сажал. Но с одним условием, он должен был просто посадить, а дальше оно само строилось. Через триггеры, тк нужно на скорость роста влиять (ночью медленно/днем быстро). У рабов хуманов строительство идет через абилку ремонта, у которой в целях указана техника. И убрать растениям в ро в классификации технику, то раб просто ставит недостроенное, и все. Поскольку достраивать такой ремонт-абилкой не может. Это была просто маленькая хитрость.
27

» WarCraft 3 / Баг на карте warcraft 3 классика

Принятый ответ
так сложно сказать. без карты примера. но сталкивался с таким. скорее дело в абилке ремонта
смотри в абилке ремонта, а точнее разрешенные цели. здание должно иметь: механический тип цели, или транспорт имеет классификацию: техника. Короче ремонт-абилы это те же самые хилящие абилки, могут чинить только механизмы, а не живых существ.
27

» Лаборатория Маньяка / Ворота

не проще было бы открывать двери выделением? короче кликом мыши. Клик, дверь открылась. Клик - открытая дверь закрылась. или попробовать еще на уровне приказов отслеживать, чтобы выделение не снималось со своих воинов.
У варика самый отстой отследить клик
27

» WarCraft 3 / Что не так с отрядом

quq_CCCP, вроде константы не стираются в потоке. даже после паузы вэйтом. проверял годик назад. только глобалки. А он глобалку юзает после вэйта.