26

» WarCraft 3 / Триггерный Спелл

quq_CCCP:
Тут стоит отметить важное НО, статы нужно отнимает если герой не помер, либо после возрождения, иначе будут баги с регеном, сила влияет на регенерацию здоровья, но ели в момент смерти у героя изменить кол-во силы, регенерация не изменится, в итоге будет герой с 100500 регеном. Так что нужен триггер отлавливающий смерть, время, и начало касте, чтобы вручить силу и забрать её в нужное время.
А с чего сделан такой вывод?
Мне показалось это логичным и я решил сделать проверку...
В итоге, оказалось что реген работает ровно в том числе, в котором должен (от количества Силы), если вызвать у героя работу регенерации (изменение текущего хп, в том числе его изменение за счёт изменения Силы). Т.е. да, на мёртвом героем иногда отображается не верное количество регена (ибо юнита можно заставить регенерироваться будучи мёртвым), но как только он становится снова живым - реген исправляется на правильный (в том числе и реген от предмета, который на мёртвом юните не работает совсем).
Отсюда и вопрос - как именно должен происходить этот баг?
Такой вариант "просто изменить мёртвому юнита силу" ничего в итоге не меняет, когда он снова вступит в игру его реген будет нормальным. Вариант "убить + дать силы" тоже не приводит в появлению лишнего регена. Вариант "отловить смерть + дать силы" так же ничего не даёт. В итоге что ни делай - реген всегда стабильный (от 22 Силы и 0.25 баз.регена это всегда 1.35 хп/сек).
26

» WarCraft 3 / Как сделать инком на основе пассивной способности?

Эксгумация, которая не будет иметь задержки каста и будет иметь перезарядку.
При этом юнит должен иметь абилку "пассажир"
Триггерно отлавливается каст этой абилки и делаешь всё что надо.
26

» WarCraft 3 / не стартует таймер

Ельнур:
да я понял что там локальная таймер создается отдельно на каждого вот и глобальная путается
А причём тут тот таймер?
Ты его создаёшь и удаляешь своевременно.
26

» WarCraft 3 / Увеличение карты

Принятый ответ
Ну обычно протекторы и оптимизаторы вырезают из карт всё лишнее из карты, что нужно лишь на этапе её создания в редакторе (файл-ординатор для РТ и подобные инструменты). Плюс к этому сам редактор не самым оптимальным образом записывает нестандартные данные (свою роль играют *.slk). Вот и получается что сразу после сохранения в редакторе карта весит обычно больше, чем после обработки спец.утилитами.
26

» WarCraft 3 / не стартует таймер

Ельнур:
заработало с даммиком спасибо теперь не буду юзать +1 глобалы в таймерах
Ну просто если у тебя будет использоваться эта же переменная в другом потоке, то будет идти её же перезапись (пишешь в одно место данные из разных источников).
Если хочешь юзать число, то либо бей массив, либо записывай это число в свой хэш (так же, как записываешь юнита).
26

» WarCraft 3 / Проблемы с переменной force 2

Размерность массива это инструкция для проставки базовыхтзнаяений для переменных. Если чисел это роли не играет, т.к. ты всегда задаёшь им новые значения. А вот для таких объектов как отряд, таймер, группа игроков - при старте создаются отдельные объекты и записываются в переменные. Надо просто знать этот момент, вот и всё.
Получается так что ты пытаешься ссылаться на объект записанный в переменную, при этом сам объект ты не создаёшь, но думаешь что он там есть по-умолчанию. А реальность такова, что в переменной нет значения, и ты тыкаешь в пустую позицию и ничего не получаешь оттуда.
26

» WarCraft 3 / Центрирование текста

...и, если не ошибаюсь, вывод текста со сбитием координат не вывадит конкретный кусок текста в указанных координатах, а просто смещает весь текстовый блок к этому положению (т.е. таким образом его можно полностью вывести за экран).
26

» WarCraft 3 / Изменить путь модели юнита напрямую через MPQ

Думаю ДА, но что конкретно ты хочешь сделать?
Поменя модель футмана в игре? Или поменять модель конкретному юниту? (в РО)
26

» WarCraft 3 / Триггерный Спелл

Принятый ответ
А если всё совсем плохо, то можно просто вэйтом обойтись.
Юнита-инициатора ты при таком ивенте всё равно не потеряешь.
дать 40 силы
ждать 30 сек
отнять 40 силы
26

» WarCraft 3 / Дополнительные типы тайлов почвы

  1. Открываешь карту.
  2. В экстеншнс настраиваешь тайлы (и жмёшь ОК).
  3. Закрываешь редактор (без каких-либо сохранений).
  4. Открываешь редактор, открываешь карту.
Всё, должно работать.
26

» WarCraft 3 / Нужна помощь

Хз. У меня есть карта в которой за 10 лет очень много изменений было произведено, и в том числе это пересоздаваемые абилки и описания к ним... Я сейчас ради интереса вытащил оттуда *.wts и вижу в нём странный лимит в 9999 строк (т.е. это последняя запись, хз чем это обусловлено). При этом проглядывая бегло сами строки - не могу найти ничего из того что было окончательно удалено из РО. Каждая строка на которой останавливаюсь - используется в предмете, абилке, юните, баффе (даже если это очень старый и уже давно забытый объект в РО, но он всё ещё там имеется).
26

» WarCraft 3 / Нужна помощь

Принятый ответ
Очень много данных в файлах *.w3a (1.69Мб) и *.wts (3.42Мб)
*.wts - очень плотная нумерацию триг-стрингов, до 19463.
*.w3a - очень много абилок.
В скрипте ничего нет (всего пол сотни строк).
26

» WarCraft 3 / Подскажите, на что ссылается этот адрес в памяти?

Врядли ты найдёшь то, на что ссылается этот адрес.
Лучше скинь сюда текстовый файл с этим фаталом.
Мб кто посмотрит его и подскажет что (но это не факт).
26

» WarCraft 3 / Загадки со статуями...

Принятый ответ
Создай два триггера, первый на вход юнита в область, второй на ввод сообщения в чат
Первый триггер - юнит вошёл в область XXX, условие - юнит является героем или что-то типа того (что б нельзя было чем-угодно туда забрести). Действия - включить второй триггер, записать вошедшего юнита в переменную (например set QuestHero[X] = юнит триггера, при этом "X" - это номер игрока владеющего этим юнитом).
Второй триггер - игрок пишет сообщение в чат, тут ставишь если/тогда/иначе, а в нём два основных условия: Первое - юнит записанный в переменную QuestHero[X] находится в пределах области XXX, второе - сравнение строк: "введённое в чат сообщение" равно "нужное_слово". Тогда отключаешь ОБА триггера (что б больше никто не мог вводить ответ, и никто не мог опять включить 2й триггер войди в область XXX), и создаёшь нужный предмет...
26

» WarCraft 3 / Как сделать дроп итемов из постоянно респаунящихся крипов?

Принятый ответ
Сергей45, дело в том, что когда ты ставишь юнита на карте, то при сохранении в скрипт карты добавляется кусок, который на старте игры именно в этих координатах создаст именно этого юнита, с указанным количеством здоровья, маны, уровнем, и предметами (если есть инвентарь).
Для тебя это просто "нажал, поставил, в игре он есть".
На деле же - он создаётся отдельным куском скрипта (и это нормально).
Когда ты открываешь на юните (в редакторе) вкладку с выпадающими предметами, то там можно указать выпадающие предметы и их шанс при этом. Что происходит на самом деле? - в скрипт игры вшивается кусок, который регистрирует событие смерти этого юнита (а так же событие получения над ним контроля, если его захватят то предмет тоже выпадает). Умирая этот юнит пройдёт несколько простых проверок, и дальше под ним будут созданы предметы (из списка).
Список формируется в момент смерти юнита!
Когда юнит умирает, берётся глобальный список (общий), и в нём производится очистка. После этого в него добавляются предметы и числа (т.е. шанс). После этого особая хитрая функция выбрасывает случайное число и получает по нему один из предметов (записанных ранее в список).
Готово. Именно такова суть работы базового дропа предметов.
Дальше тебе надо используя событие смерти юнита, сделать проверку на его тип, и создать нужный предмет под ним (но это будет работать в 100% случаев). Если ты хочешь добавить к этому шанс, то можно просто дополнительно прикрутить выбрасывание случайного числа (например от 1 до 100), и если оно меньше некоего другого числа (например 40), то только тогда создаёшь предмет (это будет 40%-й шанс на дроп).
А вот если тебе надо сделать хитрее, например 100% что предмет выпадет, и из них 20% что это будет кольцо на +3, и остальные 80% что это будет кольцо на +2, тогда тебе придётся добавить ещё несколько проверок, и их число будет рости от количества этих вариантов дропа.
Если ты делаешь всё на 1.26 и у тебя есть JNGP, то ты можешь сразу использовать добавленные в GUI функции для работы со списком:
call RandomDistReset() очистка списка
call RandomDistAddItem(ID,X) добавление предмета ID с шансом X (число от 0 до 100)
set itemID = RandomDistChoose() получение случайного ID из списка, за счёт шанса
Первые два - на самом дне списка действий категории "Предмет"
Третий - указывается вместо типа предмета, при его создании (тоже есть в списке)
Если у тебя нет возможность использовать JNGP (например из-за версии патча), тогда ты можешь просто на прямую обращаться к этим функциям (если, конечно, они не изменились). Но для этого тебе придётся чуть-чуть обрести понимания в том как работает JassCS).
26

» WarCraft 3 / Как сделать дроп итемов из постоянно респаунящихся крипов?

Вручную вложенные шмотки точно так же прописываются в скрипте карты, на конкретных указанных юнитов. Самый оптимальный вариант - перевести работу на всех подходящих юнитов (сделать что-то вроде перезаписи для новых юнитов, раз они ресаются), но для этого надо хотя бы понимать что ты делаешь.
Самое простое для тебя наверно будет вариант с написанием своей системы дропа предметов (или чего-то более простого), которая будет учитывать только тип юнита и ещё какие-то условия.
26

» WarCraft 3 / Запрет выбора

Yury13, я не до конца понимаю как это у тебя должно выглядеть, НО...
Всегда остаётся такой простой вариант - отлова ВСЕХ приказов для этого юнита, и их сброс.
И как это будет работать? да?
При этом если ты хочешь отдать триггерный приказ - ты отключаешь триггер (или маркируешь юнита), отдаёшь ему нужный приказ (мб записываешь приказ, если это необходимо, как и цель приказа, т.д.), и снова включаешь этот триггер на отлов приказов (либо демаркируешь юнита).
В итоге - все попытки отдать ему приказ кроме как твоим специальном триггером будут стопиться и повторять предыдущий приказ. Да, могут быть косяки если юнит не так прост, как тот же футман, но всё же - вариант простой и рабочий.
26

» WarCraft 3 / Как удалить окно таймера

Принятый ответ
Lord_Teo:
с таймерами на 1.26 не работает автоматическое увеличение размерности как с другими переменными
Да, там не работает "автоматическое увеличение размерности",
т.к. такого механизма там (в игре) впринципе НЕТ...
И это свойственно для всех переменных которые хранят объекты,
которые создаются при инициализации карты (ибо так задумано).
Создать их сразу и дать ими пользоваться.
Почему так?
Это не касается юнитов, потому что в них ты будешь записывать конкретных имеющихся на карте юнитов (тех, которые тебе нужны). А вот для таймеров обычно всё происходит по другому - ты не создаёшь новые таймеры, а просто запускаешь уже имеющийся в переменной. Откуда он там? - он был создан при инициализации карты, в том количестве, в котором ему была указана подсказка на генерацию (она же - "размерность массива"). Это так же касается и окон таймеров, и групп (отряд), и групп игроков, и много чего ещё...
Ты можешь сделать так: Запускаешь нужный тебе таймер, создаёшь конкретно для него окно, и записываешь это окно в нужную переменную (например с таким же номером как и у таймера, но это не критично, это лишь пример того "как в гуях делать не предусмотрено, но мы всё же лет 10-15 уже так делаем").
А если у тебя имеется JNGP, то при первой же необходимости ты можешь делать вот так
- sun9-72.userapi.com/c205816/v205816659/99502/00OL4Roexd4.jpg
А если у тебя его нет, то то же самое можно сделать и через CS:
- sun9-7.userapi.com/c205816/v205816659/9955a/2PC5u7biOww.jpg
Хз что тебе ещё подсказать... У меня мыслей больше нет.
26

» WarCraft 3 / Эффект телепортации Reforge

PT153:
Смотри в секции art у способности, там должен быть эффект. Или в характеристиках.
Obelick:
PT153, нет его там, я же написал)
Его там и не было никогда, поэтому делая кастомные ТП из стандартного всегда появлялась эта проблема. Что в свою очередь приводило либо в забиванию на данную проблему, либо к созданию своего ТП (полностью триггерного).
26

» WarCraft 3 / Способности в спеллбуке пропадают при морфе

Т.е. ты хочешь сказать что абилки находящиеся в спеллбуке и "запермоменченные" - всё равно пропадают при морфе? Этого не должно быть. Я проверял это на личном примере, давно, поэтому и говорил с полной уверенностью что это должно работать так, как я описал.
У меня был герой типа Тролля Варлорда в доте, 1й скилл это морф друида-медведя, он делал героя воимном с ближним либо дальним боем. При этом если я давал ему скрытый спеллбук с абилками внутри (кольцо защиты на -4 армора и аура замедления -20% MS), который накладывал на героя бафф замедления и ослабления защиты (это был эффект другого скилла, временный, дебафф типа). И вот 1м скиллом Тролль мог спокойно скинуть с себя спеллбук и его содержимое, т.к. дополнительные абилки просто пропадали. Пермоментность для спелбука и его внутрянки помогли исправить эту проблему.
Далее я уже не использовал для этих целей спеллбуки, а делал иконки способностей сразу скрытыми с панели приказов... это было очень давно.
26

» WarCraft 3 / Глобальные переменные и их количество

Принятый ответ
Есть играбельная карта с 200к глобалок...
Забей кароче на их число, лишь бы они работали правильно.
26

» WarCraft 3 / Спеллбук и морф

Принятый ответ
ПС. Давать спеллбук после найма (чтобы он сам пропадал после морфа) героя нельзя, ибо в этом случае, если герой не успел или не захотел выбрать талант, то у него пропадает такая возможность после морфа.
Делать нужно именно так. И что бы у тебя не было здесь ошибки, тебе нужно каким-либо образом обозначить то, что у героя есть непотраченный талант. Т.е. ты будешь давать герою спеллбук после морфа, если у него есть доступные очки талантов.
И ещё кое-что: если ты триггерно даёшь спеллбук и пермоментишь его (тоже триггерно), то после морфа он не пропадаёт, а если ты его отнимаешь - он не возвращается (т.е. нету лишних ненужных появлений/исчезновений абилки).
А так же смотри что бы спеллбук не остался пустым, решается это пермоментом абилок внутри спеллбука.
26

» WarCraft 3 / Способности и алгоритмы на заказ

newtone, это по сути старый 3й скилл Тини из доты.
Можешь попробовать его поискать.
Либо взять и посмотреть как работает это...
Загруженные файлы