7

» WarCraft 3 / высота юнита mui

biridius:
а зачем он вообще -4000? у тебя же высота юнита задается на это значение, как у юнита может быть высота минус четыре тыщи? уровень земли ноль плюс-минус 256
это переменная fly d

biridius:
а зачем он вообще -4000? у тебя же высота юнита задается на это значение, как у юнита может быть высота минус четыре тыщи? уровень земли ноль плюс-минус 256
кстати у тебя какой патч? если скину карту сделаешь фастом?


он для патча 1.31 и выше
Загруженные файлы
7

» WarCraft 3 / высота юнита mui

biridius:
вобщем извращение какое-то получается
все надо переписывать по-человечески
а то только костыль на костыле
сделай нормальные имена переменных и массивы с заменой
потом добавь вывод сообщений что там происходит у дио и у флайДи
у флайди когда он меньше -4000 то высота багается
а если больше доходит больше -4000 то норм
7

» WarCraft 3 / высота юнита mui

biridius:
Ельнур, вот, сделай чтобы подмена была
тип перед уменьшением
FlyD[умирающего] = FlyD[DI[0]]
и тд
а то ты дио уменьшил например с 3 до 2, а юнит который записан на номер три остается висеть в воздухе тк до него цикл больше не будет доходить, ведь он теперь проходит не от 1 до 3, а от 1 до 2я я
ну я специально при приземлении поставил даммика с 0.50 сек чтобы за эти секунд все прыгнувшие(0.01 сек) скорость 3500 успели за эти 0.50 сек прыгнуть до точки каста и когда умирает даммик делать счетчик - 1
ну
7

» WarCraft 3 / высота юнита mui

biridius:
там в этих японских названиях триггеров и дио с джотаро черт ногу сломит
У тебя там где счетчик уменьшается, все переменные умирающего заменяются на последний юнит в массиве или нет?
Если нет то до них счетчик просто не будет доходить тк они идут после уменьшившегося максимального значения для цикла.
там ничего нет) только счетчик
Загруженные файлы
7

» WarCraft 3 / высота юнита mui

biridius:
Ельнур, я думаю записи из массива не убираются, их становится слишком много и движок не справляется
просто увеличивать счетчик недостаточно, надо при гибели/приземлении юнита заменять его на последний в массиве (и все его данные тоже) и уменьшать счетчик на 1
при приземлении когда я выставлял счетчик -1 из за быстрости(0.01 сек) он багался поэтому при приземлении создал даммика который имеет таймер 0.50 сек и когда этот даммик умирает то счетчик становится -1
7

» WarCraft 3 / высота юнита mui

biridius:
Ельнур, Да, поставь ноль, иначе прибавлять 7 не к чему
если юниты должны лететь по параболе, то поставь число вроде 2000 и не прибавляй, а вычитай 7 (пока скорость больше нуля юнит набирает высоту, затем падает)
поставил ноль все правильно работает но потом оно багается и высота вообще для всех не поднимается
7

» WarCraft 3 / высота юнита mui

biridius:
вобщем ятп триггер который запускает юнитов называется GrimjowMui
FlyD[DI[0]] значение задается в нем? если нет то выполнение цикла который по таймеру будет обрываться
нет, поставить ноль?
7

» WarCraft 3 / высота юнита mui

biridius:
сори у меня инет 10кб/с
дай норм скрин триггера который добавляет записи юнитов и пр в массив и увеличивает счетчик записей, ятп это DI[0]
все равно всегда стоит сперва использовать дебаг - выводить текстом сообщения во время игры, например того же Дио
biridius:
названия переменных для роботов что-ли, что за жесть?
выводи дебагом значение счетчика мб, по одному скрину не понятно
последние 3 строки в цикле вообще какой-то бред, зачем по сто раз их перезаписывать?
код нормально работает но проблема в высоте когда два или три юнита применяют способность высота для двоих не поднимается а только для одного поднимается

щяс кину фулл скрины
7

» WarCraft 3 / высота юнита mui

biridius:
названия переменных для роботов что-ли, что за жесть?
выводи дебагом значение счетчика мб, по одному скрину не понятно
последние 3 строки в цикле вообще какой-то бред, зачем по сто раз их перезаписывать?
посмотри видео и там поймешь в чем баг наверное у каждого оно было
7

» WarCraft 3 / createunit at loc custom script

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: Научитесь уже пользоваться форматированием кода
7

» WarCraft 3 / createunit at loc custom script

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
нихера не догнал
7

» WarCraft 3 / урон от ловкости

он выводит сообщение ловкости но он не коцает их когда я ставлю ловкость

спасибо урон пошел

это не из за обнуления было а просто я перепутал переменную реал9 и реал6 из за этого он 0 отображал))
7

» WarCraft 3 / урон от ловкости

извините моя ошибка я в триггере где даммик умирает обнулил кастера а надо обнулять когда redmoonslashintegerskip - 1 равно 0
7

» WarCraft 3 / урон от ловкости

NazarPunk:
там переменные все правильно стоят
А я вот не вижу, где находится присвоение этой переменной
вот она если бы не было этой переменной весь триггер рухнул бы
Загруженные файлы
7

» WarCraft 3 / урон от ловкости

NazarPunk:
а если к делу - дебаг где?
Зачем, если можно спамить в QA каждую ошибку?


может ли это быть лимит операции?
Лимит операций может быть всегда, но скорее всего здесь виновата обыкновенная невнимательность.
там переменные все правильно стоят но он считает ловкость героя как 0 и из за этого когда это 0 умножается на 9 получается урон 0 хД
7

» WarCraft 3 / урон от ловкости

Bergi_Bear #2 - 14 минут назад 4   
Правильно, потому что сила скилов Ичиго зависит от его реацу (маны), а не от ловкости, тебе сам варкрафт подсказывает
а если к делу?)
7

» WarCraft 3 / заменить бж отряд, custom script

PyCCKuu_4eJl:
local group G = CreateGroup()  //группа 
local unit u = null  //временный юнит
call GroupEnumUnitsInRange(G,x,y,300,null) //добавить всех юнитов в радиусе 300 от точки x/y в эту группу

// перебор группы
loop //стартуем цикл
	set u = FirstOfGroup(G) //берём рандомного юнита из группы
	exitwhen u==null  //если юниты закончились, заканчивает цикл
	
	//наши действия
	
	call GroupRemoveUnit(G,u)// убираем юнита из группы
endloop //заканчиваем цикл
call DestroyGroup(G) //чистим за собой
set G = null //и это тоже
PyCCKuu_4eJl:
local group G = CreateGroup()  //группа 
local unit u = null  //временный юнит
call GroupEnumUnitsInRange(G,x,y,300,null) //добавить всех юнитов в радиусе 300 от точки x/y в эту группу

// перебор группы
loop //стартуем цикл
	set u = FirstOfGroup(G) //берём рандомного юнита из группы
	exitwhen u==null  //если юниты закончились, заканчивает цикл
	
	//наши действия
	
	call GroupRemoveUnit(G,u)// убираем юнита из группы
endloop //заканчиваем цикл
call DestroyGroup(G) //чистим за собой
set G = null //и это тоже
блин я пишу на полу джассовом кастом скрипте чтобы потом ее легко менять и заменил все бж осталось только отряд бж не знаю что с ним делать...(
Загруженные файлы
7

» WarCraft 3 / заменить бж отряд, custom script

Hate:
это не стол заказов
ну не стол заказов но посещаемость сайта то увеличивает))
1 пункт от NazarPunk: 10.2 (ресурс без вопроса)
7

» WarCraft 3 / x y?

Doc:
Это точно такие же полярные координаты, ты просто развернул функцию в непосредственный код.
В коде примера ни работа с углами, ни тригонометрия, ни degtorad не нужны вообще.
я знаю что я просто разверзнул код, я просто знаю что polarprojectionbj сколько ее не обнуляй она лагает и из за этого заменил на x,y она быстрее и не лагает
7

» WarCraft 3 / x y?

ух на душе легко стало а то эти поляркибж хоть сколько не обнуляй все равно создают утечки)

Steal nerves:
Ельнур, только надо точки удалять не забывать. многие советовали использовать вместо точек координаты.

point with offset point (x,y) и OffsetLocation(udg_SpellPoint, udg_X, udg_Y) - новые функции?
вот я имел вииду это она на 1 этаж выше поляркибж

кстати мы заменили PolarProjectionBj но остается bj_Degtorad хехе) что делать тут)

и еще я хотел добавить тот код который выше он в 2 раза дистанцию увеличивает получается полярка точки
и точка ( полярка точки) из за этого пишем так и все будет нормально работать) Боевая единица - Order Caster to Двигаться (SpellPoint offset by ((X / 2.00), (Y / 2.00)))

непотребство сморозил выше

нашел функцию которая не багается это

спасибо всем тему можно закрывать через год буду в отрядах джассеров) главное запомнить эти все кастом скрипты

узнал формулу bj_degtorada это pi\180
1 пункт от NazarPunk: 1.1 (ненормативная лексика)
7

» WarCraft 3 / x y?

так я понял есть просто point with offset point (x,y) оно не бж :D спасибо всем разобрался

так я понял есть просто point with offset point (x,y) оно не бж :D спасибо всем разобрался call IssuePointOrderLoc( udg_Caster, "move", OffsetLocation(udg_SpellPoint, udg_X, udg_Y) )