Discussion on [RLS] Einfache Quest Multi-übersetzung[Lua] within the Metin2 PServer Guides & Strategies forum part of the Metin2 Private Server category.
da ich das ganze noch hier aufm Pc rum liegen hab, allerdings keine
Verwendung mehr dafür habe, teile ich es mit euch.
Mit Sicherheit gibt es schon einige Releases, mit denen ihr eure Quests
übersetzen könnt. Allerdings habe ich mich am GF System orientiert, um es
noch etwas strukturierter darzustelllen.
Aber genug erzählt ...
Den download findet ihr im Anhang.
How-To:
Als erstes geht ihr in die questlib.lua und bindet die translate.lua ein.
Sucht nach:
PHP Code:
dofile("locale/germany/quest/questing.lua")
und fügt darunter folgendes ein:
PHP Code:
dofile("locale/germany/quest/translate.lua")
Anschließend ladet ihr noch die translate.lua
in euer Quest-Verzeichniss hoch.
Nun müsst ihr in der account.account Tabelle noch eine spalte "lang" hinzufügen. (int)
Nun könnt ihr problemlos alle Quests auf beliebig viele Sprachen übersetzen.
Mit diesem System wäre es auch möglich für verschiedene sprachen komplett verschiedene Quests anzubieten :P
Hier noch eine Beispielquest:
PHP Code:
quest lang begin
state start begin
when login with get_lang() == "none" begin
send_letter("Select Language")
end
when button or info begin
local lang = get_lang()
if lang == 0 or lang == "none" then
say_title(quest_1[lang].title)
say("")
say(quest_1[lang].say_1)
say(quest_1[lang].say_2)
local s = select(quest_1[lang].sel_1, quest_1[lang].sel_2)
if s == 1 then
set_lang("de")
chat(quest_1[get_lang()].confirmLang)
set_state("test")
elseif s == 2 then
set_lang("en")
chat(quest_1[get_lang()].confirmLang)
set_state("test")
end
send_letter("Select Language")
end
end
end
state test begin
when login with get_lang() == "de" or get_lang() == "en" begin
send_letter(quest_1[get_lang()].questname.title)
end
when button or info begin
say_title(quest_1[get_lang()].questname.title)
say("")
say(quest_1[get_lang()].questname.text)
wait()
end
end
end
--[[
###########################
# QuestFunction:
pc.set_language -- Update the language of account;
pc.get_language -- Returns: [1] lua_String: the account language;
###########################
]]
quest select_language begin
state start begin
when login begin
send_letter("DBG: Select lang")
end
when button or info begin
languageOptionDict = {
{"en", "English"},
{"it", "Italy"},
{"de", "Deutschland"},
{"es", "Spanish"},
{"pl", "Poland"},
{"hu", "Hungary"},
{"tr", "Turkish"},
{"ro", "Romania"},
{"cz", "Czech Republic"},
{"ru", "Russia"},
{"nl", "Netherlands"},
{"fr", "France"}
}
tabsDict = {}
TYPE_LANG_INDEX = 1
TYPE_LANG_DESC = 2
for i = 1, table.getn(languageOptionDict) do
table.insert(tabsDict, languageOptionDict[i][TYPE_LANG_DESC]) end
table.insert(tabsDict, "Exit")
say_title("Select the language:")
local selKey = select_table(tabsDict)
if selKey == table.getn(tabsDict) then
return end
langSelected = languageOptionDict[selKey][TYPE_LANG_INDEX]
pc.set_language(langSelected)
syschat(string.format("DBG: pc.set_language(%s) with success.", langSelected))
end
end
end
Quests function (source):
Code:
//@Src/Server/game/char.h
public:
void SetLanguage(const char* c_pszLang);
const char* GetLanguage() const;
//@Src/Server/game/char.cpp
void CHARACTER::SetLanguage(const char* c_pszLang)
{
DBManager::instance().Query("UPDATE account.account SET language = '%s' WHERE id = '%d'", c_pszLang, GetDesc()->GetAccountTable().id);
}
const char* CHARACTER::GetLanguage() const
{
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT language FROM account.account WHERE id = '%d'", GetDesc()->GetAccountTable().id));
return mysql_fetch_row(pMsg->Get()->pSQLResult)[0];
}
//@Src/Server/game/questlua_pc.cpp
{ "set_language", pc_set_language },
{ "get_language", pc_get_language },
int pc_set_language(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (!ch)
return 0;
if (!lua_isstring(L, 1))
{
sys_err("QUEST : wrong argument");
return 0;
}
ch->SetLanguage(lua_tostring(L, 1));
return 1;
}
int pc_get_language(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (!ch)
return 0;
lua_pushstring(L, ch->GetLanguage());
return 1;
}
--[[
###########################
# QuestFunction:
pc.set_language -- Update the language of account;
pc.get_language -- Returns: [1] lua_String: the account language;
###########################
]]
quest select_language begin
state start begin
when login begin
send_letter("DBG: Select lang")
end
when button or info begin
languageOptionDict = {
{"en", "English"},
{"it", "Italy"},
{"de", "Deutschland"},
{"es", "Spanish"},
{"pl", "Poland"},
{"hu", "Hungary"},
{"tr", "Turkish"},
{"ro", "Romania"},
{"cz", "Czech Republic"},
{"ru", "Russia"},
{"nl", "Netherlands"},
{"fr", "France"}
}
tabsDict = {}
TYPE_LANG_INDEX = 1
TYPE_LANG_DESC = 2
for i = 1, table.getn(languageOptionDict) do
table.insert(tabsDict, languageOptionDict[i][TYPE_LANG_DESC]) end
table.insert(tabsDict, "Exit")
say_title("Select the language:")
local selKey = select_table(tabsDict)
if selKey == table.getn(tabsDict) then
return end
langSelected = languageOptionDict[selKey][TYPE_LANG_INDEX]
pc.set_language(langSelected)
syschat(string.format("DBG: pc.set_language(%s) with success.", langSelected))
end
end
end
Quests function (source):
Code:
//@Src/Server/game/char.h
public:
void SetLanguage(const char* c_pszLang);
const char* GetLanguage() const;
//@Src/Server/game/char.cpp
void CHARACTER::SetLanguage(const char* c_pszLang)
{
DBManager::instance().Query("UPDATE account.account SET language = '%s' WHERE id = '%d'", c_pszLang, GetDesc()->GetAccountTable().id);
}
const char* CHARACTER::GetLanguage() const
{
std::auto_ptr<SQLMsg> pMsg(DBManager::instance().DirectQuery("SELECT language FROM account.account WHERE id = '%d'", GetDesc()->GetAccountTable().id));
return mysql_fetch_row(pMsg->Get()->pSQLResult)[0];
}
//@Src/Server/game/questlua_pc.cpp
{ "set_language", pc_set_language },
{ "get_language", pc_get_language },
int pc_set_language(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (!ch)
return 0;
if (!lua_isstring(L, 1))
{
sys_err("QUEST : wrong argument");
return 0;
}
ch->SetLanguage(lua_tostring(L, 1));
return 1;
}
int pc_get_language(lua_State* L)
{
LPCHARACTER ch = CQuestManager::instance().GetCurrentCharacterPtr();
if (!ch)
return 0;
lua_pushstring(L, ch->GetLanguage());
return 1;
}
Yea ok if you do it via Source ... but the script is about 4 Years old
so i just wanted to share it ...
but nice to do it in source
maybe its less core using
Übersetzung translate.lua 02/23/2014 - Metin2 Private Server - 0 Replies I don `t wissen, die deutsche Sprache
Könnten Sie aus dem Deutschen ins Russische zu übersetzen =).
translate.lua ? RGhost ? ?????????????
Suche einfache übersetzung 10/19/2013 - elite*gold Trading - 7 Replies Frage Ist das grammatisch korrekt?
-> Spielen bis zum Tod
Wer mir das auf englisch übersetzt (nicht mit translater) kriegt 5 E*Gold xD
(es ist wichtig)
gruß
[RLS]Einfache 2x2 Farmmap 05/11/2013 - Metin2 PServer Guides & Strategies - 20 Replies Heyho, hab hier ne 2x2 Farmmap (oder sowas) welche aber ziemlich minderwertig ist, keine Minnnimap (kann nicht rauszoomen = nur schwer ne Minnimap) und hat keine Objekte :S Das Prog. will einfach nicht bei mir:P
Vielleicht könnt ihr ja was damit anfangen?
Screens:
http://i.epvpimg.com/6bPPe.jpg
http://i.epvpimg.com/RM2wg.jpg
http://i.epvpimg.com/l5Due.jpg
http://i.epvpimg.com/raTWg.jpg
Compile all quest without quest's files list // Kompilieren Sie alle Quest ohne Quest 07/17/2011 - Metin2 PServer Guides & Strategies - 3 Replies ENGLISH
Hello dear community, this is a very simple guide but at the same time useful.
How to compile ALL quest in the folder "quest" without the files list in the file "locale_list"?
Easy!
Open the file "make" and replace the content of the file with this:
for f in *.quest; do ./qc $f; done
Oki. Now set the 0777 permission to the file.
Finally open a SSH client and sign in. Write the command:
cd /game_file_folder