bruno05 6 Posted November 11, 2019 (edited) Olá a todos sei que existem outros guia aqui no forum para adiconar custom itens, Porém faltam algumas informações para funcionar corretamente (em cliente novos no meu caso 2018-06-20) Item Necessarios GIT > https://git-scm.com/downloads Tortoise - > https://tortoisegit.org/download/ NEMO - > https://gitlab.com/4144/Nemo EXE -> http://nemo.herc.ws/downloads/ (pode se encontrar um aqui para você estou a versão 2018-06-20) Bom vamos lá. - Compilar o cliente ( irei usar o NEMO) Imagem auto explicativa, Segue abaixo: Dependendo do Seu cliente no passo "3" da imagem, pode dar um erro "Always call SelectKoreaClientInfo" Apenas ignore. DATA.INI System/itemInfo_Sak.lub -> para algumas pessoas pode ser necessário mudar dependendo da sua pasta no meu caso não preciso. Always Load Korea ExternalSetting lua files Read Data Folder First Increase Headgear ViewID - > Coloque o numero conforme necessidade vai até 32000 O mais importante ( Não funcionara se não ativar ira dar crash não esqueça de Ativá-lo) Esses são os necessários porém sintase a vontade de editar seu EXE, conforme sua necessidade, feito isso ficara algo parecido com isso. Feito isso vamos para pasta do servidor Hercules\db\item_db2.conf Obs: Aqui estou usando um spr que peguei aqui no site então caso queira é só fazer download aqui. creditos ao ~Wolfeh. Obs²: neste SPR alterei o nome que estava Tobi_Mask.spr/act para item01 caso for usar este item altere para item01 tudo se não vai dar erro mantendo ¿©_ / ³²_ ou altere os AgeisName { Id: 40000 //ID Do seu custom Item AegisName: "item01" Name: "Tobi Mask" Type: 5 Buy: 20 Weight: 40 Atk: 20 Def: 20 Slots: 2 Job: 0xFFFFFFFE Loc: 769 EquipLv: 1 View: 4500 //ID DO SPRITE }, Agora vamos para pasta do seu RO e vamos na pasta data Pasta - >> data\sprite\¾ÆÀÌÅÛ item01.spr // mesmo nome do AegisName colocado no item_db2.conf item01.act // mesmo nome do AegisName colocado no item_db2.conf Pasta - >> data\sprite\¾Ç¼¼»ç¸® // Existem duas pasta ³² para masculino e ¿© para Feminino. Pasta - >> ³² ³²_item01.spr ³²_item01.act Pasta - >> ¿© ¿©_item01.spr ¿©_item01.act Pasta - texture\À¯ÀúÀÎÅÍÆäÀ̽º // Existem duas pasta caso contrario crie 1 - Item e a 2 - collection item - item01.bmp //icone do item mostrado no jogo collection - item01.bmp //foto do item que mostra com a descrição feito isso vamos para data\luafiles514\lua files\datainfo 1 - Abra o accessoryid.lub e adicione na ultima linha antes do } conforme esta á baixo.// Aqui estou usando o note++ ACCESSORY_C_Luna_On_Shoulder = 1881, //IMPORTANTE FECHE A VIRGULA SE NÃO DAR ERRO. -- Custom Item ACCESSORY_item01 = 4500, // aqui coloque o ID que colocou no item_db2.conf caso usou esse memso numero deixe esse // A ULTIMA LINHA NÃO PRECISA COLOCAR MAIS SE QUISER PODE POR. } 2 - Abra o accname.lub e adcione. // Lembrando que tem que ser antes do "}" conforme abaixo, [ACCESSORY_IDs.ACCESSORY_C_Luna_On_Shoulder] = "_C_Luna_On_Shoulder", -- Custom Itens [ACCESSORY_IDs.ACCESSORY_item01] = "_item01", } 3 - Agora ultima etapa vá para a pasta SEURO\System e abra itemInfo_Sak.lub (o mesmo nome, que colocou no nemo) Procure "function main()" vai estar +- assim: } function main() for ItemID, DESC in pairs(tbl) do result, msg = pcall(AddItem, ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) if not msg then result, msg = pcall(AddItem, ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum, DESC.costume) end Antes do } adicione: [40000] = { unidentifiedDisplayName = "Tobi Mask", unidentifiedResourceName = "item01", unidentifiedDescriptionName = { "Item desconhecido, voce precisa identificar usando a ^6666CCLupa^000000." }, identifiedDisplayName = "Tobi Mask", identifiedResourceName = "item01", identifiedDescriptionName = { "Uma mascara laranja com desenho espiral e um orificio para o olho direito.", "Ataque :^777777 20^000000", "Defesa :^0000FF 20^000000", "Equipped on :^777777 Upper, Mid, Lower^000000", "Weight :^009900 40^000000", "Applicable Job :^777777 Every Job^000000", "Spriter :^777777 Wolfeh^000000", "Level Requirement:^009900 1^000000", "Jobs:^6666CC All except Novice^000000" }, slotCount = 2, ClassNum = 4500, costume = false }, ficando parecido com isso : [40000] = { unidentifiedDisplayName = "Tobi Mask", unidentifiedResourceName = "item01", unidentifiedDescriptionName = { "Item desconhecido, voce precisa identificar usando a ^6666CCLupa^000000." }, identifiedDisplayName = "Tobi Mask", identifiedResourceName = "item01", identifiedDescriptionName = { "Uma mascara laranja com desenho espiral e um orificio para o olho direito.", "Ataque :^777777 20^000000", "Defesa :^0000FF 20^000000", "Equipped on :^777777 Upper, Mid, Lower^000000", "Weight :^009900 40^000000", "Applicable Job :^777777 Every Job^000000", "Spriter :^777777 Wolfeh^000000", "Level Requirement:^009900 1^000000", "Jobs:^6666CC All except Novice^000000" }, slotCount = 2, ClassNum = 4500, costume = false }, } function main() for ItemID, DESC in pairs(tbl) do result, msg = pcall(AddItem, ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) if not msg then result, msg = pcall(AddItem, ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum, DESC.costume) end if not result then return false, msg end for k, v in pairs(DESC.unidentifiedDescriptionName) do result, msg = AddItemUnidentifiedDesc(ItemID, v) if not result then return false, msg end end for k, v in pairs(DESC.identifiedDescriptionName) do result, msg = AddItemIdentifiedDesc(ItemID, v) if not result then return false, msg end end if nil ~= DESC.EffectID and nil ~= AddItemEffectInfo then result, msg = AddItemEffectInfo(ItemID, DESC.EffectID) if not result then return false, msg end end if nil ~= DESC.costume and nil ~= AddItemIsCostume then result, msg = AddItemIsCostume(ItemID, DESC.costume) if not result then return false, msg end end end return true, "good" end function main_server() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.identifiedDisplayName, DESC.slotCount) if not result then return false, msg end end return true, "good" end Abra seu servidor, e logue nele crie o item e teste. Considerações: Resolvi fazer esse guia pois não achei nenhum atualizado e faltava informações ( como a parte do nemo eu mesmo nunca tinha visto um guia sitando para ativar esse viewID) a maioria dos tutorial que via, ou pasta de exemplos sempre mandava adicionar em outros arquivos como idnum e etc e no caso do cliente novo não precisa. espero que este guia ajude. Edited November 12, 2019 by bruno05 4 2 Bruno Nogueira, JulioCF, fogocalvoeua and 3 others reacted to this Quote Share this post Link to post Share on other sites
JulioCF 105 Posted November 17, 2019 Obrigado pelo guia! Quote Share this post Link to post Share on other sites