[Request]Saving trigger help

General talk about editing, cheating, and deprotecting maps.

Moderator: Cheaters

Vesper77
Member
Posts: 74
Joined: May 28th, 2008, 5:20 am

[Request]Saving trigger help

Post by Vesper77 »

My save trigger atm is a little cheap and buggy. It saves the hero that you have highlighted (clicked on), not the one that you own. Alot of people have been abusing this bug therefore I changed the save code of my rpg map. I have it set that it can only load off your username.

Here is the current save trigger I am using.

Code: Select all

function Trig_NPS_Save_Func018C takes nothing returns boolean
    if ( not ( StringLength(udg_NPS_Buffer_Bits) != 0 ) ) then
        return false
    endif
    return true
endfunction

function Trig_NPS_Save_Actions takes nothing returns nothing
    set udg_Player_Hero_Array[GetConvertedPlayerId(GetTriggerPlayer())] = GroupPickRandomUnit(GetUnitsSelectedAll(GetTriggerPlayer()))
    set udg_NPS_Acc_name = GetPlayerName(GetTriggerPlayer())
    call ConditionalTriggerExecute( gg_trg_NPS_S_Store_Player_Data )
    call ConditionalTriggerExecute( gg_trg_NPS_S_Max_Data_Correction )
    call ConditionalTriggerExecute( gg_trg_NPS_S_Store_CRC_Check )
    call ConditionalTriggerExecute( gg_trg_NPS_S_Write_Data_to_Bits )
    call ConditionalTriggerExecute( gg_trg_NPS_S_Write_Bits_to_Buffer )
    // Resize last data in buffer to calculate char
    // Bug Fix          Jun 15, 2006              Bug Fix
    if ( Trig_NPS_Save_Func018C() ) then
        set udg_Temp_Integer = StringLength(udg_NPS_Buffer_Bits)
        call ConditionalTriggerExecute( gg_trg_NPS_Save_TIP )
        set udg_Integer_A = 1
        loop
            exitwhen udg_Integer_A > ( udg_NPS_CMap_BitsRq_Total - udg_Temp_Integer )
            set udg_NPS_Buffer_Bits = ( "0" + udg_NPS_Buffer_Bits )
            set udg_Integer_A = udg_Integer_A + 1
        endloop
    else
    endif
    call ConditionalTriggerExecute( gg_trg_NPS_S_Convert_Buffer_to_Char )
    call ConditionalTriggerExecute( gg_trg_NPS_S_Pass_Jumbler )
    call ConditionalTriggerExecute( gg_trg_NPS_S_Display_Password )
endfunction

//===========================================================================
function InitTrig_NPS_Save takes nothing returns nothing
    set gg_trg_NPS_Save = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(0), "-save", true )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(1), "-save", true )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(2), "-save", true )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(3), "-save", true )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(4), "-save", true )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(5), "-save", true )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(6), "-save", true )
    call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(7), "-save", true )
    call TriggerAddAction( gg_trg_NPS_Save, function Trig_NPS_Save_Actions )
endfunction

Code: Select all

function Trig_NPS_S_Max_Data_Correction_Func001Func001C takes nothing returns boolean
    if ( not ( udg_NPS_Data_Int[udg_Integer_A] >= R2I(Pow(2.00, I2R(udg_NPS_Data_Int_BitsRq[udg_Integer_A]))) ) ) then
        return false
    endif
    return true
endfunction

function Trig_NPS_S_Max_Data_Correction_Actions takes nothing returns nothing
    set udg_Integer_A = 1
    loop
        exitwhen udg_Integer_A > udg_NPS_Data_EntryCount
        if ( Trig_NPS_S_Max_Data_Correction_Func001Func001C() ) then
            set udg_NPS_Data_Int[udg_Integer_A] = R2I(( Pow(2.00, I2R(udg_NPS_Data_Int_BitsRq[udg_Integer_A])) - 1 ))
        else
        endif
        set udg_Integer_A = udg_Integer_A + 1
    endloop
endfunction

//===========================================================================
function InitTrig_NPS_S_Max_Data_Correction takes nothing returns nothing
    set gg_trg_NPS_S_Max_Data_Correction = CreateTrigger(  )
    call TriggerAddAction( gg_trg_NPS_S_Max_Data_Correction, function Trig_NPS_S_Max_Data_Correction_Actions )
endfunction

Code: Select all

function Trig_NPS_S_Store_CRC_Check_Func002C takes nothing returns boolean
    if ( not ( udg_NPS_Data_Error_Bits < 1 ) ) then
        return false
    endif
    return true
endfunction

function Trig_NPS_S_Store_CRC_Check_Func009Func002Func001C takes nothing returns boolean
    if ( not ( SubStringBJ(GetPlayerName(GetTriggerPlayer()), udg_Integer_A, udg_Integer_A) == SubStringBJ(udg_Temp_String, udg_Integer_B, udg_Integer_B) ) ) then
        return false
    endif
    return true
endfunction

function Trig_NPS_S_Store_CRC_Check_Func012Func002Func001C takes nothing returns boolean
    if ( not ( SubStringBJ(GetPlayerName(GetTriggerPlayer()), udg_Integer_A, udg_Integer_A) == SubStringBJ(udg_Temp_String, udg_Integer_B, udg_Integer_B) ) ) then
        return false
    endif
    return true
endfunction

function Trig_NPS_S_Store_CRC_Check_Actions takes nothing returns nothing
    // Adjust Error Check to store at least 1 bit
    if ( Trig_NPS_S_Store_CRC_Check_Func002C() ) then
        set udg_NPS_Data_Error_Bits = 1
    else
    endif
    set udg_NPS_Data_Int[( udg_NPS_Data_EntryCount + 1 )] = 0
    set udg_NPS_Data_Int_BitsRq[( udg_NPS_Data_EntryCount + 1 )] = udg_NPS_Data_Error_Bits
    // Calculate Data CRC Check
    set udg_Integer_A = 1
    loop
        exitwhen udg_Integer_A > udg_NPS_Data_EntryCount
        set udg_NPS_Data_Int[( udg_NPS_Data_EntryCount + 1 )] = ModuloInteger(( udg_NPS_Data_Int[( udg_NPS_Data_EntryCount + 1 )] + udg_NPS_Data_Int[udg_Integer_A] ), R2I(Pow(2.00, I2R(udg_NPS_Data_Error_Bits))))
        set udg_Integer_A = udg_Integer_A + 1
    endloop
    // Calculate Player Name Data Check
    set udg_Temp_String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    set udg_Integer_A = 1
    loop
        exitwhen udg_Integer_A > StringLength(GetPlayerName(GetTriggerPlayer()))
        // Setup String to calculate player name values
        set udg_Integer_B = 1
        loop
            exitwhen udg_Integer_B > StringLength(udg_Temp_String)
            if ( Trig_NPS_S_Store_CRC_Check_Func009Func002Func001C() ) then
                set udg_NPS_Data_Int[( udg_NPS_Data_EntryCount + 1 )] = ModuloInteger(( udg_NPS_Data_Int[( udg_NPS_Data_EntryCount + 1 )] + udg_Integer_B ), R2I(Pow(2.00, I2R(udg_NPS_Data_Error_Bits))))
            else
            endif
            set udg_Integer_B = udg_Integer_B + 1
        endloop
        set udg_Integer_A = udg_Integer_A + 1
    endloop
    // Calculate Unique Password system
    set udg_Temp_String = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
    set udg_Integer_A = 1
    loop
        exitwhen udg_Integer_A > StringLength(udg_Map_Creator_Name)
        // Setup String to calculate player name values
        set udg_Integer_B = 1
        loop
            exitwhen udg_Integer_B > StringLength(udg_Temp_String)
            if ( Trig_NPS_S_Store_CRC_Check_Func012Func002Func001C() ) then
                set udg_NPS_Data_Int[( udg_NPS_Data_EntryCount + 1 )] = ModuloInteger(( udg_NPS_Data_Int[( udg_NPS_Data_EntryCount + 1 )] + udg_Integer_B ), R2I(Pow(2.00, I2R(udg_NPS_Data_Error_Bits))))
            else
            endif
            set udg_Integer_B = udg_Integer_B + 1
        endloop
        set udg_Integer_A = udg_Integer_A + 1
    endloop
endfunction

//===========================================================================
function InitTrig_NPS_S_Store_CRC_Check takes nothing returns nothing
    set gg_trg_NPS_S_Store_CRC_Check = CreateTrigger(  )
    call TriggerAddAction( gg_trg_NPS_S_Store_CRC_Check, function Trig_NPS_S_Store_CRC_Check_Actions )
endfunction
Anyone out there know a save trigger that only saves your hero no matter which hero you have highlighted?
Vesper77
Member
Posts: 74
Joined: May 28th, 2008, 5:20 am

Re: [Request]Saving trigger help

Post by Vesper77 »

Double post sorry. Wanted to point out if its this thats saving any selected hero
Spoiler:
function Trig_NPS_Save_Func018C takes nothing returns boolean
if ( not ( StringLength(udg_NPS_Buffer_Bits) != 0 ) ) then
return false
endif
return true
endfunction

function Trig_NPS_Save_Actions takes nothing returns nothing
set udg_Player_Hero_Array[GetConvertedPlayerId(GetTriggerPlayer())] = GroupPickRandomUnit(GetUnitsSelectedAll(GetTriggerPlayer()))
set udg_NPS_Acc_name = GetPlayerName(GetTriggerPlayer())
call ConditionalTriggerExecute( gg_trg_NPS_S_Store_Player_Data )
call ConditionalTriggerExecute( gg_trg_NPS_S_Max_Data_Correction )
call ConditionalTriggerExecute( gg_trg_NPS_S_Store_CRC_Check )
call ConditionalTriggerExecute( gg_trg_NPS_S_Write_Data_to_Bits )
call ConditionalTriggerExecute( gg_trg_NPS_S_Write_Bits_to_Buffer )
// Resize last data in buffer to calculate char
// Bug Fix Jun 15, 2006 Bug Fix
if ( Trig_NPS_Save_Func018C() ) then
set udg_Temp_Integer = StringLength(udg_NPS_Buffer_Bits)
call ConditionalTriggerExecute( gg_trg_NPS_Save_TIP )
set udg_Integer_A = 1
loop
exitwhen udg_Integer_A > ( udg_NPS_CMap_BitsRq_Total - udg_Temp_Integer )
set udg_NPS_Buffer_Bits = ( "0" + udg_NPS_Buffer_Bits )
set udg_Integer_A = udg_Integer_A + 1
endloop
else
endif
call ConditionalTriggerExecute( gg_trg_NPS_S_Convert_Buffer_to_Char )
call ConditionalTriggerExecute( gg_trg_NPS_S_Pass_Jumbler )
call ConditionalTriggerExecute( gg_trg_NPS_S_Display_Password )
endfunction

//===========================================================================
function InitTrig_NPS_Save takes nothing returns nothing
set gg_trg_NPS_Save = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(0), "-save", true )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(1), "-save", true )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(2), "-save", true )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(3), "-save", true )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(4), "-save", true )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(5), "-save", true )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(6), "-save", true )
call TriggerRegisterPlayerChatEvent( gg_trg_NPS_Save, Player(7), "-save", true )
call TriggerAddAction( gg_trg_NPS_Save, function Trig_NPS_Save_Actions )
endfunction
If so what should I change it to >_>;;?
User avatar
weirdone2
Forum Staff
Posts: 926
Joined: June 3rd, 2007, 8:03 pm

Re: [Request]Saving trigger help

Post by weirdone2 »

You should assign the hero to a variable when they first pick it or load it. And just use that for all purposes of dealing with that hero.
Vesper77
Member
Posts: 74
Joined: May 28th, 2008, 5:20 am

Re: [Request]Saving trigger help

Post by Vesper77 »

Could you give me an example? Im not really sure how to script that. Is it like :

Code: Select all

set udg_Player_Hero_Array[GetConvertedPlayerId(GetTriggerPlayer())] = GroupPickRandomUnit(GetUnitsPickedAll(GetTriggerPlayer()))
User avatar
weirdone2
Forum Staff
Posts: 926
Joined: June 3rd, 2007, 8:03 pm

Re: [Request]Saving trigger help

Post by weirdone2 »

Uhhh whats with the group all picked units, your setting yourself up for failure with that there. Anyhow assign the hero when you first pick it, as in if they don't click me it from a building have that monitored until they don't click me it and then assign it.