Ei aloittelijoille. Oletus on että osaa käyttää Google Kääntäjää. Scriptit/ohjeet saksaksi.
Scriptit mahdollistaa puidrn massa asettelun, peltojen fieldDefinitionin luonnin, monen objectin liikuttelun ja monta muutakin asioita helpottavaa toimintaa.
Väsäsin editori scriptin joka tekee automaattisesti i3dMappings:it. Riittää siis, kun nimeää Editorissa objektit samalla nimellä xml-tiedoston node-kohtien kanssa. Tämän jälkeen ei haittaa vaikka editorissa indexit vaihtuisivat, kunhan vain joka kerta päivittää tällä scriptillä i3dMappings:it. Luonnollisesti objektit joihin halutaan node-kohdilla viitata, eivät saa olla samannimisiä.
-- Author: Truck-King
-- Name: i3dMapper
-- Description:Makes i3dMappings automatically.
-- Icon:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAXFJREFUOI1t0l9L1FEQxvHP6qYY+S8tjLQkSyK8MbOCCqSLIF9B7zSC8iYio6CgCw3KAgPNzGzVal3t18WZn5xdd64OZ875zjwzTwUX8AhDWMJjbKBwPE7hHu7gAAtVXMVDjGEFq3iBv20AQ5jHHPawU8UARnEeJ3ET79oAujAR+RH8wZmOSB4GsQezAW3X/nUM4ivqUAL+4Rd2cAlX0J19rmAYt+O8jkYrYAOvotVb6MsA3biMi1jGdvxpAqzhabQ2ExXLfF9UL/AEP0pyDqhJW/iOcUxG5Q6cxXTIXJIG2AQ4jMtNvMYJadq90mCncBrP8U3yQJEDCmltW3gW5xvS3gdjJgVehv5GCahmgIPQ/xmfYmhTIekavoTEeg4oO8ijhjcBvy9Ztz/utmJexwC573fjcQ138QC/JXfuZd02ASoZoI6P+IBzkqlWQtp+fGxo8UFr/MRiVKxLm9mOXJOEakv1XMZbyTCdeB+wMo4k/Aevb3NTvaQMZwAAAABJRU5ErkJggnMAAAAYAAAAAAAAAAAAkcsyiHg4AIgCAAAAAAAAAADYYQYAAAAAsOwaqnYCAAAABAAAAAAAANDOUK52AgAAAQEBCAAAAAAAAAAAAAAAAAAACp92AgAAAAQDAAAAIAAA6wEAAAAgAAAA+PtQAwAA0M5QrnYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAEAAAAAAAAxQIAAOiIAAADAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgksXYCAAAAAAAAAAAAAAAAAAAAAAAAAAAAANkBAQAAAAAAAAAAAICi0612AgAAAAAAAgAAAABQ9U2adgIAAAAAAAAAAAAAgP36rXYCAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABIb9CtdgIAAEhv0K12AgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAAAAAAAAAAAAAAAAAAKwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyyxeIeDkAiEge8Tr8fwAA2hoVAAAAAADoEAQAAAAAAAAAAIAAAAAAAQAAAAAAAAAgAAAAAAAAAAYAAAAAAAAAAwAAAGAAAABgAAAABgAAAAQAAAACAAAA////////////////AAAAAA==
-- Hide: no
function makeChildMapping(node, indexPath)
for i=0,(getNumOfChildren(node) - 1) do
local child = getChildAt(node,i);
local index = indexPath .. (i)
local name = getName(child)
if name ~= "null" and name ~= "" then
addMapping(name,index)
end;
if getNumOfChildren(child) > 0 then
makeChildMapping(child, index .. "|");
end;
end;
end;
mapIndexCount = 0
function addMapping(name, index)
--print (name .. " index:" .. index)
if xmlFile ~= 0 then
setXMLString(xmlFile, "vehicle.i3dMappings.i3dMapping(".. mapIndexCount ..")#id", name)
setXMLString(xmlFile, "vehicle.i3dMappings.i3dMapping(".. mapIndexCount ..")#node", index)
end;
mapIndexCount = mapIndexCount + 1;
end;
local roots = getChildAt(getRootNode(), 0)
local node = getChildAt(roots, 0)
if node ~= 0 and getUserAttribute(node, "xml") ~= nil and getUserAttribute(node, "xml") ~= "" then
xmlFileName = getSceneFilename() .. "/../" .. getUserAttribute(node, "xml")
elseif node ~= 0 and getUserAttribute(node, "xmlP") ~= nil and getUserAttribute(node, "xmlP") ~= "" then
xmlFileName = getUserAttribute(node, "xmlP")
end
if xmlFileName ~= nil then
xmlFile = loadXMLFile("XML", xmlFileName)
else
print("xml-tiedostopolkua ei ole määritetty!")
print("Katso käyttöohjeet www.ls-fin.com")
return;
end;
if xmlFile ~= 0 and hasXMLProperty(xmlFile, "vehicle") then
if hasXMLProperty(xmlFile, "vehicle.i3dMappings") then
removeXMLProperty(xmlFile, "vehicle.i3dMappings")
end;
print("Tiedoston lataus onnistunut, muokataan..")
else
print("XML-tiedostoa ei löydy tai se on viallinen!")
print("Katso käyttöohjeet www.ls-fin.com")
return;
end;
for childs = 0, (getNumOfChildren(roots) - 1) do
local child = getChildAt(roots, childs);
local name = getName(child)
local index = childs .. ">"
if name ~= "null" and name ~= "" and not(getHasClassId(child, ClassIds.CAMERA)) then
addMapping(name,index)
end;
makeChildMapping(child, index);
end;
if xmlFile ~= 0 then
saveXMLFile(xmlFile)
print("Muokkaus onnistuneesti suoritettu!")
end;
KÄYTTÖ:
Re: GE Lisä Scriptejä
Lähetetty: 23.01.2021 02:00
Kirjoittaja truck-king
i3dMapper_Export:
Uusi versio ylläolevasta scriptistä. Eli i3d-mappingien automaattinen teko i3d:n perusteella. Tässä versiossa ei tarvitse pelleillä attribuuttien kanssa. Riittää, että i3d ja xml ovat samassa kansiossa ja nimetty samalla nimellä (esim. rattori.i3d ja rattori.xml) . Asennus samalla tavalla kuin yläpuolen viestissä.
-- Author: TeeKoo
-- Name: i3dMapperV2 (Export)
-- Description:Export i3dMappings
-- Icon:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAYxJREFUOI3F0rFrk0EYBvDffSlfa41iaxXBYI2KQqSiiEOFgosiCP4Bbh1dFMTJpeBUFDro4iAuLln9A3Squ2MdiiXQQqkSKQnBNMnnkIv9bOLswXHHPc899zzvvfzvEVDAVNxDA61/8A+hGPcZ6nARG9iO80WOlB/FiA14G/GuCppRsRcdXB0hUIlYL84mKkmO0MFWtLmM8QNRS0gipzsA8gJ1LEUnJf3a5LMvI42c+iiBLNpq4QwWc9giLkRsEHdIAFZR1S/YbczE80soCqqhYDV/YeyAQBu78YV7uI5aklo491SYmndjesHSVlUx2xstkOE17qOMWcyGgrnTDzhyWSnrmDh+S5p1tIVhAdjEBzzCqz9Rgwxr7R8+br735Psnye6X4RrAHt7FdRypoBkKuriWnvCw/Njk0St0W6MF6DfM1xhJMmHl8Hnr+Nyqeb72TOPXDifv9iP09L+nZf97aniLlxASP8OYBm5OnjU/90YS+b0QbZaj0Lr9LpvGKUhnbN/Zcczf3dnDt9/ZzWybp//v3wAAAABJRU5ErkJgggAAAO8rTSYAAwCAFAAfUOBP0CDqOmkQotgIACswMJ0ZAC9EOlwAAAAAAAAAAAAAAAAAAAAAAAAAhAAxAAAAAACUURKYEQBET0NVTUV+MQAAbAAJAAQA775RSlplM1KkPS4AAABjuQ0AAAACAAAAAAAAAAAAQgAAAAAAByPvAEQAbwBjAHUAbQBlAG4AdABzAAAAQABzAGgAZQBsAGwAMwAyAC4AZABsAGwALAAtADIAMQA3ADcAMAAAABgAWgAxAAAAAAB7UIGREABNWUdBTUV+MQAAQgAJAAQA775RSjhoMVIGsy4AAABbuQ0AAAAGAAAAAAAAAAAAAAAAAAAAyH8FAE0AeQAgAEcAYQBtAGUAcwAAABgAcgAxAAAAAAAxUumsEABGQUM3RUF+MQAAWgAJAAQA7753TbZpMVIYtS4AAAC/WQYAAAANAAAAAAAAAAAAAAAAAAAA52PaAEYAYQByAG0AaQBuAGcAUwBpAG0AdQBsAGEAdABvAHIAMgAwADEAOQAAABgATgAxAAAAAAAwUjl6EABtb2RzAAA6AAkABADvvndNt2kxUgazLgAAAG99BwAAAAsAAAAAAAAAAAAAAAAAAAAwit0AbQBvAGQAcwAAABQAAAAAAAAAAAAAAAAAAIkrbyYABACLiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAYxJREFUOI3F0rFrkw==
-- Hide: no
local mapIndex = 0;
local xmlFile = 0;
function exportMappings()
if hasXMLProperty(xmlFile, "vehicle.i3dMappings") then
removeXMLProperty(xmlFile, "vehicle.i3dMappings")
print(" Old i3dMappings removed")
end;
local root = getChildAt(getRootNode(), 0)
for childIndex = 0, (getNumOfChildren(root) - 1) do
local child = getChildAt(root, childIndex);
local name = getName(child)
if name ~= "null" and name ~= "" and not(getHasClassId(child, ClassIds.CAMERA)) then
addMappingToXml(name,childIndex .. ">")
end
makeChildMapping(child, childIndex .. ">");
end;
saveXMLFile(xmlFile)
print(" File saved")
end;
function makeChildMapping(node, indexPath)
for i=0,(getNumOfChildren(node) - 1) do
local child = getChildAt(node,i);
local index = indexPath .. (i)
local name = getName(child)
if name ~= "null" and name ~= "" then
addMappingToXml(name,index)
end;
if getNumOfChildren(child) > 0 then
makeChildMapping(child, index .. "|");
end;
end;
end;
function addMappingToXml(name, index)
setXMLString(xmlFile, string.format("vehicle.i3dMappings.i3dMapping(%s)#id",mapIndex), name)
setXMLString(xmlFile, string.format("vehicle.i3dMappings.i3dMapping(%s)#node",mapIndex), index)
mapIndex = mapIndex + 1;
end;
print("i3dMapper (Export)")
local path = getSceneFilename();
path = string.gsub(path, "i3d", "xml")
path = string.gsub(path, "I3D", "xml")
if path ~= nil then
xmlFile = loadXMLFile("XML", path)
if hasXMLProperty(xmlFile, "vehicle") then
print(string.format(" Exporting i3dMappings to '%s'", path))
exportMappings()
else
print(string.format(" '%s' Not found or incorrect file", path))
end
end
print("i3dMapper (Export) finished")
i3dMapper_Import:
Vastaavanlainen kuin ylläoleva scripti. Toimii vain toiseen suuntaan. Eli nimeää i3d:n nodet i3dmappingsien pohjalta. Niille nodeille joille ei ole i3dmappingia määritetty, ei tehdä nimeen muutoksia.
-- Author: TeeKoo
-- Name: i3dMapperV2 (Import)
-- Description:Import i3dMappings
-- Icon:iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAUpJREFUOI3F0j9LW2EUBvBf/tS0kKEFN0URSgsBoeDioGNdBL9DNie/gmvo4KCjpXPWFoeOHUo/g4IQEVrS6QYxhJo21+Ge6Js/pWMPHO7heZ73ec859+V/RwkVvIgabjH4i/4Z6lHnyOAVrvAz8l0iSqMe3Fh3FWc10A/HUXTwZo5BI7hRZB+NciL4jR/RZgu1qVGXUQ7NnzGRGmQ4jE6WFbtJZ29hodCUsoKuTBjk0dYAK2gmXBMvg+t7uplb+sTS2YQBfEVbsbC3WAz8dWDt0DxEdcrgDjfRzS42cI1tdMPgl7zPsIPSjEGOE+xhDauR6zjHN9Q9WeP5PiozBvAdH3GA48BG+Kz4UxMxvQMY4kN8a4rN93Aa2D8NKB7MRYwER7icJyxHe4PI8YFrvE/wnsfHkyf4qIoOtsIoS8zb+BJ1N8Ez7MTlnXubFVuLM8YPtQAAAABJRU5ErkJgggAAAAAAgJQqJlACAIADAAAA8AAAAAAAAAAAAAAAAwAAAHcBAAAAAAAAAAAAAAMAAABEAAAAAAAAAAAAAAADAAAASwIAAAAAAAAAAAAAAwAAAMAAAAAAAAAAAAAAAAMAAAC4AAAAAAAAAAAAAAADAAAAvgAAAAAAAAAAAAAAAwAAAEAAAAAAAAAAAAAAAAMAAAB4AAAAAAAAAAAAAAADAAAA/AAAAAAAAAAAAAAAAwAAACoBAAAAAAAAAAAAAAMAAACjAgAAAAAAAAAAAAADAAAA0AEAAAAAAAAAAAAAAwAAAD4CAAAAAAAAAAAAAAMAAADAAQAAAAAAAAAAAAADAAAANgIAAAAAAAAAAAAAAwAAAJsBAAAAAAAAAAAAAAMAAACeAAAAAAAAAAAAAAADAAAAoAIAAAAAAAAAAAAAAwAAAJsBAAAAAAAAAAAAAAMAAACeAAAAAAAAAAAAAAADAAAAbgAAAAAAAAAAAAAAAwAAADwBAAAAAAAAAAAAAAMAAAC4AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACelEAmAAMAiDEAAAAQAAAAGAAAACAAAACAVY5WtAEAABBej1a0AQAAkGCPVrQBAACQYo9WtAEAALBYjla0AQAAEGCPVrQBAACwYo9WtAEAAHBfj1a0AQAAEGGPVrQBAADwXo9WtAEAAHBdj1a0AQAAsFuOVrQBAADQYI9WtAEAAJBfj1a0AQAAwFeOVrQBAAAQ6LRWtAEAALBhj1a0AQAAsGCPVrQBAADwX49WtAEAAJBej1a0AQAAUIe3VrQBAAAwYY9WtAEAAA==
-- Hide: no
local xmlFile = 0;
local totalChanges = 0;
function importMappings()
local found = true
local name = ""
local index = ""
local i = 0
local root = getChildAt(getRootNode(), 0)
while(true) do
found, name, index = getMappingFromXml(i)
if not found then break end;
i = i + 1
setNodeName(name, index, root)
end
end;
function setNodeName(name, index, node)
for ind in string.gmatch(index, "%d+") do
node = getChildAt(node, tonumber(ind))
end
local originName = getName(node)
if originName ~= name then
setName(node, name)
print(string.format(" Node '%s' renamed to '%s'", originName, name))
totalChanges = totalChanges + 1
end
end;
function getMappingFromXml(mapIndex)
if hasXMLProperty(xmlFile, string.format("vehicle.i3dMappings.i3dMapping(%d)", mapIndex)) then
local name = getXMLString(xmlFile, string.format("vehicle.i3dMappings.i3dMapping(%s)#id",mapIndex))
local index = getXMLString(xmlFile, string.format("vehicle.i3dMappings.i3dMapping(%s)#node",mapIndex))
return true, name, index
end
return false
end;
print("i3dMapper (Import)")
local path = getSceneFilename();
path = string.gsub(path, "i3d", "xml")
path = string.gsub(path, "I3D", "xml")
if path ~= nil then
xmlFile = loadXMLFile("XML", path)
if hasXMLProperty(xmlFile, "vehicle.i3dMappings") then
print(string.format(" Importing i3dMappings from '%s'", path))
importMappings()
else
print(string.format(" '%s' Not found or incorrect file", path))
end
end
print(string.format("i3dMapper (Import) finished, renamed %s nodes", totalChanges))