offline
Опыт:
45,184
Активность:
|
Выполненая работа бай DioD
Код:
constant function A2I takes triggeraction Targ_H returns integer
return Targ_H
return 0
endfunction
constant function I2A takes integer Targ_I returns triggeraction
return Targ_I
return null
endfunction
function ForSetSDA takes integer Offset returns integer
local integer OffS_I_1 = Offset
local integer Slot_I_1 = 0
local integer Valu_I_1 = 256
if Offset > 31 then
set OffS_I_1 = 31
endif
if Offset < 0 then
set OffS_I_1 = 0
endif
set Slot_I_1 = 256*OffS_I_1
set Valu_I_1 = Slot_I_1 + 255
if udg_LH_LogicUse[OffS_I_1] == 0 and OffS_I_1 != 0 then
set udg_LH_LogicUse[OffS_I_1] = Slot_I_1
else
set Slot_I_1 = udg_LH_LogicUse[OffS_I_1]
endif
loop
exitwhen udg_LH_Events[Slot_I_1] == null or Slot_I_1 > Valu_I_1
set Slot_I_1 = Slot_I_1 + 1
endloop
set udg_LH_LogicUse[OffS_I_1] = Slot_I_1 + 1
if udg_LH_LogicUse[OffS_I_1] > Valu_I_1 then
set udg_LH_LogicUse[OffS_I_1] = 256*OffS_I_1
endif
return Slot_I_1
endfunction
function ForGetSDA takes trigger Trig_T, integer OffSet returns integer
local integer Slot_I_1 = 256*OffSet
loop
exitwhen udg_LH_Events[Slot_I_1] == Trig_T or Slot_I_1 == 256*OffSet+255
set Slot_I_1 = Slot_I_1 + 1
endloop
return Slot_I_1
endfunction
function ForCleanSDA takes integer Slot_I_1 returns nothing
call TriggerRemoveAction(udg_LH_Events[Slot_I_1],I2A(udg_LH_Actions[Slot_I_1]))
call DestroyTrigger(udg_LH_Events[Slot_I_1])
if udg_LH_Effects[Slot_I_1] != null then
call DestroyEffect(udg_LH_Effects[Slot_I_1])
set udg_LH_Effects[Slot_I_1] = null
endif
set udg_LH_Events[Slot_I_1] = null
set udg_LH_Logic[Slot_I_1] = false
set udg_LH_Trees [Slot_I_1] = null
set udg_LH_Actions[Slot_I_1]= 0
set udg_LH_Units[Slot_I_1] = null
endfunction
Это система управления памятью, на данный момент она работает корректно и без утечек НО, крайне хрупка и при малейшей ошибке в тригере просто не будет работать вообще не выдавая каких либо ошибок.
Код:
// //
function Players_Help_Condition takes nothing returns boolean //
if GetIssuedOrderId() == 851983 then //
return IsUnitEnemy(GetOrderTargetUnit(),GetOwningPlayer(GetOrderedUnit())) != true //
else //
return false //
endif //
endfunction //
// //
// //
function Players_Help_Action takes nothing returns nothing //
local unit Orde_U_1 = GetOrderedUnit ( ) //
local unit Targ_U_1 = GetOrderTargetUnit( ) //
// //
if IsUnitType(Orde_U_1,UNIT_TYPE_STRUCTURE) == false then //
call IssuePointOrderById(Orde_U_1, 851983 ,GetUnitX(Targ_U_1) , GetUnitY ( Targ_U_1) ) //
else //
call PauseUnit ( Orde_U_1 , true ) //
call IssueImmediateOrderById ( Orde_U_1 , 851972 ) //
call PauseUnit ( Orde_U_1 , false ) //
endif //
// //
set Orde_U_1 = null //
set Targ_U_1 = null //
endfunction //
// //
// //
function InitTrig_Players_Help takes nothing returns nothing //
set gg_trg_Players_Help = CreateTrigger() //
// //
call RegisterUnitEvent (gg_trg_Players_Help, EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER ) //
call TriggerAddCondition (gg_trg_Players_Help, Condition ( function Players_Help_Condition)) //
call TriggerAddAction (gg_trg_Players_Help, function Players_Help_Action ) //
endfunction //
// //
Завершенный модуль предназначеный для помощи игрокам, будет помогать кликать атаку вручную, позже будет использовать систему регионов помогая пользователям избегать опасных кликов, вроде попытки подойти к вышке или еще куда-то где шанс умереть 100%.
Шанс буду считать я так что будьте осторожны.
На данный момент использует обычный регистер, далее эта функция будет изменена, просто зачем помогать кликать тем кто не играет?
Код:
// //
function Environment_Helper takes nothing returns destructable //
return GetTriggerWidget() //
endfunction //
// //
// //
function Environment_Timer takes nothing returns nothing //
local integer Slot_I_1 = ForGetSDA(GetTriggeringTrigger(),1) //
call DestructableRestoreLife(udg_LH_Trees[Slot_I_1],3000,true) //
call ForCleanSDA(Slot_I_1) //
endfunction //
// //
// //
function Environment_Main takes nothing returns nothing //
local integer Slot_I_1 = ForSetSDA(1) //
local triggeraction TAct_I_1 = null //
set udg_LH_Events[Slot_I_1] = CreateTrigger() //
set udg_LH_Trees [Slot_I_1] = Environment_Helper() //
set TAct_I_1 = TriggerAddAction(udg_LH_Events [Slot_I_1],function Environment_Timer) //
set udg_LH_Actions[Slot_I_1] = A2I(TAct_I_1) //
call TriggerRegisterTimerEvent(udg_LH_Events [Slot_I_1],2,false) //
set TAct_I_1 = null //
endfunction //
// //
// //
function Environment_Register takes nothing returns nothing //
call TriggerRegisterDeathEvent(gg_trg_Environment_Main,GetEnumDestructable()) //
endfunction //
// //
// //
function InitTrig_Environment_Main takes nothing returns nothing //
local rect Rect_R_1 = GetWorldBounds() //
set gg_trg_Environment_Main = CreateTrigger() //
call EnumDestructablesInRect(Rect_R_1,null,function Environment_Register) //
call TriggerAddAction(gg_trg_Environment_Main,function Environment_Main) //
call RemoveRect(Rect_R_1) //
set Rect_R_1 = null //
endfunction //
// //
Восстанавливает деревья и другие разрушаемые объекты после их разрушения.
-------------------------------------------------------------------------------------------------------
ОСТАВЛЯЙТЕ СВОИ ПОЖЕЛАНИЯ Я ЭТИ ФУНКЦИИ ВЫКЛАДЫВАЮ ДЛЯ ВАС САМ Я ИХ УЖЕ ВИДЕЛ
-------------------------------------------------------------------------------------------------------
|