Сейчас 22:43:36 Понедельник, 29 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » local
local
abidinДата: Четверг, 01 Августа 2013, 18:35:45 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
нельзя присваивать локалальную переменную для last created unit?

Сообщение отредактировал abidin - Четверг, 01 Августа 2013, 23:19:19
 

NaturekidДата: Четверг, 01 Августа 2013, 18:43:30 | Сообщение # 2
Группа: Заблокированные
Сообщений: 4982
Награды: 3
Репутация: 3347
Блокировки:
Насколько я знаю, ты не особо пока шаришь в редакторе
Вопрос - нахер тебе лезть в локалки?


 

Imba_pvLДата: Четверг, 01 Августа 2013, 18:46:55 | Сообщение # 3
10 уровень
Группа: Проверенные
Сообщений: 3151
Награды: 1
Репутация: 1260
Блокировки:
facepalm
для чего тебе это?
сначала с обычными переменными разберись, а потом уже и в локалки лезь.


 

NightCattyДата: Четверг, 01 Августа 2013, 19:10:45 | Сообщение # 4
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
чё все так набросились, парень постигает глубины редактора
abidin,


Тщетно бытиё! :c
 

[SeKtOR]Дата: Четверг, 01 Августа 2013, 19:14:05 | Сообщение # 5
Группа: Проверенные
Сообщений: 1143
Награды: 0
Репутация: 1168
Блокировки:
Можно проще:
Код
local unit theUnit = GetLastCreatedUnit()

obmanul


 

NightCattyДата: Четверг, 01 Августа 2013, 19:57:47 | Сообщение # 6
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
Цитата (|SeKtOR|)
Можно проще:
Код
local unit theUnit = GetLastCreatedUnit()

оптимизатор от бога! ^_^


Тщетно бытиё! :c
 

abidinДата: Четверг, 01 Августа 2013, 23:25:18 | Сообщение # 7
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
Цитата (|SeKtOR|)
local unit theUnit = GetLastCreatedUnit()

я писал так,не получилось.
поэтому написал в форум

Добавлено (01 Августа 2013, 23:25:18)
---------------------------------------------

Цитата (Imba_pvL)

для чего тебе это?
сначала с обычными переменными разберись, а потом уже и в локалки лезь.

с чего ты взял,что не разбираюсь?

Просто интересно,как через 6 секунд убить последнего созданного юнита.

Я писал вот так
Код
function Trig__agi_new_Actions takes nothing returns nothing
     call CreateNUnitsAtLoc(1, 'H000', Player(0), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING)
     local unit kunit[1] = GetLastCreatedUnit()
     call TriggerSleepAction(6.00)
     call KillUnit(kunit[1])
endfunction
 

NightCattyДата: Четверг, 01 Августа 2013, 23:28:23 | Сообщение # 8
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
abidin, а надо
Код
function Trig__agi_new_Actions takes nothing returns nothing  
      call CreateNUnitsAtLoc(1, 'H000', Player(0), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING)  
      local unit kunit = GetLastCreatedUnit()  
      call TriggerSleepAction(6.00)  
      call KillUnit(kunit)  
endfunction

Добавлено (01 Августа 2013, 23:28:23)
---------------------------------------------
вру, это же jass2

Код
function Trig__agi_new_Actions takes nothing returns nothing   
       local unit kunit
       call CreateNUnitsAtLoc(1, 'H000', Player(0), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING)   
       set kunit = GetLastCreatedUnit()   
       call TriggerSleepAction(6.00)   
       call KillUnit(kunit)   
endfunction


Тщетно бытиё! :c
 

abidinДата: Четверг, 01 Августа 2013, 23:29:23 | Сообщение # 9
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
NightCatty, а если с массивом?
 

NightCattyДата: Четверг, 01 Августа 2013, 23:36:07 | Сообщение # 10
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
Код
function Trig__agi_new_Actions takes nothing returns nothing    
        local unit kunit[]
        call CreateNUnitsAtLoc(1, 'H000', Player(0), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING)    
        set kunit[0] = GetLastCreatedUnit()    
        call TriggerSleepAction(6.00)    
        call KillUnit(kunit[0])    
endfunction


Тщетно бытиё! :c
 

abidinДата: Четверг, 01 Августа 2013, 23:42:42 | Сообщение # 11
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
NightCatty, не сработало
 

NightCattyДата: Четверг, 01 Августа 2013, 23:50:36 | Сообщение # 12
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
abidin, ах господи, как я привык в vjass+
Код
function Trig__agi_new_Actions takes nothing returns nothing     
         local unit array kunit[]  
         call CreateNUnitsAtLoc(1, 'H000', Player(0), GetRectCenter(GetPlayableMapRect()), bj_UNIT_FACING)     
         set kunit[0] = GetLastCreatedUnit()     
         call TriggerSleepAction(6.00)     
         call KillUnit(kunit[0])     
endfunction

не сработает - сделай local unit array kunit без [], я уже ни в чём не уверен


Тщетно бытиё! :c
 

abidinДата: Четверг, 01 Августа 2013, 23:52:24 | Сообщение # 13
7 уровень
Группа: Проверенные
Сообщений: 330
Награды: 0
Репутация: 305
Блокировки:
NightCatty, спасибо сработало,вот в чем была вся проблема :D
 

KartohaДата: Пятница, 02 Августа 2013, 01:01:45 | Сообщение # 14
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
abidin, вместо функции CreateNUnitsAtLoc в твоем случае будет рациональнее использовать функцию CreateUnit:
Код
local unit u = CreateUnit (Player(0), 'H000', GetRectCenterX(GetPlayableMapRect()), GetRectCenterY(GetPlayableMapRect()), 0.)
call TriggerSleepAction(6.)
call KillUnit (u)
set u = null
 

AUДата: Пятница, 02 Августа 2013, 22:34:59 | Сообщение # 15
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
а зачем массив в локалках?

Остаться в живых
стрелялка с мышковым управлением =)
 

KartohaДата: Пятница, 02 Августа 2013, 22:43:43 | Сообщение # 16
10 уровень
Группа: Ветераны
Сообщений: 2851
Награды: 1
Блокировки:
Цитата (AU)
а зачем массив в локалках?

Ты так говоришь, словно целесообразность массива зависит от того, локальная это переменная или глобальная. <_<
 

AUДата: Пятница, 02 Августа 2013, 23:12:05 | Сообщение # 17
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Цитата
Ты так говоришь, словно целесообразность массива зависит от того, локальная это переменная или глобальная. <_<

ну.. не очень то и зависит, просто не знаю где бы это можно было исползовать <_<


Остаться в живых
стрелялка с мышковым управлением =)
 

NightCattyДата: Суббота, 03 Августа 2013, 00:22:52 | Сообщение # 18
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
AU, создание случайного количества юнитов, или например, кол-во юнитов растёт с уровнем, тут ты без массива никуда

Тщетно бытиё! :c
 

AUДата: Суббота, 03 Августа 2013, 11:22:30 | Сообщение # 19
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Цитата
AU, создание случайного количества юнитов, или например, кол-во юнитов растёт с уровнем, тут ты без массива никуда

создание случайного количества юниттов:
local integer i = GetRandomInteger(1, 10)
CreateNUnitsAtLoc(i, ...)
кол-во юнитов растёт с уровнем:
local integer i = udg_Level
CreateNUnitsAtLoc(i, ...)
никуда, говоришь? :)


Остаться в живых
стрелялка с мышковым управлением =)
 

NightCattyДата: Суббота, 03 Августа 2013, 15:25:59 | Сообщение # 20
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
Цитата (AU)
создание случайного количества юниттов:
local integer i = GetRandomInteger(1, 10)
CreateNUnitsAtLoc(i, ...)
кол-во юнитов растёт с уровнем:
local integer i = udg_Level
CreateNUnitsAtLoc(i, ...)
никуда, говоришь?

умник, блин avtorklif
почитай про MUI, ты их потом не удалишь если LastCreatedUnit используют несколько триггеров


Тщетно бытиё! :c
 

AUДата: Воскресенье, 04 Августа 2013, 09:19:00 | Сообщение # 21
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
Цитата (NightCatty)
умник, блин avtorklif
почитай про MUI, ты их потом не удалишь если LastCreatedUnit используют несколько триггеров

Удалю, очень просто, и когда захочу:
создание случайного количества юнитов с удалением "потом":
Код
integer n = 1
local integer i = GetRandomInteger(1, 10)
local group gr = CreateGroup()
local unit u
loop
       exitwhen n > i
       call CreateUnitAtLocSaveLast(..)
       call GroupAddUnit(gr, GetLastCreatedUnit())
       set n = n + 1
endloop
Wait(10.0)
Отряд - для всех в группе gr:
       set u = GetEnumUnit()
       call GroupRemoveUnit(gr, u)
       call RemoveUnit(u)
       set u = null
call DestroyGroup(gr)
set gr = null

или просто удаление "потом"
Код
Событие: боевая еденица умирает
Действия:
local unit u = GetDyingUnit()
wait(10.0)
call RemoveUnit(u)
set u = null

Ты всё ещё уверен, что "тут без массива никуда"?


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Воскресенье, 04 Августа 2013, 12:25:37
 

FEARKILLERДата: Воскресенье, 04 Августа 2013, 10:30:34 | Сообщение # 22
6 уровень
Группа: Проверенные
Сообщений: 175
Награды: 0
Репутация: 149
Блокировки:
Цитата (AU)
integer n = 1
local integer i = GetRandomInteger(1, 10)
local group gr = CreateGroup()
local unit u
loop
exitwhen n > i
call CreateUnitAtLocSaveLast(..)
call GroupAddUnit(gr, GetLastCreatedUnit())
set n = n + 1
endloop
Wait(10.0)
Отряд - для всех в группе gr:
set u = GetEnumUnit()
call GroupRemoveUnit(gr, u)
call RemoveUnit()
set u = null
call DestroyGroup(gr)
set gr = null

Омг! Что это такое? Особенно красным выделенное. GetEnumUnit() работает только в цикле ForGroup(), для того чтобы взять последнего юнита в группе, юзается FirstOfGroup(g) и такой нативки как GetRandomInteger() не существует, есть только GetRandomInt().
Цитата (AU)
Событие: боевая еденица умирает
Действия:
local unit u = GetDyingUnit()
wait(10.0)
call RemoveUnit(u)
set u = null

Если юнит умер, зачем его удалять? Он сам удалиться из игры полностью, после как разложатся кости. И зачем тут вообще локалка? Но если удалять, то проще так тогда уж: RemoveUnit(GetTriggerUnit()).
Цитата (AU)
Ты всё ещё уверен, что "тут без массива никуда"?

А теперь тебе вопрос, зачем тут вообще группа нужна? Чтобы создать произвольное кол-во юнитов можно и этим кусочком кода обойтись:
Код
     local integer i=1
     local integer c=GetRandomInt(1,10)
     loop
         exitwhen i>c
         call CreateUnit(p,'nrat',x,y,a)
         set i=i+1
     endloop


Вот тебе пример для чего нужны массивы в локалках:
Код
     local player p=Player(15)
     local integer i=1
     local integer c=GetRandomInt(1,10)
     local integer array t
     local real array r
     set t[0]='nrat'
     set t[1]='nder'
     set t[2]='nalb'
     set t[3]='npng'
     set t[4]='nenr'
     set r[0]=GetRectMinX(bj_mapInitialPlayableArea)
     set r[1]=GetRectMaxX(bj_mapInitialPlayableArea)
     set r[2]=GetRectMinY(bj_mapInitialPlayableArea)
     set r[3]=GetRectMaxY(bj_mapInitialPlayableArea)
     loop
         exitwhen i>c
         call CreateUnit(p,t[GetRandomInt(0,4)],GetRandomReal(r[0],r[1]),GetRandomReal(r[2],r[3]),GetRandomReal(.0,360.))
         set i=i+1
     endloop
     set p=null


Делаю из воды вино, хожу по воде...
 

AUДата: Воскресенье, 04 Августа 2013, 12:24:35 | Сообщение # 23
7 уровень
Группа: Проверенные
Сообщений: 471
Награды: 0
Репутация: 70
Блокировки:
FEARKILLER,
Цитата (AU)
юзается FirstOfGroup(g) и такой нативки как GetRandomInteger() не существует, есть только GetRandomInt().

А ты в курсе про то, что надо руки оборвать за красный текст я это прекрасно знаю? Нет? Так зачем ты мне обьясняешь? Я тебе не код пишу для вставки в редактор, а псевдокод, для понимания (ясно и пню должно быть, подразумевается, что GetRandomInteger() возращает случайный интегер)
Цитата (AU)
Омг! Что это такое? Особенно красным выделенное. GetEnumUnit() работает только в цикле ForGroup()

Ещё раз повторю, это не код для копипаста! Это смысловой так сказать код, набросок. Да и тут я как раз имею ввиду действие в гуи - "для всех юнитов в группе..." визуально, думал понятно будет, ан нет, нашёлся просвещённый
Цитата (FEARKILLER)
Если юнит умер, зачем его удалять?

Затем, что кое кто сказал:
Цитата (NightCatty)
ты их потом не удалишь

.
Цитата (FEARKILLER)
И зачем тут вообще локалка?

Цитата (FEARKILLER)
RemoveUnit(GetTriggerUnit())

Затем, что нужно удалить не сразу, а "потом"
Цитата (FEARKILLER)
А теперь тебе вопрос, зачем тут вообще группа нужна? Чтобы создать произвольное кол-во юнитов можно и этим кусочком кода обойтись:
Код
local integer i=1
local integer c=GetRandomInt(1,10)
loop
exitwhen i>c
call CreateUnit(p,'nrat',x,y,a)
set i=i+1
endloop

А теперь тебе вопрос, зачем тебе вообще глаза даны? Ты бы сначала прочитал посты выше и попытался разобраться хотя бы, зачем я то-то написал.


Остаться в живых
стрелялка с мышковым управлением =)


Сообщение отредактировал AU - Воскресенье, 04 Августа 2013, 12:35:02
 

NightCattyДата: Воскресенье, 04 Августа 2013, 12:40:30 | Сообщение # 24
6 уровень
Группа: Проверенные
Сообщений: 201
Награды: 0
Репутация: 21
Блокировки:
AU, группа и есть массив, только в памяти она тяжелее из-за доп функций, глупо так делать

Добавлено (04 Августа 2013, 12:40:30)
---------------------------------------------
кстати твоё нагромождение cs и действий триггеров убивает читабельность полностью, я даже не могу сообразить как это будет работать


Тщетно бытиё! :c
 

FEARKILLERДата: Воскресенье, 04 Августа 2013, 12:49:24 | Сообщение # 25
6 уровень
Группа: Проверенные
Сообщений: 175
Награды: 0
Репутация: 149
Блокировки:
Цитата (AU)
А ты в курсе

А я в курсе.
Цитата (AU)
А теперь тебе вопрос, зачем тебе вообще глаза даны?

Чтобы видеть ошибки которые ты настрочил целую кучу и ещё пытаешься выехать на том, что это было для наглядности, набросок как ты сказал, действительно "набросок", набросал как попало. И я до сих пор не понял нахрена ты группу то создавал? Или ты так сильно набрасывал, что лишнего накидал малёха?
Цитата (AU)
Затем, что кое кто сказал

Цитата (AU)
Затем, что нужно удалить не сразу, а "потом"

Кол-во хп с отрицательным регеном в РО и нехрена мудрить тут. Или задать триггерно время жизни юниту сразу.
Цитата (AU)
Ты бы сначала прочитал посты выше и попытался разобраться хотя бы, зачем я то-то написал.

То что ты написал выше, я читал и уже на него выложил ответ.


Делаю из воды вино, хожу по воде...
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » local
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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