Вы находитесь на сайте модмейкеров.
Четверг, 21.11.2024, 21:09
Участники · Правила форума · ПОИСК!
  • Страница 1 из 1
  • 1
Циклы[Статья]
GlaberДата: Среда, 01.02.2012, 15:40 | Сообщение # 1



Сообщений: 1057

В этой статье я расскажу как пользоватся циклами в jass.
Делается это очень просто:
Создаем переменную типа целочисленное
Code
local integer i=0

Далее создаем сам цикл.
Code
loop
exitwhen i>10
//Действия
set i=i+1
endloop

Цикл повторится 10-ть раз.
Совсем не трудно!
Далее расмотрим if/then/else в jass
Начинается как вы поняли так
Code
if ..... then // Если что-то тогда
//Действие
else // Инчаче
//Действие
endif // Конец


Пример:
Code
local integer i=GetRandomInt(0,10)
if i==7 then
call DisplayTimedTextToForce(GetPlayerAll(),10,"7")
endif

Создает переменную I с рандомным значением от 0-10 и если число = 7,то всем игрокам об этом сообщается.

Пример из одной из моих способностей.
Code
local unit f=GetTriggerUnit()
     local integer i=0
     local real fas=GetUnitFacing(f)
     local unit array da
     local integer di=0
     local real x = GetSpellTargetX()  
     local real y = GetSpellTargetY()
     local unit d=CreateUnit(GetOwningPlayer(f),'o004',x,y,GetUnitFacing(f))
         local integer in=GetHeroInt(f,true)/2
     local real x1 = GetWidgetX(d) + (400+in) * Cos(fas * .017)  
     local real y1 = GetWidgetY(d) + (400+in) * Sin(fas * .017)
     local real x2 = GetWidgetX(d) + 220. * Cos(fas * .017)  
     local real y2 = GetWidgetY(d) + 220. * Sin(fas * .017)
     local destructable array des
     local integer dei=0
//
     loop
     exitwhen i>10*GetUnitAbilityLevel(f,'A00B')+(3*GetUnitAbilityLevel(f,'A00D'))
     set da[di]=CreateUnit(GetOwningPlayer(f),udg_type[GetRandomInt(4,6)],x1,y1,0)
         call UnitApplyTimedLife(da[di],'BTLF',2*GetUnitAbilityLevel(f,'A00B')+2)
         call SetUnitAbilityLevel(da[di],'A00A',GetUnitAbilityLevel(f,'A00B'))
     set des[dei]=CreateDestructable('YTpc',x1,y1,fas,1,1)
     set dei=dei+1
     set di=di+1
     set i=i+1
     set fas=fas-20
     set x1 = GetWidgetX(d) + (400+in) * Cos(fas * .017)  
     set y1 = GetWidgetY(d) + (400+in) * Sin(fas * .017)
call TriggerSleepAction(0.01)
     endloop
//
     loop
     exitwhen i==0
call IssuePointOrder(da[di],"shockwave",x2,y2)
     set di=di-1
     set i=i-1
     set fas=fas+20
     set x2 = GetWidgetX(d) + 220. * Cos(fas * .017)  
     set y2 = GetWidgetY(d) + 220. * Sin(fas * .017)
     endloop
//
     set dei=0
call TriggerSleepAction(0.8)
//
     loop
     exitwhen i>10*GetUnitAbilityLevel(f,'A00B')+(3*GetUnitAbilityLevel(f,'A00D'))
call RemoveDestructable(des[dei])
     set des[dei]=null
     set dei=dei+1
     set da[di]=null
     set di=di+1
     set i=i+1
     endloop
//
     set f=null




Сообщение отредактировал Dermine - Среда, 01.02.2012, 15:42
--
  • Страница 1 из 1
  • 1
Поиск:

W3 - Всё для картостроения. 2024-2010 |