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

模拟服务器

开发平台:

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. .Const
  39. .Data?
  40. .Data
  41. szGates DB ".DataGamePlayGate.txt", 0
  42. .Code
  43. V_Gate_Init Proc
  44. assume edx:ptr GATE_STRUCT
  45. lea edx, pObjGates
  46. xor ecx, ecx
  47. .Repeat
  48.  mov [edx].GateIndex, 0FFh ;-1
  49.  mov [edx].LvlRequired, 0
  50.  add edx, SizeOf GATE_STRUCT
  51.  add ecx, 1
  52. .Until (ecx == MAX_GATES)
  53. assume edx:NOTHING
  54. Ret
  55. V_Gate_Init EndP
  56. V_Gate_Load Proc
  57. local pThisObj:Dword
  58. local LoopCounter:Dword
  59. local FilePosition:Dword
  60. local pBufferSpace:Dword
  61. local BytesReaded:Dword
  62. local StructFile:WIN32_FILE_ATTRIBUTE_DATA
  63. .const
  64. TotalVariablesForGates equ 10
  65. .code
  66. ;------------------------------------------------
  67. ; Clean local variables that are needed
  68. ;------------------------------------------------
  69. And LoopCounter, 0
  70. call V_Gate_Init
  71. ;-------------------------------
  72. ;Load file into memory
  73. ;-------------------------------
  74. lea edx, StructFile
  75. GetFileLength addr szGates, edx
  76. mov eax, StructFile.nFileSizeLow
  77. fastalloc eax, 1 ;alloc space for file
  78. mov pBufferSpace, eax
  79. lea edx, StructFile
  80. lea ecx, BytesReaded
  81. ReadThisFile Addr szGates, pBufferSpace, ecx ;read of file and handles the close
  82. mov ecx, StructFile.nFileSizeLow
  83. add eax, ecx
  84. mov dword ptr [eax], 0 ;Append to 00 byte in the end of file for prevent bugs
  85. xor ecx, ecx
  86. .While (ecx != -1) ;Infinite loop
  87.   pObj TotalGatesLoaded, SizeOf GATE_STRUCT, pObjGates
  88.   mov pThisObj, eax
  89.   xor ebx, ebx
  90.   .Repeat
  91.     push ebx
  92.     invoke GetToken, pBufferSpace, ecx, NULL
  93.     pop ebx
  94.     .If (edx == 1)
  95.       xor eax, eax
  96.       .Break
  97.     .Endif
  98.     mov edx, pThisObj
  99.     .if (LoopCounter == 9) ;Variable LvlRequirement
  100.       mov word ptr [edx + ebx], Ax
  101.       add ebx, 2
  102.     .else
  103.       mov [edx + ebx], Al ;Save all Gates variables
  104.       add ebx, 1
  105.     .endif
  106.     Add LoopCounter, 1
  107.   .Until (LoopCounter == TotalVariablesForGates)
  108.   mov LoopCounter, 0
  109.   add TotalGatesLoaded, 1
  110.   .if (TotalGatesLoaded > MAX_GATES)
  111.     RGB 255, 64, 64 ;Red Collor
  112. Mov Edx, Eax
  113. Invoke vprint, $CTA0("GateSystem:] ERROR YOU CANT BLOCK MORE THAN :  [%d] GATES"), Edx, 1, MAX_GATES
  114.     mov eax, 1
  115.     .Break
  116.   .endif
  117.   mov FilePosition, ecx
  118.   invoke GetString, pBufferSpace, ecx ;Search for string "End"
  119.   push ecx
  120.   invoke szCmp, $CTA0("end"), Addr StringToken
  121.   pop ecx
  122.   .if (eax != 0)
  123.     mov eax, 1
  124.     .Break
  125.   .Endif
  126.   mov ecx, FilePosition
  127. .Endw
  128. .If (eax == 0)
  129.   RGB 255, 64, 64 ;Red Collor
  130.   Mov Edx, Eax
  131.   Invoke vprint, $CTA0("GateSystem:] UNKNOWN ERROR, LAST GATE LOADED :  [%d]"), Edx, 1, TotalGatesLoaded
  132. .Else
  133.   RGB 24, 116, 205 ;Light blue
  134.   Mov Edx, Eax
  135.   Invoke vprint, $CTA0("GateSystem:] Operation Successful total gates loaded :  [%d]"), Edx, 1, TotalGatesLoaded
  136. .Endif
  137. FastDeAlloc pBufferSpace, NULL, 0 ;Free the heap when we dont use it anymore
  138. Ret
  139. V_Gate_Load EndP