Урок Делаем кастомные выпадающие предметы с модельками / редизайн текстуры / дизайн иконки

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
Доброго времени суток, господа мододелы, решил тут поделиться фишечкой, может кто-то это не знал, а кто-то знал и умалчивал, так вот:
Сегодня я покажу в примере, как создать свой простой/универсальный предмет сделать ему модельку когда он лежит на земле (аля рапира, ботинки и прочее), поменять предмету текстуру и как ему накинуть иконку в панели предметов, чтож начнем.

Система дропов предметов / спавна предметов позаимствована у "vulkantsk"
Идем по пути: ********\steam\steamapps\common\dota 2 beta\game\dota_addons\********\scripts\vscripts\ (вместо * ваш путь), создаем тут файлик "item_drop.lua"
Lua:
if ItemDrop == nil then
    _G.ItemDrop = class({})
end

-- items - список предметов, которые могут выпасть
-- chance - шанс выпадения (если не определен, то равен 100%) список юнитов из которых могут выпасть предметы ( если не определен, то выпадает с любого юнита)
-- duration - длительность жизни предмета на полу( если не определен, то предмет лежит бесконечно)
-- limit - лимит предметов - количество предметов, которые могут выпасть( если не определен, то количество не ограничено)
-- units - список юнитов, из которых падает предмет

ItemDrop.item_drop = {
--        {items = {"item_branches"}, chance = 5, duration = 5, limit = 3, units = {"npc_name"} },
        {items = {"item_swen_sword"}, units = {"Wooden_box1"}}, --100% шанс дропа из сундука
        {items = {"item_flask"}, chance = 5, duration = 5},-- глобальный дроп в 5% фласки
        {items = {"item_tango_single"}, chance = 15, duration = 3},-- глобальный дроп в 15% кусок тангуса
        {items = {"item_enchanted_mango"}, chance = 8, duration = 5},-- глобальный дроп в 8% манго
}

-- point_name - название таргета
-- item_name - название предмета

ItemDrop.secret_items = {
--    ["point_name"] = "item_name",
    ["item_spawner_swen_sword"] = "item_swen_sword",

}
function ItemDrop:InitGameMode()
    ListenToGameEvent('entity_killed', Dynamic_Wrap(self, 'OnEntityKilled'), self)
    ListenToGameEvent('game_rules_state_change', Dynamic_Wrap(self, 'OnGameRulesStateChange'), self)
end

function ItemDrop:OnGameRulesStateChange()
    local newState = GameRules:State_Get()

    if newState == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
        ItemDrop:SpawnItems()
    end
end

function ItemDrop:SpawnItems()
    local items = self.secret_items
    for point_name,item_name in pairs(items) do
        local point = Entities:FindByName(nil, point_name)
        if point then
            point = point:GetAbsOrigin()
            local newItem = CreateItem( item_name, nil, nil )
            local drop = CreateItemOnPositionSync( point, newItem )
        else
            print("point with name "..point_name.." dont exist !")
        end
    end
end

function ItemDrop:OnEntityKilled( keys )
    local killedUnit = EntIndexToHScript( keys.entindex_killed )
    local name = killedUnit:GetUnitName()
    local team = killedUnit:GetTeam()

    if team ~= DOTA_TEAM_GOODGUYS and name ~= "npc_dota_thinker" then
        ItemDrop:RollItemDrop(killedUnit)
    end

end

function ItemDrop:RollItemDrop(unit)
    local unit_name = unit:GetUnitName()

    for _,drop in ipairs(self.item_drop) do
        local items = drop.items or nil
        local items_num = #items
        local units = drop.units or nil -- если юниты не были определены, то срабатывает для любого
        local chance = drop.chance or 100 -- если шанс не был определен, то он равен 100
        local loot_duration = drop.duration or nil -- длительность жизни предмета на земле
        local limit = drop.limit or nil -- лимит предметов
        local item_name = items[1] -- название предмета
        local roll_chance = RandomFloat(0, 100)
       
        if units then
            for _,current_name in pairs(units) do
                if current_name == unit_name then
                    units = nil
                    break
                end
            end
        end

        if units == nil and (limit == nil or limit > 0) and roll_chance < chance then
            if limit then
                drop.limit = drop.limit - 1
            end

            if items_num > 1 then
                item_name = items[RandomInt(1, #items)]
            end

            local spawnPoint = unit:GetAbsOrigin()
            local newItem = CreateItem( item_name, nil, nil )
            local drop = CreateItemOnPositionForLaunch( spawnPoint, newItem )
            local dropRadius = RandomFloat( 50, 100 )

            newItem:LaunchLootInitialHeight( false, 0, 150, 0.5, spawnPoint + RandomVector( dropRadius ) )
            if loot_duration then
                newItem:SetContextThink( "KillLoot",
                    function()
                        if drop:IsNull() then
                            return
                        end

                        local nFXIndex = ParticleManager:CreateParticle( "particles/items2_fx/veil_of_discord.vpcf", PATTACH_CUSTOMORIGIN, drop )
                        ParticleManager:SetParticleControl( nFXIndex, 0, drop:GetOrigin() )
                        ParticleManager:SetParticleControl( nFXIndex, 1, Vector( 35, 35, 25 ) )
                        ParticleManager:ReleaseParticleIndex( nFXIndex )
                    --    EmitGlobalSound("Item.PickUpWorld")

                        UTIL_Remove( item )
                        UTIL_Remove( drop )
                    end, loot_duration )
            end
        end
    end
end

function KillLoot( item, drop )

    if drop:IsNull() then
        return
    end

    local nFXIndex = ParticleManager:CreateParticle( "particles/items2_fx/veil_of_discord.vpcf", PATTACH_CUSTOMORIGIN, drop )
    ParticleManager:SetParticleControl( nFXIndex, 0, drop:GetOrigin() )
    ParticleManager:SetParticleControl( nFXIndex, 1, Vector( 35, 35, 25 ) )
    ParticleManager:ReleaseParticleIndex( nFXIndex )
--    EmitGlobalSound("Item.PickUpWorld")

    UTIL_Remove( item )
    UTIL_Remove( drop )
end

ItemDrop:InitGameMode()

В этой же папке откройте ваш "addon_game_mode.lua" и добавьте строчку: require ("item_drop") - она подключит созданный вами ранее LUA скрипт

Теперь приступим непосредственно к созданию модели и все что с ней связано вплоть до текстуры
1) Открываем любой Ваш проект через "Dota 2 tools"
2) Открываем в нём "Hammer"
3) Создаем новую пустую карту (можете её даже не сохранять, она нужна чтобы отцентрировать бедующую модель)
4) Переносите понравившуюся модель в центр сетки
изображение_2021-12-31_051331.pngесли не отображается просто нажми на него
- Я добавил ландшафт, чтобы понимать, как будет смотреться предмет когда выпадет, как лут (это не обязательно - лишь наглядная демонстрация)
5) Выберите Вашу модель
изображение_2021-12-31_051534.pngесли не отображается просто нажми на него
6) Нажмите в контекстном меню кнопку: File -> Export Selected
7) Введите название для Вашей модели и сохраните её по пути: \steam\steamapps\common\dota 2 beta\content\dota_addons\*\models (вместо * ваш путь)
8) Откройте в правом верхнем почти углу Tools -> Model editor
изображение_2021-12-31_052019.pngесли не отображается просто нажми на него
9) В появившемся
изображение_2021-12-31_052124.pngесли не отображается просто нажми на него
жмем: New VMDL From Mesh File или же сочетание клавиш "Ctrl+M" -> выбираем сохраненную ранее модель в формате "DMX" -> Появится диалоговое окно уточнения пути сохранения будущей модели -> Нажимаем OK
10) Нас встречает окно с Вашей моделью сохраненной ранее, положение модели в котором вы его экспортировали будучи на 6м шаге!
изображение_2021-12-31_052622.pngесли не отображается просто нажми на него
11) Скачиваем Box.fbx <- (click) - простая анимация пустоты - с помощью неё мы добавим кость
12) После скачивания помещаем её по пути :\steam\steamapps\common\dota 2 beta\content\dota_addons\***\models\ (Вместо * ваш путь)
13) Возвращаемся в наше окно с моделью, на строке контекстного меню находим кнопку: Animation -> Add Animation -> box.fbx (Выбираем наш ранее скачанный файлик с анимацией пустоты дающий нам косточку) (P.s. Управление такое же как и в Hammer: WASD + ПКМ для поворота камеры)
14) После предыдущего шага должна появиться строка Skeleton и Animations в древе файла слева
15) Нажимаем в контекстном меню кнопку: Model -> Hitboxes -> Add Hitbox -> соглашаемся с названиями либо переименовываем по желанию
16) Теперь настроим хитбокс у модели, выбираем в левом древе: Hitboxes -> HitboxSetList_X -> default -> X (X - название)
17) Для отображения хитбоксов необходимо включить визуалы на контекстном меню: Display -> Show all -> По желанию можно включить куб предмета (по нажатию на Show all они не отображаются, в дисплее оранжевый / фиолетовый / желтые кружки + физика зеленый)
18) После того как нажали на Show all у нас должен появиться зеленый квадратик - наш Хитбокс растягиваем его под модель: он нужен для того, что бы в игре модель можно было трогать как предметы, а не пустые модельки которые нельзя выбрать
19) Как только подогнали хитбокс
изображение_2021-12-31_054526.pngесли не отображается просто нажми на него
- для более точной настройки используйте значения Bounds в правой колонке
20) Сохраняем нашу готовую модель в контекстном меню нажимаем: File -> Save (ctrl+s)
20.1) Работа с моделью закончена - это то что будет выпадать на землю
20.2) Не спешите закрывать окно, оно щас пригодится чтобы сделать иконку и получить быстро материал для модели (чтоб не бегать по 100 раз в Asset Browser)

Переходим к созданию новой текстуры для предмета
По умолчанию, нельзя взять у готовой модели текстуру в формате TGA/PNG/PSD они все закомпилены, самый простой и быстрый способ это:
1) В том же окне нажимаем на контекстном меню кнопку: Asset -> Open related files -> *** Material Editor (* там много писать.. лень) -> .vmat ( - название материала по умолчанию в формате vmat)
2) Открылось
изображение_2021-12-31_055607.pngесли не отображается просто нажми на него
, материал котого нельзя заменить, но я скажу хитрость, как оттуда взять эту самую текстуру
3) Жмем в правом окошке, где сфера, на полотно 3я кнопка и получаем нашу
изображение_2021-12-31_060552.pngесли не отображается просто нажми на него
(она может быть статичной или динамичной)
3.1) Статичная - когда картинка не изменяется (показываю на этом примере)
3.2) Динамичная когда что-то переливается
4) Нехитрым способом WIN+SHIFT+S выделяем область нашей текстуры, открываем любой удобный нам редактор, я открою фотошоп
4.1) Создаю новый файл 1024х1024 - размер текстуры -
изображение_2021-12-31_061541.png если не отображается просто нажми на него
4.2) Вставляю туда текстуру, перекрашиваю её
Swen_sword.pngесли не отображается просто нажми на него
4.3) Сохранив новую текстуру в формате PNG | TGA | PSD | TIF
4.4) Идем обратно в окно материалов в контекстном меню нажимаем: File -> New -> Он не даст редактировать пока не сохраним! -> File -> Save As.. -> любое название для материала
4.5) Если все сделано верно, то будут доступны функции для материалов и добавление материала, нажимаем на папку для выбора Color:
a9a9f054d823.png
если не отображается просто нажми на него
- пришлось уже вставлять ссылками картинки, лимит 10 файлов (картинок)
4.6) В появившемся окне выбора текстуры вместо параметра: Images выбираем All Images и выбираем Вашу готовую текстуру
5b187048af37.png
если не отображается просто нажми на него
4.7) Сохраняем Ваш материал в контекстном меню кнопка: File -> Save (ctrl+s)
4.8) Теперь нам доступен новый материал в "Asset Browser"
4.9) Идем в папку с Вашей моделью (куда Вы изначально сохранили МОДЕЛЬ.DMX)
4.10) Открываем Вашу модель.DMX редактором: Notepad ++ | Sublime text | Прочими редакторами
4.11) Ищем такую строку:
Код:
"material" "DmeMaterial"
{
    "id" "elementid" "b96f1baf-98cf-4612-975d-0c8171d69a9a"
    "name" "string" "material"
    "mtlName" "string" "materials/models/items/sven/sven_ti7_immortal_sword/sven_ti7_immortal_sword.vmat"
}

materials/models/items/sven/sven_ti7_immortal_sword/sven_ti7_immortal_sword.vmat - является материалом по умолчанию у предмета
Заменяем эту строчку путем к Вашему материалу, я его беру из "ASSET BROWSER" нажав: ПКМ на материал -> Copy Asset Name
a.vmat - путь к моему файлу (он не находится в папке models или material, а просто валяется в папке карты)
4.12) Готово, Вы молодцы и сделали теперь уже лежащий предмет в игре с Вашей текстуркой
Переходим к созданию иконки
1) Открываем любой доступный фото/вектор редактор (желательно конечно же вектор - он не потеряет качество), но я по привычке открою фотошоп
2) Создаем размеры: 88х33 px dpi 300 (стандартно у меня всегда)
3) Заливаем туда картинку подготовленную заранее в хорошем разрешении для нашего предмета в фотошопе будет пиксельная война, для таких приколов лучше использовать CorelDraw
3.1) Покажу лайфхак как замутить со своей наложенной готовой текстурой иконку для предмета:
13a79df349bc.png
если не отображается просто нажми на него
Жмем все те же Win+Shift+S выделяем что надо заскринить, идем в редактор и вставляем это в нашу иконку - немного её редачим, фон там накидываем и так далее
Вот картинка без фона в более менее хорошем качестве
если не отображается просто нажми на него
Вот картинка как иконка с фоном
если не отображается просто нажми на него
- мелкие недочеты ретуши уже не видны, да и в падлу было красиво делать

ПУТЬ ДЛЯ СОХРАНЕНИЯ ИКОНОК:
ДИСК:\steam\steamapps\common\dota 2 beta\game\dota_addons\КАРТА\resource\flash3\images\items\ (можно создавать подпапки)

Перейдем теперь к добавлению нашего предмета / меча, в игру :
1) Открываем ДИСК:\steam\steamapps\common\dota 2 beta\game\dota_addons\КАРТА\scripts\npc\ ФАЙЛ "npc_items_custom.txt"
Пример исходного кода с одним кастомным предметом - мечем который я рассматривал в этом уроке:

Код:
"DOTAAbilities"
{
//=================================================================================================================
// SWEN SWORD - Меч Свена
//=================================================================================================================
"item_swen_sword" // название предмета
{
    "ID"                        "2122" // уникальный ID предмета (не должны повторяться)
    "AbilityBehavior"                "DOTA_ABILITY_BEHAVIOR_PASSIVE" // Что из себя представляет эффект от предмета (в данном случае пассивку)
    "BaseClass"                    "item_datadriven" // База предмета
    "Model"                        "models/swen_sword.vmdl"// Путь к модельке предмета
    "AbilityTextureName"                "Swen_sword" // Путь к текстурке иконки 88х33 в моём случае просто в папке items
    // Item Info
    //---------------------------------------------------------------------------------------------------------
    "ItemCost"                    "9999999999" // цена покупки
    "ItemSellable"                    "0" // возможность продать
    "ItemKillable"                    "0" // возможность сломать шмотку
    "ItemQuality"                    "epic" // где будет предмет в магазине
    "ItemShopTags"                    "damage" // тэг в поиске магазина
    "ItemAliases"                    "sword_life" // Алиас для магазина
    "ItemShareability"                "ITEM_NOT_SHAREABLE" // возможность стакать предмет - в этом случае уникальный (аля рапира)
    "ItemDeclarations"                "DECLARE_PURCHASES_TO_TEAMMATES | DECLARE_PURCHASES_TO_SPECTATORS | DECLARE_PURCHASES_IN_SPEECH" -- для шопа что-то
    "Modifiers" // модификатор
    {
        "modifier_sword_life" // название модификатора
        {
            "Passive"            "1" // тип модификатора
            "IsHidden"            "1" // видимость модификатора
            "Properties" // действие модификатора
            {
                "MODIFIER_PROPERTY_BASEATTACK_BONUSDAMAGE"             "%bonus_damage" // дать носителю дамаг от абилки bonus_damage
            }
        }
    }
    //  Special    // специальные вставки
    //---------------------------------------------------------------------------------------------------------
   "AbilitySpecial" // абика
    {

        "01" // нумирация

        {

            "var_type"            "FIELD_INTEGER" // тип исчисления (целочисленное)

            "bonus_damage"            "150" // бонус от абилки дамаг +150

        }

    }

}
}
}
2) Возвращаемся в наш файл Item_drop.lua, начинаем добавлять предмет (в коде он уже добавлен как шанс дропа из ящика - но у вас не будет этого самого ящика по этому любой ваш юнит на карте) либо просто заспавните его на полу через "ItemDrop.secret_items", напишите название info_target и название предмета
ДИСК:\steam\steamapps\common\dota 2 beta\game\dota_addons\КАРТА\resource\ файл "addon_russian.txt"
Lua:
"lang"
{
    "Language"        "russian"
    "Tokens"
    {  
        "addon_game_name"            "Название вашей кастомки"
        "DOTA_Tooltip_ability_item_swen_sword"                      "Легендарный меч Свена"
        "DOTA_Tooltip_ability_item_swen_sword_Lore"                    "По легенде этот мечь способен прорубать толпы врагов"
        "DOTA_Tooltip_ability_item_swen_sword_bonus_damage"            "+к урону"
    }
}
Возвращаемся в Hammer пробуем компилить и радуемся
fee35b7172e2.png
если не отображается просто нажми на него
если не отображается просто нажми на него
если не отображается просто нажми на него
49463a076b7a.png
если не отображается просто нажми на него

Спасибо за внимание :з
 
Последнее редактирование:

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
Сразу скажу - ты молодец и все в таком духе, но мой внутренний перфекционист чуть не удушился на месте...
Спойлер: Создание текстуры
Настоятельно рекомендую так не делать, в простонародье это называется КОСТЫЛЬ. за который потом можно получить.
Обычному дизайнеру/художнику нельзя вменять халатность при работе с дотой, но если он все же участник команды и не случайный одноразовый фрилансер - ему стоит глубже изучить технические моменты в доте.
Для извлечения графических "исходников" из доты есть прекрасная программа VRF (полное название Valve Resource Viewer, но раньше видимо называлась Valve Resource Format, поэтому и сохранилось VRF).
4) Нехитрым способом WIN+SHIFT+S выделяем область нашей текстуры, открываем любой удобный нам редактор, я открою фотошоп
4.1) Создаю новый файл 1024х1024 - размер текстуры -
именно в 4 пункте у меня и задергался глаз , ну и заодно пункт 4.1 надо корректно выбирать размер, а не потому что захотелось. иначе потом получаются монстры которые не влезают в размер кастомки.... (размеры текстур в доте не все одинаковые) 1024 х 1024 подойдет скорее для полноценной модельки героя/юнита , но никак не для предмета на земле.. не знаю настолько ли умная дота что бы для предмета на земпле автоматически сделать LOD текстуру... (сомнительно). но опять же через VRF можно посмотреть для тех же сундуков сапогов и прочего какие параметры у текстур . материал может состоять из 5-6 слоев (кроме основной текстуры, блики, свечения, отражения итд) в итоге несчастную модельку в кастомке может раздуть, как дрожжевое тесто..

- пришлось уже вставлять ссылками картинки, лимит 10 файлов (картинок)
рекомендую разбить просто на 2 поста - иначе когда сдохнет лимит или сервис куда ты залил картинки твое руководство превратится в тыкву (и уши начнут краснеть)
***************
Находил тут в некоторых кастомках когда бесполезные файлы от текстур (которые художник/дизайнер даже сам не обрабатывал) занимали 200 метров из 900 МБ всего проекта... (просто потому что вальве подтянула откуда то psd и скомпилила их ... каждую под 20 метров).
***************
И повторюсь, я не автора хочу уколоть или обидеть, а именно указать на моменты которые можно сделать лучше и правильнее.
 
  • Нравится
  • Хаха
Реакции: vulkantsk и -ExotiC-

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
Сразу скажу - ты молодец и все в таком духе, но мой внутренний перфекционист чуть не удушился на месте...

Настоятельно рекомендую так не делать, в простонародье это называется КОСТЫЛЬ. за который потом можно получить.
Обычному дизайнеру/художнику нельзя вменять халатность при работе с дотой, но если он все же участник команды и не случайный одноразовый фрилансер - ему стоит глубже изучить технические моменты в доте.
Для извлечения графических "исходников" из доты есть прекрасная программа VRF (полное название Valve Resource Viewer, но раньше видимо называлась Valve Resource Format, поэтому и сохранилось VRF).

именно в 4 пункте у меня и задергался глаз , ну и заодно пункт 4.1 надо корректно выбирать размер, а не потому что захотелось. иначе потом получаются монстры которые не влезают в размер кастомки.... (размеры текстур в доте не все одинаковые) 1024 х 1024 подойдет скорее для полноценной модельки героя/юнита , но никак не для предмета на земле.. не знаю настолько ли умная дота что бы для предмета на земпле автоматически сделать LOD текстуру... (сомнительно). но опять же через VRF можно посмотреть для тех же сундуков сапогов и прочего какие параметры у текстур . материал может состоять из 5-6 слоев (кроме основной текстуры, блики, свечения, отражения итд) в итоге несчастную модельку в кастомке может раздуть, как дрожжевое тесто..

рекомендую разбить просто на 2 поста - иначе когда сдохнет лимит или сервис куда ты залил картинки твое руководство превратится в тыкву (и уши начнут краснеть)
***************
Находил тут в некоторых кастомках когда бесполезные файлы от текстур (которые художник/дизайнер даже сам не обрабатывал) занимали 200 метров из 900 МБ всего проекта... (просто потому что вальве подтянула откуда то psd и скомпилила их ... каждую под 20 метров).
***************
И повторюсь, я не автора хочу уколоть или обидеть, а именно указать на моменты которые можно сделать лучше и правильнее.
Это все прекрасно, меня ты не обидишь ибо - это мои успехи за +- 2 недели мододела, я делаю как мне удобно и не особо парюсь, все же, да как гайд это не подходит, но этого на форуме не было... Я лишь восполнил это своими действиями и как так получилось
 
  • Нравится
Реакции: kain

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
  • Грусть
Реакции: kain

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
тебе бы логику подтянуть, вообще не к месту про токсиков. ты что девочка лет 5 что бы я подбирал слова для тонкой неокрепшей психологической личности ? судя по фото ты уже здоровая детина.
что тогда, что сейчас - я указал тебе строго и по делу о проблемных местах. картинка является наиболее кратким вариантом вместо нескольких предложений.

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

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

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
тебе бы логику подтянуть, вообще не к месту про токсиков. ты что девочка лет 5 что бы я подбирал слова для тонкой неокрепшей психологической личности ? судя по фото ты уже здоровая детина.
что тогда, что сейчас - я указал тебе строго и по делу о проблемных местах. картинка является наиболее кратким вариантом вместо нескольких предложений.

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

PS а товарищу модератору самое умное что смог, поддержать того кто превратил вполне себе нужный гайд (хоть и написан не идеально) , в тыкву "и так сойдет". слов нету. верной дорогой закапываешь ресурс.
Тебе бы научится воспринимать шутки, да и в целом ты прав мне похуй на этот форум и все комьюнити доты в целом, но почему то я все же выложил "недогайд" для новорегов, который может как то и поможет им в будущем, хотя какое может быть будущее у дотера мододела и в целом у дотера, хаха
Ты я гляжу за 7 лет все ещё тут тусуешься, видимо удачно проекты идут, раз находишь время посещать сей неокрепшие умы
Я же сделал это исключительно в своих интересах, что бы не забыть и закрепить, а раз такого ни кто не показывал, ты сейчас видишь эту тему и да твоя токсичность зашкаливает видимо тебя обижали((
 
  • Нравится
Реакции: S1nGGle

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
PS а товарищу модератору самое умное что смог, поддержать того кто превратил вполне себе нужный гайд (хоть и написан не идеально) , в тыкву "и так сойдет". слов нету. верной дорогой закапываешь ресурс.
Отчасти ты прав, но лишь от части.
В данный момент ты рассуждаешь мимо контекста, кто этот человек и зачем он это делает.
Я вижу что информация подана громоздко, много лишнего и тп и тд.
Но оно хотя бы есть, по хорошему.
Тут можно больше половины информации убрать ну или ограничиться ссылками на другие гайды.
Другую половину заменить картинками или видосом для большей понятности, что не говори, а информация годная тут есть.
Когда я первый раз увидел что он это делает и показал мне, тогда я сказал "это очень круто, я никогда подобного не видел". По моему совету он написал гайд, потратил своё время и силы. Теперь ты можешь давать свою критику.

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

iia3uk666

Друзья CG
18 Дек 2021
411
70
Проект
Ушел с CG
Отчасти ты прав, но лишь от части.
В данный момент ты рассуждаешь мимо контекста, кто этот человек и зачем он это делает.
Я вижу что информация подана громоздко, много лишнего и тп и тд.
Но оно хотя бы есть, по хорошему.
Тут можно больше половины информации убрать ну или ограничиться ссылками на другие гайды.
Другую половину заменить картинками или видосом для большей понятности, что не говори, а информация годная тут есть.
Когда я первый раз увидел что он это делает и показал мне, тогда я сказал "это очень круто, я никогда подобного не видел". По моему совету он написал гайд, потратил своё время и силы. Теперь ты можешь давать свою критику.

Человек без обыта, поэтому написал достаточно громоздко, много лишнего.
Если вспомнить то твои первые статью тоже были не особо "компактными", поэтому ты должен его понять.
В общем если донести истину в удобной для читателя формы для тебя является приоритетом, то могу предложить следующее.
Я дам тебе исходник этой статьи и ты переделаешь его в более лучшую совершенную форму, как тебе такая идея ?
Вы будете соавторами
Забей, Виталий - можете делать что угодно с гайдами, использовать информацию в своих интересах, править исправлять или удалять, мне все равно - я уже не вспомню что я там делал ибо давно забил хуй на кастомки по этому мне все равно на то, как это обсуждается и комментируется мне просто оповещения на почту приходят о том что тут кто-то написал
Что касается более новой версии - в новом редакторе моделей - там я максимально описал шаги, что бы новорег самостоятельно смог внедрять любые 3д модели с текстурами и анимациями в доту 2 (кусок говна)
 

kain

Активный
2 Окт 2015
125
63
steamcommunity.com
Проект
GreenCircleTD
как тебе такая идея ?
спс на ошибках учатся, а не что то другое) ты же не просто так попал в чс . спс больше не хочу)
оправдывать качество статьи тем что, ну она хотя бы есть.. такое себе..

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

PS иногда лучше ничего не писать...
PPS а вышеуказанному человеку что бы не тригериться на уведомления, можно поставить игнор, даже на меня лично.
PPPS почисти от флуда тему и забей.
 

vulkantsk

Супермодератор
Команда форума
21 Июн 2017
1,147
196
www.dotabuff.com
Проект
Roshan defense
спс на ошибках учатся, а не что то другое) ты же не просто так попал в чс . спс больше не хочу)
оправдывать качество статьи тем что, ну она хотя бы есть.. такое себе..
Есть вещи которые понимаешь только ТЫ или Я.
Это делает нас уникальным субьектами.
Независимо от того, как я отношусь к тебе как человеку, я признаю тебя как творца и специалиста.
Я понимаю, что ты нужен комьюнити, ты можешь дать что-то уникальное, что недоступно другим.
 
Реклама: