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

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

Ответ
 
MegaBlax

offline
Опыт: 2,352
Активность:
Система скорости
Вообщем покопался в коде доты и вытащил систему скорости.
Для использования нужна глобальная группа MSG и хеш таблицу hash
call SetUnitSpeed(юнит,скорость) Скорость ставить выше 522
call RemoveSpeed(юнит) убрать скорость
з.ы. если кто-то может оптимизировать код, кидайте сюда.
» код
((код jass
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,184
Активность:
Вообщем покопался в коде доты и вытащил систему скорости.
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, время: 04:12.