Nestle 382 Posted April 20, 2013 Olá cyberianos, Hoje vou ensinar-vos como dividir as quests, de acordo com as linguagens. ( Apenas dei-me ao trabalho de traduzir, quem quiser tem o tópico oficial em ingles, posso ter traduzido mal ) A maioria das diferenças entre o game.g/set_event_flag e a pc.g/setq/f são os seguintes: [*]O primeiro enviar uma consulta para o db sempre e, se usado com frequência, como "sujo" ou servidor (tente usar /get em jogo e ver o que aparece (muito ruim) [*]O segundo olhar simplesmente para os valores armazenados na memória (todos os personagem questflags são salvos na memória char_ptr+8000 < >9000 (aproximadamente) quando u ur login char no jogo (muito suave)) Questflags são atualizados (apenas as chaves alteradas, se bandeira estudo AFFIRM 0 -> bandeira excluído) na db de 5 em 5 minutos (não olhei exatamente) e/ou durante o logout! Como compilar Cria um ficheiro chamado languagesystem.quest com o seguinte: quest languagesystem begin state start begin function GetMyLan() --check language local mylan=pc.getf("game_option", "language") if(mylan==0)then mylan=1--already local, not global! end return mylan end function GetMyString(lanid, strid) --lan-table (list-mode) local mystrings={ {"Language panel", "No language selected","Which language do you prefer?","Back","Language successfully changed.","","","","","","",""}, {"Pannello lingua", "Nessuna lingua selezionata","Quale lingua preferisci?","Indietro","Lingua correttamente cambiata.","","","","","","",""}, {"deutschestring1","deutschestring2","","","","","","","","","",""}, {"francaisstring1","francaisstring2","","","","","","","","","",""}, {"espanolstring1","espanolstring2","","","","","","","","","",""}, {"afrochinesestring1","afrochinesestring2","","","","","","","","","",""}, } return mystrings[lanid][strid] end when letter begin send_letter(languagesystem.GetMyString(languagesystem.GetMyLan(), 1)) end when info or button begin local mylan=languagesystem.GetMyLan() local resend_letter=function(title) makequestbutton(title) q.set_title(title) q.start() end --select language say_title(languagesystem.GetMyString(mylan, 1)) say(languagesystem.GetMyString(mylan, 3)) local myarsel={"English", "Italiano", "Deutsche", "Francais", "AfroChinese"} table.insert(myarsel,languagesystem.GetMyString(mylan, 4)) local mysel=select_table(myarsel) --process language if(mysel==table.getn(myarsel))then resend_letter(languagesystem.GetMyString(mylan, 1)) return end--back mylan=mysel--already local, not global! pc.setf("game_option", "language", mysel) say_reward(languagesystem.GetMyString(mylan, 5)) --letter remake resend_letter(languagesystem.GetMyString(mylan, 1)) end endendAgora, add as novas quest's functions no ficheiro quest_functions : cd /path/to/questecho resend_letter >> quest_functionsecho languagesystem.GetMyLan >> quest_functionsecho languagesystem.GetMyString >> quest_functionsAgora compila: ./qc languagesystem.questComo usar isso em uma busca normal É simples. Você pode usá-lo usando questlib.lua / locale.lua Caso contrário, aqui está um exemplo: quest examplelan begin state start begin when login begin local mylan=pc.getf("game_option", "language") if(mylan==0)then mylan=1 end --lan-table (dict-mode) local myarr={ {["mex1"]="Welcome!",["mex2"]="blablabla1"}, {["mex1"]="Benvenuto!",["mex2"]="blablabla2"}, {["mex1"]="Willkommen!",["mex2"]="blablabla3"}, {["mex1"]="Bienvenue!",["mex2"]="blablabla4"}, {["mex1"]="Huan Ying!",["mex2"]="blablabla5"}, } syschat(myarr[mylan].mex1) --mex2 here is unused, u can delete it from the table end endendDiverte-te! Tópico oficial: Intro There are no reasons why I posted this quest. Maybe I saw more quest abortion that used lotofIF or, in recent cases, game.set_event_flag("language"..pc.get_name()) or mysql_query! Things from another world. The most differences between game.g/set_event_flag and a pc.g/setq/f are the following: [*]the first send a query to the db everytime and, if often used, it "dirty" ur server (try use /get in game and see what appears) (too bad) [*]the second merely look at the values stored in the memory (all character's questflags are saved in memory in char_ptr+8000<>9000 (approximately) when u login ur char in game (too soft)) Questflags are updated (only keys changed, if flag==0 -> flag deleted) in the db every 5 minutes (I have not looked exactly) and/or during logout! How to compile Create the file languagesystem.quest with this content: quest languagesystem begin state start begin function GetMyLan() --check language local mylan=pc.getf("game_option", "language") if(mylan==0)then mylan=1--already local, not global! end return mylan end function GetMyString(lanid, strid) --lan-table (list-mode) local mystrings={ {"Language panel", "No language selected","Which language do you prefer?","Back","Language successfully changed.","","","","","","",""}, {"Pannello lingua", "Nessuna lingua selezionata","Quale lingua preferisci?","Indietro","Lingua correttamente cambiata.","","","","","","",""}, {"deutschestring1","deutschestring2","","","","","","","","","",""}, {"francaisstring1","francaisstring2","","","","","","","","","",""}, {"espanolstring1","espanolstring2","","","","","","","","","",""}, {"afrochinesestring1","afrochinesestring2","","","","","","","","","",""}, } return mystrings[lanid][strid] end when letter begin send_letter(languagesystem.GetMyString(languagesystem.GetMyLan(), 1)) end when info or button begin local mylan=languagesystem.GetMyLan() local resend_letter=function(title) makequestbutton(title) q.set_title(title) q.start() end --select language say_title(languagesystem.GetMyString(mylan, 1)) say(languagesystem.GetMyString(mylan, 3)) local myarsel={"English", "Italiano", "Deutsche", "Francais", "AfroChinese"} table.insert(myarsel,languagesystem.GetMyString(mylan, 4)) local mysel=select_table(myarsel) --process language if(mysel==table.getn(myarsel))then resend_letter(languagesystem.GetMyString(mylan, 1)) return end--back mylan=mysel--already local, not global! pc.setf("game_option", "language", mysel) say_reward(languagesystem.GetMyString(mylan, 5)) --letter remake resend_letter(languagesystem.GetMyString(mylan, 1)) end endendNow, add the new quest's functions in the quest_functions file: cd /path/to/questecho resend_letter >> quest_functionsecho languagesystem.GetMyLan >> quest_functionsecho languagesystem.GetMyString >> quest_functionsNow compile: ./qc languagesystem.quest How to use this in a normal quest It's simple. U can use it using questlib.lua/locale.lua Otherwise, here's an example: quest examplelan begin state start begin when login begin local mylan=pc.getf("game_option", "language") if(mylan==0)then mylan=1 end --lan-table (dict-mode) local myarr={ {["mex1"]="Welcome!",["mex2"]="blablabla1"}, {["mex1"]="Benvenuto!",["mex2"]="blablabla2"}, {["mex1"]="Willkommen!",["mex2"]="blablabla3"}, {["mex1"]="Bienvenue!",["mex2"]="blablabla4"}, {["mex1"]="Huan Ying!",["mex2"]="blablabla5"}, } syschat(myarr[mylan].mex1) --mex2 here is unused, u can delete it from the table end endendEnjoy! Créditos: EPVP 2 Vitor Pinho ☮ and Razza reacted to this Share this post Link to post Share on other sites
.HaveGone 81 Posted April 20, 2013 Olá cyberianos, Hoje vou ensinar-vos como dividir as quests, de acordo com as linguagens. ( Apenas dei-me ao trabalho de traduzir, quem quiser tem o tópico oficial em ingles, posso ter traduzido mal ) A maioria das diferenças entre o game.g/set_event_flag e a pc.g/setq/f são os seguintes: [*]O primeiro enviar uma consulta para o db sempre e, se usado com frequência, como "sujo" ou servidor (tente usar /get em jogo e ver o que aparece (muito ruim) [*]O segundo olhar simplesmente para os valores armazenados na memória (todos os personagem questflags são salvos na memória char_ptr+8000 < >9000 (aproximadamente) quando u ur login char no jogo (muito suave)) Questflags são atualizados (apenas as chaves alteradas, se bandeira estudo AFFIRM 0 -> bandeira excluído) na db de 5 em 5 minutos (não olhei exatamente) e/ou durante o logout! Como compilar Cria um ficheiro chamado languagesystem.quest com o seguinte: quest languagesystem begin state start begin function GetMyLan() --check language local mylan=pc.getf("game_option", "language") if(mylan==0)then mylan=1--already local, not global! end return mylan end function GetMyString(lanid, strid) --lan-table (list-mode) local mystrings={ {"Language panel", "No language selected","Which language do you prefer?","Back","Language successfully changed.","","","","","","",""}, {"Pannello lingua", "Nessuna lingua selezionata","Quale lingua preferisci?","Indietro","Lingua correttamente cambiata.","","","","","","",""}, {"deutschestring1","deutschestring2","","","","","","","","","",""}, {"francaisstring1","francaisstring2","","","","","","","","","",""}, {"espanolstring1","espanolstring2","","","","","","","","","",""}, {"afrochinesestring1","afrochinesestring2","","","","","","","","","",""}, } return mystrings[lanid][strid] end when letter begin send_letter(languagesystem.GetMyString(languagesystem.GetMyLan(), 1)) end when info or button begin local mylan=languagesystem.GetMyLan() local resend_letter=function(title) makequestbutton(title) q.set_title(title) q.start() end --select language say_title(languagesystem.GetMyString(mylan, 1)) say(languagesystem.GetMyString(mylan, 3)) local myarsel={"English", "Italiano", "Deutsche", "Francais", "AfroChinese"} table.insert(myarsel,languagesystem.GetMyString(mylan, 4)) local mysel=select_table(myarsel) --process language if(mysel==table.getn(myarsel))then resend_letter(languagesystem.GetMyString(mylan, 1)) return end--back mylan=mysel--already local, not global! pc.setf("game_option", "language", mysel) say_reward(languagesystem.GetMyString(mylan, 5)) --letter remake resend_letter(languagesystem.GetMyString(mylan, 1)) end endendAgora, add as novas quest's functions no ficheiro quest_functions : cd /path/to/questecho resend_letter >> quest_functionsecho languagesystem.GetMyLan >> quest_functionsecho languagesystem.GetMyString >> quest_functionsAgora compila: ./qc languagesystem.questComo usar isso em uma busca normal É simples. Você pode usá-lo usando questlib.lua / locale.lua Caso contrário, aqui está um exemplo: quest examplelan begin state start begin when login begin local mylan=pc.getf("game_option", "language") if(mylan==0)then mylan=1 end --lan-table (dict-mode) local myarr={ {["mex1"]="Welcome!",["mex2"]="blablabla1"}, {["mex1"]="Benvenuto!",["mex2"]="blablabla2"}, {["mex1"]="Willkommen!",["mex2"]="blablabla3"}, {["mex1"]="Bienvenue!",["mex2"]="blablabla4"}, {["mex1"]="Huan Ying!",["mex2"]="blablabla5"}, } syschat(myarr[mylan].mex1) --mex2 here is unused, u can delete it from the table end endendDiverte-te! Tópico oficial: Créditos: EPVP Créditos não são EPVP mas sim: lollo_9_1 Fonte é que é EPVP. Share this post Link to post Share on other sites
Vitor Pinho ☮ 1,199 Posted April 20, 2013 Obrigado pela partilha.http://cyber-gamers.org/public/style_emoticons/default/451960.gif Share this post Link to post Share on other sites