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

Статус
В этой теме нельзя размещать новые ответы.
при смерти SetTimeUntilRespawn()
Есть эвент
Код:
"ListenToGameEvent( "entity_killed(это слушатель его не меняем)", Dynamic_Wrap( ComicsVsAnime(сюда своё название мода), 'OnEntityKilled(это функция которая вызывается)' ), self )"
И вот,когда юнит умирает(он вычисляет все смерти юнитов) то делаем такое

Код:
function ComicsVsAnime:OnEntityKilled( event ) -- вызываемая функция
    local killedUnit = EntIndexToHScript( event.entindex_killed ) -- Убитый юнит
    local hero = EntIndexToHScript( event.entindex_attacker ) -- Кто убил
        if KilledUnit:IsRealHero() then -- Если это реальный герой то выполняем действия в блоке ниже
            killedUnit:SetTimeUntilRespawn(20--[[Время сюда пишем]] ) -- устанавливаем время респауна
        end
end
Вуаля,ты прокачался
 
Заметил только сейчас, что голду давал сам юнит) Не работает почему-то
Дописал Say(nil,"500", false) в условие, но в игре не выводится.
В чем ошибка?
Say() выводит в чат,если тебе нужно изменить в левом нижнем углу,то тебе нужно менять панораму(если я ничего не путаю)
 
Как сделать возрождение героя только встав на его могилу?Как в пещере пустошь.
Полностью отключаешь возможность респауна,через слушателя смерти делаешь скрипт,что при смерти появляется "гробик" при нажатии дружественного героя он бы его возрождал
 
Say() выводит в чат,если тебе нужно изменить в левом нижнем углу,то тебе нужно менять панораму(если я ничего не путаю)
что? Мне нужно было просто проверить работоспособность скрипта выводом в чат комбинации цифр. Вопрос тогда будет в чем ошибка скрипта
 
Нужно чтобы юнит мог атаковать только героев и их подконтрольных юнитов. Как выставить флаги на эти таргеты?
Самому написать поведение юнита и задавать цель атаки с помощью, например, SetAggroTarget()
 
  • Нравится
Реакции: Pudgergun
Дада вопрос не по Hammer 2014 но я не хочу создавать отдельную тему для этого
Как сделать киллимит чтобы когда команда набрала например 50 киллов и она победила? Я не силён в lua помогите
(как в овертроу)
 
Дада вопрос не по Hammer 2014 но я не хочу создавать отдельную тему для этого
Как сделать киллимит чтобы когда команда набрала например 50 киллов и она победила? Я не силён в lua помогите
(как в овертроу)
Lua:
function CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    limit = 50

    if killed_unit:IsRealHero() then
        killed_unit:GetTeam()
        local team_killer = killer:GetTeam()
       
        if self.TableMayble == nil then
        self.TableMayble = {}
        end

        if self.TableMayble[team_killer] == nil then
        self.TableMayble[team_killer] = 1
        else
            self.TableMayble[team_killer] = self.TableMayble[team_killer] + 1
        end

        if self.TableMayble[team_killer] == limit then
            GameRules:SetGameWinner( team_killer )
        end
    end
end
Как-то так, как в овертроу сделано хз
 
Последнее редактирование:
  • Нравится
Реакции: SniperX
Lua:
function CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    limit = 50

    if killed_unit:IsRealHero() then
        killed_unit:GetTeam()
        local team_killer = killer:GetTeam()
      
        if self.TableMayble == nil then
        self.TableMayble = {}
        end

        if self.TableMayble[team_killer] == nil then
        self.TableMayble[team_killer] = 1
        else
            self.TableMayble[team_killer] = self.TableMayble[team_killer] + 1
        end

        if self.TableMayble[team_killer] == limit then
            GameRules:SetGameWinner( team_killer )
        end
    end
end
Как-то так, как в овертроу сделано хз
Я думаю self.TableMayble[team_killer] = 1 это сколько киллов надо?
 
Я думаю self.TableMayble[team_killer] = 1 это сколько киллов надо?
нет, вот с комментариями
Lua:
function CAddonTemplateGameMode:OnEntityKilled( keys )
    local killed_unit = EntIndexToHScript( keys.entindex_killed )
    local killer = EntIndexToHScript( keys.entindex_attacker )

    limit = 50 --лимит, можно написать вне функции

    if killed_unit:IsRealHero() then --Проверяет есть настоящий ли герой, либо иначе считаться будет каждый юнит
        local team_killer = killer:GetTeam() --записывает команду убийцы

        if self.TableMayble == nil then -- если нет таблицы
            self.TableMayble = {} --то создает
        end

        if self.TableMayble[team_killer] == nil then --если в таблице нет переменной команды
            self.TableMayble[team_killer] = 1 -- то записывает переменную команды = 1
        else
            self.TableMayble[team_killer] = self.TableMayble[team_killer] + 1 --иначе(если есть переменная) записывает ее + 1
        end

        if self.TableMayble[team_killer] == limit then -- если переменная команды = лимиту
            GameRules:SetGameWinner( team_killer ) --то устанавливает победителя - команду которая набрала лимит
        end
    end
end
 
  • Нравится
Реакции: SniperX
никуда, он в 2й строчке addon_game_mode.lua после создания аддона
??? я создал новый чистый аддон и там ничего такого нету только
Lua:
-- Generated from template

if CAddonTemplateGameMode == nil then
    CAddonTemplateGameMode = class({})
end

function Precache( context )
    --[[
        Precache things we know we'll use.  Possible file types include (but not limited to):
            PrecacheResource( "model", "*.vmdl", context )
            PrecacheResource( "soundfile", "*.vsndevts", context )
            PrecacheResource( "particle", "*.vpcf", context )
            PrecacheResource( "particle_folder", "particles/folder", context )
    ]]
end

-- Create the game mode when we activate
function Activate()
    GameRules.AddonTemplate = CAddonTemplateGameMode()
    GameRules.AddonTemplate:InitGameMode()
end

function CAddonTemplateGameMode:InitGameMode()
    print( "Template addon is loaded." )
    GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
end

-- Evaluate the state of the game
function CAddonTemplateGameMode:OnThink()
    if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
        --print( "Template addon script is running." )
    elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then
        return nil
    end
    return 1
end
 
Есть ссылка на дискорд ?
 
??? я создал новый чистый аддон и там ничего такого нету только
Lua:
-- Generated from template

if CAddonTemplateGameMode == nil then
    CAddonTemplateGameMode = class({})
end

function Precache( context )
    --[[
        Precache things we know we'll use.  Possible file types include (but not limited to):
            PrecacheResource( "model", "*.vmdl", context )
            PrecacheResource( "soundfile", "*.vsndevts", context )
            PrecacheResource( "particle", "*.vpcf", context )
            PrecacheResource( "particle_folder", "particles/folder", context )
    ]]
end

-- Create the game mode when we activate
function Activate()
    GameRules.AddonTemplate = CAddonTemplateGameMode()
    GameRules.AddonTemplate:InitGameMode()
end

function CAddonTemplateGameMode:InitGameMode()
    print( "Template addon is loaded." )
    GameRules:GetGameModeEntity():SetThink( "OnThink", self, "GlobalThink", 2 )
end

-- Evaluate the state of the game
function CAddonTemplateGameMode:OnThink()
    if GameRules:State_Get() == DOTA_GAMERULES_STATE_GAME_IN_PROGRESS then
        --print( "Template addon script is running." )
    elseif GameRules:State_Get() >= DOTA_GAMERULES_STATE_POST_GAME then
        return nil
    end
    return 1
end
if CAddonTemplateGameMode == nil then
CAddonTemplateGameMode = class({})
end
Вот же
 
Статус
В этой теме нельзя размещать новые ответы.
Реклама: