Я хочу сохранить Integer в юнита. Для того чтобы сохранит его в в групу.

Diaboliko
Есть ещё один костыль на ХТ, сохранять самого же юнита используя как ключ его хендл. Пользоваться этим надо аккуратно, + при входе любого юнита в игровую арену записывать его в ХТ.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
20
SetUnitUserData не подходит? Если нет - опишите конкретнее что происходит там у Вас. Просто базами данных, в принципе, лечится что угодно.
18
Diaboliko
Он хочет получить указатель на юнита юзая хендл в виде integer
20
Сопоставляем массив юнитов с юнитами через SetUnitUserData
Пехотинец с UUD = 10
integer array UnitDBUnits
set UnitDBUnits[10] = Пехотинец
Плюс можно параллельно фигачить переменные вроде
real array UnitDBUnitMagicLifesteel
и использовать его для отхила на % наносимого магического урона. Если, конечно, не лень делать систему отлова такого урона :)
Но под сабж подходит. Из инта получаем юнита.
18
Diaboliko
Есть ещё один костыль на ХТ, сохранять самого же юнита используя как ключ его хендл. Пользоваться этим надо аккуратно, + при входе любого юнита в игровую арену записывать его в ХТ.
Принятый ответ
14
я хочю Сохранить указатели на структуру и поместить её в Групу
7
нашел у себя старинный способ получения объекта по его хэндлу, правда на cjass:
Typecasting
//////////////////////////////////////////
//       Typecasting 2.0
//       by kingking
//
//  This library provides some type
//  converting functions.
///////////////////////////////////////

library Typecasting {

    private hashtable Data = InitHashtable()
    
    define private Typecasting(ParentName, parenttype, TypeName, type) = 
    {
        type ParentName##2##TypeName(parenttype object) {
            Save##ParentName##Handle(Data,0,0,object)
            return Load##TypeName##Handle(Data,0,0)
        }
    }

    Typecasting(Agent, agent, Widget, widget)
    Typecasting(Agent, agent, Group, group)
    Typecasting(Agent, agent, Trigger, trigger)
    Typecasting(Agent, agent, Timer, timer)
    Typecasting(Agent, agent, Location, location)
    Typecasting(Agent, agent, Effect, effect)
    Typecasting(Agent, agent, Unit, unit)
    Typecasting(Agent, agent, Item, item)
    Typecasting(Agent, agent, Lightning, lightning)
    Typecasting(Widget, widget, Unit, unit)
    Typecasting(Widget, widget, Destructable, destructable)
    Typecasting(Widget, widget, Item, item)


    
    define private Typecasting_I2X(TypeName, type) = 
    {
        type Int2##TypeName(integer id) {
            SaveFogStateHandle(Data, 0, 0, ConvertFogState(id))
            return Load##TypeName##Handle(Data, 0, 0)
        }
    }

    Typecasting_I2X(Unit, unit)
    Typecasting_I2X(Effect, effect)
    Typecasting_I2X(Trigger, trigger)
    Typecasting_I2X(Timer, timer)
    Typecasting_I2X(Widget, widget)
    Typecasting_I2X(Lightning, lightning)
    Typecasting_I2X(Group, group)
    Typecasting_I2X(Location, location)
    Typecasting_I2X(Item, item)
    Typecasting_I2X(Destructable, destructable)
    Typecasting_I2X(Ability, ability)
    Typecasting_I2X(TriggerCondition, triggercondition)
    Typecasting_I2X(TriggerAction, triggeraction)
    Typecasting_I2X(Force, force)
    Typecasting_I2X(Rect, rect)
    Typecasting_I2X(Sound, sound)
    Typecasting_I2X(UnitPool, unitpool)
    Typecasting_I2X(ItemPool, itempool)
    Typecasting_I2X(Quest, quest)
    Typecasting_I2X(QuestItem, questitem)
    Typecasting_I2X(DefeatCondition, defeatcondition)
    Typecasting_I2X(TimerDialog, timerdialog)
    Typecasting_I2X(Leaderboard, leaderboard)
    Typecasting_I2X(Multiboard, multiboard)
    Typecasting_I2X(MultiboardItem, multiboarditem)
    Typecasting_I2X(Trackable, trackable)
    Typecasting_I2X(Dialog, dialog)
    Typecasting_I2X(Button, button)
    Typecasting_I2X(TextTag, texttag)
    Typecasting_I2X(Image, image)
    Typecasting_I2X(Ubersplat, ubersplat)
    Typecasting_I2X(Region, region)
    Typecasting_I2X(FogState, fogstate)
    Typecasting_I2X(FogModifier, fogmodifier)
}
функции
function Int2Unit takes integer id returns unit
function Int2Effect takes integer id returns effect
function Int2Trigger takes integer id returns trigger
и т.д
14
struct SpellEngine
integer Ability
integer LifeCycle
unit empty
static method start takes integer Ability, integer Act returns thistype
local thistype this = thistype.allocate()
set this.Ability = Ability
set this.empty = CreateUnit(GetOwningPlayer(GetTriggerUnit()), this, 0, 0, 0)
SetUnitUserData(this.empty, this)
GroupAddUnit(udg_grSpell, this.empty)
return this
endmethod
сейчас Сделал так хотелось без создание юнита
static method execSpell takes nothing returns nothing
local unit u = GetEnumUnit()
endmethod

static method execute takes nothing returns nothing
call ForGroup( udg_grSpell, SpellEngine.execSpell() )

endmethod
Как Правильно написать функцию для перебора группы В структуре
28
Как Правильно написать функцию для перебора группы В структуре
call ForGroup( udg_grSpell, function SpellEngine.execSpell )
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.