Szerző Téma: [Gyűjtőtéma]Kis publikációk  (Megtekintve 372227 alkalommal)

Nem elérhető TMP4

  • Trainee
  • *
  • Hozzászólások: 78
  • Segített: 19
Re:[Gyűjtőtéma]Kis publikációk
« Válasz #250 Dátum: 2021-09-08, 21:48:39 »
    Metin2 Translate Pack

    Tartalmazza:
    • item_names
    • mob_names
    • translate.lua
    • locale_string
    • client_locale
    Elérhető nyelvek:
    • Cseh
    • Német
    • Dán
    • Angol
    • Spanyol
    • Francia
    • Görög
    • Magyar
    • Olasz
    • Holland
    • Lengyel
    • Portugál
    • Román
    • Orosz
    • Török

    Link: Google Drive

    A 40k referencia szerverfájlomból lett kibontva, de úgy gondoltam jó ha külön is megtalálható.

    Nem elérhető ATAG

    • Administrator
    • Sage
    • *
    • Hozzászólások: 2 553
    • Segített: 1735
    • Dr.
    Re:[Gyűjtőtéma]Kis publikációk
    « Válasz #251 Dátum: 2021-09-16, 21:39:06 »
    A klasszikus mysql_query "lib" kiterjesztése, sok magyarázatot nem igényel.
    -- mysqllib.lua v2.0
    -- ATAG @ 09.21
    function read_config()
    local f, e = io.open("CONFIG", "r")
    local conf = f:read("*a")
    f:close()
    --db_host, db_user, db_pass, db_db = string.match(conf,"PLAYER_SQL: (%S+) (%S+) (%S+) (%S+)")
    return string.match(conf,"PLAYER_SQL: (%S+) (%S+) (%S+) (%S+)")
    end

    --ha szar az io.popen, használd ezt...
    io.popen = function(cmd, mode)
    local tmp = os.tmpname()
    os.execute(cmd.." > "..tmp) --tmp file must be deleted after use!
    local f,e = io.open(tmp)
    return f,e or tmp
    end

    MYSQL_ASSOC = 1
    MYSQL_NUM = 2
    MYSQL_BOTH = 3
    result_types={
    [MYSQL_ASSOC] = "string",
    [MYSQL_NUM]   = "number",
    -- [MYSQL_BOTH]  = nil
    }
    --http://lua-users.org/wiki/CopyTable
    function table.copy(orig, copies)
    copies = copies or {}
    local orig_type = type(orig)
    local copy
    if orig_type == 'table' then
    if copies[orig] then
    copy = copies[orig]
    else
    copy = {}
    copies[orig] = copy
    for orig_key, orig_value in next, orig, nil do
    copy[table.copy(orig_key, copies)] = table.copy(orig_value, copies)
    end
    setmetatable(copy, table.copy(getmetatable(orig), copies))
    end
    else -- number, string, boolean, etc
    copy = orig
    end
    return copy
    end

    function mysql_fetch_array(result,iType)
    local res = table.copy(result) --don't modify original result for possible later processing -.-
    local key, value
    return function()
    key, value = next(res, key)
    if iType and result_types[iType] and value then
    for i in pairs(value) do
    if type(i) ~= result_types[iType] then
    value[i]=nil
    end
    end
    end
    return value
    end
    end

    mysql_fetch_assoc = function(result)
    return mysql_fetch_array(result,MYSQL_ASSOC)
    end

    mysql_fetch_row = function(result)
    return mysql_fetch_array(result,MYSQL_NUM)
    end

    function mysql_free_results(result)
    result = nil
    collectgarbage()
    end

    function mysql_query(query)
    if not db_host then
    db_host, db_user, db_pass, db_db = read_config()
    end
    local exec = string.format("mysql -E -h %s -u %s -p%s -D %s -e \"%s\"", db_host,db_user,db_pass,db_db,query)
    --print(exec)
    local f, tmp = assert(io.popen(exec))
    local results = {}
    local cols = {}
    local row = 0
    local line = f:read()
    while line do
    -- line:*************************** 2. row ***************************
    if line:match("[\*%s]+%d+\. row[%s\*]+") then
    row = row+1
    else
    local var,val = line:match("(%S+): (.*)")
    cols[var] = val
    table.insert(cols,val)
    end
    if row > 1 then
    table.insert(results, cols)
    cols = {}
    row = 1
    end
    line = f:read()
    end
    if row > 0 then
        table.insert(results, cols)
    end
    f:close()
    if tmp then os.remove(tmp) end
    --[[
    results = {
    [1]={[1]="val1",[2]="val2",["colname1"]="val1",["colname2"]="val2"}, --row1
    [2]={[1]="val1",[2]="val2",["colname1"]="val1",["colname2"]="val2"}  --row2
    }
    ]]
    return results
    end
    A mysql_query önmagában a szokásos indexelt tömbben adja vissza az eredményt.
    Kiegészítő funkciók:
    mysql_fetch_row
    mysql_fetch_assoc
    mysql_fetch_array
    mysql_free_results

    használat:
    --dofile("mysqllib.lua")
    results = mysql_query("SELECT id, last_play FROM account.account LIMIT 3;")
    syschat("assoc:")
    for row in mysql_fetch_assoc(results) do
    syschat("id="..row['id'])
    syschat("last_play="..row['last_play'])
    end
    syschat("row:")
    for row in mysql_fetch_row(results) do
    syschat("id="..row[1])
    syschat("last_play="..row[2])
    end
    syschat("array:")
    for row in mysql_fetch_array(results) do
    syschat("last_play="..row['last_play'])
    syschat("id="..row[1])
    end
    mysql_free_results(results)

    « Utoljára szerkesztve: 2021-09-16, 22:52:22 írta ATAG »