private function PP takes location source, real dist, real angle returns nothing
call CatchLocation(source)
endfunction
private function CU takes integer count, integer unitId, player p, location l, real face returns nothing
call CatchLocation(l)
endfunction
private function IPO takes unit k, string order, location l returns nothing
call CatchLocation(l)
endfunction
private function SUP takes unit who, location l returns nothing
call CatchLocation(l)
endfunction
private function SUF takes unit who, location l, real dur returns nothing
call CatchLocation(l)
endfunction
private function GUR takes real radius, location l, boolexpr filter returns nothing
call CatchLocation(l)
endfunction
private function CUF takes integer count, integer unitId, player whichPlayer, location loc, location lookAt returns nothing
call CatchLocation(loc)
call CatchLocation(lookAt)
endfunction
hook PolarProjectionBJ PP
hook CreateNUnitsAtLoc CU
hook CreateNUnitsAtLocFacingLocBJ CUF
hook IssuePointOrderLocBJ IPO
hook SetUnitPositionLoc SUP
hook SetUnitFacingToFaceLocTimed SUF
hook GetUnitsInRangeOfLocMatching GUR
hook RemoveLocation ReleaseLocation
hook CatchLocation PP, так что ли будет?
Теперь нативку не находит CatchLocation
Всё, нашёл проблему, была подключена библиотека all.j ,после отключения всё компилится нормально
set buffer = buffer + I2S(SaveLoad_EncodeVerify(buffer))
set j = SaveLoad_EncodeVerify(SubString(buffer,0,k))
это помогло, теперь хотя бы выдаёт код когда сэйвишь и у героя 12 итемов, но при загрузке пишет "неправильный код", при любом лоаде, даже если пытаешься загрузить только что созданного и сохранённого героя
при сэйве выполняется script: set udg_Code = SaveLoad_Encode()
при загрузке выполняется script: set udg_Validate = SaveLoad_Decode( udg_Code )
function SaveLoad_EncodeVerify takes string buffer returns integer
local integer i = 0
local integer j = 0
local string name = GetPlayerName(GetTriggerPlayer())
if udg_SaveLoad_UsePlayername == true then
loop
set j = j + SaveLoad_EncodeChar(SubString(name,i,i + 1))
set i = i + 1
exitwhen i >= StringLength(name)
endloop
endif
set i = 0
loop
set j = j + SaveLoad_EncodeChar(SubString(buffer,i,i + 1))
set i = i + 1
exitwhen i >= StringLength(buffer)
endloop
return j
endfunction
использовать local string name = GetPlayerName(GetLocalPlayer()) , вместо GetTriggerPlayer() ???
типа вот так вот?
function SaveLoad_EncodeVerify takes string buffer returns integer
local integer i = 0
local integer j = 0
local string name = GetPlayerName(GetLocalPlayer())
if udg_SaveLoad_UsePlayername == true then
loop
set j = j + SaveLoad_EncodeChar(SubString(name,i,i + 1))
set i = i + 1
exitwhen i >= StringLength(name)
endloop
endif
set i = 0
loop
set j = j + SaveLoad_EncodeChar(SubString(buffer,i,i + 1))
set i = i + 1
exitwhen i >= StringLength(buffer)
endloop
return j
endfunction
А ты дели код если символ превышает длину, у мя вот если много данные о героя то делит на части 1 код и 2 код... пример можеш ты уже видел в игре во многих!!!!
каким образом его делить? я не знаток Jass, делать отдельный сэйв на курьера и отдельный на героя?
или подскажите каким образом удалить из кода символ "-" каждые 4 буквы, или изменить промежуток для него, не каждые 4 символа, а каждые 6 к примеру, может поможет)
как сделать "-" каждые 6 символов нашёл) но стало писать ошибку при загрузке) видать где-то ещё не поменял, добавил в словарь ещё символы в нижнем регистре ,по идее тоже должно сократить длину кода, щас узнаю.
Да теперь я точно уверен что проблемы в длине кода) теперь стабильно сэйвит и загружает когда 11 вещей, каким образом можно ещё сократить длину?
без разделения на 2 кода
НЕТ
===
Стабильно сэйвит и загружает так же только 10 итемов когда
Про ограничение длинны кода задумался, потому что код действительно длинный получается (когда 11 итемов и ни чего не происходит при загрузке)
Теперь получилось вот так, после сэйва итемов героя, действие - выполнить триггер (проверив условия) по сохранению вещей курьера, тут добавил вэйт 1.0 сек. и дальше по триггеру заносится код и выводится на экран.
НЕ работает сэйв при 12 занятых слотах, при сэйве ни чего не происходит.
Если взять 11 вещй, то нормально сэйвит и грузит.
Такое ощущение что и вправду ограничена строка кода загрузки.
При сэйве с 11 занятыми слотами выдаёт код из 92 символов
-load M30M-K0XN-0Q3G-OL0C-94GX-AR3T-BN3L-R7FU-YOY1-OXQ7-V3P0-V6E3-SH4N-BADM-5Q8C-7FW1-YFIP-R
решил поставить вэйт 1,5 сек, вместо 1.0, может просто не успевает зашифровать итемы, потому что их много в инициализации системы сэйва (305 на данный момент).
увеличение вэйта не помогло
УРА!!!!!!!!!!!!!!!! помогло))) спасибо огромное тебе добрый людоед))) ledoed:
а пробни просто уменьшить массив (там же есть переменная которая показывает число предметов записсаных) допустим 5 предметов выложи и забей их герами и сохрани
я и так сразу вижу) код не высвечивается (код сохранения героя) если что-то не так
Вот добавил две вещи и сэйвится нормально с ними
а вот например забил полностью инвентарь свой и курьера, и уже не сэйвит (подобрал ещё другие предметы)
выложил у курьера 4 итема, и засэвиться получлось, берёшь один и не сэйвит уже
тогда эту систему можно засунуть спомощью как внедряют чит коды
каждый раз муторно будет в новую версу пихать её, и вносить изменения (предметы новые, герои и т.д.) легче разобраться со старой в чём проблема. Почему то в БД все итемы объявлены, но не всегда сэйвит героя, с некоторыми вещами ,приходится их выкладывать и сэйвить героя. При том вещи каждый раз разные, раньше например эта вещь сэйвилась, а с обновой может уже не сэйвить героя с ней. Не знаю что сделать даже.
хех я у меня удалось эту систему запустить наверно wex всётаки вам подключить надо
точнее вкл local files и отключит adicparser и оптимизацию к этому делу
этого я и боялся, мне скилы героям написали на cJass, при отключении Adic Parser борода будет, но щас попробую
» Прочее / [sp/coop] Сценарий 16 ОСпН «СКИФ» день 10 для ARMA 3
» Прочее / [sp/coop] Сценарий 16 ОСпН «СКИФ» день 10 для ARMA 3
» WarCraft 3 / потеряны аргументы: missing define arguments
Теперь нативку не находит CatchLocation
Всё, нашёл проблему, была подключена библиотека all.j ,после отключения всё компилится нормально
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
при загрузке выполняется script: set udg_Validate = SaveLoad_Decode( udg_Code )
» WarCraft 3 / Снова сэйв\лоад
symbol String Hash multiply defined
как я понял, функция StringHash уже обявлена
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
» WarCraft 3 / Снова сэйв\лоад
типа вот так вот?
» WarCraft 3 / Снова сэйв\лоад
или подскажите каким образом удалить из кода символ "-" каждые 4 буквы, или изменить промежуток для него, не каждые 4 символа, а каждые 6 к примеру, может поможет)
как сделать "-" каждые 6 символов нашёл) но стало писать ошибку при загрузке) видать где-то ещё не поменял, добавил в словарь ещё символы в нижнем регистре ,по идее тоже должно сократить длину кода, щас узнаю.
Да теперь я точно уверен что проблемы в длине кода) теперь стабильно сэйвит и загружает когда 11 вещей, каким образом можно ещё сократить длину?
без разделения на 2 кода
НЕТ
===
Отредактирован Karp
» WarCraft 3 / Снова сэйв\лоад
Теперь получилось вот так, после сэйва итемов героя, действие - выполнить триггер (проверив условия) по сохранению вещей курьера, тут добавил вэйт 1.0 сек. и дальше по триггеру заносится код и выводится на экран.
НЕ работает сэйв при 12 занятых слотах, при сэйве ни чего не происходит.
Если взять 11 вещй, то нормально сэйвит и грузит.
Такое ощущение что и вправду ограничена строка кода загрузки.
При сэйве с 11 занятыми слотами выдаёт код из 92 символов
-load M30M-K0XN-0Q3G-OL0C-94GX-AR3T-BN3L-R7FU-YOY1-OXQ7-V3P0-V6E3-SH4N-BADM-5Q8C-7FW1-YFIP-R
решил поставить вэйт 1,5 сек, вместо 1.0, может просто не успевает зашифровать итемы, потому что их много в инициализации системы сэйва (305 на данный момент).
увеличение вэйта не помогло
» WarCraft 3 / При помощи чего реализован текст на земле? (как в Доте)
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
ledoed: просто вэйта не хватало)
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
Отредактирован Karp
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
или добавить вэйт после первого
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
Отредактирован Karp
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
Вот добавил две вещи и сэйвится нормально с ними
а вот например забил полностью инвентарь свой и курьера, и уже не сэйвит (подобрал ещё другие предметы)
выложил у курьера 4 итема, и засэвиться получлось, берёшь один и не сэйвит уже
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
» WarCraft 3 / Траблы Сэйв Лоада или моих рук
» WarCraft 3 / Траблы Сэйв Лоада или моих рук