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