Сейчас 09:16:17 Понедельник, 25 ноября, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Создание юнита в функции
Samedy_Дата: Четверг, 01 Октября 2015, 23:41:00 | Сообщение # 1
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Есть функция:
Код
function UnitAddBuff takes integer pId, unit tUnit, location loc, integer buffId, string orderId returns nothing
local unit dummy
call CreateUnitAtLoc(Player(pId), 'e000', loc, bj_UNIT_FACING)
set dummy = GetLastCreatedUnit()
call UnitAddAbilityBJ(buffId, dummy)
call IssueTargetOrderBJ(dummy, orderId, tUnit)
set dummy = null
set tUnit = null
call RemoveLocation(loc)
endfunction

Я ее вызываю:
Код
call UnitAddBuff('0', Hero, GetUnitLoc(Hero), 'AHhb', "holybolt")

По итогу, получаю: вместо юнита, который должен был создаться (dummy), ничего не создается, а холлиболт дается любому другому созданному юинту. Что, собственно, делать? Как сделать так, чтобы он давался dummy? Ошибок jngp, к слову, не выдает.


Сообщение отредактировал Samedy_ - Четверг, 01 Октября 2015, 23:42:09
 

BiboДата: Пятница, 02 Октября 2015, 09:10:37 | Сообщение # 2
Группа: Проверенные
Сообщений: 741
Награды: 0
Блокировки:
Код
set dummy = GetLastCreatedUnit()

Эта функция, возвращает значение, содержащееся в глобальной переменной bj_lastCreatedUnit. Вот код этой функции:
Код
function GetLastCreatedUnit takes nothing returns unit
     return bj_lastCreatedUnit
endfunction

Последний созданный юнит, записывается в переменную bj_lastCreatedUnit, кодом соответствующих BJ-функций, например CreateNUnitsAtLoc.
Используемая тобой функция CreateUnitAtLoc являтся нативной, то есть, без каких-либо дополнительных действий с jass-переменными или функциями, она не присваивает значение переменной bj_lastCreatedUnit, которое ты получаешь вызывая функцию GetLastCreatedUnit. А значит, на момент вызова GetLastCreatedUnit, переменная bj_lastCreatedUnit имет значение null, либо значение любого другого созданного ранее юнита.

Присваивай значение переменной dummy в момент ее объявления
Код
local unit dummy = CreateUnitAtLoc(Player(pId), 'e000', loc, bj_UNIT_FACING)

Не используй нативные функции вперемешку с BJ-функциями, во избежание подобных прьблем.
 

Samedy_Дата: Пятница, 02 Октября 2015, 09:34:21 | Сообщение # 3
7 уровень
Группа: Проверенные
Сообщений: 371
Награды: 0
Репутация: 18
Блокировки:
Bibo, и снова тебе спасибо.
Но что делать мне, если бы такой выход не подошел? Что использовать тогда? Только таймер?

Добавлено (02 Октября 2015, 09:34:21)
---------------------------------------------
Не создает даммика все равно, но и спелл никому не дает...

 

KaotikaДата: Суббота, 03 Октября 2015, 20:08:57 | Сообщение # 4
5 уровень
Группа: Проверенные
Сообщений: 144
Награды: 0
Репутация: 20
Блокировки:
Как я понял, надо создать даммика и дать ему x-способность.
такс, делаю по памяти:

С использованием Location:

С использованием точек:

А вообще я бы в этих функциях не обнулял и возвращал дамми юнита. Иначе ты их попросту не сможешь использовать в дальнейшем.


Тискаю клаву... остальных пока некогда!


Сообщение отредактировал Kaotika - Суббота, 03 Октября 2015, 20:11:37
 

  • Страница 1 из 1
  • 1
Поиск:

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