Находил много наработок сохранения героев, но не могу найти сохранение переменной, типом целочисленная. Может кто-то находил? Просто до этого никогда не работал с save/load системой.
(Нужно сохранять переменную, и при загрузке устанавливать число дерева в значении этой переменной).
Заранее спасибо, если кто-то найдет.

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

Steal nerves:
Мне не нужно сохранять героя, в этом то и проблема, так бы я просто скопировал чужую наработку.
Все, мне помог один очень хороший человек.
1
23
7 лет назад
1
Что именно ты находил? Если там сохраняется герой, то сохраняется и его опыт. А опыт - число. Целое, между прочим. Более того, id шмоток тоже целое число.
2
19
7 лет назад
2
SomeFire:
Построенно таким образом что само сохранение написано на jass, в котором я плохо разбираюсь. Чет пытаюсь, но все никак не могу.
1
27
7 лет назад
Отредактирован MpW
1
характеристики героя
local unit u = ... //герой
local integer Tp = GetUnitTypeId(u) //тип героя, точнее id или rawcode (это все целое число) 
local integer LVHero = GetHeroLevel(u) //уровень героя
local integer ExHero = GetHeroXP(u) //опыт героя
local integer SP = GetHeroSkillPoints(u) //кол-во скилл-поинтов
local integer St = GetHeroStr(u, false) //стандартная сила (эта вся сила, исключая бонусы на нее)
local integer Ag = GetHeroAgi(u, false) //стандартная ловкость (эта вся ловкость, исключая бонусы на нее)
local integer In = GetHeroInt(u, false) //станд. интеллект (эта весь разум, исключая бонусы)
//для вычисления бонусных характеристик - не забудьте снять все итемы
local integer StB = GetHeroStr(u, true) - St //бонусная сила (разница короче с бонусной и не с бонусной)
local integer AgB = GetHeroAgi(u, true) - Ag //бонусная ловкость
local integer InB = GetHeroInt(u, true) - In //бонусный интеллект

local integer gold = GetPlayerState(GetOwningPlayer(u), PLAYER_STATE_RESOURCE_GOLD) //золото
local integer wood = GetPlayerState(GetOwningPlayer(u), PLAYER_STATE_RESOURCE_LUMBER) //древесина, лес
это все выше перечисленное сохраняем в кэш
для предметов
тут по слотам пробегаемся и все
local unit u = ... //герой
local integer i = 0 //для цикла
local integer s = UnitInventorySize(u) //максимальный размер слота
local item It
local boolean b
local integer idIt

loop
    exitwhen i > s
    set It = UnitItemInSlot(u, i) //итем в слоте
    set b = (It != null) //проверяем, не пуст ли слот героя и сохраняем в булеан
    set = GetItemTypeId(It) //id итем
    //все сохраняем (номер слота, булеан, ид-итема), при загрузке достаем булеан и проверяем не пуста ли и потом создаем итем
    //для создания в нужный слот используйте эту нативку UnitAddItemToSlotById
    set i = i + 1
endloop
насчет способностей
Насчет способностей сложнее, приходится запоминать какие у героя есть способности. То есть какие могут быть абилки (равкоды) у данного типа героя.
Короче либо базу данных делать (у.героя по стандарту 4 абилки)
local integer rawcodeA = 'A000'
local integer LVS = GetUnitAbilityLevel(u, rawcodeA) 
или сделать триггер, который ловит какие скиллы вы изучаете
систему лень писать, ибо много чего нужно сделать. Еще нужно сгенерировать случайный код и прочее. Сложностей много.
2
19
7 лет назад
Отредактирован KaneThaumaturge
2
Steal nerves:
Мне не нужно сохранять героя, в этом то и проблема, так бы я просто скопировал чужую наработку.
Все, мне помог один очень хороший человек.
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.