Приветсвую)
Вот в редакторе Объектов у Объектов есть свои переменные, обращение к этим пременным происходит через эти скобки (<>) внутри объекта <AUav,DataA1>,(Причем, как я заметил скобочки <> возвращают исключительно real/integer, а когда я вставил перменную отлючную от перечисленных раннее я каким то чудом ловил фаталы при инициализации), а префикс % является признаком цифр после целых чисел. Можно ли как то в коде объявить данные символы <>, существуют ли другие символы?
Можно ли как то получить id/путь пикторграммы объекта через код?
Не очень хочется БД создавать

Принятый ответ

В способностях есть поле одно которое нативкой достается в любой версии игры, можно туда дублировать нужные строки.
Это типа эффект. Хранится как список строк через запятую (в стандартном интерфейсе это окно со списком)
native GetAbilityEffectById takes integer abilityId, effecttype t, integer index returns string
Вот такое в jc делал, хранил имя, описание и макс левел для дерева скиллов прямо в абилках (на cjass, но не суть):
struct Skill
    static Skill array All
    static int count = 0
    int index
//
    private int ID
    private int icon
    
    private int Set
    private int PosX
    private int PosY
    
    private string name
    private string descr
    private int maxlevel
    
    private int prev = -1
    private int next = -1
    private int lop = 0 //level of prev
    
    
    static void Add(int ID, int icon, int Set, int posX, int posY) {
        Skill this = Skill.create()
        .ID = ID
        .icon = icon
        .Set = Set
        .PosX = posX
        .PosY = posY
        .name = GetAbilityEffectById(ID,EFFECT_TYPE_EFFECT,0) // НАЗВАНИЕ слот 1
        .descr = GetAbilityEffectById(ID,EFFECT_TYPE_EFFECT,1) // ОПИСАНИЕ слот 2
        .maxlevel = S2I(GetAbilityEffectById(ID,EFFECT_TYPE_EFFECT,2)) // МАКС ЛЕВЕЛ слот 3
        TALENT.New(c,CANSAY_HERO,ID,icon,.maxlevel,posX,posY)
        TALENT.All[TALENT.count-1].Name(c,.name,.descr)
        
        TALSET.All[Set].Connect(talslotsize+.count)
        
        .All[.count] = this
        .index = .count
        LastCreatedSkill = .index
        .count ++
    }
    
    void Connect(int prev, int level) {
        .prev = prev
        .lop = level
        TALENT.All[talslotsize+LastCreatedSkill].Connect(talslotsize+prev,level)
    }
    
    void Block(bool block) {
        TALENT.All[talslotsize+LastCreatedSkill].Block(block)
    }
endstruct
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
13
2 года назад
0
Вроде бы нельзя.
1
27
2 года назад
1
мемхаком можно обратиться к строкам из ро, но я не разбираюсь в этом
1
26
2 года назад
1
По-моему это не переменные, а что-то на подобии макроса, который в момент инициализации карты и текста вбивается куда-нужно, и дальнейшие изменения параметра никак на текст не влияет.
Проще БД сделать, всё равно же будешь разные данные по юнитам записывать кроме иконок, не?
6
37
2 года назад
Отредактирован ScorpioT1000
6
В способностях есть поле одно которое нативкой достается в любой версии игры, можно туда дублировать нужные строки.
Это типа эффект. Хранится как список строк через запятую (в стандартном интерфейсе это окно со списком)
native GetAbilityEffectById takes integer abilityId, effecttype t, integer index returns string
Вот такое в jc делал, хранил имя, описание и макс левел для дерева скиллов прямо в абилках (на cjass, но не суть):
struct Skill
    static Skill array All
    static int count = 0
    int index
//
    private int ID
    private int icon
    
    private int Set
    private int PosX
    private int PosY
    
    private string name
    private string descr
    private int maxlevel
    
    private int prev = -1
    private int next = -1
    private int lop = 0 //level of prev
    
    
    static void Add(int ID, int icon, int Set, int posX, int posY) {
        Skill this = Skill.create()
        .ID = ID
        .icon = icon
        .Set = Set
        .PosX = posX
        .PosY = posY
        .name = GetAbilityEffectById(ID,EFFECT_TYPE_EFFECT,0) // НАЗВАНИЕ слот 1
        .descr = GetAbilityEffectById(ID,EFFECT_TYPE_EFFECT,1) // ОПИСАНИЕ слот 2
        .maxlevel = S2I(GetAbilityEffectById(ID,EFFECT_TYPE_EFFECT,2)) // МАКС ЛЕВЕЛ слот 3
        TALENT.New(c,CANSAY_HERO,ID,icon,.maxlevel,posX,posY)
        TALENT.All[TALENT.count-1].Name(c,.name,.descr)
        
        TALSET.All[Set].Connect(talslotsize+.count)
        
        .All[.count] = this
        .index = .count
        LastCreatedSkill = .index
        .count ++
    }
    
    void Connect(int prev, int level) {
        .prev = prev
        .lop = level
        TALENT.All[talslotsize+LastCreatedSkill].Connect(talslotsize+prev,level)
    }
    
    void Block(bool block) {
        TALENT.All[talslotsize+LastCreatedSkill].Block(block)
    }
endstruct
Принятый ответ
1
3
2 года назад
1
ScorpioT1000, гениальная идея, спасибо)
Прописывать в свойсте объекта параметры, к которым потом сможем обращаться, респект!!!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.