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

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

Ответ
 
DioD

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                                                                                      //
//                                                                                               //


Восстанавливает деревья и другие разрушаемые объекты после их разрушения.



-------------------------------------------------------------------------------------------------------
ОСТАВЛЯЙТЕ СВОИ ПОЖЕЛАНИЯ Я ЭТИ ФУНКЦИИ ВЫКЛАДЫВАЮ ДЛЯ ВАС САМ Я ИХ УЖЕ ВИДЕЛ
-------------------------------------------------------------------------------------------------------
Старый 27.08.2006, 16:59
FoK_KruGer
<3 Vocal Trance
offline
Опыт: 19,540
Активность:
Цитата:
озже будет использовать систему регионов помогая пользователям избегать опасных кликов, вроде попытки подойти к вышке или еще куда-то где шанс умереть 100%.


это нах.
Остальное куль.
Ты бы лучше не свою мапу тянул а нашу.
Но это имхо.
Старый 27.08.2006, 17:09
DioD

offline
Опыт: 45,184
Активность:
Ваша карта непригодна к какого рода тестам вообще, а то что переменные помечены LH это сделано тока для тогочто-бы вы не путались когда в следующей версии всё это будет вставлено к карту.
Старый 27.08.2006, 17:17
FoK_KruGer
<3 Vocal Trance
offline
Опыт: 19,540
Активность:
блин. я всеравно этого не понимаю.
это к вардену/вандаму/джону.
Старый 27.08.2006, 17:53
Ответ

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

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

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

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



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