V-MapActions.asm
上传用户:santakups8
上传日期:2021-03-23
资源大小:544k
文件大小:6k
源码类别:

模拟服务器

开发平台:

Asm

  1. ;EasyCodeName=Module1,1
  2. ;-----------------------------------------------------------------------------------
  3. ;    VeMU
  4. ;    Its a package that allows the user to set his own server of the game
  5. ;    "MuOnline", this is not an emulator since i am not "emulating"
  6. ;    what the actual games does, i am "creating" a method for set a Server
  7. ;    of this Game.
  8. ;
  9. ;    Copyright (C) 2010  Felipe Ya馿z
  10. ;
  11. ;    This program is free software: you can redistribute it and/or modify
  12. ;    it under the terms of the GNU General Public License as published by
  13. ;    the Free Software Foundation, either version 3 of the License, or
  14. ;    (at your option) any later version.
  15. ;
  16. ;    This program is distributed in the hope that it will be useful,
  17. ;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  18. ;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19. ;    GNU General Public License for more details.
  20. ;
  21. ;    You should have received a copy of the GNU General Public License
  22. ;    along with this program.  If not, see http://www.gnu.org/licenses/.
  23. ;-----------------------------------------------------------------------------------
  24. ;-----------------------------------------------------------------------------------
  25. ;                        -----------------
  26. ;                             Coded     /
  27. ;                              By      /
  28. ;                           -={FeN$x)=-
  29. ;                         /  Felipe Y.  
  30. ;                        /               
  31. ;                        -----------------
  32. ; Programming Lang: ASM
  33. ; Country: Chile
  34. ;              My respect for all those who lost their lifes
  35. ;              In the earthquake of my country...
  36. ;              Let god take their spirits home...
  37. ;-----------------------------------------------------------------------------------
  38. ;////////////////////////////////////////////////////////////////////////////////////
  39. ;                       VeMU Project
  40. ;                       Maps Actions !
  41. ;////////////////////////////////////////////////////////////////////////////////////
  42. .Const
  43. .Data?
  44. .Data
  45. .Code
  46. ;////////////////////////////////////////
  47. ;Initialise specific data
  48. ;for 57 maps support, value changeable
  49. ;////////////////////////////////////////
  50. V_CMap_InitMaps Proc
  51. Invoke V_VectorCreator, addr pMapObjSpace, Offset V_CMap_SetDimensions, SizeOf MapClass, MAPLIMIT ;Vector constructor
  52. call V_CMap_LoadAll ;Load all maps
  53. Ret
  54. V_CMap_InitMaps EndP
  55. ;////////////////////////////////////////
  56. ;Check if map is valid or dont
  57. ;///////////////////////////////////////
  58. V_CMap_CheckValidMap Proc MapNumber:Dword
  59. .if (MapNumber < 0)
  60.   xor eax, eax
  61. .elseif (MapNumber > MAPLIMIT)
  62.   xor eax, eax
  63. .else
  64.  mov eax, 1
  65. .endif
  66.  Ret
  67. V_CMap_CheckValidMap EndP
  68. ;////////////////////////////////////////
  69. ;Initialise items for Maps
  70. ;///////////////////////////////////////
  71. V_CMap_InitItems Proc
  72.  Local MyStruct:DWord
  73.  Assume Ecx:Ptr CMAPITEM
  74.  Mov MyStruct, Ecx
  75.  Call V_CItem_Clear ;clear struct of ItemStruct for maps
  76.  Mov [Ecx].VpCounter, 0 ;clean view port counter
  77.  Mov [Ecx].State, 0
  78.  Invoke V_ZeroBuff, addr [Ecx].VpPlayer, SizeOf CMAPITEM.VpPlayer ;clean the whole array
  79.  Assume Ecx:Nothing
  80.  Ret
  81. V_CMap_InitItems EndP
  82. ;////////////////////////////////////////////////////////
  83. ;Set map dimensions into all the
  84. ;MapClass struct, also set the Spawn
  85. ;Points for some maps.
  86. ;This meaby is removed in some future versions.
  87. ;////////////////////////////////////////////////////////
  88. V_CMap_SetDimensions Proc
  89. Local MyStruct:DWord
  90. Local Dir[SizeOf PATHDIMENSION.Dir]:Byte
  91. Local pPATH_struct:DWord
  92.  Mov MyStruct, Ecx
  93.  Assume Ecx:Ptr MapClass
  94.  Invoke V_VectorCreator, addr [Ecx].ItemMaps, Offset V_CMap_InitItems, SizeOf CMAPITEM, MAXITEMS_INMAP
  95.  fastalloc SizeOf PATHDIMENSION, 1
  96.  Mov pPATH_struct, Eax
  97.  .If (Eax == 0)
  98.      Invoke MessageBox, NULL, $CTA0("CMapInit:] CANT_ALLOCATE_MEMORY"), $CTA0("CRITICAL ERROR"), MB_OK
  99.  .Else
  100.  Invoke V_ZeroBuff, Addr Dir, SizeOf Dir
  101. ;////////////////////////////////////
  102. ;SET DIRECTION PARAMETERS
  103. ;I AVOID THE 00 BYTES
  104. ;CAUSED I ALREADY USE V_ZeroBuff
  105. ;////////////////////////////////////
  106.  Mov Dir, -1
  107.  Mov Dir + 4, -1
  108.  Mov Dir + 0CH, -1
  109.  Mov Dir + 10H, 1
  110.  Mov Dir + 14H, -1
  111.  Mov Dir + 18H, 1
  112.  Mov Dir + 20H, 1
  113.  Mov Dir + 24H, 1
  114.  Mov Dir + 2CH, 1
  115.  Mov Dir + 30H, -1
  116.  Mov Dir + 34H, 1
  117.  Mov Dir + 38H, -1
  118.  Mov Edx, pPATH_struct
  119.  Assume Edx:Ptr PATHDIMENSION
  120.  Invoke MemCopy, Addr Dir, addr [Edx].Dir, SizeOf PATHDIMENSION.Dir
  121.  Mov Edx, pPATH_struct
  122.  Mov Ecx, MyStruct
  123.  Mov [Ecx].pPath, Edx ;save pointer of PATHDIMENSION struct into pPath of MapClass struct (a little confusing isnt? =P)
  124.  Mov [Ecx].gWidth, 0
  125.  Mov [Ecx].gHeight, 0
  126. ;////////////////////////////////////
  127. ;SET SOME DIMENSION MAPS
  128. ;USING VSETRECT MACROS
  129. ;////////////////////////////////////
  130.  VSetRect 130, 116, 151, 137, addr [Ecx].RegenArea ;Terrain1.att
  131.  VSetRect 106, 236, 112, 243, addr [Ecx].RegenArea + (SizeOf RECT) ;Terrain2.att
  132.  VSetRect 197, 35, 213, 50, addr [Ecx].RegenArea + (SizeOf RECT * 2) ;Terrain3.att
  133.  VSetRect 174, 101, 187, 125, addr [Ecx].RegenArea + (SizeOf RECT * 3) ;Terrain4.att
  134.  VSetRect 201, 70, 213, 81, addr [Ecx].RegenArea + (SizeOf RECT * 4) ;Terrain5.att
  135.  VSetRect 89, 135, 90, 136, addr [Ecx].RegenArea + (SizeOf RECT * 5) ;Terrain6.att
  136.  VSetRect 89, 135, 90, 136, addr [Ecx].RegenArea + (SizeOf RECT * 6) ;Terrain7.att
  137.  VSetRect 14, 11, 27, 23, addr [Ecx].RegenArea + (SizeOf RECT * 7) ;Terrain8.att
  138.  VSetRect 187, 54, 203, 69, addr [Ecx].RegenArea + (SizeOf RECT * 8) ;Terrain9.att
  139.  VSetRect 82, 8, 87, 14, addr [Ecx].RegenArea + (SizeOf RECT * 33) ;Terrain34.att
  140.  VSetRect 133, 41, 140, 44, addr [Ecx].RegenArea + (SizeOf RECT * 34) ;Terrain35.att
  141.  VSetRect 40, 214, 43, 224, addr [Ecx].RegenArea + (SizeOf RECT * 45) ;Terrain52.att ;Elbeland
  142.  .EndIf
  143.  Assume Edx:Nothing
  144.  Assume Ecx:Nothing
  145.  Ret
  146. V_CMap_SetDimensions Endp