27

» Администрация XGM / Блоки исходного кода

do
local a=9
end

Не сразу обновляется =/ нужно страницу перегрузить
27

» Администрация XGM / Таблицы

Ужасно смотрится текст, когда ширина столбца небольшая, в частности в моб телефоне наблюдается такое. Когда телефон пытается отобразить всю таблицу, это будет ужасно. Особенно, видно, как слово переносит. Он переносит буковки на след строчку. А можно было бы сделать листинг. Скроллбаром крутить.
27

» WarCraft 3 / Смертельный удар для катапульты

Надо узнать работает ли смертельный удар у артиллерии, я честно не помню. Можно просто проверить.

27

» WarCraft 3 / Выдать нестандартный автокаст

При завершении обучения юнита из бараков ты даешь новчку абилу, ясно. Может быть стоит сделать задержку в 0.00 сек?
Может в этот момент сработки ивента юнит еще не вышел из бараков, его типа нет, но нам намекает ассисент, что "ого, юнит скоро будет готов".
27

» WarCraft 3 / Текстура фрэйма.

Узнаю свою работу. Когда то сам возился с симплфреймами. Была проблема с ними, что их трудно редактировать во время игры. То, что было прописано в fdf, и создан шаблон по образцу, являлось после статичной, и нельзя было никак изменить. Были хитрости, можно потомкам редактировать. На этом задрачивал много времени, дай вспомнить.
Кажется из этого урока
Скажу, что симплфреймы не очень хорошее решение в рефе юзать. Я сделал по-другому для моей задачи. Так, что для вашего вопроса скинь fdf. Мне кажется, что вам нужно редактировать через BlzFrameSetTexture не саму кнопку, а потомственную текстуру, что указана в fdf кнопки тк в симплфреймах все немного не так

Вспомнил. Проблема вот в чем. У всех шаблонов-фреймов в fdf-файлах есть свои нативки, команды. Так вот, у этой симплбутон (кнопки) есть свои команды fdf файлике вроде NormalTexture, DisableTexture и др. Достаточно, указать эти текстуры шаблону кнопки в fdf файлике, и все, вам будет никак не изменить триггерно, тк то, что указали в fdf вы нехрена не измените триггером. Вот, Тайсон предложил другой вариант: не используйте эти команды. Создайте внутри кнопки потомка, и динамично меняйте по ходу игры


Я бы рекомендовал отказаться от симплфреймов на рефе. Мне пришлось изобрести велосипед, чтобы избавиться от залипания кнопки. Вместо кнопок использовал невидимую scrollbar или text в качестве кнопки, они не вызывают залипания, однако, есть свои трудности, срабатывают даже при нажатиии и лкм и пкм, пришлось целый велосипед городить. Есть ивенты захода/выхода мыши в/из фрейм. ЕСть события нажатия лкм/пкм, дальше не составило труда сделать свой рабочий велик. Так как кнопки это пустышки, создавал копию backdrop (изображения), ловил заход мыши и накладывал hightlight (полупрозрачное изображение). С tooltip проблем не было. Правда, ивент захода/выхода близзард сломали в 1.33, мотоцикл мой перестал работать. и больше не открывал карту с того дня. Не знаю, может сейчас что то изменилось.
27

» WarCraft 3 / Сетка строительства (тайлы) как в Editor

BrEd Pitt, эта классная сетка. Может быть когда-нибудь позаимствую в своей наработке
27

» WarCraft 3 / Как выразить число в процентах?

Собрались делать здания, которые приносят инком?
Не помню, было ли тут
Ну тут как в математике:
текущая прибыль со всех здании - 100%
доход после выплат ндф - 80%
*Просто эти кол-во должно к чему то привязано. У меня они выражают доход
27

» WarCraft 3 / Допустимое время АФК (игрок отошёл)

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

» nDRch / Приключения Паши и Фекалика

Автор мультики снимает мне так кажется. Как называются в варкраыте сие творчество
27

» nDRch / Приключения Паши и Фекалика

Смотрится ваше содержание текстовое ничего так.. наверное будет интересная кампания. Надеюсь, что это не очередной клон варика? Я имею в виду: графика, мы уже давно должны перерасти юзать чистые скилы вара из ро, и ствндвртные модели, ландшафт, какая нибудь универсальная система прокачка скилов, баланс, и небоысные предметы. Вам бы книгу писать, но кампания в духе гарри поттера сойдет.. каких нибудь магов неудачников в гениев превращаются
вот какое качества выйдет?
27

» WarCraft 3 / Как сделать лимит улучшений?

Логически можно додуматься. пишешь триггер с проверкой:
С: Юнит - завершает исследование
У: завершаемое исследование - "технология 1" or (или) завершенное исследование - "технология 2"
Д: (нужно будет проверить, что исследование достигла максимума)
Возможно, тут нужна будет делать задержку, я точно не знаю, как работает триггер
If тек уровень "тех 1" == макс уровень "тех 1" and (И) тек уровень "тех 2" == макс уровень "тех 2" then
Действие - запретить исследование "технология 3"
end
У меня нет возможности потыкать вар, и надо вам самим посмотреть в триггервх в действиях в разделе игрок или технология. Мб там с уровнем поинрать. Попробуй обнулить, или -1 поставить. Должно быть какое то действие
Вот вам нашел пример

27

» WarCraft 3 / Как отследить чей игрок убил юнита

KillingUnit - убийца
DyingUnit - умирающий
TriggerUnit - юнит, запустивший триггер. Т.е. в событии "юнит умирает" ссылается на умирающего.
Так, что вывод: TriggerUnit не равно KillingUnit, KillingUnit - убийца.
Можно сравнивать игроков, т.е. влвдельцев:
Владелец убийцы не равно влвделец умирающего
Владелец триггер юнит - это ТриггерИгрок
Еще в булеан можно посмотреть функции, типа яаляется ли этот игрок врагом для умирающего
27

» WarCraft 3 / Массив в магазине.

BlzGetFrameByName(name, createContext)
Все равно это тоже надо будет циклом перебирать BlzGetTriggerFrame() с BlzGetFrameByName(name, 1-15), если говорить про рефордж
27

» WarCraft 3 / Массив в магазине.

Не совсем понял ваш вопрос, что выхотите сделать. Внимательно раз 4-5 вчитал.
Вот небольшой кусок кода с кнопкой и функцией клика по кнопке с покупкой предмета, как?
код я посмотрел, он убер простой. Ничего сверхсложного логически, и уникального нн увидел. Однако, я не увидел никакой связи с магазином и итемами. У вас udg_Item хранят только от одного итема? Фреймы отображаются при выделении магазина? Сколько у вас магазинов? Один?
можно сделать массив примерно на 15 предметов чтоб не создавать функцию клика для каждой кнопки c выдачей заранее подготовленного предмета.
Видимо, у вас возникла проблема как структурировать всю эту базу данных информации. Так чего же вы не создали 15 итемов, и не показали.
Ладно. Примерно понял. Функцию клика можно не плодить, достаточно на всех 1 функции, просто будут разные триггеры запускаться.
Вот вы циклом создаете 15 кнопок fr[1-15], 15 триггеров tr[1-15]. Потом в функции click нужно перебрать какая кнопка нажата (индекс вытащить), а это можно сравнивать в действии, т.е. в функции click
  1. либо вызванный фрейм BlzGetTriggerFrame() перебираем с 15 фреймами fr
  2. либо запущенный триггер GetTriggeringTrigger() перебираем с 15 триггерами tr

Еще у вас проблема может с фреймовыми событиями, на один триггер можно записать 1 событие фрейма. Иначе, я замечал, что событие не работало. Возможна, я ошибаюсь. Но мне кащалось, что ивент просто перезаписывался на последний фрейм, и работало только у него. Вы сейчас пытались накинуть на 1 триггер 15 ивентов для разных фреймов, или что? Поэтому я вот для каждого фрейма создаю свой триггер. Это главное правило - создавать для каждого фрейма свой триггер
27

» WarCraft 3 / Не могу придумать, как сделать ракетный залп - залпом

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

» WarCraft 3 / Ледяное дыхание

Видимо, это сшито в движок. А часть настроек отображено в константах. Пример, можно редактировать скорость (смотреть) , а вот как время, тут наверное, ничего не поделаешь.
27

» WarCraft 3 / пассивная способность "кража маны" при атаке

EugeAl, вы намеренно даете ложный ответ? "событие - юнит атакован" реагирует в начале замаха, и тут можно сломать эту систему.
Как это работает. Юнит таргется на цель, и начинает производить атаку, т.е. начинает производить анимацию атаки, и только после нее начнется дамаг. У юнитов с дистанционной ренж атаки еще нужно прождать, когда снаряд долетит, если, конечно, долетит. И после должен выйти дамаг.
До вснх этих моментов есть еще уклонение, промахи и др вещи, когда до цели дамаг не дойдет.
Событие "юнит атакован" предвищает, что юнит начинает атаку, вернее начнет атаку через 0.00 сек здесь криво перевели мысль. Тут игрок может отдать приказ на цель, и ткт же отменить, отдав другой
27

» WarCraft 3 / Как вывести таймер в таблицу

У каждого таймера есть 3 времени:
  • TimerGetRemaining(timer). Оставшееся время таймера, сколько осталось времени до завершения. Счетчик времени уменьшается. По истечении будет == 0.0.
  • TimerGetElapsed(timer). Истекшееся время таймера. Сколько прошло времени, счетчик увеличивает хажанное время.
  • TimerGetTimeout(timer) - заданное время таймера. на сколько запущен таймер (заданное значение не меняется, короче)
Это все функции есть в триггерах, можете в любое время узнать сколько времени, и эти три реальных числа, надо преобразовать из выбранных в нужную строку. При этом важно, чтобы таймер был запущен.
Есть проблема, в том, что счетчик отображает не как время, а как счетчик секунд (вообще можно и микросекунды, но не об этом речь). Если допустим прошло 120 сек, он тебе не отобразит, что прошло 2 мин. Нужно будет самому делать систему времени. Типа часы/минуты/секунды, тут все выражено секундами в таймере. Пример, можно запустить одноразовый таймер от начала игры с 99999999 сек, и от него узнавать текущее время/пройденное и оставшее выраженные в секундах. Это как одна из задач.
Обычно, в таких системах ежесекудно обновляют время, и обновляют строку в таблице. Заводим, периодический таймер, который будет каждую 1 сек тикать. И счетчики часов hour, минут min, секунд sec
//Каждую 1 секунду
set sec=sec+1
if sec >= 60 then
    set sec=0
    set min=min+1
    if min >= 60 then
        set min = 0
        set hour = hour + 1
        if hour >= 24 then
            set hour = 0
        endif
    endif
endif
27

» WarCraft 3 / способность "защитная аура"

Введи поиск dummy-unit. Тут есть статьи как делать dummy-unit.
xgm.guru/p/wc3/dummy на код пока не смотрите
dummy-unit не только бывает невидимый, бывало и визуально из него делали снаряды, эффекты, и двигали по координатам. Поскольку в патче 1.26 варкрафт был очень ограниченным, нам дали спецэффекты, но не было функции по перемещению. Вместо этого приходилось задавать модельку эффекта юниту, и перемещали, проигрывали анимации и пр.
27

» Администрация XGM / XGM предлагает проиграть однокадровые гифки

Makeba, помню, что жаловалось, что гифки без конца проигрывали анимации, и подлагивало.. наверное из-за этого