XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Барахолка
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
MegaBlax

offline
Опыт: 2,352
Активность: 674
Система скорости
Вообщем покопался в коде доты и вытащил систему скорости.
Для использования нужна глобальная группа MSG и хеш таблицу hash
call SetUnitSpeed(юнит,скорость) Скорость ставить выше 522
call RemoveSpeed(юнит) убрать скорость
з.ы. если кто-то может оптимизировать код, кидайте сюда.
» код
library MoveSystem
    function SafeX takes real x returns real
        local real CX = GetRectMinX(bj_mapInitialPlayableArea) + 50
        if (x < CX) then
            return CX
        endif
        set CX = GetRectMaxX(bj_mapInitialPlayableArea) - 50
        if (x > CX) then
            return CX
        endif
        return x
    endfunction

    function SafeY takes real y returns real
        local real CY = GetRectMinY(bj_mapInitialPlayableArea) + 50
        if (y < CY) then
            return CY
        endif
        set CY = GetRectMaxY(bj_mapInitialPlayableArea) - 50
        if (y > CY) then
            return CY
        endif
        return y
    endfunction
    
    function FL1 takes unit target, real xx, real yy, real sp returns nothing
        local real x = GetUnitX(target)
        local real y = GetUnitY(target)
        local real angle = Atan2(y - yy, x - xx)
        local real d = SquareRoot(((x-xx)*(x-xx))+((y-yy)*(y-yy)))
        local real ms = GetUnitMoveSpeed(target)
        if GetUnitState(target,UNIT_STATE_LIFE)>0 and sp>ms and d>10*0.005 then
            set x = SafeX(x + (sp - ms) * 0.005 * Cos(angle))
            set y = SafeY(y + (sp - ms) * 0.005 * Sin(angle))
            call SetUnitX(target, x)
            call SetUnitY(target, y)
        endif
    endfunction

    function FD4 takes nothing returns boolean
        local trigger t = GetTriggeringTrigger()
        local unit target = LoadUnitHandle(hash,GetHandleId(t),StringHash("unit"))
        local real x = LoadReal(hash,GetHandleId(t),StringHash("x"))
        local real y = LoadReal(hash,GetHandleId(t),StringHash("y"))
        local real speed = LoadReal(hash,GetHandleId(t),StringHash("speed"))
        if IsUnitInGroup(target,MSG)==false and GetUnitState(target,UNIT_STATE_LIFE)>0 then
            call FlushChildHashtable(hash,GetHandleId(t))
            call DestroyTrigger(t)
        else
            call FL1(target, x, y, speed)
            call SaveReal(hash,GetHandleId(t),StringHash("x"),(GetUnitX(target)*1.00))
            call SaveReal(hash,GetHandleId(t),StringHash("y"),(GetUnitY(target)*1.00))
        endif
        set t = null
        set target = null
        return false
    endfunction
    
    function RemoveSpeed takes unit target returns nothing
        if IsUnitInGroup(target,MSG)==true
            GroupRemoveUnit(MSG,target)
        endif
    endfunction

    function SetUnitSpeed takes unit target,real speed returns nothing
        local trigger t = CreateTrigger()
        if IsUnitInGroup(target,MSG)==false
            call GroupAddUnit(MSG,target)
            call SaveUnitHandle(hash,GetHandleId(t),StringHash("unit"),target)
            call SaveReal(hash,GetHandleId(t),StringHash("x"),(GetUnitX(target)*1.00))
            call SaveReal(hash,GetHandleId(t),StringHash("y"),(GetUnitY(target)*1.00))
            call SaveReal(hash,GetHandleId(t),StringHash("speed"),speed)
            call TriggerRegisterTimerEvent(t,0.005,true)
            call TriggerAddCondition(t,function FD4)
        endif
        set t = null
    endfunction
endlibrary

Отредактировано MegaBlax, 29.10.2014 в 06:20.
Старый 27.10.2014, 12:54
DioD

offline
Опыт: 45,251
Активность: 924
Участник проектов:
-WarCraft 3
-Minecraft
Вообщем покопался в коде доты и вытащил систему скорости.
function FF4 takes unit TLI,real FS1 returns nothing
local trigger t = CreateTrigger()
local integer MKI = GetHandleId(t)
слабо хотя бы имена проставить методам?
Старый 28.10.2014, 14:33
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 20:33.