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

模拟服务器

开发平台:

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. ;                      VALKYRIE PROJECT
  40. ;                        SHOP LOAD !
  41. ;////////////////////////////////////////////////////////////////////////////////////
  42. V_CShop_LoadShop Proto :Dword, :Dword
  43. V_CShop_SetItem Proto :Dword, :Dword, :Dword, :Dword, :Dword, :Dword, :Dword
  44. ;-----------------------------------------------------------------
  45. ; Structure that contain most of the item options
  46. ;-----------------------------------------------------------------
  47. .Const
  48. TotalShopsVariable equ 7
  49. .Data?
  50. .Data
  51. ;///////////////////////////////////////////////////////
  52. ;Dont changes the 0, 0 this is aligment
  53. ;so i can use a loop system for load them
  54. ;///////////////////////////////////////////////////////
  55. szAlignShop DB ".DataGamePlayShopsShopX.txt", 0, 0 ;ITS NOT A SHOP JUST A STRING FOR GET SIZEOF
  56. szShops DB ".DataGamePlayShopsShop0.txt", 0, 0
  57.         DB ".DataGamePlayShopsShop1.txt", 0, 0
  58.         DB ".DataGamePlayShopsShop2.txt", 0, 0
  59.         DB ".DataGamePlayShopsShop3.txt", 0, 0
  60.         DB ".DataGamePlayShopsShop4.txt", 0, 0
  61.         DB ".DataGamePlayShopsShop5.txt", 0, 0
  62.         DB ".DataGamePlayShopsShop6.txt", 0, 0
  63.         DB ".DataGamePlayShopsShop7.txt", 0, 0
  64.         DB ".DataGamePlayShopsShop8.txt", 0, 0
  65.         DB ".DataGamePlayShopsShop9.txt", 0, 0
  66.         DB ".DataGamePlayShopsShop10.txt", 0
  67.         DB ".DataGamePlayShopsShop11.txt", 0
  68.         DB ".DataGamePlayShopsShop12.txt", 0
  69.         DB ".DataGamePlayShopsShop13.txt", 0
  70.         DB ".DataGamePlayShopsShop14.txt", 0
  71.         DB ".DataGamePlayShopsShop15.txt", 0
  72.         DB ".DataGamePlayShopsShop16.txt", 0
  73.         DB ".DataGamePlayShopsShop17.txt", 0
  74.         DB ".DataGamePlayShopsShop18.txt", 0
  75.         DB ".DataGamePlayShopsShop19.txt", 0
  76.         DB ".DataGamePlayShopsShop20.txt", 0
  77. .Code
  78. V_Shop_LoadAll Proc
  79. local LoopCounter:Dword
  80. And LoopCounter, 0
  81. .Repeat
  82.   lea edx, szShops
  83.   mov eax, LoopCounter
  84.   imul eax, eax, SizeOf szAlignShop
  85.   add edx, eax
  86.   invoke V_CShop_LoadShop, edx, LoopCounter
  87.   add LoopCounter, 1
  88. .Until (LoopCounter == MAX_SHOPS)
  89. Ret
  90. V_Shop_LoadAll EndP
  91. V_CShop_LoadShop Proc AddrShop:Dword, ShopNumber:Dword
  92. local PlaceHolder[TotalShopsVariable]:Dword ;ItemType, ItemIndex, Level, Dur, Luck, Skill, JOL
  93. local MyStruct:Dword
  94. local LoopCounter:Dword
  95. local pBufferSpace:Dword
  96. local FilePosition:Dword
  97. local BytesReaded:Dword
  98. local StructFile:WIN32_FILE_ATTRIBUTE_DATA
  99. assume edx:ptr SHOP_STRUCT
  100. ;-------------------------------
  101. ;Clean locals
  102. ;-------------------------------
  103. And FilePosition, 0
  104. And LoopCounter, 0
  105. ;-------------------------------
  106. ;Load file into memory
  107. ;-------------------------------
  108. lea edx, StructFile
  109. GetFileLength AddrShop, edx
  110. mov eax, StructFile.nFileSizeLow
  111. fastalloc eax, 1 ;alloc space for file
  112. mov pBufferSpace, eax
  113. lea ecx, BytesReaded
  114. ReadThisFile AddrShop, pBufferSpace, ecx ;read of file and handles the close
  115. mov ecx, StructFile.nFileSizeLow
  116. add eax, ecx
  117. mov dword ptr [eax], 0 ;Append to 00 byte in the end of file for prevent bugs
  118. xor ecx, ecx
  119. ;-------------------------------
  120. ;Initialise Loop
  121. ;-------------------------------
  122. .While (ecx != -1)
  123. ;-------------------------------
  124. ;Load all variables
  125. ;-------------------------------
  126.  lea eax, PlaceHolder
  127.  xor ebx, ebx
  128. .Repeat
  129.   push eax
  130.   push ebx ;Save EBX
  131.   invoke GetToken, pBufferSpace, ecx, NULL
  132.   .If (edx == 1)
  133.    xor eax, eax
  134.    .Break
  135.   .Endif
  136.   mov FilePosition, ecx
  137.   mov ecx, edx ;Avoid bugs
  138.   mov edx, eax ;Avoid bugs
  139.   pop ebx
  140.   pop eax
  141.   mov [eax + ebx], edx
  142.   add ebx, 4
  143.   add LoopCounter, 1
  144.   mov ecx, FilePosition
  145. .Until (LoopCounter == TotalShopsVariable)
  146. mov LoopCounter, 0
  147. mov edx, ShopNumber
  148. lea eax, pObjShops
  149. imul edx, SizeOf SHOP_STRUCT
  150. add edx, eax
  151. mov MyStruct, edx
  152. mov eax, [edx].ItemCounter
  153. imul eax, eax, SizeOf ItemStruct
  154. add edx, eax
  155. mov FilePosition, ecx
  156. invoke V_CShop_SetItem, PlaceHolder, PlaceHolder + 4, PlaceHolder + 8, PlaceHolder + 0Ch, PlaceHolder + 10h, 
  157.                         PlaceHolder + 14h, PlaceHolder + 18h
  158. .If (eax == 0)
  159.   RGB 255, 64, 64 ;Red Collor
  160.   Mov Edx, Eax
  161.   Invoke vprint, $CTA0("CShopLoad:] ERROR ON [%s] WHILE LOADING ITEM [%d] [%d]"), Edx, 3, AddrShop, PlaceHolder, PlaceHolder + 4
  162.   mov ecx, FilePosition
  163.   .Continue
  164. .Endif
  165. mov edx, MyStruct
  166. add [edx].ItemCounter, 1
  167. .If ([edx].ItemCounter > MAX_SHOP_ITEMS)
  168.   RGB 255, 64, 64 ;Red Collor
  169.   Mov Edx, Eax
  170.   Invoke vprint, $CTA0("CShopLoad:] ERROR ON [%s] CANT LOAD MORE ITEMS"), Edx, 1, AddrShop
  171.   .Break
  172. .ElseIf ([edx].ItemCounter == MAX_SHOP_ITEMS)
  173.   mov eax, 1
  174.   .Break
  175. .Endif
  176. mov ecx, FilePosition
  177. invoke GetString, pBufferSpace, ecx ;Try to search for "end" string
  178. invoke szCmp, $CTA0("end"), Addr StringToken ;If end string
  179. .If (eax != 0) ;Founded
  180.  mov eax, 1
  181.  .Break
  182. .Endif
  183. mov ecx, FilePosition
  184. .Endw
  185. .If (eax == 0)
  186.     RGB 255, 64, 64 ;Red Collor
  187. Mov Edx, Eax
  188. Invoke vprint, $CTA0("CShopLoad:] UNKNOWN ERROR, ON SHOP :  [%s]"), Edx, 1, AddrShop
  189. .Else
  190.     RGB 24, 116, 205 ;Light blue
  191.     mov ecx, eax
  192.     mov edx, MyStruct
  193. Invoke vprint, $CTA0("CShopLoad:] Operation Successful Shop [%s] loaded with [%d] Items"), Ecx, 2, AddrShop, [edx].ItemCounter
  194.     add TotalShopsLoaded, 1
  195. .Endif
  196. FastDeAlloc pBufferSpace, NULL, 0 ;Free the heap when we dont use it anymore
  197. assume edx:NOTHING
  198. Ret
  199. V_CShop_LoadShop EndP