Spoiler:
Code: Select all
scope AntiCP initializer Init
//****************************************************************************************
//
// | Anti-CheatPack System v1.00 by Saw792 |
//
// Using this system will report any modification to the map script. Combined with map
// optimisation it will effectively stop people from using a modified version of your
// map, as it disables all GUI trigger functionality and all JASS triggers (with the
// exception of libraries, for technical reasons) on detection of modification.
//
// It is recommended that all functioning vJASS code is writeen within scopes (with the
// exception of systems) in order for them to be disabled on modification detection.
//
//
// Implementation Instructions:
//
// 1. Create a blank disabled trigger named AntiCPConfig, convert to custom text
// 2. Copy/Paste the AntiCPConfig library into the blank trigger
// 3. Click the name of your map in the left-hand panel in the trigger editor
// 4. Copy/Paste the AntiCP scope into the Custom Text section
// NB: The scope MUST be at the VERY top of the custom text section, and
// NOT in a blank trigger
// 5. Follow the instructions in the AntiCPConfig library
// 6. Set the HANDLE_COUNT variable below to the output of the library
// 7. Configure other constants below
// 8. Set ENABLED = true
// 9. Save your map and enjoy
//
// NB: Every time you save a final version run the AntiCPConfig library again
// as the handle count has probably changed
// NB: When modifying your map set ENABLED = false, and set it to true again
// when a final version is saved
//
//****************************************************************************************
globals
//Output of AntiCPConfig library
private constant integer HANDLE_COUNT = 0
//System enabled or disabled
private constant boolean ENABLED = false
//Disable triggers initializers on detection?
private constant boolean TRIGGER_DISABLE = false
//Show a message to players if modification is detected?
private constant boolean SHOW_TEXT = true
//Text to display when SHOW_TEXT = true
//If SHOW_TEXT = false it is recommended that this string be emptied (i.e. = "")
private constant string DISP_TEXT = "This map has been modified. Please delete it and redownload from a trusted source."
endglobals
private function T2I takes trigger t returns integer
return GetHandleId(t)
endfunction
private function Init takes nothing returns nothing
local integer i
local trigger t = CreateTrigger()
if (T2I(t) - 1048584) != HANDLE_COUNT and ENABLED then
if SHOW_TEXT then
call DisplayTextToForce(bj_FORCE_ALL_PLAYERS, DISP_TEXT)
endif
if TRIGGER_DISABLE then
set i = i
endif
endif
call DestroyTrigger(t)
set t = null
endfunction
endscope
library AntiCPConfig initializer Init //requires
//****************************************************************************
//
// | Anti-CheatPack Configuration Functions by Saw792 |
//
// Configuration Instructions:
//
// 1. Uncomment the 'requires' line above these instructions
// 2. Add in the name of every library in your map separated by ,
// NB: If you have no vJASS libraries in your map ignore these two steps
// 3. Enable this trigger
// 4. Save your map
// 5. Click 'Test Map' and write down the number that is displayed
// once the game starts (Handle Count: ...)
// 6. Exit the game
// 7. Disable this library
// 8. Keep this library within your map
// 9. Repeat these instruction every time you save a final version
//
//****************************************************************************
private function T2I takes trigger t returns integer
return GetHandleId(t)
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
call BJDebugMsg("Handle Count: " + I2S(T2I(t) - 1048584))
call DestroyTrigger(t)
endfunction
endlibrary