|
|
|
|
Респмобов, на их изночальной позиции.
|
|
H_A_PK | Дата: Четверг, 25 Марта 2010, 15:50:44 | Сообщение # 1 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| вообщем проблема опять. я начал делать по другому. 1й триг Code function Trig_Init_Func003A takes nothing returns nothing set udg_Integer_MobsCount = ( udg_Integer_MobsCount + 1 ) call SetUnitUserData( GetEnumUnit(), udg_Integer_MobsCount ) set udg_Location_MobsPos[udg_Integer_MobsCount] = GetUnitLoc(GetEnumUnit()) endfunction
function Trig_Init_Actions takes nothing returns nothing set udg_Group_Mobs = GetUnitsOfPlayerAll(Player(11)) call ForGroup( udg_Group_Mobs, function Trig_Init_Func003A ) endfunction
//=========================================================================== function InitTrig_Init takes nothing returns nothing set gg_trg_Init = CreateTrigger() call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions ) endfunction 2й триг. каторый с ХТ. Code globals hashtable Hash=InitHashtable() endglobals
function ef takes nothing returns nothing local timer t=GetExpiredTimer() local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1) local location loc=LoadLocationHandle(Hash, GetHandleId(t), 2) call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(En))) local unit u=CreateUnitAtLoc(Player(11), GetUnitTypeId(En), loc, bj_UNIT_FACING ) call SetUnitUserData(u, GetUnitUserData(En)) call GroupAddUnit(udg_Group_Mobs, u) call RemoveUnit(En) call DestroyTimer(t) call FlushChildHashtable(Hash,GetHandleId(t)) set En = null set u = null set t = null endfunction
function Trig_Respawn_Func001A takes nothing returns nothing local unit u local unit Enum = GetEnumUnit() local location loc = udg_Location_MobsPos[GetUnitUserData(Enum)] local timer t=CreateTimer() if GetUnitState(Enum, UNIT_STATE_LIFE) <= 0 then call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(Enum))) call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum) call SaveLocationHandle(Hash, GetHandleId(t), 2, loc) call TimerStart(t, 10, false, function ef) call GroupRemoveUnit(udg_Group_Mobs, Enum) endif set u =null set Enum = null endfunction
function Trig_Respawn_Actions takes nothing returns nothing call ForGroup(udg_Group_Mobs, function Trig_Respawn_Func001A) endfunction
//=========================================================================== function InitTrig_Respawn takes nothing returns nothing set gg_trg_Respawn = CreateTrigger() TriggerRegisterPlayerUnitEvent(gg_trg_Respawn, Player(11), EVENT_PLAYER_UNIT_DEATH, null) call TriggerAddAction( gg_trg_Respawn, function Trig_Respawn_Actions ) endfunction здесь всё правельно находит юнита находит его точку но проблема одна в этой строчке... Code call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum) у меня юнит сохранился Code local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1) а здесь он загружается как null. вообщем я проверил это с помощью обыкновеного вывода на экран. Добавлено (26-03-2010, 14:13) --------------------------------------------- почему он загружается так, и имено юнит. локацию он загружает по нормальному. и выводин на экран координаты
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
Сообщение отредактировал H_A_PK - Пятница, 26 Марта 2010, 14:19:19 |
|
|
|
windrunner | Дата: Четверг, 25 Марта 2010, 17:57:51 | Сообщение # 2 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| Quote (Дятел) Используй гениционые канстаты джаза, нуб Название щас придумал?=) Если нет то поведай что это.И судя по тому что это знают не все то зачем это юзать тут?
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
H_A_PK | Дата: Четверг, 25 Марта 2010, 18:21:51 | Сообщение # 3 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| Quote (Дятел) 1 нах! Используй гениционые канстаты джаза, нуб <_< О_О.. мб заместа тролинга мас ты мне поможешь ?Quote (windrunner) Название щас придумал?=) Если нет то поведай что это.И судя по тому что это знают не все то зачем это юзать тут? или ты windrunner,
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
|
|
|
|
windrunner | Дата: Четверг, 25 Марта 2010, 19:42:17 | Сообщение # 4 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| Я могу=)
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
FkoFF | Дата: Четверг, 25 Марта 2010, 21:33:19 | Сообщение # 5 |
Группа: Заблокированные
Сообщений: 4356
Награды: 1
Репутация: 1413
Блокировки:
| А вообще какой то странный способ респавна... не проще сделать на гуи? сделать Neutral_Group[x] в которую добавлять мобов по месту дислокации. И если дохнут мобы из данной группы - респавнить их через wait \ create 1 unit xx at location[x] facing x...
|
|
|
|
Profi | Дата: Четверг, 25 Марта 2010, 22:07:59 | Сообщение # 6 |
7 уровень
Группа: Проверенные
Сообщений: 332
Награды: 0
Репутация: 131
Блокировки:
| Я не силен конечно в жасс, но как я понимаю при смерти юнита каждый раз инициализируется хешь таблица, а она должна только 1 раз это делать, при загрузке карты. Добавлено (25-03-2010, 22:05) --------------------------------------------- Или пользуйся наработками, как это делают крутые мапмэйкеры, типа меня) Добавлено (25-03-2010, 22:07) --------------------------------------------- Да и код ужасный в 1ой функции как мне кажется.
|
|
|
|
Kаrat | Дата: Четверг, 25 Марта 2010, 22:10:13 | Сообщение # 7 |
3 уровень
Группа: Пользователи
Сообщений: 69
Награды: 0
Репутация: 10
Блокировки:
| Quote (Profi) Я не силен конечно в жасс, но как я понимаю при смерти юнита каждый раз инициализируется хешь таблица, а она должна только 1 раз это делать, при загрузке карты. По логике, один раз. Инициализация кэша ведь происходит вне функций. Quote (Profi) Или пользуйся наработками, как это делают крутые мапмэйкеры, типа меня) А я-то думал, что крутые мапмейкеры их создают) Ну да ладно, не имею ничего против использования наработок. H_A_PK, По теме, хотелось бы увидеть пример с этим кодом, так разобраться трудно.
|
|
|
|
windrunner | Дата: Четверг, 25 Марта 2010, 22:33:11 | Сообщение # 8 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| Лол ладно нап уговорил завтра дам наработку + код(щас башка не варит)
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
Бюллетень | Дата: Четверг, 25 Марта 2010, 23:06:44 | Сообщение # 9 |
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
| Quote (Profi) Я не силен конечно в жасс, но как я понимаю при смерти юнита каждый раз инициализируется хешь таблица, а она должна только 1 раз это делать, при загрузке карты. Нет, таблица из блока глобалс, будет подшиватся в глобалки при загрузки карты Плюс ты вываешь из функции выше, функцию ниже :о Просто при загрузки запоминай все позиции, и записывай их через GetHandleId() юниту, при смерти загрузим и все дела о-о
[ ZorDe] Ф бой Тускарцы, вы мега %)
|
|
|
|
H_A_PK | Дата: Пятница, 26 Марта 2010, 08:50:43 | Сообщение # 10 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| Quote (FkoFF) А вообще какой то странный способ респавна... не проще сделать на гуи? сделать Neutral_Group[x] в которую добавлять мобов по месту дислокации. И если дохнут мобы из данной группы - респавнить их через wait \ create 1 unit xx at location[x] facing x... лол ну там так и стоит, тока не ждать а таймер... Quote (Profi) Да и код ужасный в 1ой функции как мне кажется. ну там я прото гуи в джасс конвертнул. Quote (Kаrat) По логике, один раз. Инициализация кэша ведь происходит вне функций. ну дак итак.Quote (Бюллетень) Нет, таблица из блока глобалс, будет подшиватся в глобалки при загрузки карты Плюс ты вываешь Quote (Бюллетень) Плюс ты вываешь из функции выше, функцию ниже :о где ты это увидел, мб я из функции ниже в функцию выше, да и темболее не функцию я вызываю, а тригер запускаю.Quote (Бюллетень) Просто при загрузки запоминай все позиции, и записывай их через GetHandleId() юниту, при смерти загрузим и все дела о-о тоесть к юниту пришить его локацию )). а это мысль. Добавлено (26-03-2010, 08:50) --------------------------------------------- Code globals hashtable Hash = InitHashtable() endglobals
function Trig_One_Func003A takes nothing returns nothing local location loc set udg_i = udg_i + 1 set udg_Creeps[udg_i] = GetEnumUnit() set loc = GetUnitLoc(GetEnumUnit()) call SaveLocationHandle(Hash, GetHandleId(udg_Creeps[udg_i]), 1, loc) endfunction
function Trig_One_Actions takes nothing returns nothing set udg_i = 0 call ForGroup(GetUnitsOfPlayerAll(Player(11)), function Trig_One_Func003A) endfunction
function ef takes nothing returns nothing local timer t=GetExpiredTimer() local location in = LoadLocationHandle(Hash, GetHandleId(t), 1) local unit un = LoadUnitHandle(Hash, GetHandleId(t), 2) local integer i = LoadInteger(Hash, GetHandleId(t), 3) local unit u = CreateUnitAtLoc(Player(11), GetUnitTypeId(un), in, bj_UNIT_FACING ) set udg_Creeps[i] = u call DestroyTimer(t) call FlushChildHashtable(udg_Hash,GetHandleId(t)) set un = null set u = null set in = null set t = null endfunction
function Trig_Death_Actions takes nothing returns nothing local timer t = CreateTimer() local location loc local unit u = GetDyingUnit() if IsUnitInGroup(u, GetUnitsOfPlayerAll(Player(11))) == true then set udg_i = 1 loop exitwhen udg_i > CountUnitsInGroup(GetUnitsOfPlayerAll(Player(11))) if u == udg_Creeps[udg_i] then set loc = LoadLocationHandle(Hash, GetHandleId(udg_Creeps[udg_i]),1) call SaveLocationHandle(Hash, GetHandleId(t), 1, loc) call SaveUnitHandle(Hash, GetHandleId(t), 2, u) call SaveInteger(Hash, GetHandleId(t), 3, udg_i) call TimerStart(t, 10, false, function ef) endif set udg_i = udg_i + 1 endloop endif endfunction
//=========================================================================== function InitTrig_Death takes nothing returns nothing local trigger gg_trg_Death = CreateTrigger( ) set gg_trg_One = CreateTrigger( ) call TriggerAddAction( gg_trg_One, function Trig_One_Actions ) call TriggerRegisterAnyUnitEventBJ( gg_trg_Death, EVENT_PLAYER_UNIT_DEATH ) call TriggerAddAction( gg_trg_Death, function Trig_Death_Actions ) set gg_trg_Death = null endfunction сделал так ща гляну будет ли идти.
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
Сообщение отредактировал H_A_PK - Пятница, 26 Марта 2010, 09:31:07 |
|
|
|
windrunner | Дата: Пятница, 26 Марта 2010, 11:12:02 | Сообщение # 11 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| H_A_PK, Уменьшай кол-во функций=) И юзай цикл а не форгроуп
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
Бюллетень | Дата: Пятница, 26 Марта 2010, 13:27:30 | Сообщение # 12 |
6 уровень
Группа: Проверенные
Сообщений: 160
Награды: 0
Репутация: 21
Блокировки:
| Если через ХТ, запиши всем локации в loc[GetHandleId(unit)] При смерти загружай лок с ИДхендлом юнита. Если нужно ждать, то к таймеру юнита привяжи. Quote (windrunner) И юзай цикл а не форгроуп Чем плох фор гроуп? Quote (H_A_PK) где ты это увидел, мб я из функции ниже в функцию выше, да и темболее не функцию я вызываю, а тригер запускаю. Палим >>Quote (H_A_PK) Code set udg_group[30] = GetUnitsInRectMatching(GetPlayableMapRect(), Condition(function Trig_One_Func002002002)) Фильтер ниже
[ ZorDe] Ф бой Тускарцы, вы мега %)
|
|
|
|
H_A_PK | Дата: Пятница, 26 Марта 2010, 14:13:37 | Сообщение # 13 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| вообщем проблема опять. я начал делать по другому. 1й триг Code function Trig_Init_Func003A takes nothing returns nothing set udg_Integer_MobsCount = ( udg_Integer_MobsCount + 1 ) call SetUnitUserData( GetEnumUnit(), udg_Integer_MobsCount ) set udg_Location_MobsPos[udg_Integer_MobsCount] = GetUnitLoc(GetEnumUnit()) endfunction
function Trig_Init_Actions takes nothing returns nothing set udg_Group_Mobs = GetUnitsOfPlayerAll(Player(11)) call ForGroup( udg_Group_Mobs, function Trig_Init_Func003A ) endfunction
//=========================================================================== function InitTrig_Init takes nothing returns nothing set gg_trg_Init = CreateTrigger() call TriggerAddAction( gg_trg_Init, function Trig_Init_Actions ) endfunction 2й триг. каторый с ХТ. Code globals hashtable Hash=InitHashtable() endglobals
function ef takes nothing returns nothing local timer t=GetExpiredTimer() local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1) local location loc=LoadLocationHandle(Hash, GetHandleId(t), 2) call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(En))) local unit u=CreateUnitAtLoc(Player(11), GetUnitTypeId(En), loc, bj_UNIT_FACING ) call SetUnitUserData(u, GetUnitUserData(En)) call GroupAddUnit(udg_Group_Mobs, u) call RemoveUnit(En) call DestroyTimer(t) call FlushChildHashtable(Hash,GetHandleId(t)) set En = null set u = null set t = null endfunction
function Trig_Respawn_Func001A takes nothing returns nothing local unit u local unit Enum = GetEnumUnit() local location loc = udg_Location_MobsPos[GetUnitUserData(Enum)] local timer t=CreateTimer() if GetUnitState(Enum, UNIT_STATE_LIFE) <= 0 then call DisplayTimedTextToForce( GetPlayersAll(), 5.00, UnitId2StringBJ(GetUnitTypeId(Enum))) call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum) call SaveLocationHandle(Hash, GetHandleId(t), 2, loc) call TimerStart(t, 10, false, function ef) call GroupRemoveUnit(udg_Group_Mobs, Enum) endif set u =null set Enum = null endfunction
function Trig_Respawn_Actions takes nothing returns nothing call ForGroup(udg_Group_Mobs, function Trig_Respawn_Func001A) endfunction
//=========================================================================== function InitTrig_Respawn takes nothing returns nothing set gg_trg_Respawn = CreateTrigger() TriggerRegisterPlayerUnitEvent(gg_trg_Respawn, Player(11), EVENT_PLAYER_UNIT_DEATH, null) call TriggerAddAction( gg_trg_Respawn, function Trig_Respawn_Actions ) endfunction здесь всё правельно находит юнита находит его точку но проблема одна в этой строчке... Code call SaveUnitHandle(Hash, GetHandleId(t), 1, Enum) у меня юнит сохранился Code local unit En=LoadUnitHandle(Hash, GetHandleId(t), 1) а здесь он загружается как null. вообщем я проверил это с помощью обыкновеного вывода на экран. Добавлено (26-03-2010, 14:13) --------------------------------------------- почему он загружается так, и имено юнит. локацию он загружает по нормальному. и выводин на экран координаты
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
Сообщение отредактировал H_A_PK - Пятница, 26 Марта 2010, 14:19:03 |
|
|
|
windrunner | Дата: Пятница, 26 Марта 2010, 15:00:57 | Сообщение # 14 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| Quote (Бюллетень) Чем плох фор гроуп? Форгроуп насколько я знаю медленнее=)Добавлено (26-03-2010, 15:00) ---------------------------------------------
Quote (Бюллетень) Если через ХТ, запиши всем локации в loc[GetHandleId(unit)] Нельзя в глобалке макс ячейка 8192 а хендл 10-12 значное число
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
H_A_PK | Дата: Пятница, 26 Марта 2010, 15:17:13 | Сообщение # 15 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| всё клоуз тему. я сделал то что хотел. и всё шло к чертям из-за того , что у умника в карте стояло действие удолить умирающего юнита через 6 секунд.
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
|
|
|
|
windrunner | Дата: Пятница, 26 Марта 2010, 15:47:27 | Сообщение # 16 |
10 уровень
Группа: Проверенные
Сообщений: 1259
Награды: 0
Репутация: 218
Блокировки:
| H_A_PK, Хех а кто этот умник?
И в правду мир сошел с ума... И до тех пор пока нас не обесточат Пока не догорит аварийных фонарей заряд Мы будем жечь тут электричество что есть мочи Русский мапмейкинг - бессмысленный и беспощадный.xD
|
|
|
|
H_A_PK | Дата: Суббота, 27 Марта 2010, 13:10:50 | Сообщение # 17 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| Forum_Russia )) Добавлено (27-03-2010, 13:10) --------------------------------------------- драгон клоуз тему О_О, ато открыта а проблема решина.
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
|
|
|
|
Arius | Дата: Суббота, 27 Марта 2010, 13:24:43 | Сообщение # 18 |
10 уровень
Группа: Проверенные
Сообщений: 2163
Награды: 2
Репутация: 267
Блокировки:
| Quote (H_A_PK) драгон клоуз тему О_О, ато открыта а проблема решина. его с субботы нет
|
|
|
|
DragoN | Дата: Воскресенье, 28 Марта 2010, 12:20:55 | Сообщение # 19 |
Инквизитор
Группа: Стримеры
Сообщений: 4348
Награды: 7
Репутация: 2776
Блокировки:
| мне написать в лс что ли очень сложно?
El Psy Congroo
|
|
|
|
|
|
|
|
|
|
|