Rômulo Souza 14 #1 Postado 29 Maio, 2014 (editado) Nome: Translate (V1.0) Autor: Rômulo Souza (Criação) Versão Testada: TFS 0.4 (8.6) (funciona praticamente em todas as versões) Muitos jogadores não tem o entendimento do vocábulo inglês, o que dificulta a compreensão e até mesmo tira o foco da mensagem que o NPC quer passar. . Esta é uma LIB pra criar uma estrutura para traduzir os NPCS, ACTIONS, MOVEMENTS, CREATURE SCRIPTS, e qualquer outro script .lua em que o player esteja associado (cid). Instalação crie um arquivo: data/lib/050-translate.lua --[[ Good Practices 1 = English 2 = Portuguese 3 = Polish --]] --// Config local lang_default = 1 local lang_storage = 210894 --// function _t(cid,tab) local lang=(tab[getCreatureStorage(cid, lang_storage)] and getCreatureStorage(cid, lang_storage) or lang_default) return tab[lang] end Exemplos de Uso doPlayerSendTextMessage(cid,19,_t(cid,{'Bem Vindo ao OTServer do Romulo', 'Welcome to Romulo\'s OTServer'})) local keywordHandler = KeywordHandler:new() local npcHandler = NpcHandler:new(keywordHandler) NpcSystem.parseParameters(npcHandler) local talkState = {} local name --// Crédito: Rômulo --// Config Here// local min_hour = 2 -- Min hour of wait local max_hour = 12 -- Max hour of wait local items = {['katana']={itemid=2412, cust=100}, ['naginata']={itemid=2426, cust=200}} -- Items to Sell local config_str = {s_itemid=4251, s_comming=4241} -- Storage ( Dont change if you dont know ) --/////////////// function onCreatureAppear(cid) npcHandler:onCreatureAppear(cid) selfSay(_t(cid,{"Hey! Hey! I got some good stuff for you, come here!", "Hey Hey! Venha venha aqui nobre guerreiro, tenho umas coisas pra você!"}),cid) end function onCreatureDisappear(cid) npcHandler:onCreatureDisappear(cid) end function onCreatureSay(cid, type, msg) npcHandler:onCreatureSay(cid, type, msg) local talkUser = NPCHANDLER_CONVBEHAVIOR == CONVERSATION_DEFAULT and 0 or cid if(msgcontains(msg, 'hi') or msgcontains(msg, 'hello')) then if (getPlayerStorageValue(cid,config_str.s_comming) ~= -1) then local itemid = getPlayerStorageValue(cid,config_str.s_itemid) local time = getPlayerStorageValue(cid,config_str.s_comming) if (getPlayerStorageValue(cid,config_str.s_comming) <= os.time()) then selfSay(_t(cid,{'Hello! Your '..getItemNameById(itemid)..' is ready! You want get it now?', 'Olá! sua '..getItemNameById(itemid)..' ja chegou! Você quer ela agora?'}), cid) talkState[talkUser] = 3 else min = math.floor((time-os.time())/60) hours = math.floor((time-os.time())/60/60) selfSay( _t(cid,{'Your '..getItemNameById(itemid)..' will take '.. min..' minutes to come for me.', 'Sua '..getItemNameById(itemid)..' Irá demorar '.. min..' minutos para chegar até mim.'}), cid) end else local str = '' local cont = 1 for name,tab in pairs(items) do str = str.. name.. (cont >= count(items) and '.' or ',') cont = cont+1 end selfSay( _t(cid,{'Hello, i can bring some kind of itens for you, just say what you want. Items: '..str, 'Olá, eu sou um grande viajante e posso trazer algumas coisas pra você! Posso buscar: '..str}) , cid) talkState[talkUser] = 1 end elseif (talkState[talkUser] == 1 and msg ~='bye') then if (items[msg] ~= nil) then selfSay(_t(cid,{'You want to request the '..msg..'? it will cost '..items[msg].cust..' gold coins, are you sure?', 'Você deseja então uma '..msg..'? Isso irá custar '..items[msg].cust..' gold coins, você aceita?'}) , cid) talkState[talkUser] = 2 name = msg else selfSay(_t(cid,{'I\'m not selling the '..msg..'!', 'Eu não vendo '..msg..'!'}) , cid) talkState[talkUser] = 1 end elseif(msgcontains(msg, 'no') and talkState[talkUser] == 2) then selfSay( _t(cid,{"Don\'t worry, i can bring this anytime you want.", 'Sem problemas, eu posso trazer a qualquer momento para você'}) ,cid) talkState[talkUser] = 1 elseif(msgcontains(msg, 'yes') and isInArray({2,3}, talkState[talkUser])) then if (talkState[talkUser] == 2) then if (doPlayerRemoveMoney(cid,items[name].cust)) then hours = doStorage(cid, items[name].itemid) selfSay( _t(cid,{'Thanks for requesting '..name..', it will take '..hours..' hours before come.', 'Obrigado por requisitar uma '..name..', vai levar '..hours..' horas pra chegar até mim.'}), cid) talkState[talkUser] = 0 else selfSay(_t(cid,{'You don\'t have enough money, you need '.. items[name].cust..' gold coins.', 'Você não tem dinheiro suficiente, você precisa de '.. items[name].cust..' gold coins.'}) , cid) talkState[talkUser] = 1 end elseif (talkState[talkUser] == 3) then local itemid = getPlayerStorageValue(cid,config_str.s_itemid) selfSay( _t(cid,{'Here you are, come back again!.', 'Aqui está. Volte sempre!'}) , cid) doPlayerAddItem(cid,itemid,1) setPlayerStorageValue(cid,config_str.s_itemid,-1) setPlayerStorageValue(cid,config_str.s_comming,-1) talkState[talkUser] = 0 end end return true end function onThink() npcHandler:onThink() end function creatureSayCallback(cid, type, msg) if(not npcHandler:isFocused(cid)) then return false end end npcHandler:setCallback(CALLBACK_MESSAGE_DEFAULT, creatureSayCallback) npcHandler:addModule(FocusModule:new()) function doStorage(cid,itemid) str = getPlayerStorageValue(cid,config_str.s_comming) hours = math.random(min_hour,max_hour) local time = (os.time())+(1*60*60*hours) setPlayerStorageValue(cid,config_str.s_itemid,itemid) setPlayerStorageValue(cid,config_str.s_comming,time) return hours end function count(t) sum = 0 for k,v in pairs(t) do sum = sum + 1 end return sum end Gostou? O que você pensa sobre isso? Deixe seu comentário! Editado 29 Maio, 2014 por Rômulo Souza 3 WoE321, grilo13 e Oneshot reagiu a isto Compartilhar este post Link para o post
Oneshot 24 #2 Postado 29 Maio, 2014 Muito interessante, Rômulo. Obrigado por contribuir com conteúdo para o fórum. Esse é um sistema interessante e implementa um recurso que muitos jogos possuem, a multi-linguagem. Parabéns. Seu download foi aprovado e foi movido para Sistemas, você receberá OT$20 pela contribuição. 1 Rômulo Souza reagiu a isto Compartilhar este post Link para o post
grilo13 60 #3 Postado 29 Maio, 2014 Muito obrigado por disponibilizar, acho muito interessante esse sistema, parabéns 1 Rômulo Souza reagiu a isto Compartilhar este post Link para o post
Longhart 16 #4 Postado 30 Maio, 2014 Eu não creio que esse sistema faria muito sucesso em outras partes do OT, como em nome de itens ou de magias, mas para NPC até que faz uma diferença sensata, afinal nem todos falam a lingua inglesa ou vice-versa. 1 Rômulo Souza reagiu a isto Compartilhar este post Link para o post
Rômulo Souza 14 #5 Postado 2 Junho, 2014 @Oneshoot, @grilo Obrigado! Vou aos poucos tentar contribuir com a comunidade na medida do possível, pois ando bastante ocupado. @Longhart Sim, foi especialmente pra NPC's que eu criei. E por experiência própria, ja que quando eu jogava, me perdia no que o NPC queria! Assim que tiver tempo eu crio um esquema legal pra trocar a linguagem por talkactions. . Por enquanto, o sistema é útil somente para developers! Mas é extremamente fácil montar qualquer sistema de troca de linguagens com isso. 1 Longhart reagiu a isto Compartilhar este post Link para o post
caiohp1 0 #6 Postado 8 Junho, 2014 Por que não tenta fazer um ligado diretamente ao google translate, para que possa ficar mais dinâmico e não precisar trocar em todos os NPCs, não tenho ideia de como fazer deste modo, entretanto; seria uma boa, parabéns pelo script. Compartilhar este post Link para o post