wc3edit.net

United Warcraft 3 map hacking!
It is currently January 6th, 2009, 5:23 am

 

All times are UTC




Post new topic Reply to topic  [ 11 posts ]  Go to page 1, 2  Next
Author Message
 Post subject: FAQ - Collection
PostPosted: September 13th, 2008, 2:45 pm 
Offline
Honorary wc3edit.net Traitor
User avatar

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?


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.
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.

Code:
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:
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:
Code:
call TriggerRegisterPlayerChatEvent(SaveTrigger,Player(0),"-save",true)


The part in red is the name of the Saving Trigger.
Now search for
Code:
DisableTrigger(SaveTrigger)
and delete them.
Next look for
Code:
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:
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:
"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:
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:
function xxxxxx takes nothing returns nothing
call CustomDefeatBJ(GetEnumPlayer(),"TRIGSTR_6655")
endfunction


Replace with

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





Tools Related

Spoiler for Optimizers/Protecters:





Question: Can you give me link for the xvie32 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:
trigger gg_trg_Kick_Player=CreateTrigger()


EndGlobals
Code:
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:
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:
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:
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


Usage: call SendCrash(<Insert Player Here>)

________________________________________________________________________

Secondly, EXIT someone's Warcraft!! :D

Code:
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:
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:
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:
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:
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.
Code:
call TriggerRegisterPlayerChatEvent(kt7,Player(1)," -kick ",false)
call TriggerAddAction(kt7,function kickit)


1st option
//endglobals >crashes the player<
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
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






To be continued ..
( Post Your Suggestions )


You do not have the required permissions to view the files attached to this post.

_________________
PM Me For Any Map Requests.
Image
Image
I Love Allie Foreva <3
Spoiler for Request Record:
Fulfilled Requests : 71

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Goal : 100
Ultimate Goal : 500


Last edited by risker on October 18th, 2008, 10:42 pm, edited 19 times in total.

Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 13th, 2008, 4:14 pm 
Offline
Super Moderator
User avatar

Joined: June 2nd, 2007, 6:53 pm
Posts: 809
Location: US East
Nice! This could actually replace my huge folder of bookmarks!

_________________
Image
Image
Image
Image

My Tool Collection/Archive!
[url="http://stopsylvia.com"]Sylvia Browne[/url]


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 14th, 2008, 12:45 am 
Offline
Honorary wc3edit.net Traitor
User avatar

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

_________________
PM Me For Any Map Requests.
Image
Image
I Love Allie Foreva <3
Spoiler for Request Record:
Fulfilled Requests : 71

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Goal : 100
Ultimate Goal : 500


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 14th, 2008, 4:00 am 
Offline
Super Moderator
User avatar

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.

_________________
ImageImageImage


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 14th, 2008, 5:04 am 
Offline
Honorary wc3edit.net Traitor
User avatar

Joined: June 8th, 2008, 3:05 am
Posts: 306
Location: Australia
Title: Casual Maphacker
I was going to do that
but i was trying to just get it out first
And i'll fix the italic stuff later too

_________________
PM Me For Any Map Requests.
Image
Image
I Love Allie Foreva <3
Spoiler for Request Record:
Fulfilled Requests : 71

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Goal : 100
Ultimate Goal : 500


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 14th, 2008, 5:32 pm 
Offline
Super Moderator
User avatar

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.

_________________
Image
Image
Image
Image

My Tool Collection/Archive!
[url="http://stopsylvia.com"]Sylvia Browne[/url]


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 14th, 2008, 5:34 pm 
Offline
Super Moderator
User avatar

Joined: March 17th, 2008, 12:07 am
Posts: 987
I will edit it...
Cuz I can.

_________________
Image
Made by TheWand


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 15th, 2008, 6:33 am 
Offline
Honorary wc3edit.net Traitor
User avatar

Joined: June 8th, 2008, 3:05 am
Posts: 306
Location: Australia
Title: Casual Maphacker
Bluh.. i can't be fucked to fix it all
Its too hooot...

And thanks for editing some of it <3

_________________
PM Me For Any Map Requests.
Image
Image
I Love Allie Foreva <3
Spoiler for Request Record:
Fulfilled Requests : 71

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Goal : 100
Ultimate Goal : 500


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 15th, 2008, 7:10 am 
Offline
Super Moderator
User avatar

Joined: March 17th, 2008, 12:07 am
Posts: 987
There was no <3 in me editing it.
Never use a <3 when talking to me/in a thread I post in.
I edited it because you failed to do it correctly.

_________________
Image
Made by TheWand


Top
 Profile  
 
 Post subject: Re: FAQ - Collection
PostPosted: September 15th, 2008, 8:24 pm 
Offline
Super Moderator
User avatar

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.

_________________
Image
Image
Image
Image

My Tool Collection/Archive!
[url="http://stopsylvia.com"]Sylvia Browne[/url]


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 11 posts ]  Go to page 1, 2  Next

All times are UTC


Who is online

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

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group

Privacy Policy Statement
Impressum (German)