Курьер не следует при загрузке героя
Вот собственно часть кода загрузки, в которой сначала присваиваю переменной HaveCipa[Номер игрока] отрицательное, значение, далее присваиваю переменной PlayerColor[Номер игрока] последнего созданного(загруженного) героя. Потом после загрузки самого курьера, присваиваю HaveCipa[Номер игрока] положительное значение и заношу в переменную Cipa[Номер игрока] последнего созданного(загруженного) курьера. И в отдельном триггере заставляю каждую секунду курьера двигатсья за героем: если расстояние между Cipa[Номер игрока] и PlayerColor[Номер этого же игрока] больше 300, то переместить курьера в точку героя со смещением.
Но что-то я делаю не так, если просто создаёшь героя, то всё работает, если сохранитсья и загрузить героя, то курьер не следует за героем.
private nothing Load(string save_code) {
        integer hero_id = DataBase_Id2Hero(Decode(SubString(save_code, 0, 1)))
        integer hero_exp = Decode(SubString(save_code, 1, 5))
        set udg_HaveCipa[GetPlayerId(GetTriggerPlayer()) + 1] = false
        unit hero = CreateUnitAtLoc(GetTriggerPlayer(), hero_id, GetRectCenter(gg_rct_StartLoc), 0.)
        set udg_PlayerColor[GetConvertedPlayerId(GetOwningPlayer(GetLastCreatedUnit())) + 1] = GetLastCreatedUnit()
        TriggerRegisterUnitEvent( T_t2, hero, EVENT_UNIT_DAMAGED )
        T_z(GetPlayerId(GetTriggerPlayer()), hero_exp)
        T_un[GetPlayerId(GetTriggerPlayer())] = hero
        SetHeroXP(hero, hero_exp, false)
        integer i = 0
        while (i < 5) {
            integer skill_level = Decode(StrInd(save_code, 5 + i))
            if (skill_level > 0) {
                UnitAddAbility(hero, DataBase_Id2Spell(hero_id, i + 1))
                SetUnitAbilityLevel(hero, DataBase_Id2Spell(hero_id, i + 1), skill_level)
            }
            ++i
        }
        integer hire_id = DataBase_Id2Hire(Decode(StrInd(save_code, 10)))
        unit hire = CreateUnitAtLoc(GetTriggerPlayer(), hire_id, GetRectCenter(gg_rct_StartLoc), 0. )
        set udg_Cipa[GetPlayerId(GetTriggerPlayer()) + 1] = GetLastCreatedUnit()
        set udg_HaveCipa[GetPlayerId(GetTriggerPlayer()) + 1] = true
        i = 0
        while (i < 6) {
            integer tmp = Decode(SubString(save_code, 11 + 2 * i, 13 + 2 * i))
            integer itm_id = DataBase_Id2Item(tmp)
            if (itm_id != 0) {
                UnitAddItemToSlotById(hero, itm_id, i)
            }
            ++i
        }

Без ответа.


Просмотров: 56

Комментарии пока отсутcтвуют