Ну вы же проверяете массив групп, я так понял.
Можно было сделать так:
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
Sergant1000, Если тебе надо прикрепить индекс массива к юниту, то сделай это через через хеш-таблицу или custom value при добавлении юнита в группу... делов то
silence_AZ, это уже шуточки пошли? лол делаете триггер Effect удаляете все что в нем есть, вставляете код из файла, расставляете юнитов на карте, и попробуйте ними походить. Госпадзе какой jass... nvc123, Ну надо же чтоб он наконец-то допер?
удалите то что после mdl и до запятой, это автоматом вставляется на сайте
вот код файлом
Создайте триггер Effect и вставьте туда код из файла, а то тут появляются символы из html
silence_AZ, просто вставьте в игру и гляньте что будет
exitwhen i == 16
это перебор в БЖ функции для задания события, я бж открыл чтобы не создавать новые процедуры
Итак, полный разбор полетов -_\\ Я не могу понять что нужно автору, объясни мне, что надо сделать и я подскажу как лучше.
быдлокод
function 1_C1 takes unit ruf returns integer
//ИНФОРМАТИВНОЕ НАЗВАНИЕ ФУНКЦИИ??
local integer i=0
local integer p
// ПЕРЕМЕННАЯ НЕ ИНИЦИАЛИЗИРОВАНА
// ПРИ НЕКОТОРЫХ УСЛОВИЯХ ЕЙ ТАК И НЕ УСТАНОВИТСЯ ЗНАЧЕНИЕ
loop
exitwhen Zone[i]==null
//ЧТО ТАКОЕ Zone[i] ДАЖЕ БОГ НЕ ЗНАЕТ
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
//ОПЯТЬ? 1_2 КЛАСС! Я СРАЗУ ПОНЯЛ ЧТО ОНО ДЕЛАЕТ
local integer p=GetPlayerId(GetOwningPlayer(GetEnumUnit()))
local integer i=1_C1(GetEnumUnit())
if ( IsUnitInGroup(GetEnumUnit(), group[i]) == true ) then
//ФУНКЦИЯ GetEnumUnit() ВЫЗЫВАЕТСЯ УЖЕ ТРЕТИЙ РАЗ, МОЖНО БЫЛО ЗАНЕСТИ ЕЁ В ПЕРЕМЕННУЮ
call IssuePointOrderLoc(udg_OilTank, "move", Location(GetRectCenterX(Zone[i]), GetRectCenterY(Zone[i])))
//ПОЧЕМУ НЕ КООРДИНАТЫ?
//ЧТО ТАКОЕ udg_OilTank
//УТЕЧКА ТОЧКИ?
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
silence_AZ, это было давно и неправда, а вам уже дают все на блюдечке, так что сейчас не время задавать вопросы. Тем более глупые.
silence_AZ,
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
function UnitAddEffect takes unit u, real x, real y returns nothing
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Undead\\AnimateDead\\AnimateDeadTarget.mdl", x, y))
call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl", GetUnitX(u), GetUnitY(u)))
endfunction
function Action takes nothing returns nothing
local unit u = GetOrderedUnit()
local real x = GetOrderPointX()
local real y = GetOrderPointY()
call UnitAddEffect(u, x, y)
endfunction
function InitTrig_Effect takes nothing returns nothing
local trigger t = CreateTrigger()
local integer i = 0
loop
call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
set i = i + 1
exitwhen i == 16
endloop
call TriggerAddAction( t, function Action )
endfunction
Создайте триггер "Effect", конвертируйте в текст, удалите все что там есть, копирните и вставьте мое, запускайте карту и побегайте юнитами.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
Agren, это моя инициатива, признаю, что на черном фоне режет глаза, но на белом было более-менее. А ссылка на модели от Скорпа - думал кому пригодится, по этому не убирал.
Я не понял что вам нужно...
Опишите что вы хотите сделать и я скажу как это сделать.
Допустим у меня есть функция которая берет неизвестный юнит(takes unit u), то как ее вызвать так,что бы неизвестный юнит задавался локальным из триггера?
не знаю правильно ли понял, но наверное нужно
это
function someFun1 takes unit u returns nothing
//действия, к примеру:
SetUnitX(u, 0.)
SetUnitY(u, 0.)
endfunction
function triggerActionFunc takes nothing returns nothing
local unit u = someunit
call someFunc(u)
endfunction
//тут события и прочая бурда
берем юнита в функции триггера и с помощью другой функции двигаем его в центр карты
в ознакомительных целях вариант на cJass (какой раз в жизни... спс Адольфу за сиджасс)
На публикацию пока заявлять незачем.
Объедините триггеры, почистите импорт, столько всего не требуется, если хотите сделать что-то типа new gen, то надо импортировать текстуры и декор тоже, но опять же все в меру, чтоб не лагало. И не нужно таких полчищ юнитов.
Можно написать свои ИИ для бота на острове, добавить режим союзников и т. д.
Как уже советовал Андреич, можете пока показать вашу карту тут.
IceWolf, руки переустановите. Вы сказали что у вас что-то не работает, но ни скрина с ошибками, ни дополнительной информации...
Вообщем подождите, пока будет выбран победитель N'нного сезона битвы экстрасенсов. эй народ! мой калькулятор не хочет делить на 0! nvc123, у меня тоже антивиря нет и что?)
Ред. Buulichkaa
» WarCraft 3 / функция
Можно было сделать так:
но это же велосипед ненужный...
» WarCraft 3 / функция
А на гуи все "когда-то" да творили...
» WarCraft 3 / функция
» WarCraft 3 / функция
» WarCraft 3 / Проверьте на ошибки
все абсолютно...
» WarCraft 3 / Локальный юнит
» WarCraft 3 / Локальный юнит
Ред. Buulichkaa
» WarCraft 3 / Локальный юнит
Госпадзе какой jass...
nvc123, Ну надо же чтоб он наконец-то допер?
» WarCraft 3 / Локальный юнит
и посмотрите что стоит в ()
Ред. Buulichkaa
» WarCraft 3 / Локальный юнит
вот код файлом
Создайте триггер Effect и вставьте туда код из файла, а то тут появляются символы из html
» WarCraft 3 / Локальный юнит
exitwhen i == 16
это перебор в БЖ функции для задания события, я бж открыл чтобы не создавать новые процедуры
Ред. Buulichkaa
» WarCraft 3 / функция
Ред. Buulichkaa
» WarCraft 3 / функция
» WarCraft 3 / функция
Ред. Buulichkaa
» WarCraft 3 / Локальный юнит
Вот вам пример, идите разбирайте его и читайте все статьи, что есть.
То что я написал можно и нужно оптимизировать, но так как вам нужен пример создания пользовательский функций, то я сделал именно так.
Вот на всякий случай оптимизированный вариант.
» WarCraft 3 / функция
» Блог H / xgm-update
Ред. Buulichkaa
» WarCraft 3 / Локальный юнит
Так же следует задать событие триггеру
это
Ред. Buulichkaa
» WarCraft 3 / Локальный юнит
Ред. Buulichkaa
» WarCraft 3 / Локальный юнит
Опишите что вы хотите сделать и я скажу как это сделать.
Ред. Buulichkaa
» Блог H / xgm-update
» WarCraft 3 / Война будущего-Бета версия
Объедините триггеры, почистите импорт, столько всего не требуется, если хотите сделать что-то типа new gen, то надо импортировать текстуры и декор тоже, но опять же все в меру, чтоб не лагало. И не нужно таких полчищ юнитов.
Можно написать свои ИИ для бота на острове, добавить режим союзников и т. д.
Как уже советовал Андреич, можете пока показать вашу карту тут.
» WarCraft 3 / World Editor Unlimited
» Блог H / Обновляем сайт
а что делает вторая рука?
» WarCraft 3 / Jass New Gen Pack - Rebuild 1.4
Вообщем подождите, пока будет выбран победитель N'нного сезона битвы экстрасенсов.
эй народ! мой калькулятор не хочет делить на 0!
nvc123, у меня тоже антивиря нет и что?)