Добавлен Jack-of-shadow,
опубликован
v 0.09
Детект зажатия Shift ( цель точка! )
Отлавливает smart,smartshift,setrally
Подходит для статичных юнитов.
Подходит как дамми интерфейс для управления движущимся юнитом. (требуется перенаправление приказов)
Скрывает RallyPoint флаги!
Задержка приказов 0.01 с
На двойной райтклик в точку срабатывают оба приказа! исправлено за счет camerafix
Отлавливает smart,smartshift,setrally
Подходит для статичных юнитов.
Подходит как дамми интерфейс для управления движущимся юнитом. (требуется перенаправление приказов)
Скрывает RallyPoint флаги!
Задержка приказов 0.01 с
На двойной райтклик в точку срабатывают оба приказа! исправлено за счет camerafix
Почему нельзя оставить move:
если герою оставить движение, то shiftsmart не будет выполнен, пока войн не завершит текущий приказ.
если герою оставить движение, то shiftsmart не будет выполнен, пока войн не завершит текущий приказ.
осторожно очень грубый код!
library ShiftDetectLib
globals
integer ShiftDetectUnitId = 'hfoo' //Дамми юнит который будет спрятан
string OrderEffectA = "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl"
string OrderEffectB = "Abilities\\Spells\\Undead\\DarkRitual\\DarkRitualTarget.mdl"
string OrderEffectC = "Abilities\\Weapons\\ProcMissile\\ProcMissile.mdl"
string OrderEffectD = "Abilities\\Weapons\\FarseerMissile\\FarseerMissile.mdl"
endglobals
nothing OrderEffect(location p, string s){
DestroyEffect(AddSpecialEffectLoc(s,p))
}
boolean StopCond (){return GetIssuedOrderId() == OrderId("setrally") or GetIssuedOrderId() == OrderId("smart") }
nothing ShiftDetect (){
unit u = GetTriggerUnit()
location pa = GetUnitRallyPoint(u)
location pb
location pt
integer ordertype
if GetOrderPointLoc() != null {
pt = Location(GetLocationX(GetOrderPointLoc()),GetLocationY(GetOrderPointLoc()))
ordertype = 1
}elseif GetOrderTargetUnit() != null {
pt = Location(GetUnitX(GetOrderTargetUnit()),GetUnitY(GetOrderTargetUnit()))
ordertype = 2
}elseif GetOrderTargetDestructable() != null {
pt = Location(GetDestructableX(GetOrderTargetDestructable()),GetDestructableY(GetOrderTargetDestructable()))
ordertype = 3
}elseif GetOrderTargetItem() != null {
pt = Location( GetItemX(GetOrderTargetItem()), GetItemY(GetOrderTargetItem()))
ordertype = 4
}
PanCameraToTimed(GetCameraTargetPositionX()+0.1, GetCameraTargetPositionY()+0.1, 0)
IssueImmediateOrder(u, "stop" )
if GetIssuedOrderId() == OrderId("setrally") {
OrderEffect(pt,OrderEffectC)
}else{
TriggerSleepAction( 0.01 )
if ordertype == 1 {
pb = GetUnitRallyPoint(u)
}elseif ordertype == 2 {
pb = GetUnitLoc(GetUnitRallyUnit(u))
}elseif ordertype == 3 {
pb = GetDestructableLoc(GetUnitRallyDestructable(u))
}elseif ordertype == 4 {
pb = GetUnitLoc(GetUnitRallyUnit(u))
}
if DistanceBetweenPoints (pa,pb) > 0.01 or ordertype != 1 {
OrderEffect(pt,OrderEffectA)
}else{
OrderEffect(pt,OrderEffectB)
}
}
RemoveLocation(pa)
RemoveLocation(pb)
RemoveLocation(pt)
pa = null
pb = null
pt = null
u = null
}
endlibrary
//===========================================================================
function InitTrig_ShiftDetect takes nothing returns nothing
integer i = 0
trigger t = CreateTrigger( )
loop
SetPlayerTechMaxAllowed(Player(i), ShiftDetectUnitId, 0)
TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_POINT_ORDER, null)
TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_ORDER, null)
TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null)
i++
exitwhen i == bj_MAX_PLAYER_SLOTS
endloop
TriggerAddCondition( t, Condition( function StopCond ) )
TriggerAddAction ( t, function ShiftDetect )
endfunction
Заменяемые модели
UI\Feedback\RallyPoint\NightElfRallyFlag.mdx
UI\Feedback\RallyPoint\OrcRallyFlag.mdx
UI\Feedback\RallyPoint\RallyPoint.mdx
UI\Feedback\RallyPoint\UndeadRallyFlag.mdx
UI\Feedback\RallyPoint\OrcRallyFlag.mdx
UI\Feedback\RallyPoint\RallyPoint.mdx
UI\Feedback\RallyPoint\UndeadRallyFlag.mdx
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Jack-of-shadow
И нужно заменить модели GetUnitRallyPoint на пустышки.
v 0.09