Вопросник
|
|
Spirit | Дата: Среда, 17.06.2009, 14:09 | Сообщение # 1 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| Задаём свои вопросы Постараюсь ответить
|
|
| |
[DUOS] | Дата: Воскресенье, 12.07.2009, 11:36 | Сообщение # 2 |
Придворный
Группа: Проверенные
Сообщений: 352
| Spirit, Как на джассе сделать воскрешение героя? Вопрос может встречаться очень часто.
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
|
|
| |
Gam_Over | Дата: Четверг, 23.07.2009, 13:49 | Сообщение # 3 |
Новосёл
Группа: Пользователи
Сообщений: 2
| [DUOS], воскрешать где? в определенном месте или на месте смерти? вообще это можно и на GUi сделать
|
|
| |
[TGM]DemoN | Дата: Понедельник, 27.07.2009, 22:00 | Сообщение # 4 |
Гражданин
Группа: Проверенные
Сообщений: 58
| как перемещать точку на полярных координатах? на гуи есть функция двигать регион, мне нужно на подобии: для каждой интегер i от 1 до 10 делать центрировать регион по позиция перекл. юнит смещение на 40 х i по отношению 36 x i тоесть мне например нужно двигать юнита по кругу, перемещая его в регион, только использовать точку... ещё вопрос: как изменять высоту юнита (подбрасывать его в воздух)? изменить высоту полёта не подойдёт т.к. юнит должен быть летающим
|
|
| |
Spirit | Дата: Среда, 29.07.2009, 21:08 | Сообщение # 5 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| Quote (|HNA|DemoN) как перемещать точку на полярных координатах? на гуи есть функция двигать регион, мне нужно на подобии: для каждой интегер i от 1 до 10 делать центрировать регион по позиция перекл. юнит смещение на 40 х i по отношению 36 x i тоесть мне например нужно двигать юнита по кругу, перемещая его в регион, только использовать точку... ещё вопрос: как изменять высоту юнита (подбрасывать его в воздух)? изменить высоту полёта не подойдёт т.к. юнит должен быть летающим для движения лучше юзать векторы а поднятие делается функцией SetUnitFlyHeight() юнит должен быть летающим Quote (|DUOS|) Как на джассе сделать воскрешение героя? Вопрос может встречаться очень часто. на гуи можно,главное об утечках позаботиться(убрать)
|
|
| |
[DUOS] | Дата: Среда, 29.07.2009, 21:09 | Сообщение # 6 |
Придворный
Группа: Проверенные
Сообщений: 352
| Этим кодом убился поток:Code function Trig_NewDominationSystem_____________________u_Func001001002 takes nothing returns boolean return ( GetUnitTypeId(GetFilterUnit()) == 'hpea' ) endfunction
function Trig_NewDominationSystem_____________________u_Func001Func001001 takes nothing returns boolean return ( GetOwningPlayer(GetEnumUnit()) == Player(8) ) endfunction
function Trig_NewDominationSystem_____________________u_Func001Func002001 takes nothing returns boolean return ( GetOwningPlayer(GetEnumUnit()) == Player(9) ) endfunction
function Trig_NewDominationSystem_____________________u_Func001A takes nothing returns nothing if ( Trig_NewDominationSystem_____________________u_Func001Func001001() ) then call PlaySoundBJ( gg_snd_red_team_dominating ) else call DoNothing( ) endif if ( Trig_NewDominationSystem_____________________u_Func001Func002001() ) then call PlaySoundBJ( gg_snd_blue_team_dominating ) else call DoNothing( ) endif set udg_RushersInRegion = ( udg_RushersInRegion + 1 ) endfunction
function Trig_NewDominationSystem_____________________u_Func002C takes nothing returns boolean if ( not ( udg_RushersInRegion == 0 ) ) then return false endif return true endfunction
function Trig_NewDominationSystem_____________________u_Func003C takes nothing returns boolean if ( not ( udg_RushersInRegion == 1 ) ) then return false endif return true endfunction
function Trig_NewDominationSystem_____________________u_Func004C takes nothing returns boolean if ( not ( udg_RushersInRegion == 2 ) ) then return false endif return true endfunction
function Trig_NewDominationSystem_____________________u_Actions takes nothing returns nothing call ForGroupBJ( GetUnitsInRectMatching(gg_rct_DesertDominatingRegion, Condition(function Trig_NewDominationSystem_____________________u_Func001001002)), function Trig_NewDominationSystem_____________________u_Func001A ) if ( Trig_NewDominationSystem_____________________u_Func002C() ) then call PauseTimerBJ( true, udg_DominateTimer ) call TimerDialogDisplayBJ( false, udg_DominateTimerWindow ) else endif if ( Trig_NewDominationSystem_____________________u_Func003C() ) then call TimerDialogDisplayBJ( true, udg_DominateTimerWindow ) call PauseTimerBJ( false, udg_DominateTimer ) else endif if ( Trig_NewDominationSystem_____________________u_Func004C() ) then call PlaySoundBJ( gg_snd_Narrowly_Averted ) call PauseTimerBJ( true, udg_DominateTimer ) call TimerDialogDisplayBJ( true, udg_DominateTimerWindow ) else endif set udg_RushersInRegion = 0 endfunction
//=========================================================================== function InitTrig_NewDominationSystem_____________________u takes nothing returns nothing set gg_trg_NewDominationSystem_____________________u = CreateTrigger( ) call TriggerRegisterTimerEventPeriodic( gg_trg_NewDominationSystem_____________________u, 0.50 ) call TriggerAddAction( gg_trg_NewDominationSystem_____________________u, function Trig_NewDominationSystem_____________________u_Actions ) endfunction
Как это исправить?
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
|
|
| |
Spirit | Дата: Среда, 29.07.2009, 21:13 | Сообщение # 7 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| [DUOS], раскрой для начала и бж и нормальные условия сделай
|
|
| |
[TGM]DemoN | Дата: Среда, 29.07.2009, 21:40 | Сообщение # 8 |
Гражданин
Группа: Проверенные
Сообщений: 58
| Quote (Spirit) для движения лучше юзать векторы а поднятие делается функцией SetUnitFlyHeight() юнит должен быть летающим Тогда как такое сделать при помощи векторов? можешь код написать? Тсли юнит летающий он проходит сквозь других юнитов или перелетает через преграды. Как это исправить или есть другой способ?
|
|
| |
[DUOS] | Дата: Среда, 29.07.2009, 21:46 | Сообщение # 9 |
Придворный
Группа: Проверенные
Сообщений: 352
| Code function Trig_NewDominationSystem_u_Func001001002 takes nothing returns boolean return ( GetUnitTypeId(GetFilterUnit()) == 'hpea' ) endfunction
function Trig_NewDominationSystem_u_Func001Func001001 takes nothing returns boolean return ( GetOwningPlayer(GetEnumUnit()) == Player(8) ) endfunction
function Trig_NewDominationSystem_u_Func001Func002001 takes nothing returns boolean return ( GetOwningPlayer(GetEnumUnit()) == Player(9) ) endfunction
function Trig_NewDominationSystem_u_Func001A takes nothing returns nothing if (Trig_NewDominationSystem_u_Func001Func001001()) then call PlaySound(gg_snd_red_team_dominating, 1) else call DoNothing() endif
if ( Trig_NewDominationSystem_u_Func001Func002001() ) then call PlaySound(gg_snd_blue_team_dominating, 1) else call DoNothing() endif set udg_RushersInRegion = (udg_RushersInRegion + 1) endfunction
function Trig_NewDominationSystem_u_Func002C takes nothing returns boolean if (not (udg_RushersInRegion == 0)) then return false else call DoNothing() endif return true endfunction
function Trig_NewDominationSystem_u_Func003C takes nothing returns boolean if (not(udg_RushersInRegion == 1 )) then return false endif return true endfunction
function Trig_NewDominationSystem_u_Func004C takes nothing returns boolean if (not(udg_RushersInRegion == 2)) then return false endif return true endfunction
function Trig_NewDominationSystem_u_Actions takes nothing returns nothing call ForGroupBJ(GetUnitsInRectMatching(gg_rct_DesertDominatingRegion, Condition(function Trig_NewDominationSystem_u_Func001001002)), function Trig_NewDominationSystem_u_Func001A) if (Trig_NewDominationSystem_u_Func002C()) then call PauseTimer(udg_DominateTimer, 1) call TimerDialogDisplay(udg_DominateTimerWindow, 0) else endif if (Trig_NewDominationSystem_u_Func003C()) then call TimerDialogDisplay(udg_DominateTimerWindow, 1) call PauseTimer(udg_DominateTimer, 0) else endif if (Trig_NewDominationSystem_u_Func004C()) then call PlaySound(gg_snd_Narrowly_Averted, 1) call PauseTimer(udg_DominateTimer, 1) call TimerDialogDisplay(udg_DominateTimerWindow, 1) else endif set udg_RushersInRegion = 0 endfunction Правильно пораскрывал бж? Code function Trig_NewDominationSystem_u_Func001Func002001 takes nothing returns boolean Расскажи новичку, что это значит? И ещё: Code call ForGroupBJ(GetUnitsInRectMatching(gg_rct_DesertDominatingRegion, Condition(function Trig_NewDominationSystem_u_Func001001002)), function Trig_NewDominationSystem_u_Func001A) Вот блин, я не понял, как его раскрыть!
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
Сообщение отредактировал Spirit - Среда, 29.07.2009, 22:35 |
|
| |
Spirit | Дата: Среда, 29.07.2009, 22:37 | Сообщение # 10 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| Quote (|DUOS|) Расскажи новичку, что это значит? это гуи условия,вар криво их конвертирует к примеру в триге if/then/else так что имхо лучше писать код с нуля Quote (|DUOS|) call ForGroupBJ(GetUnitsInRectMatching(gg_rct_DesertDominatingRegion, Condition(function Trig_NewDominationSystem_u_Func001001002)), function Trig_NewDominationSystem_u_Func001A) открываем JassCraft/JNGP, смотри начинку функции, раскрываем
|
|
| |
[DUOS] | Дата: Среда, 29.07.2009, 22:48 | Сообщение # 11 |
Придворный
Группа: Проверенные
Сообщений: 352
| Как эти функции сделать нормально?
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
|
|
| |
Spirit | Дата: Среда, 29.07.2009, 22:57 | Сообщение # 12 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| [DUOS], переименовать саму функцию и вызов на неё
|
|
| |
[DUOS] | Дата: Среда, 29.07.2009, 22:59 | Сообщение # 13 |
Придворный
Группа: Проверенные
Сообщений: 352
| Spirit, Спасибо, а бж я правильно пораскрывал?
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
|
|
| |
Spirit | Дата: Среда, 29.07.2009, 23:03 | Сообщение # 14 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| Ах,да как вариант не обращаться к функции в ифах,а сразу обращаться к условиям... Quote (|DUOS|) Спасибо, а бж я правильно пораскрывал? лень проверять - проверь - узнаешь...
|
|
| |
[TGM]DemoN | Дата: Четверг, 30.07.2009, 09:34 | Сообщение # 15 |
Гражданин
Группа: Проверенные
Сообщений: 58
| Quote (Spirit) для движения лучше юзать векторы всё, уже не надо, я сам разобрался) Quote (Spirit) юнит должен быть летающим а вот тут он проходит сквозь объекты, этого мне не надо:( как исправить?
|
|
| |
Spirit | Дата: Четверг, 30.07.2009, 14:02 | Сообщение # 16 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| Quote (|HNA|DemoN) а вот тут он проходит сквозь объекты, этого мне не надо:( как исправить? если летающий,то перелетает можешь двигать через SetUnitX()/SetUnitY() или через SetUnitPosition(),тогда они будут врезаться и отскакивать от препятствий
|
|
| |
Spirit | Дата: Четверг, 30.07.2009, 14:06 | Сообщение # 17 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| Quote (|HNA|DemoN) Тогда как такое сделать при помощи векторов? можешь код написать? ну вот код для работы с векторами...Автор MF Code Code library vectors struct vector real x real y real z static method create takes real x, real y, real z returns vector local vector v = vector.allocate() set v.x=x set v.y=y set v.z=z return v endmethod
method realmul takes real r returns nothing set .x=.x*r set .y=.y*r set .z=.z*r endmethod method getlength takes nothing returns real return SquareRoot(.x*.x+.y*.y+.z*.z) endmethod method normalize takes nothing returns nothing local real l = .getlength() if l>0 then call .realmul(1/l) endif endmethod method setlength takes real r returns nothing local real l = .getlength() if l>0 then call .realmul(r/l) endif endmethod method scalarmul takes vector v returns real return .x*v.x+.y*v.y+.z*v.z endmethod method vectorsum takes vector v returns nothing set .x=.x+v.x set .y=.y+v.y set .z=.z+v.z endmethod method vectormul takes vector v returns nothing local real x = .y*v.z-v.y*.z local real y = .z*v.x-v.z*.x local real z = .x*v.y-v.x*.y set .x = x set .y = y set .z = z endmethod method clone takes nothing returns vector local vector v=vector.allocate() set v.x=.x set v.y=.y set v.z=.z return v endmethod method copy takes vector p returns nothing set .x=p.x set .y=p.y set .z=p.z endmethod method change takes real x, real y, real z returns nothing set .x=x set .y=y set .z=z endmethod endstruct endlibrary но можно и юзать SetUnitX/Y если с векторами не хочешь мучатся...
|
|
| |
[TGM]DemoN | Дата: Четверг, 30.07.2009, 16:03 | Сообщение # 18 |
Гражданин
Группа: Проверенные
Сообщений: 58
| Quote (|HNA|DemoN) как изменять высоту юнита (подбрасывать его в воздух)? изменить высоту полёта не подойдёт т.к. юнит должен быть летающим Quote (Spirit) а поднятие делается функцией SetUnitFlyHeight() юнит должен быть летающим Quote (|HNA|DemoN) Тсли юнит летающий он проходит сквозь других юнитов или перелетает через преграды. Как это исправить или есть другой способ? Quote (Spirit) если летающий,то перелетает можешь двигать через SetUnitX()/SetUnitY() или через SetUnitPosition(),тогда они будут врезаться и отскакивать от препятствий ?!?!?^@%# мне надо чтобы юнит был как юнит, бегал как наземный, но чтобы когда мне надо его взрывом, например, подбрасывало в воздух и он падал, а потом мог нормально бегать не проходя через стены и не врезаясь и отскакивая от препятствий. Quote (Spirit) можешь двигать через SetUnitX()/SetUnitY() или через SetUnitPosition() это мне надо каждое движения юнита всю игру на "сет юнит" двигать? мб я чего-то не понял:( Добавлено (30.07.2009, 16:03) --------------------------------------------- а за векторы спс
|
|
| |
[DUOS] | Дата: Понедельник, 24.08.2009, 15:40 | Сообщение # 19 |
Придворный
Группа: Проверенные
Сообщений: 352
| Вопрос: Что такое с мультибордом? Code function PickBoolean1 takes nothing returns boolean return (GetPlayerController(GetFilterPlayer()) == MAP_CONTROL_USER) endfunction
function PickBoolean2 takes nothing returns boolean return (GetPlayerSlotState(GetFilterPlayer()) == PLAYER_SLOT_STATE_PLAYING) endfunction
function PickCondition takes nothing returns boolean //Условия для отбора игроков. return GetBooleanAnd(PickBoolean1(), PickBoolean2()) endfunction
function FillMultiboard takes nothing returns nothing set udg_Multiboard_Spots[GetConvertedPlayerId(GetEnumPlayer())] = udg_List call MultiboardSetItemValue(MultiboardGetItem(udg_Multiboard, 0, 1), "Имя игрока") call MultiboardSetItemValue(MultiboardGetItem(udg_Multiboard, 0, 2), "Убийств") call MultiboardSetItemValue(MultiboardGetItem(udg_Multiboard, udg_List, 1), (udg_Player_Colors[GetConvertedPlayerId(GetEnumPlayer())] + (GetPlayerName(GetEnumPlayer()) + "|r"))) call MultiboardSetItemValue(MultiboardGetItem(udg_Multiboard, udg_List, 2), "0") call MultiboardSetItemIcon(MultiboardGetItem(udg_Multiboard, udg_List, 0), "ReplaceableTextures\\CommandButtons\\BTNArcaniteRanged.blp") set udg_List = udg_List + 1 endfunction
function Trig_Multiboard_Actions takes nothing returns nothing //Задаю переменные строки цветов игрока. set udg_Player_Colors[1] = "|cFFFF0303" set udg_Player_Colors[2] = "|cFF0042FF" set udg_Player_Colors[3] = "|cFF1CE6B9" set udg_Player_Colors[4] = "|cFF540081" set udg_Player_Colors[5] = "|cFFFFFC01" set udg_Player_Colors[6] = "|cFFFE8A0E" set udg_Player_Colors[7] = "|cFF20C000" set udg_Player_Colors[8] = "|cFFE55BB0" //Задаю целочисленные. set udg_Players = CountPlayersInForceBJ(GetPlayersMatching(Condition(function PickCondition))) //Создаю мультиборд, попутно занося его в глобалку. set udg_Multiboard = CreateMultiboard() call MultiboardSetColumnCount(udg_Multiboard, 3) call MultiboardSetRowCount(udg_Multiboard, 1 + udg_Players) call MultiboardSetTitleText(udg_Multiboard, "Oasis and Desert v.1.0") //Создаю цикл. set udg_LoopAStart = 1 set udg_LoopAEnd = 1 + udg_Players loop exitwhen udg_LoopAStart > udg_LoopAEnd //Здесь я задаю стиль - показывать ли иконку или текст. call MultiboardSetItemStyle(MultiboardGetItem(udg_Multiboard, 0, 0), true, false) call MultiboardSetItemStyle(MultiboardGetItem(udg_Multiboard, 0, 1), true, false) call MultiboardSetItemStyle(MultiboardGetItem(udg_Multiboard, 0, 2), true, false) call MultiboardSetItemStyle(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 0), true, true) call MultiboardSetItemStyle(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 1), true, false) call MultiboardSetItemStyle(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 2), true, false) //Теперь задаю ширину каждой колонки. call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 0), 2.00) call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 1), 8.00) call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 2), 4.00) set udg_LoopAStart = udg_LoopAStart + 1 endloop set udg_List = 1 //Следующим действием отбираю только играющих и контролируемых человеком игроков. call ForForce(GetPlayersMatching(Condition(function PickCondition)), function FillMultiboard) //Показываю мультиборд. call MultiboardDisplay(udg_Multiboard, true) endfunction
//=========================================================================== function InitTrig_Multiboard takes nothing returns nothing set gg_trg_Multiboard = CreateTrigger() call TriggerRegisterTimerEvent(gg_trg_Multiboard, 1.00, false) call TriggerAddAction( gg_trg_Multiboard, function Trig_Multiboard_Actions ) endfunction
Результат на экране: Что я сделал не так?
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
|
|
| |
Meck | Дата: Понедельник, 24.08.2009, 18:32 | Сообщение # 20 |
Начальник
Группа: Проверенные
Сообщений: 131
Репутация: 0
Награды
| [DUOS], в джасе не шарю, но попробуй свернуть и развернуть, мне иногда помогало
|
|
| |
[DUOS] | Дата: Понедельник, 24.08.2009, 19:44 | Сообщение # 21 |
Придворный
Группа: Проверенные
Сообщений: 352
| Meck, Quote (Meck) попробуй свернуть и развернуть Если бы это работало, тогда я бы не задавал вопрос.
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
|
|
| |
KLOP | Дата: Вторник, 25.08.2009, 02:54 | Сообщение # 22 |
Гражданин
Группа: Пользователи
Сообщений: 62
| call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 0), 2.00) call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 1), 8.00) call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 2), 4.00) ошибка тут помойму)))одна из ошибок
|
|
| |
[DUOS] | Дата: Вторник, 25.08.2009, 12:09 | Сообщение # 23 |
Придворный
Группа: Проверенные
Сообщений: 352
| Quote (KLOP) call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 0), 2.00) call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 1), 8.00) call MultiboardSetItemWidth(MultiboardGetItem(udg_Multiboard, udg_LoopAStart, 2), 4.00) ошибка тут помойму)))одна из ошибок KLOP, И не помойму а точно... Знать бы, какая...
Привет, меня зовут Рой. Я тут немножко подсел на магию... (© Чародей Крови) За Кель-Таллас! Oasis and Desert Ландшафт - 100% Триггеры и кодинг - 5% Герои - 4% Итого - 36%
|
|
| |
KLOP | Дата: Вторник, 25.08.2009, 13:48 | Сообщение # 24 |
Гражданин
Группа: Пользователи
Сообщений: 62
| [DUOS], у тебя тут сделанно цыкл меняет колонки и 0 строка 1 и 2,а ну 0 строка это для всех ты присваеш в итоге для всех колонок 4 длину и всё(кароеч ты строки с колонками перепутал)
|
|
| |
Spirit | Дата: Вторник, 25.08.2009, 13:49 | Сообщение # 25 |
Irony of Truth: The Last War
Гражданин
Группа: Проверенные
Сообщений: 66
Репутация: 1
Награды
| [DUOS], похимич с числами,отвечающими за ширину
|
|
| |