Files
wiki/dst/QScript/Lua/Imports.html
2023-09-25 15:04:24 +02:00

395 lines
14 KiB
HTML

<!DOCTYPE html>
<title>SourceBox Wiki</title>
<script>
documentlist = ['/wiki/index.html', '/wiki/QScript/Introduction.html', '/wiki/QScript/Private_Members.html', '/wiki/QScript/Contributing/Contributing.html', '/wiki/QScript/Contributing/API/qscript.html', '/wiki/QScript/Contributing/API/Structs/QCFunc.html', '/wiki/QScript/Contributing/API/Structs/QModuleDefFunc.html', '/wiki/QScript/Contributing/API/Structs/QReturn.html', '/wiki/QScript/Contributing/API/Structs/QScriptArgs.html', '/wiki/QScript/Contributing/API/Structs/QScriptCallback.html', '/wiki/QScript/Contributing/API/Structs/QScriptClass.html', '/wiki/QScript/Contributing/API/Structs/QScriptClassCreator.html', '/wiki/QScript/Contributing/API/Structs/QType.html', '/wiki/QScript/Contributing/API/Structs/QValue.html', '/wiki/QScript/Lua/Classes.html', '/wiki/QScript/Lua/Exports.html', '/wiki/QScript/Lua/Imports.html', '/wiki/QScript/Lua/Intro.html', '/wiki/QScript/Lua/Objects.html', '/wiki/QScript/Squirrel/Exports_And_Imports.html', '/wiki/QScript/Squirrel/Intro.html', '/wiki/QScript/Tutorial/Chapter1.html', '/wiki/QScript/Tutorial/Chapter2.html'];
namelist = ['Wiki Intro', 'QScript Intro', 'Private Members', 'Contributing', 'QScript API', 'QCFunc', 'QModuleDefFunc', 'QReturn', 'QScriptArgs', 'QScriptCallback', 'QScriptClass', 'QScriptClassCreator', 'QType', 'QValue', 'Lua Classes', 'Lua Exports', 'Lua Imports', 'Lua Intro', 'Lua Objects', 'Squirrel Exports and Imports', 'Squirrel Intro', 'QScript Tutorial Page 1: Mods', 'QScript Tutorial Page 2: Getting to work'];
function toggleTree(element)
{
nested = element.parentNode.childNodes[3];
if(nested.className.indexOf("active",0) != -1)
{
nested.className = "sidebar nested";
element.parentNode.childNodes[0].innerHTML = "+";
}
else
{
nested.className = "sidebar nested active";
element.parentNode.childNodes[0].innerHTML = "-";
}
if(element.className.indexOf("active",0) != -1)
{
element.className = "spanactive"
}
else
{
element.className = "spanactive active"
}
}
function Press(element)
{
if(element.className.indexOf("active",0) != -1)
{
element.className = "spanactive active"
}
else
{
element.className = "spanactive"
}
}
function unPress(element)
{
if(element.className.indexOf("active",0) != -1)
{
element.className = "active"
}
else
{
element.className = ""
}
}
function updateSearch()
{
searchtext = document.getElementById("searchbox").value.toLowerCase();
var res = [];
var searchresults = document.getElementById("searchresults")
searchresults.innerHTML = ""
if(searchtext === "")
{
document.getElementById("filetree").style.display = "block"
return;
}
else
{
document.getElementById("filetree").style.display = "none"
}
for (var i = 0; i < namelist.length; i++)
{
if(namelist[i].toLowerCase().indexOf(searchtext) == -1) continue;
var searchelement = document.createElement("li");
searchelement.className = "sidebar"
var link = document.createElement("a");
searchelement.appendChild(link);
link.setAttribute("href", documentlist[i]);
link.innerHTML = namelist[i];
searchresults.appendChild(searchelement);
}
}
</script>
<style>
hr
{
color: #463c2a;
}
pre code
{
margin-left:16px;
background-color: #473c29;
border-color: #3b3221;
border-style:solid;
border-width:1px;
padding: 4px;
display:flex;
}
code {
background-color: #00000040;
border-color: #00000040;
border-style:solid;
border-width:1px;
}
.nested
{
display: none;
}
ul.sidebar.active
{
display: block !important;
}
ul.sidebar
{
padding-left: 4px;
}
li.sidebar ::marker
{
color:#00000000;
display:none;
}
li.sidebar
{
list-style-type: none !important;
background-color:#4A3F2C;
border-bottom: #312A1D 1px solid;
border-right: #312A1D 1px solid;
border-left: 1px solid #8d8881;
border-top: 1px solid #8d8881;
padding-left: 2px;
padding-bottom:2px;
padding-top:2px;
margin-right:2px;
}
.buttoncontainer
{
-moz-user-select: none;
user-select: none;
-webkit-user-select: none;
z-index: 1;
cursor: pointer;
display: inline-block;
border: black 1px solid;
border-left-color: white;
border-top-color: white;
margin: 2px;
}
.buttoncontainer span
{
-moz-user-select: none;
user-select: none;
-webkit-user-select: none;
z-index: 0;
border: #463c2a 1px solid;
background-color: #63553b;
color: white;
border-left-color: #8d8881;
border-top-color: #8d8881;
margin: 0px;
padding-left: 4px;
padding-right: 4px;
}
.spanactive
{
border-left-color: black;
border-top-color: black;
border-right-color: white;
border-bottom-color: white;
}
.buttoncontainer .spanactive
{
border: #463c2a 1px solid;
border-right-color: #8d8881;
border-bottom-color: #8d8881;
}
.liicon
{
display:inline-block;
width:12px;
height:100%;
font-family: monospace;
font-size: 16px;
color: white;
}
nav
{
background-color: #63553b;
height: 100%;
}
a
{
border: #463c2a 1px solid;
background-color: #63553b;
color: white;
border-left-color: #8d8881;
border-top-color: #8d8881;
padding-left: 4px;
padding-right: 4px;
}
a:visited
{
border: #463c2a 1px solid;
background-color: #63553b;
color: white;
border-left-color: #8d8881;
border-top-color: #8d8881;
padding-left: 4px;
padding-right: 4px;
}
body
{
background-color: #63553b;
color:white;
font-family:"Tahoma", sans-serif;
font-size:9pt;
}
.searchbox
{
background-color: #473c29;
border: #403624 1px solid;
border-bottom-color: #837f7a;
border-right-color: #837f7a;
color: white;
padding: 0px;
width:196px;
height:16px;
position: relative;
}
input:focus {
outline: none;
}
.searchboxcontainer
{
background-color: #473c29;
border: black 1px solid;
border-bottom-color: white;
border-right-color: white;
position:relative;
margin-left:auto;
margin-right:auto;
height:18px;
width:198px;
display: inline-block;
}
.sidebarcontainer
{
float:right;
display:block;
top: -16px;
right: -8px;
margin-left: 8px;
width:200px;
border-color: black;
border-width: 1px;
border-style:solid;
position:relative;
overflow:auto;
}
table {
border: #403624 1px solid;
border-top-color: #837f7a;
border-left-color: #837f7a;
background-color: #564A33;
}
th, td {
border: #00000040 1px solid;
border-right-color: #837f7a;
border-bottom-color: #837f7a;
background-color: #00000020;
}
</style>
<div>
<div class="sidebarcontainer">
<span class="searchboxcontainer"><input type="text" placeholder="search..." autocomplete="off" id="searchbox" oninput="updateSearch();" class="searchbox"></span>
<nav>
<ul class="sidebar" id="searchresults">
</ul>
<ul class="sidebar" id="filetree">
<li class="sidebar"><a href="/wiki/index.html">Wiki Intro</a></li>
<li class="sidebar"><small class="liicon">-</small><span class="buttoncontainer" onmousedown="toggleTree(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);"><span onmousedown="Press(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);">QScript</span></span>
<ul class="sidebar nested active">
<li class="sidebar"><a href="/wiki/QScript/Introduction.html">QScript Intro</a></li>
<li class="sidebar"><a href="/wiki/QScript/Private_Members.html">Private Members</a></li>
<li class="sidebar"><small class="liicon">+</small><span class="buttoncontainer" onmousedown="toggleTree(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);"><span onmousedown="Press(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);">Contributing</span></span>
<ul class="sidebar nested">
<li class="sidebar"><a href="/wiki/QScript/Contributing/Contributing.html">Contributing</a></li>
<li class="sidebar"><small class="liicon">+</small><span class="buttoncontainer" onmousedown="toggleTree(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);"><span onmousedown="Press(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);">API</span></span>
<ul class="sidebar nested">
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/qscript.html">QScript API</a></li>
<li class="sidebar"><small class="liicon">+</small><span class="buttoncontainer" onmousedown="toggleTree(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);"><span onmousedown="Press(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);">Structs</span></span>
<ul class="sidebar nested">
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QCFunc.html">QCFunc</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QModuleDefFunc.html">QModuleDefFunc</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QReturn.html">QReturn</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QScriptArgs.html">QScriptArgs</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QScriptCallback.html">QScriptCallback</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QScriptClass.html">QScriptClass</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QScriptClassCreator.html">QScriptClassCreator</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QType.html">QType</a></li>
<li class="sidebar"><a href="/wiki/QScript/Contributing/API/Structs/QValue.html">QValue</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li class="sidebar"><small class="liicon">-</small><span class="buttoncontainer" onmousedown="toggleTree(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);"><span onmousedown="Press(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);">Lua</span></span>
<ul class="sidebar nested active">
<li class="sidebar"><a href="/wiki/QScript/Lua/Classes.html">Lua Classes</a></li>
<li class="sidebar"><a href="/wiki/QScript/Lua/Exports.html">Lua Exports</a></li>
<li class="sidebar"><b>Lua Imports</b></li>
<li class="sidebar"><a href="/wiki/QScript/Lua/Intro.html">Lua Intro</a></li>
<li class="sidebar"><a href="/wiki/QScript/Lua/Objects.html">Lua Objects</a></li>
</ul>
</li>
<li class="sidebar"><small class="liicon">+</small><span class="buttoncontainer" onmousedown="toggleTree(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);"><span onmousedown="Press(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);">Squirrel</span></span>
<ul class="sidebar nested">
<li class="sidebar"><a href="/wiki/QScript/Squirrel/Exports_And_Imports.html">Squirrel Exports and Imports</a></li>
<li class="sidebar"><a href="/wiki/QScript/Squirrel/Intro.html">Squirrel Intro</a></li>
</ul>
</li>
<li class="sidebar"><small class="liicon">+</small><span class="buttoncontainer" onmousedown="toggleTree(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);"><span onmousedown="Press(this);" onmouseleave="unPress(this);" onmouseup="unPress(this);">Tutorial</span></span>
<ul class="sidebar nested">
<li class="sidebar"><a href="/wiki/QScript/Tutorial/Chapter1.html">QScript Tutorial Page 1: Mods</a></li>
<li class="sidebar"><a href="/wiki/QScript/Tutorial/Chapter2.html">QScript Tutorial Page 2: Getting to work</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<h1>Lua Imports</h1>
<p>Now that you have exported some variables, something's gotta import them! As always, it is very simple to do.</p>
<p>Let's say that you have made a file called "MyLib.lua" inside a mod called "MyMod". These are the contents of it:</p>
<p><small style="position:relative; top:16px;">MyMod/MyLib.lua
```</small>
lua
function add(a,b)
return a + b
end</p>
<p><small style="position:relative; top:16px;">export(add)
```</small></p>
<p>Now you want to import it inside another file. You call the <code>import()</code> function with the file name of the thing you want to import. It will return a table containing all the exported variables.</p>
<div class="codehilite">
<pre><span></span><code><span class="n">MyLib</span> <span class="o">=</span> <span class="n">import</span><span class="p">(</span><span class="s2">&quot;MyMod/MyLib.lua&quot;</span><span class="p">)</span> <span class="c1">-- Import the library</span>
<span class="n">MyLib</span><span class="p">.</span><span class="n">add</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">7</span><span class="p">)</span> <span class="c1">-- Will return 12</span>
</code></pre>
</div>
<p>Importing works between other languages. So you don't need to worry about a library being written in a different language than you would like. (You could even use multiple languages in one project! Think about that!)</p>
<p>The reason why you can't use tables, is because objects, are actually shared! One script can modify it (like set a variable), and every other script will also see the change. Tables differ between languages, meaning that having to manually sync them between eachother would be a bad idea. Here, you only get a "reference" to the object. Meaning that every script sees the <em>same</em> object, not copies of it.</p>
<hr />
<p><a href="/wiki/QScript/Lua/Exports.html">&lt;- Prev</a> |
<a href="/wiki/QScript/Tutorial/Chapter1.html">Go back to the QScript Tutorial</a></p>
</div>