|
|
|
|
[ВАЖНО] Помощь по JASS
|
|
Сорнемус | Дата: Воскресенье, 20 Декабря 2009, 23:30:03 | Сообщение # 51 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (inhuman89) в начале Только надо И в самом конце
|
|
|
|
inhuman89 | Дата: Воскресенье, 20 Декабря 2009, 23:35:06 | Сообщение # 52 |
5 уровень
Группа: Пользователи
Сообщений: 106
Награды: 0
Репутация: 5
Блокировки:
| я понял что надоел уже, но не играет анимацию ни в какую Добавлено (20-12-2009, 23:35) --------------------------------------------- как я этого не хотел но похоже придется модель лишать всех аним кроме attack 2
•
|
|
|
|
pein | Дата: Понедельник, 21 Декабря 2009, 22:12:32 | Сообщение # 53 |
9 уровень
Группа: Проверенные
Сообщений: 1114
Награды: 1
Репутация: 272
Блокировки:
| ребят сори что тут пишу но нужно чтоб кто то обяснил толком как избежать утечки памяти
|
|
|
|
H_A_PK | Дата: Понедельник, 21 Декабря 2009, 22:26:49 | Сообщение # 54 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| Короче. чтоб избежать утечек нужно ширако использовать переменные , так как я приведу пример. любая переменная засоряет память и любой обьект и спользую постояно "применяющий юнит" мы каждый рас создаём переменую и она засоряяет память. а если занеси "применяющий юнит" в переменную и использовать её всегда и витоге онулить её с памощью функции set udg_(название переменой) = null мы не засори память. или пример когда мы создаём спецэфект не удоляя его. думая , что он сам уничтожился, нет он порожнему занимает память , и поэтому его необходимо удолять, тожесамое с мобами в доте. они удоляются после смери , чтоб он не занимал память. нк ты понял?
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
|
|
|
|
pein | Дата: Вторник, 22 Декабря 2009, 11:32:57 | Сообщение # 55 |
9 уровень
Группа: Проверенные
Сообщений: 1114
Награды: 1
Репутация: 272
Блокировки:
| H_A_PK, болия мения понял спс огромное, и щё 1 вопрос а аптимизировать можна токо на жасс иле на гуи тодже можно?
|
|
|
|
Сорнемус | Дата: Вторник, 22 Декабря 2009, 18:59:46 | Сообщение # 56 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (pein) и щё 1 вопрос а аптимизировать можна токо на жасс иле на гуи тодже можно? На ГУИ многие действия ограничены. Например, ГУИ не даёт обнулять некоторые типы переменных. Так что предпочтительней джасс. H_A_PK, я плакал... Quote (H_A_PK) Короче. чтоб избежать утечек нужно ширако использовать переменные , так как я приведу пример. любая переменная засоряет память и любой обьект Утечки вызывают далеко не только это. Quote (H_A_PK) и спользую постояно "применяющий юнит" мы каждый рас создаём переменую и она засоряяет память. О бог мой... "GetSpellAbilityUnit()" возвращает константу, а они почти не засоряют память. Локалки тут используют для удобства. Quote (H_A_PK) тожесамое с мобами в доте. они удоляются после смери , чтоб он не занимал память. Где-то видел как писали, что ходячие юниты доты не вызывают утечек, так как после исчезания трупа они сами обнуляются Самые страшные утечки - создание тонн точек. Если неопытный человек начнёт делать плавное перемещение то после 4-5 таких перемещений вар ляжет. По-этому надо использовать координаты. pein, я тебе посоветую лучше поискать статьи по утечкам (ещё глянь в статье Sergey'я про утечки, там неплохо описано что это).
|
|
|
|
[DUОS] | Дата: Вторник, 22 Декабря 2009, 21:13:29 | Сообщение # 57 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (inhuman89) call SetUnitAnimationByIndex(GetSpellAbilityUnit(),2) inhuman89, Попробуй строкой задать. Сорнемус, Quote (Сорнемус) "применяющий юнит" Quote (Сорнемус) Локалки тут используют для удобства. Ненене, не катит... Тут мы уменьшаем вызовы функции. Вот скажи мне, что лучше использовать: Code local integer i = 1 loop exitwhen i > 10 call BJDebugMsg(I2S(i)) set i = i + 1 endloop или жеCode local integer i = 1 loop exitwhen i > 10 call BJDebugMsg(I2S(i)) call BJDebugMsg(I2S(i + 1)) set i = i + 2 endloop Этот вопрос был задан MaSer'ом мне. Ответь на него и ты. Если не поймёшь, разъясню.
|
|
|
|
inhuman89 | Дата: Вторник, 22 Декабря 2009, 21:25:41 | Сообщение # 58 |
5 уровень
Группа: Пользователи
Сообщений: 106
Награды: 0
Репутация: 5
Блокировки:
| Quote (|DUОS|) inhuman89, Попробуй строкой задать. извини не понял. как строкой? это разве не строкой?Добавлено (22-12-2009, 21:25) --------------------------------------------- и еще вопрос, при перемещении через set x\y происходят тн утечки? например: Code Custom script: set udg_x1 = udg_x1 + udg_H_offset[1] * Cos(udg_H_angle_1)
•
|
|
|
|
Сорнемус | Дата: Вторник, 22 Декабря 2009, 23:00:53 | Сообщение # 59 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (inhuman89) и еще вопрос, при перемещении через set x\y происходят тн утечки? например: Если всё правильно, то нет. Quote (|DUОS|) Попробуй строкой задать. Ненене. Алексей писал что надо именно индекс, а не название тега. Quote (|DUОS|) Этот вопрос был задан MaSer'ом мне. Ответь на него и ты. Если не поймёшь, разъясню. Без разницы. Так как в 1 варианте цикл идёт 10 раз и вызов функций "BJDebugMsg" и "I2S" происходит по 10 раз, а во 2 варианте цикл идёт 5 раз, но вызовов функций по 2, так что и в сумме вызов также будет 10.
Сообщение отредактировал Сорнемус - Вторник, 22 Декабря 2009, 23:01:03 |
|
|
|
RAYMANTO16 | Дата: Среда, 23 Декабря 2009, 13:11:55 | Сообщение # 60 |
9 уровень
Группа: Проверенные
Сообщений: 1018
Награды: 0
Репутация: 362
Блокировки:
| а подскажите как сделать ИИ.ну чтоб он копил армии,нападал и все такое делал.ну когда не все юниты и улучшения открыты
|
|
|
|
inhuman89 | Дата: Четверг, 24 Декабря 2009, 01:47:47 | Сообщение # 61 |
5 уровень
Группа: Пользователи
Сообщений: 106
Награды: 0
Репутация: 5
Блокировки:
| вот попросил я на хайве сделать мне системку отбрасывания врагов. сделать сделалиб но как ее использовать сказать забыли) я понимаю что мне самому нужно учить джасс, а не просить постоянно. по сабжу. скажите как ее собственно запустить? мне например нужно при касте абилки. Code library Knockback
globals private constant real Interval = 0.01
private constant string effekt = "Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMissile.mdl"
private constant string blood = "Objects\\Spawnmodels\\Critters\\Albatross\\CritterBloodAlbatross.mdl" endglobals
private struct data unit u real d1 real d2
real sin real cos
boolean r endstruct
globals private timer Tim = CreateTimer() private data array DATAS private integer Total = 0 endglobals
private function IsCoordPathable takes real x, real y returns boolean local item u = CreateItem( 'wolg', x,y ) local real xx = GetItemX( u ) - x local real yy = GetItemY( u ) - y call RemoveItem(u) set u = null if xx < 1 and xx > -1 and yy < 1 and yy > -1 then return true endif return false endfunction
private function Execute takes nothing returns nothing local data dat local integer i = 0 local real x local real y loop exitwhen i >= Total set dat = DATAS[i] set x = GetUnitX(dat.u) + dat.d1 * dat.cos set y = GetUnitY(dat.u) + dat.d1 * dat.sin if IsCoordPathable(x, y) then if dat.r then call SetUnitX(dat.u, x) call SetUnitY(dat.u, y) else call SetUnitPosition(dat.u,x,y) endif endif set dat.d1 = dat.d1 - dat.d2 if dat.d1 <= 0 or not IsCoordPathable(x, y) then set DATAS[i] = DATAS[Total - 1] set Total = Total - 1 call dat.destroy() endif set i = i + 1 endloop if Total == 0 then call PauseTimer(Tim) endif endfunction
function Knockback takes unit u, real d, real a, real t, boolean resist returns nothing local data dat = data.create() local integer q = R2I(t / Interval) set a = a*bj_DEGTORAD set dat.u = u set dat.d1 = 2 * d / (q + 1) set dat.d2 = dat.d1 / q set dat.sin = Sin(a) set dat.cos = Cos(a) set dat.r = resist if Total == 0 then call TimerStart(Tim, Interval, true, function Execute) endif set Total = Total + 1 set DATAS[Total - 1] = dat endfunction
endlibrary
•
|
|
|
|
Ak0n™ | Дата: Суббота, 26 Декабря 2009, 07:27:17 | Сообщение # 62 |
10 уровень
Группа: Проверенные
Сообщений: 1575
Награды: 0
Репутация: 568
Блокировки:
| Я далеко не знаю возможности джаза(ток гуи) поэтому у меня к вам есть пару вопросов: 1.Можно сделать так,чтобы скажем при использовании спела,чел успел станцевать как майкл джексон?)))) )) ))) 2.Ну или когда чела бьют,враг загорается? 3.Я инода видел что шеи у моделий шевелятся в разные стороны,это джаз?
|
|
|
|
inhuman89 | Дата: Понедельник, 28 Декабря 2009, 03:49:47 | Сообщение # 63 |
5 уровень
Группа: Пользователи
Сообщений: 106
Награды: 0
Репутация: 5
Блокировки:
| Quote (Ak0n™) что шеи у моделий шевелятся это как?
•
|
|
|
|
[DUОS] | Дата: Понедельник, 28 Декабря 2009, 16:30:10 | Сообщение # 64 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (inhuman89) при перемещении через set x\y происходят тн утечки? Никогда! Quote (Сорнемус) Без разницы. Так как в 1 варианте цикл идёт 10 раз и вызов функций "BJDebugMsg" и "I2S" происходит по 10 раз, а во 2 варианте цикл идёт 5 раз, но вызовов функций по 2, так что и в сумме вызов также будет 10. Нет, ни в коем разе. Второй вариант лучше, ест меньше тактов процессора.Добавлено (28-12-2009, 16:30) --------------------------------------------- Ak0n™, Quote (Ak0n™) 2.Ну или когда чела бьют,враг загорается? Пламя феникса дай атакующему. Про остальное - тебе ответят в моделировании.
|
|
|
|
H_A_PK | Дата: Понедельник, 04 Января 2010, 21:48:44 | Сообщение # 65 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| давай раскрой я пример с тебя возьму [DUОS], PingMinimapLocForForceEx
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
|
|
|
|
[DUОS] | Дата: Понедельник, 04 Января 2010, 21:55:40 | Сообщение # 66 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| H_A_PK, function PingMinimapForForceEx takes force whichForce, real x, real y, real duration, integer style, real red, real green, real blue returns nothing local integer red255 = PercentTo255(red) local integer green255 = PercentTo255(green) local integer blue255 = PercentTo255(blue) if (IsPlayerInForce(GetLocalPlayer(), whichForce)) then // Use only local code (no net traffic) within this block to avoid desyncs. // Prevent 100% red simple and flashy pings, as they become "attack" pings. if (red255 == 255) and (green255 == 0) and (blue255 == 0) then set red255 = 254 endif if (style == bj_MINIMAPPINGSTYLE_SIMPLE) then call PingMinimapEx(x, y, duration, red255, green255, blue255, false) elseif (style == bj_MINIMAPPINGSTYLE_FLASHY) then call PingMinimapEx(x, y, duration, red255, green255, blue255, true) elseif (style == bj_MINIMAPPINGSTYLE_ATTACK) then call PingMinimapEx(x, y, duration, 255, 0, 0, false) else // Unrecognized ping style - ignore the request. endif //call StartSound(bj_pingMinimapSound) endif endfunction
|
|
|
|
H_A_PK | Дата: Среда, 06 Января 2010, 13:47:31 | Сообщение # 67 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| эээъъ, а почему я изминений не заметил ?? Добавлено (04-01-2010, 22:06) --------------------------------------------- call PingMinimapLocForForceEx(bI, 50, 50, 128, 50, 128 , 128 , 255) Добавлено (04-01-2010, 22:43) --------------------------------------------- Code function PingMinimapForForceEx takes force whichForce, real x, real y, real duration, integer style, real red, real green, real blue returns nothing local force bI local integer red255 = PercentTo255(128) local integer green255 = PercentTo255(128) local integer blue255 = PercentTo255(255)
if (IsPlayerInForce(GetLocalPlayer(), bI)) then // Use only local code (no net traffic) within this block to avoid desyncs.
// Prevent 100% red simple and flashy pings, as they become "attack" pings. if (red255 == 255) and (green255 == 0) and (blue255 == 0) then set red255 = 254 endif
if (style == bj_MINIMAPPINGSTYLE_SIMPLE) then call PingMinimapEx(50, 50, 128, red255, green255, blue255, false) elseif (style == bj_MINIMAPPINGSTYLE_FLASHY) then call PingMinimapEx(50, 50, 128, red255, green255, blue255, true) elseif (style == bj_MINIMAPPINGSTYLE_ATTACK) then call PingMinimapEx(50, 50, 128, 255, 0, 0, false) else // Unrecognized ping style - ignore the request. endif //call StartSound(bj_pingMinimapSound) endif endfunction так чтоли ? _ОО ))Добавлено (06-01-2010, 12:31) ---------------------------------------------
Code functions Global takes nothing returns nothing local integer COUNT_OF_PLAYERS = 12 costant integer INVERSE = 1 global global unit array Units global boolean array Up[12] global boolean array Down[12] global boolean array Left[12] global boolean array Right[12] global boolean array ApplyCam[12] global boolean array ApplyControl[12] global integer array Anims[12] global boolean array Arround[12] global boolean array FlagArround[12] global boolean array ResetFlag[12] global location l[12] endglobal endfunction АХТУНГ что не так ? О_о Добавлено (06-01-2010, 13:47) ---------------------------------------------
Code function Trig_cameraCren_Actions takes nothing returns nothing local real u = gg_unit_hpea_0001 local real x = GetUnitX(u) local real y = GetUnitY(u) call TriggerSleepAction( 0.1 ) If ( RectContainsUnit(Rect(xy, yx, xy, yx), u) == true ) then set udg_Fgle = ( udg_Fgle + GetRandomReal(-10.00, 10.00) ) endif set u = null endfunction а тут О_о ?
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
Сообщение отредактировал H_A_PK - Понедельник, 04 Января 2010, 22:44:09 |
|
|
|
Сорнемус | Дата: Среда, 06 Января 2010, 23:58:50 | Сообщение # 68 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (H_A_PK) АХТУНГ что не так ? О_о Во-первых, не global, a globals. Во-вторых, в блоке globals не нужна приставка globals перед переменной. В-третьих, если я не ошибаюсь, то глобалки нельзя внутри функции объявлять. Quote (H_A_PK) а тут О_о ? xy, yx, xy, yx откуда взялись?
|
|
|
|
YaponeZzZ | Дата: Четверг, 07 Января 2010, 00:30:56 | Сообщение # 69 |
SW Hero
Группа: Проверенные
Сообщений: 658
Награды: 2
Репутация: 193
Блокировки:
| Как обнулить логическую переменную?
|
|
|
|
Сорнемус | Дата: Четверг, 07 Января 2010, 00:32:55 | Сообщение # 70 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| YaponeZzZ, её обнулять не надо. Да и не обнулишь. У неё только true или false.
|
|
|
|
Nightik | Дата: Четверг, 07 Января 2010, 00:34:10 | Сообщение # 71 |
7 уровень
Группа: Проверенные
Сообщений: 259
Награды: 0
Репутация: 9
Блокировки:
| Jass очень трудно учить и прочем он слишком умный Ну как delphi C++
Даш минус получишь обратно :( Даш плюс получишь обратно :)
|
|
|
|
YaponeZzZ | Дата: Четверг, 07 Января 2010, 00:36:11 | Сообщение # 72 |
SW Hero
Группа: Проверенные
Сообщений: 658
Награды: 2
Репутация: 193
Блокировки:
| Сорнемус, ууу спасибо, по GUI я еще норм... А вот Джасс тока учу, стараюсь сам... А утечки с каких переменных могут происоходит?
|
|
|
|
Сорнемус | Дата: Четверг, 07 Января 2010, 00:36:46 | Сообщение # 73 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (Nightik) Jass очень трудно учить и прочем он слишком умный По сравнению с С++ джасс учиться легче лёгкого. ЗЫ: Не стоит говорить о том, чего не знаешь. ЗЫЫ: Не оффтопь.
|
|
|
|
H_A_PK | Дата: Четверг, 07 Января 2010, 00:39:21 | Сообщение # 74 |
Быдлокодер
Группа: Проверенные
Сообщений: 2605
Награды: 1
Репутация: 822
Блокировки:
| Quote (Сорнемус) то глобалки нельзя внутри функции объявлять. как ? я видел в нароботке, они в функции были ))
проклятье ляжет на любого кто дочитает до конца нет не дочитывай не надо остановись ну всё капец
|
|
|
|
Сорнемус | Дата: Четверг, 07 Января 2010, 00:40:09 | Сообщение # 75 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (YaponeZzZ) А утечки с каких переменных могут происоходит? Почти все, кроме boolean, integer, real. ЗЫ: Что упустил - напомните. ЗЫЫ: Утечки это немного другое. Просто так объяснить трудно.
|
|
|
|
|
|
|
|
|
|
|