antiblock
Cyphriun
  • Chatbox

    Did you check out our Discord? https://discord.gg/FFdvMjk9xA
    You don't have permission to chat.
    Load More
Sign in to follow this  
Nestle

Languagesystem - Como Dividir As Missões De Acordo Com A Linguagem

3 posts in this topic

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					endend
Agora, 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_functions
Agora compila:

./qc languagesystem.quest
Como 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	endend
Diverte-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                    endend
Now, 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_functions
Now 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    endend
Enjoy!

Créditos: EPVP

Share this post


Link to post
Share on other sites
antiblock
Elveron

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					endend
Agora, 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_functions
Agora compila:

./qc languagesystem.quest
Como 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	endend
Diverte-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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this