Скачал Save\Load с этого сайта, по комментам вроде рабочая, да и в примере не бажила, а при переносе в свою карту нашлись ляпы. http://warcraft3ft.info/load....-0-8118 Все переменные все есть, код перенес. В итоге некоторые вещи не загружаются на персонаже. Все указал в триггере настроек. Подробнее: В Карте с наработкой (где все стандарт) загружаются и вещи и герой, все ок. В моей карте, где не стандарт герои и и предметы, грузится герой (все ок), а предметы 1 или 2 шмотки из всех 6. Подскажите ошибка в системе или у меня?
Legion
Герои: 10% Ландшафт: 30% Предметы: 10% Баланс:80% Код:70% Общая готовность: 10% Бета Тест карты выявил 4 довольно простых бага.
Сообщение отредактировал sacar777 - Воскресенье, 30 Сентября 2012, 21:42:10
Да там есть база предметов и героев. Добавлял все и всех, изменял кол-во итемов То есть Итем[1] = Поножи Итем[2] = Кеды Итем[3] = Шлем Итем[4] = Меч Итем[5] = Щит Кол-во итемов = 5
Все добавлял, со равно глюк((
Legion
Герои: 10% Ландшафт: 30% Предметы: 10% Баланс:80% Код:70% Общая готовность: 10% Бета Тест карты выявил 4 довольно простых бага.
Как можно криво скопировать 3 триггера и код карты=)
Вот: Код уже моей карты:
Code
function CG_Init takes nothing returns nothing set udg_Compress = SubString(udg_Alphabet, StringLength(udg_Alphabet)-1, 999) set udg_Alphabet = SubString(udg_Alphabet, 0, StringLength(udg_Alphabet)-1) endfunction
function CG_Encode takes integer i returns string local integer b local string s = "" if i < udg_Base then return SubString(udg_Alphabet, i, i + 1) endif loop exitwhen i <= 0 set b = i - (i / udg_Base) * udg_Base set s = SubString(udg_Alphabet, b, b + 1) + s set i = i / udg_Base endloop return s endfunction
function CG_SaveChar takes string c returns integer local string low = "abcdefghijklmnopqrstuvwxyz" local string high = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" local string int = "0123456789" local integer i = S2I(c) if i > 0 then return i endif if c == "0" then return 0 endif set i = 0 loop exitwhen i > 26 if SubString(low, i, i + 1) == c then return i elseif SubString(high, i, i + 1) == c then return i endif set i = i + 1 endloop return 0 endfunction
function CG_SaveString takes string name returns string local integer i = 0 local integer a = StringLength(name) local integer c = 0 loop exitwhen i > a set c = c + CG_SaveChar(SubString(name, i, i + 1)) set i = i + 1 endloop return CG_Encode(c) endfunction
function CG_StrPos takes string s returns integer local integer i = 0 loop exitwhen i > udg_Base if s == SubString(udg_Alphabet, i, i + 1) then return i endif set i = i + 1 endloop return -1 endfunction
function CG_Decode takes string s returns integer local integer a = 0 loop exitwhen StringLength(s) == 1 set a = a * udg_Base + udg_Base * CG_StrPos(SubString(s, 0, 1)) set s = SubString(s, 1, 50) endloop return a+CG_StrPos(s) endfunction
function CG_SaveBoolean takes boolean flag returns integer if flag then return 1 endif return 0 endfunction
function CG_SaveHero takes unit it returns integer local integer i = 1 loop exitwhen i > udg_HeroCount if udg_SaveHero[i] == GetUnitTypeId(it) then return i endif set i = i + 1 endloop return 0 endfunction
function CG_SaveItem takes item it returns integer local integer i = 1 loop exitwhen i > udg_ItemCount if udg_SaveItem[i] == GetItemTypeId(it) then return i endif set i = i + 1 endloop return 0 endfunction
function CG_Seperate takes string s returns string local integer i = 0 local integer b = StringLength(s) local integer a = 0 loop exitwhen i > b if a == 4 then set s = SubString(s, 0, i) + "-" + SubString(s, i, 999) set a = 0 else set a = a + 1 endif set i = i + 1 endloop return s endfunction
function CG_Unseperate takes string s returns string local integer i = 0 loop exitwhen i > StringLength(s) if SubString(s, i, i + 1) == "-" then set s = SubString(s, 0, i) + SubString(s, i+1, 999) endif set i = i + 1 endloop return s endfunction
function CG_IsLower takes string s returns boolean return s == "a" or s == "b" or s == "c" or s == "d" or s == "e" or s == "f" or s == "g" or s == "h" or s == "i" or s == "j" or s == "k" or s == "l" or s == "m" or s == "n" or s == "o" or s == "p" or s == "q" or s == "r" or s == "s" or s == "t" or s == "u" or s == "v" or s == "w" or s == "x" or s == "y" or s == "z" endfunction
function CG_IsUpper takes string s returns boolean return s == "W" or s == "A" or s == "B" or s == "C" or s == "D" or s == "E" or s == "F" or s == "G" or s == "H" or s == "I" or s == "J" or s == "K" or s == "L" or s == "M" or s == "N" or s == "O" or s == "P" or s == "Q" or s == "R" or s == "S" or s == "T" or s == "U" or s == "V" or s == "X" or s == "Y" or s == "Z" endfunction
function CG_ColorChar takes string char returns string local integer i = 0 local string s = udg_Alphabet + udg_Compress loop exitwhen i > udg_Base+1 if char == SubString(s, i, i + 1) then if CG_IsLower(SubString(s, i, i + 1)) then return udg_LOWER_CASE_COLOR + char + "|r" elseif CG_IsUpper(SubString(s, i, i + 1)) then return udg_UPPER_CASE_COLOR + char + "|r" elseif SubString(s, i, i + 1) != "-" then return udg_OTHER_CHARS_COLOR + char + "|r" endif endif set i = i + 1 endloop return char endfunction
function CG_Color takes string s returns string local integer i = 0 local string r = "" loop exitwhen i > StringLength(s) set r = r + CG_ColorChar(SubString(s, i, i + 1)) set i = i + 1 endloop return r endfunction
function CG_ClearData takes nothing returns nothing local integer i = 0 loop exitwhen i > 50 set udg_Save[i] = 0 set i = i + 1 endloop endfunction
function CG_SaveOnline takes nothing returns integer if not ReloadGameCachesFromDisk() then return 1 endif return 0 endfunction
function CG_Execute takes nothing returns nothing local integer i = 1 local integer t = 0 local string val = ""
set udg_Code = ""
loop exitwhen i > udg_SaveCount set val = CG_Encode(udg_Save[i]) set t = StringLength(val) if t > 1 then set udg_Code = udg_Code+udg_Compress+I2S(t)+val else set udg_Code = udg_Code+val endif set i = i + 1 endloop
if udg_SavePlayerName then set udg_Code = udg_Code+CG_SaveString(GetPlayerName(GetTriggerPlayer())) endif
set udg_Code = CG_SaveString(udg_Code)+udg_Code set udg_Code = CG_Seperate(udg_Code) set udg_Code = CG_Color(udg_Code) endfunction
function CG_Load takes string str returns nothing local integer i = 0 local integer b = StringLength(CG_Unseperate(str)) local integer key = 1 local integer c = 1 local string tmp = ""
set str = CG_Unseperate(str) set udg_LOAD_VALID = true
set tmp = CG_SaveString(SubString(str, 2, b)) if SubString(str, 0, StringLength(tmp)) != tmp then set udg_LOAD_VALID = false return endif set str = SubString(str, StringLength(tmp), 999) set b = StringLength(str) if udg_SavePlayerName then set tmp = CG_SaveString(GetPlayerName(GetTriggerPlayer())) if StringLength(tmp) > b then set udg_LOAD_VALID = false return else if SubString(str, b-StringLength(tmp), b) != tmp then set udg_LOAD_VALID = false return endif endif set b = b-1 set str = SubString(str, 0, b) endif set b = StringLength(str) loop exitwhen i >= b if SubString(str, i, i + 1) == udg_Compress then set key = S2I(SubString(str, i + 1, i + 2)) set i = i + (key) endif set udg_Load[c] = CG_Decode(SubString(str, i, i + key)) set c = c + 1 set i = i + key set key = 1 endloop
//call CG_ClearData() endfunction
Вот триггер:
Legion
Герои: 10% Ландшафт: 30% Предметы: 10% Баланс:80% Код:70% Общая готовность: 10% Бета Тест карты выявил 4 довольно простых бага.