заменил createnunitsatloc на createunitatloc и после этого переменная последний созданный юнит не читает его что делать?

Принятый ответ

это луа
На двух последних картинках вполне себе джасс, только Ельнур вместо чтения статей пытается из нативки получить bj_lastCreatedUnit.


об шикарнейших скриншотах рабочего стола я уже промолчу
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
29
4 года назад
Отредактирован nazarpunk
0
что делать?
Использовать мозг
---@param id player
---@param unitid integer
---@param whichLocation location
---@param face real
---@return unit
function CreateUnitAtLoc(id, unitid, whichLocation, face) end    -- (native)
---@param count integer
---@param unitId integer
---@param whichPlayer player
---@param loc location
---@param face real
---@return group
function CreateNUnitsAtLoc(count, unitId, whichPlayer, loc, face)
	GroupClear(bj_lastCreatedGroup)
	while true do
		count = count - 1
		if count < 0 then break end
		CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face)
		GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit)
	end
	return bj_lastCreatedGroup
end
0
7
4 года назад
0
NazarPunk:
что делать?
Использовать мозг
---@param id player
---@param unitid integer
---@param whichLocation location
---@param face real
---@return unit
function CreateUnitAtLoc(id, unitid, whichLocation, face) end    -- (native)
---@param count integer
---@param unitId integer
---@param whichPlayer player
---@param loc location
---@param face real
---@return group
function CreateNUnitsAtLoc(count, unitId, whichPlayer, loc, face)
	GroupClear(bj_lastCreatedGroup)
	while true do
		count = count - 1
		if count < 0 then break end
		CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face)
		GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit)
	end
	return bj_lastCreatedGroup
end
нихера не догнал
0
29
4 года назад
0
нихера не догнал
Попытаюсь объяснить картинками, если так не доходит
Загруженные файлы
0
7
4 года назад
Отредактирован nazarpunk
0
NazarPunk:
нихера не догнал
Попытаюсь объяснить картинками, если так не доходит
Например:
Нам нужно создать одного юнита - мы это делаем на триггерах с помощью специальной функции - CreateNUnitsAtLoc:
function CreateNUnitsAtLoc takes integer count, integer unitId, player whichPlayer, location loc, real face returns group
    call GroupClear(bj_lastCreatedGroup)
    loop
        set count = count - 1
        exitwhen count < 0
        call CreateUnitAtLocSaveLast(whichPlayer, unitId, loc, face)
        call GroupAddUnit(bj_lastCreatedGroup, bj_lastCreatedUnit)
    endloop
    return bj_lastCreatedGroup
endfunction
Обратите внимание, что там все происходит через цикл, в котором используется сама функция создающая юнита, а именно CreateUnitAtLocSaveLast:
function CreateUnitAtLocSaveLast takes player id, integer unitid, location loc, real face returns unit
    if (unitid == 'ugol') then
        set bj_lastCreatedUnit = CreateBlightedGoldmine(id, GetLocationX(loc), GetLocationY(loc), face)
    else
        set bj_lastCreatedUnit = CreateUnitAtLoc(id, unitid, loc, face)
    endif
    return bj_lastCreatedUnit
endfunction
В ней уже используются if-ы, нормальное создание юнитов уже выполняется с помощью нормальной native функции - CreateUnitAtLoc:
native CreateUnitAtLoc takes player id, integer unitid, location whichLocation, real face returns unit
И что получается? В триггерах мы пользовались функцией для создания юнита, которая через 2 функции, через цикл, и через if и создавала юнита, а все можно было сделать сразу с помощью одной native функции!
вот я создал с помощью нативки но переменная last created unit - не читает его собственнно этот созданный юнит не двигается и триггер ломается
замечание и 1 час тишины от NazarPunk: Научитесь уже пользоваться форматированием кода
1
29
4 года назад
1
я создал с помощью нативки но переменная last created unit - не читает его собственнно этот созданный юнит не двигается и триггер ломается
Жаль кроме картинок у меня не осталось выразительных средств
Загруженные файлы
0
32
4 года назад
0
нихера не догнал
это луа
0
29
4 года назад
0
это луа
На двух последних картинках вполне себе джасс, только Ельнур вместо чтения статей пытается из нативки получить bj_lastCreatedUnit.


об шикарнейших скриншотах рабочего стола я уже промолчу
Принятый ответ
0
18
4 года назад
Отредактирован Vlod
0
Ельнур:
вот я создал с помощью нативки но переменная last created unit - не читает его собственнно этот созданный юнит не двигается и триггер ломается
NazarPunk вам хочет донести, что "last created unit" ссылается на переменную bj_lastCreatedUnit, которая является глобальной переменной типа unit. И её значение выставляется именно в функции CreateUnitAtLocSaveLast() там, где вам NazarPunk выделил нужную строку в красный прямоугольник
0
28
4 года назад
0
Короче, ответ таков: нужно заменить CreateNUnitsAtLoc на CreateUnitAtLocSaveLast.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.