[JASSфак] Лекция 1. Первое знакомство с JASS.
|
|
Akvarium | Дата: Среда, 18 Ноября 2009, 20:37:58 | Сообщение # 51 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| Тьфу!))Точно))))))) Добавлено (18-11-2009, 20:37) --------------------------------------------- А че этот код не пашет? Code function A takes rect r returns group local integer c local integer cloop local group groupA local unit u1 call FogEnable(false) set r = GetPlayableMapRect() return GetUnitsInRectMatching(r, null) set groupA = A(r) set c = CountUnitsInGroup(GetUnitsInRectAll(r)) loop exitwhen cloop == c set u1 = GroupPickRandomUnit(groupA) set cloop = cloop +1 call TriggerSleepAction( 0.50) call KillUnit(u1) endloop endfunction Надо чтоб каждую полсекунду убивало кого-то на карте.
|
|
|
|
Сорнемус | Дата: Среда, 18 Ноября 2009, 21:09:17 | Сообщение # 52 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (Akvarium) А че этот код не пашет? Всё в 1 функции нельзя. Надо так: Code function A takes rect r returns group return GetUnitsInRectMatching(r, null) endfunction
function B takes nothing returns nothing local integer c local integer cloop local group groupA local unit u1 local rect r = GetPlayableMapRect() call FogEnable(false) set groupA = A(r) set c = CountUnitsInGroup(GetUnitsInRectAll(r)) loop exitwhen cloop == c set u1 = GroupPickRandomUnit(groupA) set cloop = cloop +1 call TriggerSleepAction( 0.50) call KillUnit(u1) endloop endfunction Не совсем уверен но вроде должно работать.
Сообщение отредактировал Сорнемус - Среда, 18 Ноября 2009, 21:20:22 |
|
|
|
Akvarium | Дата: Среда, 18 Ноября 2009, 21:11:01 | Сообщение # 53 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| неа) лана) дуос скажет
|
|
|
|
[DUОS] | Дата: Среда, 18 Ноября 2009, 22:34:41 | Сообщение # 54 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| ShadowDragon, Совсем не обязательно писать мой ник в Келя Akvarium, Жуткий код (жутко ужасный :)) Проще будь! Вот код: Code function GGActions takes nothing returns nothing local rect r = GetPlayableMapRect() local group g = GetUnitsInRectAll(r) local integer c = CountUnitsInGroup(g) local integer i = 0 local unit u loop exitwhen c == i set u = GroupPickRandomUnit(g) call TriggerSleepAction(.5) call SetUnitExploded(u,true) // Больше спецэффектальности 8-) call KillUnit(u) set u = null endloop set g = null call RemoveRect(r) set r = null endfunction Это должно сработать... сейчас проверю
|
|
|
|
Akvarium | Дата: Среда, 18 Ноября 2009, 22:43:14 | Сообщение # 55 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| [DUОS Пашет))
|
|
|
|
[DUОS] | Дата: Среда, 18 Ноября 2009, 22:44:39 | Сообщение # 56 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Akvarium, Ты же группу возвращал xDD
|
|
|
|
GooGLe | Дата: Среда, 18 Ноября 2009, 22:52:10 | Сообщение # 57 |
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 0
Блокировки:
| Quote (|DUОS|) set u = null Паранойя. А удалять из группы не лишне.
|
|
|
|
[DUОS] | Дата: Среда, 18 Ноября 2009, 23:03:07 | Сообщение # 58 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| GooGLe, Однако я не параноик =D В любом случае, юнит = хендл и нуждается в сносе...
|
|
|
|
Akvarium | Дата: Среда, 18 Ноября 2009, 23:03:40 | Сообщение # 59 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| GooGLe, О_О У тебя 1 сообщение. И его ты только что написал. Как ты пароль получил? О_о
|
|
|
|
GooGLe | Дата: Среда, 18 Ноября 2009, 23:18:48 | Сообщение # 60 |
1 уровень
Группа: Пользователи
Сообщений: 15
Награды: 0
Репутация: 0
Блокировки:
| В смылсе u удалять. Мама дорогая, а DestroyGroup где?Добавлено (18-11-2009, 23:10) ---------------------------------------------
Quote (|DUОS|) юнит = хендл и нуждается в сносе... Примерно за год до твоей регистрации по этому вопросу была полемика между мной и MaSer с инициатором Чудо/Gryphon. Так вот. Надо засунуть код в цикл и смотреть на утечки. В разных скриптах карты разные правила по борьбе с утечками.Добавлено (18-11-2009, 23:18) --------------------------------------------- Ы! Даже в функции main и в действиях триггера разные хендлы приходится обнулять. Или приходилось. Я с 1.22 не у дел.
|
|
|
|
Сорнемус | Дата: Среда, 18 Ноября 2009, 23:22:46 | Сообщение # 61 |
9 уровень
Группа: Проверенные
Сообщений: 854
Награды: 0
Репутация: 120
Блокировки:
| Quote (Akvarium) GooGLe, О_О У тебя 1 сообщение. И его ты только что написал. Как ты пароль получил? О_о Или атака злобный китайских хакеров или Алиса бушует =)
|
|
|
|
[DUОS] | Дата: Четверг, 19 Ноября 2009, 01:13:03 | Сообщение # 62 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (Сорнемус) Алиса бушует =) Скорее всего это...
|
|
|
|
ShadowDragon | Дата: Четверг, 19 Ноября 2009, 10:29:46 | Сообщение # 63 |
10 уровень
Группа: Проверенные
Сообщений: 1564
Награды: 1
Репутация: 286
Блокировки:
| [DUOS] Quote Совсем не обязательно писать мой ник в Келя Я сперва хотел разговор сделать, потом передумал(не нашел нормальной модели для своего ника).
Человечество так низко пало... Даже я за ним не успеваю © Не помню
|
|
|
|
0x4453 | Дата: Четверг, 19 Ноября 2009, 10:42:42 | Сообщение # 64 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| Quote (|DUОS|) function DistanceBetweenCoords takes real x1, real y1, real x2, real y2 returns real return SquareRoot((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) endfunction Вставь это перед кодом. Код функции: function ActionsAfterTimer takes nothing returns nothing //Здесь действия после таймера... endfunction local unit caster = GetSpellAbilityUnit() local real tx = GetSpellTargetX() local real ty = GetSpellTargetY() local real cx = GetUnitX(caster) local real cy = GetUnitY(caster) local real r = DistanceBetweenCoords(tx,ty,cx,cy) / 800 local timer t = CreateTimer() call TimerStart(t,r,false,function ActionsAfterTimer) set t = null set caster = null эпик фэйл нахер столько функций,если квадратный корень можно записать в переменную,или юзать как аргумент?О_оДобавлено (19-11-2009, 10:41) --------------------------------------------- да и ко всем прочему:не юзайте вы слипы в циклах,убого выглядит =\ Добавлено (19-11-2009, 10:42) --------------------------------------------- если надо - слеплю урок со своей статьи...
|
|
|
|
[DUОS] | Дата: Четверг, 19 Ноября 2009, 11:40:21 | Сообщение # 65 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| local unit caster = GetSpellAbilityUnit() local real tx = GetSpellTargetX() local real ty = GetSpellTargetY() local real cx = GetUnitX(caster) local real cy = GetUnitY(caster) local real sqr = SquareRoot((tx-cx)*(tx-cx)+(ty-cy)*(ty-cy)) local real r = sqr / 800 local timer t = CreateTimer() call TimerStart(t,r,false,function ActionsAfterTimer) set t = null set caster = null Теперь доволен, 0х4453? )
|
|
|
|
0x4453 | Дата: Четверг, 19 Ноября 2009, 12:47:09 | Сообщение # 66 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| [DUОS], нет можно и так local real r = (SquareRoot((tx-cx)*(tx-cx)+(ty-cy)*(ty-cy)))/ 800 и кода меньше,и не требуеться вермя на объявление локи можно юнита было бы вешать и на хэндл таймера =\
|
|
|
|
[DUОS] | Дата: Четверг, 19 Ноября 2009, 12:54:34 | Сообщение # 67 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (0x4453) можно юнита было бы вешать и на хэндл таймера =\ 0x4453, Драгон =\ Начинать с простого надо =\
|
|
|
|
Akvarium | Дата: Четверг, 19 Ноября 2009, 12:59:39 | Сообщение # 68 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| [DUОS], когда урок опубликуешь?
|
|
|
|
ShadowDragon | Дата: Четверг, 19 Ноября 2009, 13:11:25 | Сообщение # 69 |
10 уровень
Группа: Проверенные
Сообщений: 1564
Награды: 1
Репутация: 286
Блокировки:
| [DUOS] Quote ([DUOS) ]Драгон =\ Начинать с простого надо =\ Это ты мне?
Человечество так низко пало... Даже я за ним не успеваю © Не помню
|
|
|
|
0x4453 | Дата: Четверг, 19 Ноября 2009, 14:26:57 | Сообщение # 70 |
3 уровень
Группа: Пользователи
Сообщений: 74
Награды: 0
Репутация: 13
Блокировки:
| ShadowDragon, нет,не шаришь (с)
|
|
|
|
[DUОS] | Дата: Четверг, 19 Ноября 2009, 14:59:05 | Сообщение # 71 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| ShadowDragon, 0x4453
|
|
|
|
Djimm | Дата: Четверг, 19 Ноября 2009, 15:11:13 | Сообщение # 72 |
5 уровень
Группа: Проверенные
Сообщений: 117
Награды: 0
Репутация: 20
Блокировки:
| [DUОS], а разъясни пожалуйста, как делать Таймер вместо SleepAction ??? А то я пробовал, но не получилось.
|
|
|
|
Akvarium | Дата: Четверг, 19 Ноября 2009, 15:11:33 | Сообщение # 73 |
8 уровень
Группа: Проверенные
Сообщений: 581
Награды: 1
Репутация: 87
Блокировки:
| [DUОS], Quote (Akvarium) когда урок опубликуешь?
|
|
|
|
[DUОS] | Дата: Четверг, 19 Ноября 2009, 15:40:24 | Сообщение # 74 |
Группа: Заблокированные
Сообщений: 6279
Награды: 9
Репутация: 1708
Блокировки:
| Quote (|DUОS|) function ActionsAfterTimer takes nothing returns nothing //Здесь действия после таймера... endfunction local unit caster = GetSpellAbilityUnit() local real tx = GetSpellTargetX() local real ty = GetSpellTargetY() local real cx = GetUnitX(caster) local real cy = GetUnitY(caster) local real r = DistanceBetweenCoords(tx,ty,cx,cy) / 800 local timer t = CreateTimer() call TimerStart(t,r,false,function ActionsAfterTimer) set t = null set caster = null Djimm, Вот пример, объяснённый Сорнемусу...
|
|
|
|
ShadowDragon | Дата: Четверг, 19 Ноября 2009, 17:31:33 | Сообщение # 75 |
10 уровень
Группа: Проверенные
Сообщений: 1564
Награды: 1
Репутация: 286
Блокировки:
| 0x4453, Quote (0x4453) нет,не шаришь (с) Там написано Значит я что-то не так понял.
Человечество так низко пало... Даже я за ним не успеваю © Не помню
|
|
|
|