Простые вопросы #3

  • Автор темы Автор темы ZLOY
  • Дата начала Дата начала
после какогото из патчей в abilityvalues можно максимум вписывать 12 значений, на значения выше уровнем забивается хер, с этим чето можно сделать?
 
после какогото из патчей в abilityvalues можно максимум вписывать 12 значений, на значения выше уровнем забивается хер, с этим чето можно сделать?
Ого привет ))
Не думал, что ты до сих пор что-то с кастомками мутишь, напиши в лс побщаемся.
По сабжу, я ток приидумал костыль который заменяет на аналог при прокачке с удалением старой абилки.
То есть условвно абилка №1 1-11 уровень, абилкка №2 12-22 уровень
 
просто в петров почемуто ещё ктото играет и там такая проблема, придётся видимо игру ребалансить
 
Луа абилку нужно локализовать через луа функцию?
"DOTA_Tooltip_ability_doom_splash_splash_damage_pct" "Splash Damage: %d%%"
"DOTA_Tooltip_ability_doom_splash_splash_radius" "Splash Radius: %d"


"01"
{
"var_type" "FIELD_FLOAT"
"splash_damage_pct" "50 55 60 65 70 75 80 85 90 95"
}

"02"
{
"var_type" "FIELD_INTEGER"
"splash_radius" "350"
}
Не подхватывает локализацию из ability_special
 
Стало крашить сразу после пика большинства персонажей(при спавне героя), даже если вернуть им обычные скиллы. с чем может быть связано?
 
после обновы дд абилки больше не передают таргет вектор в скрипт, приходит пустая таблица. че с этим можно сделать или просто ждать фикса? или теперь это иначе делается
 
Пацаны, задам некоторые вопросики
1. Кто то использует Дебаггер какой либо? Помимо Eclipse и если его, то есть ли нормальный гайд по настройке и хукаются ли серверные события? Я сейчас в процессе написания дебаггера нормального, чтобы с Sublime можно было ставить брейкпоинты, но самблайм кострированный и не особо адаптированный, я бы начал писать это на VSCode или intellij idea с плагином для Lua, но вопрос встревает в пункте номер 3, если выйдет нормальный вариант (А он уже не плохой, проблема с интерфейсом саблайма больше) то выложу в паблик и интересно ли кому такое?
2. Я выстраиваю сетевые запросы, так вопрос собственно, как валидировать что это именно игра стучится, а не левый челикс(Помимо IP подсети Valve). Как узнать информацию о сервере из кода? Есть ли возможность с моего бекенда постучаться куда либо, чтобы узнать какие матчи были или есть в кастомке?
3. Какую IDE используете? Есть ли альтернатива sublime, но чтобы в ней был Dota 2 Api как sublime.
4. Как в целом дебажите кастомки? Какой кейс рассмотреть лучше всего
5. TypeScript->Lua конвертер срань или имеет место быть?
6. Тупой вопрос, но есть ли возможность кикать игрока с сервера?

В целом разрабатываю тавер дефенс, смесь Spin TD и GemTD, но нормальный и больше серверного общения с бекендом
 
2. Я выстраиваю сетевые запросы, так вопрос собственно, как валидировать что это именно игра стучится, а не левый челикс(Помимо IP подсети Valve). Как узнать информацию о сервере из кода?
Чекни какие заголовки посылает клиент доты, если речь о http. Мб можно по ним определять игроков. Но как универсальное решение - самому рассылать игрокам токены в начале игры
3. Какую IDE используете? Есть ли альтернатива sublime, но чтобы в ней был Dota 2 Api как sublime.
Вроде в VSCode тоже есть плагины с апишкой доты. Вот сейчас в магазин расширений вбил Dota - аж десять штук выпало
Есть ли возможность с моего бекенда постучаться куда либо, чтобы узнать какие матчи были или есть в кастомке?
Возможности есть, но они из разряда чёрной магии, и проще просто самому тречить историю матчей
 
Последнее редактирование:
Можно ли как то сымитировать дисконнект и реконнект игрока в редакторе? Хочу понять что происходит с данными, например соответствует ли первоначальный PlayerID тому, что приходит в dota_player_reconnected. Как меняется контроллер игрока и тд.
 
После последнего апдейта не загружаются lua скрипты на выделенном сервере. Никто не сталкивался?
 
Очередное сломанное обновление. debug. не работает на выделенных серверах. Убирайте его упоминание.
Для TypeScript проектов
src\vscripts\tsconfig.json установить в tsconfig.json "sourceMapTraceback": false
в src\vscripts\lib\dota_ts_adapter.ts заменить getFileScope
JavaScript:
function getFileScope(): [any, string] {
    const dbg = debug as any;
    if (!dbg || type(dbg.getinfo) !== "function") {
        return [getfenv(3), "=[no_debug]"];
    }

    let level = 1;
    while (true) {
        const info = dbg.getinfo(level, "S");
        if (info && info.what === "main") {
            return [getfenv(level), info.source!];
        }

        level += 1;
    }
}
 
Последнее редактирование:
Друзья, подскажите пожалуйста, есть какие-то гайды (я то ли слепой, то ли тупой) по созданию карты, охватывающие не эдитор (там просто как в пейте рисуешь и всё, 0 проблем). Нужен именно выход в продакшн - настройки освещения, установка объектов, бараков, башен с модельками и анимацией, etc.
 
Последнее редактирование:
И сразу ещё вопрос: классический способ бинда клавиш в кастомном интерфейсе (через addoninfo + Game.AddCommand() в js) имеет одну довольно странную проблему. Когда я через консоль запускаю кастомку, Game.AddCommand() биндит команду и привязывает к ней колбэк. Но если выйти из лобби, и, не закрывая доту, запустить ещё одно, то на этой строчке в логах вылетает ошибка
Код:
 Cannot create ConCommand '+my_custom_command' - ConCommand with that name already exists.
Проблема в том, что старая команда ссылается на абсолютно, полностью протухший колбэк. Это даже не потеря контекста, это потеря функции как таковой, в ней даже принты не работают, так что судя по всему, команда ссылается на пустоту в памяти. Я решил эту проблему через регистрацию команды на сервере для каждого игрока по отдельности по запросу. А у клиентов по ответу сервера привязываю динамически бинд к той команде которую выдал сервер клиенту индивидуально. Но это капец какой костыль. Кто с этим сталкивался и как решали?
 
Последнее редактирование:
И сразу ещё вопрос: классический способ бинда клавиш в кастомном интерфейсе (через addoninfo + Game.AddCommand() в js) имеет одну довольно странную проблему. Когда я через консоль запускаю кастомку, Game.AddCommand() биндит команду и привязывает к ней колбэк. Но если выйти из лобби, и, не закрывая доту, запустить ещё одно, то на этой строчке в логах вылетает ошибка
Код:
 Cannot create ConCommand '+my_custom_command' - ConCommand with that name already exists.
Проблема в том, что старая команда ссылается на абсолютно, полностью протухший колбэк. Это даже не потеря контекста, это потеря функции как таковой, в ней даже принты не работают, так что судя по всему, команда ссылается на пустоту в памяти. Я решил эту проблему через регистрацию команды на сервере для каждого игрока по отдельности по запросу. А у клиентов по ответу сервера привязываю динамически бинд к той команде которую выдал сервер клиенту индивидуально. Но это капец какой костыль. Кто с этим сталкивался и как решали?
Я видел хитрый хак с привязкой текущей даты и времени в unix timestamp к имени. Попробуй, может это именно то что тебе нужно.

На счёт маппинга, к сожалению - особых туториалов нет. Но у нас тут недавно (Aug' 25) был стрим на твиче касательно всего функционала хаммера: https://www.twitch.tv/withvoidwithin - но кажись автор скрыл то видео. Я лично не до конца понимаю что значит фраза "настройки освещения, установка объектов, бараков, башен с модельками и анимацией, etc.". Это всё настраивается индивидуально под нужды автора, причём внутри каждого объекта (посредством нажатия CTRL+ENTER). Там и свет контролируется, и анимации выбираются, и объекты прописанные в npc_units.txt - так что чуть-чуть контекста не помешало бы. Возможно, вполне возможно, я бы мог помочь, если бы понял в чём конкретно цимес.
 
Я видел хитрый хак с привязкой текущей даты и времени в unix timestamp к имени. Попробуй, может это именно то что тебе нужно.

На счёт маппинга, к сожалению - особых туториалов нет. Но у нас тут недавно (Aug' 25) был стрим на твиче касательно всего функционала хаммера: https://www.twitch.tv/withvoidwithin - но кажись автор скрыл то видео. Я лично не до конца понимаю что значит фраза "настройки освещения, установка объектов, бараков, башен с модельками и анимацией, etc.". Это всё настраивается индивидуально под нужды автора, причём внутри каждого объекта (посредством нажатия CTRL+ENTER). Там и свет контролируется, и анимации выбираются, и объекты прописанные в npc_units.txt - так что чуть-чуть контекста не помешало бы. Возможно, вполне возможно, я бы мог помочь, если бы понял в чём конкретно цимес.
о, спасибо! у меня привязка к айди, и команду создаёт сервер а не игрок, там несложно в целом. Просто удивительно что срок жизни консолевской команды, созданной от клиента, до сих пор не пофиксили. я был уверен что просто что-то простое упускаю. А по поводу вопросов карты могу поконкретнее вопросы задать, я их изначально такими общими сформулировал потому что надеялся не на ответ а на ссылкочку какую-нибудь.
1) есть такая хитрая сущность - env_global_light. и вот у неё огромнейшее количество настроек, и непонятно что за что отвечает, и как её настраивать кроме как методом научного тыка
2) модельки таверов я нашёл в сущностях, но эти модельки статичные и никого не бьют. Как поставить именно обычные тавера? Их нужно самому создавать в npc_custom и спавнить в lua? тогда в какой момент спавнить их? при инициализации, или слушать событие game_rules_state_change?
3) аналогично по баракам, трону и фонтану. Фонтан в идеале должен бить точно так же как обычный, а не только хилить
4) миникарта сама по себе не компилируется, так? что нужно чтобы её скомпилить?
5) какой минимальный джентльменский набор сущностей необходим для старта? достаточно будет поставить один единственный пребаф basic_entities и разделить спавны команд? или есть ещё какие-то?

Да и в целом вот этот переход от "нарисовал рейльеф и леса" к "получил готовую играбельную карту", мне лично показался не очень освещённым. Я первый пункт выполнил, и теперь пытаюсь понять как мне уже вот её добить
 
Последнее редактирование:
о, спасибо! у меня привязка к айди, и команду создаёт сервер а не игрок, там несложно в целом. Просто удивительно что срок жизни консолевской команды, созданной от клиента, до сих пор не пофиксили. я был уверен что просто что-то простое упускаю. А по поводу вопросов карты могу поконкретнее вопросы задать, я их изначально такими общими сформулировал потому что надеялся не на ответ а на ссылкочку какую-нибудь.
1) есть такая хитрая сущность - env_global_light. и вот у неё огромнейшее количество настроек, и непонятно что за что отвечает, и как её настраивать кроме как методом научного тыка
2) модельки таверов я нашёл в сущностях, но эти модельки статичные и никого не бьют. Как поставить именно обычные тавера? Их нужно самому создавать в npc_custom и спавнить в lua? тогда в какой момент спавнить их? при инициализации, или слушать событие game_rules_state_change?
3) аналогично по баракам, трону и фонтану. Фонтан в идеале должен бить точно так же как обычный, а не только хилить
4) миникарта сама по себе не компилируется, так? что нужно чтобы её скомпилить?
5) какой минимальный джентльменский набор сущностей необходим для старта? достаточно будет поставить один единственный пребаф basic_entities и разделить спавны команд? или есть ещё какие-то?

Да и в целом вот этот переход от "нарисовал рейльеф и леса" к "получил готовую играбельную карту", мне лично показался не очень освещённым. Я первый пункт выполнил, и теперь пытаюсь понять как мне уже вот её добить
1) есть такая хитрая сущность - env_global_light...
Я бы добавил локальную↓ сущность, помимо глобальной которая нужна чтоб в редакторе видеть освещение (хоткей F6/F5)
ent_dota_lightinfo - очень удобно для определённых локаций выставить радиус влияния освещения, туман, клубни дыма и даже погоду. вот пример как она выглядит, если у энтити отключить интерфейс в хаммере (VIEW RAW - сырой вид):

1777642381860.png
2) модельки таверов я нашёл в сущностях, но эти модельки статичные и никого не бьют...
Тут на твоё усмотрение, можешь глянуть HOLDOUT_EXAMPLE/maps из библиотеки кастомок, там вышки и трон уже стоят в самом редакторе, а значит инициализируются (спаунятся) прямо во время прогрузки карты; кажется совпадает с STRATEGY TIME (наблюдение автора - мой слабенький комп лагает во время пика героев).

3) аналогично по баракам, трону и фонтану. Фонтан в идеале должен бить точно так же как обычный, а не только хилить.
Глянь OVERTHROW/maps исходники, там тоже фонтан инициализируется в хаммере. Помучаешься немного с дабл-кликом по префабам, чтоб понять как редактировать, но думаю справишься.

4) миникарта сама по себе не компилируется, так? что нужно чтобы её скомпилить?
Для настраиваеомой - Нужны
а. WORLD_BOUNDS - генерируются сами по дефолту, размер - максимальные границы твоей карты, можешь не юзать;
б. 2 (ДВЕ) minimap энтити (забыл точное название), расставленные по диагональноудалённым углам, можешь не юзать.
Или
просто поставь галочку CREATE MINIMAP AFTER MAP LOADING (окно вызываемое на F9) - стандартный метод, миникарта создастся по максимальным границам карты;
позже можешь редактировать созданную миникарту (формат TGA - наследник движка контр-страйк 1.1) - фотошопом. Лежит в MATERIALS/overview

5) какой минимальный джентльменский набор сущностей необходим для старта? достаточно будет поставить один единственный пребаф basic_entities и разделить спавны команд? или есть ещё какие-то?
Не знаю, я не джентельмен.
 
Последнее редактирование:
  • Нравится
Реакции: k0tejka
Реклама: