[GUIDE] How to make Dz163 Map Playable On Another Plaform

Cheatpacks and learning how to use them, as well as other guides for manipulating maps.

Moderator: Cheaters

User avatar
clanhinata
Old Wrinkly Member
Posts: 229
Joined: December 17th, 2011, 9:25 am
Title: Genius

[GUIDE] How to make Dz163 Map Playable On Another Plaform

Post by clanhinata »

Okay , The tittle tell all already , so let's get started

FAQ
Spoiler:
Q) What is Dz163 ?
A) Dz163 is China Warcraft Plaform , It's like Battlenet or Garena Lan or M16 . Main Page Here : http://dz.163.com/

Q) Why we need do this ?
A) Make Download From Dz163 is playable only in it plaform , no lan , no battle , no everything . It have a ton of exclusive map that not release outside Dz163 or higher version than release from other source .

Q) There it something wrong to the map when i follow those step
A) This only make map "playable" only , not perfect work like it play on Dz163 Plaform

Q) Can't understand anything on your guide , can you make it more easy and simple ?
A) Nope , but you can ask ya

Notes And Tips
Spoiler:
- Need good knowledge about Jass , atleast can read and write Jass . Slow or fast it's fine
- Be Creative
- Better Touch Dz163 Before Try This
Method Explain
Spoiler:
- The reason Dz163 Map unable to play on LAN or Battlenet because it's use custom native provide by plaform , The normal Warcraft 3 don't have the native so it unable to host because syntax error
- So what we do now is fake the native and convert it to function , this is why the map "playable" only .
Tools
Spoiler:
- Ladik's MPQ
- Jass Craft
- Notepad++(Optional)
- Pjass.exe(Inside Jasscraft)
- Fukki Hex Editor(Somewhere around Wc3edit)
- Example Map
Step-To-Step
Spoiler:
1. Extract War3map.j

2. Find Native
- Native alway under endglobals so you can find them there

Here is in Example Map
native RequestExtraBooleanData takes integer dataType,player whichPlayer,string param1,string param2,boolean param3,integer param4,integer param5,integer param6 returns boolean
native RequestExtraIntegerData takes integer dataType,player whichPlayer,string param1,string param2,boolean param3,integer param4,integer param5,integer param6 returns integer
native DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns boolean
native DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
native DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
native DzAPI_Map_IsRPGLobby takes nothing returns boolean
native DzAPI_Map_GetMapLevel takes player whichPlayer returns integer
native DzAPI_Map_HasMallItem takes player whichPlayer,string key returns boolean
native EXGetUnitAbility takes unit u,integer abilcode returns ability
native EXGetAbilityDataReal takes ability abil,integer level,integer data_type returns real
native EXSetAbilityDataReal takes ability abil,integer level,integer data_type,real value returns boolean
native EXSetItemDataString takes integer itemcode,integer data_type,string value returns boolean
native EXGetEventDamageData takes integer edd_type returns integer
native EXSetEventDamage takes real amount returns boolean
3.Convert Native to Function
- You can copy those Native into a new file for easy to see and not mess with the function inside map
change all "native" into "function" and put endfunction under them
function DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
endfunction
function DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_IsRPGLobby takes nothing returns boolean
endfunction
function DzAPI_Map_GetMapLevel takes player whichPlayer returns integer
endfunction
function DzAPI_Map_HasMallItem takes player whichPlayer,string key returns boolean
endfunction
function EXGetUnitAbility takes unit u,integer abilcode returns ability
endfunction
function EXGetAbilityDataReal takes ability abil,integer level,integer data_type returns real
endfunction
function EXSetAbilityDataReal takes ability abil,integer level,integer data_type,real value returns boolean
endfunction
function EXSetItemDataString takes integer itemcode,integer data_type,string value returns boolean
endfunction
function EXGetEventDamageData takes integer edd_type returns integer
endfunction
function EXSetEventDamage takes real amount returns boolean
endfunction
4. Valid Function and Syntax Fix
- Read and understand function ,for example this :
DzAPI_Map_SaveServerValue , Why we need connect to there server when you play not in there server .
DzAPI_Map_GetServerValue , It's get something from the server and return string . This need you look around the code that call this . In example map i return "dummystring"

Okay , here is the function after make it valid and syntax fix
function DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
return "dummystring"
endfunction
function DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_IsRPGLobby takes nothing returns boolean
return true
endfunction
function DzAPI_Map_GetMapLevel takes player whichPlayer returns integer
return 5
endfunction
function DzAPI_Map_HasMallItem takes player whichPlayer,string key returns boolean
return false
endfunction
function EXGetUnitAbility takes unit u,integer abilcode returns ability
return null
endfunction
function EXGetAbilityDataReal takes ability abil,integer level,integer data_type returns real
return .0
endfunction
function EXSetAbilityDataReal takes ability abil,integer level,integer data_type,real value returns boolean
return false
endfunction
function EXSetItemDataString takes integer itemcode,integer data_type,string value returns boolean
return false
endfunction
function EXGetEventDamageData takes integer edd_type returns integer
return 0
endfunction
function EXSetEventDamage takes real amount returns boolean
return false
endfunction
5. Syntax Check(Optional)
- Get Pjass.exe , Common.j , Common.ai , Blizzard.j from Jass Craft Folder or you can get them from Hiveworkshop and War3.mpq . Put them in a folder with War3map.j

Create a .cmd , input this :
pjass common.j common.ai Blizzard.j War3map.j >Error.txt

Then run it , then open Error.txt if you see error that not related to your edit that you did . Ignore it and you done

If you got those $ error , you know what to do right ? Fukki Hex Fixer is ur friend here

Here is the error for Example War3map.j
Parse successful: 2418 lines: common24.j
Parse successful: 2583 lines: common24.ai
Parse successful: 10230 lines: Blizzard24.j
War3map.j:3204: Functions passed to Filter or Condition must return a boolean
War3map.j:3205: Functions passed to Filter or Condition must return a boolean
War3map.j:3206: Functions passed to Filter or Condition must return a boolean
War3map.j:3207: Functions passed to Filter or Condition must return a boolean
War3map.j:3208: Functions passed to Filter or Condition must return a boolean
War3map.j:3209: Functions passed to Filter or Condition must return a boolean
War3map.j failed with 6 errors
Parse failed: 6 errors total
Look legit ya

Notes : Don't use fix hex war3map.j , use the base one . Fix Hex War3map.j for syntax check only

6. Import and Test
- Just Import the file back to the map , Compact Archive or Vex Optimizer if you want
- Test and feel your work
Worked Native Templates And Explain
native DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
Spoiler:
//Call To Save Value To The Server
function DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
endfunction
native DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
Spoiler:
//Call to Get Data From The Server
function DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
return null //Better return a string than null but you can modify this function to get stuff
endfunction
native DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
Spoiler:
//Same as DzAPI_Map_SaveServerValue , Call to set account server stats
function DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
endfunction
native RequestExtraBooleanData takes integer dataType,player whichPlayer,string param1,string param2,boolean param3,integer

WIP
Last edited by devoltz on December 14th, 2019, 7:46 pm, edited 2 times in total.
Reason: Added two new natives on Step-To-Step spoiler.
User avatar
devoltz
Co-Admin
Posts: 3128
Joined: March 23rd, 2016, 8:06 pm
Has thanked: 10 times
Been thanked: 54 times

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by devoltz »

Nice guide.
User avatar
clanhinata
Old Wrinkly Member
Posts: 229
Joined: December 17th, 2011, 9:25 am
Title: Genius

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by clanhinata »

devoltz wrote:Nice guide.
Haven't Finish yet but Ty ; w ;
User avatar
devoltz
Co-Admin
Posts: 3128
Joined: March 23rd, 2016, 8:06 pm
Has thanked: 10 times
Been thanked: 54 times

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by devoltz »

clanhinata wrote:Haven't Finish yet but Ty ; w ;
There's a similar protection on RGC dota maps, i managed to make it playable long time ago, didnt knew about that chinese platform.
User avatar
clanhinata
Old Wrinkly Member
Posts: 229
Joined: December 17th, 2011, 9:25 am
Title: Genius

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by clanhinata »

devoltz wrote:
clanhinata wrote:Haven't Finish yet but Ty ; w ;
There's a similar protection on RGC dota maps, i managed to make it playable long time ago, didnt knew about that chinese platform.
I can say those protection kinda like DRM
User avatar
nuzamacuxe
Also Not an Admin, but closer than devoltz
Posts: 1655
Joined: February 14th, 2018, 5:35 am
Title: Just Another S.Mod
Been thanked: 6 times

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by nuzamacuxe »

Good job. Would be cool if you add some images to make it good looking. Keep it up.
Glenntikowp
Newcomer
Posts: 11
Joined: March 27th, 2019, 1:12 pm

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by Glenntikowp »

clanhinata wrote:Okay , The tittle tell all already , so let's get started

FAQ
Spoiler:
Q) What is Dz163 ?
A) Dz163 is China Warcraft Plaform , It's like Battlenet or Garena Lan or M16 . Main Page Here : http://dz.163.com/

Q) Why we need do this ?
A) Make Download From Dz163 is playable only in it plaform , no lan , no battle , no everything . It have a ton of exclusive map that not release outside Dz163 or higher version than release from other source .

Q) There it something wrong to the map when i follow those step
A) This only make map "playable" only , not perfect work like it play on Dz163 Plaform

Q) Can't understand anything on your guide , can you make it more easy and simple ?
A) Nope , but you can ask ya

Notes And Tips
Spoiler:
- Need good knowledge about Jass , atleast can read and write Jass . Slow or fast it's fine
- Be Creative
- Better Touch Dz163 Before Try This
Method Explain
Spoiler:
- The reason Dz163 Map unable to play on LAN or Battlenet because it's use custom native provide by plaform , The normal Warcraft 3 don't have the native so it unable to host because syntax error
- So what we do now is fake the native and convert it to function , this is why the map "playable" only .
Tools
Spoiler:
- Ladik's MPQ
- Jass Craft
- Notepad++(Optional)
- Pjass.exe(Inside Jasscraft)
- Fukki Hex Editor(Somewhere around Wc3edit)
- Example Map
Step-To-Step
Spoiler:
1. Extract War3map.j

2. Find Native
- Native alway under endglobals so you can find them there

Here is in Example Map
native DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns boolean
native DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
native DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
native DzAPI_Map_IsRPGLobby takes nothing returns boolean
native DzAPI_Map_GetMapLevel takes player whichPlayer returns integer
native DzAPI_Map_HasMallItem takes player whichPlayer,string key returns boolean
native EXGetUnitAbility takes unit u,integer abilcode returns ability
native EXGetAbilityDataReal takes ability abil,integer level,integer data_type returns real
native EXSetAbilityDataReal takes ability abil,integer level,integer data_type,real value returns boolean
native EXSetItemDataString takes integer itemcode,integer data_type,string value returns boolean
native EXGetEventDamageData takes integer edd_type returns integer
native EXSetEventDamage takes real amount returns boolean
3.Convert Native to Function
- You can copy those Native into a new file for easy to see and not mess with the function inside map
change all "native" into "function" and put endfunction under them
function DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
endfunction
function DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_IsRPGLobby takes nothing returns boolean
endfunction
function DzAPI_Map_GetMapLevel takes player whichPlayer returns integer
endfunction
function DzAPI_Map_HasMallItem takes player whichPlayer,string key returns boolean
endfunction
function EXGetUnitAbility takes unit u,integer abilcode returns ability
endfunction
function EXGetAbilityDataReal takes ability abil,integer level,integer data_type returns real
endfunction
function EXSetAbilityDataReal takes ability abil,integer level,integer data_type,real value returns boolean
endfunction
function EXSetItemDataString takes integer itemcode,integer data_type,string value returns boolean
endfunction
function EXGetEventDamageData takes integer edd_type returns integer
endfunction
function EXSetEventDamage takes real amount returns boolean
endfunction
4. Valid Function and Syntax Fix
- Read and understand function ,for example this :
DzAPI_Map_SaveServerValue , Why we need connect to there server when you play not in there server .
DzAPI_Map_GetServerValue , It's get something from the server and return string . This need you look around the code that call this . In example map i return "dummystring"

Okay , here is the function after make it valid and syntax fix
function DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
return "dummystring"
endfunction
function DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
endfunction
function DzAPI_Map_IsRPGLobby takes nothing returns boolean
return true
endfunction
function DzAPI_Map_GetMapLevel takes player whichPlayer returns integer
return 5
endfunction
function DzAPI_Map_HasMallItem takes player whichPlayer,string key returns boolean
return false
endfunction
function EXGetUnitAbility takes unit u,integer abilcode returns ability
return null
endfunction
function EXGetAbilityDataReal takes ability abil,integer level,integer data_type returns real
return .0
endfunction
function EXSetAbilityDataReal takes ability abil,integer level,integer data_type,real value returns boolean
return false
endfunction
function EXSetItemDataString takes integer itemcode,integer data_type,string value returns boolean
return false
endfunction
function EXGetEventDamageData takes integer edd_type returns integer
return 0
endfunction
function EXSetEventDamage takes real amount returns boolean
return false
endfunction
5. Syntax Check(Optional)
- Get Pjass.exe , Common.j , Common.ai , Blizzard.j from Jass Craft Folder or you can get them from Hiveworkshop and War3.mpq . Put them in a folder with War3map.j

Create a .cmd , input this :
pjass common.j common.ai Blizzard.j War3map.j >Error.txt

Then run it , then open Error.txt if you see error that not related to your edit that you did . Ignore it and you done

If you got those $ error , you know what to do right ? Fukki Hex Fixer is ur friend here

Here is the error for Example War3map.j
Parse successful: 2418 lines: common24.j
Parse successful: 2583 lines: common24.ai
Parse successful: 10230 lines: Blizzard24.j
War3map.j:3204: Functions passed to Filter or Condition must return a boolean
War3map.j:3205: Functions passed to Filter or Condition must return a boolean
War3map.j:3206: Functions passed to Filter or Condition must return a boolean
War3map.j:3207: Functions passed to Filter or Condition must return a boolean
War3map.j:3208: Functions passed to Filter or Condition must return a boolean
War3map.j:3209: Functions passed to Filter or Condition must return a boolean
War3map.j failed with 6 errors
Parse failed: 6 errors total
Look legit ya

Notes : Don't use fix hex war3map.j , use the base one . Fix Hex War3map.j for syntax check only

6. Import and Test
- Just Import the file back to the map , Compact Archive or Vex Optimizer if you want
- Test and feel your work
Worked Native Templates And Explain
native DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
Spoiler:
//Call To Save Value To The Server
function DzAPI_Map_SaveServerValue takes player whichPlayer,string key,string value returns nothing
endfunction
native DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
Spoiler:
//Call to Get Data From The Server
function DzAPI_Map_GetServerValue takes player whichPlayer,string key returns string
return null //Better return a string than null but you can modify this function to get stuff
endfunction
native DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
Spoiler:
//Same as DzAPI_Map_SaveServerValue , Call to set account server stats
function DzAPI_Map_Stat_SetStat takes player whichPlayer,string key,string value returns nothing
endfunction


WIP
how to identify if map is only playable on specific platform..

is there any specific condition, like in costume game, the slot map is error, or anything ?
User avatar
nuzamacuxe
Also Not an Admin, but closer than devoltz
Posts: 1655
Joined: February 14th, 2018, 5:35 am
Title: Just Another S.Mod
Been thanked: 6 times

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by nuzamacuxe »

You can't see slots nor start the map.
Glenntikowp
Newcomer
Posts: 11
Joined: March 27th, 2019, 1:12 pm

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by Glenntikowp »

what version warcraft 3 dz163 use now ? is it 1.26a ?
DioMUDA
Newcomer
Posts: 1
Joined: April 25th, 2020, 6:51 pm

Re: [GUIDE] How to make Dz163 Map Playable On Another Plafor

Post by DioMUDA »

Umm how to do in war3map.j it
You do not have the required permissions to view the files attached to this post.