Сейчас 00:33:01 Вторник, 31 января, 2023 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [JASSфак] Лекция 1. Первое знакомство с JASS.
[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
Блокировки:
Quote (GooGLe)
Паранойя.

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)
нет,не шаришь (с)

Там написано

Quote (|DUОS|)
Драгон

Значит я что-то не так понял.


Человечество так низко пало... Даже я за ним не успеваю © Не помню


 

Форум о Warcraft 3 » Раздел для картостроителей » Раздел картостроителя » [JASSфак] Лекция 1. Первое знакомство с JASS.
  • Страница 3 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

Copyright © 2006 - 2023 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz