Like it~* 15 Posted February 28, 2017 (edited) Olá. Hoje vim trazer um tutorial muito simples, mas que é de grande utilidade para todos, até pelo motivo de eu não ter encontrado em nenhuma comunidade PT-BR. Tive um grande trabalho para achar um tutorial que tivesse uma línguagem mais prática e funcionasse, então devido a isso decidi postar. Utilizar multíplos iteminfo.lub/lua. Primeiro, como sabemos, os clientes mais novos estão usando itemInfo.lua / lub para substituir arquivos TXT para informações de item no lado do cliente, dentro da pasta System. Acho que grande parte dos criadores de servidores mais complexos, se depararam com a situação de adicionar algum(ns) item(ns) de outro RO como idRO, iRO, & jRO, KRO e sempre receber "Item desconhecido" e "Maçãs", e não saber o verdadeiro motivo causador disso, exceto ao trocar os arquivos itemInfo.lua/lub. Eis que surgiu uma solução! Vamos lá. Utilidade: utilizar itemInfo de outros servidores oficiais, como kRO, iRO e idRO, e fazer com que aqueles possam substituir informações não existentes de outros arquivos. Tutorial - 1º Passo: Prepare os arquivos a ser utilizado, exemplo: "itemInfo_bRO.lua" - Traduzido do BRO com todos os arquivos em PT-BR. "itemInfo_iRO.lua" Servidor internacional iRO. "itemInfo_idRO.lua". "iteminfo_custom" - Seu iteminfo customizado, com seus itens criados. "itemInfo_kRO.lua" - Servidor oficial e distribuidor do jogo RO. - 2º Passo: Faça um arquivo .lua vazio, dê o nome "itemInfo.lua". Este será o arquivo principal para ser lido pelo cliente.Edite o "itemInfo.lua", e cole este código. Reveal hidden contents main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" endmain = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" end - 3º Passo: entre no arquivo criado iteminfo.lua, que foi colado o código e onde estiver essa parte main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th }main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } Mude para o nome dos seus arquivos, colocando em ordem de prioridade qual arquivo deve ser lido primeiro pelo Hexed (Geralmente iniciado com o BRO). Salve e feche. - 4º Passo: Em seguida, copie o arquivo e renomeie o arquivo copiado para "iteminfo.lub". - 5º Passo: Entre em todos seus arquivos preparados no Passo 1, e verifique se ambos começam assim: tbl = { ... }tbl = { ... } Caso sim, continue no mesmo arquivo e vá para o próximo passo. - 6º Passo: Vá até o final do arquivo e remova a função principal. Geralmente estará assim. Reveal hidden contents function main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" endfunction main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" end Adicione ao lugar removido o seguinte código. for ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) endfor ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) end Fim! Aprecie seus novos arquivos. Notas e Créditos. OBS¹: Apenas traduzi um tutorial já existente, no qual vou estar deixando a fonte a baixo. Mas tive que modificar praticamente todo tutorial, então os créditos são a ambos. OBS²: Não irei fornecer nenhum arquivo, isto é apenas um tutorial, não me envie pm me solicitando nada. OBS³: todos os arquivos devem ser decompilado .lua, não compilado. OBS4:Se você tiver itens com ícone vazio , isso significa que sua data não tem o sprite / textura necessária ou seus arquivos itemInfo estão com o "unidentifiedResourceName" ou "identifiedResourceName" vazio ou não preenchidos. Fonte: http://pservero.com/multi-iteminfo-files/ Edited February 28, 2017 by Iniciando do 0 3 JulioCF, ZelosAvalon and chouge reacted to this Quote Share this post Link to post Share on other sites
JulioCF 105 Posted March 1, 2017 Agradecemos o compartilhamento! Quote Share this post Link to post Share on other sites
ZelosAvalon 14 Posted March 1, 2017 (edited) On 2/28/2017 at 9:45 PM, Iniciando do 0 said: Olá. Hoje vim trazer um tutorial muito simples, mas que é de grande utilidade para todos, até pelo motivo de eu não ter encontrado em nenhuma comunidade PT-BR. Tive um grande trabalho para achar um tutorial que tivesse uma línguagem mais prática e funcionasse, então devido a isso decidi postar. Utilizar multíplos iteminfo.lub/lua. Primeiro, como sabemos, os clientes mais novos estão usando itemInfo.lua / lub para substituir arquivos TXT para informações de item no lado do cliente, dentro da pasta System. Acho que grande parte dos criadores de servidores mais complexos, se depararam com a situação de adicionar algum(ns) item(ns) de outro RO como idRO, iRO, & jRO, KRO e sempre receber "Item desconhecido" e "Maçãs", e não saber o verdadeiro motivo causador disso, exceto ao trocar os arquivos itemInfo.lua/lub. Eis que surgiu uma solução! Vamos lá. Utilidade: utilizar itemInfo de outros servidores oficiais, como kRO, iRO e idRO, e fazer com que aqueles possam substituir informações não existentes de outros arquivos. Tutorial - 1º Passo: Prepare os arquivos a ser utilizado, exemplo: "itemInfo_bRO.lua" - Traduzido do BRO com todos os arquivos em PT-BR. "itemInfo_iRO.lua" Servidor internacional iRO. "itemInfo_idRO.lua". "iteminfo_custom" - Seu iteminfo customizado, com seus itens criados. "itemInfo_kRO.lua" - Servidor oficial e distribuidor do jogo RO. - 2º Passo: Faça um arquivo .lua vazio, dê o nome "itemInfo.lua". Este será o arquivo principal para ser lido pelo cliente. Edite o "itemInfo.lua", e cole este código. Reveal hidden contents main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" endmain = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" end - 3º Passo: entre no arquivo criado iteminfo.lua, que foi colado o código e onde estiver essa parte main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th }main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } Mude para o nome dos seus arquivos, colocando em ordem de prioridade qual arquivo deve ser lido primeiro pelo Hexed (Geralmente iniciado com o BRO). Salve e feche. - 4º Passo: Em seguida, copie o arquivo e renomeie o arquivo copiado para "iteminfo.lub". - 5º Passo: Entre em todos seus arquivos preparados no Passo 1, e verifique se ambos começam assim: tbl = { ... }tbl = { ... } Caso sim, continue no mesmo arquivo e vá para o próximo passo. - 6º Passo: Vá até o final do arquivo e remova a função principal. Geralmente estará assim. Reveal hidden contents function main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" endfunction main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" end Adicione ao lugar removido o seguinte código. for ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) endfor ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) end Fim! Aprecie seus novos arquivos. Notas e Créditos. OBS¹: Apenas traduzi um tutorial já existente, no qual vou estar deixando a fonte a baixo. Mas tive que modificar praticamente todo tutorial, então os créditos são a ambos. OBS²: Não irei fornecer nenhum arquivo, isto é apenas um tutorial, não me envie pm me solicitando nada. OBS³: todos os arquivos devem ser decompilado .lua, não compilado. OBS4:Se você tiver itens com ícone vazio , isso significa que sua data não tem o sprite / textura necessária ou seus arquivos itemInfo estão com o "unidentifiedResourceName" ou "identifiedResourceName" vazio ou não preenchidos. Fonte: http://pservero.com/multi-iteminfo-files/ muito bom obrigado por compartilhar!!] Seguinte tem alguma forma de colocar para o jogador escolher sua linguagem e de acordo com isso ler o itemInfo de sua região ? por exemplo eu coloco no clientinfo varios servers porem em vez de colocar o nome eu coloco a linguage tipo: No iRO é: Thor Chaos No nosso seria: English Portuguese Spañol etc.. dai de acordo que o jogador escolhe o seu jogo lerá o itemInfo.lub (bRO, kRO iRO) de acordo com a linguagem dele, seria uma possibilidade de colocar em servidores com dual language! e seria muito bom! eu gostaria de aprender como por um servidor com + de um idioma sem ter que ficar traduzindo, tipo o @lang, ele muda a linguagem geral, queria um que os jogadores pudessem escolher sua linguagem e dar load na que eles escolherem, seria TOP! se alguem souber e quiser compartilhar o conhecimento, e se alguem quiser participar de uma equipe de tradução, estou traduzindo o arquivo.po 100% par português porém ele é gigantesco e sozinho ta osso! Fica o convite! Edited March 1, 2017 by ZelosAvalon Quote Share this post Link to post Share on other sites
Like it~* 15 Posted March 4, 2017 On 3/1/2017 at 12:13 PM, ZelosAvalon said: On 2/28/2017 at 9:45 PM, Iniciando do 0 said: Olá. Hoje vim trazer um tutorial muito simples, mas que é de grande utilidade para todos, até pelo motivo de eu não ter encontrado em nenhuma comunidade PT-BR. Tive um grande trabalho para achar um tutorial que tivesse uma línguagem mais prática e funcionasse, então devido a isso decidi postar. Utilizar multíplos iteminfo.lub/lua. Primeiro, como sabemos, os clientes mais novos estão usando itemInfo.lua / lub para substituir arquivos TXT para informações de item no lado do cliente, dentro da pasta System. Acho que grande parte dos criadores de servidores mais complexos, se depararam com a situação de adicionar algum(ns) item(ns) de outro RO como idRO, iRO, & jRO, KRO e sempre receber "Item desconhecido" e "Maçãs", e não saber o verdadeiro motivo causador disso, exceto ao trocar os arquivos itemInfo.lua/lub. Eis que surgiu uma solução! Vamos lá. Utilidade: utilizar itemInfo de outros servidores oficiais, como kRO, iRO e idRO, e fazer com que aqueles possam substituir informações não existentes de outros arquivos. Tutorial - 1º Passo: Prepare os arquivos a ser utilizado, exemplo: "itemInfo_bRO.lua" - Traduzido do BRO com todos os arquivos em PT-BR. "itemInfo_iRO.lua" Servidor internacional iRO. "itemInfo_idRO.lua". "iteminfo_custom" - Seu iteminfo customizado, com seus itens criados. "itemInfo_kRO.lua" - Servidor oficial e distribuidor do jogo RO. - 2º Passo: Faça um arquivo .lua vazio, dê o nome "itemInfo.lua". Este será o arquivo principal para ser lido pelo cliente. Edite o "itemInfo.lua", e cole este código. Reveal hidden contents main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" endmain = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" end - 3º Passo: entre no arquivo criado iteminfo.lua, que foi colado o código e onde estiver essa parte main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th }main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } Mude para o nome dos seus arquivos, colocando em ordem de prioridade qual arquivo deve ser lido primeiro pelo Hexed (Geralmente iniciado com o BRO). Salve e feche. - 4º Passo: Em seguida, copie o arquivo e renomeie o arquivo copiado para "iteminfo.lub". - 5º Passo: Entre em todos seus arquivos preparados no Passo 1, e verifique se ambos começam assim: tbl = { ... }tbl = { ... } Caso sim, continue no mesmo arquivo e vá para o próximo passo. - 6º Passo: Vá até o final do arquivo e remova a função principal. Geralmente estará assim. Reveal hidden contents function main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" endfunction main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" end Adicione ao lugar removido o seguinte código. for ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) endfor ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) end Fim! Aprecie seus novos arquivos. Notas e Créditos. OBS¹: Apenas traduzi um tutorial já existente, no qual vou estar deixando a fonte a baixo. Mas tive que modificar praticamente todo tutorial, então os créditos são a ambos. OBS²: Não irei fornecer nenhum arquivo, isto é apenas um tutorial, não me envie pm me solicitando nada. OBS³: todos os arquivos devem ser decompilado .lua, não compilado. OBS4:Se você tiver itens com ícone vazio , isso significa que sua data não tem o sprite / textura necessária ou seus arquivos itemInfo estão com o "unidentifiedResourceName" ou "identifiedResourceName" vazio ou não preenchidos. Fonte: http://pservero.com/multi-iteminfo-files/ muito bom obrigado por compartilhar!!] Seguinte tem alguma forma de colocar para o jogador escolher sua linguagem e de acordo com isso ler o itemInfo de sua região ? por exemplo eu coloco no clientinfo varios servers porem em vez de colocar o nome eu coloco a linguage tipo: No iRO é: Thor Chaos No nosso seria: English Portuguese Spañol etc.. dai de acordo que o jogador escolhe o seu jogo lerá o itemInfo.lub (bRO, kRO iRO) de acordo com a linguagem dele, seria uma possibilidade de colocar em servidores com dual language! e seria muito bom! eu gostaria de aprender como por um servidor com + de um idioma sem ter que ficar traduzindo, tipo o @lang, ele muda a linguagem geral, queria um que os jogadores pudessem escolher sua linguagem e dar load na que eles escolherem, seria TOP! se alguem souber e quiser compartilhar o conhecimento, e se alguem quiser participar de uma equipe de tradução, estou traduzindo o arquivo.po 100% par português porém ele é gigantesco e sozinho ta osso! Fica o convite! Acho que é isso que vc quer... http://herc.ws/board/topic/6376-dual-language/ 1 JulioCF reacted to this Quote Share this post Link to post Share on other sites
ZelosAvalon 14 Posted March 8, 2017 On 3/4/2017 at 6:54 PM, Like it~* said: On 3/1/2017 at 12:13 PM, ZelosAvalon said: On 2/28/2017 at 9:45 PM, Iniciando do 0 said: Olá. Hoje vim trazer um tutorial muito simples, mas que é de grande utilidade para todos, até pelo motivo de eu não ter encontrado em nenhuma comunidade PT-BR. Tive um grande trabalho para achar um tutorial que tivesse uma línguagem mais prática e funcionasse, então devido a isso decidi postar. Utilizar multíplos iteminfo.lub/lua. Primeiro, como sabemos, os clientes mais novos estão usando itemInfo.lua / lub para substituir arquivos TXT para informações de item no lado do cliente, dentro da pasta System. Acho que grande parte dos criadores de servidores mais complexos, se depararam com a situação de adicionar algum(ns) item(ns) de outro RO como idRO, iRO, & jRO, KRO e sempre receber "Item desconhecido" e "Maçãs", e não saber o verdadeiro motivo causador disso, exceto ao trocar os arquivos itemInfo.lua/lub. Eis que surgiu uma solução! Vamos lá. Utilidade: utilizar itemInfo de outros servidores oficiais, como kRO, iRO e idRO, e fazer com que aqueles possam substituir informações não existentes de outros arquivos. Tutorial - 1º Passo: Prepare os arquivos a ser utilizado, exemplo: "itemInfo_bRO.lua" - Traduzido do BRO com todos os arquivos em PT-BR. "itemInfo_iRO.lua" Servidor internacional iRO. "itemInfo_idRO.lua". "iteminfo_custom" - Seu iteminfo customizado, com seus itens criados. "itemInfo_kRO.lua" - Servidor oficial e distribuidor do jogo RO. - 2º Passo: Faça um arquivo .lua vazio, dê o nome "itemInfo.lua". Este será o arquivo principal para ser lido pelo cliente. Edite o "itemInfo.lua", e cole este código. Reveal hidden contents main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" endmain = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } _TempItems = {} _Num = 0 -- check existing item function CheckItem(ItemID, DESC) if not (_TempItems[ItemID]) then _TempItems[ItemID] = DESC _Num = _Num + 1 else myTbl = {} for pos,val in pairs(_TempItems[ItemID]) do myTbl[pos] = val end for pos,val in pairs(DESC) do if not (myTbl[pos]) or myTbl[pos] == "" then myTbl[pos] = val end end _TempItems[ItemID] = myTbl end end -- end check -- Read all files for i,iiFile in pairs(iiFiles) do d = dofile(iiFile) end -- Read all files -- process _TempItems for ItemID,DESC in pairs(_TempItems) do --print("ItemID",ItemID,"Name",DESC.identifiedDisplayName) result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end -- process _TempItems _TempItems = nil return true, "good" end - 3º Passo: entre no arquivo criado iteminfo.lua, que foi colado o código e onde estiver essa parte main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th }main = function() iiFiles = { "System/itemInfo_Translation.lua", -- 1st priority "System/itemInfo_iRO.lua", -- 2nd "System/itemInfo_idRO.lua", -- 3rd "System/itemInfo_kRO.lua", -- 4th } Mude para o nome dos seus arquivos, colocando em ordem de prioridade qual arquivo deve ser lido primeiro pelo Hexed (Geralmente iniciado com o BRO). Salve e feche. - 4º Passo: Em seguida, copie o arquivo e renomeie o arquivo copiado para "iteminfo.lub". - 5º Passo: Entre em todos seus arquivos preparados no Passo 1, e verifique se ambos começam assim: tbl = { ... }tbl = { ... } Caso sim, continue no mesmo arquivo e vá para o próximo passo. - 6º Passo: Vá até o final do arquivo e remova a função principal. Geralmente estará assim. Reveal hidden contents function main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" endfunction main() for ItemID, DESC in pairs(tbl) do result, msg = AddItem(ItemID, DESC.unidentifiedDisplayName, DESC.unidentifiedResourceName, DESC.identifiedDisplayName, DESC.identifiedResourceName, DESC.slotCount, DESC.ClassNum) 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 end return true, "good" end Adicione ao lugar removido o seguinte código. for ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) endfor ItemID,DESC in pairs(tbl) do CheckItem(ItemID,DESC) end Fim! Aprecie seus novos arquivos. Notas e Créditos. OBS¹: Apenas traduzi um tutorial já existente, no qual vou estar deixando a fonte a baixo. Mas tive que modificar praticamente todo tutorial, então os créditos são a ambos. OBS²: Não irei fornecer nenhum arquivo, isto é apenas um tutorial, não me envie pm me solicitando nada. OBS³: todos os arquivos devem ser decompilado .lua, não compilado. OBS4:Se você tiver itens com ícone vazio , isso significa que sua data não tem o sprite / textura necessária ou seus arquivos itemInfo estão com o "unidentifiedResourceName" ou "identifiedResourceName" vazio ou não preenchidos. Fonte: http://pservero.com/multi-iteminfo-files/ muito bom obrigado por compartilhar!!] Seguinte tem alguma forma de colocar para o jogador escolher sua linguagem e de acordo com isso ler o itemInfo de sua região ? por exemplo eu coloco no clientinfo varios servers porem em vez de colocar o nome eu coloco a linguage tipo: No iRO é: Thor Chaos No nosso seria: English Portuguese Spañol etc.. dai de acordo que o jogador escolhe o seu jogo lerá o itemInfo.lub (bRO, kRO iRO) de acordo com a linguagem dele, seria uma possibilidade de colocar em servidores com dual language! e seria muito bom! eu gostaria de aprender como por um servidor com + de um idioma sem ter que ficar traduzindo, tipo o @lang, ele muda a linguagem geral, queria um que os jogadores pudessem escolher sua linguagem e dar load na que eles escolherem, seria TOP! se alguem souber e quiser compartilhar o conhecimento, e se alguem quiser participar de uma equipe de tradução, estou traduzindo o arquivo.po 100% par português porém ele é gigantesco e sozinho ta osso! Fica o convite! Acho que é isso que vc quer... http://herc.ws/board/topic/6376-dual-language/ hmm ty i'll take a look. Quote Share this post Link to post Share on other sites
fxfreitas 102 Posted March 8, 2017 Curti o tutorial, já tinha visto em algum lugar mas perdi o link. Quote Share this post Link to post Share on other sites