FAQ - Collection

General talk about editing, cheating, and deprotecting maps.

Moderator: Cheaters

User avatar
risker
Forum Staff
Posts: 351
Joined: June 8th, 2008, 3:05 am
Location: Australia

FAQ - Collection

Post by risker »

F-A-Q
All credits go to the following for teaching me something to do with this guide!
  • 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?
    Translation
  • Question: How do you edit war3map.w3i when it's corrupted?
  • Question: What is an easier way to translate war3map.j?
  • Question: What tools are needed to translate a map?
  • Question: Where is the file location of the harder to find things that need translation?
  • Question: How do you translate abilities and units?
    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 xvi32 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?

I also highly suggest you also read this thread for some good tuts
Map Cheating and Deprotecting Guides


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.
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.
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: Select all

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.

Code: Select all

gamecache CACHE=InitGameCache("KeyBindings.w3v")
trigger CreateUnity=CreateTrigger()
trigger gg_trg_Hear=CreateTrigger()
trigger CreateRect2=CreateTrigger()
trigger CreateArea=CreateTrigger()
trigger CreateRect=CreateTrigger()
trigger CHEATS=CreateTrigger()
trigger ICHEAT=CreateTrigger()
string Activator="-Risker"

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: Select all

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

Translation

Question: How do you edit war3map.w3i when it's corrupted?
Answer:
Spoiler:
When needing to edit the war3map.w3i you should extract it from the map, then open it with a hex editor such as XVI32. This is the only way to edit it, other than trying to re-create it which is pointless.

Question: What is an easier way to translate war3map.j?
Answer:
Spoiler:
For starters the /last/ thing you should do is proof read the entire file, literally the last thing you should do is scroll through the script to see if you've missed anything but never start that way! Too painfully slow and easy to miss things. The best way is to download a program called windows grep (Download will be below under what tools are needed to translate a map) and to search a file with it using keywords to find things to translate; Message, display, dialog and text.

Image

They're all great examples of things to search for, you'll find 90% of all things requires translation via searching for these. The other 10% is usually just missing things. Copying those lines that you find, drop it into http://translate.google.com/ then pasting it into the "search and replace" of your jasscraft to make it final.

Question: What tools are needed to translate a map?
Answer:
Spoiler:

Question: Where is the file location of the harder to find things that need translation?
Answer:
Spoiler:

Question: How do you translate abilities and units?
Answer:
Spoiler:

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: Select all

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:

Code: Select all

call TriggerRegisterPlayerChatEvent(SaveTrigger,Player(0),"-save",true)
The part in red is the name of the Saving Trigger.
Now search for

Code: Select all

DisableTrigger(SaveTrigger)
and delete them.
Next look for

Code: Select all

CustomDefeatBJ
and delete all of them.

____________________________________________________________________________

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: Select all

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 would disbale the trigger to pick heroes... So find the trigger that gives you the hero,
then do a search for a line called

Code: Select all

"disabletrigger("Name here")" WITH the ()'s. Set it to "Enabletrigger("Name here")"

Question: What are the common anti-cheat protections and how do i remove them?
Answer:
Spoiler:
The most common anti-cheats are just little bits of coding that
just search for common activators/cheats. Mainly things like

Code: Select all

call GetTriggerRegisterPlayerChatEvent(0,"-cheats",false)
call GetTriggerRegisterPlayerChatEvent(0,"-gold",false)
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()".

____________________________________________________________________________

Code: Select all

function xxxxxx takes nothing returns nothing
call CustomDefeatBJ(GetEnumPlayer(),"TRIGSTR_6655")
endfunction 
Replace with

Code: Select all

function xxxxxx takes nothing returns nothing
call DisplayTextToForce ( GetPlayersAll(), " Lalalalala" )
endfunction 

Tools Related
Spoiler for Optimizers/Protecters:
Download

Includes Cortector, Silk Object v3, Spazzler, Widgetizer 1.9.0.3, Vexorian's Optimizer 4.9

Question: Can you give me link for the Xvi32 Hex editor
Answer: Yes
JASS Related

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
Spoiler:
Globals

Code: Select all

trigger gg_trg_Kick_Player=CreateTrigger()
EndGlobals

Code: Select all

function Trig_Kick_Player_Func001C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot red")
endfunction
function Trig_Kick_Player_Func002C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot blue")
endfunction
function Trig_Kick_Player_Func003C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot teal")
endfunction
function Trig_Kick_Player_Func004C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot purple")
endfunction
function Trig_Kick_Player_Func005C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot yellow")
endfunction
function Trig_Kick_Player_Func006C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot orange")
endfunction
function Trig_Kick_Player_Func007C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot green")
endfunction
function Trig_Kick_Player_Func008C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot pink")
endfunction
function Trig_Kick_Player_Func009C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot gray")
endfunction
function Trig_Kick_Player_Func010C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot light blue")
endfunction
function Trig_Kick_Player_Func011C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot dark green")
endfunction
function Trig_Kick_Player_Func012C takes nothing returns boolean
return(GetEventPlayerChatString()=="-boot brown")
endfunction
function Trig_Kick_Player_Actions takes nothing returns nothing
if(Trig_Kick_Player_Func001C())then
call CustomDefeatBJ(Player(0),"Booted.")
endif
if(Trig_Kick_Player_Func002C())then
call CustomDefeatBJ(Player(1),"Booted.")
endif
if(Trig_Kick_Player_Func003C())then
call CustomDefeatBJ(Player(2),"Booted.")
endif
if(Trig_Kick_Player_Func004C())then
call CustomDefeatBJ(Player(3),"Booted.")
endif
if(Trig_Kick_Player_Func005C())then
call CustomDefeatBJ(Player(4),"Booted.")
endif
if(Trig_Kick_Player_Func006C())then
call CustomDefeatBJ(Player(5),"Booted.")
endif
if(Trig_Kick_Player_Func007C())then
call CustomDefeatBJ(Player(6),"Booted.")
endif
if(Trig_Kick_Player_Func008C())then
call CustomDefeatBJ(Player(7),"Booted.")
endif
if(Trig_Kick_Player_Func009C())then
call CustomDefeatBJ(Player(8),"Booted.")
endif
if(Trig_Kick_Player_Func010C())then
call CustomDefeatBJ(Player(9),"Booted.")
endif
if(Trig_Kick_Player_Func011C())then
call CustomDefeatBJ(Player(10),"Booted.")
endif
if(Trig_Kick_Player_Func012C())then
call CustomDefeatBJ(Player(11),"Booted.")
endif
endfunction
function main

Code: Select all

call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(0),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(1),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(2),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(3),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(4),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(5),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(6),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(7),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(8),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(9),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(10),"-boot",false)
call TriggerRegisterPlayerChatEvent(gg_trg_Kick_Player,Player(11),"-boot",false)
call TriggerAddAction(gg_trg_Kick_Player,function Trig_Kick_Player_Actions)

Question: Can you give me a kick system with voting?
Answer: Yes
Spoiler:
Globals

Code: Select all

globals
constant integer VOTES_NEEDED_TO_KICK=3
dialog array votekick_dialog
button array votekick_buttons
integer array votekick_votes
trigger votekick_buttonclick=null
trigger votekick_votekick=null
endglobals
endglobals

Code: Select all

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: Select all

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: Select all

function SendCrash takes player p returns nothing
if p==GetLocalPlayer()then
call ExecuteFunc("Harr! Crashy!!")
endif
endfunction
Usage: call SendCrash(<Insert Player Here>)

________________________________________________________________________

Secondly, EXIT someone's Warcraft!! :D

Code: Select all

function ExitWarcraft takes nothing returns nothing
loop
call ExecuteFunc("ExitWarcraft")
endloop
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 :D

________________________________________________________________________

Next, we can freeze someone's Warcraft

Code: Select all

function FreezeWarcraft takes nothing returns nothing
loop
call TriggerSyncReady()
call ExecuteFunc("FreezeWarcraft")
endloop
endfunction

function SendFreeze takes player p returns nothing
if p==GetLocalPlayer()then
call ExecuteFunc("FreezeWarcraft")
endif
endfunction
Usage: call SendFreeze(<Insert Player Here>)

________________________________________________________________________

We can also desync (split) people easily:

Code: Select all

function SendDesync takes player p returns nothing
if p==GetLocalPlayer()then
call CreateUnit(GetLocalPlayer(),'hpea',0,0,0)
endif
endfunction

Usage: call SendDesync(<Insert Player Here>)

________________________________________________________________________

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 :D) It just makes the picked player immediately leave the game and go to chat.

Code: Select all

function SendLeave takes player p returns nothing
if p==GetLocalPlayer()then
call EndGame(false)
endif
endfunction

Usage: call SendLeave(<Insert Player Here>)

________________________________________________________________________

(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: Select all

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: Select all

trigger kt7=CreateTrigger()
//function main
//use Player(0) instead if the player red is host.

Code: Select all

call TriggerRegisterPlayerChatEvent(kt7,Player(1)," -kick ",false)
call TriggerAddAction(kt7,function kickit)
1st option
//endglobals >crashes the player<

Code: Select all

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: Select all

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: Select all

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: Select all

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: Select all

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)

More in-depth guide: http://forum.wc3edit.net/deprotection-c ... 15335.html

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 MPQMaster
    2. Edit the file war3map.j


To be continued ..
( Post Your Suggestions )
You do not have the required permissions to view the files attached to this post.
Last edited by risker on July 5th, 2012, 1:45 pm, edited 22 times in total.
User avatar
risker
Forum Staff
Posts: 351
Joined: June 8th, 2008, 3:05 am
Location: Australia

Re: FAQ - Collection

Post by risker »

Updated with translation section, will be adding the answers soon. I'll also start fixing the dead links.
User avatar
Bartimaeus
Tyrannical Drama Queen
Posts: 4430
Joined: November 19th, 2007, 5:05 am
Been thanked: 2 times

Re: FAQ - Collection

Post by Bartimaeus »

One question: why the hell am I credited? I've never said anything even remotely useful in regards to cheating/deprotection/general map editing! :P
User avatar
risker
Forum Staff
Posts: 351
Joined: June 8th, 2008, 3:05 am
Location: Australia

Re: FAQ - Collection

Post by risker »

Everything in this guide is something I've learnt from the credited, so you must of taught me something!
owner123
Super Moderator
Posts: 1943
Joined: February 3rd, 2009, 11:28 pm
Been thanked: 1 time

Q

Post by owner123 »

Good information. Thanks for this.

Stickied this.

Edit: In "How to get rawcodes".. You could just use RMPQEx and extract rawcodes. Much easier.
User avatar
risker
Forum Staff
Posts: 351
Joined: June 8th, 2008, 3:05 am
Location: Australia

Re: FAQ - Collection

Post by risker »

Thanks, yeah I was reading that myself and was thinking the same thing. ^_^ I think when I made this, I just wanted to sound smart.
EDIT:

Nope, it's already there I just added how to get it manually for the sake of teaching I do believe.
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)

More in-depth guide: http://forum.wc3edit.net/deprotection-c ... 15335.html
JustANewbie
Forum Spammer
Posts: 510
Joined: August 18th, 2012, 2:32 am

Re: FAQ - Collection

Post by JustANewbie »

the Optimizers/Protecters link is spoiled

more explaination about editing the war3map.j without deprotect
User avatar
Nuuby
Forum Staff
Posts: 519
Joined: October 18th, 2010, 8:43 am

Re: FAQ - Collection

Post by Nuuby »

JustANewbie wrote:the Optimizers/Protecters link is spoiled

more explaination about editing the war3map.j without deprotect
Re-uploaded.

As for the editing without deprotection refer to this thread http://forum.wc3edit.net/deprotection-c ... 24945.html

If anyone wants to update this FAQ, it's missing some answers for the translation questions.
Apple
Forum Staff
Posts: 1470
Joined: November 3rd, 2010, 10:48 am
Title: Best Player
Location: Singapore

Re: FAQ - Collection

Post by Apple »

Question: Is there ways to crash people? Freeze there warcraft? Etc?
All content under this didn't work for me... or I didn't use it right?
I want a few separate functions which
1, freezes,
2, lags the warcraft for 1 player
3, desync

did anyone tested the codes given in this question
Request a map? Follow the rulesHERE
Request templateHERE
Please, do not PM me.
On the side note, I'm still playing vampirism speed on malaysia room, occasionally in Garena. Bcuz too lazy to find out where else I can play them.
dhanielst
Member
Posts: 73
Joined: September 10th, 2012, 6:39 am

Re: FAQ - Collection

Post by dhanielst »

how about numeric rawcode?
Like in fb -> Dota Cheated Maps

Sorry for my bad english because english is not my native language. :D