Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.41 KB | None | 0 0
  1. #Serverside common
  2. 1. Otwierasz item_lenght.h
  3.  
  4. Szukasz:
  5. ITEM_BELT, //34 벨트
  6.  
  7. Dodajesz pod tym:
  8. ITEM_NEW, //35
  9.  
  10. 2. Otwierasz lenght.h
  11.  
  12. Szukasz:
  13. WEAR_BELT, // 23 : 신규 벨트슬롯
  14.  
  15. Dodajesz pod tym:
  16. WEAR_NEW = 27,
  17.  
  18. #Serverside game
  19.  
  20. 1. Otwierasz char_item.cpp
  21.  
  22. Szukasz:
  23. case ITEM_BELT: // 신규 벨트 아이템
  24.  
  25. Dodajesz pod tym:
  26. case ITEM_NEW:
  27.  
  28. 2. Otwierasz item.cpp
  29.  
  30. Szukasz funkcji:
  31.  
  32. int CItem::FindEquipCell(LPCHARACTER ch, int iCandidateCell)
  33.  
  34. Zaraz na początku znajdziesz taką linijke:
  35.  
  36. if ((0 == GetWearFlag() || ITEM_TOTEM == GetType()) && ITEM_COSTUME != GetType() && ITEM_DS != GetType() && ITEM_SPECIAL_DS != GetType() && ITEM_RING != GetType() && ITEM_BELT != GetType())
  37. return -1;
  38.  
  39. Dodajesz tam nasz nowy typ przedmiotu, by wyglądało to tak:
  40.  
  41. if ((0 == GetWearFlag() || ITEM_TOTEM == GetType()) && ITEM_COSTUME != GetType() && ITEM_DS != GetType() && ITEM_SPECIAL_DS != GetType() && ITEM_RING != GetType() && ITEM_BELT != GetType() && ITEM_NEW != GetType())
  42. return -1;
  43.  
  44.  
  45. 3. Zjeżdzasz niżej w tej samej funkcji i szukasz:
  46.  
  47. else if (GetType() == ITEM_BELT)
  48. return WEAR_BELT;
  49.  
  50. I dodajesz pod tym:
  51.  
  52. else if (GetType() == ITEM_NEW)
  53. return WEAR_NEW;
  54.  
  55. 4. Szukasz funkcji:
  56.  
  57. bool CItem::IsEquipable() const
  58.  
  59. I dodajesz tam nasz nowy typ przedmiotu by wyglądało to tak:
  60.  
  61. bool CItem::IsEquipable() const
  62. {
  63. switch (this->GetType())
  64. {
  65. case ITEM_COSTUME:
  66. case ITEM_ARMOR:
  67. case ITEM_WEAPON:
  68. case ITEM_ROD:
  69. case ITEM_PICK:
  70. case ITEM_UNIQUE:
  71. case ITEM_DS:
  72. case ITEM_SPECIAL_DS:
  73. case ITEM_RING:
  74. case ITEM_NEW: /// NASZ NOWY PRZEDMIOT JEST TUTAJ :)
  75. case ITEM_BELT:
  76. return true;
  77. }
  78.  
  79. return false;
  80. }
  81.  
  82. #Serverside db
  83.  
  84. 1. Otwierasz ProtoReader.cpp
  85.  
  86. Szukasz funkcji:
  87.  
  88. int get_Item_Type_Value(string inputString)
  89.  
  90. I dodajesz tam nasz nowy tym przedmiotu by wyglądało to tak:
  91.  
  92. int get_Item_Type_Value(string inputString)
  93. {
  94. string arType[] = {"ITEM_NONE", "ITEM_WEAPON",
  95. "ITEM_ARMOR", "ITEM_USE",
  96. "ITEM_AUTOUSE", "ITEM_MATERIAL",
  97. "ITEM_SPECIAL", "ITEM_TOOL",
  98. "ITEM_LOTTERY", "ITEM_ELK", //10개
  99.  
  100. "ITEM_METIN", "ITEM_CONTAINER",
  101. "ITEM_FISH", "ITEM_ROD",
  102. "ITEM_RESOURCE", "ITEM_CAMPFIRE",
  103. "ITEM_UNIQUE", "ITEM_SKILLBOOK",
  104. "ITEM_QUEST", "ITEM_POLYMORPH", //20개
  105.  
  106. "ITEM_TREASURE_BOX", "ITEM_TREASURE_KEY",
  107. "ITEM_SKILLFORGET", "ITEM_GIFTBOX",
  108. "ITEM_PICK", "ITEM_HAIR",
  109. "ITEM_TOTEM", "ITEM_BLEND",
  110. "ITEM_COSTUME", "ITEM_DS", //30개
  111.  
  112. "ITEM_SPECIAL_DS", "ITEM_EXTRACT",
  113. "ITEM_SECONDARY_COIN", //33개
  114.  
  115. "ITEM_RING",
  116. "ITEM_BELT", //35개
  117. "ITEM_NEW", /// TUTAJ JEST NASZ NOWY TYP PRZEDMIOTU :)
  118.  
  119. };
  120.  
  121. #Clientside Userinterface
  122.  
  123. 1. Otwierasz GameType.h
  124.  
  125. Szukasz:
  126. const DWORD c_New_Equipment_Start = c_Equipment_Start + 32; //(LICZBA MOŻE BYĆ INNA)
  127.  
  128. w zależności od tego jaką masz liczbę na końcu wersu, zwiększasz ją o 1, czyli jeżeli masz np 19 to zwiększasz do 20.
  129.  
  130. Szukasz:
  131.  
  132. const DWORD c_New_Equipment_Count = 5; // TO SAMO CO WYŻEJ, ZWIĘKSZASZ O 1
  133.  
  134. Szukasz:
  135.  
  136. const DWORD c_Equipment_Belt = c_New_Equipment_Start + 2;
  137.  
  138. I dodajesz pod tym:
  139. const DWORD c_Equipment_New = c_New_Equipment_Start + 3;
  140.  
  141. 2. Otwierasz PythonItemModule.cpp
  142.  
  143. Szukasz:
  144. PyModule_AddIntConstant(poModule, "EQUIPMENT_BELT", c_Equipment_Belt);
  145.  
  146. Dodajesz pod tym:
  147. PyModule_AddIntConstant(poModule, "EQUIPMENT_NEW", c_Equipment_New);
  148.  
  149. Szukasz:
  150. PyModule_AddIntConstant(poModule, "ITEM_TYPE_BELT", CItemData::ITEM_TYPE_BELT);
  151.  
  152. Dodajesz pod tym:
  153. PyModule_AddIntConstant(poModule, "ITEM_TYPE_NEW", CItemData::ITEM_TYPE_NEW);
  154.  
  155.  
  156. #Clientside Gamelib
  157.  
  158. 1. Otwierasz ItemData.h
  159.  
  160. Szukasz:
  161. ITEM_TYPE_BELT,
  162.  
  163. Dodajesz pod tym:
  164. ITEM_TYPE_NEW,
  165.  
  166.  
  167. #Clientside locale/pl/ui/inventorywindow.py
  168.  
  169. 1. Szukasz:
  170.  
  171. {"index":item.EQUIPMENT_BELT, "x":39, "y":106, "width":32, "height":32},
  172.  
  173. I dodajesz nowy slot na ten sam wzór w zależności gdzie chcesz, by przedmiot się zakładał.
  174. Ja przykładowo mam to ustawione tak:
  175.  
  176. {"index":item.EQUIPMENT_NEW, "x":114, "y":106, "width":32, "height":32},
  177.  
  178. I przedmiot będzie w tym przypadku zakładać się po prawej stronie ekwipunku (nad przyciskiem od smoczej alchemii)
  179.  
  180. #Clientside ymir work/ui/equipment_bg_with_ring.dds albo equipment_bg_without_ring.dds w zależności który używasz
  181.  
  182. W tym pliku dodajesz graficznie nowy slot (jego obrazek).
  183.  
  184.  
  185. #Clientside root/uitooltip.py
  186.  
  187. Pod ifem
  188.  
  189. elif item.ITEM_TYPE_RING == itemType:
  190.  
  191. dodajemy
  192.  
  193. elif item.ITEM_TYPE_NEW == itemType:
  194. self.__AppendLimitInformation()
  195. self.__AppendAffectInformation()
  196. self.__AppendAttributeInformation(attrSlot)
  197. bHasRealtimeFlag = 0
  198. for i in xrange(item.LIMIT_MAX_NUM):
  199. (limitType, limitValue) = item.GetLimit(i)
  200. if item.LIMIT_REAL_TIME == limitType:
  201. bHasRealtimeFlag = 1
  202.  
  203. if 1 == bHasRealtimeFlag:
  204. self.AppendMallItemLastTime(metinSlot[0])
  205.  
  206. ma wyglądać to tak:
  207.  
  208.  
  209. Dzięki temu nasz przedmiot będzie wyświetlał wszystkie bonusy i limity czasowe, poziomowe itd.
  210. Bonusy i limity oczywiście nadajemy w bazie tak jak w przypadku biżuterii czy pasów.
  211.  
  212. Pamiętajcie, by edytować również plik dump_proto oraz skrypt sql > txt od item_proto, o ile z niego oczywiście korzystacie.
  213.  
  214. Type przedmiotu w tym przypadku w bazie to będzie 36
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement