XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
Dartesk

offline
Опыт: 1,162
Активность:
Функция подсчета юнитов в отряде
(вероятно дико туплю, но все же)
Код:
function unit1 takes group g returns integer
local unit f
local integer x
loop       
    set f = FirstOfGroup(g)
    exitwhen f == null
    set x = x+1
    call GroupRemoveUnit(g, f)
endloop 
return x
endfunction



По идее должна возвращать кол-во юнитов в отряде g, но ничего не возвращает.

Отредактировано Dartesk, 03.03.2012 в 12:15.
Старый 03.03.2012, 12:09
ShadoW DaemoN

offline
Опыт: 37,078
Активность:
Потому что не задано начальное значение для переменной x. Следует писать:
local integer x = 0
Старый 03.03.2012, 13:17
DualShock

offline
Опыт: 5,023
Активность:
Да, но здесь есть одно но! (см. пример с коментами ниже)
((код jass
function unit1 takes group g returns integer
local unit f
local integer x=0
loop
set f = FirstOfGroup(g)
exitwhen f == null
set x = x+1
call GroupRemoveUnit(g, f) <---
endloop
return x
endfunction
))
((код jass
...
local group g=CreateGroup()
local integer i
local unit f
call GroupEnumUnitsInRange(g,...) добавляем юнитов в группу
set i=unit1(g) после использования функции группа g будет пустая!
...
set f=FirstOfGroup(g) f==null!
...
))

Отредактировано DualShock, 03.03.2012 в 19:53.
Старый 03.03.2012, 19:45
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
Есть BJ функция подсчета юнитов в отряде. Вас она не устраивает тем что она BJ?
Старый 03.03.2012, 19:56
Klop
Папа римский
offline
Опыт: 13,006
Активность:
globals
integer Count = 0
endglobals

function Траляля takes nothing returns nothing
     set Count = Count + 1
endfunction

function Action takes nothing returns nothing
//Дейсвия для группы
endfunction

function A takes nothing returns nothing
local group g = CreateGroup()
call GroupEnumUnitOfPlayer(g,....)
set Count = 0 //Не забываем обнулить переменную,перед счётом
call ForGroup(g,function Траляля)
call ForGroup(g,function Action)
call DestroyGroup(g)
set g = null
.......
endfunction
можно сделать так)
Старый 03.03.2012, 21:16
DioD

offline
Опыт: 45,134
Активность:
откройте если что как оно в БЖ считает юнитов...

GroupEnumUnitOfPlayer(g,Filter(function counter))

так и именно так, все действия пишите в фильте, в конце возвращаете фолс.
Старый 06.03.2012, 11:56
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 23:04.