Modulo Convertir Item ID en Client ID

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
Hola a todos,

Aquí encontrarán como cambiar el archivo items.xml para items.xml de Item ID para client ID.

Abrirán la carpeta de su servidor en data, crearan una carpeta llamada xmlConverter, dentro de esta carpeta crearan 2 otras una llamada input otra output.
En la carpeta input pegarán su items.xml,
Luego nos iremos en data/scripts y pegaremos esto:

En el juego haremos con el god el comando /xmlconverter, en la carpeta output encontraran el items.xml convertido en clientID.
Script por Sarah Wesker:

Código:
--[[

    Credits: Sarah Wesker
    Version: 1.0
    Compat: TFS 1.3
    Create: December 2020

]]--

local function convertXmlFile(file)
    local f = io.open(file, 'r')
    if not f then
        return false
    end
    local newFile = io.open(file:gsub('input', 'output'), 'w')
    if not newFile then
        f:close()
        return false
    end
    local index = 0
    local lines = {}
    for line in f:lines() do
        local fromId
        local toId
        fromId = tonumber(line:match('id="(%d+)"'))
        if not fromId then
            fromId = tonumber(line:match('fromId="(%d+)"'))
            toId = tonumber(line:match('toId="(%d+)"'))
            if not fromId or not toId then
                goto continue
            end
        else
            toId = fromId
        end
        for _, itemId in pairs({fromId, toId}) do
            if itemId ~= 0 then
                local itemType = ItemType(itemId)
                if itemType then
                    local clientId = itemType:getClientId()
                    if clientId ~= 0 then
                        line = line:gsub(tostring(itemId), tostring(clientId))
                    end
                end
            end
        end
        ::continue::
        index = index +1
        lines[index] = line..'\n'
    end
    f:close()
    newFile:write(table.concat(lines))
    newFile:close()
    return true
end

local talkTest = TalkAction("/xmlConverter")
function talkTest.onSay(player, words, param)
    if not player:getGroup():getAccess() then
        return true
    end
    for file in io.popen([[dir "data\xmlConverter\input" /b /a /s]]):lines() do
        convertXmlFile(file)
    end
    player:popupFYI("The conversion from itemId to clientId was successful.")
    return false
end

talkTest:separator(" ")
talkTest:register()
 

nyebez

Miembro
LV
13
 
Awards
10
al hacer esto, se podra como usar mis mapas de las verciones anteriores? de 12.72 a una vercion actual como a la 12.86?
 

Alex

Miembro del equipo
Webdesigner
LV
58
 
Awards
38
al hacer esto, se podra como usar mis mapas de las verciones anteriores? de 12.72 a una vercion actual como a la 12.86?

Esto permite convertir los items.xml en vez de ITEM ID para CLIENT ID.
No obstante, esto avanza 80% del trabajo, el 20% restante es abrir un items.xml 12.86 y el nuestro convertido, asi bien mirar que IDS hay disponibles y cuales no, por lo tanto ir borrando las que estan demasiadas en el cliente.
Un ejemplo en 12.86 creo que van de la 1-19 , y hasta 100 en client ID esta vacío, si en tu items.xml convertido hay ID entra esas dos, debes de borrarlas.

También implica cambios en tus sources, debido a la conversión puede que varias ID sean distintas.
 
Arriba