Добавлен
Делал систему при которой юнит находящийся в радиусе от "юнит1" и в опр. группе, отправлялся в в опр. локацию, если их массивы совпадают.
"юнит1" - строится игроком по этому я сделал триггер через таймер.
Проблема в том что не работает функция "1_C1" точнее не работает она при вызове ее из функции "1_2". Нужна помощь.
триггер
function 1_C1 takes unit ruf returns integer
local integer i=0
local integer p
loop
exitwhen Zone[i]==null
if (IsUnitInGroup(ruf, group[i])==true ) then
set p=i
endif
set i=i+1
endloop
return p
endfunction
function 1_2 takes nothing returns nothing
local integer p=GetPlayerId(GetOwningPlayer(GetEnumUnit()))
local integer i=1_C1(GetEnumUnit())
if ( IsUnitInGroup(GetEnumUnit(), group[i]) == true ) then
call IssuePointOrderLoc(udg_OilTank, "move", Location(GetRectCenterX(Zone[i]), GetRectCenterY(Zone[i])))
call GroupRemoveUnit(group[i], GetEnumUnit())
endif
endfunction
function 1_1 takes nothing returns nothing
call ForGroupBJ( GetUnitsInRangeOfLocAll(300, GetUnitLoc(GetEnumUnit())), function 1_2 )
endfunction
function 1_A takes nothing returns nothing
local integer i=0
loop
exitwhen i>10
call ForGroupBJ( GetUnitsOfPlayerAndTypeId(Player(i), 'юнит1'), function 1_1 )
set i=i+1
endloop
endfunction
function InitTrig_1 takes nothing returns nothing
set gg_trg_1= CreateTrigger()
call TriggerRegisterTimerEvent(gg_trg_1, 1, true)
call TriggerAddAction( gg_trg_1, function 1_A )
endfunction
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
28
Sergant1000, напиши как именно он должен работать
что должен делать этот триггер
это спелл или система
короче составь нормальное описание
и прочитай статьи
у тебя утечки и бж
и не надо начинать с гуи)
начинай с джасса
17
nvc123, описал в 25м посту.
Buulichkaa, пользоваться хешем нехочу. а вот про кастом, это уже интересно.
nvc123, чтобы начинать с джасса надо начинать с гуи, ты же когда по большему на горшок садишся сначало штаны снимаешь, а потом откладываешь личинку, а не наоборот.
28
Sergant1000, в 25 посте ни черта не написано
Sergant1000, неправильный пример
21
Sergant1000, в смысле, что вы несете? Когда поймешь джасс гуи не нужен.
А на гуи все "когда-то" да творили...
Проблема решена? Будете использовать CV?
17
в 25 посте 261 символ из которых 243 сугубо по делу
Buulichkaa, да, повсей видимости буду переделывать, но хотелось бы узнать почему проверка не срабатывает.
28
Sergant1000, в 25 посте нету не 1 символа который объяснял цель этого кода
именно так и пишется код
сначала берётся цель
потом выстраивается алгоритм
и лишь потом этот алгоритм переводится на яп
не зная цели твои 243 символа являются полным 0
впрочем как и твой код
что то сегодня слишком много нубов
21
Ну вы же проверяете массив групп, я так понял.
Можно было сделать так:
function test takes unit u returns integer
    local integer i = 0
    local integer p = -1
    loop
        exitwhen i > G_max //какая-то переменная обозначающая вершину стека из наших групп
        if (IsUnitInGroup(u, GroupStack[i])) then
            set p = i
            exitwhen true
        endif
       set i = i + 1
    endloop
    return p
endfunction
функция вернет -1 если юнита в группах нет, так же функция предполагает что юнит хранится лишь в одной группе из стека...
но это же велосипед ненужный...
Вот нативки для Custom Value
код
native GetUnitUserData              takes unit whichUnit returns integer

native SetUnitUserData              takes unit whichUnit, integer data returns nothing
а вот нативки для хэш-таблиц
код
native  SaveInteger						takes hashtable table, integer parentKey, integer childKey, integer value returns nothing

native  LoadInteger					takes hashtable table, integer parentKey, integer childKey returns integer

native GetHandleId takes handle h returns integer
17
не надо закрывать вопрос раньше времени. тем более если вопросодержатель еще тут.
Buulichkaa, твой код тоже не работает, так как не проходит проверка на группу.
21
Sergant1000, какую группу... тебе же надо проверить массив групп и найти индекс той в которой сидит юнит?
мой велосипед вполне рабочий, но не ясно зачем он если можно сразу приаттачить индекс к юниту...
17
Buulichkaa, функции у нас с тобой одинаковый но разные по виду, проблема в том что она постоянно возвращяет -1 и ни разу индекс массива.
что самое интересное при первой выборке она работает нормально а при второй не работает вообще
28
эй народ
у ваших велосипедов квадратные колёса
Sergant1000, хочешь понять почему не работает?
сделай отладку
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.