diff --git a/conf/msg_conf/map_msg.conf b/conf/msg_conf/map_msg.conf index 0d94fe9167..2bd6bfd5c5 100644 --- a/conf/msg_conf/map_msg.conf +++ b/conf/msg_conf/map_msg.conf @@ -179,7 +179,7 @@ 166: No item has been refined. 167: 1 item has been refined. 168: %d items have been refined. -169: The item (%hu: '%s') is not equipable. +169: The item (%u: '%s') is not equipable. 170: The item is not equipable. 171: %d - void //172: You replace previous memo position %d - %s (%d,%d). @@ -551,7 +551,7 @@ // Trade Spoof Messages 538: Hack on trade: character '%s' (account: %d) try to trade more items that he has. -539: This player has %d of a kind of item (id: %hu), and tried to trade %d of them. +539: This player has %d of a kind of item (id: %u), and tried to trade %d of them. 540: This player has been definitivly blocked. // Rare Items Drop/Steal announce @@ -739,14 +739,14 @@ 707: You are VIP until: %s 708: The player is now VIP until: %s -709: Item %hu has been removed from your inventory. -710: Item %hu has been removed from your cart. -711: Item %hu has been removed from your storage. +709: Item %u has been removed from your inventory. +710: Item %u has been removed from your cart. +711: Item %u has been removed from your storage. // Item shop -712: You do not have enough %s (%hu). +712: You do not have enough %s (%u). 713: You do not have enough '%s'. -714: Item Shop List: %s (%hu) +714: Item Shop List: %s (%u) 715: Point Shop List: '%s' 716: Your '%s' is now: %d @@ -1235,9 +1235,9 @@ 1189: Item not found. 1190: You're already autolooting this item. 1191: Your autolootitem list is full. Remove some items first with @autolootid -. -1192: Autolooting item: '%s'/'%s' {%hu} +1192: Autolooting item: '%s'/'%s' {%u} 1193: You're currently not autolooting this item. -1194: Removed item: '%s'/'%s' {%hu} from your autolootitem list. +1194: Removed item: '%s'/'%s' {%u} from your autolootitem list. 1195: You can have %d items on your autolootitem list. 1196: To add an item to the list, use "@alootid +". To remove an item, use "@alootid -". 1197: "@alootid reset" will clear your autolootitem list. @@ -1386,7 +1386,7 @@ // @iteminfo 1276: Please enter an item name/ID (usage: @ii/@iteminfo ). -1277: Item: '%s'/'%s'[%d] (%hu) Type: %s | Extra Effect: %s +1277: Item: '%s'/'%s'[%d] (%u) Type: %s | Extra Effect: %s 1278: None 1279: With script 1280: NPC Buy:%dz, Sell:%dz | Weight: %.1f @@ -1396,7 +1396,7 @@ // @whodrops 1284: Please enter item name/ID (usage: @whodrops ). -1285: Item: '%s'[%d] (ID:%hu) +1285: Item: '%s'[%d] (ID: %u) 1286: - Item is not dropped by mobs. 1287: - Common mobs with highest drop chance (only max %d are listed): diff --git a/conf/msg_conf/map_msg_chn.conf b/conf/msg_conf/map_msg_chn.conf index f027b2aeeb..dddf9b219d 100644 --- a/conf/msg_conf/map_msg_chn.conf +++ b/conf/msg_conf/map_msg_chn.conf @@ -183,7 +183,7 @@ 166: 沒有道具被精練 167: 1 個道具已被精練 168: %d 個道具已被精練 -169: 此物品 (%d '%s')不是裝備 +169: 此物品 (%u: '%s')不是裝備 170: 此物品不是裝備 171: %d - 無 //172: You replace previous memo position %d - %s (%d,%d). @@ -500,7 +500,7 @@ 537: 玩家'%s' (account: %d) 試圖使用外掛(它試圖偵測假的怪物) // Trade Spoof Messages 538: 危險交易: 玩家 '%s' (account: %d) 嘗試交易超過他所有的數量 -539: 這個使用者有%d 個物品(物品id: %d), 嘗試交易%d 個 +539: 這個使用者有%d 個物品(物品id: %u), 嘗試交易%d 個 540: 這個使用者已經被伺服器屏蔽 // Rare Items Drop/Steal announce 541: '%s' 取得 %s's %s (機率為: %%%0.02f) @@ -1042,9 +1042,9 @@ 1189: 未找到此道具。 1190: 此道具已在自動檢取列表中了。 1191: 自動檢取列表已經滿了,移除某些道具方法 @autolootid -<道具名稱或ID>。 -1192: 自動檢取的道具為: '%s'/'%s' {%d}。 +1192: 自動檢取的道具為: '%s'/'%s' {%u}。 1193: 目前你尚未將此道具列入自動檢取項目中。 -1194: 已從自動檢取列表中移除道具: '%s'/'%s' {%d}。 +1194: 已從自動檢取列表中移除道具: '%s'/'%s' {%u}。 1195: 在自動檢取列表你最多能有 %d 個檢取的項目。 1196: 如要在自動檢取項目列表增加檢取道具,使用 "@alootid +<道具名稱或ID>", 如要從列表移除道具 "@alootid -<道具名稱或ID>"。 1197: "@alootid reset" 將會清空所有自動檢取項目列表。 @@ -1193,7 +1193,7 @@ // @iteminfo 1276: 請輸入 物品名稱/ID (用法: @ii/@iteminfo <物品名稱/ID>). -1277: 物品: '%s'/'%s'[%d] (%d) 類型: %s | 額外效果: %s +1277: 物品: '%s'/'%s'[%d] (%u) 類型: %s | 額外效果: %s 1278: None 1279: With script 1280: NPC 買價:%dz, 賣價:%dz | 重量: %.1f diff --git a/conf/msg_conf/map_msg_frn.conf b/conf/msg_conf/map_msg_frn.conf index e4c05ba42b..50b48fd980 100644 --- a/conf/msg_conf/map_msg_frn.conf +++ b/conf/msg_conf/map_msg_frn.conf @@ -183,7 +183,7 @@ 166: Aucun quipement n'a t raffin. 167: 1 objet raffin. 168: %d objets raffins. -169: L'objet (%hu: '%s') ne peut pas s'quiper. +169: L'objet (%u: '%s') ne peut pas s'quiper. 170: L'objet ne peut pas s'quiper. 171: %d - void //172: You replace previous memo position %d - %s (%d,%d). @@ -512,7 +512,7 @@ 537: Personnage '%s' (compte: %d) essaie d'utiliser un bot (il essaie de dtecter un faux mob). // Trade Spoof Messages 538: Hack sur change: Personnage '%s' (account: %d) essaie d'changer plus d'Objets qu'il ne possde. -539: Ce Joueur a %d d'une sorte d'Objet (id: %hu), et tente d'en changer %d. +539: Ce Joueur a %d d'une sorte d'Objet (id: %u), et tente d'en changer %d. 540: Joueur dfinitivement bloqu. // Rare Items Drop/Steal announce 541: '%s' obtient de %s l'Objet %s (chance: %0.02f%%) @@ -1055,9 +1055,9 @@ 1189: Objet trouvable. 1190: Vous ramasser dj automatiquement cet Objet. 1191: Votre liste d'Objet ramasser est pleine. Supprimez des Objets avec @autolootid -. -1192: Ramassage automatique de: '%s'/'%s' {%hu} +1192: Ramassage automatique de: '%s'/'%s' {%u} 1193: Actuellement vous ne ramassez pas automatiquement cet Objet. -1194: Onjet supprim: '%s'/'%s' {%hu} de votre liste de 'autolootitem'. +1194: Onjet supprim: '%s'/'%s' {%u} de votre liste de 'autolootitem'. 1195: Vous pouvez avoir %d Objets dans votre liste d'Objets ramasss automatiquement avec 'autolootitem'. 1196: Pour ajouter un Objet votre liste, utilisez "@alootid +". Pour supprimer un Objet de la liste, utilisez "@alootid -". 1197: "@alootid reset" videra votre liste d'Objets ramasss automatiquement avec 'autolootitem'. @@ -1206,7 +1206,7 @@ // @iteminfo 1276: Entrez un nom/ID d'objet (usage: @ii/@iteminfo ). -1277: Item: '%s'/'%s'[%d] (%hu) Type: %s | Extra Effect: %s +1277: Item: '%s'/'%s'[%d] (%u) Type: %s | Extra Effect: %s 1278: Aucun 1279: Avec script 1280: NPC Achet:%dz, Vendu:%dz | Poids: %.1f diff --git a/conf/msg_conf/map_msg_grm.conf b/conf/msg_conf/map_msg_grm.conf index b6d4bc69b2..691b0c0cd3 100644 --- a/conf/msg_conf/map_msg_grm.conf +++ b/conf/msg_conf/map_msg_grm.conf @@ -182,7 +182,7 @@ 166: Kein Items sind refined. 167: 1 Item ist refined. 168: %d Items sind refined. -169: Das Item (%d: '%s') ist nicht ausrüstbar. +169: Das Item (%u: '%s') ist nicht ausrüstbar. 170: Das Item ist nicht ausrüstbar. 171: %d - ungültig //172: You replace previous memo position %d - %s (%d,%d). @@ -438,7 +438,7 @@ 537: Charakter '%s' (account: %d) Versucht einen Bot zu benutzen (Es versucht einen fake Mob zu entlarven). // Trade Spoof Messages 538: Hack bei Handel: Charakter '%s' (account: %d) versucht mit mehr Items zu Handeln als er besitzt. -539: Dieser Spieler hat %d vom folgendem Item (id: %d), und versuchte %d von ihnen zu Handeln. +539: Dieser Spieler hat %d vom folgendem Item (id: %u), und versuchte %d von ihnen zu Handeln. 540: Dieser Spieler wurde definitiv blockiert. // Rare Items Drop/Steal announce 541: '%s' got %s's %s (chance: %0.02f%%) diff --git a/conf/msg_conf/map_msg_idn.conf b/conf/msg_conf/map_msg_idn.conf index 080d7519cc..fe5231c7d9 100644 --- a/conf/msg_conf/map_msg_idn.conf +++ b/conf/msg_conf/map_msg_idn.conf @@ -179,7 +179,7 @@ 166: Tidak ada item yang ditempa. 167: 1 item berhasil ditempa. 168: %d item berhasil ditempa. -169: Item (%hu: '%s') tidak bisa dipakai. +169: Item (%u: '%s') tidak bisa dipakai. 170: Item ini tidak bisa dipakai. 171: %d - sudah habis //172: Kamu sudah mengganti posisi memo %d - %s (%d,%d). @@ -544,7 +544,7 @@ // Pesan tentang pelanggaran transaksi. 538: Hack pada transaksi: Karakter '%s' (akun: %d) sedang mencoba mentransaksikan item lebih dari yang dia punya. -539: Pemain ini memiliki %d jenis item (id: %hu), dan sedang mencoba untuk mentransaksikan %d item. +539: Pemain ini memiliki %d jenis item (id: %u), dan sedang mencoba untuk mentransaksikan %d item. 540: Pemain ini sudah diblok. // Pesan tentang item langka yang berhasil didapatkan atau dicuri. @@ -732,14 +732,14 @@ 707: VIP anda berlaku hingga: %s 708: Status VIP pemain aktif hingga: %s -709: Item %hu telah dihapus dari inventory-mu. -710: Item %hu telah dihapus dari cart-mu. -711: Item %hu telah dihapus dari storage-mu. +709: Item %u telah dihapus dari inventory-mu. +710: Item %u telah dihapus dari cart-mu. +711: Item %u telah dihapus dari storage-mu. //Item shop -712: %s (%hu) yang kamu miliki tidak cukup. +712: %s (%u) yang kamu miliki tidak cukup. 713: '%s' yang kamu miliki tidak cukup. -714: Item Shop: %s (%hu) +714: Item Shop: %s (%u) 715: Point Shop: '%s' 716: '%s' milikmu saat ini: %d @@ -1146,9 +1146,9 @@ 1189: Item tidak ditemukan. 1190: Kamu sudah mengambil secara otomatis item ini. 1191: Daftar autolooitem penuh. Hilangkan sebagian terlebih dahulu dengan @autolootid -. -1192: Mengambil item secara otomatis: '%s'/'%s' {%hu} +1192: Mengambil item secara otomatis: '%s'/'%s' {%u} 1193: Kamu saat ini sedang tidak mengambil item ini secara otomatis. -1194: Item dihilangkan: '%s'/'%s' {%hu} dari daftar pengambilan otomatismu. +1194: Item dihilangkan: '%s'/'%s' {%u} dari daftar pengambilan otomatismu. 1195: Kamu hanya memiliki item %d di daftarmu. 1196: Untuk menambahkan item ke daftar, gunakan \"@alootid +\". Untuk menghilangkannya, gunakan \"@alootid -\". 1197: \"@alootid reset\" akan membersihkan daftar autolootitem. @@ -1297,7 +1297,7 @@ // @iteminfo 1276: Harap masukkan nama/ID item. (Penggunaan: @ii/@iteminfo ). -1277: Item: '%s'/'%s'[%d] (%hu) Jenis: %s | Efek tambahan: %s +1277: Item: '%s'/'%s'[%d] (%u) Jenis: %s | Efek tambahan: %s 1278: Tidak ada 1279: Dengan script. 1280: NPC Harga Beli:%dz, Harga jual:%dz | Berat: %.1f diff --git a/conf/msg_conf/map_msg_por.conf b/conf/msg_conf/map_msg_por.conf index 2953f84f05..ab2e995fe1 100644 --- a/conf/msg_conf/map_msg_por.conf +++ b/conf/msg_conf/map_msg_por.conf @@ -189,7 +189,7 @@ 166: Nenhum item foi refinado. 167: 1 item foi refinado. 168: %d itens foram refinados. -169: O item (%hu: '%s') não é equipável. +169: O item (%u: '%s') não é equipável. 170: O item não é equipável. 171: %d - vazio //172: Você substituiu o ponto de memorização %d - %s (%d,%d). @@ -555,7 +555,7 @@ // Mensagens de tentativa de Spoof em Negociações 538: Hack em negociação: personagem '%s' (account: %d) tentou negociar mais itens que possuía. -539: Este jogador possui %d unidades de um item (id: %hu), e tentou negociar %d destes. +539: Este jogador possui %d unidades de um item (id: %u), e tentou negociar %d destes. 540: Este jogador foi bloqueado indefinidamente. // Anúncio de drop de Itens Raros/Furtar @@ -744,14 +744,14 @@ 707: Você é VIP até: %s 708: O jogador agora é VIP até: %s -709: Item %hu foi removido do seu inventário. -710: Item %hu foi removido do seu carrinho. -711: Item %hu foi removido do seu armazém. +709: Item %u foi removido do seu inventário. +710: Item %u foi removido do seu carrinho. +711: Item %u foi removido do seu armazém. // Item shop -712: Você não possui %s suficiente (%hu). +712: Você não possui %s suficiente (%u). 713: Você não tem '%s' suficiente. -714: Lista de Loja de Itens: %s (%hu) +714: Lista de Loja de Itens: %s (%u) 715: Lista de loja de pontos: '%s' 716: Seu '%s' agora é: %d // MVP EXP reward message @@ -1225,9 +1225,9 @@ 1189: Item não encontrado. 1190: Você já está autorrecolhendo este item. 1191: Sua lista de autorrecolhimento está cheia. Remova alguns itens com @autolootid -. -1192: Autorrecolhendo item: '%s'/'%s' {%hu} +1192: Autorrecolhendo item: '%s'/'%s' {%u} 1193: Você atualmente não está autorrecolhendo este item. -1194: Removido item: '%s'/'%s' {%hu} da sua lista de autorrecolhimento. +1194: Removido item: '%s'/'%s' {%u} da sua lista de autorrecolhimento. 1195: Você pode possuir %d itens na sua lista de autorrecolhimento. 1196: Para adicionar um item a lista, use "@alootid +". Para remover um item, use "@alootid -". 1197: "@alootid reset" irá limpar a sua lista de autorrecolhimento. @@ -1376,7 +1376,7 @@ // @iteminfo 1276: Digite o nome/ID de um item (uso: @ii/@iteminfo ). -1277: Item: '%s'/'%s'[%d] (%hu) Tipo: %s | Efeito Extra: %s +1277: Item: '%s'/'%s'[%d] (%u) Tipo: %s | Efeito Extra: %s 1278: Nenhum 1279: Com script 1280: NPC Compra:%dz, Venda:%dz | Peso: %.1f diff --git a/conf/msg_conf/map_msg_rus.conf b/conf/msg_conf/map_msg_rus.conf index 6526cec682..0ade990391 100644 --- a/conf/msg_conf/map_msg_rus.conf +++ b/conf/msg_conf/map_msg_rus.conf @@ -181,7 +181,7 @@ 166: . 167: 1 . 168: %d . -169: (%hu: '%s') . +169: (%u: '%s') . 170: . 171: %d - //172: @@ -512,7 +512,7 @@ 537: '%s' (account: %d) ( ). // 538: : '%s' (account: %d) . -539: %d (id: %hu), %d . +539: %d (id: %u), %d . 540: . // / 541: '%s' %s's %s (: %0.02f%%) @@ -1055,9 +1055,9 @@ 1189: . 1190: . 1191: . @autolootid -. -1192: : '%s'/'%s' {%hu} +1192: : '%s'/'%s' {%u} 1193: . -1194: : '%s'/'%s' {%hu} . +1194: : '%s'/'%s' {%u} . 1195: %d . 1196: "@alootid +". : "@alootid -". 1197: "@alootid reset" . @@ -1206,7 +1206,7 @@ // @iteminfo 1276: ID/ (: @ii/@iteminfo ). -1277: : '%s'/'%s'[%d] (%hu) : %s | . : %s +1277: : '%s'/'%s'[%d] (%u) : %s | . : %s 1278: 1279: 1280: :%d , :%d | : %.1f diff --git a/conf/msg_conf/map_msg_spn.conf b/conf/msg_conf/map_msg_spn.conf index a882cffa36..0dec8fd68f 100644 --- a/conf/msg_conf/map_msg_spn.conf +++ b/conf/msg_conf/map_msg_spn.conf @@ -179,7 +179,7 @@ 166: No se ha refinado ningn objeto. 167: Se ha refinado 1 objeto. 168: Se han refinado %d objetos. -169: El objeto (%hu: '%s') no puede ser equipado. +169: El objeto (%u: '%s') no puede ser equipado. 170: No puedes equiparte ese objeto. 171: %d - vaco //172: Has reemplazado tu lugar memorizado %d - %s (%d,%d). @@ -545,7 +545,7 @@ // Mensajes del sistemade intercambio de objetos 538: Se ha detectado una irregularidad en el intercambio de objetos del personaje '%s' (cuenta: %d), est intentando intercambiar ms de lo que tiene. -539: Ese jugador tiene %d unidades del objeto (id: %hu), pero ha intentado intercambiar %d. +539: Ese jugador tiene %d unidades del objeto (id: %u), pero ha intentado intercambiar %d. 540: Ese jugador ha sido bloqueado. // Anuncios de consecucin de objetos poco comunes y robos de objetos. @@ -733,14 +733,14 @@ 707: Sers VIP hasta: %s 708: El jugador ser VIP hasta: %s -709: El objeto %hu ha sido eliminado de tu inventario. -710: El objeto %hu ha sido eliminado de tu carro. -711: El objeto %hu ha sido eliminado de tu almacn. +709: El objeto %u ha sido eliminado de tu inventario. +710: El objeto %u ha sido eliminado de tu carro. +711: El objeto %u ha sido eliminado de tu almacn. // Item shop -712: No tienes suficientes %s (%hu). +712: No tienes suficientes %s (%u). 713: No tienes suficientes '%s'. -714: Listado de la tienda de objetos: %s (%hu) +714: Listado de la tienda de objetos: %s (%u) 715: Listado de puntos de la tienda: '%s' 716: Tu '%s' ahora es: %d @@ -1194,9 +1194,9 @@ 1189: Ese objeto no existe. 1190: Ese objeto ya estaba programado para ser recogido automticamente. 1191: Tu lista de recogida de objetos de forma automtica est llena. Elimina alguno de esos objetos con @autolootid . -1192: Recogiendo: '%s'/'%s' {%hu} +1192: Recogiendo: '%s'/'%s' {%u} 1193: No ests recogiendo ese objeto. -1194: Has eliminado'%s'/'%s' {%hu} de tu lista de recogida de objetos. +1194: Has eliminado'%s'/'%s' {%u} de tu lista de recogida de objetos. 1195: Puedes almacenar %d objetos en tu lista de recogida de objetos. 1196: Para aadir un nuevo objeto a la lista utiliza @alootid +. Para eliminar un objeto utiliza @alootid -. 1197: "@alootid reset" reiniciar tu lista de recogida de objetos. @@ -1345,7 +1345,7 @@ // @iteminfo 1276: Introduce el nombre/ID de un objeto (instrucciones: @ii/@iteminfo ). -1277: Objeto: '%s'/'%s'[%d] (%hu) Tipo: %s | Efecto: %s +1277: Objeto: '%s'/'%s'[%d] (%u) Tipo: %s | Efecto: %s 1278: Ninguno 1279: Contiene cdigo 1280: Compra en NPC:%dz, Venta:%dz | Peso: %.1f diff --git a/conf/msg_conf/map_msg_tha.conf b/conf/msg_conf/map_msg_tha.conf index a715149e9d..402c06baf2 100644 --- a/conf/msg_conf/map_msg_tha.conf +++ b/conf/msg_conf/map_msg_tha.conf @@ -183,7 +183,7 @@ 166: Item ѺѾõ. 167: 1 Item ѺѾõ. 168: %d Item ѺѾõ. -169: Item (%hu: '%s') ػó. +169: Item (%u: '%s') ػó. 170: 辺 Item 鹹㹰ҹ. 171: %d - ҧ //172: You replace previous memo position %d - %s (%d,%d). @@ -506,7 +506,7 @@ 537: Ф '%s' (account: %d) bot (ѹеǨ monster ). // Trade Spoof Messages 538: Hack on trade: Ф '%s' (account: %d) š¹ item ӹǹҡҷ. -539: item ӹǹ %d (id: %hu), оš¹㹨ӹǹ %d. +539: item ӹǹ %d (id: %u), оš¹㹨ӹǹ %d. 540: 蹹١š¹. // Rare Items Drop/Steal announce 541: '%s' %s's %s (͡: %0.02f%%) @@ -1048,9 +1048,9 @@ 1189: 辺 Item ѧ. 1190: سѹ֡ item ŧ¡º. 1191: ¡ autolootitem ͧس. ź item ҧ¡͡͹ @autolootid -. -1192: ѹ֡ item : '%s'/'%s' {%hu} ŧ¡ autolootitem ͧس. +1192: ѹ֡ item : '%s'/'%s' {%u} ŧ¡ autolootitem ͧس. 1193: سѹ֡ item ŧ¡. -1194: ź item : '%s'/'%s' {%hu} ҡ¡ autolootitem ͧس. +1194: ź item : '%s'/'%s' {%u} ҡ¡ autolootitem ͧس. 1195: سöѹ֡ %d item 㹡¡ autolootitem. 1196: 㹡¡, "@alootid +". 㹡ź¡, "@alootid -". 1197: "@alootid reset" 㹡ҧ¡ autolootitem ͧس. @@ -1199,7 +1199,7 @@ // @iteminfo 1276: ôкت/ID item (Ը: @ii/@iteminfo ). -1277: Item: '%s'/'%s'[%d] (%hu) Type: %s | Extra Effect: %s +1277: Item: '%s'/'%s'[%d] (%u) Type: %s | Extra Effect: %s 1278: None 1279: With script 1280: NPC Buy:%dz, Sell:%dz | Weight: %.1f diff --git a/doc/script_commands.txt b/doc/script_commands.txt index dab507ca3b..0802398630 100644 --- a/doc/script_commands.txt +++ b/doc/script_commands.txt @@ -2861,8 +2861,7 @@ number. This is the only function around where a parameter may be either a string or a number! If it's a number, it means that only the items with that item ID number will be counted. If it is a string, it is assumed to mean the 'english name' -field from the item database. If you give it an empty string, or something that -isn't found from the item database, it will count items number '512' (apples). +field from the item database. --------------------------------------- @@ -8548,6 +8547,8 @@ Valid types are: if = 10000, then this item is sold in NPC shops only 4 - sex; 5 - equip; 6 - weight; 7 - atk; 8 - def; 9 - range; 10 - slot; 11 - look; 12 - elv; 13 - wlv; 14 - view id + 15 - eLVMax + 16 - matk if RENEWAL is defined Example: setiteminfo 7049,6,9990; // Stone now weighs 999.0 diff --git a/sql-files/item_cash_db.sql b/sql-files/item_cash_db.sql index bd321b7bb4..c7340a95b6 100644 --- a/sql-files/item_cash_db.sql +++ b/sql-files/item_cash_db.sql @@ -1,7 +1,7 @@ DROP TABLE IF EXISTS `item_cash_db`; CREATE TABLE `item_cash_db` ( `tab` smallint(6) NOT NULL, - `item_id` smallint(5) unsigned NOT NULL, + `item_id` int(10) unsigned NOT NULL, `price` mediumint(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`tab`,`item_id`) ) ENGINE=MyISAM; diff --git a/sql-files/item_cash_db2.sql b/sql-files/item_cash_db2.sql index 9c12109a22..42c050e968 100644 --- a/sql-files/item_cash_db2.sql +++ b/sql-files/item_cash_db2.sql @@ -1,7 +1,7 @@ DROP TABLE IF EXISTS `item_cash_db2`; CREATE TABLE `item_cash_db2` ( `tab` smallint(6) NOT NULL, - `item_id` smallint(5) unsigned NOT NULL, + `item_id` int(10) unsigned NOT NULL, `price` mediumint(10) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`tab`,`item_id`) ) ENGINE=MyISAM; diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql index d6a1b3de82..8e201f6930 100644 --- a/sql-files/item_db.sql +++ b/sql-files/item_db.sql @@ -4,7 +4,7 @@ DROP TABLE IF EXISTS `item_db`; CREATE TABLE `item_db` ( - `id` smallint(5) unsigned NOT NULL DEFAULT '0', + `id` int(10) unsigned NOT NULL DEFAULT '0', `name_english` varchar(50) NOT NULL DEFAULT '', `name_japanese` varchar(50) NOT NULL DEFAULT '', `type` tinyint(2) unsigned NOT NULL DEFAULT '0', diff --git a/sql-files/item_db2.sql b/sql-files/item_db2.sql index 0fc50686f4..c643810ff2 100644 --- a/sql-files/item_db2.sql +++ b/sql-files/item_db2.sql @@ -4,7 +4,7 @@ DROP TABLE IF EXISTS `item_db2`; CREATE TABLE `item_db2` ( - `id` smallint(5) unsigned NOT NULL DEFAULT '0', + `id` int(10) unsigned NOT NULL DEFAULT '0', `name_english` varchar(50) NOT NULL DEFAULT '', `name_japanese` varchar(50) NOT NULL DEFAULT '', `type` tinyint(2) unsigned NOT NULL DEFAULT '0', diff --git a/sql-files/item_db2_re.sql b/sql-files/item_db2_re.sql index c93ece62ba..c6e7d1d360 100644 --- a/sql-files/item_db2_re.sql +++ b/sql-files/item_db2_re.sql @@ -4,7 +4,7 @@ DROP TABLE IF EXISTS `item_db2_re`; CREATE TABLE `item_db2_re` ( - `id` smallint(5) unsigned NOT NULL DEFAULT '0', + `id` int(10) unsigned NOT NULL DEFAULT '0', `name_english` varchar(50) NOT NULL DEFAULT '', `name_japanese` varchar(50) NOT NULL DEFAULT '', `type` tinyint(2) unsigned NOT NULL DEFAULT '0', diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index 05592bdfef..c7f4a1dd54 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -4,7 +4,7 @@ DROP TABLE IF EXISTS `item_db_re`; CREATE TABLE `item_db_re` ( - `id` smallint(5) unsigned NOT NULL DEFAULT '0', + `id` int(10) unsigned NOT NULL DEFAULT '0', `name_english` varchar(50) NOT NULL DEFAULT '', `name_japanese` varchar(50) NOT NULL DEFAULT '', `type` tinyint(2) unsigned NOT NULL DEFAULT '0', diff --git a/sql-files/logs.sql b/sql-files/logs.sql index 99bc6e2d7f..465016f857 100644 --- a/sql-files/logs.sql +++ b/sql-files/logs.sql @@ -87,7 +87,7 @@ CREATE TABLE IF NOT EXISTS `feedinglog` ( `target_class` SMALLINT(11) NOT NULL, `type` ENUM('P','H','O') NOT NULL, -- P: Pet, H: Homunculus, O: Other `intimacy` INT(11) UNSIGNED NOT NULL, - `item_id` SMALLINT(5) UNSIGNED NOT NULL, + `item_id` int(10) UNSIGNED NOT NULL, `map` VARCHAR(11) NOT NULL, `x` SMALLINT(5) UNSIGNED NOT NULL, `y` SMALLINT(5) UNSIGNED NOT NULL, @@ -116,7 +116,7 @@ CREATE TABLE IF NOT EXISTS `mvplog` ( `mvp_date` datetime NOT NULL, `kill_char_id` int(11) NOT NULL default '0', `monster_id` smallint(6) NOT NULL default '0', - `prize` smallint(5) unsigned NOT NULL default '0', + `prize` int(10) unsigned NOT NULL default '0', `mvpexp` bigint(20) unsigned NOT NULL default '0', `map` varchar(11) NOT NULL default '', PRIMARY KEY (`mvp_id`) @@ -172,13 +172,13 @@ CREATE TABLE IF NOT EXISTS `picklog` ( `time` datetime NOT NULL, `char_id` int(11) NOT NULL default '0', `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','$','F','Y','Z','Q','H') NOT NULL default 'P', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `amount` int(11) NOT NULL default '1', `refine` tinyint(3) unsigned NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', diff --git a/sql-files/main.sql b/sql-files/main.sql index 01c1869e81..6420b3107c 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -61,15 +61,15 @@ CREATE TABLE IF NOT EXISTS `auction` ( `buynow` int(11) unsigned NOT NULL default '0', `hours` smallint(6) NOT NULL default '0', `timestamp` int(11) unsigned NOT NULL default '0', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `item_name` varchar(50) NOT NULL default '', `type` smallint(6) NOT NULL default '0', `refine` tinyint(3) unsigned NOT NULL default '0', `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', @@ -96,7 +96,7 @@ CREATE TABLE IF NOT EXISTS `auction` ( CREATE TABLE IF NOT EXISTS `db_roulette` ( `index` int(11) NOT NULL default '0', `level` smallint(5) unsigned NOT NULL, - `item_id` smallint(5) unsigned NOT NULL, + `item_id` int(10) unsigned NOT NULL, `amount` smallint(5) unsigned NOT NULL DEFAULT '1', `flag` smallint(5) unsigned NOT NULL DEFAULT '1', PRIMARY KEY (`index`) @@ -157,16 +157,16 @@ CREATE TABLE IF NOT EXISTS `buyingstores` ( CREATE TABLE IF NOT EXISTS `cart_inventory` ( `id` int(11) NOT NULL auto_increment, `char_id` int(11) NOT NULL default '0', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `amount` int(11) NOT NULL default '0', `equip` int(11) unsigned NOT NULL default '0', `identify` smallint(6) NOT NULL default '0', `refine` tinyint(3) unsigned NOT NULL default '0', `attribute` tinyint(4) NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', @@ -548,16 +548,16 @@ CREATE TABLE IF NOT EXISTS `guild_skill` ( CREATE TABLE IF NOT EXISTS `guild_storage` ( `id` int(10) unsigned NOT NULL auto_increment, `guild_id` int(11) unsigned NOT NULL default '0', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `amount` int(11) unsigned NOT NULL default '0', `equip` int(11) unsigned NOT NULL default '0', `identify` smallint(6) unsigned NOT NULL default '0', `refine` tinyint(3) unsigned NOT NULL default '0', `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', @@ -590,15 +590,15 @@ CREATE TABLE IF NOT EXISTS `guild_storage_log` ( `time` datetime NOT NULL, `char_id` int(11) NOT NULL default '0', `name` varchar(24) NOT NULL default '', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `amount` int(11) NOT NULL default '1', `identify` smallint(6) NOT NULL default '0', `refine` tinyint(3) unsigned NOT NULL default '0', `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', @@ -685,16 +685,16 @@ CREATE TABLE IF NOT EXISTS `interlog` ( CREATE TABLE IF NOT EXISTS `inventory` ( `id` int(11) unsigned NOT NULL auto_increment, `char_id` int(11) unsigned NOT NULL default '0', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `amount` int(11) unsigned NOT NULL default '0', `equip` int(11) unsigned NOT NULL default '0', `identify` smallint(6) NOT NULL default '0', `refine` tinyint(3) unsigned NOT NULL default '0', `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', @@ -792,15 +792,15 @@ CREATE TABLE IF NOT EXISTS `mail` ( CREATE TABLE IF NOT EXISTS `mail_attachments` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT, `index` smallint(5) unsigned NOT NULL DEFAULT '0', - `nameid` smallint(5) unsigned NOT NULL DEFAULT '0', + `nameid` int(10) unsigned NOT NULL DEFAULT '0', `amount` int(11) unsigned NOT NULL DEFAULT '0', `refine` tinyint(3) unsigned NOT NULL DEFAULT '0', `attribute` tinyint(4) unsigned NOT NULL DEFAULT '0', `identify` smallint(6) NOT NULL DEFAULT '0', - `card0` smallint(5) unsigned NOT NULL DEFAULT '0', - `card1` smallint(5) unsigned NOT NULL DEFAULT '0', - `card2` smallint(5) unsigned NOT NULL DEFAULT '0', - `card3` smallint(5) unsigned NOT NULL DEFAULT '0', + `card0` int(10) unsigned NOT NULL DEFAULT '0', + `card1` int(10) unsigned NOT NULL DEFAULT '0', + `card2` int(10) unsigned NOT NULL DEFAULT '0', + `card3` int(10) unsigned NOT NULL DEFAULT '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', @@ -838,7 +838,7 @@ CREATE TABLE IF NOT EXISTS `mapreg` ( CREATE TABLE IF NOT EXISTS `market` ( `name` varchar(50) NOT NULL DEFAULT '', - `nameid` SMALLINT(5) UNSIGNED NOT NULL, + `nameid` int(10) UNSIGNED NOT NULL, `price` INT(11) UNSIGNED NOT NULL, `amount` SMALLINT(5) UNSIGNED NOT NULL, `flag` TINYINT(2) UNSIGNED NOT NULL DEFAULT '0', @@ -895,7 +895,7 @@ CREATE TABLE IF NOT EXISTS `mercenary_owner` ( -- ---------------------------- CREATE TABLE IF NOT EXISTS `sales` ( - `nameid` smallint(5) unsigned NOT NULL, + `nameid` int(10) unsigned NOT NULL, `start` datetime NOT NULL, `end` datetime NOT NULL, `amount` int(11) NOT NULL, @@ -955,8 +955,8 @@ CREATE TABLE IF NOT EXISTS `pet` ( `account_id` int(11) unsigned NOT NULL default '0', `char_id` int(11) unsigned NOT NULL default '0', `level` smallint(4) unsigned NOT NULL default '0', - `egg_id` smallint(5) unsigned NOT NULL default '0', - `equip` mediumint(8) unsigned NOT NULL default '0', + `egg_id` int(10) unsigned NOT NULL default '0', + `equip` int(10) unsigned NOT NULL default '0', `intimate` smallint(9) unsigned NOT NULL default '0', `hungry` smallint(9) unsigned NOT NULL default '0', `rename_flag` tinyint(4) unsigned NOT NULL default '0', @@ -1010,16 +1010,16 @@ CREATE TABLE IF NOT EXISTS `skill_homunculus` ( CREATE TABLE IF NOT EXISTS `storage` ( `id` int(11) unsigned NOT NULL auto_increment, `account_id` int(11) unsigned NOT NULL default '0', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `amount` smallint(11) unsigned NOT NULL default '0', `equip` int(11) unsigned NOT NULL default '0', `identify` smallint(6) unsigned NOT NULL default '0', `refine` tinyint(3) unsigned NOT NULL default '0', `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) NOT NULL default '0', `option_val0` smallint(5) NOT NULL default '0', `option_parm0` tinyint(3) NOT NULL default '0', diff --git a/sql-files/mob_db.sql b/sql-files/mob_db.sql index 55d45356bc..efbe50ec2e 100644 --- a/sql-files/mob_db.sql +++ b/sql-files/mob_db.sql @@ -35,31 +35,31 @@ CREATE TABLE `mob_db` ( `aMotion` smallint(6) unsigned NOT NULL default '0', `dMotion` smallint(6) unsigned NOT NULL default '0', `MEXP` mediumint(9) unsigned NOT NULL default '0', - `MVP1id` smallint(5) unsigned NOT NULL default '0', + `MVP1id` int(10) unsigned NOT NULL default '0', `MVP1per` smallint(9) unsigned NOT NULL default '0', - `MVP2id` smallint(5) unsigned NOT NULL default '0', + `MVP2id` int(10) unsigned NOT NULL default '0', `MVP2per` smallint(9) unsigned NOT NULL default '0', - `MVP3id` smallint(5) unsigned NOT NULL default '0', + `MVP3id` int(10) unsigned NOT NULL default '0', `MVP3per` smallint(9) unsigned NOT NULL default '0', - `Drop1id` smallint(5) unsigned NOT NULL default '0', + `Drop1id` int(10) unsigned NOT NULL default '0', `Drop1per` smallint(9) unsigned NOT NULL default '0', - `Drop2id` smallint(5) unsigned NOT NULL default '0', + `Drop2id` int(10) unsigned NOT NULL default '0', `Drop2per` smallint(9) unsigned NOT NULL default '0', - `Drop3id` smallint(5) unsigned NOT NULL default '0', + `Drop3id` int(10) unsigned NOT NULL default '0', `Drop3per` smallint(9) unsigned NOT NULL default '0', - `Drop4id` smallint(5) unsigned NOT NULL default '0', + `Drop4id` int(10) unsigned NOT NULL default '0', `Drop4per` smallint(9) unsigned NOT NULL default '0', - `Drop5id` smallint(5) unsigned NOT NULL default '0', + `Drop5id` int(10) unsigned NOT NULL default '0', `Drop5per` smallint(9) unsigned NOT NULL default '0', - `Drop6id` smallint(5) unsigned NOT NULL default '0', + `Drop6id` int(10) unsigned NOT NULL default '0', `Drop6per` smallint(9) unsigned NOT NULL default '0', - `Drop7id` smallint(5) unsigned NOT NULL default '0', + `Drop7id` int(10) unsigned NOT NULL default '0', `Drop7per` smallint(9) unsigned NOT NULL default '0', - `Drop8id` smallint(5) unsigned NOT NULL default '0', + `Drop8id` int(10) unsigned NOT NULL default '0', `Drop8per` smallint(9) unsigned NOT NULL default '0', - `Drop9id` smallint(5) unsigned NOT NULL default '0', + `Drop9id` int(10) unsigned NOT NULL default '0', `Drop9per` smallint(9) unsigned NOT NULL default '0', - `DropCardid` smallint(5) unsigned NOT NULL default '0', + `DropCardid` int(10) unsigned NOT NULL default '0', `DropCardper` smallint(9) unsigned NOT NULL default '0', PRIMARY KEY (`ID`), UNIQUE KEY (`Sprite`) diff --git a/sql-files/mob_db2.sql b/sql-files/mob_db2.sql index bb1179ce5c..f944c7d117 100644 --- a/sql-files/mob_db2.sql +++ b/sql-files/mob_db2.sql @@ -35,31 +35,31 @@ CREATE TABLE `mob_db2` ( `aMotion` smallint(6) unsigned NOT NULL default '0', `dMotion` smallint(6) unsigned NOT NULL default '0', `MEXP` mediumint(9) unsigned NOT NULL default '0', - `MVP1id` smallint(5) unsigned NOT NULL default '0', + `MVP1id` int(10) unsigned NOT NULL default '0', `MVP1per` smallint(9) unsigned NOT NULL default '0', - `MVP2id` smallint(5) unsigned NOT NULL default '0', + `MVP2id` int(10) unsigned NOT NULL default '0', `MVP2per` smallint(9) unsigned NOT NULL default '0', - `MVP3id` smallint(5) unsigned NOT NULL default '0', + `MVP3id` int(10) unsigned NOT NULL default '0', `MVP3per` smallint(9) unsigned NOT NULL default '0', - `Drop1id` smallint(5) unsigned NOT NULL default '0', + `Drop1id` int(10) unsigned NOT NULL default '0', `Drop1per` smallint(9) unsigned NOT NULL default '0', - `Drop2id` smallint(5) unsigned NOT NULL default '0', + `Drop2id` int(10) unsigned NOT NULL default '0', `Drop2per` smallint(9) unsigned NOT NULL default '0', - `Drop3id` smallint(5) unsigned NOT NULL default '0', + `Drop3id` int(10) unsigned NOT NULL default '0', `Drop3per` smallint(9) unsigned NOT NULL default '0', - `Drop4id` smallint(5) unsigned NOT NULL default '0', + `Drop4id` int(10) unsigned NOT NULL default '0', `Drop4per` smallint(9) unsigned NOT NULL default '0', - `Drop5id` smallint(5) unsigned NOT NULL default '0', + `Drop5id` int(10) unsigned NOT NULL default '0', `Drop5per` smallint(9) unsigned NOT NULL default '0', - `Drop6id` smallint(5) unsigned NOT NULL default '0', + `Drop6id` int(10) unsigned NOT NULL default '0', `Drop6per` smallint(9) unsigned NOT NULL default '0', - `Drop7id` smallint(5) unsigned NOT NULL default '0', + `Drop7id` int(10) unsigned NOT NULL default '0', `Drop7per` smallint(9) unsigned NOT NULL default '0', - `Drop8id` smallint(5) unsigned NOT NULL default '0', + `Drop8id` int(10) unsigned NOT NULL default '0', `Drop8per` smallint(9) unsigned NOT NULL default '0', - `Drop9id` smallint(5) unsigned NOT NULL default '0', + `Drop9id` int(10) unsigned NOT NULL default '0', `Drop9per` smallint(9) unsigned NOT NULL default '0', - `DropCardid` smallint(5) unsigned NOT NULL default '0', + `DropCardid` int(10) unsigned NOT NULL default '0', `DropCardper` smallint(9) unsigned NOT NULL default '0', PRIMARY KEY (`ID`), UNIQUE KEY (`Sprite`) diff --git a/sql-files/mob_db2_re.sql b/sql-files/mob_db2_re.sql index 2d3f5edcb0..b73077209a 100644 --- a/sql-files/mob_db2_re.sql +++ b/sql-files/mob_db2_re.sql @@ -35,31 +35,31 @@ CREATE TABLE `mob_db2_re` ( `aMotion` smallint(6) unsigned NOT NULL default '0', `dMotion` smallint(6) unsigned NOT NULL default '0', `MEXP` mediumint(9) unsigned NOT NULL default '0', - `MVP1id` smallint(5) unsigned NOT NULL default '0', + `MVP1id` int(10) unsigned NOT NULL default '0', `MVP1per` smallint(9) unsigned NOT NULL default '0', - `MVP2id` smallint(5) unsigned NOT NULL default '0', + `MVP2id` int(10) unsigned NOT NULL default '0', `MVP2per` smallint(9) unsigned NOT NULL default '0', - `MVP3id` smallint(5) unsigned NOT NULL default '0', + `MVP3id` int(10) unsigned NOT NULL default '0', `MVP3per` smallint(9) unsigned NOT NULL default '0', - `Drop1id` smallint(5) unsigned NOT NULL default '0', + `Drop1id` int(10) unsigned NOT NULL default '0', `Drop1per` smallint(9) unsigned NOT NULL default '0', - `Drop2id` smallint(5) unsigned NOT NULL default '0', + `Drop2id` int(10) unsigned NOT NULL default '0', `Drop2per` smallint(9) unsigned NOT NULL default '0', - `Drop3id` smallint(5) unsigned NOT NULL default '0', + `Drop3id` int(10) unsigned NOT NULL default '0', `Drop3per` smallint(9) unsigned NOT NULL default '0', - `Drop4id` smallint(5) unsigned NOT NULL default '0', + `Drop4id` int(10) unsigned NOT NULL default '0', `Drop4per` smallint(9) unsigned NOT NULL default '0', - `Drop5id` smallint(5) unsigned NOT NULL default '0', + `Drop5id` int(10) unsigned NOT NULL default '0', `Drop5per` smallint(9) unsigned NOT NULL default '0', - `Drop6id` smallint(5) unsigned NOT NULL default '0', + `Drop6id` int(10) unsigned NOT NULL default '0', `Drop6per` smallint(9) unsigned NOT NULL default '0', - `Drop7id` smallint(5) unsigned NOT NULL default '0', + `Drop7id` int(10)unsigned NOT NULL default '0', `Drop7per` smallint(9) unsigned NOT NULL default '0', - `Drop8id` smallint(5) unsigned NOT NULL default '0', + `Drop8id` int(10) unsigned NOT NULL default '0', `Drop8per` smallint(9) unsigned NOT NULL default '0', - `Drop9id` smallint(5) unsigned NOT NULL default '0', + `Drop9id` int(10) unsigned NOT NULL default '0', `Drop9per` smallint(9) unsigned NOT NULL default '0', - `DropCardid` smallint(5) unsigned NOT NULL default '0', + `DropCardid` int(10) unsigned NOT NULL default '0', `DropCardper` smallint(9) unsigned NOT NULL default '0', PRIMARY KEY (`ID`), UNIQUE KEY (`Sprite`) diff --git a/sql-files/mob_db_re.sql b/sql-files/mob_db_re.sql index 858b89fe78..21c3c3ff63 100644 --- a/sql-files/mob_db_re.sql +++ b/sql-files/mob_db_re.sql @@ -35,31 +35,31 @@ CREATE TABLE `mob_db_re` ( `aMotion` smallint(6) unsigned NOT NULL default '0', `dMotion` smallint(6) unsigned NOT NULL default '0', `MEXP` mediumint(9) unsigned NOT NULL default '0', - `MVP1id` smallint(5) unsigned NOT NULL default '0', + `MVP1id` int(10) unsigned NOT NULL default '0', `MVP1per` smallint(9) unsigned NOT NULL default '0', - `MVP2id` smallint(5) unsigned NOT NULL default '0', + `MVP2id` int(10) unsigned NOT NULL default '0', `MVP2per` smallint(9) unsigned NOT NULL default '0', - `MVP3id` smallint(5) unsigned NOT NULL default '0', + `MVP3id` int(10) unsigned NOT NULL default '0', `MVP3per` smallint(9) unsigned NOT NULL default '0', - `Drop1id` smallint(5) unsigned NOT NULL default '0', + `Drop1id` int(10) unsigned NOT NULL default '0', `Drop1per` smallint(9) unsigned NOT NULL default '0', - `Drop2id` smallint(5) unsigned NOT NULL default '0', + `Drop2id` int(10) unsigned NOT NULL default '0', `Drop2per` smallint(9) unsigned NOT NULL default '0', - `Drop3id` smallint(5) unsigned NOT NULL default '0', + `Drop3id` int(10) unsigned NOT NULL default '0', `Drop3per` smallint(9) unsigned NOT NULL default '0', - `Drop4id` smallint(5) unsigned NOT NULL default '0', + `Drop4id` int(10) unsigned NOT NULL default '0', `Drop4per` smallint(9) unsigned NOT NULL default '0', - `Drop5id` smallint(5) unsigned NOT NULL default '0', + `Drop5id` int(10) unsigned NOT NULL default '0', `Drop5per` smallint(9) unsigned NOT NULL default '0', - `Drop6id` smallint(5) unsigned NOT NULL default '0', + `Drop6id` int(10) unsigned NOT NULL default '0', `Drop6per` smallint(9) unsigned NOT NULL default '0', - `Drop7id` smallint(5) unsigned NOT NULL default '0', + `Drop7id` int(10) unsigned NOT NULL default '0', `Drop7per` smallint(9) unsigned NOT NULL default '0', - `Drop8id` smallint(5) unsigned NOT NULL default '0', + `Drop8id` int(10) unsigned NOT NULL default '0', `Drop8per` smallint(9) unsigned NOT NULL default '0', - `Drop9id` smallint(5) unsigned NOT NULL default '0', + `Drop9id` int(10) unsigned NOT NULL default '0', `Drop9per` smallint(9) unsigned NOT NULL default '0', - `DropCardid` smallint(5) unsigned NOT NULL default '0', + `DropCardid` int(10) unsigned NOT NULL default '0', `DropCardper` smallint(9) unsigned NOT NULL default '0', PRIMARY KEY (`ID`), UNIQUE KEY (`Sprite`) diff --git a/sql-files/upgrades/premium_storage.sql b/sql-files/upgrades/premium_storage.sql index 1718374c4a..e29de0ce88 100644 --- a/sql-files/upgrades/premium_storage.sql +++ b/sql-files/upgrades/premium_storage.sql @@ -5,16 +5,16 @@ CREATE TABLE IF NOT EXISTS `storage_1` ( `id` int(11) unsigned NOT NULL auto_increment, `account_id` int(11) unsigned NOT NULL default '0', - `nameid` smallint(5) unsigned NOT NULL default '0', + `nameid` int(10) unsigned NOT NULL default '0', `amount` smallint(11) unsigned NOT NULL default '0', `equip` int(11) unsigned NOT NULL default '0', `identify` smallint(6) unsigned NOT NULL default '0', `refine` tinyint(3) unsigned NOT NULL default '0', `attribute` tinyint(4) unsigned NOT NULL default '0', - `card0` smallint(5) unsigned NOT NULL default '0', - `card1` smallint(5) unsigned NOT NULL default '0', - `card2` smallint(5) unsigned NOT NULL default '0', - `card3` smallint(5) unsigned NOT NULL default '0', + `card0` int(10) unsigned NOT NULL default '0', + `card1` int(10) unsigned NOT NULL default '0', + `card2` int(10) unsigned NOT NULL default '0', + `card3` int(10) unsigned NOT NULL default '0', `option_id0` smallint(5) unsigned NOT NULL default '0', `option_val0` smallint(5) unsigned NOT NULL default '0', `option_parm0` tinyint(3) unsigned NOT NULL default '0', diff --git a/sql-files/upgrades/upgrade_20200808.sql b/sql-files/upgrades/upgrade_20200808.sql new file mode 100644 index 0000000000..f901845ac2 --- /dev/null +++ b/sql-files/upgrades/upgrade_20200808.sql @@ -0,0 +1,139 @@ +ALTER TABLE `auction` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `cart_inventory` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `db_roulette` + MODIFY `item_id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `guild_storage` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `guild_storage_log` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `inventory` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `mail_attachments` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `market` + MODIFY `nameid` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `pet` + MODIFY `egg_id` int(10) unsigned NOT NULL default '0', + MODIFY `equip` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `sales` + MODIFY `nameid` int(10) unsigned NOT NULL; + +ALTER TABLE `storage` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `item_cash_db` + MODIFY `item_id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `item_cash_db2` + MODIFY `item_id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `item_db` + MODIFY `id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `item_db_re` + MODIFY `id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `item_db2` + MODIFY `id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `item_db2_re` + MODIFY `id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `mob_db` + MODIFY `MVP1id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP2id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop1id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop2id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop4id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop5id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop6id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop7id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop8id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop9id` int(10) unsigned NOT NULL default '0', + MODIFY `DropCardid` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `mob_db_re` + MODIFY `MVP1id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP2id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop1id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop2id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop4id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop5id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop6id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop7id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop8id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop9id` int(10) unsigned NOT NULL default '0', + MODIFY `DropCardid` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `mob_db2` + MODIFY `MVP1id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP2id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop1id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop2id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop4id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop5id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop6id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop7id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop8id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop9id` int(10) unsigned NOT NULL default '0', + MODIFY `DropCardid` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `mob_db2_re` + MODIFY `MVP1id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP2id` int(10) unsigned NOT NULL default '0', + MODIFY `MVP3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop1id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop2id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop3id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop4id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop5id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop6id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop7id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop8id` int(10) unsigned NOT NULL default '0', + MODIFY `Drop9id` int(10) unsigned NOT NULL default '0', + MODIFY `DropCardid` int(10) unsigned NOT NULL default '0'; diff --git a/sql-files/upgrades/upgrade_20200808_logs.sql b/sql-files/upgrades/upgrade_20200808_logs.sql new file mode 100644 index 0000000000..0df0b335e6 --- /dev/null +++ b/sql-files/upgrades/upgrade_20200808_logs.sql @@ -0,0 +1,12 @@ +ALTER TABLE `feedinglog` + MODIFY `item_id` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `mvplog` + MODIFY `prize` int(10) unsigned NOT NULL default '0'; + +ALTER TABLE `picklog` + MODIFY `nameid` int(10) unsigned NOT NULL default '0', + MODIFY `card0` int(10) unsigned NOT NULL default '0', + MODIFY `card1` int(10) unsigned NOT NULL default '0', + MODIFY `card2` int(10) unsigned NOT NULL default '0', + MODIFY `card3` int(10) unsigned NOT NULL default '0'; diff --git a/src/char/char.cpp b/src/char/char.cpp index b44d92947b..2fc2f854bb 100644 --- a/src/char/char.cpp +++ b/src/char/char.cpp @@ -586,7 +586,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto } SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL); - SqlStmt_BindColumn(stmt, 1, SQLDT_USHORT, &item.nameid, 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 1, SQLDT_UINT, &item.nameid, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &item.equip, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL); @@ -600,7 +600,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL); } for( i = 0; i < MAX_SLOTS; ++i ) - SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_USHORT, &item.card[i], 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL); for( i = 0; i < MAX_ITEM_RDM_OPT; ++i ) { SqlStmt_BindColumn(stmt, 10+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL); @@ -650,7 +650,7 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto if (tableswitch == TABLE_INVENTORY) StringBuf_Printf(&buf, ", `favorite`='%d', `equip_switch`='%u'", items[i].favorite, items[i].equipSwitch); for( j = 0; j < MAX_SLOTS; ++j ) - StringBuf_Printf(&buf, ", `card%d`=%hu", j, items[i].card[j]); + StringBuf_Printf(&buf, ", `card%d`=%u", j, items[i].card[j]); for( j = 0; j < MAX_ITEM_RDM_OPT; ++j ) { StringBuf_Printf(&buf, ", `option_id%d`=%d", j, items[i].option[j].id); StringBuf_Printf(&buf, ", `option_val%d`=%d", j, items[i].option[j].value); @@ -706,12 +706,12 @@ int char_memitemdata_to_sql(const struct item items[], int max, int id, enum sto else found = true; - StringBuf_Printf(&buf, "('%d', '%hu', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%" PRIu64 "'", + StringBuf_Printf(&buf, "('%d', '%u', '%d', '%u', '%d', '%d', '%d', '%u', '%d', '%" PRIu64 "'", id, items[i].nameid, items[i].amount, items[i].equip, items[i].identify, items[i].refine, items[i].attribute, items[i].expire_time, items[i].bound, items[i].unique_id); if (tableswitch == TABLE_INVENTORY) StringBuf_Printf(&buf, ", '%d', '%u'", items[i].favorite, items[i].equipSwitch); for( j = 0; j < MAX_SLOTS; ++j ) - StringBuf_Printf(&buf, ", '%hu'", items[i].card[j]); + StringBuf_Printf(&buf, ", '%u'", items[i].card[j]); for( j = 0; j < MAX_ITEM_RDM_OPT; ++j ) { StringBuf_Printf(&buf, ", '%d'", items[i].option[j].id); StringBuf_Printf(&buf, ", '%d'", items[i].option[j].value); @@ -812,7 +812,7 @@ bool char_memitemdata_from_sql(struct s_storage* p, int max, int id, enum storag } SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL); - SqlStmt_BindColumn(stmt, 1, SQLDT_USHORT, &item.nameid, 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 1, SQLDT_UINT, &item.nameid, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &item.equip, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL); @@ -826,7 +826,7 @@ bool char_memitemdata_from_sql(struct s_storage* p, int max, int id, enum storag SqlStmt_BindColumn(stmt, 11, SQLDT_UINT, &item.equipSwitch, 0, NULL, NULL); } for( i = 0; i < MAX_SLOTS; ++i ) - SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_USHORT, &item.card[i], 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 10+offset+i, SQLDT_UINT, &item.card[i], 0, NULL, NULL); for( i = 0; i < MAX_ITEM_RDM_OPT; ++i ) { SqlStmt_BindColumn(stmt, 10+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].id, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 11+offset+MAX_SLOTS+i*3, SQLDT_SHORT, &item.option[i].value, 0, NULL, NULL); @@ -1490,7 +1490,7 @@ int char_make_new_char( struct char_session_data* sd, char* name_, int str, int char_id = (int)Sql_LastInsertId(sql_handle); //Give the char the default items for (k = 0; k <= MAX_STARTITEM && tmp_start_items[k].nameid != 0; k++) { - if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`char_id`,`nameid`, `amount`, `equip`, `identify`) VALUES ('%d', '%hu', '%hu', '%hu', '%d')", schema_config.inventory_db, char_id, tmp_start_items[k].nameid, tmp_start_items[k].amount, tmp_start_items[k].pos, 1) ) + if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` (`char_id`,`nameid`, `amount`, `equip`, `identify`) VALUES ('%d', '%u', '%hu', '%u', '%d')", schema_config.inventory_db, char_id, tmp_start_items[k].nameid, tmp_start_items[k].amount, tmp_start_items[k].pos, 1) ) Sql_ShowDebug(sql_handle); } @@ -1504,7 +1504,7 @@ int char_make_new_char( struct char_session_data* sd, char* name_, int str, int int char_divorce_char_sql(int partner_id1, int partner_id2){ if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `partner_id`='0' WHERE `char_id`='%d' OR `char_id`='%d' LIMIT 2", schema_config.char_db, partner_id1, partner_id2) ) Sql_ShowDebug(sql_handle); - if( SQL_ERROR == Sql_Query(sql_handle, "DELETE FROM `%s` WHERE (`nameid`='%hu' OR `nameid`='%hu') AND (`char_id`='%d' OR `char_id`='%d') LIMIT 2", schema_config.inventory_db, WEDDING_RING_M, WEDDING_RING_F, partner_id1, partner_id2) ) + if( SQL_ERROR == Sql_Query(sql_handle, "DELETE FROM `%s` WHERE (`nameid`='%u' OR `nameid`='%u') AND (`char_id`='%d' OR `char_id`='%d') LIMIT 2", schema_config.inventory_db, WEDDING_RING_M, WEDDING_RING_F, partner_id1, partner_id2) ) Sql_ShowDebug(sql_handle); chmapif_send_ackdivorce(partner_id1, partner_id2); return 0; @@ -2739,18 +2739,18 @@ void char_set_defaults(){ charserv_config.start_items[0].nameid = 1201; charserv_config.start_items[0].amount = 1; - charserv_config.start_items[0].pos = 2; + charserv_config.start_items[0].pos = EQP_HAND_R; charserv_config.start_items[1].nameid = 2301; charserv_config.start_items[1].amount = 1; - charserv_config.start_items[1].pos = 16; + charserv_config.start_items[1].pos = EQP_ARMOR; #if PACKETVER >= 20150101 charserv_config.start_items_doram[0].nameid = 1681; charserv_config.start_items_doram[0].amount = 1; - charserv_config.start_items_doram[0].pos = 2; + charserv_config.start_items_doram[0].pos = EQP_HAND_R; charserv_config.start_items_doram[1].nameid = 2301; charserv_config.start_items_doram[1].amount = 1; - charserv_config.start_items_doram[1].pos = 16; + charserv_config.start_items_doram[1].pos = EQP_ARMOR; #endif charserv_config.console = 0; @@ -2848,9 +2848,10 @@ void char_config_split_startitem(char *w1_value, char *w2_value, struct startite } // TODO: Item ID verification - start_items[i].nameid = max(0, atoi(fields[1])); - start_items[i].amount = max(0, atoi(fields[2])); - start_items[i].pos = max(0, atoi(fields[3])); + start_items[i].nameid = strtoul( fields[1], nullptr, 10 ); + // TODO: Stack verification + start_items[i].amount = min( (uint16)strtoul( fields[2], nullptr, 10 ), MAX_AMOUNT ); + start_items[i].pos = strtoul( fields[3], nullptr, 10 ); lineitem = strtok(NULL, ":"); //next lineitem i++; diff --git a/src/char/int_achievement.cpp b/src/char/int_achievement.cpp index 54cc1d8fe9..32e0c914fe 100644 --- a/src/char/int_achievement.cpp +++ b/src/char/int_achievement.cpp @@ -320,8 +320,8 @@ int mapif_parse_achievement_reward(int fd){ struct item item; memset(&item, 0, sizeof(struct item)); - item.nameid = RFIFOW(fd, 10); - item.amount = RFIFOL(fd, 12); + item.nameid = RFIFOL(fd, 10); + item.amount = RFIFOW(fd, 14); item.identify = 1; safesnprintf(mail_sender, NAME_LENGTH, char_msg_txt(227)); // 227: GM diff --git a/src/char/int_auction.cpp b/src/char/int_auction.cpp index b268ebab47..b76947b338 100644 --- a/src/char/int_auction.cpp +++ b/src/char/int_auction.cpp @@ -51,10 +51,10 @@ void auction_save(struct auction_data *auction) return; StringBuf_Init(&buf); - StringBuf_Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%hu', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d'", + StringBuf_Printf(&buf, "UPDATE `%s` SET `seller_id` = '%d', `seller_name` = ?, `buyer_id` = '%d', `buyer_name` = ?, `price` = '%d', `buynow` = '%d', `hours` = '%d', `timestamp` = '%lu', `nameid` = '%u', `item_name` = ?, `type` = '%d', `refine` = '%d', `attribute` = '%d'", schema_config.auction_db, auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute); for( j = 0; j < MAX_SLOTS; j++ ) - StringBuf_Printf(&buf, ", `card%d` = '%hu'", j, auction->item.card[j]); + StringBuf_Printf(&buf, ", `card%d` = '%u'", j, auction->item.card[j]); for (j = 0; j < MAX_ITEM_RDM_OPT; j++) { StringBuf_Printf(&buf, ", `option_id%d` = '%d'", j, auction->item.option[j].id); StringBuf_Printf(&buf, ", `option_val%d` = '%d'", j, auction->item.option[j].value); @@ -96,10 +96,10 @@ unsigned int auction_create(struct auction_data *auction) StringBuf_Printf(&buf, ", `option_val%d`", j); StringBuf_Printf(&buf, ", `option_parm%d`", j); } - StringBuf_Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%hu',?,'%d','%d','%d','%" PRIu64 "'", + StringBuf_Printf(&buf, ") VALUES ('%d',?,'%d',?,'%d','%d','%d','%lu','%u',?,'%d','%d','%d','%" PRIu64 "'", auction->seller_id, auction->buyer_id, auction->price, auction->buynow, auction->hours, (unsigned long)auction->timestamp, auction->item.nameid, auction->type, auction->item.refine, auction->item.attribute, auction->item.unique_id); for( j = 0; j < MAX_SLOTS; j++ ) - StringBuf_Printf(&buf, ",'%hu'", auction->item.card[j]); + StringBuf_Printf(&buf, ",'%u'", auction->item.card[j]); for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) { StringBuf_Printf(&buf, ", '%d'", auction->item.option[j].id); StringBuf_Printf(&buf, ", '%d'", auction->item.option[j].value); @@ -227,7 +227,7 @@ void inter_auctions_fromsql(void) Sql_GetData(sql_handle, 8, &data, NULL); auction->timestamp = atoi(data); item = &auction->item; - Sql_GetData(sql_handle, 9, &data, NULL); item->nameid = atoi(data); + Sql_GetData(sql_handle, 9, &data, NULL); item->nameid = strtoul(data, nullptr, 10); Sql_GetData(sql_handle,10, &data, NULL); safestrncpy(auction->item_name, data, ITEM_NAME_LENGTH); Sql_GetData(sql_handle,11, &data, NULL); auction->type = atoi(data); @@ -242,7 +242,7 @@ void inter_auctions_fromsql(void) for( i = 0; i < MAX_SLOTS; i++ ) { Sql_GetData(sql_handle, 15 + i, &data, NULL); - item->card[i] = atoi(data); + item->card[i] = strtoul(data, nullptr, 10); } for (i = 0; i < MAX_ITEM_RDM_OPT; i++) { diff --git a/src/char/int_mail.cpp b/src/char/int_mail.cpp index 0278c1c76f..d7249d2c20 100644 --- a/src/char/int_mail.cpp +++ b/src/char/int_mail.cpp @@ -127,9 +127,9 @@ int mail_savemessage(struct mail_message* msg) found = true; } - StringBuf_Printf(&buf, "('%" PRIu64 "', '%hu', '%d', '%hu', '%d', '%d', '%d', '%" PRIu64 "', '%d'", (uint64)msg->id, i, msg->item[i].amount, msg->item[i].nameid, msg->item[i].refine, msg->item[i].attribute, msg->item[i].identify, msg->item[i].unique_id, msg->item[i].bound); + StringBuf_Printf(&buf, "('%" PRIu64 "', '%hu', '%d', '%u', '%d', '%d', '%d', '%" PRIu64 "', '%d'", (uint64)msg->id, i, msg->item[i].amount, msg->item[i].nameid, msg->item[i].refine, msg->item[i].attribute, msg->item[i].identify, msg->item[i].unique_id, msg->item[i].bound); for (j = 0; j < MAX_SLOTS; j++) - StringBuf_Printf(&buf, ", '%hu'", msg->item[i].card[j]); + StringBuf_Printf(&buf, ", '%u'", msg->item[i].card[j]); for (j = 0; j < MAX_ITEM_RDM_OPT; ++j) { StringBuf_Printf(&buf, ", '%d'", msg->item[i].option[j].id); StringBuf_Printf(&buf, ", '%d'", msg->item[i].option[j].value); @@ -209,7 +209,7 @@ bool mail_loadmessage(int mail_id, struct mail_message* msg) for( i = 0; i < MAIL_MAX_ITEM && SQL_SUCCESS == Sql_NextRow(sql_handle); i++ ){ Sql_GetData(sql_handle,0, &data, NULL); msg->item[i].amount = (short)atoi(data); - Sql_GetData(sql_handle,1, &data, NULL); msg->item[i].nameid = atoi(data); + Sql_GetData(sql_handle,1, &data, NULL); msg->item[i].nameid = strtoul(data, nullptr, 10); Sql_GetData(sql_handle,2, &data, NULL); msg->item[i].refine = atoi(data); Sql_GetData(sql_handle,3, &data, NULL); msg->item[i].attribute = atoi(data); Sql_GetData(sql_handle,4, &data, NULL); msg->item[i].identify = atoi(data); @@ -218,7 +218,7 @@ bool mail_loadmessage(int mail_id, struct mail_message* msg) msg->item[i].expire_time = 0; for( j = 0; j < MAX_SLOTS; j++ ){ - Sql_GetData(sql_handle,7 + j, &data, NULL); msg->item[i].card[j] = atoi(data); + Sql_GetData(sql_handle,7 + j, &data, NULL); msg->item[i].card[j] = strtoul(data, nullptr, 10); } for( j = 0; j < MAX_ITEM_RDM_OPT; j++ ){ diff --git a/src/char/int_pet.cpp b/src/char/int_pet.cpp index 1111defff8..3ffe8532e2 100644 --- a/src/char/int_pet.cpp +++ b/src/char/int_pet.cpp @@ -34,7 +34,7 @@ int inter_pet_tosql(int pet_id, struct s_pet* p) {// New pet. if( SQL_ERROR == Sql_Query(sql_handle, "INSERT INTO `%s` " "(`class`,`name`,`account_id`,`char_id`,`level`,`egg_id`,`equip`,`intimate`,`hungry`,`rename_flag`,`incubate`,`autofeed`) " - "VALUES ('%d', '%s', '%d', '%d', '%d', '%hu', '%hu', '%d', '%d', '%d', '%d', '%d')", + "VALUES ('%d', '%s', '%d', '%d', '%d', '%u', '%u', '%d', '%d', '%d', '%d', '%d')", schema_config.pet_db, p->class_, esc_name, p->account_id, p->char_id, p->level, p->egg_id, p->equip, p->intimate, p->hungry, p->rename_flag, p->incubate, p->autofeed) ) { @@ -45,7 +45,7 @@ int inter_pet_tosql(int pet_id, struct s_pet* p) } else {// Update pet. - if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `class`='%d',`name`='%s',`account_id`='%d',`char_id`='%d',`level`='%d',`egg_id`='%hu',`equip`='%hu',`intimate`='%d',`hungry`='%d',`rename_flag`='%d',`incubate`='%d',`autofeed`='%d' WHERE `pet_id`='%d'", + if( SQL_ERROR == Sql_Query(sql_handle, "UPDATE `%s` SET `class`='%d',`name`='%s',`account_id`='%d',`char_id`='%d',`level`='%d',`egg_id`='%u',`equip`='%u',`intimate`='%d',`hungry`='%d',`rename_flag`='%d',`incubate`='%d',`autofeed`='%d' WHERE `pet_id`='%d'", schema_config.pet_db, p->class_, esc_name, p->account_id, p->char_id, p->level, p->egg_id, p->equip, p->intimate, p->hungry, p->rename_flag, p->incubate, p->autofeed, p->pet_id) ) { @@ -85,8 +85,8 @@ int inter_pet_fromsql(int pet_id, struct s_pet* p) Sql_GetData(sql_handle, 3, &data, NULL); p->account_id = atoi(data); Sql_GetData(sql_handle, 4, &data, NULL); p->char_id = atoi(data); Sql_GetData(sql_handle, 5, &data, NULL); p->level = atoi(data); - Sql_GetData(sql_handle, 6, &data, NULL); p->egg_id = atoi(data); - Sql_GetData(sql_handle, 7, &data, NULL); p->equip = atoi(data); + Sql_GetData(sql_handle, 6, &data, NULL); p->egg_id = strtoul(data, nullptr, 10); + Sql_GetData(sql_handle, 7, &data, NULL); p->equip = strtoul(data, nullptr, 10); Sql_GetData(sql_handle, 8, &data, NULL); p->intimate = atoi(data); Sql_GetData(sql_handle, 9, &data, NULL); p->hungry = atoi(data); Sql_GetData(sql_handle, 10, &data, NULL); p->rename_flag = atoi(data); @@ -184,7 +184,7 @@ int mapif_delete_pet_ack(int fd, int flag){ return 0; } -int mapif_create_pet(int fd, uint32 account_id, uint32 char_id, short pet_class, short pet_lv, unsigned short pet_egg_id, unsigned short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name) +int mapif_create_pet(int fd, uint32 account_id, uint32 char_id, short pet_class, short pet_lv, t_itemid pet_egg_id, t_itemid pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name) { memset(pet_pt, 0, sizeof(struct s_pet)); safestrncpy(pet_pt->name, pet_name, NAME_LENGTH); @@ -280,8 +280,8 @@ int mapif_delete_pet(int fd, int pet_id){ int mapif_parse_CreatePet(int fd){ RFIFOHEAD(fd); - mapif_create_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOW(fd, 14), RFIFOW(fd, 16), RFIFOW(fd, 18), - RFIFOW(fd, 20), RFIFOB(fd, 22), RFIFOB(fd, 23), RFIFOCP(fd, 24)); + mapif_create_pet(fd, RFIFOL(fd, 2), RFIFOL(fd, 6), RFIFOW(fd, 10), RFIFOW(fd, 12), RFIFOL(fd, 14), RFIFOL(fd, 18), RFIFOW(fd, 22), + RFIFOW(fd, 24), RFIFOB(fd, 26), RFIFOB(fd, 27), RFIFOCP(fd, 28)); return 0; } diff --git a/src/char/int_storage.cpp b/src/char/int_storage.cpp index eb77e07041..ad93f7ec22 100644 --- a/src/char/int_storage.cpp +++ b/src/char/int_storage.cpp @@ -356,7 +356,7 @@ bool mapif_parse_itembound_retrieve(int fd) } SqlStmt_BindColumn(stmt, 0, SQLDT_INT, &item.id, 0, NULL, NULL); - SqlStmt_BindColumn(stmt, 1, SQLDT_USHORT, &item.nameid, 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 1, SQLDT_UINT, &item.nameid, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 2, SQLDT_SHORT, &item.amount, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 3, SQLDT_UINT, &item.equip, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 4, SQLDT_CHAR, &item.identify, 0, NULL, NULL); @@ -365,7 +365,7 @@ bool mapif_parse_itembound_retrieve(int fd) SqlStmt_BindColumn(stmt, 7, SQLDT_UINT, &item.expire_time, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 8, SQLDT_UINT, &item.bound, 0, NULL, NULL); for( j = 0; j < MAX_SLOTS; ++j ) - SqlStmt_BindColumn(stmt, 9+j, SQLDT_USHORT, &item.card[j], 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 9+j, SQLDT_UINT, &item.card[j], 0, NULL, NULL); for( j = 0; j < MAX_ITEM_RDM_OPT; ++j ) { SqlStmt_BindColumn(stmt, 9+MAX_SLOTS+j*3, SQLDT_SHORT, &item.option[j].id, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 10+MAX_SLOTS+j*3, SQLDT_SHORT, &item.option[j].value, 0, NULL, NULL); diff --git a/src/char/inter.cpp b/src/char/inter.cpp index 00ccbd60da..afed3acfda 100644 --- a/src/char/inter.cpp +++ b/src/char/inter.cpp @@ -62,7 +62,7 @@ int inter_recv_packet_length[] = { -1,-1,10,10, 0,-1,12, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3050- Auction System [Zephyrus] 6,-1, 6,-1, 16+NAME_LENGTH+ACHIEVEMENT_NAME_LENGTH, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3060- Quest system [Kevin] [Inkfish] / Achievements [Aleos] -1,10, 6,-1, 0, 0, 0, 0, 0, 0, 0, 0, -1,10, 6,-1, // 3070- Mercenary packets [Zephyrus], Elemental packets [pakpil] - 48,14,-1, 6, 0, 0, 0, 0, 0, 0,13,-1, 0, 0, 0, 0, // 3080- Pet System, Storage + 52,14,-1, 6, 0, 0, 0, 0, 0, 0,13,-1, 0, 0, 0, 0, // 3080- Pet System, Storage -1,10,-1, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 3090- Homunculus packets [albator] 2,-1, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30A0- Clan packets }; @@ -1125,13 +1125,13 @@ int mapif_parse_broadcast(int fd) /** * Parse received item broadcast and sends it to all connected map-serves - * ZI 3009 .W .W .W .W .B .24B .24B - * IZ 3809 .W .W .W .W .B .24B .24B + * ZI 3009 .W .W .L .W .B .24B .24B + * IZ 3809 .W .W .L .W .B .24B .24B * @param fd * @return **/ int mapif_parse_broadcast_item(int fd) { - unsigned char buf[9 + NAME_LENGTH*2]; + unsigned char buf[11 + NAME_LENGTH*2]; memcpy(WBUFP(buf, 0), RFIFOP(fd, 0), RFIFOW(fd,2)); WBUFW(buf, 0) = 0x3809; diff --git a/src/common/mmo.hpp b/src/common/mmo.hpp index bc24022e4a..36888bd14a 100644 --- a/src/common/mmo.hpp +++ b/src/common/mmo.hpp @@ -52,6 +52,9 @@ #define MAX_CHARS 9 #endif #endif + +typedef uint32 t_itemid; + /** Number of slots carded equipment can have. Never set to less than 4 as they are also used to keep the data of forged items/equipment. [Skotlex] * Note: The client seems unable to receive data for more than 4 slots due to all related packets having a fixed size. */ #define MAX_SLOTS 4 @@ -90,8 +93,8 @@ #define MAX_STATUS_TYPE 5 -#define WEDDING_RING_M 2634 -#define WEDDING_RING_F 2635 +const t_itemid WEDDING_RING_M = 2634; +const t_itemid WEDDING_RING_F = 2635; //For character names, title names, guilds, maps, etc. //Includes null-terminator as it is the length of the array. @@ -248,13 +251,13 @@ struct achievement { struct item { int id; - unsigned short nameid; + t_itemid nameid; short amount; unsigned int equip; // location(s) where item is equipped (using enum equip_pos for bitmasking) char identify; char refine; char attribute; - unsigned short card[MAX_SLOTS]; + t_itemid card[MAX_SLOTS]; struct s_item_randomoption option[MAX_ITEM_RDM_OPT]; // max of 5 random options can be supported. unsigned int expire_time; char favorite, bound; @@ -298,8 +301,9 @@ struct point { }; struct startitem { - unsigned short nameid, amount; - short pos; + t_itemid nameid; + unsigned short amount; + uint32 pos; }; enum e_skill_flag @@ -404,8 +408,8 @@ struct s_pet { int pet_id; short class_; short level; - unsigned short egg_id;//pet egg id - unsigned short equip;//pet equip name_id + t_itemid egg_id;//pet egg id + t_itemid equip;//pet equip name_id short intimate;//pet friendly short hungry;//pet hungry char name[NAME_LENGTH]; diff --git a/src/map/achievement.cpp b/src/map/achievement.cpp index 2da72b96a8..bc8277c740 100644 --- a/src/map/achievement.cpp +++ b/src/map/achievement.cpp @@ -241,14 +241,14 @@ uint64 AchievementDatabase::parseBodyNode(const YAML::Node &node){ // TODO: not camel case if( this->nodeExists( rewardNode, "ItemID" ) ){ - uint16 itemId; + t_itemid itemId; - if( !this->asUInt16( rewardNode, "ItemID", itemId ) ){ + if( !this->asUInt32( rewardNode, "ItemID", itemId ) ){ return 0; } if( !itemdb_exists( itemId ) ){ - this->invalidWarning( rewardNode["ItemID"], "Unknown item with ID %hu.\n", itemId ); + this->invalidWarning( rewardNode["ItemID"], "Unknown item with ID %u.\n", itemId ); return 0; } diff --git a/src/map/achievement.hpp b/src/map/achievement.hpp index 9a46e41b13..e239214e6b 100644 --- a/src/map/achievement.hpp +++ b/src/map/achievement.hpp @@ -79,7 +79,8 @@ struct s_achievement_db { struct script_code* condition; int16 mapindex; struct ach_reward { - unsigned short nameid, amount; + t_itemid nameid; + unsigned short amount; struct script_code *script; uint32 title_id; ach_reward(); diff --git a/src/map/atcommand.cpp b/src/map/atcommand.cpp index 3f2c8680d5..390680f1a9 100644 --- a/src/map/atcommand.cpp +++ b/src/map/atcommand.cpp @@ -1378,7 +1378,7 @@ ACMD_FUNC(item) itemlist = strtok(item_name, ":"); while (itemlist != NULL && j<10) { if ((item_data[j] = itemdb_searchname(itemlist)) == NULL && - (item_data[j] = itemdb_exists(atoi(itemlist))) == NULL){ + (item_data[j] = itemdb_exists( strtoul( itemlist, nullptr, 10 ) ) ) == NULL){ clif_displaymessage(fd, msg_txt(sd,19)); // Invalid item ID or name. return -1; } @@ -1391,7 +1391,7 @@ ACMD_FUNC(item) get_count = number; for(j--; j>=0; j--){ //produce items in list - unsigned short item_id = item_data[j]->nameid; + t_itemid item_id = item_data[j]->nameid; //Check if it's stackable. if (!itemdb_isstackable2(item_data[j])) get_count = 1; @@ -1422,7 +1422,7 @@ ACMD_FUNC(item2) struct item item_tmp; struct item_data *item_data; char item_name[100]; - unsigned short item_id; + t_itemid item_id; int number = 0, bound = BOUND_NONE; int identify = 0, refine = 0, attr = 0; int c1 = 0, c2 = 0, c3 = 0, c4 = 0; @@ -1460,7 +1460,7 @@ ACMD_FUNC(item2) item_id = 0; if ((item_data = itemdb_searchname(item_name)) != NULL || - (item_data = itemdb_exists(atoi(item_name))) != NULL) + (item_data = itemdb_exists(strtoul(item_name, nullptr, 10))) != NULL) item_id = item_data->nameid; if (item_id > 500) { @@ -2373,7 +2373,7 @@ ACMD_FUNC(refine) ACMD_FUNC(produce) { char item_name[100]; - unsigned short item_id; + t_itemid item_id; int attribute = 0, star = 0; struct item_data *item_data; struct item tmp_item; @@ -2391,7 +2391,7 @@ ACMD_FUNC(produce) } if ( (item_data = itemdb_searchname(item_name)) == NULL && - (item_data = itemdb_exists(atoi(item_name))) == NULL ) { + (item_data = itemdb_exists( strtoul( item_name, nullptr, 10 ) ) ) == NULL ) { clif_displaymessage(fd, msg_txt(sd,170)); //This item is not an equipment. return -1; } @@ -2419,7 +2419,7 @@ ACMD_FUNC(produce) if ((flag = pc_additem(sd, &tmp_item, 1, LOG_TYPE_COMMAND))) clif_additem(sd, 0, 0, flag); } else { - sprintf(atcmd_output, msg_txt(sd,169), item_id, item_data->name); // The item (%hu: '%s') is not equipable. + sprintf(atcmd_output, msg_txt(sd,169), item_id, item_data->name); // The item (%u: '%s') is not equipable. clif_displaymessage(fd, atcmd_output); return -1; } @@ -5967,7 +5967,7 @@ ACMD_FUNC(skilltree) void getring (struct map_session_data* sd) { char flag = 0; - unsigned short item_id; + t_itemid item_id; struct item item_tmp; item_id = (sd->status.sex) ? WEDDING_RING_M : WEDDING_RING_F; @@ -6315,7 +6315,7 @@ ACMD_FUNC(autolootitem) return -1; } sd->state.autolootid[i] = item_data->nameid; // Autoloot Activated - sprintf(atcmd_output, msg_txt(sd,1192), item_data->name, item_data->jname, item_data->nameid); // Autolooting item: '%s'/'%s' {%d} + sprintf(atcmd_output, msg_txt(sd,1192), item_data->name, item_data->jname, item_data->nameid); // Autolooting item: '%s'/'%s' {%u} clif_displaymessage(fd, atcmd_output); sd->state.autolooting = 1; break; @@ -6326,7 +6326,7 @@ ACMD_FUNC(autolootitem) return -1; } sd->state.autolootid[i] = 0; - sprintf(atcmd_output, msg_txt(sd,1194), item_data->name, item_data->jname, item_data->nameid); // Removed item: '%s'/'%s' {%d} from your autolootitem list. + sprintf(atcmd_output, msg_txt(sd,1194), item_data->name, item_data->jname, item_data->nameid); // Removed item: '%s'/'%s' {%u} from your autolootitem list. clif_displaymessage(fd, atcmd_output); ARR_FIND(0, AUTOLOOTITEM_SIZE, i, sd->state.autolootid[i] != 0); if (i == AUTOLOOTITEM_SIZE) { @@ -6351,7 +6351,7 @@ ACMD_FUNC(autolootitem) ShowDebug("Non-existant item %d on autolootitem list (account_id: %d, char_id: %d)", sd->state.autolootid[i], sd->status.account_id, sd->status.char_id); continue; } - sprintf(atcmd_output, "'%s'/'%s' {%hu}", item_data->name, item_data->jname, item_data->nameid); + sprintf(atcmd_output, "'%s'/'%s' {%u}", item_data->name, item_data->jname, item_data->nameid); clif_displaymessage(fd, atcmd_output); } } @@ -6434,7 +6434,7 @@ ACMD_FUNC(autoloottype) return -1; } sd->state.autoloottype |= (1<state.autoloottype &= ~(1<name,item_data->jname,item_data->slot,item_data->nameid, (item_data->type != IT_AMMO) ? itemdb_typename((enum item_types)item_data->type) : itemdb_typename_ammo((enum e_item_ammo)item_data->look), (item_data->script==NULL)? msg_txt(sd,1278) : msg_txt(sd,1279) // None / With script @@ -7920,7 +7920,7 @@ ACMD_FUNC(whodrops) } for (i = 0; i < count; i++) { item_data = item_array[i]; - sprintf(atcmd_output, msg_txt(sd,1285), item_data->jname, item_data->slot, item_data->nameid); // Item: '%s'[%d] (ID:%hu) + sprintf(atcmd_output, msg_txt(sd,1285), item_data->jname, item_data->slot, item_data->nameid); // Item: '%s'[%d] (ID: %u) clif_displaymessage(fd, atcmd_output); if (item_data->mob[0].chance == 0) { @@ -9079,7 +9079,7 @@ ACMD_FUNC(stats) ACMD_FUNC(delitem) { char item_name[100]; - unsigned short nameid; + t_itemid nameid; int amount = 0, total, idx; struct item_data* id; @@ -9091,7 +9091,7 @@ ACMD_FUNC(delitem) return -1; } - if( ( id = itemdb_searchname(item_name) ) != NULL || ( id = itemdb_exists(atoi(item_name)) ) != NULL ) + if( ( id = itemdb_searchname(item_name) ) != NULL || ( id = itemdb_exists( strtoul( item_name, nullptr, 10 ) ) ) != NULL ) { nameid = id->nameid; } diff --git a/src/map/buyingstore.cpp b/src/map/buyingstore.cpp index 7d4ccbf6a7..4c43d40862 100644 --- a/src/map/buyingstore.cpp +++ b/src/map/buyingstore.cpp @@ -51,7 +51,7 @@ enum e_buyingstore_failure static unsigned int buyingstore_nextid = 0; -static const unsigned short buyingstore_blankslots[MAX_SLOTS] = { 0 }; // used when checking whether or not an item's card slots are blank +static const t_itemid buyingstore_blankslots[MAX_SLOTS] = { 0 }; // used when checking whether or not an item's card slots are blank /// Returns unique buying store id @@ -198,7 +198,7 @@ int8 buyingstore_create( struct map_session_data* sd, int zenylimit, unsigned ch // duplicate if( listidx != i ){ - ShowWarning( "buyingstore_create: Found duplicate item on buying list (nameid=%hu, amount=%hu, account_id=%d, char_id=%d).\n", item->itemId, item->amount, sd->status.account_id, sd->status.char_id ); + ShowWarning( "buyingstore_create: Found duplicate item on buying list (nameid=%u, amount=%hu, account_id=%d, char_id=%d).\n", item->itemId, item->amount, sd->status.account_id, sd->status.char_id ); break; } } @@ -241,7 +241,7 @@ int8 buyingstore_create( struct map_session_data* sd, int zenylimit, unsigned ch StringBuf_Init(&buf); StringBuf_Printf(&buf, "INSERT INTO `%s`(`buyingstore_id`,`index`,`item_id`,`amount`,`price`) VALUES", buyingstore_items_table); for (i = 0; i < sd->buyingstore.slots; i++){ - StringBuf_Printf(&buf, "(%d,%d,%hu,%d,%d)", sd->buyer_id, i, sd->buyingstore.items[i].nameid, sd->buyingstore.items[i].amount, sd->buyingstore.items[i].price); + StringBuf_Printf(&buf, "(%d,%d,%u,%d,%d)", sd->buyer_id, i, sd->buyingstore.items[i].nameid, sd->buyingstore.items[i].amount, sd->buyingstore.items[i].price); if (i < sd->buyingstore.slots-1) StringBuf_AppendStr(&buf, ","); } @@ -377,7 +377,7 @@ void buyingstore_trade( struct map_session_data* sd, uint32 account_id, unsigned for( int k = 0; k < i; k++ ){ // duplicate if( itemlist[k].index == item->index && k != i ){ - ShowWarning( "buyingstore_trade: Found duplicate item on selling list (prevnameid=%hu, prevamount=%hu, nameid=%hu, amount=%hu, account_id=%d, char_id=%d).\n", itemlist[k].itemId, itemlist[k].amount, item->itemId, item->amount, sd->status.account_id, sd->status.char_id ); + ShowWarning( "buyingstore_trade: Found duplicate item on selling list (prevnameid=%u, prevamount=%hu, nameid=%u, amount=%hu, account_id=%d, char_id=%d).\n", itemlist[k].itemId, itemlist[k].amount, item->itemId, item->amount, sd->status.account_id, sd->status.char_id ); clif_buyingstore_trade_failed_seller( sd, BUYINGSTORE_TRADE_SELLER_FAILED, item->itemId ); return; } @@ -509,7 +509,7 @@ void buyingstore_trade( struct map_session_data* sd, uint32 account_id, unsigned /// Checks if an item is being bought in given player's buying store. -bool buyingstore_search(struct map_session_data* sd, unsigned short nameid) +bool buyingstore_search(struct map_session_data* sd, t_itemid nameid) { unsigned int i; @@ -729,7 +729,7 @@ void do_init_buyingstore_autotrade( void ) { while (SQL_SUCCESS == Sql_NextRow(mmysql_handle) && j < at->count) { char *data; CREATE(at->entries[j], struct s_autotrade_entry, 1); - Sql_GetData(mmysql_handle, 0, &data, NULL); at->entries[j]->item_id = atoi(data); + Sql_GetData(mmysql_handle, 0, &data, NULL); at->entries[j]->item_id = strtoul(data, nullptr, 10); Sql_GetData(mmysql_handle, 1, &data, NULL); at->entries[j]->amount = atoi(data); Sql_GetData(mmysql_handle, 2, &data, NULL); at->entries[j]->price = atoi(data); j++; diff --git a/src/map/buyingstore.hpp b/src/map/buyingstore.hpp index eab26da3ac..6ca712eaca 100644 --- a/src/map/buyingstore.hpp +++ b/src/map/buyingstore.hpp @@ -17,7 +17,7 @@ struct s_buyingstore_item { int price; unsigned short amount; - unsigned short nameid; + t_itemid nameid; }; struct s_buyingstore @@ -33,7 +33,7 @@ struct s_autotrade_entry { uint16 amount; ///< Amount uint32 price; ///< Price uint16 index; ///< Item index in cart - uint32 item_id; ///< Item ID (for buyingstore) + t_itemid item_id; ///< Item ID (for buyingstore) }; /// Struct of autotrader @@ -60,7 +60,7 @@ int8 buyingstore_create(struct map_session_data* sd, int zenylimit, unsigned cha void buyingstore_close(struct map_session_data* sd); void buyingstore_open(struct map_session_data* sd, uint32 account_id); void buyingstore_trade(struct map_session_data* sd, uint32 account_id, unsigned int buyer_id, const struct PACKET_CZ_REQ_TRADE_BUYING_STORE_sub* itemlist, unsigned int count); -bool buyingstore_search(struct map_session_data* sd, unsigned short nameid); +bool buyingstore_search(struct map_session_data* sd, t_itemid nameid); bool buyingstore_searchall(struct map_session_data* sd, const struct s_search_store_search* s); DBMap *buyingstore_getdb(void); void do_final_buyingstore(void); diff --git a/src/map/cashshop.cpp b/src/map/cashshop.cpp index 50d77d89c7..572805ea97 100644 --- a/src/map/cashshop.cpp +++ b/src/map/cashshop.cpp @@ -33,13 +33,13 @@ extern char sales_table[32]; */ static bool cashshop_parse_dbrow(char* fields[], int columns, int current) { uint16 tab = atoi(fields[0]); - unsigned short nameid = atoi(fields[1]); + t_itemid nameid = strtoul(fields[1], nullptr, 10); uint32 price = atoi(fields[2]); int j; struct cash_item_data* cid; if( !itemdb_exists( nameid ) ){ - ShowWarning( "cashshop_parse_dbrow: Invalid ID %hu in line '%d', skipping...\n", nameid, current ); + ShowWarning( "cashshop_parse_dbrow: Invalid ID %u in line '%d', skipping...\n", nameid, current ); return 0; } @@ -151,32 +151,32 @@ static int cashshop_read_db_sql( void ){ #if PACKETVER_SUPPORTS_SALES static bool sale_parse_dbrow( char* fields[], int columns, int current ){ - unsigned short nameid = atoi(fields[0]); + t_itemid nameid = strtoul(fields[0], nullptr, 10); int start = atoi(fields[1]), end = atoi(fields[2]), amount = atoi(fields[3]), i; time_t now = time(NULL); struct sale_item_data* sale_item = NULL; if( !itemdb_exists(nameid) ){ - ShowWarning( "sale_parse_dbrow: Invalid ID %hu in line '%d', skipping...\n", nameid, current ); + ShowWarning( "sale_parse_dbrow: Invalid ID %u in line '%d', skipping...\n", nameid, current ); return false; } ARR_FIND( 0, cash_shop_items[CASHSHOP_TAB_SALE].count, i, cash_shop_items[CASHSHOP_TAB_SALE].item[i]->nameid == nameid ); if( i == cash_shop_items[CASHSHOP_TAB_SALE].count ){ - ShowWarning( "sale_parse_dbrow: ID %hu is not registered in the limited tab in line '%d', skipping...\n", nameid, current ); + ShowWarning( "sale_parse_dbrow: ID %u is not registered in the limited tab in line '%d', skipping...\n", nameid, current ); return false; } // Check if the end is after the start if( start >= end ){ - ShowWarning( "sale_parse_dbrow: Sale for item %hu was ignored, because the timespan was not correct.\n", nameid ); + ShowWarning( "sale_parse_dbrow: Sale for item %u was ignored, because the timespan was not correct.\n", nameid ); return false; } // Check if it is already in the past if( end < now ){ - ShowWarning( "sale_parse_dbrow: An outdated sale for item %hu was ignored.\n", nameid ); + ShowWarning( "sale_parse_dbrow: An outdated sale for item %u was ignored.\n", nameid ); return false; } @@ -267,7 +267,7 @@ static TIMER_FUNC(sale_start_timer){ return 1; } -enum e_sale_add_result sale_add_item( uint16 nameid, int32 count, time_t from, time_t to ){ +enum e_sale_add_result sale_add_item( t_itemid nameid, int32 count, time_t from, time_t to ){ int i; struct sale_item_data* sale_item; @@ -299,7 +299,7 @@ enum e_sale_add_result sale_add_item( uint16 nameid, int32 count, time_t from, t return SALE_ADD_DUPLICATE; } - if( SQL_ERROR == Sql_Query(mmysql_handle, "INSERT INTO `%s`(`nameid`,`start`,`end`,`amount`) VALUES ( '%d', FROM_UNIXTIME(%d), FROM_UNIXTIME(%d), '%d' )", sales_table, nameid, (uint32)from, (uint32)to, count) ){ + if( SQL_ERROR == Sql_Query(mmysql_handle, "INSERT INTO `%s`(`nameid`,`start`,`end`,`amount`) VALUES ( '%u', FROM_UNIXTIME(%d), FROM_UNIXTIME(%d), '%d' )", sales_table, nameid, (uint32)from, (uint32)to, count) ){ Sql_ShowDebug(mmysql_handle); return SALE_ADD_FAILED; } @@ -318,7 +318,7 @@ enum e_sale_add_result sale_add_item( uint16 nameid, int32 count, time_t from, t return SALE_ADD_SUCCESS; } -bool sale_remove_item( uint16 nameid ){ +bool sale_remove_item( t_itemid nameid ){ struct sale_item_data* sale_item; int i; @@ -330,7 +330,7 @@ bool sale_remove_item( uint16 nameid ){ } // Delete it from the database - if( SQL_ERROR == Sql_Query(mmysql_handle, "DELETE FROM `%s` WHERE `nameid` = '%d'", sales_table, nameid ) ){ + if( SQL_ERROR == Sql_Query(mmysql_handle, "DELETE FROM `%s` WHERE `nameid` = '%u'", sales_table, nameid ) ){ Sql_ShowDebug(mmysql_handle); return false; } @@ -371,7 +371,7 @@ bool sale_remove_item( uint16 nameid ){ return true; } -struct sale_item_data* sale_find_item( uint16 nameid, bool onsale ){ +struct sale_item_data* sale_find_item( t_itemid nameid, bool onsale ){ int i; struct sale_item_data* sale_item; time_t now = time(NULL); @@ -487,7 +487,7 @@ bool cashshop_buylist( struct map_session_data* sd, uint32 kafrapoints, int n, s new_ = 0; for( i = 0; i < n; ++i ){ - unsigned short nameid = item_list[i].itemId; + t_itemid nameid = item_list[i].itemId; uint32 quantity = item_list[i].amount; uint16 tab = item_list[i].tab; int j; @@ -569,7 +569,7 @@ bool cashshop_buylist( struct map_session_data* sd, uint32 kafrapoints, int n, s } for( i = 0; i < n; ++i ){ - unsigned short nameid = item_list[i].itemId; + t_itemid nameid = item_list[i].itemId; uint32 quantity = item_list[i].amount; #if PACKETVER_SUPPORTS_SALES uint16 tab = item_list[i].tab; @@ -615,7 +615,7 @@ bool cashshop_buylist( struct map_session_data* sd, uint32 kafrapoints, int n, s if( new_amount == 0 ){ sale_remove_item(sale->nameid); }else{ - if( SQL_ERROR == Sql_Query( mmysql_handle, "UPDATE `%s` SET `amount` = '%d' WHERE `nameid` = '%d'", sales_table, new_amount, nameid ) ){ + if( SQL_ERROR == Sql_Query( mmysql_handle, "UPDATE `%s` SET `amount` = '%d' WHERE `nameid` = '%u'", sales_table, new_amount, nameid ) ){ Sql_ShowDebug(mmysql_handle); } diff --git a/src/map/cashshop.hpp b/src/map/cashshop.hpp index 06636543fe..7566507d83 100644 --- a/src/map/cashshop.hpp +++ b/src/map/cashshop.hpp @@ -4,10 +4,12 @@ #ifndef CASHSHOP_HPP #define CASHSHOP_HPP -#include "../common/cbasetypes.hpp" // uint16, uint32 -#include "../common/timer.hpp" // ShowWarning, ShowStatus #include "../config/core.hpp" +#include "../common/cbasetypes.hpp" // uint16, uint32 +#include "../common/mmo.hpp" // t_itemid +#include "../common/timer.hpp" // ShowWarning, ShowStatus + struct map_session_data; void do_init_cashshop( void ); @@ -51,7 +53,7 @@ enum CASHSHOP_BUY_RESULT }; struct cash_item_data{ - unsigned short nameid; + t_itemid nameid; uint32 price; }; @@ -71,7 +73,7 @@ enum e_sale_add_result { struct sale_item_data{ // Data - uint16 nameid; + t_itemid nameid; time_t start; time_t end; uint32 amount; @@ -89,9 +91,9 @@ struct sale_item_db{ #if PACKETVER_SUPPORTS_SALES extern struct sale_item_db sale_items; -struct sale_item_data* sale_find_item(uint16 nameid, bool onsale); -enum e_sale_add_result sale_add_item(uint16 nameid, int32 count, time_t from, time_t to); -bool sale_remove_item(uint16 nameid); +struct sale_item_data* sale_find_item(t_itemid nameid, bool onsale); +enum e_sale_add_result sale_add_item(t_itemid nameid, int32 count, time_t from, time_t to); +bool sale_remove_item(t_itemid nameid); void sale_notify_login( struct map_session_data* sd ); #endif diff --git a/src/map/clif.cpp b/src/map/clif.cpp index b776be0cb0..d300099381 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -106,7 +106,7 @@ enum e_inventory_type{ * @param nameid: Item ID * @return item type. For IT_PETEGG will be displayed as IT_ARMOR. If Shadow Weapon of IT_SHADOWGEAR as IT_WEAPON and else as IT_ARMOR */ -static inline int itemtype(unsigned short nameid) { +static inline int itemtype(t_itemid nameid) { struct item_data* id = itemdb_search(nameid); //Use itemdb_search, so non-existance item will use dummy data and won't crash the server. bugreport:8468 int type = id->type; if( type == IT_SHADOWGEAR ) { @@ -141,8 +141,8 @@ static inline uint32 disguised_bl_id( uint32 bl_id ){ } #if PACKETVER_MAIN_NUM >= 20181121 || PACKETVER_RE_NUM >= 20180704 || PACKETVER_ZERO_NUM >= 20181114 -static inline uint32 client_nameid( uint32 server_nameid ){ - uint32 view = itemdb_viewid( server_nameid ); +static inline uint32 client_nameid( t_itemid server_nameid ){ + t_itemid view = itemdb_viewid( server_nameid ); if( view > 0 ){ return view; @@ -151,12 +151,20 @@ static inline uint32 client_nameid( uint32 server_nameid ){ } } #else -static inline uint16 client_nameid( uint32 server_nameid ){ - uint32 view = itemdb_viewid( server_nameid ); +static inline uint16 client_nameid( t_itemid server_nameid ){ + t_itemid view = itemdb_viewid( server_nameid ); if( view > 0 ){ + if( view > UINT16_MAX ){ + return (uint16)UNKNOWN_ITEM_ID; + } + return (uint16)view; }else{ + if( server_nameid > UINT16_MAX ){ + return (uint16)UNKNOWN_ITEM_ID; + } + return (uint16)server_nameid; } } @@ -963,7 +971,7 @@ void clif_clearunit_delayed(struct block_list* bl, clr_type type, t_tick tick) add_timer(tick, clif_clearunit_delayed_sub, (int)type, (intptr_t)tbl); } -void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand) +void clif_get_weapon_view(struct map_session_data* sd, t_itemid *rhand, t_itemid *lhand) { if(sd->sc.option&OPTION_COSTUME) { @@ -2183,6 +2191,7 @@ void clif_parse_NPCShopClosed(int fd, struct map_session_data *sd) { * Presents list of items, that can be sold to a Market shop. * @author: Ind and Yommy **/ +/// 0x9d5 .W { .W .B .L .L .W }* (ZC_NPC_MARKET_OPEN) void clif_npc_market_open(struct map_session_data *sd, struct npc_data *nd) { #if PACKETVER >= 20131223 nullpo_retv( sd ); @@ -2237,6 +2246,7 @@ void clif_parse_NPCMarketClosed(int fd, struct map_session_data *sd) { /// Purchase item from Market shop. +/// 0x9d7 .W .B { .W .W .L }* (ZC_NPC_MARKET_PURCHASE_RESULT) void clif_npc_market_purchase_ack(struct map_session_data *sd, uint8 res, uint8 n, struct s_npc_buy_list *list) { #if PACKETVER >= 20131223 nullpo_retv( sd ); @@ -2283,6 +2293,7 @@ void clif_npc_market_purchase_ack(struct map_session_data *sd, uint8 res, uint8 /// Purchase item from Market shop. +/// 0x9d6 .W { .W .L } (CZ_NPC_MARKET_PURCHASE) void clif_parse_NPCMarketPurchase(int fd, struct map_session_data *sd) { #if PACKETVER >= 20131223 nullpo_retv( sd ); @@ -3578,7 +3589,7 @@ void clif_changestatus(struct map_session_data* sd,int type,int val) /// 00c3 .L .B .B (ZC_SPRITE_CHANGE) -/// 01d7 .L .B .L (ZC_SPRITE_CHANGE2) +/// 01d7 .L .B .W .W (ZC_SPRITE_CHANGE2) void clif_sprite_change( struct block_list *bl, int id, int type, int val, int val2, enum send_target target ){ struct PACKET_ZC_SPRITE_CHANGE p; @@ -3875,7 +3886,7 @@ void clif_arrow_create_list( struct map_session_data *sd ){ int count = 0; for( int i = 0; i < MAX_SKILL_ARROW_DB; i++ ){ - short nameid = skill_arrow_db[i].nameid; + t_itemid nameid = skill_arrow_db[i].nameid; if( !itemdb_exists( nameid ) ){ continue; @@ -5084,7 +5095,7 @@ void clif_getareachar_item( struct map_session_data* sd,struct flooritem_data* f struct PACKET_ZC_ITEM_ENTRY p; int view = itemdb_viewid( fitem->item.nameid ); - p.packetType = 0x9d; + p.packetType = HEADER_ZC_ITEM_ENTRY; p.AID = fitem->bl.id; p.itemId = view > 0 ? view : fitem->item.nameid; p.identify = fitem->item.identify; @@ -5631,7 +5642,7 @@ void clif_skillcastcancel(struct block_list* bl) /// if(result!=0) doesn't display any of the previous messages /// Note: when this packet is received an unknown flag is always set to 0, /// suggesting this is an ACK packet for the UseSkill packets and should be sent on success too [FlavioJS] -void clif_skill_fail( struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, int itemId ){ +void clif_skill_fail( struct map_session_data *sd, uint16 skill_id, enum useskill_fail_cause cause, int btype, t_itemid itemId ){ nullpo_retv( sd ); int fd = sd->fd; @@ -5654,7 +5665,7 @@ void clif_skill_fail( struct map_session_data *sd, uint16 skill_id, enum useskil struct PACKET_ZC_ACK_TOUSESKILL p; - p.packetType = 0x110; + p.packetType = HEADER_ZC_ACK_TOUSESKILL; p.skillId = skill_id; p.btype = btype; p.itemId = itemId; @@ -6637,10 +6648,10 @@ void clif_refine(int fd, int fail, int index, int val) /// 1 = "weapon upgraded: %s" MsgStringTable[912] in rgb(0,205,205) /// 2 = "cannot upgrade %s until you level up the upgrade weapon skill" MsgStringTable[913] in rgb(255,200,200) /// 3 = "you lack the item %s to upgrade the weapon" MsgStringTable[914] in rgb(255,200,200) -void clif_upgrademessage( struct map_session_data* sd, int result, unsigned short item_id ){ +void clif_upgrademessage( struct map_session_data* sd, int result, t_itemid item_id ){ struct PACKET_ZC_ACK_WEAPONREFINE p; - p.packetType = 0x223; + p.packetType = HEADER_ZC_ACK_WEAPONREFINE; p.result = result; p.itemId = client_nameid( item_id ); @@ -7992,14 +8003,14 @@ void clif_movetoattack(struct map_session_data *sd,struct block_list *bl) /// 1 = failure /// 2 = success (alchemist) /// 3 = failure (alchemist) -void clif_produceeffect(struct map_session_data* sd,int flag, unsigned short nameid){ +void clif_produceeffect(struct map_session_data* sd,int flag, t_itemid nameid){ nullpo_retv( sd ); clif_solved_charname( sd->fd, sd->status.char_id, sd->status.name ); struct PACKET_ZC_ACK_REQMAKINGITEM p; - p.packetType = 0x18f; + p.packetType = HEADER_ZC_ACK_REQMAKINGITEM; p.result = flag; p.itemId = client_nameid( nameid ); @@ -8348,10 +8359,10 @@ void clif_mvp_effect(struct map_session_data *sd) /// MVP item reward message (ZC_MVP_GETTING_ITEM). /// 010a .W -void clif_mvp_item( struct map_session_data *sd, unsigned short nameid ){ +void clif_mvp_item( struct map_session_data *sd, t_itemid nameid ){ struct PACKET_ZC_MVP_GETTING_ITEM p; - p.packetType = 0x10a; + p.packetType = HEADER_ZC_MVP_GETTING_ITEM; p.itemId = client_nameid( nameid ); clif_send( &p, sizeof( p ), &sd->bl, SELF ); @@ -14464,12 +14475,12 @@ void clif_parse_GM_Item_Monster(int fd, struct map_session_data *sd) if( (id = itemdb_searchname(str)) ) { StringBuf_Init(&command); if( !itemdb_isstackable2(id) ) //Nonstackable - StringBuf_Printf(&command, "%citem2 %d 1 0 0 0 0 0 0 0", atcommand_symbol, id->nameid); + StringBuf_Printf(&command, "%citem2 %u 1 0 0 0 0 0 0 0", atcommand_symbol, id->nameid); else { if (id->flag.guid) - StringBuf_Printf(&command, "%citem %d 1", atcommand_symbol, id->nameid); + StringBuf_Printf(&command, "%citem %u 1", atcommand_symbol, id->nameid); else - StringBuf_Printf(&command, "%citem %d 20", atcommand_symbol, id->nameid); + StringBuf_Printf(&command, "%citem %u 20", atcommand_symbol, id->nameid); } is_atcommand(fd, sd, StringBuf_Value(&command), 1); StringBuf_Destroy(&command); @@ -16663,6 +16674,8 @@ void clif_parse_cashshop_close( int fd, struct map_session_data* sd ){ //0846 .W (CZ_REQ_SE_CASH_TAB_CODE)) //08c0 .W .L .W (ZC_ACK_SE_CASH_ITEM_LIST2) void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) { +// [4144] packet exists only in 2011 and was dropped after +#if PACKETVER >= 20110222 && PACKETVER < 20120000 short tab = RFIFOW(fd, packet_db[RFIFOW(fd,0)].pos[0]); int j; @@ -16681,6 +16694,7 @@ void clif_parse_CashShopReqTab(int fd, struct map_session_data *sd) { } WFIFOSET(fd, 10 + ( cash_shop_items[tab].count * 6 )); +#endif } //08ca .W W .W (ZC_ACK_SCHEDULER_CASHITEM) @@ -16806,7 +16820,7 @@ void clif_cashshop_ack(struct map_session_data* sd, int error) WFIFOSET(fd, packet_len(0x289)); } -void clif_cashshop_result( struct map_session_data *sd, unsigned short item_id, uint16 result ){ +void clif_cashshop_result( struct map_session_data *sd, t_itemid item_id, uint16 result ){ #if PACKETVER_MAIN_NUM >= 20101123 || PACKETVER_RE_NUM >= 20120328 || defined( PACKETVER_ZERO ) nullpo_retv( sd ); @@ -17636,11 +17650,11 @@ void clif_mercenary_message(struct map_session_data* sd, int message){ /// Notification about the remaining time of a rental item. /// 0298 .W .L (ZC_CASH_TIME_COUNTER) -void clif_rental_time( struct map_session_data* sd, unsigned short nameid, int seconds ){ +void clif_rental_time( struct map_session_data* sd, t_itemid nameid, int seconds ){ // '' item will disappear in minutes. struct PACKET_ZC_CASH_TIME_COUNTER p; - p.packetType = 0x298; + p.packetType = HEADER_ZC_CASH_TIME_COUNTER; p.itemId = client_nameid( nameid ); p.seconds = seconds; @@ -17650,11 +17664,11 @@ void clif_rental_time( struct map_session_data* sd, unsigned short nameid, int s /// Deletes a rental item from client's inventory. /// 0299 .W .W (ZC_CASH_ITEM_DELETE) -void clif_rental_expired( struct map_session_data* sd, int index, unsigned short nameid ){ +void clif_rental_expired( struct map_session_data* sd, int index, t_itemid nameid ){ // '' item has been deleted from the Inventory struct PACKET_ZC_CASH_ITEM_DELETE p; - p.packetType = 0x299; + p.packetType = HEADER_ZC_CASH_ITEM_DELETE; p.index = client_index( index ); p.itemId = client_nameid( nameid ); @@ -18184,7 +18198,7 @@ void clif_party_show_picker( struct map_session_data* sd, struct item* item_data struct PACKET_ZC_ITEM_PICKUP_PARTY p; - p.packetType = 0x2b8; + p.packetType = HEADER_ZC_ITEM_PICKUP_PARTY; p.AID = sd->status.account_id; p.itemId = item_data->nameid; p.identified = item_data->identify; @@ -18605,11 +18619,11 @@ void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short resu /// Updates the zeny limit and an item in the buying store item list. /// 081b .W .W .L (ZC_UPDATE_ITEM_FROM_BUYING_STORE) /// 09e6 .W .W .L .L .L .L (ZC_UPDATE_ITEM_FROM_BUYING_STORE2) -void clif_buyingstore_update_item( struct map_session_data* sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny ){ +void clif_buyingstore_update_item( struct map_session_data* sd, t_itemid nameid, unsigned short amount, uint32 char_id, int zeny ){ struct PACKET_ZC_UPDATE_ITEM_FROM_BUYING_STORE p; p.packetType = buyingStoreUpdateItemType; - p.itemId = nameid; + p.itemId = client_nameid( nameid ); p.amount = amount; p.zenyLimit = sd->buyingstore.zenylimit; #if PACKETVER >= 20141016 @@ -18648,10 +18662,10 @@ void clif_buyingstore_delete_item(struct map_session_data* sd, short index, unsi /// 6 = "The trade failed, because the entered amount of item %s is higher, than the buyer is willing to buy." (0x6d3, MSI_BUYINGSTORE_TRADE_OVERCOUNT) /// 7 = "The trade failed, because the buyer is lacking required balance." (0x6d1, MSI_BUYINGSTORE_TRADE_LACKBUYERZENY) /// ? = nothing -void clif_buyingstore_trade_failed_seller( struct map_session_data* sd, short result, unsigned short nameid ){ +void clif_buyingstore_trade_failed_seller( struct map_session_data* sd, short result, t_itemid nameid ){ struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER p; - p.packetType = 0x824; + p.packetType = HEADER_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER; p.result = result; p.itemId = client_nameid( nameid ); @@ -20098,7 +20112,7 @@ static uint8 clif_roulette_getitem(struct map_session_data *sd) { /// Update Roulette window with current stats /// 0A20 .B .W .W .W .L .L .L (ZC_ACK_GENERATE_ROULETTE) -void clif_roulette_generate( struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, short bonusItemID ){ +void clif_roulette_generate( struct map_session_data *sd, unsigned char result, short stage, short prizeIdx, t_itemid bonusItemID ){ nullpo_retv( sd ); struct packet_roulette_generate_ack p; @@ -20404,7 +20418,7 @@ void clif_parse_merge_item_cancel(int fd, struct map_session_data* sd) { * type: ITEMOBTAIN_TYPE_BOXITEM & ITEMOBTAIN_TYPE_MONSTER_ITEM "[playername] ... [sourcename] ... [itemname]" -> MsgStringTable[1629] * type: ITEMOBTAIN_TYPE_NPC "[playername] ... [itemname]" -> MsgStringTable[1870] **/ -void clif_broadcast_obtain_special_item( const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type ){ +void clif_broadcast_obtain_special_item( const char *char_name, t_itemid nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type ){ char name[NAME_LENGTH]; if( battle_config.broadcast_hide_name ){ @@ -20621,7 +20635,7 @@ void clif_sale_start( struct sale_item_data* sale_item, struct block_list* bl, e #endif } -/// Notify the clien that a sale has ended +/// Notify the client that a sale has ended /// 09b3 .W (ZC_NOTIFY_BARGAIN_SALE_CLOSE) void clif_sale_end( struct sale_item_data* sale_item, struct block_list* bl, enum send_target target ){ #if PACKETVER_SUPPORTS_SALES @@ -21171,7 +21185,7 @@ void clif_parse_private_airship_request( int fd, struct map_session_data* sd ){ return; } - uint16 item_id = p->ItemID; + t_itemid item_id = p->ItemID; // Check if the item sent by the client is known to us if( !itemdb_group_item_exists(IG_PRIVATE_AIRSHIP, item_id) ){ diff --git a/src/map/clif.hpp b/src/map/clif.hpp index 8ea64f5c68..39a12db261 100644 --- a/src/map/clif.hpp +++ b/src/map/clif.hpp @@ -700,7 +700,7 @@ void clif_deleteskill(struct map_session_data *sd, int skill_id); void clif_skillcasting(struct block_list* bl, int src_id, int dst_id, int dst_x, int dst_y, uint16 skill_id, uint16 skill_lv, int property, int casttime); void clif_skillcastcancel(struct block_list* bl); -void clif_skill_fail(struct map_session_data *sd,uint16 skill_id,enum useskill_fail_cause cause,int btype, int itemId = 0); +void clif_skill_fail(struct map_session_data *sd,uint16 skill_id,enum useskill_fail_cause cause,int btype, t_itemid itemId = 0); void clif_skill_cooldown(struct map_session_data *sd, uint16 skill_id, t_tick tick); int clif_skill_damage(struct block_list *src,struct block_list *dst,t_tick tick,int sdelay,int ddelay,int64 sdamage,int div,uint16 skill_id,uint16 skill_lv,enum e_damage_type type); //int clif_skill_damage2(struct block_list *src,struct block_list *dst,t_tick tick,int sdelay,int ddelay,int damage,int div,uint16 skill_id,uint16 skill_lv,enum e_damage_type type); @@ -713,7 +713,7 @@ void clif_skill_teleportmessage(struct map_session_data *sd, int type); void clif_skill_produce_mix_list(struct map_session_data *sd, int skill_id, int trigger); void clif_cooking_list(struct map_session_data *sd, int trigger, uint16 skill_id, int qty, int list_type); -void clif_produceeffect(struct map_session_data* sd,int flag, unsigned short nameid); +void clif_produceeffect(struct map_session_data* sd,int flag, t_itemid nameid); void clif_getareachar_skillunit(struct block_list *bl, struct skill_unit *unit, enum send_target target, bool visible); void clif_skill_delunit(struct skill_unit *unit); @@ -764,7 +764,7 @@ void clif_hat_effect_single( struct map_session_data* sd, uint16 effectId, bool void clif_item_skill(struct map_session_data *sd,uint16 skill_id,uint16 skill_lv); void clif_mvp_effect(struct map_session_data *sd); -void clif_mvp_item(struct map_session_data *sd, unsigned short nameid); +void clif_mvp_item(struct map_session_data *sd, t_itemid nameid); void clif_mvp_exp(struct map_session_data *sd, unsigned int exp); void clif_mvp_noitem(struct map_session_data* sd); void clif_changed_dir(struct block_list *bl, enum send_target target); @@ -863,7 +863,7 @@ void clif_map_property(struct block_list *bl, enum map_property property, enum s void clif_pvpset(struct map_session_data *sd, int pvprank, int pvpnum,int type); void clif_map_property_mapall(int map, enum map_property property); void clif_refine(int fd, int fail, int index, int val); -void clif_upgrademessage( struct map_session_data* sd, int result, unsigned short item_id ); +void clif_upgrademessage( struct map_session_data* sd, int result, t_itemid item_id ); //petsystem void clif_catch_process(struct map_session_data *sd); @@ -897,7 +897,7 @@ void clif_GM_silence(struct map_session_data* sd, struct map_session_data* tsd, void clif_disp_overhead_(struct block_list *bl, const char* mes, enum send_target flag); #define clif_disp_overhead(bl, mes) clif_disp_overhead_(bl, mes, AREA) -void clif_get_weapon_view(struct map_session_data* sd, unsigned short *rhand, unsigned short *lhand); +void clif_get_weapon_view(struct map_session_data* sd, t_itemid *rhand, t_itemid *lhand); void clif_party_xy_remove(struct map_session_data *sd); //Fix for minimap [Kevin] void clif_gospel_info(struct map_session_data *sd, int type); @@ -979,8 +979,8 @@ void clif_mercenary_message(struct map_session_data* sd, int message); void clif_mercenary_updatestatus(struct map_session_data *sd, int type); // RENTAL SYSTEM -void clif_rental_time( struct map_session_data* sd, unsigned short nameid, int seconds ); -void clif_rental_expired( struct map_session_data* sd, int index, unsigned short nameid ); +void clif_rental_time( struct map_session_data* sd, t_itemid nameid, int seconds ); +void clif_rental_expired( struct map_session_data* sd, int index, t_itemid nameid ); // BOOK READING void clif_readbook(int fd, int book_id, int page); @@ -1022,9 +1022,9 @@ void clif_buyingstore_disappear_entry(struct map_session_data* sd); void clif_buyingstore_disappear_entry_single(struct map_session_data* sd, struct map_session_data* pl_sd); void clif_buyingstore_itemlist(struct map_session_data* sd, struct map_session_data* pl_sd); void clif_buyingstore_trade_failed_buyer(struct map_session_data* sd, short result); -void clif_buyingstore_update_item(struct map_session_data* sd, unsigned short nameid, unsigned short amount, uint32 char_id, int zeny); +void clif_buyingstore_update_item(struct map_session_data* sd, t_itemid nameid, unsigned short amount, uint32 char_id, int zeny); void clif_buyingstore_delete_item(struct map_session_data* sd, short index, unsigned short amount, int price); -void clif_buyingstore_trade_failed_seller(struct map_session_data* sd, short result, unsigned short nameid); +void clif_buyingstore_trade_failed_seller(struct map_session_data* sd, short result, t_itemid nameid); /// Search Store System void clif_search_store_info_ack(struct map_session_data* sd); @@ -1033,7 +1033,7 @@ void clif_open_search_store_info(struct map_session_data* sd); void clif_search_store_info_click_ack(struct map_session_data* sd, short x, short y); /// Cash Shop -void clif_cashshop_result( struct map_session_data* sd, unsigned short item_id, uint16 result ); +void clif_cashshop_result( struct map_session_data* sd, t_itemid item_id, uint16 result ); void clif_cashshop_open( struct map_session_data* sd, int tab ); void clif_display_pinfo(struct map_session_data *sd, int type); @@ -1110,7 +1110,7 @@ void clif_notify_bindOnEquip(struct map_session_data *sd, int n); void clif_merge_item_open(struct map_session_data *sd); -void clif_broadcast_obtain_special_item(const char *char_name, unsigned short nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type); +void clif_broadcast_obtain_special_item(const char *char_name, t_itemid nameid, unsigned short container, enum BROADCASTING_SPECIAL_ITEM_OBTAIN type); void clif_dressing_room(struct map_session_data *sd, int flag); void clif_navigateTo(struct map_session_data *sd, const char* mapname, uint16 x, uint16 y, uint8 flag, bool hideWindow, uint16 mob_id ); diff --git a/src/map/clif_packetdb.hpp b/src/map/clif_packetdb.hpp index cbf20a8a26..234683b8d0 100644 --- a/src/map/clif_packetdb.hpp +++ b/src/map/clif_packetdb.hpp @@ -67,7 +67,7 @@ packet(0x009a,-1); parseable_packet(0x009b,5,clif_parse_ChangeDir,2,4); packet(0x009c,9); - packet(0x009d,17); + packet( HEADER_ZC_ITEM_ENTRY, sizeof( struct PACKET_ZC_ITEM_ENTRY ) ); packet(0x009e,17); parseable_packet(0x009f,6,clif_parse_TakeItem,2); packet(0x00a0,23); @@ -78,7 +78,7 @@ packet(0x00a5,-1); packet(0x00a6,-1); parseable_packet(0x00a7,8,clif_parse_UseItem,2,4); - packet(0x00a8,7); + packet( useItemAckType, sizeof( struct PACKET_ZC_USE_ITEM_ACK ) ); parseable_packet(0x00a9,6,clif_parse_EquipItem,2,4); ack_packet(ZC_WEAR_EQUIP_ACK,0x00aa,7,2,4,6); parseable_packet(0x00ab,4,clif_parse_UnequipItem,2); @@ -154,7 +154,7 @@ packet(0x00f1,2); packet(0x00f2,6); parseable_packet(0x00f3,8,clif_parse_MoveToKafra,2,4); - packet(0x00f4,21); + packet( storageaddType, sizeof( struct PACKET_ZC_ADD_ITEM_TO_STORE ) ); parseable_packet(0x00f5,8,clif_parse_MoveFromKafra,2,4); packet(0x00f6,8); parseable_packet(0x00f7,2,clif_parse_CloseKafra,0); @@ -176,13 +176,13 @@ packet(0x0107,10); parseable_packet(0x0108,-1,clif_parse_PartyMessage,2,4); packet(0x0109,-1); - packet(0x010a,4); + packet( HEADER_ZC_MVP_GETTING_ITEM, sizeof( struct PACKET_ZC_MVP_GETTING_ITEM ) ); packet(0x010b,6); packet(0x010c,6); packet(0x010d,2); packet(0x010e,11); packet(0x010f,-1); - packet(0x0110,10); + packet( HEADER_ZC_ACK_TOUSESKILL, sizeof( PACKET_ZC_ACK_TOUSESKILL ) ); packet(0x0111,39); parseable_packet(0x0112,4,clif_parse_SkillUp,2); parseable_packet(0x0113,10,clif_parse_UseSkillToId,2,4,6); @@ -202,7 +202,7 @@ packet(0x0121,14); packet(0x0122,-1); packet(0x0123,-1); - packet(0x0124,21); + packet( cartaddType, sizeof( struct PACKET_ZC_ADD_ITEM_TO_CART ) ); packet(0x0125,8); parseable_packet(0x0126,8,clif_parse_PutItemToCart,2,4); parseable_packet(0x0127,8,clif_parse_GetItemFromCart,2,4); @@ -309,7 +309,7 @@ packet(0x018c,29); packet(0x018d,-1); parseable_packet( HEADER_CZ_REQMAKINGITEM, sizeof( struct PACKET_CZ_REQMAKINGITEM ), clif_parse_ProduceMix, 0 ); - packet(0x018f,6); + packet( HEADER_ZC_ACK_REQMAKINGITEM, sizeof( PACKET_ZC_ACK_REQMAKINGITEM ) ); parseable_packet(0x0190,90,clif_parse_UseSkillToPosMoreInfo,2,4,6,8,10); packet( HEADER_ZC_TALKBOX_CHATCONTENTS, sizeof( struct PACKET_ZC_TALKBOX_CHATCONTENTS ) ); packet(0x0192,24); @@ -362,11 +362,8 @@ packet(0x01c1,14); packet(0x01c2,10); packet(0x01c3,-1); - packet(0x01c4,22); - packet(0x01c5,22); packet(0x01c6,4); packet(0x01c7,2); - packet(0x01c8,13); packet(0x01c9,97); //packet(0x01ca,-1); packet(0x01cb,9); @@ -636,7 +633,7 @@ parseable_packet(0x0193,21,clif_parse_MoveFromKafra,4,17); packet(0x0221,-1); parseable_packet(0x0222,6,clif_parse_WeaponRefine,2); - packet(0x0223,8); + packet( HEADER_ZC_ACK_WEAPONREFINE, sizeof( struct PACKET_ZC_ACK_WEAPONREFINE ) ); #endif // 2004-12-13aSakexe @@ -1001,8 +998,8 @@ packet(0x0295,-1); packet(0x0296,-1); packet(0x0297,-1); - packet(0x0298,8); - packet(0x0299,6); + packet( HEADER_ZC_CASH_TIME_COUNTER, sizeof( struct PACKET_ZC_CASH_TIME_COUNTER ) ); + packet( HEADER_ZC_CASH_ITEM_DELETE, sizeof( struct PACKET_ZC_CASH_ITEM_DELETE ) ); packet(0x029a,27); packet(0x029c,66); packet(0x029d,-1); @@ -1089,7 +1086,7 @@ packet(0x02b5,-1); parseable_packet(0x02b6,7,clif_parse_questStateAck,2,6); packet(0x02b7,7); - packet(0x02b8,22); + packet( HEADER_ZC_ITEM_PICKUP_PARTY, sizeof( struct PACKET_ZC_ITEM_PICKUP_PARTY ) ); packet(0x02b9,191); parseable_packet(0x02ba,11,clif_parse_Hotkey,2,4,5,9); packet(0x02bb,8); @@ -1739,7 +1736,7 @@ packet(0x081a,4); packet(0x081b,10); packet(0x081c,10); - packet(0x0824,6); + packet( HEADER_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, sizeof( struct PACKET_ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER ) ); #endif // 2010-06-01aRagexeRE @@ -1757,7 +1754,7 @@ parseable_packet(0x0838,2,clif_parse_SearchStoreInfoNextPage,0); packet(0x083A,4); // Search Stalls Feature parseable_packet(0x083B,2,clif_parse_CloseSearchStoreInfo,0); - parseable_packet(0x083C,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet( HEADER_CZ_SSILIST_ITEM_CLICK, sizeof( struct PACKET_CZ_SSILIST_ITEM_CLICK ), clif_parse_SearchStoreInfoListItemClick, 0 ); packet(0x083D,6); #endif @@ -1867,7 +1864,7 @@ parseable_packet(0x089e,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); parseable_packet(0x08ab,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); parseable_packet(0x088b,2,clif_parse_SearchStoreInfoNextPage,0); - parseable_packet(0x08a2,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x08a2,sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK),clif_parse_SearchStoreInfoListItemClick,2,6,10); packet(0x08cf,10); //Amulet spirits #endif @@ -1899,7 +1896,7 @@ parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); parseable_packet(0x0884,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); - parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0838,sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK),clif_parse_SearchStoreInfoListItemClick,2,6,10); parseable_packet(0x0439,8,clif_parse_UseItem,2,4); parseable_packet(0x0365,41,clif_parse_PartyBookingRegisterReq,2,4,6); // New Packet @@ -1926,7 +1923,7 @@ parseable_packet(0x0811,-1,clif_parse_ReqTradeBuyingStore,2,4,8,12); parseable_packet(0x0819,-1,clif_parse_SearchStoreInfo,2,4,5,9,13,14,15); parseable_packet(0x0835,2,clif_parse_SearchStoreInfoNextPage,0); - parseable_packet(0x0838,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0838,sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK),clif_parse_SearchStoreInfoListItemClick,2,6,10); parseable_packet(0x0437,5,clif_parse_WalkToXY,2); parseable_packet(0x0886,6,clif_parse_TickSend,2); parseable_packet(0x0871,5,clif_parse_ChangeDir,2,4); @@ -2046,7 +2043,7 @@ //parseable_packet(0x0281,-1,clif_parse_ItemListWindowSelected,2,4,8,12); parseable_packet(0x035f,6,clif_parse_ReqClickBuyingStore,2); parseable_packet(0x0363,6,clif_parse_TickSend,2); - parseable_packet(0x0365,12,clif_parse_SearchStoreInfoListItemClick,2,6,10); + parseable_packet(0x0365,sizeof(struct PACKET_CZ_SSILIST_ITEM_CLICK),clif_parse_SearchStoreInfoListItemClick,2,6,10); parseable_packet(0x0438,6,clif_parse_DropItem,2,4); parseable_packet(0x0447,2,clif_parse_blocking_playcancel,0); // CZ_BLOCKING_PLAY_CANCEL parseable_packet(0x044A,6,clif_parse_client_version,2); @@ -2163,7 +2160,7 @@ parseable_packet(0x09D4,2,clif_parse_NPCShopClosed,0); //NPC Market packet(0x09D5,-1); - parseable_packet(0x09D6,-1,clif_parse_NPCMarketPurchase,2,4,6); + parseable_packet( HEADER_CZ_NPC_MARKET_PURCHASE, -1, clif_parse_NPCMarketPurchase, 0 ); packet(0x09D7,-1); parseable_packet(0x09D8,2,clif_parse_NPCMarketClosed,0); // Clan System @@ -2223,7 +2220,7 @@ parseable_packet(0x0A1D,2,clif_parse_roulette_close,0); // CZ_REQ_CLOSE_ROULETTE packet(0x0A1E,3); // ZC_ACK_CLOSE_ROULETTE parseable_packet(0x0A1F,2,clif_parse_roulette_generate,0); // CZ_REQ_GENERATE_ROULETTE - packet(0x0A20,21); // ZC_ACK_GENERATE_ROULETTE + packet( roulettgenerateackType, sizeof( struct packet_roulette_generate_ack ) ); // ZC_ACK_GENERATE_ROULETTE parseable_packet(0x0A21,3,clif_parse_roulette_item,2); // CZ_RECV_ROULETTE_ITEM packet(0x0A22,5); // ZC_RECV_ROULETTE_ITEM #endif @@ -2244,8 +2241,6 @@ // 2015-02-25aRagexeRE #if PACKETVER >= 20150225 packet(0x0A09,45); // ZC_ADD_EXCHANGE_ITEM3 - packet(0x0A0A,47); // ZC_ADD_ITEM_TO_STORE3 - packet(0x0A0B,47); // ZC_ADD_ITEM_TO_CART3 packet(0x0A0C,56); // ZC_ITEM_PICKUP_ACK_V6 packet(0x0A0D,-1); // ZC_INVENTORY_ITEMLIST_EQUIP_V6 packet(0x0A0F,-1); // ZC_CART_ITEMLIST_EQUIP_V6 diff --git a/src/map/intif.cpp b/src/map/intif.cpp index 65c54f145c..a341addd07 100644 --- a/src/map/intif.cpp +++ b/src/map/intif.cpp @@ -95,24 +95,24 @@ struct map_session_data *inter_search_sd(uint32 account_id, uint32 char_id) * @param pet_name * @return */ -int intif_create_pet(uint32 account_id,uint32 char_id,short pet_class,short pet_lv, unsigned short pet_egg_id, unsigned short pet_equip,short intimate,short hungry,char rename_flag,char incubate,char *pet_name) +int intif_create_pet(uint32 account_id,uint32 char_id,short pet_class,short pet_lv, t_itemid pet_egg_id, t_itemid pet_equip,short intimate,short hungry,char rename_flag,char incubate,char *pet_name) { if (CheckForCharServer()) return 0; - WFIFOHEAD(inter_fd, 24 + NAME_LENGTH); - WFIFOW(inter_fd,0) = 0x3080; - WFIFOL(inter_fd,2) = account_id; - WFIFOL(inter_fd,6) = char_id; - WFIFOW(inter_fd,10) = pet_class; - WFIFOW(inter_fd,12) = pet_lv; - WFIFOW(inter_fd,14) = pet_egg_id; - WFIFOW(inter_fd,16) = pet_equip; - WFIFOW(inter_fd,18) = intimate; - WFIFOW(inter_fd,20) = hungry; - WFIFOB(inter_fd,22) = rename_flag; - WFIFOB(inter_fd,23) = incubate; - memcpy(WFIFOP(inter_fd,24),pet_name,NAME_LENGTH); - WFIFOSET(inter_fd,24+NAME_LENGTH); + WFIFOHEAD(inter_fd, 28 + NAME_LENGTH); + WFIFOW(inter_fd, 0) = 0x3080; + WFIFOL(inter_fd, 2) = account_id; + WFIFOL(inter_fd, 6) = char_id; + WFIFOW(inter_fd, 10) = pet_class; + WFIFOW(inter_fd, 12) = pet_lv; + WFIFOL(inter_fd, 14) = pet_egg_id; + WFIFOL(inter_fd, 18) = pet_equip; + WFIFOW(inter_fd, 22) = intimate; + WFIFOW(inter_fd, 24) = hungry; + WFIFOB(inter_fd, 26) = rename_flag; + WFIFOB(inter_fd, 27) = incubate; + memcpy(WFIFOP(inter_fd, 28), pet_name, NAME_LENGTH); + WFIFOSET(inter_fd, 28 + NAME_LENGTH); return 1; } @@ -2285,8 +2285,8 @@ int intif_achievement_reward(struct map_session_data *sd, struct s_achievement_d WFIFOW(inter_fd, 0) = 0x3064; WFIFOL(inter_fd, 2) = sd->status.char_id; WFIFOL(inter_fd, 6) = adb->achievement_id; - WFIFOW(inter_fd, 10) = adb->rewards.nameid; - WFIFOL(inter_fd, 12) = adb->rewards.amount; + WFIFOL(inter_fd, 10) = adb->rewards.nameid; + WFIFOW(inter_fd, 14) = adb->rewards.amount; safestrncpy(WFIFOCP(inter_fd, 16), sd->status.name, NAME_LENGTH); safestrncpy(WFIFOCP(inter_fd, 16+NAME_LENGTH), adb->name.c_str(), ACHIEVEMENT_NAME_LENGTH); WFIFOSET(inter_fd, 16+NAME_LENGTH+ACHIEVEMENT_NAME_LENGTH); @@ -3250,14 +3250,14 @@ void intif_parse_MessageToFD(int fd) { /** * Request to send broadcast item to all servers - * ZI 3009 .W .W .W .W .B .?B + * ZI 3009 .W .W .N .W .B .?B * @param sd Player who obtain the item * @param nameid Obtained item * @param sourceid Source of item, another item ID or monster ID * @param type Obtain type @see enum BROADCASTING_SPECIAL_ITEM_OBTAIN * @return **/ -int intif_broadcast_obtain_special_item(struct map_session_data *sd, unsigned short nameid, unsigned int sourceid, unsigned char type) { +int intif_broadcast_obtain_special_item(struct map_session_data *sd, t_itemid nameid, t_itemid sourceid, unsigned char type) { nullpo_retr(0, sd); // Should not be here! @@ -3275,13 +3275,13 @@ int intif_broadcast_obtain_special_item(struct map_session_data *sd, unsigned sh if (other_mapserver_count < 1) return 0; - WFIFOHEAD(inter_fd, 9 + NAME_LENGTH); + WFIFOHEAD(inter_fd, 11 + NAME_LENGTH); WFIFOW(inter_fd, 0) = 0x3009; - WFIFOW(inter_fd, 2) = 9 + NAME_LENGTH; - WFIFOW(inter_fd, 4) = nameid; - WFIFOW(inter_fd, 6) = sourceid; - WFIFOB(inter_fd, 8) = type; - safestrncpy(WFIFOCP(inter_fd, 9), sd->status.name, NAME_LENGTH); + WFIFOW(inter_fd, 2) = 11 + NAME_LENGTH; + WFIFOL(inter_fd, 4) = nameid; + WFIFOW(inter_fd, 8) = sourceid; + WFIFOB(inter_fd, 10) = type; + safestrncpy(WFIFOCP(inter_fd, 11), sd->status.name, NAME_LENGTH); WFIFOSET(inter_fd, WFIFOW(inter_fd, 2)); return 1; @@ -3290,13 +3290,13 @@ int intif_broadcast_obtain_special_item(struct map_session_data *sd, unsigned sh /** * Request to send broadcast item to all servers. * TODO: Confirm the usage. Maybe on getitem-like command? - * ZI 3009 .W .W .W .W .B .24B .24B + * ZI 3009 .W .W .N .W .B .24B .24B * @param sd Player who obtain the item * @param nameid Obtained item * @param srcname Source name * @return **/ -int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigned short nameid) { +int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, t_itemid nameid) { nullpo_retr(0, sd); // Send local @@ -3308,13 +3308,13 @@ int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigne if (other_mapserver_count < 1) return 0; - WFIFOHEAD(inter_fd, 9 + NAME_LENGTH*2); + WFIFOHEAD(inter_fd, 11 + NAME_LENGTH*2); WFIFOW(inter_fd, 0) = 0x3009; - WFIFOW(inter_fd, 2) = 9 + NAME_LENGTH*2; - WFIFOW(inter_fd, 4) = nameid; - WFIFOW(inter_fd, 6) = 0; - WFIFOB(inter_fd, 8) = ITEMOBTAIN_TYPE_NPC; - safestrncpy(WFIFOCP(inter_fd, 9), sd->status.name, NAME_LENGTH); + WFIFOW(inter_fd, 2) = 11 + NAME_LENGTH*2; + WFIFOL(inter_fd, 4) = nameid; + WFIFOW(inter_fd, 8) = 0; + WFIFOB(inter_fd, 10) = ITEMOBTAIN_TYPE_NPC; + safestrncpy(WFIFOCP(inter_fd, 11), sd->status.name, NAME_LENGTH); WFIFOSET(inter_fd, WFIFOW(inter_fd, 2)); return 1; @@ -3322,18 +3322,18 @@ int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigne /** * Received broadcast item and broadcast on local map. - * IZ 3809 .W .W .W .W .B .24B .24B + * IZ 3809 .W .W .L .W .B .24B .24B * @param fd **/ void intif_parse_broadcast_obtain_special_item(int fd) { - int type = RFIFOB(fd, 8); + int type = RFIFOB(fd, 10); char name[NAME_LENGTH]; - safestrncpy(name, RFIFOCP(fd, 9), NAME_LENGTH); + safestrncpy(name, RFIFOCP(fd, 11), NAME_LENGTH); if (type == ITEMOBTAIN_TYPE_NPC) - safestrncpy(name, RFIFOCP(fd, 9 + NAME_LENGTH), NAME_LENGTH); + safestrncpy(name, RFIFOCP(fd, 11 + NAME_LENGTH), NAME_LENGTH); - clif_broadcast_obtain_special_item(name, RFIFOW(fd, 4), RFIFOW(fd, 6), (enum BROADCASTING_SPECIAL_ITEM_OBTAIN)type); + clif_broadcast_obtain_special_item(name, RFIFOL(fd, 4), RFIFOW(fd, 8), (enum BROADCASTING_SPECIAL_ITEM_OBTAIN)type); } /*========================================== diff --git a/src/map/intif.hpp b/src/map/intif.hpp index b3acb8b770..2df41f4f67 100644 --- a/src/map/intif.hpp +++ b/src/map/intif.hpp @@ -23,8 +23,8 @@ int intif_parse(int fd); int intif_broadcast(const char* mes, int len, int type); int intif_broadcast2(const char* mes, int len, unsigned long fontColor, short fontType, short fontSize, short fontAlign, short fontY); -int intif_broadcast_obtain_special_item(struct map_session_data *sd, unsigned short nameid, unsigned int sourceid, unsigned char type); -int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, unsigned short nameid); +int intif_broadcast_obtain_special_item(struct map_session_data *sd, t_itemid nameid, unsigned int sourceid, unsigned char type); +int intif_broadcast_obtain_special_item_npc(struct map_session_data *sd, t_itemid nameid); int intif_main_message(struct map_session_data* sd, const char* message); int intif_wis_message(struct map_session_data *sd,char *nick,char *mes,int mes_len); @@ -70,7 +70,7 @@ int intif_guild_castle_datasave(int castle_id, int index, int value); void intif_itembound_guild_retrieve(uint32 char_id, uint32 account_id, int guild_id); #endif -int intif_create_pet(uint32 account_id, uint32 char_id, short pet_type, short pet_lv, unsigned short pet_egg_id, unsigned short pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name); +int intif_create_pet(uint32 account_id, uint32 char_id, short pet_type, short pet_lv, t_itemid pet_egg_id, t_itemid pet_equip, short intimate, short hungry, char rename_flag, char incubate, char *pet_name); int intif_request_petdata(uint32 account_id, uint32 char_id, int pet_id); int intif_save_petdata(uint32 account_id, struct s_pet *p); int intif_delete_petdata(int pet_id); diff --git a/src/map/itemdb.cpp b/src/map/itemdb.cpp index 56ced4d34e..e1131beb46 100644 --- a/src/map/itemdb.cpp +++ b/src/map/itemdb.cpp @@ -55,7 +55,7 @@ struct s_item_group_db *itemdb_group_exists(unsigned short group_id) { * @param nameid: Item to check for in group * @return True if item is in group, else false */ -bool itemdb_group_item_exists(unsigned short group_id, unsigned short nameid) +bool itemdb_group_item_exists(unsigned short group_id, t_itemid nameid) { struct s_item_group_db *group = (struct s_item_group_db *)uidb_get(itemdb_group, group_id); unsigned short i, j; @@ -219,7 +219,7 @@ struct s_item_group_entry *itemdb_get_randgroupitem(uint16 group_id, uint8 sub_g * @param sub_group: 0 is 'must' item group, random groups start from 1 to MAX_ITEMGROUP_RANDGROUP+1 * @return Item ID or UNKNOWN_ITEM_ID on fail */ -unsigned short itemdb_searchrandomid(uint16 group_id, uint8 sub_group) { +t_itemid itemdb_searchrandomid(uint16 group_id, uint8 sub_group) { struct s_item_group_entry *entry = itemdb_get_randgroupitem(group_id, sub_group); return entry ? entry->nameid : UNKNOWN_ITEM_ID; } @@ -310,7 +310,7 @@ char itemdb_pc_get_itemgroup(uint16 group_id, bool identify, struct map_session_ * @param nameid * @return *item_data if item is exist, or NULL if not */ -struct item_data* itemdb_exists(unsigned short nameid) { +struct item_data* itemdb_exists(t_itemid nameid) { return ((struct item_data*)uidb_get(itemdb,nameid)); } @@ -452,7 +452,7 @@ static void itemdb_create_dummy(void) { * Create new item data * @param nameid */ -static struct item_data *itemdb_create_item(unsigned short nameid) { +static struct item_data *itemdb_create_item(t_itemid nameid) { struct item_data *id; CREATE(id, struct item_data, 1); memset(id, 0, sizeof(struct item_data)); @@ -467,12 +467,12 @@ static struct item_data *itemdb_create_item(unsigned short nameid) { * @param nameid * @return *item_data or *dummy_item if item not found *------------------------------------------*/ -struct item_data* itemdb_search(unsigned short nameid) { +struct item_data* itemdb_search(t_itemid nameid) { struct item_data* id = NULL; if (nameid == dummy_item->nameid) id = dummy_item; else if (!(id = (struct item_data*)uidb_get(itemdb, nameid))) { - ShowWarning("itemdb_search: Item ID %hu does not exists in the item_db. Using dummy data.\n", nameid); + ShowWarning("itemdb_search: Item ID %u does not exists in the item_db. Using dummy data.\n", nameid); id = dummy_item; } return id; @@ -572,7 +572,7 @@ bool itemdb_ishatched_egg(struct item* item) { /** Specifies if item-type should drop unidentified. * @param nameid ID of item */ -char itemdb_isidentified(unsigned short nameid) { +char itemdb_isidentified(t_itemid nameid) { int type=itemdb_type(nameid); switch (type) { case IT_WEAPON: @@ -589,18 +589,18 @@ char itemdb_isidentified(unsigned short nameid) { * Structure: , */ static bool itemdb_read_itemavail(char* str[], int columns, int current) { - unsigned short nameid, sprite; + t_itemid nameid, sprite; struct item_data *id; - nameid = atoi(str[0]); + nameid = strtoul(str[0], nullptr, 10); if( ( id = itemdb_exists(nameid) ) == NULL ) { - ShowWarning("itemdb_read_itemavail: Invalid item id %hu.\n", nameid); + ShowWarning("itemdb_read_itemavail: Invalid item id %u.\n", nameid); return false; } - sprite = atoi(str[1]); + sprite = strtoul(str[1], nullptr, 10); if( sprite > 0 ) { @@ -692,7 +692,7 @@ static bool itemdb_read_group(char* str[], int columns, int current) { str[1] = trim(str[1]); // Check if the item can be found by id - if( ( entry.nameid = atoi(str[1]) ) <= 0 || !itemdb_exists( entry.nameid ) ){ + if( ( entry.nameid = strtoul(str[1], nullptr, 10) ) <= 0 || !itemdb_exists( entry.nameid ) ){ // Otherwise look it up by name struct item_data *id = itemdb_searchname(str[1]); @@ -748,16 +748,16 @@ static bool itemdb_read_group(char* str[], int columns, int current) { * Structure: , */ static bool itemdb_read_noequip(char* str[], int columns, int current) { - unsigned short nameid; + t_itemid nameid; int flag; struct item_data *id; - nameid = atoi(str[0]); + nameid = strtoul(str[0], nullptr, 10); flag = atoi(str[1]); if( ( id = itemdb_exists(nameid) ) == NULL ) { - ShowWarning("itemdb_read_noequip: Invalid item id %hu.\n", nameid); + ShowWarning("itemdb_read_noequip: Invalid item id %u.\n", nameid); return false; } @@ -773,10 +773,11 @@ static bool itemdb_read_noequip(char* str[], int columns, int current) { * Structure: ,, */ static bool itemdb_read_itemtrade(char* str[], int columns, int current) { - unsigned short nameid, flag, gmlv; + t_itemid nameid; + unsigned short flag, gmlv; struct item_data *id; - nameid = atoi(str[0]); + nameid = strtoul(str[0], nullptr, 10); if( ( id = itemdb_exists(nameid) ) == NULL ) { @@ -790,12 +791,12 @@ static bool itemdb_read_itemtrade(char* str[], int columns, int current) { gmlv = atoi(str[2]); if( flag > 511 ) {//Check range - ShowWarning("itemdb_read_itemtrade: Invalid trading mask %hu for item id %hu.\n", flag, nameid); + ShowWarning("itemdb_read_itemtrade: Invalid trading mask %hu for item id %u.\n", flag, nameid); return false; } if( gmlv < 1 ) { - ShowWarning("itemdb_read_itemtrade: Invalid override GM level %hu for item id %hu.\n", gmlv, nameid); + ShowWarning("itemdb_read_itemtrade: Invalid override GM level %hu for item id %u.\n", gmlv, nameid); return false; } @@ -809,15 +810,15 @@ static bool itemdb_read_itemtrade(char* str[], int columns, int current) { * Structure: ,{,} */ static bool itemdb_read_itemdelay(char* str[], int columns, int current) { - unsigned short nameid; + t_itemid nameid; int delay; struct item_data *id; - nameid = atoi(str[0]); + nameid = strtoul(str[0], nullptr, 10); if( ( id = itemdb_exists(nameid) ) == NULL ) { - ShowWarning("itemdb_read_itemdelay: Invalid item id %hu.\n", nameid); + ShowWarning("itemdb_read_itemdelay: Invalid item id %u.\n", nameid); return false; } @@ -825,7 +826,7 @@ static bool itemdb_read_itemdelay(char* str[], int columns, int current) { if( delay < 0 ) { - ShowWarning("itemdb_read_itemdelay: Invalid delay %d for item id %hu.\n", delay, nameid); + ShowWarning("itemdb_read_itemdelay: Invalid delay %d for item id %u.\n", delay, nameid); return false; } @@ -839,7 +840,7 @@ static bool itemdb_read_itemdelay(char* str[], int columns, int current) { int64 constant; if( !script_get_constant(trim(str[2]), &constant) ){ - ShowWarning("itemdb_read_itemdelay: Invalid sc group \"%s\" for item id %hu.\n", str[2], nameid); + ShowWarning("itemdb_read_itemdelay: Invalid sc group \"%s\" for item id %u.\n", str[2], nameid); return false; } @@ -853,21 +854,22 @@ static bool itemdb_read_itemdelay(char* str[], int columns, int current) { * Structure: ,, */ static bool itemdb_read_stack(char* fields[], int columns, int current) { - unsigned short nameid, amount; + t_itemid nameid; + unsigned short amount; unsigned int type; struct item_data* id; - nameid = (unsigned short)strtoul(fields[0], NULL, 10); + nameid = strtoul(fields[0], nullptr, 10); if( ( id = itemdb_exists(nameid) ) == NULL ) { - ShowWarning("itemdb_read_stack: Unknown item id '%hu'.\n", nameid); + ShowWarning("itemdb_read_stack: Unknown item id '%u'.\n", nameid); return false; } if( !itemdb_isstackable2(id) ) { - ShowWarning("itemdb_read_stack: Item id '%hu' is not stackable.\n", nameid); + ShowWarning("itemdb_read_stack: Item id '%u' is not stackable.\n", nameid); return false; } @@ -892,20 +894,20 @@ static bool itemdb_read_stack(char* fields[], int columns, int current) { * */ static bool itemdb_read_buyingstore(char* fields[], int columns, int current) { - unsigned short nameid; + t_itemid nameid; struct item_data* id; - nameid = atoi(fields[0]); + nameid = strtoul(fields[0], nullptr, 10); if( ( id = itemdb_exists(nameid) ) == NULL ) { - ShowWarning("itemdb_read_buyingstore: Invalid item id %hu.\n", nameid); + ShowWarning("itemdb_read_buyingstore: Invalid item id %u.\n", nameid); return false; } if( !itemdb_isstackable2(id) ) { - ShowWarning("itemdb_read_buyingstore: Non-stackable item id %hu cannot be enabled for buying store.\n", nameid); + ShowWarning("itemdb_read_buyingstore: Non-stackable item id %u cannot be enabled for buying store.\n", nameid); return false; } @@ -918,13 +920,14 @@ static bool itemdb_read_buyingstore(char* fields[], int columns, int current) { * ,, */ static bool itemdb_read_nouse(char* fields[], int columns, int current) { - unsigned short nameid, flag, override; + t_itemid nameid; + unsigned short flag, override; struct item_data* id; - nameid = atoi(fields[0]); + nameid = strtoul(fields[0], nullptr, 10); if( ( id = itemdb_exists(nameid) ) == NULL ) { - ShowWarning("itemdb_read_nouse: Invalid item id %hu.\n", nameid); + ShowWarning("itemdb_read_nouse: Invalid item id %u.\n", nameid); return false; } @@ -944,13 +947,13 @@ static bool itemdb_read_nouse(char* fields[], int columns, int current) { * &4 - GUID item, cannot be stacked even same or stackable item */ static bool itemdb_read_flag(char* fields[], int columns, int current) { - unsigned short nameid = atoi(fields[0]); + t_itemid nameid = strtoul(fields[0], nullptr, 10); uint16 flag; bool set; struct item_data *id; if (!(id = itemdb_exists(nameid))) { - ShowError("itemdb_read_flag: Invalid item id %hu\n", nameid); + ShowError("itemdb_read_flag: Invalid item id %u\n", nameid); return true; } @@ -1092,7 +1095,7 @@ static void itemdb_read_combos(const char* basedir, bool silent) { RECREATE(id->combos, struct item_combo*, ++id->combos_count); } CREATE(id->combos[idx],struct item_combo,1); - id->combos[idx]->nameid = (unsigned short*)aMalloc( retcount * sizeof(unsigned short) ); + id->combos[idx]->nameid = (t_itemid *)aMalloc(retcount * sizeof(t_itemid)); id->combos[idx]->count = retcount; id->combos[idx]->script = parse_script(str[1], path, lines, 0); id->combos[idx]->id = count; @@ -1153,29 +1156,30 @@ bool itemdb_parse_roulette_db(void) for (k = 0; k < limit && SQL_SUCCESS == Sql_NextRow(mmysql_handle); k++) { char* data; - unsigned short item_id, amount; + t_itemid item_id; + unsigned short amount; int level, flag; Sql_GetData(mmysql_handle, 1, &data, NULL); level = atoi(data); - Sql_GetData(mmysql_handle, 2, &data, NULL); item_id = atoi(data); + Sql_GetData(mmysql_handle, 2, &data, NULL); item_id = strtoul(data, nullptr, 10); Sql_GetData(mmysql_handle, 3, &data, NULL); amount = atoi(data); Sql_GetData(mmysql_handle, 4, &data, NULL); flag = atoi(data); if (!itemdb_exists(item_id)) { - ShowWarning("itemdb_parse_roulette_db: Unknown item ID '%hu' in level '%d'\n", item_id, level); + ShowWarning("itemdb_parse_roulette_db: Unknown item ID '%u' in level '%d'\n", item_id, level); continue; } if (amount < 1 || amount > MAX_AMOUNT){ - ShowWarning("itemdb_parse_roulette_db: Unsupported amount '%hu' for item ID '%hu' in level '%d'\n", amount, item_id, level); + ShowWarning("itemdb_parse_roulette_db: Unsupported amount '%hu' for item ID '%u' in level '%d'\n", amount, item_id, level); continue; } if (flag < 0 || flag > 1) { - ShowWarning("itemdb_parse_roulette_db: Unsupported flag '%d' for item ID '%hu' in level '%d'\n", flag, item_id, level); + ShowWarning("itemdb_parse_roulette_db: Unsupported flag '%d' for item ID '%u' in level '%d'\n", flag, item_id, level); continue; } j = rd.items[i]; - RECREATE(rd.nameid[i], unsigned short, ++rd.items[i]); + RECREATE(rd.nameid[i], t_itemid, ++rd.items[i]); RECREATE(rd.qty[i], unsigned short, rd.items[i]); RECREATE(rd.flag[i], int, rd.items[i]); @@ -1206,7 +1210,7 @@ bool itemdb_parse_roulette_db(void) ShowWarning("itemdb_parse_roulette_db: Level %d has %d items, %d are required. Filling with Apples...\n", i + 1, rd.items[i], limit); rd.items[i] = limit; - RECREATE(rd.nameid[i], unsigned short, rd.items[i]); + RECREATE(rd.nameid[i], t_itemid, rd.items[i]); RECREATE(rd.qty[i], unsigned short, rd.items[i]); RECREATE(rd.flag[i], int, rd.items[i]); @@ -1303,15 +1307,16 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr | id | name_english | name_japanese | type | price_buy | price_sell | weight | attack | defence | range | slots | equip_jobs | equip_upper | equip_genders | equip_locations | weapon_level | equip_level | refineable | view | script | equip_script | unequip_script | +----+--------------+---------------+------+-----------+------------+--------+--------+---------+-------+-------+------------+-------------+---------------+-----------------+--------------+-------------+------------+------+--------+--------------+----------------+ */ - unsigned short nameid; + t_itemid nameid; struct item_data* id; - if( atoi(str[0]) <= 0 || atoi(str[0]) >= MAX_ITEMID || atoi(str[0]) == dummy_item->nameid ) + nameid = strtoul(str[0], nullptr, 10); + + if( nameid == 0 || nameid == dummy_item->nameid ) { - ShowWarning("itemdb_parse_dbrow: Invalid id %d in line %d of \"%s\", skipping.\n", atoi(str[0]), line, source); + ShowWarning("itemdb_parse_dbrow: Invalid id %d in line %d of \"%s\", skipping.\n", nameid, line, source); return false; } - nameid = atoi(str[0]); //ID,Name,Jname,Type,Price,Sell,Weight,ATK,DEF,Range,Slot,Job,Job Upper,Gender,Loc,wLV,eLV,refineable,View if (!(id = itemdb_exists(nameid))) { @@ -1330,7 +1335,7 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr if( id->type < 0 || id->type == IT_UNKNOWN || id->type == IT_UNKNOWN2 || ( id->type > IT_SHADOWGEAR && id->type < IT_CASH ) || id->type >= IT_MAX ) {// catch invalid item types - ShowWarning("itemdb_parse_dbrow: Invalid item type %d for item %hu. IT_ETC will be used.\n", id->type, nameid); + ShowWarning("itemdb_parse_dbrow: Invalid item type %d for item %u. IT_ETC will be used.\n", id->type, nameid); id->type = IT_ETC; } @@ -1355,13 +1360,13 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr /* if ( !str[4][0] && !str[5][0]) { - ShowWarning("itemdb_parse_dbrow: No buying/selling price defined for item %hu (%s), using 20/10z\n", nameid, id->jname); + ShowWarning("itemdb_parse_dbrow: No buying/selling price defined for item %u (%s), using 20/10z\n", nameid, id->jname); id->value_buy = 20; id->value_sell = 10; } else */ if (id->value_buy/124. < id->value_sell/75.) - ShowWarning("itemdb_parse_dbrow: Buying/Selling [%d/%d] price of item %hu (%s) allows Zeny making exploit through buying/selling at discounted/overcharged prices!\n", + ShowWarning("itemdb_parse_dbrow: Buying/Selling [%d/%d] price of item %u (%s) allows Zeny making exploit through buying/selling at discounted/overcharged prices!\n", id->value_buy, id->value_sell, nameid, id->jname); id->weight = atoi(str[6]); @@ -1376,7 +1381,7 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr if (id->slot > MAX_SLOTS) { - ShowWarning("itemdb_parse_dbrow: Item %hu (%s) specifies %d slots, but the server only supports up to %d. Using %d slots.\n", nameid, id->jname, id->slot, MAX_SLOTS, MAX_SLOTS); + ShowWarning("itemdb_parse_dbrow: Item %u (%s) specifies %d slots, but the server only supports up to %d. Using %d slots.\n", nameid, id->jname, id->slot, MAX_SLOTS, MAX_SLOTS); id->slot = MAX_SLOTS; } @@ -1387,13 +1392,13 @@ static bool itemdb_parse_dbrow(char** str, const char* source, int line, int scr if (!id->equip && itemdb_isequip2(id)) { - ShowWarning("Item %hu (%s) is an equipment with no equip-field! Making it an etc item.\n", nameid, id->jname); + ShowWarning("Item %u (%s) is an equipment with no equip-field! Making it an etc item.\n", nameid, id->jname); id->type = IT_ETC; } if( id->type != IT_SHADOWGEAR && id->equip&EQP_SHADOW_GEAR ) { - ShowWarning("Item %hu (%s) have invalid equipment slot! Making it an etc item.\n", nameid, id->jname); + ShowWarning("Item %u (%s) have invalid equipment slot! Making it an etc item.\n", nameid, id->jname); id->type = IT_ETC; } diff --git a/src/map/itemdb.hpp b/src/map/itemdb.hpp index 12498ca2a7..00cb4748ee 100644 --- a/src/map/itemdb.hpp +++ b/src/map/itemdb.hpp @@ -7,10 +7,10 @@ #include "../common/db.hpp" #include "../common/mmo.hpp" // ITEM_NAME_LENGTH -///Maximum allowed Item ID (range: 1 ~ 65,534) -#define MAX_ITEMID USHRT_MAX + + ///Use apple for unknown items. -#define UNKNOWN_ITEM_ID 512 +const t_itemid UNKNOWN_ITEM_ID = 512; /// The maximum number of item delays #define MAX_ITEMDELAYS 10 ///Designed for search functions, species max number of matches to display. @@ -23,15 +23,15 @@ #define MAX_ROULETTE_LEVEL 7 /** client-defined value **/ #define MAX_ROULETTE_COLUMNS 9 /** client-defined value **/ -#define CARD0_FORGE 0x00FF -#define CARD0_CREATE 0x00FE -#define CARD0_PET 0x0100 +const t_itemid CARD0_FORGE = 0x00FF; +const t_itemid CARD0_CREATE = 0x00FE; +const t_itemid CARD0_PET = 0x0100; ///Marks if the card0 given is "special" (non-item id used to mark pets/created items. [Skotlex] #define itemdb_isspecial(i) (i == CARD0_FORGE || i == CARD0_CREATE || i == CARD0_PET) ///Enum of item id (for hardcoded purpose) -enum item_itemid +enum item_itemid : t_itemid { ITEMID_DUMMY = 499, ITEMID_RED_POTION = 501, @@ -116,7 +116,7 @@ enum item_itemid }; ///Rune Knight -enum rune_item_list +enum rune_item_list : t_itemid { ITEMID_NAUTHIZ = 12725, ITEMID_RAIDO, @@ -131,7 +131,7 @@ enum rune_item_list }; ///Mechanic -enum mechanic_item_list +enum mechanic_item_list : t_itemid { ITEMID_ACCELERATOR = 2800, ITEMID_HOVERING_BOOSTER, @@ -154,7 +154,7 @@ enum mechanic_item_list }; ///Genetic -enum genetic_item_list +enum genetic_item_list : t_itemid { ITEMID_SEED_OF_HORNY_PLANT = 6210, ITEMID_BLOODSUCK_PLANT_SEED, @@ -194,7 +194,7 @@ enum genetic_item_list }; ///Guillotine Cross -enum poison_item_list +enum poison_item_list : t_itemid { ITEMID_PARALYSE = 12717, ITEMID_LEECHESEND, @@ -759,7 +759,7 @@ enum e_itemshop_restrictions { struct item_combo { struct script_code *script; - unsigned short *nameid;/* nameid array */ + t_itemid *nameid;/* nameid array */ unsigned char count; unsigned short id;/* id of this combo */ bool isRef;/* whether this struct is a reference or the master */ @@ -769,8 +769,8 @@ struct item_combo /// Struct of item group entry struct s_item_group_entry { - unsigned short nameid, /// Item ID - duration, /// Duration if item as rental item (in minutes) + t_itemid nameid; /// Item ID + unsigned short duration, /// Duration if item as rental item (in minutes) amount; /// Amount of item will be obtained bool isAnnounced, /// Broadcast if player get this item GUID, /// Gives Unique ID for items in each box opened @@ -796,8 +796,8 @@ struct s_item_group_db /// Struct of Roulette db struct s_roulette_db { - unsigned short *nameid[MAX_ROULETTE_LEVEL], /// Item ID - *qty[MAX_ROULETTE_LEVEL]; /// Amount of Item ID + t_itemid *nameid[MAX_ROULETTE_LEVEL]; /// Item ID + unsigned short *qty[MAX_ROULETTE_LEVEL]; /// Amount of Item ID int *flag[MAX_ROULETTE_LEVEL]; /// Whether the item is for loss or win int items[MAX_ROULETTE_LEVEL]; /// Number of items in the list for each }; @@ -806,7 +806,7 @@ extern struct s_roulette_db rd; ///Main item data struct struct item_data { - unsigned short nameid; + t_itemid nameid; char name[ITEM_NAME_LENGTH],jname[ITEM_NAME_LENGTH]; //Do not add stuff between value_buy and view_id (see how getiteminfo works) @@ -824,7 +824,7 @@ struct item_data int look; int elv; int wlv; - int view_id; + t_itemid view_id; int elvmax; ///< Maximum level for this item #ifdef RENEWAL int matk; @@ -906,8 +906,8 @@ struct s_random_opt_group { struct item_data* itemdb_searchname(const char *name); struct item_data* itemdb_search_aegisname( const char *str ); int itemdb_searchname_array(struct item_data** data, int size, const char *str); -struct item_data* itemdb_search(unsigned short nameid); -struct item_data* itemdb_exists(unsigned short nameid); +struct item_data* itemdb_search(uint32 nameid); +struct item_data* itemdb_exists(uint32 nameid); #define itemdb_name(n) itemdb_search(n)->name #define itemdb_jname(n) itemdb_search(n)->jname #define itemdb_type(n) itemdb_search(n)->type @@ -930,7 +930,7 @@ const char* itemdb_typename(enum item_types type); const char *itemdb_typename_ammo (enum e_item_ammo ammo); struct s_item_group_entry *itemdb_get_randgroupitem(uint16 group_id, uint8 sub_group); -unsigned short itemdb_searchrandomid(uint16 group_id, uint8 sub_group); +t_itemid itemdb_searchrandomid(uint16 group_id, uint8 sub_group); #define itemdb_value_buy(n) itemdb_search(n)->value_buy #define itemdb_value_sell(n) itemdb_search(n)->value_sell @@ -959,7 +959,7 @@ bool itemdb_ishatched_egg(struct item* item); bool itemdb_isequip2(struct item_data *id); #define itemdb_isequip(nameid) itemdb_isequip2(itemdb_search(nameid)) -char itemdb_isidentified(unsigned short nameid); +char itemdb_isidentified(t_itemid nameid); bool itemdb_isstackable2(struct item_data *id); #define itemdb_isstackable(nameid) itemdb_isstackable2(itemdb_search(nameid)) bool itemdb_isNoEquip(struct item_data *id, uint16 m); @@ -967,7 +967,7 @@ bool itemdb_isNoEquip(struct item_data *id, uint16 m); struct item_combo *itemdb_combo_exists(unsigned short combo_id); struct s_item_group_db *itemdb_group_exists(unsigned short group_id); -bool itemdb_group_item_exists(unsigned short group_id, unsigned short nameid); +bool itemdb_group_item_exists(unsigned short group_id, t_itemid nameid); int16 itemdb_group_item_exists_pc(struct map_session_data *sd, unsigned short group_id); char itemdb_pc_get_itemgroup(uint16 group_id, bool identify, struct map_session_data *sd); diff --git a/src/map/log.cpp b/src/map/log.cpp index e95fa8f2c9..3e8f3ef352 100644 --- a/src/map/log.cpp +++ b/src/map/log.cpp @@ -136,7 +136,7 @@ static char log_feedingtype2char(e_log_feeding_type type) { } /// check if this item should be logged according the settings -static bool should_log_item(unsigned short nameid, int amount, int refine) +static bool should_log_item(t_itemid nameid, int amount, int refine) { int filter = log_config.filter; struct item_data* id; @@ -226,11 +226,11 @@ void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item* it StringBuf_Printf(&buf, ", `option_val%d`", i); StringBuf_Printf(&buf, ", `option_parm%d`", i); } - StringBuf_Printf(&buf, ") VALUES(NOW(),'%u','%c','%d','%d','%d','%s','%" PRIu64 "','%d'", + StringBuf_Printf(&buf, ") VALUES(NOW(),'%u','%c','%u','%d','%d','%s','%" PRIu64 "','%d'", id, log_picktype2char(type), itm->nameid, amount, itm->refine, map_getmapdata(m)->name[0] ? map_getmapdata(m)->name : "", itm->unique_id, itm->bound); for (i = 0; i < MAX_SLOTS; i++) - StringBuf_Printf(&buf, ",'%d'", itm->card[i]); + StringBuf_Printf(&buf, ",'%u'", itm->card[i]); for (i = 0; i < MAX_ITEM_RDM_OPT; i++) StringBuf_Printf(&buf, ",'%d','%d','%d'", itm->option[i].id, itm->option[i].value, itm->option[i].param); StringBuf_Printf(&buf, ")"); @@ -251,7 +251,7 @@ void log_pick(int id, int16 m, e_log_pick_type type, int amount, struct item* it return; time(&curtime); strftime(timestring, sizeof(timestring), log_timestamp_format, localtime(&curtime)); - fprintf(logfp,"%s - %d\t%c\t%hu,%d,%d,%hu,%hu,%hu,%hu,%s,'%" PRIu64 "',%d\n", timestring, id, log_picktype2char(type), itm->nameid, amount, itm->refine, itm->card[0], itm->card[1], itm->card[2], itm->card[3], map_getmapdata(m)->name[0]?map_getmapdata(m)->name:"", itm->unique_id, itm->bound); + fprintf(logfp,"%s - %d\t%c\t%u,%d,%d,%u,%u,%u,%u,%s,'%" PRIu64 "',%d\n", timestring, id, log_picktype2char(type), itm->nameid, amount, itm->refine, itm->card[0], itm->card[1], itm->card[2], itm->card[3], map_getmapdata(m)->name[0]?map_getmapdata(m)->name:"", itm->unique_id, itm->bound); fclose(logfp); } } @@ -314,8 +314,8 @@ void log_mvpdrop(struct map_session_data* sd, int monster_id, unsigned int* log_ if( log_config.sql_logs ) { - if( SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%hu', '%u', '%s') ", - log_config.log_mvpdrop, sd->status.char_id, monster_id, (unsigned short)log_mvp[0], log_mvp[1], mapindex_id2name(sd->mapindex)) ) + if( SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`mvp_date`, `kill_char_id`, `monster_id`, `prize`, `mvpexp`, `map`) VALUES (NOW(), '%d', '%d', '%u', '%u', '%s') ", + log_config.log_mvpdrop, sd->status.char_id, monster_id, log_mvp[0], log_mvp[1], mapindex_id2name(sd->mapindex)) ) { Sql_ShowDebug(logmysql_handle); return; @@ -530,7 +530,7 @@ void log_cash( struct map_session_data* sd, e_log_pick_type type, e_log_cash_typ * @param type Log type, @see e_log_feeding_type * @param nameid Item used as food **/ -void log_feeding(struct map_session_data *sd, e_log_feeding_type type, unsigned short nameid) { +void log_feeding(struct map_session_data *sd, e_log_feeding_type type, t_itemid nameid) { unsigned int target_id = 0, intimacy = 0; unsigned short target_class = 0; @@ -557,7 +557,7 @@ void log_feeding(struct map_session_data *sd, e_log_feeding_type type, unsigned } if (log_config.sql_logs) { - if (SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`time`, `char_id`, `target_id`, `target_class`, `type`, `intimacy`, `item_id`, `map`, `x`, `y`) VALUES ( NOW(), '%" PRIu32 "', '%" PRIu32 "', '%hu', '%c', '%" PRIu32 "', '%hu', '%s', '%hu', '%hu' )", + if (SQL_ERROR == Sql_Query(logmysql_handle, LOG_QUERY " INTO `%s` (`time`, `char_id`, `target_id`, `target_class`, `type`, `intimacy`, `item_id`, `map`, `x`, `y`) VALUES ( NOW(), '%" PRIu32 "', '%" PRIu32 "', '%hu', '%c', '%" PRIu32 "', '%u', '%s', '%hu', '%hu' )", log_config.log_feeding, sd->status.char_id, target_id, target_class, log_feedingtype2char(type), intimacy, nameid, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y)) { Sql_ShowDebug(logmysql_handle); @@ -572,7 +572,7 @@ void log_feeding(struct map_session_data *sd, e_log_feeding_type type, unsigned return; time(&curtime); strftime(timestring, sizeof(timestring), log_timestamp_format, localtime(&curtime)); - fprintf(logfp, "%s - %s[%d]\t%d\t%d(%c)\t%d\t%hu\t%s\t%hu,%hu\n", timestring, sd->status.name, sd->status.char_id, target_id, target_class, log_feedingtype2char(type), intimacy, nameid, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); + fprintf(logfp, "%s - %s[%d]\t%d\t%d(%c)\t%d\t%u\t%s\t%hu,%hu\n", timestring, sd->status.name, sd->status.char_id, target_id, target_class, log_feedingtype2char(type), intimacy, nameid, mapindex_id2name(sd->mapindex), sd->bl.x, sd->bl.y); fclose(logfp); } } diff --git a/src/map/log.hpp b/src/map/log.hpp index 488ead18f1..c4f12f587e 100644 --- a/src/map/log.hpp +++ b/src/map/log.hpp @@ -5,6 +5,7 @@ #define LOG_HPP #include "../common/cbasetypes.hpp" +#include "../common/mmo.hpp" struct block_list; struct map_session_data; @@ -77,7 +78,7 @@ void log_npc( struct npc_data* nd, const char* message ); void log_npc(struct map_session_data* sd, const char *message); void log_chat(e_log_chat_type type, int type_id, int src_charid, int src_accid, const char* map, int x, int y, const char* dst_charname, const char* message); void log_atcommand(struct map_session_data* sd, const char* message); -void log_feeding(struct map_session_data *sd, e_log_feeding_type type, unsigned short nameid); +void log_feeding(struct map_session_data *sd, e_log_feeding_type type, t_itemid nameid); /// old, but useful logs void log_branch(struct map_session_data* sd); diff --git a/src/map/mob.cpp b/src/map/mob.cpp index 7e1066091f..e779590865 100644 --- a/src/map/mob.cpp +++ b/src/map/mob.cpp @@ -87,7 +87,7 @@ struct mob_chat *mob_chat(short id) { //Dynamic item drop ratio database for per-item drop ratio modifiers overriding global drop ratios. #define MAX_ITEMRATIO_MOBS 10 struct s_mob_item_drop_ratio { - unsigned short nameid; + t_itemid nameid; int drop_ratio; unsigned short mob_id[MAX_ITEMRATIO_MOBS]; }; @@ -2814,7 +2814,7 @@ int mob_dead(struct mob_data *md, struct block_list *src, int type) if(sd) { // process script-granted extra drop bonuses - uint16 dropid = 0; + t_itemid dropid = 0; for (const auto &it : sd->add_drop) { struct s_mob_drop mobdrop; @@ -4111,7 +4111,7 @@ static unsigned int mob_drop_adjust(int baserate, int rate_adjust, unsigned shor * @param mob_id ID of the monster * @param rate_adjust pointer to store ratio if found */ -static void item_dropratio_adjust(unsigned short nameid, int mob_id, int *rate_adjust) +static void item_dropratio_adjust(t_itemid nameid, int mob_id, int *rate_adjust) { struct s_mob_item_drop_ratio *item_ratio = (struct s_mob_item_drop_ratio *)idb_get(mob_item_drop_ratio, nameid); if( item_ratio) { @@ -4269,7 +4269,7 @@ static bool mob_parse_dbrow(char** str) // MVP Drops: MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per for(i = 0; i < MAX_MVP_DROP; i++) { - entry.mvpitem[i].nameid = atoi(str[31+i*2]); + entry.mvpitem[i].nameid = strtoul(str[31+i*2], nullptr, 10); if( entry.mvpitem[i].nameid ){ if( itemdb_search(entry.mvpitem[i].nameid) ){ @@ -4288,7 +4288,7 @@ static bool mob_parse_dbrow(char** str) for(i = 0; i < MAX_MOB_DROP; i++) { int k = 31 + MAX_MVP_DROP*2 + i*2; - entry.dropitem[i].nameid = atoi(str[k]); + entry.dropitem[i].nameid = strtoul(str[k], nullptr, 10); if( entry.dropitem[i].nameid ){ if( itemdb_search( entry.dropitem[i].nameid ) ){ @@ -5152,13 +5152,13 @@ static bool mob_readdb_race2(char* fields[], int columns, int current) */ static bool mob_readdb_itemratio(char* str[], int columns, int current) { - unsigned short nameid; + t_itemid nameid; int ratio, i; struct s_mob_item_drop_ratio *item_ratio; - nameid = atoi(str[0]); + nameid = strtoul(str[0], nullptr, 10); if (itemdb_exists(nameid) == NULL) { - ShowWarning("mob_readdb_itemratio: Invalid item id %hu.\n", nameid); + ShowWarning("mob_readdb_itemratio: Invalid item id %u.\n", nameid); return false; } @@ -5172,7 +5172,7 @@ static bool mob_readdb_itemratio(char* str[], int columns, int current) for (i = 0; i < columns-2; i++) { uint16 mob_id = atoi(str[i+2]); if (mob_db(mob_id) == NULL) - ShowError("mob_readdb_itemratio: Invalid monster with ID %hu (Item:%hu Col:%d).\n", mob_id, nameid, columns); + ShowError("mob_readdb_itemratio: Invalid monster with ID %hu (Item:%u Col:%d).\n", mob_id, nameid, columns); else item_ratio->mob_id[i] = atoi(str[i+2]); } @@ -5190,7 +5190,8 @@ static bool mob_readdb_itemratio(char* str[], int columns, int current) * @author [Cydh] **/ static bool mob_readdb_drop(char* str[], int columns, int current) { - unsigned short mobid, nameid; + unsigned short mobid; + t_itemid nameid; int rate, i, size, flag = 0; struct mob_db *mob; struct s_mob_drop *drop; @@ -5201,7 +5202,7 @@ static bool mob_readdb_drop(char* str[], int columns, int current) { return false; } - nameid = atoi(str[1]); + nameid = strtoul(str[1], nullptr, 10); if (itemdb_exists(nameid) == NULL) { ShowWarning("mob_readdb_drop: Invalid item ID %s.\n", str[1]); return false; @@ -5221,7 +5222,7 @@ static bool mob_readdb_drop(char* str[], int columns, int current) { for (i = 0; i < size; i++) { if (drop[i].nameid == nameid) { memset(&drop[i], 0, sizeof(struct s_mob_drop)); - ShowInfo("mob_readdb_drop: Removed item '%hu' from monster '%hu'.\n", nameid, mobid); + ShowInfo("mob_readdb_drop: Removed item '%u' from monster '%hu'.\n", nameid, mobid); return true; } } @@ -5231,7 +5232,7 @@ static bool mob_readdb_drop(char* str[], int columns, int current) { if (i == size) { // Item is not dropped at all (search all item slots) ARR_FIND(0, size, i, drop[i].nameid == 0); if (i == size) { // No empty slots - ShowError("mob_readdb_drop: Cannot add item '%hu' to monster '%hu'. Max drop reached (%d).\n", nameid, mobid, size); + ShowError("mob_readdb_drop: Cannot add item '%u' to monster '%hu'. Max drop reached (%d).\n", nameid, mobid, size); return true; } } @@ -5279,7 +5280,7 @@ static void mob_drop_ratio_adjust(void){ for( auto &pair : mob_db_data ){ struct mob_db *mob; struct item_data *id; - unsigned short nameid; + t_itemid nameid; int j, rate, rate_adjust = 0, mob_id; mob_id = pair.first; @@ -5311,7 +5312,7 @@ static void mob_drop_ratio_adjust(void){ // Item is not known anymore(should never happen) if( !id ){ - ShowWarning( "Monster \"%s\"(id:%hu) is dropping an unknown item(id: %d)\n", mob->name, mob_id, nameid ); + ShowWarning( "Monster \"%s\"(id:%hu) is dropping an unknown item(id: %u)\n", mob->name, mob_id, nameid ); mob->mvpitem[j].nameid = 0; mob->mvpitem[j].p = 0; continue; @@ -5341,7 +5342,7 @@ static void mob_drop_ratio_adjust(void){ // Item is not known anymore(should never happen) if( !id ){ - ShowWarning( "Monster \"%s\"(id:%hu) is dropping an unknown item(id: %d)\n", mob->name, mob_id, nameid ); + ShowWarning( "Monster \"%s\"(id:%hu) is dropping an unknown item(id: %u)\n", mob->name, mob_id, nameid ); mob->dropitem[j].nameid = 0; mob->dropitem[j].p = 0; continue; diff --git a/src/map/mob.hpp b/src/map/mob.hpp index 8d3682334d..5b47b8c6fa 100644 --- a/src/map/mob.hpp +++ b/src/map/mob.hpp @@ -155,7 +155,7 @@ struct s_mob_lootitem { /// Struct for monster's drop item struct s_mob_drop { - unsigned short nameid; + t_itemid nameid; int p; uint8 randomopt_group; unsigned steal_protected : 1; diff --git a/src/map/npc.cpp b/src/map/npc.cpp index 5feab02eaf..689a44ea73 100644 --- a/src/map/npc.cpp +++ b/src/map/npc.cpp @@ -1606,7 +1606,7 @@ static enum e_CASHSHOP_ACK npc_cashshop_process_payment(struct npc_data *nd, int int delete_amount = price, i; if (!id) { // Item Data is checked at script parsing but in case of item_db reload, check again. - ShowWarning("Failed to find sellitem %hu for itemshop NPC '%s' (%s, %d, %d)!\n", nd->u.shop.itemshop_nameid, nd->exname, map_mapid2mapname(nd->bl.m), nd->bl.x, nd->bl.y); + ShowWarning("Failed to find sellitem %u for itemshop NPC '%s' (%s, %d, %d)!\n", nd->u.shop.itemshop_nameid, nd->exname, map_mapid2mapname(nd->bl.m), nd->bl.x, nd->bl.y); return ERROR_TYPE_PURCHASE_FAIL; } if (cost[1] < points || cost[0] < (price - points)) { @@ -1614,7 +1614,7 @@ static enum e_CASHSHOP_ACK npc_cashshop_process_payment(struct npc_data *nd, int memset(output, '\0', sizeof(output)); - sprintf(output, msg_txt(sd, 712), id->jname, id->nameid); // You do not have enough %s (%hu). + sprintf(output, msg_txt(sd, 712), id->jname, id->nameid); // You do not have enough %s (%u). clif_messagecolor(&sd->bl, color_table[COLOR_RED], output, false, SELF); return ERROR_TYPE_PURCHASE_FAIL; } @@ -1633,13 +1633,13 @@ static enum e_CASHSHOP_ACK npc_cashshop_process_payment(struct npc_data *nd, int amount = delete_amount; if (pc_delitem(sd, i, amount, 0, 0, LOG_TYPE_NPC)) { - ShowWarning("Failed to delete item %hu from '%s' at itemshop NPC '%s' (%s, %d, %d)!\n", nd->u.shop.itemshop_nameid, sd->status.name, nd->exname, map_mapid2mapname(nd->bl.m), nd->bl.x, nd->bl.y); + ShowWarning("Failed to delete item %u from '%s' at itemshop NPC '%s' (%s, %d, %d)!\n", nd->u.shop.itemshop_nameid, sd->status.name, nd->exname, map_mapid2mapname(nd->bl.m), nd->bl.x, nd->bl.y); return ERROR_TYPE_PURCHASE_FAIL; } delete_amount -= amount; } if (delete_amount > 0) { - ShowError("Item %hu is not enough as payment at itemshop NPC '%s' (%s, %d, %d, AID=%d, CID=%d)!\n", nd->u.shop.itemshop_nameid, nd->exname, map_mapid2mapname(nd->bl.m), nd->bl.x, nd->bl.y, sd->status.account_id, sd->status.char_id); + ShowError("Item %u is not enough as payment at itemshop NPC '%s' (%s, %d, %d, AID=%d, CID=%d)!\n", nd->u.shop.itemshop_nameid, nd->exname, map_mapid2mapname(nd->bl.m), nd->bl.x, nd->bl.y, sd->status.account_id, sd->status.char_id); return ERROR_TYPE_PURCHASE_FAIL; } } @@ -1675,7 +1675,7 @@ static enum e_CASHSHOP_ACK npc_cashshop_process_payment(struct npc_data *nd, int int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, struct PACKET_CZ_PC_BUY_CASH_POINT_ITEM_sub* item_list) { int i, j, amount, new_, w, vt; - unsigned short nameid; + t_itemid nameid; struct npc_data *nd = (struct npc_data *)map_id2bl(sd->npc_shopid); enum e_CASHSHOP_ACK res; item_data *id; @@ -1707,7 +1707,7 @@ int npc_cashshop_buylist(struct map_session_data *sd, int points, int count, str if( !itemdb_isstackable2(id) && amount > 1 ) { - ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %hu!\n", sd->status.name, sd->status.account_id, sd->status.char_id, amount, nameid); + ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %u!\n", sd->status.name, sd->status.account_id, sd->status.char_id, amount, nameid); amount = item_list[i].amount = 1; } @@ -1797,7 +1797,7 @@ void npc_shop_currency_type(struct map_session_data *sd, struct npc_data *nd, in memset(output, '\0', sizeof(output)); - sprintf(output, msg_txt(sd, 714), id->jname, id->nameid); // Item Shop List: %s (%hu) + sprintf(output, msg_txt(sd, 714), id->jname, id->nameid); // Item Shop List: %s (%u) clif_broadcast(&sd->bl, output, strlen(output) + 1, BC_BLUE,SELF); } @@ -1833,7 +1833,7 @@ void npc_shop_currency_type(struct map_session_data *sd, struct npc_data *nd, in * @param points: Cost of total items * @return clif_cashshop_ack value to display */ -int npc_cashshop_buy(struct map_session_data *sd, unsigned short nameid, int amount, int points) +int npc_cashshop_buy(struct map_session_data *sd, t_itemid nameid, int amount, int points) { struct npc_data *nd = (struct npc_data *)map_id2bl(sd->npc_shopid); struct item_data *item; @@ -1865,7 +1865,7 @@ int npc_cashshop_buy(struct map_session_data *sd, unsigned short nameid, int amo if(!itemdb_isstackable2(item) && amount > 1) { - ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %hu!\n", + ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %u!\n", sd->status.name, sd->status.account_id, sd->status.char_id, amount, nameid); amount = 1; } @@ -1886,7 +1886,7 @@ int npc_cashshop_buy(struct map_session_data *sd, unsigned short nameid, int amo if( (double)nd->u.shop.shop_item[i].value * amount > INT_MAX ) { - ShowWarning("npc_cashshop_buy: Item '%s' (%hu) price overflow attempt!\n", item->name, nameid); + ShowWarning("npc_cashshop_buy: Item '%s' (%u) price overflow attempt!\n", item->name, nameid); ShowDebug("(NPC:'%s' (%s,%d,%d), player:'%s' (%d/%d), value:%d, amount:%d)\n", nd->exname, map_mapid2mapname(nd->bl.m), nd->bl.x, nd->bl.y, sd->status.name, sd->status.account_id, sd->status.char_id, nd->u.shop.shop_item[i].value, amount); return ERROR_TYPE_ITEM_ID; @@ -1979,7 +1979,8 @@ uint8 npc_buylist(struct map_session_data* sd, uint16 n, struct s_npc_buy_list * memset(market_index, 0, sizeof(market_index)); // process entries in buy list, one by one for( i = 0; i < n; ++i ) { - unsigned short nameid, amount; + t_itemid nameid; + unsigned short amount; int value; item_data *id; @@ -2009,7 +2010,7 @@ uint8 npc_buylist(struct map_session_data* sd, uint16 n, struct s_npc_buy_list * return 3; // item no longer in itemdb if( !itemdb_isstackable2(id) && amount > 1 ) { //Exploit? You can't buy more than 1 of equipment types o.O - ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %hu!\n", + ShowWarning("Player %s (%d:%d) sent a hexed packet trying to buy %d of nonstackable item %u!\n", sd->status.name, sd->status.account_id, sd->status.char_id, amount, nameid); amount = item_list[i].qty = 1; } @@ -2051,7 +2052,7 @@ uint8 npc_buylist(struct map_session_data* sd, uint16 n, struct s_npc_buy_list * pc_payzeny(sd, (int)z, LOG_TYPE_NPC, NULL); for( i = 0; i < n; ++i ) { - unsigned short nameid = item_list[i].nameid; + t_itemid nameid = item_list[i].nameid; unsigned short amount = item_list[i].qty; #if PACKETVER >= 20131223 @@ -2201,7 +2202,7 @@ uint8 npc_selllist(struct map_session_data* sd, int n, unsigned short *item_list // verify the sell list for( i = 0; i < n; i++ ) { - unsigned short nameid; + t_itemid nameid; int amount, idx, value; idx = item_list[i*2]-2; @@ -2860,7 +2861,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const int m, is_discount = 0; uint16 dir; short x, y; - unsigned short nameid = 0; + t_itemid nameid = 0; struct npc_data *nd; enum npc_subtype type; @@ -2904,12 +2905,12 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const switch(type) { case NPCTYPE_ITEMSHOP: { - if (sscanf(p,",%5hu:%11d,",&nameid,&is_discount) < 1) { + if (sscanf(p,",%u:%11d,",&nameid,&is_discount) < 1) { ShowError("npc_parse_shop: Invalid item cost definition in file '%s', line '%d'. Ignoring the rest of the line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer,start-buffer), w1, w2, w3, w4); return strchr(start,'\n'); // skip and continue } if (itemdb_exists(nameid) == NULL) { - ShowWarning("npc_parse_shop: Invalid item ID cost in file '%s', line '%d' (id '%hu').\n", filepath, strline(buffer,start-buffer), nameid); + ShowWarning("npc_parse_shop: Invalid item ID cost in file '%s', line '%d' (id '%u').\n", filepath, strline(buffer,start-buffer), nameid); return strchr(start,'\n'); // skip and continue } p = strchr(p+1,','); @@ -2964,7 +2965,8 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const nd = npc_create_npc(m, x, y); nd->u.shop.count = 0; while ( p ) { - unsigned short nameid2, qty = 0; + t_itemid nameid2; + unsigned short qty = 0; int value; struct item_data* id; bool skip = false; @@ -2974,14 +2976,14 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const switch(type) { case NPCTYPE_MARKETSHOP: #if PACKETVER >= 20131223 - if (sscanf(p, ",%6hu:%11d:%6hu", &nameid2, &value, &qty) != 3) { + if (sscanf(p, ",%u:%11d:%6hu", &nameid2, &value, &qty) != 3) { ShowError("npc_parse_shop: (MARKETSHOP) Invalid item definition in file '%s', line '%d'. Ignoring the rest of the line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer, start - buffer), w1, w2, w3, w4); skip = true; } #endif break; default: - if (sscanf(p, ",%6hu:%11d", &nameid2, &value) != 2) { + if (sscanf(p, ",%u:%11d", &nameid2, &value) != 2) { ShowError("npc_parse_shop: Invalid item definition in file '%s', line '%d'. Ignoring the rest of the line...\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", filepath, strline(buffer, start - buffer), w1, w2, w3, w4); skip = true; } @@ -2992,7 +2994,7 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const break; if( (id = itemdb_exists(nameid2)) == NULL ) { - ShowWarning("npc_parse_shop: Invalid sell item in file '%s', line '%d' (id '%hu').\n", filepath, strline(buffer,start-buffer), nameid2); + ShowWarning("npc_parse_shop: Invalid sell item in file '%s', line '%d' (id '%u').\n", filepath, strline(buffer,start-buffer), nameid2); p = strchr(p+1,','); continue; } @@ -3001,15 +3003,15 @@ static const char* npc_parse_shop(char* w1, char* w2, char* w3, char* w4, const else value = 0; // Cashshop doesn't have a "buy price" in the item_db } if (value == 0 && (type == NPCTYPE_SHOP || type == NPCTYPE_MARKETSHOP)) { // NPC selling items for free! - ShowWarning("npc_parse_shop: Item %s [%hu] is being sold for FREE in file '%s', line '%d'.\n", + ShowWarning("npc_parse_shop: Item %s [%u] is being sold for FREE in file '%s', line '%d'.\n", id->name, nameid2, filepath, strline(buffer,start-buffer)); } if( type == NPCTYPE_SHOP && value*0.75 < id->value_sell*1.24 ) { // Exploit possible: you can buy and sell back with profit - ShowWarning("npc_parse_shop: Item %s [%hu] discounted buying price (%d->%d) is less than overcharged selling price (%d->%d) at file '%s', line '%d'.\n", + ShowWarning("npc_parse_shop: Item %s [%u] discounted buying price (%d->%d) is less than overcharged selling price (%d->%d) at file '%s', line '%d'.\n", id->name, nameid2, value, (int)(value*0.75), id->value_sell, (int)(id->value_sell*1.24), filepath, strline(buffer,start-buffer)); } if (type == NPCTYPE_MARKETSHOP && (!qty || qty > UINT16_MAX)) { - ShowWarning("npc_parse_shop: Item %s [%hu] is stocked with invalid value %d, changed to 1. File '%s', line '%d'.\n", + ShowWarning("npc_parse_shop: Item %s [%u] is stocked with invalid value %d, changed to 1. File '%s', line '%d'.\n", id->name, nameid2, qty, filepath, strline(buffer,start-buffer)); qty = 1; } @@ -3625,7 +3627,7 @@ int npc_instancedestroy(struct npc_data* nd) **/ void npc_market_tosql(const char *exname, struct npc_item_list *list) { SqlStmt* stmt = SqlStmt_Malloc(mmysql_handle); - if (SQL_ERROR == SqlStmt_Prepare(stmt, "REPLACE INTO `%s` (`name`,`nameid`,`price`,`amount`,`flag`) VALUES ('%s','%hu','%d','%hu','%" PRIu8 "')", + if (SQL_ERROR == SqlStmt_Prepare(stmt, "REPLACE INTO `%s` (`name`,`nameid`,`price`,`amount`,`flag`) VALUES ('%s','%u','%d','%hu','%" PRIu8 "')", market_table, exname, list->nameid, list->value, list->qty, list->flag) || SQL_ERROR == SqlStmt_Execute(stmt)) SqlStmt_ShowDebug(stmt); @@ -3638,14 +3640,14 @@ void npc_market_tosql(const char *exname, struct npc_item_list *list) { * @param nameid Item ID * @param clear True: will removes all records related with the NPC **/ -void npc_market_delfromsql_(const char *exname, unsigned short nameid, bool clear) { +void npc_market_delfromsql_(const char *exname, t_itemid nameid, bool clear) { SqlStmt* stmt = SqlStmt_Malloc(mmysql_handle); if (clear) { if( SQL_ERROR == SqlStmt_Prepare(stmt, "DELETE FROM `%s` WHERE `name`='%s'", market_table, exname) || SQL_ERROR == SqlStmt_Execute(stmt)) SqlStmt_ShowDebug(stmt); } else { - if (SQL_ERROR == SqlStmt_Prepare(stmt, "DELETE FROM `%s` WHERE `name`='%s' AND `nameid`='%d' LIMIT 1", market_table, exname, nameid) || + if (SQL_ERROR == SqlStmt_Prepare(stmt, "DELETE FROM `%s` WHERE `name`='%s' AND `nameid`='%u' LIMIT 1", market_table, exname, nameid) || SQL_ERROR == SqlStmt_Execute(stmt)) SqlStmt_ShowDebug(stmt); } @@ -3683,7 +3685,7 @@ static int npc_market_checkall_sub(DBKey key, DBData *data, va_list ap) { uint16 j; if (!list->nameid || !itemdb_exists(list->nameid)) { - ShowError("npc_market_checkall_sub: NPC '%s' sells invalid item '%hu', deleting...\n", nd->exname, list->nameid); + ShowError("npc_market_checkall_sub: NPC '%s' sells invalid item '%u', deleting...\n", nd->exname, list->nameid); npc_market_delfromsql(nd->exname, list->nameid); continue; } @@ -3708,7 +3710,7 @@ static int npc_market_checkall_sub(DBKey key, DBData *data, va_list ap) { npc_market_tosql(nd->exname, &nd->u.shop.shop_item[j]); } else { // Removing "out-of-date" entry - ShowError("npc_market_checkall_sub: NPC '%s' does not sell item %hu (qty %hu), deleting...\n", nd->exname, list->nameid, list->qty); + ShowError("npc_market_checkall_sub: NPC '%s' does not sell item %u (qty %hu), deleting...\n", nd->exname, list->nameid, list->qty); npc_market_delfromsql(nd->exname, list->nameid); } } @@ -3771,7 +3773,7 @@ static void npc_market_fromsql(void) { strdb_put(NPCMarketDB, market->exname, market); } - Sql_GetData(mmysql_handle, 1, &data, NULL); list.nameid = atoi(data); + Sql_GetData(mmysql_handle, 1, &data, NULL); list.nameid = strtoul(data, nullptr, 10); Sql_GetData(mmysql_handle, 2, &data, NULL); list.value = atoi(data); Sql_GetData(mmysql_handle, 3, &data, NULL); list.qty = atoi(data); Sql_GetData(mmysql_handle, 4, &data, NULL); list.flag = atoi(data); @@ -4250,7 +4252,7 @@ static const char* npc_parse_mapflag(char* w1, char* w2, char* w3, char* w4, con if (!strcmpi(drop_arg1, "random")) args.nightmaredrop.drop_id = -1; - else if (itemdb_exists((args.nightmaredrop.drop_id = atoi(drop_arg1))) == NULL) { + else if (itemdb_exists((args.nightmaredrop.drop_id = strtol(drop_arg1, nullptr, 10))) == NULL) { args.nightmaredrop.drop_id = 0; ShowWarning("npc_parse_mapflag: Invalid item ID '%d' supplied for mapflag 'pvp_nightmaredrop' (file '%s', line '%d'), removing.\n * w1=%s\n * w2=%s\n * w3=%s\n * w4=%s\n", args.nightmaredrop.drop_id, filepath, strline(buffer, start - buffer), w1, w2, w3, w4); break; diff --git a/src/map/npc.hpp b/src/map/npc.hpp index 3e99c7f90b..18f27d210c 100644 --- a/src/map/npc.hpp +++ b/src/map/npc.hpp @@ -25,7 +25,7 @@ struct npc_label_list { /// Item list for NPC sell/buy list struct npc_item_list { - unsigned short nameid; + t_itemid nameid; unsigned int value; #if PACKETVER >= 20131223 unsigned short qty; ///< Stock counter (Market shop) @@ -92,7 +92,7 @@ struct npc_data { struct { struct npc_item_list *shop_item; uint16 count; - unsigned short itemshop_nameid; // Item Shop cost item ID + t_itemid itemshop_nameid; // Item Shop cost item ID char pointshop_str[32]; // Point Shop cost variable name bool discount; } shop; @@ -1287,7 +1287,7 @@ int npc_script_event(struct map_session_data* sd, enum npce_event type); int npc_duplicate4instance(struct npc_data *snd, int16 m); int npc_instanceinit(struct npc_data* nd); int npc_instancedestroy(struct npc_data* nd); -int npc_cashshop_buy(struct map_session_data *sd, unsigned short nameid, int amount, int points); +int npc_cashshop_buy(struct map_session_data *sd, t_itemid nameid, int amount, int points); void npc_shop_currency_type(struct map_session_data *sd, struct npc_data *nd, int cost[2], bool display); @@ -1298,7 +1298,7 @@ bool npc_shop_discount(struct npc_data* nd); #if PACKETVER >= 20131223 void npc_market_tosql(const char *exname, struct npc_item_list *list); -void npc_market_delfromsql_(const char *exname, unsigned short nameid, bool clear); +void npc_market_delfromsql_(const char *exname, t_itemid nameid, bool clear); #endif #ifdef SECURE_NPCTIMEOUT diff --git a/src/map/packets.hpp b/src/map/packets.hpp index f101e04408..7ec9e9351e 100644 --- a/src/map/packets.hpp +++ b/src/map/packets.hpp @@ -164,10 +164,20 @@ struct PACKET_ZC_ACK_GUILDSTORAGE_LOG{ #pragma pack( pop ) #endif +DEFINE_PACKET_HEADER(ZC_ITEM_ENTRY, 0x9d) +DEFINE_PACKET_HEADER(ZC_MVP_GETTING_ITEM, 0x10a) +DEFINE_PACKET_HEADER(ZC_ACK_TOUSESKILL, 0x110) DEFINE_PACKET_HEADER(CZ_REQMAKINGITEM, 0x18e) +DEFINE_PACKET_HEADER(ZC_ACK_REQMAKINGITEM, 0x18f) DEFINE_PACKET_HEADER(CZ_REQ_MAKINGARROW, 0x1ae) DEFINE_PACKET_HEADER(CZ_REQ_ITEMREPAIR, 0x1fd) +DEFINE_PACKET_HEADER(ZC_ACK_WEAPONREFINE, 0x223) DEFINE_PACKET_HEADER(CZ_REQ_MAKINGITEM, 0x25b) +DEFINE_PACKET_HEADER(ZC_CASH_TIME_COUNTER, 0x298) +DEFINE_PACKET_HEADER(ZC_CASH_ITEM_DELETE, 0x299) +DEFINE_PACKET_HEADER(ZC_ITEM_PICKUP_PARTY, 0x2b8) +DEFINE_PACKET_HEADER(ZC_FAILED_TRADE_BUYING_STORE_TO_SELLER, 0x824) +DEFINE_PACKET_HEADER(CZ_SSILIST_ITEM_CLICK, 0x83c) DEFINE_PACKET_HEADER(CZ_REQ_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ac) DEFINE_PACKET_HEADER(ZC_ACK_CASH_BARGAIN_SALE_ITEM_INFO, 0x9ad) DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM, 0x9ae) @@ -176,6 +186,7 @@ DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_SELLING, 0x9b2) DEFINE_PACKET_HEADER(ZC_NOTIFY_BARGAIN_SALE_CLOSE, 0x9b3) DEFINE_PACKET_HEADER(ZC_ACK_COUNT_BARGAIN_SALE_ITEM, 0x9c4) DEFINE_PACKET_HEADER(ZC_ACK_GUILDSTORAGE_LOG, 0x9da) +DEFINE_PACKET_HEADER(CZ_NPC_MARKET_PURCHASE, 0x9d6) DEFINE_PACKET_HEADER(CZ_REQ_APPLY_BARGAIN_SALE_ITEM2, 0xa3d) const int16 MAX_INVENTORY_ITEM_PACKET_NORMAL = ( ( INT16_MAX - ( sizeof( struct packet_itemlist_normal ) - ( sizeof( struct NORMALITEM_INFO ) * MAX_ITEMLIST) ) ) / sizeof( struct NORMALITEM_INFO ) ); diff --git a/src/map/pc.cpp b/src/map/pc.cpp index f5cbc50893..1f61a810c8 100755 --- a/src/map/pc.cpp +++ b/src/map/pc.cpp @@ -202,14 +202,14 @@ uint64 AttendanceDatabase::parseBodyNode(const YAML::Node &node){ } if( this->nodeExists( rewardNode, "ItemId" ) ){ - uint16 item_id; + t_itemid item_id; - if( !this->asUInt16( rewardNode, "ItemId", item_id ) ){ + if( !this->asUInt32( rewardNode, "ItemId", item_id ) ){ continue; } if( item_id == 0 || !itemdb_exists( item_id ) ){ - ShowError( "pc_attendance_load: Unknown item ID %hu for day %d.\n", item_id, day + 1 ); + ShowError( "pc_attendance_load: Unknown item ID %u for day %d.\n", item_id, day + 1 ); continue; } @@ -319,7 +319,7 @@ void pc_set_reg_load( bool val ){ DBMap* itemcd_db = NULL; // char_id -> struct item_cd struct item_cd { t_tick tick[MAX_ITEMDELAYS]; //tick - unsigned short nameid[MAX_ITEMDELAYS]; //item id + t_itemid nameid[MAX_ITEMDELAYS]; //item id }; /** @@ -1007,7 +1007,7 @@ void pc_setinventorydata(struct map_session_data *sd) nullpo_retv(sd); for(i = 0; i < MAX_INVENTORY; i++) { - unsigned short id = sd->inventory.u.items_inventory[i].nameid; + t_itemid id = sd->inventory.u.items_inventory[i].nameid; sd->inventory_data[i] = id?itemdb_search(id):NULL; } } @@ -1133,7 +1133,7 @@ void pc_setequipindex(struct map_session_data *sd) * @param nameid : itemid * @return 1:yes, 0:no */ -bool pc_isequipped(struct map_session_data *sd, unsigned short nameid) +bool pc_isequipped(struct map_session_data *sd, t_itemid nameid) { uint8 i; @@ -2586,14 +2586,14 @@ static void pc_bonus_addeff_onskill(std::vector &effect, enu * @param race: target race. if < 0, means monster_id * @param rate: rate value: 1 ~ 10000. If < 0, it will be multiplied with mob level/10 */ -static void pc_bonus_item_drop(std::vector &drop, unsigned short nameid, uint16 group, int class_, short race, int rate) +static void pc_bonus_item_drop(std::vector &drop, t_itemid nameid, uint16 group, int class_, short race, int rate) { if (!nameid && !group) { ShowWarning("pc_bonus_item_drop: No Item ID nor Item Group ID specified.\n"); return; } if (nameid && !itemdb_exists(nameid)) { - ShowWarning("pc_bonus_item_drop: Invalid item id %hu\n",nameid); + ShowWarning("pc_bonus_item_drop: Invalid item id %u\n",nameid); return; } if (group && !itemdb_group_exists(group)) { @@ -2602,7 +2602,7 @@ static void pc_bonus_item_drop(std::vector &drop, unsigned short nam } if (drop.size() == MAX_PC_BONUS) { - ShowWarning("pc_bonus_item_drop: Reached max (%d) number of added drops per character! (nameid: %hu group: %d class_: %d race: %d rate: %d)\n", MAX_PC_BONUS, nameid, group, class_, race, rate); + ShowWarning("pc_bonus_item_drop: Reached max (%d) number of added drops per character! (nameid: %u group: %d class_: %d race: %d rate: %d)\n", MAX_PC_BONUS, nameid, group, class_, race, rate); return; } @@ -3652,10 +3652,10 @@ void pc_bonus(struct map_session_data *sd,int type,int val) break; default: if (current_equip_combo_pos > 0) { - ShowWarning("pc_bonus: unknown bonus type %d %d in a combo with item #%d\n", type, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); + ShowWarning("pc_bonus: unknown bonus type %d %d in a combo with item #%u\n", type, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); } else if (current_equip_card_id > 0 || current_equip_item_index > 0) { - ShowWarning("pc_bonus: unknown bonus type %d %d in item #%d\n", type, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); + ShowWarning("pc_bonus: unknown bonus type %d %d in item #%u\n", type, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); } else { ShowWarning("pc_bonus: unknown bonus type %d %d in unknown usage. Report this!\n", type, val); @@ -4245,10 +4245,10 @@ void pc_bonus2(struct map_session_data *sd,int type,int type2,int val) break; default: if (current_equip_combo_pos > 0) { - ShowWarning("pc_bonus2: unknown bonus type %d %d %d in a combo with item #%d\n", type, type2, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); + ShowWarning("pc_bonus2: unknown bonus type %d %d %d in a combo with item #%u\n", type, type2, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); } else if (current_equip_card_id > 0 || current_equip_item_index > 0) { - ShowWarning("pc_bonus2: unknown bonus type %d %d %d in item #%d\n", type, type2, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); + ShowWarning("pc_bonus2: unknown bonus type %d %d %d in item #%u\n", type, type2, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); } else { ShowWarning("pc_bonus2: unknown bonus type %d %d %d in unknown usage. Report this!\n", type, type2, val); @@ -4385,10 +4385,10 @@ void pc_bonus3(struct map_session_data *sd,int type,int type2,int type3,int val) break; default: if (current_equip_combo_pos > 0) { - ShowWarning("pc_bonus3: unknown bonus type %d %d %d %d in a combo with item #%d\n", type, type2, type3, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); + ShowWarning("pc_bonus3: unknown bonus type %d %d %d %d in a combo with item #%u\n", type, type2, type3, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); } else if (current_equip_card_id > 0 || current_equip_item_index > 0) { - ShowWarning("pc_bonus3: unknown bonus type %d %d %d %d in item #%d\n", type, type2, type3, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); + ShowWarning("pc_bonus3: unknown bonus type %d %d %d %d in item #%u\n", type, type2, type3, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); } else { ShowWarning("pc_bonus3: unknown bonus type %d %d %d %d in unknown usage. Report this!\n", type, type2, type3, val); @@ -4468,10 +4468,10 @@ void pc_bonus4(struct map_session_data *sd,int type,int type2,int type3,int type default: if (current_equip_combo_pos > 0) { - ShowWarning("pc_bonus4: unknown bonus type %d %d %d %d %d in a combo with item #%d\n", type, type2, type3, type4, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); + ShowWarning("pc_bonus4: unknown bonus type %d %d %d %d %d in a combo with item #%u\n", type, type2, type3, type4, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); } else if (current_equip_card_id > 0 || current_equip_item_index > 0) { - ShowWarning("pc_bonus4: unknown bonus type %d %d %d %d %d in item #%d\n", type, type2, type3, type4, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); + ShowWarning("pc_bonus4: unknown bonus type %d %d %d %d %d in item #%u\n", type, type2, type3, type4, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); } else { ShowWarning("pc_bonus4: unknown bonus type %d %d %d %d %d in unknown usage. Report this!\n", type, type2, type3, type4, val); @@ -4517,10 +4517,10 @@ void pc_bonus5(struct map_session_data *sd,int type,int type2,int type3,int type default: if (current_equip_combo_pos > 0) { - ShowWarning("pc_bonus5: unknown bonus type %d %d %d %d %d %d in a combo with item #%d\n", type, type2, type3, type4, type5, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); + ShowWarning("pc_bonus5: unknown bonus type %d %d %d %d %d %d in a combo with item #%u\n", type, type2, type3, type4, type5, val, sd->inventory_data[pc_checkequip( sd, current_equip_combo_pos )]->nameid); } else if (current_equip_card_id > 0 || current_equip_item_index > 0) { - ShowWarning("pc_bonus5: unknown bonus type %d %d %d %d %d %d in item #%d\n", type, type2, type3, type4, type5, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); + ShowWarning("pc_bonus5: unknown bonus type %d %d %d %d %d %d in item #%u\n", type, type2, type3, type4, type5, val, current_equip_card_id ? current_equip_card_id : sd->inventory_data[current_equip_item_index]->nameid); } else { ShowWarning("pc_bonus5: unknown bonus type %d %d %d %d %d %d in unknown usage. Report this!\n", type, type2, type3, type4, type5, val); @@ -4624,7 +4624,7 @@ int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip) } int i; - unsigned short nameid; + t_itemid nameid; struct item_data* item_eq = sd->inventory_data[idx_equip]; struct item_data* item_card = sd->inventory_data[idx_card]; @@ -4745,7 +4745,7 @@ int pc_modifysellvalue(struct map_session_data *sd,int orig_value) * @param amount * @return e_chkitem_result *------------------------------------------*/ -char pc_checkadditem(struct map_session_data *sd, unsigned short nameid, int amount) +char pc_checkadditem(struct map_session_data *sd, t_itemid nameid, int amount) { int i; struct item_data* data; @@ -4981,7 +4981,7 @@ int pc_getcash(struct map_session_data *sd, int cash, int points, e_log_pick_typ * @param nameid Find this Item! * @return Stored index in inventory, or -1 if not found. **/ -short pc_search_inventory(struct map_session_data *sd, unsigned short nameid) { +short pc_search_inventory(struct map_session_data *sd, t_itemid nameid) { short i; nullpo_retr(-1, sd); @@ -5269,7 +5269,7 @@ bool pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem) bool pc_isUseitem(struct map_session_data *sd,int n) { struct item_data *item; - unsigned short nameid; + t_itemid nameid; nullpo_ret(sd); @@ -5442,7 +5442,7 @@ int pc_useitem(struct map_session_data *sd,int n) { t_tick tick = gettick(); int amount; - unsigned short nameid; + t_itemid nameid; struct script_code *script; struct item item; struct item_data *id; @@ -5748,7 +5748,7 @@ int pc_bound_chk(TBL_PC *sd,enum bound_type type,int *idxlist) int pc_show_steal(struct block_list *bl,va_list ap) { struct map_session_data *sd; - int itemid; + t_itemid itemid; struct item_data *item=NULL; char output[100]; @@ -5757,7 +5757,7 @@ int pc_show_steal(struct block_list *bl,va_list ap) itemid=va_arg(ap,int); if((item=itemdb_exists(itemid))==NULL) - sprintf(output,"%s stole an Unknown Item (id: %i).",sd->status.name, itemid); + sprintf(output,"%s stole an Unknown Item (id: %u).",sd->status.name, itemid); else sprintf(output,"%s stole %s.",sd->status.name,item->jname); clif_displaymessage( ((struct map_session_data *)bl)->fd, output); @@ -5774,7 +5774,8 @@ int pc_show_steal(struct block_list *bl,va_list ap) */ bool pc_steal_item(struct map_session_data *sd,struct block_list *bl, uint16 skill_lv) { - int i,itemid; + int i; + t_itemid itemid; double rate; unsigned char flag = 0; struct status_data *sd_status, *md_status; @@ -6380,7 +6381,7 @@ short pc_checkequip(struct map_session_data *sd,int pos, bool checkall) * @max : see pc.hpp enum equip_index for @min to ? * -return true,false *------------------------------------------*/ -bool pc_checkequip2(struct map_session_data *sd, unsigned short nameid, int min, int max) +bool pc_checkequip2(struct map_session_data *sd, t_itemid nameid, int min, int max) { int i; @@ -9059,7 +9060,7 @@ void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int ty * @param sp: SP to heal * @return Amount healed to an object */ -int pc_itemheal(struct map_session_data *sd, int itemid, int hp, int sp) +int pc_itemheal(struct map_session_data *sd, t_itemid itemid, int hp, int sp) { int bonus, tmp, penalty = 0; @@ -10197,8 +10198,8 @@ static int pc_checkcombo(struct map_session_data *sd, struct item_data *data) { for( i = 0; i < data->combos_count; i++ ) { struct itemchk { int idx; - unsigned short nameid; - short card[MAX_SLOTS]; + t_itemid nameid; + t_itemid card[MAX_SLOTS]; } *combo_idx; int idx, j; int nb_itemCombo; @@ -10219,11 +10220,14 @@ static int pc_checkcombo(struct map_session_data *sd, struct item_data *data) { for(j=0; j < nb_itemCombo; j++){ combo_idx[j].idx=-1; combo_idx[j].nameid=-1; - memset(combo_idx[j].card,-1,MAX_SLOTS); + for( int k = 0; k < MAX_SLOTS; k++ ){ + combo_idx[j].card[k] = -1; + } } for( j = 0; j < nb_itemCombo; j++ ) { - uint16 id = data->combos[i]->nameid[j], k; + t_itemid id = data->combos[i]->nameid[j]; + uint16 k; bool found = false; for( k = 0; k < EQI_MAX; k++ ) { @@ -10434,7 +10438,7 @@ bool pc_equipitem(struct map_session_data *sd,short n,int req_pos,bool equipswit pos = pc_equippoint(sd,n); //With a few exceptions, item should go in all specified slots. if(battle_config.battle_log && !equipswitch) - ShowInfo("equip %hu (%d) %x:%x\n",sd->inventory.u.items_inventory[n].nameid,n,id?id->equip:0,req_pos); + ShowInfo("equip %u (%d) %x:%x\n",sd->inventory.u.items_inventory[n].nameid,n,id?id->equip:0,req_pos); if((res = pc_isequip(sd,n))) { if( equipswitch ){ @@ -11040,7 +11044,7 @@ void pc_checkitem(struct map_session_data *sd) { void pc_check_available_item(struct map_session_data *sd, uint8 type) { int i; - unsigned short nameid; + t_itemid nameid; char output[256]; nullpo_retv(sd); @@ -11052,9 +11056,9 @@ void pc_check_available_item(struct map_session_data *sd, uint8 type) if (!nameid) continue; if (!itemdb_available(nameid)) { - sprintf(output, msg_txt(sd, 709), nameid); // Item %hu has been removed from your inventory. + sprintf(output, msg_txt(sd, 709), nameid); // Item %u has been removed from your inventory. clif_displaymessage(sd->fd, output); - ShowWarning("Removed invalid/disabled item (ID: %hu, amount: %d) from inventory (char_id: %d).\n", nameid, sd->inventory.u.items_inventory[i].amount, sd->status.char_id); + ShowWarning("Removed invalid/disabled item (ID: %u, amount: %d) from inventory (char_id: %d).\n", nameid, sd->inventory.u.items_inventory[i].amount, sd->status.char_id); pc_delitem(sd, i, sd->inventory.u.items_inventory[i].amount, 4, 0, LOG_TYPE_OTHER); continue; } @@ -11070,9 +11074,9 @@ void pc_check_available_item(struct map_session_data *sd, uint8 type) if (!nameid) continue; if (!itemdb_available(nameid)) { - sprintf(output, msg_txt(sd, 710), nameid); // Item %hu has been removed from your cart. + sprintf(output, msg_txt(sd, 710), nameid); // Item %u has been removed from your cart. clif_displaymessage(sd->fd, output); - ShowWarning("Removed invalid/disabled item (ID: %hu, amount: %d) from cart (char_id: %d).\n", nameid, sd->cart.u.items_cart[i].amount, sd->status.char_id); + ShowWarning("Removed invalid/disabled item (ID: %u, amount: %d) from cart (char_id: %d).\n", nameid, sd->cart.u.items_cart[i].amount, sd->status.char_id); pc_cart_delitem(sd, i, sd->cart.u.items_cart[i].amount, 0, LOG_TYPE_OTHER); continue; } @@ -11088,9 +11092,9 @@ void pc_check_available_item(struct map_session_data *sd, uint8 type) if (!nameid) continue; if (!itemdb_available(nameid)) { - sprintf(output, msg_txt(sd, 711), nameid); // Item %hu has been removed from your storage. + sprintf(output, msg_txt(sd, 711), nameid); // Item %u has been removed from your storage. clif_displaymessage(sd->fd, output); - ShowWarning("Removed invalid/disabled item (ID: %hu, amount: %d) from storage (char_id: %d).\n", nameid, sd->storage.u.items_storage[i].amount, sd->status.char_id); + ShowWarning("Removed invalid/disabled item (ID: %u, amount: %d) from storage (char_id: %d).\n", nameid, sd->storage.u.items_storage[i].amount, sd->status.char_id); storage_delitem(sd, &sd->storage, i, sd->storage.u.items_storage[i].amount); continue; } @@ -11514,7 +11518,7 @@ void pc_overheat(struct map_session_data *sd, int16 heat) { /** * Check if player is autolooting given itemID. */ -bool pc_isautolooting(struct map_session_data *sd, unsigned short nameid) +bool pc_isautolooting(struct map_session_data *sd, t_itemid nameid) { uint8 i = 0; @@ -12474,7 +12478,7 @@ uint8 pc_itemcd_add(struct map_session_data *sd, struct item_data *id, t_tick ti if( !(id->nameid == ITEMID_REINS_OF_MOUNT && sd->sc.option&(OPTION_WUGRIDER|OPTION_RIDING|OPTION_DRAGON|OPTION_MADOGEAR)) ) sd->item_delay[i].tick = tick + sd->inventory_data[n]->delay; } else {// should not happen - ShowError("pc_itemcd_add: Exceeded item delay array capacity! (nameid=%hu, char_id=%d)\n", id->nameid, sd->status.char_id); + ShowError("pc_itemcd_add: Exceeded item delay array capacity! (nameid=%u, char_id=%d)\n", id->nameid, sd->status.char_id); } //clean up used delays so we can give room for more for(i = 0; i < MAX_ITEMDELAYS; i++) { @@ -13107,7 +13111,7 @@ short pc_maxaspd(struct map_session_data *sd) { * @param nameid Item ID * @return Heal rate **/ -short pc_get_itemgroup_bonus(struct map_session_data* sd, unsigned short nameid) { +short pc_get_itemgroup_bonus(struct map_session_data* sd, t_itemid nameid) { if (sd->itemgrouphealrate.empty()) return 0; diff --git a/src/map/pc.hpp b/src/map/pc.hpp index e85ee7bb8f..3265038d6b 100644 --- a/src/map/pc.hpp +++ b/src/map/pc.hpp @@ -217,8 +217,8 @@ struct s_addeffectonskill { ///Struct of add drop item/group rate struct s_add_drop { - unsigned short nameid, ///Item ID - group; ///Group ID + t_itemid nameid; ///Item ID + unsigned short group; ///Group ID int rate; ///Rate, 1 ~ 10000, -1 ~ -100000 short race; ///Target Race, bitwise value of 1<inventory [Skotlex] uint16 catch_target_class; // pet catching, stores a pet class to catch [zzo] @@ -637,7 +637,7 @@ struct map_session_data { // Mail System [Zephyrus] struct s_mail { struct { - unsigned short nameid; + t_itemid nameid; int index, amount; } item[MAIL_MAX_ITEM]; int zeny; @@ -1041,7 +1041,7 @@ short pc_maxaspd(struct map_session_data *sd); #endif struct s_attendance_reward { - uint16 item_id; + t_itemid item_id; uint16 amount; }; @@ -1104,7 +1104,7 @@ int pc_get_skillcooldown(struct map_session_data *sd, uint16 skill_id, uint16 sk uint8 pc_checkskill(struct map_session_data *sd,uint16 skill_id); uint8 pc_checkskill_summoner(map_session_data *sd, e_summoner_power_type type); short pc_checkequip(struct map_session_data *sd,int pos,bool checkall=false); -bool pc_checkequip2(struct map_session_data *sd, unsigned short nameid, int min, int max); +bool pc_checkequip2(struct map_session_data *sd, t_itemid nameid, int min, int max); void pc_scdata_received(struct map_session_data *sd); void pc_check_expiration(struct map_session_data *sd); @@ -1131,9 +1131,9 @@ void pc_setsavepoint(struct map_session_data *sd, short mapindex,int x,int y); char pc_randomwarp(struct map_session_data *sd,clr_type type); bool pc_memo(struct map_session_data* sd, int pos); -char pc_checkadditem(struct map_session_data *sd, unsigned short nameid, int amount); +char pc_checkadditem(struct map_session_data *sd, t_itemid nameid, int amount); uint8 pc_inventoryblank(struct map_session_data *sd); -short pc_search_inventory(struct map_session_data *sd, unsigned short nameid); +short pc_search_inventory(struct map_session_data *sd, t_itemid nameid); char pc_payzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd); enum e_additem_result pc_additem(struct map_session_data *sd, struct item *item, int amount, e_log_pick_type log_type); char pc_getzeny(struct map_session_data *sd, int zeny, enum e_log_pick_type type, struct map_session_data *tsd); @@ -1157,7 +1157,7 @@ int pc_cartitem_amount(struct map_session_data *sd,int idx,int amount); bool pc_takeitem(struct map_session_data *sd,struct flooritem_data *fitem); bool pc_dropitem(struct map_session_data *sd,int n,int amount); -bool pc_isequipped(struct map_session_data *sd, unsigned short nameid); +bool pc_isequipped(struct map_session_data *sd, t_itemid nameid); enum adopt_responses pc_try_adopt(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd); bool pc_adoption(struct map_session_data *p1_sd, struct map_session_data *p2_sd, struct map_session_data *b_sd); @@ -1237,7 +1237,7 @@ int pc_dead(struct map_session_data *sd,struct block_list *src); void pc_revive(struct map_session_data *sd,unsigned int hp, unsigned int sp); bool pc_revive_item(struct map_session_data *sd); void pc_heal(struct map_session_data *sd,unsigned int hp,unsigned int sp, int type); -int pc_itemheal(struct map_session_data *sd,int itemid, int hp,int sp); +int pc_itemheal(struct map_session_data *sd, t_itemid itemid, int hp,int sp); int pc_percentheal(struct map_session_data *sd,int,int); bool pc_jobchange(struct map_session_data *sd, int job, char upper); void pc_setoption(struct map_session_data *,int); @@ -1359,7 +1359,7 @@ void pc_inventory_rental_add(struct map_session_data *sd, unsigned int seconds); int pc_read_motd(void); // [Valaris] int pc_disguise(struct map_session_data *sd, int class_); -bool pc_isautolooting(struct map_session_data *sd, unsigned short nameid); +bool pc_isautolooting(struct map_session_data *sd, t_itemid nameid); void pc_overheat(struct map_session_data *sd, int16 heat); @@ -1393,7 +1393,7 @@ void pc_bonus_script_clear(struct map_session_data *sd, uint16 flag); void pc_cell_basilica(struct map_session_data *sd); -short pc_get_itemgroup_bonus(struct map_session_data* sd, unsigned short nameid); +short pc_get_itemgroup_bonus(struct map_session_data* sd, t_itemid nameid); short pc_get_itemgroup_bonus_group(struct map_session_data* sd, uint16 group_id); bool pc_is_same_equip_index(enum equip_index eqi, short *equip_index, short index); diff --git a/src/map/pet.cpp b/src/map/pet.cpp index c7f98f286b..73fb8b159b 100644 --- a/src/map/pet.cpp +++ b/src/map/pet.cpp @@ -448,9 +448,9 @@ uint64 PetDatabase::parseBodyNode( const YAML::Node &node ){ return 0; } - uint32 amount; + uint16 amount; - if( !this->asUInt32( requirementNode, "Amount", amount ) ){ + if( !this->asUInt16( requirementNode, "Amount", amount ) ){ return 0; } @@ -659,7 +659,7 @@ void pet_set_intimate(struct pet_data *pd, int value) * @param item_id : item ID of tamer * @return true:success, false:failure */ -bool pet_create_egg(struct map_session_data *sd, unsigned short item_id) +bool pet_create_egg(struct map_session_data *sd, t_itemid item_id) { std::shared_ptr pet = pet_db_search(item_id, PET_EGG); @@ -1242,7 +1242,8 @@ int pet_catch_process2(struct map_session_data* sd, int target_id) if(!md || md->bl.type != BL_MOB || md->bl.prev == NULL) { // Invalid inputs/state, abort capture. clif_pet_roulette(sd,0); sd->catch_target_class = PET_CATCH_FAIL; - sd->itemid = sd->itemindex = -1; + sd->itemid = 0; + sd->itemindex = -1; return 1; } @@ -1460,7 +1461,6 @@ int pet_change_name_ack(struct map_session_data *sd, char* name, int flag) int pet_equipitem(struct map_session_data *sd,int index) { struct pet_data *pd; - unsigned short nameid; nullpo_retr(1, sd); @@ -1475,7 +1475,7 @@ int pet_equipitem(struct map_session_data *sd,int index) return 1; } - nameid = sd->inventory.u.items_inventory[index].nameid; + t_itemid nameid = sd->inventory.u.items_inventory[index].nameid; if(pet_db_ptr->AcceID == 0 || nameid != pet_db_ptr->AcceID || pd->pet.equip != 0) { clif_equipitemack(sd,0,0,ITEM_EQUIP_ACK_FAIL); @@ -1513,13 +1513,12 @@ int pet_equipitem(struct map_session_data *sd,int index) static int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) { struct item tmp_item; - unsigned short nameid; unsigned char flag = 0; if(pd->pet.equip == 0) return 1; - nameid = pd->pet.equip; + t_itemid nameid = pd->pet.equip; pd->pet.equip = 0; status_set_viewdata(&pd->bl, pd->pet.class_); clif_pet_equip_area(pd); diff --git a/src/map/pet.hpp b/src/map/pet.hpp index 06cefdfa6a..cab2e49e40 100644 --- a/src/map/pet.hpp +++ b/src/map/pet.hpp @@ -22,16 +22,16 @@ struct s_pet_evo_data { uint16 target_mob_id; - std::unordered_map requirements; + std::unordered_map requirements; }; /// Pet DB struct s_pet_db { uint16 class_; ///< Monster ID - uint16 itemID; ///< Lure ID - uint16 EggID; ///< Egg ID - uint16 AcceID; ///< Accessory ID - uint16 FoodID; ///< Food ID + t_itemid itemID; ///< Lure ID + t_itemid EggID; ///< Egg ID + t_itemid AcceID; ///< Accessory ID + t_itemid FoodID; ///< Food ID uint16 fullness; ///< Amount of hunger decresed each hungry_delay interval uint32 hungry_delay; ///< Hunger value decrease each x seconds int32 hunger_increase; ///< Hunger increased every time the pet is fed. @@ -184,7 +184,7 @@ struct pet_data { } }; -bool pet_create_egg(struct map_session_data *sd, unsigned short item_id); +bool pet_create_egg(struct map_session_data *sd, t_itemid item_id); int pet_hungry_val(struct pet_data *pd); void pet_set_intimate(struct pet_data *pd, int value); int pet_target_check(struct pet_data *pd,struct block_list *bl,int type); diff --git a/src/map/quest.hpp b/src/map/quest.hpp index 78f1de4cc3..a74f03b584 100644 --- a/src/map/quest.hpp +++ b/src/map/quest.hpp @@ -16,7 +16,7 @@ struct map_session_data; enum e_size : uint8; struct s_quest_dropitem { - uint16 nameid; + t_itemid nameid; uint16 count; uint16 rate; uint16 mob_id; diff --git a/src/map/script.cpp b/src/map/script.cpp index bab8c8bd03..9b83c7a03d 100644 --- a/src/map/script.cpp +++ b/src/map/script.cpp @@ -6933,7 +6933,7 @@ static int script_countitem_sub(struct item *items, struct item_data *id, int si int count = 0; if (!expanded) { // For non-expanded functions - unsigned short nameid = id->nameid; + t_itemid nameid = id->nameid; for (int i = 0; i < size; i++) { item *itm = &items[i]; @@ -7258,7 +7258,8 @@ BUILDIN_FUNC(checkweight) slots = pc_inventoryblank(sd); //nb of empty slot for (i = 2; i < nbargs; i += 2) { - unsigned short nameid, amount; + t_itemid nameid; + unsigned short amount; if( script_isstring(st, i) ) // item name id = itemdb_searchname(script_getstr(st, i)); @@ -7367,14 +7368,14 @@ BUILDIN_FUNC(checkweight2) slots = pc_inventoryblank(sd); for(i=0; i nameid = script_getnum(st, 2); if( !(id = itemdb_exists(nameid)) ){ - ShowError("buildin_getitem: Nonexistant item %d requested.\n", nameid); + ShowError("buildin_getitem: Nonexistant item %u requested.\n", nameid); return SCRIPT_CMD_FAILURE; //No item created. } } @@ -7521,9 +7523,10 @@ BUILDIN_FUNC(getitem) *------------------------------------------*/ BUILDIN_FUNC(getitem2) { - unsigned short nameid, amount; + t_itemid nameid; + unsigned short amount; int iden, ref, attr; - unsigned short c1, c2, c3, c4; + t_itemid c1, c2, c3, c4; char bound = BOUND_NONE; struct item_data *item_data = NULL; struct item item_tmp; @@ -7566,7 +7569,7 @@ BUILDIN_FUNC(getitem2) } else { nameid = script_getnum(st, 2); if( (item_data = itemdb_exists(nameid)) == NULL ){ - ShowError("buildin_getitem2: Nonexistant item %d requested (by conv_num).\n", nameid); + ShowError("buildin_getitem2: Nonexistant item %u requested (by conv_num).\n", nameid); return SCRIPT_CMD_FAILURE; //No item created. } } @@ -7575,10 +7578,10 @@ BUILDIN_FUNC(getitem2) iden = script_getnum(st,4); ref = script_getnum(st,5); attr = script_getnum(st,6); - c1 = (unsigned short)script_getnum(st,7); - c2 = (unsigned short)script_getnum(st,8); - c3 = (unsigned short)script_getnum(st,9); - c4 = (unsigned short)script_getnum(st,10); + c1 = script_getnum(st,7); + c2 = script_getnum(st,8); + c3 = script_getnum(st,9); + c4 = script_getnum(st,10); if( item_data ) { int get_count = 0, i; @@ -7644,7 +7647,7 @@ BUILDIN_FUNC(rentitem) { struct map_session_data *sd; struct item it; int seconds; - unsigned short nameid = 0; + t_itemid nameid = 0; unsigned char flag = 0; if (!script_accid2sd(4,sd)) @@ -7667,7 +7670,7 @@ BUILDIN_FUNC(rentitem) { nameid = script_getnum(st, 2); if( nameid == 0 || !itemdb_exists(nameid) ) { - ShowError("buildin_rentitem: Nonexistant item %hu requested.\n", nameid); + ShowError("buildin_rentitem: Nonexistant item %u requested.\n", nameid); return SCRIPT_CMD_FAILURE; } } @@ -7700,9 +7703,10 @@ BUILDIN_FUNC(rentitem2) { struct item it; struct item_data *id; int seconds; - unsigned short nameid = 0; + t_itemid nameid = 0; unsigned char flag = 0; - int iden,ref,attr,c1,c2,c3,c4; + int iden,ref,attr; + t_itemid c1,c2,c3,c4; const char *funcname = script_getfuncname(st); if (funcname[strlen(funcname)-1] == '3') { @@ -7723,7 +7727,7 @@ BUILDIN_FUNC(rentitem2) { } else { nameid = script_getnum(st, 2); if( !(id = itemdb_search(nameid))) { - ShowError("buildin_rentitem2: Nonexistant item %hu requested.\n", nameid); + ShowError("buildin_rentitem2: Nonexistant item %u requested.\n", nameid); return SCRIPT_CMD_FAILURE; } } @@ -7745,20 +7749,20 @@ BUILDIN_FUNC(rentitem2) { ref = attr = 0; } - c1 = (short)script_getnum(st,7); - c2 = (short)script_getnum(st,8); - c3 = (short)script_getnum(st,9); - c4 = (short)script_getnum(st,10); + c1 = script_getnum(st,7); + c2 = script_getnum(st,8); + c3 = script_getnum(st,9); + c4 = script_getnum(st,10); memset(&it, 0, sizeof(it)); it.nameid = nameid; it.identify = iden; it.refine = ref; it.attribute = attr; - it.card[0] = (short)c1; - it.card[1] = (short)c2; - it.card[2] = (short)c3; - it.card[3] = (short)c4; + it.card[0] = c1; + it.card[1] = c2; + it.card[2] = c3; + it.card[3] = c4; it.expire_time = (unsigned int)(time(NULL) + seconds); it.bound = BOUND_NONE; @@ -7784,7 +7788,7 @@ BUILDIN_FUNC(rentitem2) { *------------------------------------------*/ BUILDIN_FUNC(getnameditem) { - unsigned short nameid; + t_itemid nameid; struct item item_tmp; TBL_PC *sd, *tsd; @@ -7864,7 +7868,8 @@ BUILDIN_FUNC(grouprandomitem) { * makeitem "",,"",,; */ BUILDIN_FUNC(makeitem) { - uint16 nameid, amount, flag = 0, x, y; + t_itemid nameid; + uint16 amount, flag = 0, x, y; const char *mapname; int m; struct item item_tmp; @@ -7875,11 +7880,26 @@ BUILDIN_FUNC(makeitem) { if( item_data ) nameid = item_data->nameid; - else - nameid = UNKNOWN_ITEM_ID; + else{ + ShowError( "buildin_makeitem: Unknown item %s\n", name ); + return SCRIPT_CMD_FAILURE; + } + } + else { + int32 val = script_getnum( st, 2 ); + + if( val < 0 ){ + flag = 1; + nameid = (t_itemid)( -1 * val ); + }else{ + nameid = (t_itemid)val; + } + + if( !itemdb_exists( nameid ) ){ + ShowError( "buildin_makeitem: Unknown item id %u\n", nameid ); + return SCRIPT_CMD_FAILURE; + } } - else - nameid = script_getnum(st, 2); amount = script_getnum(st,3); mapname = script_getstr(st,4); @@ -7894,21 +7914,14 @@ BUILDIN_FUNC(makeitem) { } else m = map_mapname2mapid(mapname); - if(nameid<0) { - nameid = -nameid; - flag = 1; - } + memset(&item_tmp,0,sizeof(item_tmp)); + item_tmp.nameid = nameid; + if (!flag) + item_tmp.identify = 1; + else + item_tmp.identify = itemdb_isidentified(nameid); - if(nameid > 0) { - memset(&item_tmp,0,sizeof(item_tmp)); - item_tmp.nameid = nameid; - if(!flag) - item_tmp.identify = 1; - else - item_tmp.identify = itemdb_isidentified(nameid); - - map_addflooritem(&item_tmp,amount,m,x,y,0,0,0,4,0); - } + map_addflooritem(&item_tmp,amount,m,x,y,0,0,0,4,0); return SCRIPT_CMD_SUCCESS; } @@ -7920,24 +7933,32 @@ BUILDIN_FUNC(makeitem) { * makeitem3 "",,"",,,,,,,,,,,,; */ BUILDIN_FUNC(makeitem2) { - uint16 nameid, amount, x, y; + uint32 nameid; + uint16 amount, x, y; const char *mapname; int m; struct item item_tmp; struct item_data *id; const char *funcname = script_getfuncname(st); - if( script_isstring(st, 2) ){ - const char *name = script_getstr(st, 2); - struct item_data *item_data = itemdb_searchname(name); + if( script_isstring( st, 2 ) ){ + const char *name = script_getstr( st, 2 ); + struct item_data *item_data = itemdb_searchname( name ); - if( item_data ) + if( item_data ){ nameid = item_data->nameid; - else - nameid = UNKNOWN_ITEM_ID; + }else{ + ShowError( "buildin_%s: Unknown item %s\n", funcname, name ); + return SCRIPT_CMD_FAILURE; + } + }else{ + nameid = (t_itemid)script_getnum( st, 2 ); + + if( !itemdb_exists( nameid ) ){ + ShowError( "buildin_%s: Unknown item id %u\n", funcname, nameid ); + return SCRIPT_CMD_FAILURE; + } } - else - nameid = script_getnum(st, 2); amount = script_getnum(st,3); mapname = script_getstr(st,4); @@ -8281,7 +8302,7 @@ BUILDIN_FUNC(delitem) it.nameid = script_getnum(st, 2);// if( !itemdb_exists( it.nameid ) ) { - ShowError("buildin_%s: unknown item \"%hu\".\n", command, it.nameid); + ShowError("buildin_%s: unknown item \"%u\".\n", command, it.nameid); st->state = END; return SCRIPT_CMD_FAILURE; } @@ -8297,7 +8318,7 @@ BUILDIN_FUNC(delitem) return SCRIPT_CMD_SUCCESS; } - ShowError("buildin_%s: failed to delete %d items (AID=%d item_id=%hu).\n", command, it.amount, sd->status.account_id, it.nameid); + ShowError("buildin_%s: failed to delete %d items (AID=%d item_id=%u).\n", command, it.amount, sd->status.account_id, it.nameid); st->state = END; st->mes_active = 0; clif_scriptclose(sd, st->oid); @@ -8375,7 +8396,7 @@ BUILDIN_FUNC(delitem2) it.nameid = script_getnum(st, 2);// if( !itemdb_exists( it.nameid ) ) { - ShowError("buildin_%s: unknown item \"%hu\".\n", command, it.nameid); + ShowError("buildin_%s: unknown item \"%u\".\n", command, it.nameid); st->state = END; return SCRIPT_CMD_FAILURE; } @@ -8385,10 +8406,10 @@ BUILDIN_FUNC(delitem2) it.identify=script_getnum(st,4); it.refine=script_getnum(st,5); it.attribute=script_getnum(st,6); - it.card[0]=(short)script_getnum(st,7); - it.card[1]=(short)script_getnum(st,8); - it.card[2]=(short)script_getnum(st,9); - it.card[3]=(short)script_getnum(st,10); + it.card[0]=script_getnum(st,7); + it.card[1]=script_getnum(st,8); + it.card[2]=script_getnum(st,9); + it.card[3]=script_getnum(st,10); if (command[strlen(command)-1] == '3') { int res = script_getitem_randomoption(st, sd, &it, command, 11); @@ -8405,7 +8426,7 @@ BUILDIN_FUNC(delitem2) return SCRIPT_CMD_SUCCESS; } - ShowError("buildin_%s: failed to delete %d items (AID=%d item_id=%hu).\n", command, it.amount, sd->status.account_id, it.nameid); + ShowError("buildin_%s: failed to delete %d items (AID=%d item_id=%u).\n", command, it.amount, sd->status.account_id, it.nameid); st->state = END; st->mes_active = 0; clif_scriptclose(sd, st->oid); @@ -11526,7 +11547,7 @@ BUILDIN_FUNC(getunits) *------------------------------------------*/ static int buildin_getareadropitem_sub(struct block_list *bl,va_list ap) { - unsigned short nameid = (unsigned short)va_arg(ap, int); + t_itemid nameid = va_arg(ap, t_itemid); unsigned short *amount = (unsigned short *)va_arg(ap, int *); struct flooritem_data *drop=(struct flooritem_data *)bl; @@ -11539,7 +11560,8 @@ BUILDIN_FUNC(getareadropitem) { const char *str; int16 m,x0,y0,x1,y1; - unsigned short nameid, amount = 0; + t_itemid nameid; + unsigned short amount = 0; str=script_getstr(st,2); x0=script_getnum(st,3); @@ -11551,12 +11573,21 @@ BUILDIN_FUNC(getareadropitem) const char *name = script_getstr(st, 7); struct item_data *item_data = itemdb_searchname(name); - nameid=UNKNOWN_ITEM_ID; if( item_data ) nameid=item_data->nameid; - }else + else{ + ShowError( "buildin_getareadropitem: Unknown item %s\n", name ); + return SCRIPT_CMD_FAILURE; + } + }else{ nameid = script_getnum(st, 7); + if( !itemdb_exists( nameid ) ){ + ShowError( "buildin_getareadropitem: Unknown item id %u\n", nameid ); + return SCRIPT_CMD_FAILURE; + } + } + if( (m=map_mapname2mapid(str))< 0){ script_pushint(st,-1); return SCRIPT_CMD_SUCCESS; @@ -13834,7 +13865,7 @@ BUILDIN_FUNC(guardianinfo) *------------------------------------------*/ BUILDIN_FUNC(getitemname) { - unsigned short item_id = 0; + t_itemid item_id = 0; struct item_data *i_data; char *item_name; @@ -13865,10 +13896,9 @@ BUILDIN_FUNC(getitemname) *------------------------------------------*/ BUILDIN_FUNC(getitemslots) { - unsigned short item_id; struct item_data *i_data; - item_id=script_getnum(st,2); + t_itemid item_id=script_getnum(st,2); i_data = itemdb_exists(item_id); @@ -13907,10 +13937,10 @@ BUILDIN_FUNC(getitemslots) *------------------------------------------*/ BUILDIN_FUNC(getiteminfo) { - unsigned short item_id,n; + unsigned short n; struct item_data *i_data; - item_id = script_getnum(st,2); + t_itemid item_id = script_getnum(st,2); n = script_getnum(st,3); i_data = itemdb_exists(item_id); @@ -13948,20 +13978,28 @@ BUILDIN_FUNC(getiteminfo) 12 elv; 13 wlv; 14 view id + 15 eLvmax + 16 matk (renewal) * Returns Value or -1 if the wrong field's been set *------------------------------------------*/ BUILDIN_FUNC(setiteminfo) { - unsigned short item_id; int n,value; struct item_data *i_data; - item_id = script_getnum(st,2); + t_itemid item_id = script_getnum(st,2); n = script_getnum(st,3); value = script_getnum(st,4); i_data = itemdb_exists(item_id); - if (i_data && n>=0 && n<=14) { +#ifndef RENEWAL + if( n == 16 ){ + script_pushint( st, -1 ); + return SCRIPT_CMD_SUCCESS; + } +#endif + + if (i_data && n>=0 && n<=16) { int *item_arr = (int*)&i_data->value_buy; item_arr[n] = value; script_pushint(st,value); @@ -15821,14 +15859,13 @@ BUILDIN_FUNC(unequip) { * equip {,}; **/ BUILDIN_FUNC(equip) { - unsigned short nameid = 0; TBL_PC *sd; struct item_data *item_data; if (!script_charid2sd(3,sd)) return SCRIPT_CMD_FAILURE; - nameid = script_getnum(st,2); + t_itemid nameid = script_getnum(st,2); if ((item_data = itemdb_exists(nameid))) { int i; @@ -15840,28 +15877,27 @@ BUILDIN_FUNC(equip) { } } - ShowError("buildin_equip: Item %hu cannot be equipped\n",nameid); + ShowError("buildin_equip: Item %u cannot be equipped\n",nameid); script_pushint(st,0); return SCRIPT_CMD_FAILURE; } BUILDIN_FUNC(autoequip) { - unsigned short nameid; int flag; struct item_data *item_data; - nameid=script_getnum(st,2); + t_itemid nameid=script_getnum(st,2); flag=script_getnum(st,3); if( ( item_data = itemdb_exists(nameid) ) == NULL ) { - ShowError("buildin_autoequip: Invalid item '%hu'.\n", nameid); + ShowError("buildin_autoequip: Invalid item '%u'.\n", nameid); return SCRIPT_CMD_FAILURE; } if( !itemdb_isequip2(item_data) ) { - ShowError("buildin_autoequip: Item '%hu' cannot be equipped.\n", nameid); + ShowError("buildin_autoequip: Item '%u' cannot be equipped.\n", nameid); return SCRIPT_CMD_FAILURE; } @@ -17144,7 +17180,8 @@ BUILDIN_FUNC(npcshopadditem) #if PACKETVER >= 20131223 if (nd->subtype == NPCTYPE_MARKETSHOP) { for (n = 0, i = 3; n < amount; n++, i += offs) { - uint16 nameid = script_getnum(st,i), j; + t_itemid nameid = script_getnum(st,i); + uint16 j; // Check existing entries ARR_FIND(0, nd->u.shop.count, j, nd->u.shop.shop_item[j].nameid == nameid); @@ -17196,7 +17233,7 @@ BUILDIN_FUNC(npcshopdelitem) // remove specified items from the shop item list for( i = 3; i < 3 + amount; i++ ) { - unsigned short nameid = script_getnum(st,i); + t_itemid nameid = script_getnum(st,i); ARR_FIND( 0, size, n, nd->u.shop.shop_item[n].nameid == nameid ); if( n < size ) { @@ -17255,13 +17292,12 @@ BUILDIN_FUNC(npcshopattach) *------------------------------------------*/ BUILDIN_FUNC(setitemscript) { - unsigned short item_id; int n = 0; const char *script; struct item_data *i_data; struct script_code **dstscript; - item_id = script_getnum(st,2); + t_itemid item_id = script_getnum(st,2); script = script_getstr(st,3); if( script_hasdata(st,4) ) n=script_getnum(st,4); @@ -17303,7 +17339,6 @@ BUILDIN_FUNC(setitemscript) BUILDIN_FUNC(addmonsterdrop) { struct mob_db *mob; - unsigned short item_id; int rate; if(script_isstring(st, 2)) @@ -17311,11 +17346,11 @@ BUILDIN_FUNC(addmonsterdrop) else mob = mob_db(script_getnum(st,2)); - item_id=script_getnum(st,3); + t_itemid item_id=script_getnum(st,3); rate=script_getnum(st,4); if(!itemdb_exists(item_id)){ - ShowError("addmonsterdrop: Nonexistant item %hu requested.\n", item_id ); + ShowError("addmonsterdrop: Nonexistant item %u requested.\n", item_id ); return SCRIPT_CMD_FAILURE; } @@ -17358,17 +17393,16 @@ BUILDIN_FUNC(addmonsterdrop) BUILDIN_FUNC(delmonsterdrop) { struct mob_db *mob; - unsigned short item_id; if(script_isstring(st, 2)) mob = mob_db(mobdb_searchname(script_getstr(st,2))); else mob = mob_db(script_getnum(st,2)); - item_id=script_getnum(st,3); + t_itemid item_id=script_getnum(st,3); if(!itemdb_exists(item_id)){ - ShowError("delmonsterdrop: Nonexistant item %hu requested.\n", item_id ); + ShowError("delmonsterdrop: Nonexistant item %u requested.\n", item_id ); return SCRIPT_CMD_FAILURE; } @@ -21824,10 +21858,10 @@ BUILDIN_FUNC(consumeitem) return SCRIPT_CMD_FAILURE; } } else { - unsigned short nameid = script_getnum(st, 2); + t_itemid nameid = script_getnum(st, 2); if( ( item_data = itemdb_exists( nameid ) ) == NULL ){ - ShowError("buildin_consumeitem: Nonexistant item %hu requested.\n", nameid ); + ShowError("buildin_consumeitem: Nonexistant item %u requested.\n", nameid ); return SCRIPT_CMD_FAILURE; } } @@ -22554,7 +22588,8 @@ BUILDIN_FUNC(mergeitem) { BUILDIN_FUNC(mergeitem2) { struct map_session_data *sd; struct item *items = NULL; - uint16 i, count = 0, nameid = 0; + uint16 i, count = 0; + t_itemid nameid = 0; if (!script_charid2sd(3, sd)) return SCRIPT_CMD_FAILURE; @@ -22573,7 +22608,7 @@ BUILDIN_FUNC(mergeitem2) { } else {// nameid = script_getnum(st, 2); if (!itemdb_exists(nameid)) { - ShowError("buildin_mergeitem: Nonexistant item %d requested.\n", nameid); + ShowError("buildin_mergeitem: Nonexistant item %u requested.\n", nameid); script_pushint(st, count); return SCRIPT_CMD_FAILURE; } @@ -22635,7 +22670,7 @@ BUILDIN_FUNC(mergeitem2) { BUILDIN_FUNC(npcshopupdate) { const char* npcname = script_getstr(st, 2); struct npc_data* nd = npc_name2id(npcname); - uint16 nameid = script_getnum(st, 3); + t_itemid nameid = script_getnum(st, 3); int price = script_getnum(st, 4); #if PACKETVER >= 20131223 uint16 stock = script_hasdata(st,5) ? script_getnum(st,5) : 0; @@ -24364,11 +24399,11 @@ BUILDIN_FUNC(mail){ } for( i = 0; i < num_items && start < end; i++, start++ ){ - msg.item[i].nameid = (unsigned short)get_val2_num( st, reference_uid( id, start ), reference_getref( data ) ); + msg.item[i].nameid = (t_itemid)get_val2_num( st, reference_uid( id, start ), reference_getref( data ) ); msg.item[i].identify = 1; if( !itemdb_exists(msg.item[i].nameid) ){ - ShowError( "buildin_mail: invalid item id %hu.\n", msg.item[i].nameid ); + ShowError( "buildin_mail: invalid item id %u.\n", msg.item[i].nameid ); return SCRIPT_CMD_FAILURE; } } @@ -24391,18 +24426,18 @@ BUILDIN_FUNC(mail){ msg.item[i].amount = (short)get_val2_num( st, reference_uid( id, start ), reference_getref( data ) ); if( msg.item[i].amount <= 0 ){ - ShowError( "buildin_mail: amount %d for item %hu is invalid.\n", msg.item[i].amount, msg.item[i].nameid ); + ShowError( "buildin_mail: amount %d for item %u is invalid.\n", msg.item[i].amount, msg.item[i].nameid ); return SCRIPT_CMD_FAILURE; }else if( itemdb_isstackable2(item) ){ uint16 max = item->stack.amount > 0 ? item->stack.amount : MAX_AMOUNT; if( msg.item[i].amount > max ){ - ShowWarning( "buildin_mail: amount %d for item %hu is exceeding the maximum of %d. Capping...\n", msg.item[i].amount, msg.item[i].nameid, max ); + ShowWarning( "buildin_mail: amount %d for item %u is exceeding the maximum of %d. Capping...\n", msg.item[i].amount, msg.item[i].nameid, max ); msg.item[i].amount = max; } }else{ if( msg.item[i].amount > 1 ){ - ShowWarning( "buildin_mail: amount %d is invalid for non-stackable item %hu.\n", msg.item[i].amount, msg.item[i].nameid ); + ShowWarning( "buildin_mail: amount %d is invalid for non-stackable item %u.\n", msg.item[i].amount, msg.item[i].nameid ); msg.item[i].amount = 1; } } @@ -24455,7 +24490,7 @@ BUILDIN_FUNC(mail){ script_removetop(st, -1, 0); if( msg.item[i].bound <= BOUND_NONE || msg.item[i].bound >= BOUND_MAX ){ - ShowError( "buildin_mail: bound %d for item %hu is invalid.\n", msg.item[i].bound, msg.item[i].nameid ); + ShowError( "buildin_mail: bound %d for item %u is invalid.\n", msg.item[i].bound, msg.item[i].nameid ); return SCRIPT_CMD_FAILURE; } } @@ -24473,10 +24508,10 @@ BUILDIN_FUNC(mail){ } for( k = 0; k < num_items && start < end; k++, start++ ){ - msg.item[k].card[i] = (unsigned short)get_val2_num( st, reference_uid( id, start ), reference_getref( data ) ); + msg.item[k].card[i] = (t_itemid)get_val2_num( st, reference_uid( id, start ), reference_getref( data ) ); if( msg.item[k].card[i] != 0 && !itemdb_exists(msg.item[k].card[i]) ){ - ShowError( "buildin_mail: invalid card id %hu.\n", msg.item[k].card[i] ); + ShowError( "buildin_mail: invalid card id %u.\n", msg.item[k].card[i] ); return SCRIPT_CMD_FAILURE; } } diff --git a/src/map/searchstore.cpp b/src/map/searchstore.cpp index 56cc6b37b5..9fdea73d54 100644 --- a/src/map/searchstore.cpp +++ b/src/map/searchstore.cpp @@ -38,7 +38,7 @@ enum e_searchstore_effecttype }; /// Type for shop search function -typedef bool (*searchstore_search_t)(struct map_session_data* sd, unsigned short nameid); +typedef bool (*searchstore_search_t)(struct map_session_data* sd, t_itemid nameid); typedef bool (*searchstore_searchall_t)(struct map_session_data* sd, const struct s_search_store_search* s); /** @@ -173,14 +173,14 @@ void searchstore_query(struct map_session_data* sd, unsigned char type, unsigned // validate lists for( i = 0; i < item_count; i++ ) { if( !itemdb_exists(itemlist[i].itemId) ) { - ShowWarning("searchstore_query: Client resolved item %hu is not known.\n", itemlist[i].itemId); + ShowWarning("searchstore_query: Client resolved item %u is not known.\n", itemlist[i].itemId); clif_search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM); return; } } for( i = 0; i < card_count; i++ ) { if( !itemdb_exists(cardlist[i].itemId) ) { - ShowWarning("searchstore_query: Client resolved card %hu is not known.\n", cardlist[i].itemId); + ShowWarning("searchstore_query: Client resolved card %u is not known.\n", cardlist[i].itemId); clif_search_store_info_failed(sd, SSI_FAILED_NOTHING_SEARCH_ITEM); return; } @@ -309,7 +309,7 @@ void searchstore_close(struct map_session_data* sd) * @param store_id : store ID created by client * @param nameid : item being searched */ -void searchstore_click(struct map_session_data* sd, uint32 account_id, int store_id, unsigned short nameid) +void searchstore_click(struct map_session_data* sd, uint32 account_id, int store_id, t_itemid nameid) { unsigned int i; struct map_session_data* pl_sd; @@ -322,7 +322,7 @@ void searchstore_click(struct map_session_data* sd, uint32 account_id, int store ARR_FIND( 0, sd->searchstore.count, i, sd->searchstore.items[i].store_id == store_id && sd->searchstore.items[i].account_id == account_id && sd->searchstore.items[i].nameid == nameid ); if( i == sd->searchstore.count ) { // no such result, crafted - ShowWarning("searchstore_click: Received request with item %hu of account %d, which is not part of current result set (account_id=%d, char_id=%d).\n", nameid, account_id, sd->bl.id, sd->status.char_id); + ShowWarning("searchstore_click: Received request with item %u of account %d, which is not part of current result set (account_id=%d, char_id=%d).\n", nameid, account_id, sd->bl.id, sd->status.char_id); clif_search_store_info_failed(sd, SSI_FAILED_SSILIST_CLICK_TO_OPEN_STORE); return; } @@ -400,7 +400,7 @@ void searchstore_clearremote(struct map_session_data* sd) * @param card : card in the item * @param refine : refine of the item */ -bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, unsigned short nameid, unsigned short amount, unsigned int price, const unsigned short* card, unsigned char refine) +bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, t_itemid nameid, unsigned short amount, unsigned int price, const t_itemid* card, unsigned char refine) { struct s_search_store_info_item* ssitem; diff --git a/src/map/searchstore.hpp b/src/map/searchstore.hpp index 59d5ed2f16..b074c90591 100644 --- a/src/map/searchstore.hpp +++ b/src/map/searchstore.hpp @@ -27,10 +27,10 @@ struct s_search_store_info_item { int store_id; uint32 account_id; char store_name[MESSAGE_SIZE]; - unsigned short nameid; + t_itemid nameid; unsigned short amount; unsigned int price; - unsigned short card[MAX_SLOTS]; + t_itemid card[MAX_SLOTS]; unsigned char refine; }; @@ -52,9 +52,9 @@ bool searchstore_querynext(struct map_session_data* sd); void searchstore_next(struct map_session_data* sd); void searchstore_clear(struct map_session_data* sd); void searchstore_close(struct map_session_data* sd); -void searchstore_click(struct map_session_data* sd, uint32 account_id, int store_id, unsigned short nameid); +void searchstore_click(struct map_session_data* sd, uint32 account_id, int store_id, t_itemid nameid); bool searchstore_queryremote(struct map_session_data* sd, uint32 account_id); void searchstore_clearremote(struct map_session_data* sd); -bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, unsigned short nameid, unsigned short amount, unsigned int price, const unsigned short* card, unsigned char refine); +bool searchstore_result(struct map_session_data* sd, int store_id, uint32 account_id, const char* store_name, t_itemid nameid, unsigned short amount, unsigned int price, const t_itemid* card, unsigned char refine); #endif /* SEARCHSTORE_HPP */ diff --git a/src/map/skill.cpp b/src/map/skill.cpp index d3c126f6d7..8b026a33ef 100755 --- a/src/map/skill.cpp +++ b/src/map/skill.cpp @@ -94,7 +94,7 @@ ReadingSpellbookDatabase reading_spellbook_db; #define MAX_SKILL_CHANGEMATERIAL_DB 75 #define MAX_SKILL_CHANGEMATERIAL_SET 3 struct s_skill_changematerial_db { - unsigned short nameid; + t_itemid nameid; unsigned short rate; unsigned short qty[MAX_SKILL_CHANGEMATERIAL_SET]; unsigned short qty_rate[MAX_SKILL_CHANGEMATERIAL_SET]; @@ -1867,7 +1867,7 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1 break; } } - sd->itemid = -1; + sd->itemid = 0; } break; case GN_HELLS_PLANT_ATK: @@ -4060,7 +4060,8 @@ static int skill_check_condition_mercenary(struct block_list *bl, uint16 skill_i struct status_data *status; struct map_session_data *sd = NULL; int i, hp, sp, hp_rate, sp_rate, state, mhp; - int itemid[MAX_SKILL_ITEM_REQUIRE],amount[ARRAYLENGTH(itemid)],index[ARRAYLENGTH(itemid)]; + t_itemid itemid[MAX_SKILL_ITEM_REQUIRE]; + int amount[ARRAYLENGTH(itemid)], index[ARRAYLENGTH(itemid)]; nullpo_retr(0, bl); @@ -4132,7 +4133,7 @@ static int skill_check_condition_mercenary(struct block_list *bl, uint16 skill_i for( i = 0; i < ARRAYLENGTH(itemid); i++ ) { index[i] = -1; - if( itemid[i] < 1 ) continue; // No item + if( itemid[i] == 0 ) continue; // No item index[i] = pc_search_inventory(sd, itemid[i]); if( index[i] < 0 || sd->inventory.u.items_inventory[index[i]].amount < amount[i] ) { @@ -11002,13 +11003,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui break; case GN_SLINGITEM: if( sd ) { - int ammo_id; - i = sd->equip_index[EQI_AMMO]; if( i < 0 ) break; // No ammo. - ammo_id = sd->inventory_data[i]->nameid; - if( ammo_id <= 0 ) + t_itemid ammo_id = sd->inventory_data[i]->nameid; + if( ammo_id == 0 ) break; sd->itemid = ammo_id; if( itemdb_group_item_exists(IG_BOMB, ammo_id) ) { @@ -13309,7 +13308,8 @@ struct skill_unit_group *skill_unitsetting(struct block_list *src, uint16 skill_ int i, val1 = 0, val2 = 0, val3 = 0; t_tick limit; int link_group_id = 0; - int target, interval, range, req_item = 0; + int target, interval, range; + t_itemid req_item = 0; struct s_skill_unit_layout *layout; struct map_session_data *sd; struct status_data *status; @@ -15541,11 +15541,13 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i sd->inventory.u.items_inventory[i].amount < 1 ) { //Something went wrong, item exploit? - sd->itemid = sd->itemindex = -1; + sd->itemid = 0; + sd->itemindex = -1; return false; } //Consume - sd->itemid = sd->itemindex = -1; + sd->itemid = 0; + sd->itemindex = -1; if( (skill_id == WZ_EARTHSPIKE && sc && sc->data[SC_EARTHSCROLL] && rnd()%100 > sc->data[SC_EARTHSCROLL]->val2) || sd->inventory_data[i]->flag.delay_consume == 2 ) // [marquis007] ; //Do not consume item. else if( sd->inventory.u.items_inventory[i].expire_time == 0 ) @@ -16366,7 +16368,7 @@ bool skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_i size_t count = require.eqItem.size(); for (const auto &it : require.eqItem) { - int32 reqeqit = it; + t_itemid reqeqit = it; if (!reqeqit) break; // Skill has no required item(s); get out of here @@ -17523,7 +17525,7 @@ int skill_delayfix(struct block_list *bl, uint16 skill_id, uint16 skill_lv) * Weapon Repair [Celest/DracoRPG] *------------------------------------------*/ void skill_repairweapon(struct map_session_data *sd, int idx) { - unsigned short material, materials[4] = { ITEMID_IRON_ORE, ITEMID_IRON, ITEMID_STEEL, ITEMID_ORIDECON_STONE }; + t_itemid material, materials[4] = { ITEMID_IRON_ORE, ITEMID_IRON, ITEMID_STEEL, ITEMID_ORIDECON_STONE }; struct item *item; struct map_session_data *target_sd; @@ -17607,7 +17609,7 @@ void skill_weaponrefine(struct map_session_data *sd, int idx) if(item->nameid > 0 && ditem->type == IT_WEAPON) { int i = 0, per; - unsigned short material[5] = { 0, ITEMID_PHRACON, ITEMID_EMVERETARCON, ITEMID_ORIDECON, ITEMID_ORIDECON }; + t_itemid material[5] = { 0, ITEMID_PHRACON, ITEMID_EMVERETARCON, ITEMID_ORIDECON, ITEMID_ORIDECON }; if( ditem->flag.no_refine ) { // if the item isn't refinable clif_skill_fail(sd,sd->menuskill_id,USESKILL_FAIL_LEVEL,0); return; @@ -19747,7 +19749,7 @@ void skill_unit_move_unit_group(struct skill_unit_group *group, int16 m, int16 d * @param qty Amount of item will be created * @return 0 If failed or Index+1 of item found on skill_produce_db[] */ -short skill_can_produce_mix(struct map_session_data *sd, unsigned short nameid, int trigger, int qty) +short skill_can_produce_mix(struct map_session_data *sd, t_itemid nameid, int trigger, int qty) { short i, j; @@ -19790,7 +19792,7 @@ short skill_can_produce_mix(struct map_session_data *sd, unsigned short nameid, // Check on player's inventory for (j = 0; j < MAX_PRODUCE_RESOURCE; j++) { - unsigned short nameid_produce; + t_itemid nameid_produce; if (!(nameid_produce = skill_produce_db[i].mat_id[j])) continue; @@ -19822,7 +19824,7 @@ short skill_can_produce_mix(struct map_session_data *sd, unsigned short nameid, * @param produce_idx Index of produce entry in skill_produce_db[]. (Optional. Assumed the requirements are complete, checked somewhere) * @return True is success, False if failed */ -bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned short nameid, int slot1, int slot2, int slot3, int qty, short produce_idx) +bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, t_itemid nameid, int slot1, int slot2, int slot3, int qty, short produce_idx) { int slot[3]; int i, sc, ele, idx, equip, wlv, make_per = 0, flag = 0, skill_lv = 0; @@ -20390,7 +20392,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh case GN_MIX_COOKING: if (qty == 0) { item tmp_item; - const int compensation[5] = { ITEMID_BLACK_LUMP, ITEMID_BLACK_HARD_LUMP, ITEMID_VERY_HARD_LUMP, ITEMID_BLACK_MASS, ITEMID_MYSTERIOUS_POWDER }; + const t_itemid compensation[5] = { ITEMID_BLACK_LUMP, ITEMID_BLACK_HARD_LUMP, ITEMID_VERY_HARD_LUMP, ITEMID_BLACK_MASS, ITEMID_MYSTERIOUS_POWDER }; int rate = rnd() % 1000 + 1; memset(&tmp_item, 0, sizeof(tmp_item)); @@ -20445,7 +20447,7 @@ bool skill_produce_mix(struct map_session_data *sd, uint16 skill_id, unsigned sh * @param nameid Item ID of material * @return True if created, False is failed */ -bool skill_arrow_create(struct map_session_data *sd, unsigned short nameid) +bool skill_arrow_create(struct map_session_data *sd, t_itemid nameid) { short i, j, idx = -1; struct item tmp_item; @@ -20494,7 +20496,7 @@ bool skill_arrow_create(struct map_session_data *sd, unsigned short nameid) * @param sd Player * @nameid Item ID of poison type */ -int skill_poisoningweapon(struct map_session_data *sd, unsigned short nameid) +int skill_poisoningweapon(struct map_session_data *sd, t_itemid nameid) { nullpo_ret(sd); @@ -20563,7 +20565,7 @@ void skill_toggle_magicpower(struct block_list *bl, uint16 skill_id) } -int skill_magicdecoy(struct map_session_data *sd, unsigned short nameid) { +int skill_magicdecoy(struct map_session_data *sd, t_itemid nameid) { int x, y, i, class_, skill; struct mob_data *md; nullpo_ret(sd); @@ -20612,7 +20614,7 @@ int skill_magicdecoy(struct map_session_data *sd, unsigned short nameid) { } // Warlock Spellbooks. [LimitLine/3CeAM] -void skill_spellbook(struct map_session_data *sd, unsigned short nameid) { +void skill_spellbook(struct map_session_data *sd, t_itemid nameid) { nullpo_retv(sd); if (reading_spellbook_db.empty()) @@ -20709,8 +20711,8 @@ int skill_elementalanalysis(struct map_session_data* sd, int n, uint16 skill_lv, return 1; for( i = 0; i < n; i++ ) { - unsigned short nameid; - int add_amount, del_amount, idx, product; + t_itemid nameid, product; + int add_amount, del_amount, idx; struct item tmp_item; idx = item_list[i*2+0]-2; @@ -20776,7 +20778,7 @@ int skill_elementalanalysis(struct map_session_data* sd, int n, uint16 skill_lv, int skill_changematerial(struct map_session_data *sd, int n, unsigned short *item_list) { int i, j, k, c, p = 0, amount; - unsigned short nameid; + t_itemid nameid; nullpo_ret(sd); nullpo_ret(item_list); @@ -22716,7 +22718,7 @@ uint64 ReadingSpellbookDatabase::parseBodyNode(const YAML::Node &node) { * @param nameid: Book Item ID * @return Spell data or nullptr otherwise */ -std::shared_ptr ReadingSpellbookDatabase::findBook(int32 nameid) { +std::shared_ptr ReadingSpellbookDatabase::findBook(t_itemid nameid) { if (nameid < 1 || !itemdb_exists(nameid) || reading_spellbook_db.size() == 0) return nullptr; @@ -22790,7 +22792,7 @@ static bool skill_parse_row_producedb(char* split[], int columns, int current) { unsigned short x, y; unsigned short id = atoi(split[0]); - unsigned short nameid = 0; + t_itemid nameid = 0; bool found = false; if (id >= ARRAYLENGTH(skill_produce_db)) { @@ -22801,7 +22803,7 @@ static bool skill_parse_row_producedb(char* split[], int columns, int current) // Clear previous data, for importing support memset(&skill_produce_db[id], 0, sizeof(skill_produce_db[id])); // Import just for clearing/disabling from original data - if (!(nameid = atoi(split[1]))) { + if (!(nameid = strtoul(split[1], nullptr, 10))) { //ShowInfo("skill_parse_row_producedb: Product list with ID %d removed from list.\n", id); return true; } @@ -22944,7 +22946,8 @@ uint64 AbraDatabase::parseBodyNode(const YAML::Node &node) { */ static bool skill_parse_row_changematerialdb(char* split[], int columns, int current) { - uint16 id = atoi(split[0]), nameid = atoi(split[1]); + uint16 id = atoi(split[0]); + t_itemid nameid = strtoul(split[1], nullptr, 10); short rate = atoi(split[2]); bool found = false; int x, y; @@ -22976,7 +22979,7 @@ static bool skill_parse_row_changematerialdb(char* split[], int columns, int cur } if (x >= MAX_SKILL_PRODUCE_DB) { - ShowError("skill_parse_row_changematerialdb: Not supported item ID (%d) for Change Material. \n", nameid); + ShowError("skill_parse_row_changematerialdb: Not supported item ID (%u) for Change Material. \n", nameid); return false; } diff --git a/src/map/skill.hpp b/src/map/skill.hpp index a0a6063a51..b41708cc1d 100644 --- a/src/map/skill.hpp +++ b/src/map/skill.hpp @@ -207,9 +207,9 @@ struct s_skill_condition { int32 ammo_qty; /// Amount of ammo int32 state; /// State/condition. @see enum e_require_state int32 spiritball; /// Spiritball cost - int32 itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item + t_itemid itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item int32 amount[MAX_SKILL_ITEM_REQUIRE]; /// Amount of item - std::vector eqItem; /// List of equipped item + std::vector eqItem; /// List of equipped item std::vector status; /// List of Status required (SC) }; @@ -226,9 +226,9 @@ struct s_skill_require { int32 ammo_qty[MAX_SKILL_LEVEL]; /// Amount of ammo int32 state; /// State/condition. @see enum e_require_state int32 spiritball[MAX_SKILL_LEVEL]; /// Spiritball cost - int32 itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item + t_itemid itemid[MAX_SKILL_ITEM_REQUIRE]; /// Required item int32 amount[MAX_SKILL_ITEM_REQUIRE]; /// Amount of item - std::vector eqItem; /// List of equipped item + std::vector eqItem; /// List of equipped item std::vector status; /// List of Status required (SC) }; @@ -364,7 +364,7 @@ struct skill_unit_group { int link_group_id; /// Linked group that should be deleted if this one is deleted int unit_count, /// Number of unit at this group alive_count; /// Number of alive unit - int item_id; /// Store item used. + t_itemid item_id; /// Store item used. struct skill_unit *unit; /// Skill Unit struct { unsigned ammo_consume : 1; // Need to consume ammo @@ -420,20 +420,20 @@ enum e_skill_blown { /// Create Database item struct s_skill_produce_db { - unsigned short nameid; /// Product ID + t_itemid nameid; /// Product ID unsigned short req_skill; /// Required Skill unsigned char req_skill_lv, /// Required Skill Level itemlv; /// Item Level - unsigned short mat_id[MAX_PRODUCE_RESOURCE], /// Materials needed - mat_amount[MAX_PRODUCE_RESOURCE]; /// Amount of each materials + t_itemid mat_id[MAX_PRODUCE_RESOURCE]; /// Materials needed + unsigned short mat_amount[MAX_PRODUCE_RESOURCE]; /// Amount of each materials }; extern struct s_skill_produce_db skill_produce_db[MAX_SKILL_PRODUCE_DB]; /// Creating database arrow struct s_skill_arrow_db { - unsigned short nameid, /// Material ID - cre_id[MAX_ARROW_RESULT], /// Arrow created - cre_amount[MAX_ARROW_RESULT]; /// Amount of each arrow created + t_itemid nameid; /// Material ID + t_itemid cre_id[MAX_ARROW_RESULT]; /// Arrow created + uint16 cre_amount[MAX_ARROW_RESULT]; /// Amount of each arrow created }; extern struct s_skill_arrow_db skill_arrow_db[MAX_SKILL_ARROW_DB]; @@ -604,10 +604,10 @@ bool skill_isNotOk_mercenary(uint16 skill_id, struct mercenary_data *md); bool skill_isNotOk_npcRange(struct block_list *src, uint16 skill_id, uint16 skill_lv, int pos_x, int pos_y); // Item creation -short skill_can_produce_mix( struct map_session_data *sd, unsigned short nameid, int trigger, int qty); -bool skill_produce_mix( struct map_session_data *sd, uint16 skill_id, unsigned short nameid, int slot1, int slot2, int slot3, int qty, short produce_idx ); +short skill_can_produce_mix( struct map_session_data *sd, t_itemid nameid, int trigger, int qty); +bool skill_produce_mix( struct map_session_data *sd, uint16 skill_id, t_itemid nameid, int slot1, int slot2, int slot3, int qty, short produce_idx ); -bool skill_arrow_create( struct map_session_data *sd, unsigned short nameid); +bool skill_arrow_create( struct map_session_data *sd, t_itemid nameid); // skills for the mob int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,uint16 skill_id,uint16 skill_lv,t_tick tick,int flag ); @@ -2269,7 +2269,8 @@ enum wl_spheres { }; struct s_skill_spellbook_db { - uint16 skill_id, nameid, points; + uint16 skill_id, points; + t_itemid nameid; }; class ReadingSpellbookDatabase : public TypesafeYamlDatabase { @@ -2280,12 +2281,13 @@ public: const std::string getDefaultLocation(); uint64 parseBodyNode(const YAML::Node& node); - std::shared_ptr findBook(int32 nameid); + std::shared_ptr findBook(t_itemid nameid); }; extern ReadingSpellbookDatabase reading_spellbook_db; -void skill_spellbook(struct map_session_data *sd, unsigned short nameid); +void skill_spellbook(struct map_session_data *sd, t_itemid nameid); + int skill_block_check(struct block_list *bl, enum sc_type type, uint16 skill_id); struct s_skill_magicmushroom_db { @@ -2316,12 +2318,12 @@ bool skill_check_camouflage(struct block_list *bl, struct status_change_entry *s /** * Mechanic **/ -int skill_magicdecoy(struct map_session_data *sd, unsigned short nameid); +int skill_magicdecoy(struct map_session_data *sd, t_itemid nameid); /** * Guiltoine Cross **/ -int skill_poisoningweapon( struct map_session_data *sd, unsigned short nameid); +int skill_poisoningweapon( struct map_session_data *sd, t_itemid nameid); /** * Auto Shadow Spell (Shadow Chaser) diff --git a/src/map/status.cpp b/src/map/status.cpp index 9359cd08f2..5c2f9a5a12 100644 --- a/src/map/status.cpp +++ b/src/map/status.cpp @@ -15583,7 +15583,7 @@ static bool status_yaml_readdb_refine_sub(const YAML::Node &node, int refine_inf int64 idx_tmp = 0; const YAML::Node &type = costit; int idx = 0, price; - unsigned short material; + t_itemid material; const std::string keys[] = { "Type", "Price", "Material" }; for (int i = 0; i < ARRAYLENGTH(keys); i++) { @@ -15599,7 +15599,8 @@ static bool status_yaml_readdb_refine_sub(const YAML::Node &node, int refine_inf idx = static_cast(idx_tmp); } price = type["Price"].as(); - material = type["Material"].as(); + // TODO: item id verification + material = type["Material"].as(); refine_info[refine_info_index].cost[idx].nameid = material; refine_info[refine_info_index].cost[idx].zeny = price; diff --git a/src/map/status.hpp b/src/map/status.hpp index 8351ebe151..42e8414b08 100644 --- a/src/map/status.hpp +++ b/src/map/status.hpp @@ -52,7 +52,7 @@ enum refine_cost_type { }; struct refine_cost { - unsigned short nameid; + t_itemid nameid; int zeny; }; diff --git a/src/map/storage.cpp b/src/map/storage.cpp index 8d9227d524..39766ac72c 100644 --- a/src/map/storage.cpp +++ b/src/map/storage.cpp @@ -653,11 +653,11 @@ void storage_guild_log( struct map_session_data* sd, struct item* item, int16 am StringBuf_Printf(&buf, ", `option_val%d`", i); StringBuf_Printf(&buf, ", `option_parm%d`", i); } - StringBuf_Printf(&buf, ") VALUES(NOW(),'%u','%u', '%s', '%d', '%d','%d','%d','%d','%" PRIu64 "','%d'", + StringBuf_Printf(&buf, ") VALUES(NOW(),'%u','%u', '%s', '%u', '%d','%d','%d','%d','%" PRIu64 "','%d'", sd->status.guild_id, sd->status.char_id, sd->status.name, item->nameid, amount, item->identify, item->refine,item->attribute, item->unique_id, item->bound); for (i = 0; i < MAX_SLOTS; i++) - StringBuf_Printf(&buf, ",'%d'", item->card[i]); + StringBuf_Printf(&buf, ",'%u'", item->card[i]); for (i = 0; i < MAX_ITEM_RDM_OPT; i++) StringBuf_Printf(&buf, ",'%d','%d','%d'", item->option[i].id, item->option[i].value, item->option[i].param); StringBuf_Printf(&buf, ")"); @@ -707,7 +707,7 @@ enum e_guild_storage_log storage_guild_log_read_sub( struct map_session_data* sd SqlStmt_BindColumn(stmt, 3, SQLDT_SHORT, &entry.amount, 0, NULL, NULL); // Item data - SqlStmt_BindColumn(stmt, 4, SQLDT_USHORT, &entry.item.nameid, 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 4, SQLDT_UINT, &entry.item.nameid, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 5, SQLDT_CHAR, &entry.item.identify, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 6, SQLDT_CHAR, &entry.item.refine, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 7, SQLDT_CHAR, &entry.item.attribute, 0, NULL, NULL); @@ -715,7 +715,7 @@ enum e_guild_storage_log storage_guild_log_read_sub( struct map_session_data* sd SqlStmt_BindColumn(stmt, 9, SQLDT_UINT, &entry.item.bound, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 10, SQLDT_UINT64, &entry.item.unique_id, 0, NULL, NULL); for( j = 0; j < MAX_SLOTS; ++j ) - SqlStmt_BindColumn(stmt, 11+j, SQLDT_USHORT, &entry.item.card[j], 0, NULL, NULL); + SqlStmt_BindColumn(stmt, 11+j, SQLDT_UINT, &entry.item.card[j], 0, NULL, NULL); for( j = 0; j < MAX_ITEM_RDM_OPT; ++j ) { SqlStmt_BindColumn(stmt, 11+MAX_SLOTS+j*3, SQLDT_SHORT, &entry.item.option[j].id, 0, NULL, NULL); SqlStmt_BindColumn(stmt, 11+MAX_SLOTS+j*3+1, SQLDT_SHORT, &entry.item.option[j].value, 0, NULL, NULL); @@ -844,7 +844,7 @@ bool storage_guild_additem2(struct s_storage* stor, struct item* item, int amoun // Set the amount, make it fit with max amount amount = min(amount, ((id->stack.guildstorage) ? id->stack.amount : MAX_AMOUNT) - stor->u.items_guild[i].amount); if (amount != item->amount) - ShowWarning("storage_guild_additem2: Stack limit reached! Altered amount of item \"" CL_WHITE "%s" CL_RESET "\" (%d). '" CL_WHITE "%d" CL_RESET "' -> '" CL_WHITE"%d" CL_RESET "'.\n", id->name, id->nameid, item->amount, amount); + ShowWarning("storage_guild_additem2: Stack limit reached! Altered amount of item \"" CL_WHITE "%s" CL_RESET "\" (%u). '" CL_WHITE "%d" CL_RESET "' -> '" CL_WHITE"%d" CL_RESET "'.\n", id->name, id->nameid, item->amount, amount); stor->u.items_guild[i].amount += amount; stor->dirty = true; return true; diff --git a/src/map/trade.cpp b/src/map/trade.cpp index 3316b9393c..7a3efa8262 100644 --- a/src/map/trade.cpp +++ b/src/map/trade.cpp @@ -207,7 +207,7 @@ int impossible_trade_check(struct map_session_data *sd) if (inventory[index].amount < sd->deal.item[i].amount) { // if more than the player have -> hack sprintf(message_to_gm, msg_txt(sd,538), sd->status.name, sd->status.account_id); // Hack on trade: character '%s' (account: %d) try to trade more items that he has. intif_wis_message_to_gm(wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); - sprintf(message_to_gm, msg_txt(sd,539), inventory[index].amount, inventory[index].nameid, sd->deal.item[i].amount); // This player has %d of a kind of item (id: %d), and try to trade %d of them. + sprintf(message_to_gm, msg_txt(sd,539), inventory[index].amount, inventory[index].nameid, sd->deal.item[i].amount); // This player has %d of a kind of item (id: %u), and try to trade %d of them. intif_wis_message_to_gm(wisp_server_name, PC_PERM_RECEIVE_HACK_INFO, message_to_gm); // if we block people if (battle_config.ban_hack_trade < 0) { diff --git a/src/map/unit.hpp b/src/map/unit.hpp index 3a78b54c8f..b191a8897b 100644 --- a/src/map/unit.hpp +++ b/src/map/unit.hpp @@ -69,13 +69,14 @@ struct view_data { #else unsigned short class_; #endif -unsigned short + t_itemid weapon, shield, //Or left-hand weapon. robe, head_top, head_mid, - head_bottom, + head_bottom; + uint16 hair_style, hair_color, cloth_color, diff --git a/src/map/vending.cpp b/src/map/vending.cpp index ce451faf14..cfefccd03a 100755 --- a/src/map/vending.cpp +++ b/src/map/vending.cpp @@ -401,7 +401,7 @@ int8 vending_openvending(struct map_session_data* sd, const char* message, const * @param nameid : item id * @return 0:not selling it, 1: yes */ -bool vending_search(struct map_session_data* sd, unsigned short nameid) +bool vending_search(struct map_session_data* sd, t_itemid nameid) { int i; @@ -409,7 +409,7 @@ bool vending_search(struct map_session_data* sd, unsigned short nameid) return false; } - ARR_FIND( 0, sd->vend_num, i, sd->cart.u.items_cart[sd->vending[i].index].nameid == (short)nameid ); + ARR_FIND( 0, sd->vend_num, i, sd->cart.u.items_cart[sd->vending[i].index].nameid == nameid ); if( i == sd->vend_num ) { // not found return false; } diff --git a/src/map/vending.hpp b/src/map/vending.hpp index 9290d61563..f01c28c7a2 100644 --- a/src/map/vending.hpp +++ b/src/map/vending.hpp @@ -6,6 +6,7 @@ #include "../common/cbasetypes.hpp" #include "../common/db.hpp" +#include "../common/mmo.hpp" struct map_session_data; struct s_search_store_search; @@ -27,7 +28,7 @@ void vending_closevending(struct map_session_data* sd); int8 vending_openvending(struct map_session_data* sd, const char* message, const uint8* data, int count, struct s_autotrader *at); void vending_vendinglistreq(struct map_session_data* sd, int id); void vending_purchasereq(struct map_session_data* sd, int aid, int uid, const uint8* data, int count); -bool vending_search(struct map_session_data* sd, unsigned short nameid); +bool vending_search(struct map_session_data* sd, t_itemid nameid); bool vending_searchall(struct map_session_data* sd, const struct s_search_store_search* s); #endif /* _VENDING_HPP_ */