https://wiki.play.eco/en/api.php?action=feedcontributions&user=Demian&feedformat=atomEco - English Wiki - User contributions [en]2024-03-28T22:05:05ZUser contributionsMediaWiki 1.41.0https://wiki.play.eco/en/index.php?title=Module:CraftingRecipes/doc&diff=8636Module:CraftingRecipes/doc2022-07-14T08:25:14Z<p>Demian: /* Documentation */ Use "Data file module" template.</p>
<hr />
<div>==Documentation==<br />
{{Data file module}}<br />
<br />
The Module:CraftingRecipes is currently used in:<br />
*[[Module:Infobox_Item]], See [[Template:Infobox_Item]] for more details.<br />
*[[Module:GetRecipes]], See [[Template:GetRecipes]] for more details.<br />
*[[Module:FoodDetails]], See [[Template:FoodDetails]] for more details.</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Skills/doc&diff=8635Module:Skills/doc2022-07-14T08:24:48Z<p>Demian: /* Documentation */ Use "Data file module" template.</p>
<hr />
<div>==Documentation==<br />
{{Data file module}}<br />
<br />
The Module:Skills is currently used in:<br />
*[[Module:Infobox_Skill]], See [[Template:Infobox_Skill]] for more details.<br />
*[[Module:SkillDetails]], See [[Template:SkillDetails]] for more details.<br />
*[[Module:SkillList]], See [[Template:SkillList]] for more details.</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Error&diff=8598Template:Error2022-04-11T12:35:46Z<p>Demian: Copy template from Wikipedia.</p>
<hr />
<div>{{#invoke:Error|error|{{{message|{{{1}}}}}}|tag={{{tag|}}}}}<noinclude><br />
{{documentation}}<br />
</noinclude></div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Error&diff=8597Module:Error2022-04-11T12:35:10Z<p>Demian: Copy module from Wikipedia.</p>
<hr />
<div>-- This module implements {{error}}.<br />
<br />
local p = {}<br />
<br />
local function _error(args)<br />
local tag = mw.ustring.lower(tostring(args.tag))<br />
<br />
-- Work out what html tag we should use.<br />
if not (tag == 'p' or tag == 'span' or tag == 'div') then<br />
tag = 'strong'<br />
end<br />
<br />
-- Generate the html.<br />
return tostring(mw.html.create(tag)<br />
:addClass('error')<br />
:wikitext(tostring(args.message or args[1] or error('no message specified', 2)))<br />
)<br />
end<br />
<br />
function p.error(frame)<br />
local args<br />
if type(frame.args) == 'table' then<br />
-- We're being called via #invoke. The args are passed through to the module<br />
-- from the template page, so use the args that were passed into the template.<br />
args = frame.args<br />
else<br />
-- We're being called from another module or from the debug console, so assume<br />
-- the args are passed in directly.<br />
args = frame<br />
end<br />
-- if the message parameter is present but blank, change it to nil so that Lua will<br />
-- consider it false.<br />
if args.message == "" then<br />
args.message = nil<br />
end<br />
return _error(args)<br />
end<br />
<br />
return p</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Ambox/styles.css&diff=8596Template:Ambox/styles.css2022-04-11T12:30:39Z<p>Demian: Copy styles from Wikipedia.</p>
<hr />
<div>/* Article message box styles */<br />
table.ambox {<br />
margin: 0 10%; /* 10% = Will not overlap with other elements */<br />
border: 1px solid #a2a9b1;<br />
/* @noflip */<br />
border-left: 10px solid #36c; /* Default "notice" blue */<br />
background-color: #fbfbfb;<br />
box-sizing: border-box;<br />
}<br />
/* Take into account templatestyles between two amboxes */<br />
/* remove link version when T200206 is fixed */<br />
table.ambox + link + link + table.ambox,<br />
table.ambox + table.ambox { /* Single border between stacked boxes. */<br />
margin-top: -1px;<br />
}<br />
.ambox th.mbox-text,<br />
.ambox td.mbox-text { /* The message body cell(s) */<br />
padding: 0.25em 0.5em; /* 0.5em left/right */<br />
}<br />
.ambox td.mbox-image { /* The left image cell */<br />
/* @noflip */<br />
padding: 2px 0 2px 0.5em; /* 0.5em left, 0px right */<br />
}<br />
.ambox td.mbox-imageright { /* The right image cell */<br />
/* @noflip */<br />
padding: 2px 0.5em 2px 0; /* 0px left, 0.5em right */<br />
}<br />
<br />
table.ambox-notice {<br />
/* @noflip */<br />
border-left: 10px solid #36c; /* Blue */<br />
}<br />
table.ambox-speedy {<br />
/* @noflip */<br />
border-left: 10px solid #b32424; /* Red */<br />
background-color: #fee7e6; /* Pink */<br />
}<br />
table.ambox-delete {<br />
/* @noflip */<br />
border-left: 10px solid #b32424; /* Red */<br />
}<br />
table.ambox-content {<br />
/* @noflip */<br />
border-left: 10px solid #f28500; /* Orange */<br />
}<br />
table.ambox-style {<br />
/* @noflip */<br />
border-left: 10px solid #fc3; /* Yellow */<br />
}<br />
table.ambox-move {<br />
/* @noflip */<br />
border-left: 10px solid #9932cc; /* Purple */<br />
}<br />
table.ambox-protection {<br />
/* @noflip */<br />
border-left: 10px solid #a2a9b1; /* Gray-gold */<br />
}<br />
<br />
/* Style for compact ambox, as used inside multiple issues etc. */<br />
/* Hide the images */<br />
.compact-ambox table .mbox-image,<br />
.compact-ambox table .mbox-imageright,<br />
.compact-ambox table .mbox-empty-cell {<br />
display: none;<br />
}<br />
/* Remove borders, backgrounds, padding, etc. */<br />
.compact-ambox table.ambox {<br />
border: none;<br />
border-collapse: collapse;<br />
background-color: transparent;<br />
margin: 0 0 0 1.6em !important;<br />
padding: 0 !important;<br />
width: auto;<br />
display: block;<br />
}<br />
.compact-ambox table.mbox-small-left.mbox-small-left {<br />
font-size: 100%;<br />
width: auto;<br />
margin: 0;<br />
}<br />
/* Style the text cell as a list item and remove its padding */<br />
.compact-ambox table .mbox-text {<br />
padding: 0 !important;<br />
margin: 0 !important;<br />
}<br />
.compact-ambox table .mbox-text-span {<br />
display: list-item;<br />
line-height: 1.5em;<br />
list-style-type: square;<br />
/*list-style-image: url(/w/skins/MonoBook/resources/images/bullet.gif);*/<br />
}<br />
.skin-vector .compact-ambox table .mbox-text-span {<br />
list-style-type: disc;<br />
/*list-style-image: url(/w/skins/Vector/images/bullet-icon.svg);*/<br />
}<br />
/* Allow for hiding text in compact form */<br />
.compact-ambox .hide-when-compact {<br />
display: none;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=User:Demian/sandbox/Disambiguation_test&diff=8595User:Demian/sandbox/Disambiguation test2022-04-11T11:38:45Z<p>Demian: Created page with "<nowiki>__DISAMBIG__</nowiki> Hello world!"</p>
<hr />
<div><nowiki>__DISAMBIG__</nowiki><br />
<br />
Hello world!</div>Demianhttps://wiki.play.eco/en/index.php?title=Category:Pages_with_TemplateStyles_errors&diff=8594Category:Pages with TemplateStyles errors2022-04-11T11:28:58Z<p>Demian: Created page with "Pages with styling errors. See [https://www.mediawiki.org/wiki/Extension:TemplateStyles Extension:TemplateStyles]."</p>
<hr />
<div>Pages with styling errors. See [https://www.mediawiki.org/wiki/Extension:TemplateStyles Extension:TemplateStyles].</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Ombox&diff=8593Template:Ombox2022-04-11T11:26:35Z<p>Demian: Copy template from Wikipedia.</p>
<hr />
<div>{{#invoke:Message box|ombox}}<noinclude><br />
{{documentation}}<br />
<!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --><br />
</noinclude></div>Demianhttps://wiki.play.eco/en/index.php?title=Template:When_on_basepage&diff=8592Template:When on basepage2022-04-11T11:24:07Z<p>Demian: Copy template from Wikipedia.</p>
<hr />
<div>{{#switch:<br />
<!--If no or empty "page" parameter then detect<br />
basepage/subpage/subsubpage--><br />
{{#if:{{{page|}}}<br />
| {{#if:{{#titleparts:{{{page}}}|0|3}}<br />
| subsubpage <!--Subsubpage or lower--><br />
| {{#if:{{#titleparts:{{{page}}}|0|2}}<br />
| subpage<br />
| basepage<br />
}}<br />
}}<br />
| {{#if:{{#titleparts:{{FULLPAGENAME}}|0|3}}<br />
| subsubpage <!--Subsubpage or lower--><br />
| {{#if:{{#titleparts:{{FULLPAGENAME}}|0|2}}<br />
| subpage<br />
| basepage<br />
}}<br />
}}<br />
}}<br />
<br />
| basepage = {{{1|}}}<br />
| subpage = {{{2|}}}<br />
| subsubpage = {{{3| {{{2|}}} }}} <!--Respecting empty parameter on purpose--><br />
}}<!--End switch--><noinclude><br />
{{Documentation}}<br />
</noinclude></div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Convert_template&diff=8591Template:Convert template2022-04-11T11:22:56Z<p>Demian: Copy template from Wikipedia.</p>
<hr />
<div>{{ombox<br />
| type = move<br />
| text = This template should be converted to a standardized format using [[Template:{{{template|{{{1}}}}}}]]. <small>([[{{{discuss|{{{2|template talk:{{{template|{{{1}}}}}}}}}}}}|Talk]] • [[:{{#ifexist:Category:Templates to be standardized/{{{template|{{{1}}}}}}|Category:Templates to be standardized/{{{template|{{{1}}}}}}|Category:Templates to be standardized}}|Category]])</small>}}<includeonly>{{sandbox other||{{#ifeq:{{NAMESPACE}}|Template|[[{{#ifexist:Category:Templates to be standardized/{{{template|{{{1}}}}}}|Category:Templates to be standardized/{{{template|{{{1}}}}}}|Category:Templates to be standardized}}|{{PAGENAME}}]]}}}}</includeonly><noinclude><br />
{{Documentation}}<br />
</noinclude></div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Sidebar/styles.css&diff=8590Module:Sidebar/styles.css2022-04-11T11:20:53Z<p>Demian: Copy styles from Wikipedia Sidebar module.</p>
<hr />
<div>/* {{pp-template}} */<br />
/* TODO: Invert width design to be "mobile first" */<br />
.sidebar {<br />
/* TODO: Ask if we should have max-width 22em instead */<br />
width: 22em;<br />
/* @noflip */<br />
float: right;<br />
/* @noflip */<br />
clear: right;<br />
/* @noflip */<br />
margin: 0.5em 0 1em 1em;<br />
background: #f8f9fa;<br />
border: 1px solid #aaa;<br />
padding: 0.2em;<br />
text-align: center;<br />
line-height: 1.4em;<br />
font-size: 88%;<br />
border-collapse: collapse;<br />
/* Timeless has display: none on .nomobile at mobile resolutions, so we<br />
* unhide it with display: table and let precedence and proximity win.<br />
*/<br />
display: table; <br />
}<br />
<br />
/* Unfortunately, so does Minerva desktop, except Minerva drops an<br />
* !important on the declaration. So we have to be mean for Minerva users.<br />
* Mobile removes the element entirely with `wgMFRemovableClasses` in <br />
* https://github.com/wikimedia/operations-mediawiki-config/blob/master/<br />
wmf-config/InitialiseSettings.php#L16992<br />
* which is why displaying it categorically with display: table works.<br />
* We don't really want to expose the generic user in the wild on mobile to have<br />
* to deal with sidebars. (Maybe the ones with collapsible lists, so that<br />
* might be an improvement. That is blocked on [[:phab:T111565]].)<br />
*/<br />
body.skin-minerva .sidebar {<br />
display: table !important;<br />
/* also, minerva is way too aggressive about other stylings on tables.<br />
* TODO remove when this template gets moved to a div. plans on talk page.<br />
* We always float right on Minerva because that's a lot of extra CSS<br />
* otherwise. */<br />
float: right !important;<br />
margin: 0.5em 0 1em 1em !important;<br />
}<br />
<br />
.sidebar-subgroup {<br />
width: 100%;<br />
margin: 0;<br />
border-spacing: 0;<br />
}<br />
<br />
.sidebar-left {<br />
/* @noflip */<br />
float: left;<br />
/* @noflip */<br />
clear: left;<br />
/* @noflip */<br />
margin: 0.5em 1em 1em 0;<br />
}<br />
<br />
.sidebar-none {<br />
float: none;<br />
clear: both;<br />
/* @noflip */<br />
margin: 0.5em 1em 1em 0;<br />
}<br />
<br />
.sidebar-outer-title {<br />
padding: 0 0.4em 0.2em;<br />
font-size: 125%;<br />
line-height: 1.2em;<br />
font-weight: bold;<br />
}<br />
<br />
.sidebar-top-image {<br />
padding: 0.4em;<br />
}<br />
<br />
.sidebar-top-caption,<br />
.sidebar-pretitle-with-top-image,<br />
.sidebar-caption {<br />
padding: 0.2em 0.4em 0;<br />
line-height: 1.2em;<br />
}<br />
<br />
.sidebar-pretitle {<br />
padding: 0.4em 0.4em 0;<br />
line-height: 1.2em;<br />
}<br />
<br />
.sidebar-title,<br />
.sidebar-title-with-pretitle {<br />
padding: 0.2em 0.8em;<br />
font-size: 145%;<br />
line-height: 1.2em;<br />
}<br />
<br />
.sidebar-title-with-pretitle {<br />
padding: 0.1em 0.4em;<br />
}<br />
<br />
.sidebar-image {<br />
padding: 0.2em 0.4em 0.4em;<br />
}<br />
<br />
.sidebar-heading {<br />
padding: 0.1em 0.4em;<br />
}<br />
<br />
.sidebar-content {<br />
padding: 0 0.5em 0.4em;<br />
}<br />
<br />
.sidebar-content-with-subgroup {<br />
padding: 0.1em 0.4em 0.2em;<br />
}<br />
<br />
.sidebar-above,<br />
.sidebar-below {<br />
padding: 0.3em 0.8em;<br />
font-weight: bold;<br />
}<br />
<br />
.sidebar-collapse .sidebar-above,<br />
.sidebar-collapse .sidebar-below {<br />
border-top: 1px solid #aaa;<br />
border-bottom: 1px solid #aaa;<br />
}<br />
<br />
.sidebar-navbar {<br />
text-align: right;<br />
font-size: 115%;<br />
padding: 0 0.4em 0.4em;<br />
}<br />
<br />
.sidebar-list-title {<br />
padding: 0 0.4em;<br />
text-align: left;<br />
font-weight: bold;<br />
line-height: 1.6em;<br />
font-size: 105%;<br />
}<br />
<br />
/* centered text with mw-collapsible headers is finicky */<br />
.sidebar-list-title-c {<br />
padding: 0 0.4em;<br />
text-align: center;<br />
margin: 0 3.3em;<br />
}<br />
<br />
@media (max-width: 720px) {<br />
/* users have wide latitude to set arbitrary width and margin :(<br />
"Super-specific" selector to prevent overriding this appearance by<br />
lower level sidebars too */<br />
body.mediawiki .sidebar {<br />
width: 100% !important;<br />
clear: both;<br />
float: none !important; /* Remove when we div based; Minerva is dumb */<br />
margin-left: 0 !important;<br />
margin-right: 0 !important;<br />
}<br />
/* TODO: We might consider making all links wrap at small resolutions and then<br />
* only introduce nowrap at higher resolutions. Do when we invert the media<br />
* query.<br />
*/<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Convert_to_use_Navbox&diff=8589Template:Convert to use Navbox2022-04-11T11:16:38Z<p>Demian: Copy template from Wikipedia.</p>
<hr />
<div><includeonly>{{Convert template|Navbox}}{{#ifeq:{{NAMESPACE}}|{{ns:10}}|{{When on basepage|[[Category:Templates to be standardized/Navbox]]}}}}</includeonly><noinclude>{{documentation}}</noinclude></div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Main_other&diff=8588Template:Main other2022-04-11T11:00:54Z<p>Demian: Copy Main other template from Wikipedia.</p>
<hr />
<div>{{#switch:<br />
<!--If no or empty "demospace" parameter then detect namespace--><br />
{{#if:{{{demospace|}}} <br />
| {{lc: {{{demospace}}} }} <!--Use lower case "demospace"--><br />
| {{#ifeq:{{NAMESPACE}}|{{ns:0}}<br />
| main<br />
| other<br />
}} <br />
}}<br />
| main = {{{1|}}}<br />
| other<br />
| #default = {{{2|}}}<br />
}}<noinclude><br />
<br />
{{documentation}}<br />
<!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --><br />
</noinclude></div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Documentation/styles.css&diff=8587Module:Documentation/styles.css2022-04-11T10:55:31Z<p>Demian: Copy styles from Wikipedia Documentation module.</p>
<hr />
<div>/* {{pp|small=yes}} */<br />
.documentation,<br />
.documentation-metadata {<br />
border: 1px solid #a2a9b1;<br />
background-color: #ecfcf4;<br />
clear: both;<br />
}<br />
<br />
.documentation {<br />
margin: 1em 0 0 0;<br />
padding: 1em;<br />
}<br />
<br />
.documentation-metadata {<br />
margin: 0.2em 0; /* same margin left-right as .documentation */<br />
font-style: italic;<br />
padding: 0.4em 1em; /* same padding left-right as .documentation */<br />
}<br />
<br />
.documentation-startbox {<br />
padding-bottom: 3px;<br />
border-bottom: 1px solid #aaa;<br />
margin-bottom: 1ex;<br />
}<br />
<br />
.documentation-heading {<br />
font-weight: bold;<br />
font-size: 125%;<br />
}<br />
<br />
.documentation-clear { /* Don't want things to stick out where they shouldn't. */<br />
clear: both;<br />
}<br />
<br />
.documentation-toolbar {<br />
font-style: normal;<br />
font-size: 85%;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Message_box/configuration&diff=8586Module:Message box/configuration2022-04-11T10:51:40Z<p>Demian: Copy configuration from Wikipedia Message box module.</p>
<hr />
<div>--------------------------------------------------------------------------------<br />
-- Message box configuration --<br />
-- --<br />
-- This module contains configuration data for [[Module:Message box]]. --<br />
--------------------------------------------------------------------------------<br />
<br />
return {<br />
ambox = {<br />
types = {<br />
speedy = {<br />
class = 'ambox-speedy',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
delete = {<br />
class = 'ambox-delete',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
content = {<br />
class = 'ambox-content',<br />
image = 'Ambox important.svg'<br />
},<br />
style = {<br />
class = 'ambox-style',<br />
image = 'Edit-clear.svg'<br />
},<br />
move = {<br />
class = 'ambox-move',<br />
image = 'Merge-split-transwiki default.svg'<br />
},<br />
protection = {<br />
class = 'ambox-protection',<br />
image = 'Semi-protection-shackle-keyhole.svg'<br />
},<br />
notice = {<br />
class = 'ambox-notice',<br />
image = 'Information icon4.svg'<br />
}<br />
},<br />
default = 'notice',<br />
allowBlankParams = {'talk', 'sect', 'date', 'issue', 'fix', 'subst', 'hidden'},<br />
allowSmall = true,<br />
smallParam = 'left',<br />
smallClass = 'mbox-small-left',<br />
substCheck = true,<br />
classes = {'metadata', 'ambox'},<br />
imageEmptyCell = true,<br />
imageCheckBlank = true,<br />
imageSmallSize = '20x20px',<br />
imageCellDiv = true,<br />
useCollapsibleTextFields = true,<br />
imageRightNone = true,<br />
sectionDefault = 'article',<br />
allowMainspaceCategories = true,<br />
templateCategory = 'Article message templates',<br />
templateCategoryRequireName = true,<br />
templateErrorCategory = 'Article message templates with missing parameters',<br />
templateErrorParamsToCheck = {'issue', 'fix', 'subst'},<br />
removalNotice = '<small>[[Help:Maintenance template removal|Learn how and when to remove this template message]]</small>'<br />
},<br />
<br />
cmbox = {<br />
types = {<br />
speedy = {<br />
class = 'cmbox-speedy',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
delete = {<br />
class = 'cmbox-delete',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
content = {<br />
class = 'cmbox-content',<br />
image = 'Ambox important.svg'<br />
},<br />
style = {<br />
class = 'cmbox-style',<br />
image = 'Edit-clear.svg'<br />
},<br />
move = {<br />
class = 'cmbox-move',<br />
image = 'Merge-split-transwiki default.svg'<br />
},<br />
protection = {<br />
class = 'cmbox-protection',<br />
image = 'Semi-protection-shackle-keyhole.svg'<br />
},<br />
notice = {<br />
class = 'cmbox-notice',<br />
image = 'Information icon4.svg'<br />
}<br />
},<br />
default = 'notice',<br />
showInvalidTypeError = true,<br />
classes = {'cmbox'},<br />
imageEmptyCell = true<br />
},<br />
<br />
fmbox = {<br />
types = {<br />
warning = {<br />
class = 'fmbox-warning',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
editnotice = {<br />
class = 'fmbox-editnotice',<br />
image = 'Information icon4.svg'<br />
},<br />
system = {<br />
class = 'fmbox-system',<br />
image = 'Information icon4.svg'<br />
}<br />
},<br />
default = 'system',<br />
showInvalidTypeError = true,<br />
classes = {'fmbox'},<br />
imageEmptyCell = false,<br />
imageRightNone = false<br />
},<br />
<br />
imbox = {<br />
types = {<br />
speedy = {<br />
class = 'imbox-speedy',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
delete = {<br />
class = 'imbox-delete',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
content = {<br />
class = 'imbox-content',<br />
image = 'Ambox important.svg'<br />
},<br />
style = {<br />
class = 'imbox-style',<br />
image = 'Edit-clear.svg'<br />
},<br />
move = {<br />
class = 'imbox-move',<br />
image = 'Merge-split-transwiki default.svg'<br />
},<br />
protection = {<br />
class = 'imbox-protection',<br />
image = 'Semi-protection-shackle-keyhole.svg'<br />
},<br />
license = {<br />
class = 'imbox-license licensetpl',<br />
image = 'Imbox license.png' -- @todo We need an SVG version of this<br />
},<br />
featured = {<br />
class = 'imbox-featured',<br />
image = 'Cscr-featured.svg'<br />
},<br />
notice = {<br />
class = 'imbox-notice',<br />
image = 'Information icon4.svg'<br />
}<br />
},<br />
default = 'notice',<br />
showInvalidTypeError = true,<br />
classes = {'imbox'},<br />
imageEmptyCell = true,<br />
below = true,<br />
templateCategory = 'File message boxes'<br />
},<br />
<br />
ombox = {<br />
types = {<br />
speedy = {<br />
class = 'ombox-speedy',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
delete = {<br />
class = 'ombox-delete',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
content = {<br />
class = 'ombox-content',<br />
image = 'Ambox important.svg'<br />
},<br />
style = {<br />
class = 'ombox-style',<br />
image = 'Edit-clear.svg'<br />
},<br />
move = {<br />
class = 'ombox-move',<br />
image = 'Merge-split-transwiki default.svg'<br />
},<br />
protection = {<br />
class = 'ombox-protection',<br />
image = 'Semi-protection-shackle-keyhole.svg'<br />
},<br />
notice = {<br />
class = 'ombox-notice',<br />
image = 'Information icon4.svg'<br />
}<br />
},<br />
default = 'notice',<br />
showInvalidTypeError = true,<br />
classes = {'ombox'},<br />
allowSmall = true,<br />
imageEmptyCell = true,<br />
imageRightNone = true<br />
},<br />
<br />
tmbox = {<br />
types = {<br />
speedy = {<br />
class = 'tmbox-speedy',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
delete = {<br />
class = 'tmbox-delete',<br />
image = 'Ambox warning pn.svg'<br />
},<br />
content = {<br />
class = 'tmbox-content',<br />
image = 'Ambox important.svg'<br />
},<br />
style = {<br />
class = 'tmbox-style',<br />
image = 'Edit-clear.svg'<br />
},<br />
move = {<br />
class = 'tmbox-move',<br />
image = 'Merge-split-transwiki default.svg'<br />
},<br />
protection = {<br />
class = 'tmbox-protection',<br />
image = 'Semi-protection-shackle-keyhole.svg'<br />
},<br />
notice = {<br />
class = 'tmbox-notice',<br />
image = 'Information icon4.svg'<br />
}<br />
},<br />
default = 'notice',<br />
showInvalidTypeError = true,<br />
classes = {'tmbox'},<br />
allowSmall = true,<br />
imageRightNone = true,<br />
imageEmptyCell = true,<br />
imageEmptyCellStyle = true,<br />
templateCategory = 'Talk message boxes'<br />
}<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Sandbox/Demian/Hatnote/styles.css&diff=8585Module:Sandbox/Demian/Hatnote/styles.css2022-04-11T10:49:55Z<p>Demian: Copy styles from Wikipedia Hatnote module.</p>
<hr />
<div>/* {{pp|small=y}} */<br />
.hatnote {<br />
font-style: italic;<br />
}<br />
<br />
/* Limit structure CSS to divs because of [[Module:Hatnote inline]] */<br />
div.hatnote {<br />
/* @noflip */<br />
padding-left: 1.6em;<br />
margin-bottom: 0.5em;<br />
}<br />
<br />
.hatnote i {<br />
font-style: normal;<br />
}<br />
<br />
/* The templatestyles element inserts a link element before hatnotes.<br />
* TODO: Remove link if/when WMF resolves T200206 */<br />
.hatnote + link + .hatnote {<br />
margin-top: -0.5em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Template_Sandbox/Demian/StylesTest/styles.css&diff=8584Template:Template Sandbox/Demian/StylesTest/styles.css2022-04-11T10:46:02Z<p>Demian: </p>
<hr />
<div>div.my-style {<br />
width: 20em;<br />
height: 10em;<br />
background-color: green;<br />
}<br />
<br />
span.big-text {<br />
font-size: 2em;<br />
font-weight: bold;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Infobox_Animal/sandbox&diff=8583Module:Infobox Animal/sandbox2022-04-09T19:06:20Z<p>Demian: </p>
<hr />
<div>local p = {}<br />
local Utils = require("Module:Utils")<br />
local Unit = require("Module:Unit")<br />
local AnimalUtils = require("Module:UtilsAnimalTables")<br />
<br />
-- Build an Animal Infobox<br />
function animalBox( args, animalData )<br />
-- check that all necessary arguments are passed correctly<br />
assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')<br />
<br />
local animal = args.name<br />
local animalTable = animalData.animals[animal]<br />
<br />
--Check Passes<br />
assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))<br />
<br />
local animalEN = animalTable.untranslated<br />
local animalimagename = string.gsub(animalEN, ' ', '')<br />
<br />
local subheaderClass = '|- class=\"subheader\" \n'<br />
local wideColumnClass = 'class=\"value-column wide-column\"'<br />
<br />
-- string used to build the infobox<br />
local infobox = '{| class=\"infobox animal-infobox\"\n'<br />
-- name of the animal<br />
infobox = infobox .. '|- class=\"animal-name\"\n| colspan=\"2\" | ' .. animal .. '\n'<br />
<br />
-- Water, Flying or Land Animal<br />
if animalTable.isSwimming == 'Swimming' then<br />
infobox = infobox .. '|- class=\"animal-type swimming\"\n| colspan=\"2\" | Water Animal[[Category:Animals]]\n'<br />
elseif animalTable.isFlying == 'Flying' then<br />
infobox = infobox .. '|- class=\"animal-type flying\"\n| colspan=\"2\" | Flying Animal[[Category:Animals]]\n'<br />
else <br />
infobox = infobox .. '|- class=\"animal-type land\"\n| colspan=\"2\" | Land Animal[[Category:Animals]]\n' <br />
end <br />
<br />
-- Animals Icon Image<br />
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'<br />
if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then<br />
image = animalimagename .. '_Animal.png'<br />
elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then<br />
image = animalimagename .. '_Animal.jpg'<br />
end<br />
<br />
infobox = infobox .. '|- class=\"animal-image\"\n| colspan=\"2\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'<br />
<br />
-- 'General' section header<br />
infobox = infobox .. subheaderClass .. '| colspan=\"2\" | General\n'<br />
<br />
-- Health<br />
if animalTable.health ~= nil then<br />
infobox = infobox .. '|-\n| Health:\n|' .. animalTable.health .. '\n'<br />
end <br />
<br />
-- Idle Speed<br />
if animalTable.wanderingSpeed ~= nil then<br />
infobox = infobox .. '|-\n| Idle Speed:\n|' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Eats<br />
if animalTable.foodSources ~= nil then<br />
-- 12em seems to be enough for the other column to scale up to fill the remaining space.<br />
-- With this the longest line "Attack Damage:" fits on one line.<br />
infobox = infobox .. '|-\n| Eats:\n|' .. wideColumnClass .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'<br />
end <br />
<br />
-- Climbing<br />
if animalTable.climbHeight ~= nil then<br />
infobox = infobox .. '|-\n| Climb Height:\n|' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'<br />
end <br />
<br />
-- Carbon Released<br />
if animalTable.carbonRelease ~= nil then<br />
infobox = infobox .. '|-\n| Carbon Released:\n|' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'<br />
end <br />
<br />
-- 'Hunting Information' section header<br />
infobox = infobox .. subheaderClass .. '| colspan=\"2\" | Hunting\n' <br />
<br />
-- Harvest<br />
if animalTable.resourceItem ~= nil then<br />
infobox = infobox .. '|-\n| Harvest Item:\n|' .. animalTable.resourceItem .. '\n'<br />
end <br />
<br />
-- Flees<br />
infobox = infobox .. '|-\n| Flees:\n|' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'<br />
<br />
-- Animals Fear<br />
if animalTable.fearFactor ~= nil then<br />
infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. animalTable.fearFactor .. '\n'<br />
end<br />
<br />
-- Running Speed<br />
if animalTable.speed ~= nil then<br />
infobox = infobox .. '|-\n| Flee Speed:\n|' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Attack Chance<br />
if animalTable.chanceToAttack ~= nil then<br />
infobox = infobox .. '|-\n| Attack Chance:\n|' .. (animalTable.chanceToAttack * 100) .. ' % \n'<br />
end<br />
<br />
-- Attack Damage<br />
if animalTable.damage ~= nil then<br />
infobox = infobox .. '|-\n| Attack Damage:\n|' .. animalTable.damage .. '\n'<br />
end<br />
<br />
-- Detect Range<br />
if animalTable.detectRange ~= nil then<br />
infobox = infobox .. '|-\n| Detect Range:\n|' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'<br />
end<br />
<br />
-- Attack Range<br />
if animalTable.attackRange ~= nil then<br />
infobox = infobox .. '|-\n| Attack Range:\n|' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'<br />
end <br />
<br />
infobox = infobox .. '|}'<br />
<br />
return infobox<br />
end<br />
<br />
-- Main entry point for the Module<br />
function p.AnimalMain(frame)<br />
-- get args from the Template<br />
local args = Utils.normaliseArgs(frame)<br />
<br />
-- get animal data<br />
local animalData = require( 'Module:AnimalData' )<br />
<br />
return animalBox( args, animalData )<br />
end<br />
<br />
return p</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8582Template:Infobox Animal/sandbox/styles.css2022-04-09T19:03:08Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
/* Mixed in 10% Green Blue Crayola from the palette with the table background color. */<br />
background-color: #c3e2ec;<br />
}<br />
<br />
table.animal-infobox tr td:nth-of-type(2) {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox tr.animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-image td {<br />
padding: 0;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox tr.subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
font-weight: bolder;<br />
}<br />
<br />
table.animal-infobox td.value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox td.wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8581Template:Infobox Animal/sandbox/styles.css2022-04-09T18:21:00Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
/* Mixed in 10% Green Blue Crayola from the palette with the table background color. */<br />
background-color: #c3e2ec;<br />
}<br />
<br />
table.animal-infobox tr td:nth-of-type(2) {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox tr.animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-image {<br />
padding: 0;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox tr.subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
font-weight: bolder;<br />
}<br />
<br />
table.animal-infobox td.value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox td.wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Infobox_Animal/sandbox&diff=8580Module:Infobox Animal/sandbox2022-04-09T18:20:35Z<p>Demian: </p>
<hr />
<div>local p = {}<br />
local Utils = require("Module:Utils")<br />
local Unit = require("Module:Unit")<br />
local AnimalUtils = require("Module:UtilsAnimalTables")<br />
<br />
-- Build an Animal Infobox<br />
function animalBox( args, animalData )<br />
-- check that all necessary arguments are passed correctly<br />
assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')<br />
<br />
local animal = args.name<br />
local animalTable = animalData.animals[animal]<br />
<br />
--Check Passes<br />
assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))<br />
<br />
local animalEN = animalTable.untranslated<br />
local animalimagename = string.gsub(animalEN, ' ', '')<br />
<br />
local subheaderClass = 'class=\"subheader\"'<br />
local valueColumnClass = 'class=\"value-column\"'<br />
local wideColumnClass = 'class=\"value-column wide-column\"'<br />
<br />
-- string used to build the infobox<br />
local infobox = '{| class=\"infobox animal-infobox\"\n'<br />
-- name of the animal<br />
infobox = infobox .. '|- class=\"animal-name\"\n| colspan=\"2\" | ' .. animal .. '\n'<br />
<br />
-- Water, Flying or Land Animal<br />
if animalTable.isSwimming == 'Swimming' then<br />
infobox = infobox .. '|- class=\"animal-type swimming\"\n| colspan=\"2\" | Water Animal[[Category:Animals]]\n'<br />
elseif animalTable.isFlying == 'Flying' then<br />
infobox = infobox .. '|- class=\"animal-type flying\"\n| colspan=\"2\" | Flying Animal[[Category:Animals]]\n'<br />
else <br />
infobox = infobox .. '|- class=\"animal-type land\"\n| colspan=\"2\" | Land Animal[[Category:Animals]]\n' <br />
end <br />
<br />
-- Animals Icon Image<br />
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'<br />
if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then<br />
image = animalimagename .. '_Animal.png'<br />
elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then<br />
image = animalimagename .. '_Animal.jpg'<br />
end<br />
<br />
infobox = infobox .. '|- class=\"animal-image\"\n| colspan=\"2\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'<br />
<br />
-- 'General' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | General\n'<br />
<br />
-- Health<br />
if animalTable.health ~= nil then<br />
infobox = infobox .. '|-\n| Health:\n|' .. animalTable.health .. '\n'<br />
end <br />
<br />
-- Idle Speed<br />
if animalTable.wanderingSpeed ~= nil then<br />
infobox = infobox .. '|-\n| Idle Speed:\n|' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Eats<br />
if animalTable.foodSources ~= nil then<br />
-- 12em seems to be enough for the other column to scale up to fill the remaining space.<br />
-- With this the longest line "Attack Damage:" fits on one line.<br />
infobox = infobox .. '|-\n| Eats:\n|' .. wideColumnClass .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'<br />
end <br />
<br />
-- Climbing<br />
if animalTable.climbHeight ~= nil then<br />
infobox = infobox .. '|-\n| Climb Height:\n|' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'<br />
end <br />
<br />
-- Carbon Released<br />
if animalTable.carbonRelease ~= nil then<br />
infobox = infobox .. '|-\n| Carbon Released:\n|' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'<br />
end <br />
<br />
-- 'Hunting Information' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | Hunting\n' <br />
<br />
-- Harvest<br />
if animalTable.resourceItem ~= nil then<br />
infobox = infobox .. '|-\n| Harvest Item:\n|' .. animalTable.resourceItem .. '\n'<br />
end <br />
<br />
-- Flees<br />
infobox = infobox .. '|-\n| Flees:\n|' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'<br />
<br />
-- Animals Fear<br />
if animalTable.fearFactor ~= nil then<br />
infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. animalTable.fearFactor .. '\n'<br />
end<br />
<br />
-- Running Speed<br />
if animalTable.speed ~= nil then<br />
infobox = infobox .. '|-\n| Flee Speed:\n|' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Attack Chance<br />
if animalTable.chanceToAttack ~= nil then<br />
infobox = infobox .. '|-\n| Attack Chance:\n|' .. (animalTable.chanceToAttack * 100) .. ' % \n'<br />
end<br />
<br />
-- Attack Damage<br />
if animalTable.damage ~= nil then<br />
infobox = infobox .. '|-\n| Attack Damage:\n|' .. animalTable.damage .. '\n'<br />
end<br />
<br />
-- Detect Range<br />
if animalTable.detectRange ~= nil then<br />
infobox = infobox .. '|-\n| Detect Range:\n|' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'<br />
end<br />
<br />
-- Attack Range<br />
if animalTable.attackRange ~= nil then<br />
infobox = infobox .. '|-\n| Attack Range:\n|' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'<br />
end <br />
<br />
infobox = infobox .. '|}'<br />
<br />
return infobox<br />
end<br />
<br />
-- Main entry point for the Module<br />
function p.AnimalMain(frame)<br />
-- get args from the Template<br />
local args = Utils.normaliseArgs(frame)<br />
<br />
-- get animal data<br />
local animalData = require( 'Module:AnimalData' )<br />
<br />
return animalBox( args, animalData )<br />
end<br />
<br />
return p</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8579Template:Infobox Animal/sandbox/styles.css2022-04-09T17:43:03Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
/* Mixed in 10% Green Blue Crayola from the palette with the table background color. */<br />
background-color: #c3e2ec;<br />
}<br />
<br />
table.animal-infobox tr td:nth-of-type(2) {<br />
background: red;<br />
}<br />
<br />
table.animal-infobox tr.animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-image {<br />
padding: 0;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox tr.subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox td.value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox td.wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/doc&diff=8578Template:Infobox Animal/doc2022-04-09T17:23:42Z<p>Demian: Remove references to sandbox.</p>
<hr />
<div>{{doc/start}}<br />
This template can be used to grab details relevant to an [[Animals|animal]]. It formats the results into an [[:Category:Infobox Templates|infobox]]. [[Template:Infobox_Item]] will generate the following information, using the [[Module:Infobox Animal]], and [[Module:AnimalData]].<br />
<br />
== Usage==<br />
{{tlx|Infobox Animal|''name''}}<br />
<br />
=== Parameters ===<br />
; name<br />
: The name of an animal. This pulls the data for that animal from [[Module:AnimalData]]<br />
<br />
=== Infobox Properties ===<br />
If .name is found it will generate the following:<br />
<pre><br />
|name = The name of an item.<br />
More Information Coming Soon<br />
</pre><br />
<br />
== Examples ==<br />
{{Infobox Animal| name = Otter}}<br />
{{Infobox Animal| name = Wolf}}<br />
{{Infobox Animal| name = Bison}}<br />
{{doc/end}}<br />
<includeonly>[[Category:Infobox Templates]]</includeonly></div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8577Template:Infobox Animal/sandbox/styles.css2022-04-09T17:22:47Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
/* Mixed in 10% Green Blue Crayola from the palette with the table background color. */<br />
background-color: #c3e2ec;<br />
}<br />
<br />
table.animal-infobox tr.animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox tr.subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox td.value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox td.wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8576Template:Infobox Animal/sandbox/styles.css2022-04-09T17:22:20Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
/* Mixed in 10% Green Blue Crayola from the palette with the table background color. */<br />
background-color: #c3e2ec;<br />
}<br />
<br />
table.animal-infobox tr.animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type.flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox tr.subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox tr.wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Infobox_Animal/sandbox&diff=8575Module:Infobox Animal/sandbox2022-04-09T17:17:49Z<p>Demian: </p>
<hr />
<div>local p = {}<br />
local Utils = require("Module:Utils")<br />
local Unit = require("Module:Unit")<br />
local AnimalUtils = require("Module:UtilsAnimalTables")<br />
<br />
-- Build an Animal Infobox<br />
function animalBox( args, animalData )<br />
-- check that all necessary arguments are passed correctly<br />
assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')<br />
<br />
local animal = args.name<br />
local animalTable = animalData.animals[animal]<br />
<br />
--Check Passes<br />
assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))<br />
<br />
local animalEN = animalTable.untranslated<br />
local animalimagename = string.gsub(animalEN, ' ', '')<br />
<br />
local subheaderClass = 'class=\"subheader\"'<br />
local valueColumnClass = 'class=\"value-column\"'<br />
local wideColumnClass = 'class=\"value-column wide-column\"'<br />
<br />
-- string used to build the infobox<br />
local infobox = '{| class=\"infobox animal-infobox\"\n'<br />
-- name of the animal<br />
infobox = infobox .. '|- class=\"animal-name\"\n| colspan=\"2\" | ' .. animal .. '\n'<br />
<br />
-- Water, Flying or Land Animal<br />
if animalTable.isSwimming == 'Swimming' then<br />
infobox = infobox .. '|- class=\"animal-type swimming\"\n| colspan=\"2\" | Water Animal[[Category:Animals]]\n'<br />
elseif animalTable.isFlying == 'Flying' then<br />
infobox = infobox .. '|- class=\"animal-type flying\"\n| colspan=\"2\" | Flying Animal[[Category:Animals]]\n'<br />
else <br />
infobox = infobox .. '|- class=\"animal-type land\"\n| colspan=\"2\" | Land Animal[[Category:Animals]]\n' <br />
end <br />
<br />
-- Animals Icon Image<br />
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'<br />
if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then<br />
image = animalimagename .. '_Animal.png'<br />
elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then<br />
image = animalimagename .. '_Animal.jpg'<br />
end<br />
<br />
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding:0;\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'<br />
<br />
-- 'General' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'<br />
<br />
-- Health<br />
if animalTable.health ~= nil then<br />
infobox = infobox .. '|-\n| Health:\n|' .. valueColumnClass .. '| ' .. animalTable.health .. '\n'<br />
end <br />
<br />
-- Idle Speed<br />
if animalTable.wanderingSpeed ~= nil then<br />
infobox = infobox .. '|-\n| Idle Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Eats<br />
if animalTable.foodSources ~= nil then<br />
-- 12em seems to be enough for the other column to scale up to fill the remaining space.<br />
-- With this the longest line "Attack Damage:" fits on one line.<br />
infobox = infobox .. '|-\n| Eats:\n|' .. wideColumnClass .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'<br />
end <br />
<br />
-- Climbing<br />
if animalTable.climbHeight ~= nil then<br />
infobox = infobox .. '|-\n| Climb Height:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'<br />
end <br />
<br />
-- Carbon Released<br />
if animalTable.carbonRelease ~= nil then<br />
infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'<br />
end <br />
<br />
-- 'Hunting Information' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n' <br />
<br />
-- Harvest<br />
if animalTable.resourceItem ~= nil then<br />
infobox = infobox .. '|-\n| Harvest Item:\n|' .. valueColumnClass .. '| ' .. animalTable.resourceItem .. '\n'<br />
end <br />
<br />
-- Flees<br />
infobox = infobox .. '|-\n| Flees:\n|' .. valueColumnClass .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'<br />
<br />
-- Animals Fear<br />
if animalTable.fearFactor ~= nil then<br />
infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. valueColumnClass .. '| ' .. animalTable.fearFactor .. '\n'<br />
end<br />
<br />
-- Running Speed<br />
if animalTable.speed ~= nil then<br />
infobox = infobox .. '|-\n| Flee Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Attack Chance<br />
if animalTable.chanceToAttack ~= nil then<br />
infobox = infobox .. '|-\n| Attack Chance:\n|' .. valueColumnClass .. '| ' .. (animalTable.chanceToAttack*100) .. ' % \n'<br />
end<br />
<br />
-- Attack Damage<br />
if animalTable.damage ~= nil then<br />
infobox = infobox .. '|-\n| Attack Damage:\n|' .. valueColumnClass .. '| ' .. animalTable.damage .. '\n'<br />
end<br />
<br />
-- Detect Range<br />
if animalTable.detectRange ~= nil then<br />
infobox = infobox .. '|-\n| Detect Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'<br />
end<br />
<br />
-- Attack Range<br />
if animalTable.attackRange ~= nil then<br />
infobox = infobox .. '|-\n| Attack Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'<br />
end <br />
<br />
infobox = infobox .. '|}'<br />
<br />
return infobox<br />
end<br />
<br />
-- Main entry point for the Module<br />
function p.AnimalMain(frame)<br />
-- get args from the Template<br />
local args = Utils.normaliseArgs(frame)<br />
<br />
-- get animal data<br />
local animalData = require( 'Module:AnimalData' )<br />
<br />
return animalBox( args, animalData )<br />
end<br />
<br />
return p</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8574Template:Infobox Animal/sandbox/styles.css2022-04-09T17:15:02Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
/* Mixed in 10% Green Blue Crayola from the palette with the table background color. */<br />
background-color: #c3e2ec;<br />
}<br />
<br />
table.animal-infobox .animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox .animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox .subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox .value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox .wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Infobox_Animal/sandbox&diff=8573Module:Infobox Animal/sandbox2022-04-09T17:14:51Z<p>Demian: </p>
<hr />
<div>local p = {}<br />
local Utils = require("Module:Utils")<br />
local Unit = require("Module:Unit")<br />
local AnimalUtils = require("Module:UtilsAnimalTables")<br />
<br />
-- Build an Animal Infobox<br />
function animalBox( args, animalData )<br />
-- check that all necessary arguments are passed correctly<br />
assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')<br />
<br />
local animal = args.name<br />
local animalTable = animalData.animals[animal]<br />
<br />
--Check Passes<br />
assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))<br />
<br />
local animalEN = animalTable.untranslated<br />
local animalimagename = string.gsub(animalEN, ' ', '')<br />
<br />
-- string used to build the infobox<br />
local subheaderClass = 'class=\"subheader\"'<br />
local valueColumnClass = 'class=\"value-column\"'<br />
local wideColumnClass = 'class=\"value-column wide-column\"'<br />
<br />
local infobox = '{| class=\"infobox animal-infobox\"\n'<br />
-- name of the animal<br />
infobox = infobox .. '|- class=\"animal-name\"\n| colspan=\"2\" | ' .. animal .. '\n'<br />
<br />
-- Water, Flying or Land Animal<br />
if animalTable.isSwimming == 'Swimming' then<br />
infobox = infobox .. '|- class=\"animal-type swimming\"\n| colspan=\"2\" | Water Animal[[Category:Animals]]\n'<br />
elseif animalTable.isFlying == 'Flying' then<br />
infobox = infobox .. '|- class=\"animal-type flying\"\n| colspan=\"2\" | Flying Animal[[Category:Animals]]\n'<br />
else <br />
infobox = infobox .. '|- class=\"animal-type land\"\n| colspan=\"2\" | Land Animal[[Category:Animals]]\n' <br />
end <br />
<br />
-- Animals Icon Image<br />
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'<br />
if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then<br />
image = animalimagename .. '_Animal.png'<br />
elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then<br />
image = animalimagename .. '_Animal.jpg'<br />
end<br />
<br />
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding:0;\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'<br />
<br />
-- 'General' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'<br />
<br />
-- Health<br />
if animalTable.health ~= nil then<br />
infobox = infobox .. '|-\n| Health:\n|' .. valueColumnClass .. '| ' .. animalTable.health .. '\n'<br />
end <br />
<br />
-- Idle Speed<br />
if animalTable.wanderingSpeed ~= nil then<br />
infobox = infobox .. '| Idle Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Eats<br />
if animalTable.foodSources ~= nil then<br />
-- 12em seems to be enough for the other column to scale up to fill the remaining space.<br />
-- With this the longest line "Attack Damage:" fits on one line.<br />
infobox = infobox .. '|-\n| Eats:\n|' .. wideColumnClass .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'<br />
end <br />
<br />
-- Climbing<br />
if animalTable.climbHeight ~= nil then<br />
infobox = infobox .. '| Climb Height:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'<br />
end <br />
<br />
-- Carbon Released<br />
if animalTable.carbonRelease ~= nil then<br />
infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'<br />
end <br />
<br />
-- 'Hunting Information' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n' <br />
<br />
-- Harvest<br />
if animalTable.resourceItem ~= nil then<br />
infobox = infobox .. '|-\n| Harvest Item:\n|' .. valueColumnClass .. '| ' .. animalTable.resourceItem .. '\n'<br />
end <br />
<br />
-- Flees<br />
infobox = infobox .. '| Flees:\n|' .. valueColumnClass .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'<br />
<br />
-- Animals Fear<br />
if animalTable.fearFactor ~= nil then<br />
infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. valueColumnClass .. '| ' .. animalTable.fearFactor .. '\n'<br />
end<br />
<br />
-- Running Speed<br />
if animalTable.speed ~= nil then<br />
infobox = infobox .. '| Flee Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Attack Chance<br />
if animalTable.chanceToAttack ~= nil then<br />
infobox = infobox .. '|-\n| Attack Chance:\n|' .. valueColumnClass .. '| ' .. (animalTable.chanceToAttack*100) .. ' % \n'<br />
end<br />
<br />
-- Attack Damage<br />
if animalTable.damage ~= nil then<br />
infobox = infobox .. '| Attack Damage:\n|' .. valueColumnClass .. '| ' .. animalTable.damage .. '\n'<br />
end<br />
<br />
-- Detect Range<br />
if animalTable.detectRange ~= nil then<br />
infobox = infobox .. '|-\n| Detect Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'<br />
end<br />
<br />
-- Attack Range<br />
if animalTable.attackRange ~= nil then<br />
infobox = infobox .. '| Attack Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'<br />
end <br />
<br />
infobox = infobox .. '|}'<br />
<br />
return infobox<br />
end<br />
<br />
-- Main entry point for the Module<br />
function p.AnimalMain(frame)<br />
-- get args from the Template<br />
local args = Utils.normaliseArgs(frame)<br />
<br />
-- get animal data<br />
local animalData = require( 'Module:AnimalData' )<br />
<br />
return animalBox( args, animalData )<br />
end<br />
<br />
return p</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8572Template:Infobox Animal/sandbox/styles.css2022-04-09T17:02:59Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
background-color: red;<br />
}<br />
<br />
table.animal-infobox .animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox .animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox .subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox .value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox .wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8571Template:Infobox Animal/sandbox/styles.css2022-04-09T17:01:05Z<p>Demian: </p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
background-color: red;<br />
}<br />
<br />
table.animal-infobox .animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox .animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox .land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox .swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox .flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox .subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox .value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox .wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8570Template:Infobox Animal/sandbox/styles.css2022-04-09T17:00:38Z<p>Demian: </p>
<hr />
<div>table.animal-infobox .animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox .animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox .land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox .swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox .flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox .subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox .value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox .wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8569Template:Infobox Animal/sandbox/styles.css2022-04-09T16:57:32Z<p>Demian: </p>
<hr />
<div>table.animal-infobox .animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox .subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox .value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox .wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8568Template:Infobox Animal/sandbox/styles.css2022-04-09T16:54:52Z<p>Demian: Try out automatic alternate row coloring</p>
<hr />
<div>table.animal-infobox tr:nth-child(even) {<br />
background-color: red;<br />
}<br />
<br />
table.animal-infobox tr.animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox tr.subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox td.value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox td.wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Infobox_Animal/sandbox/styles.css&diff=8566Template:Infobox Animal/sandbox/styles.css2022-04-09T16:50:41Z<p>Demian: Created page with "table.animal-infobox tr.animal-name { color: #ffffff; font-size: larger; font-weight: bolder; text-align: center; background-color: #1165af; } table.animal-infobox tr.animal-type { color: #ffffff; font-weight: bolder; text-align: center; } table.animal-infobox tr.animal-type .land { background-color: #11af53; } table.animal-infobox tr.animal-type .swimming { background-color: #65a9e6; } table.animal-infobox tr.animal-type .flying { background-color: #e3bd2..."</p>
<hr />
<div>table.animal-infobox tr.animal-name {<br />
color: #ffffff;<br />
font-size: larger;<br />
font-weight: bolder;<br />
text-align: center;<br />
background-color: #1165af;<br />
}<br />
<br />
table.animal-infobox tr.animal-type {<br />
color: #ffffff;<br />
font-weight: bolder;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .land {<br />
background-color: #11af53;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .swimming {<br />
background-color: #65a9e6;<br />
}<br />
<br />
table.animal-infobox tr.animal-type .flying {<br />
background-color: #e3bd27;<br />
}<br />
<br />
table.animal-infobox tr.subheader {<br />
background-color: #4688c0;<br />
text-align: center;<br />
}<br />
<br />
table.animal-infobox td.value-column {<br />
text-align: right;<br />
padding: 0.2em;<br />
}<br />
<br />
table.animal-infobox td.wide-column {<br />
max-width: 12em;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Module:Infobox_Animal/sandbox&diff=8565Module:Infobox Animal/sandbox2022-04-09T16:50:09Z<p>Demian: Attempt to utilize CSS styles</p>
<hr />
<div>local p = {}<br />
local Utils = require("Module:Utils")<br />
local Unit = require("Module:Unit")<br />
local AnimalUtils = require("Module:UtilsAnimalTables")<br />
<br />
-- Build an Animal Infobox<br />
function animalBox( args, animalData )<br />
-- check that all necessary arguments are passed correctly<br />
assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')<br />
<br />
local animal = args.name<br />
local animalTable = animalData.animals[animal]<br />
<br />
--Check Passes<br />
assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))<br />
<br />
local animalEN = animalTable.untranslated<br />
local animalimagename = string.gsub(animalEN, ' ', '')<br />
<br />
-- string used to build the infobox<br />
local alternateRowColor = ' bgcolor=\"#c3e2ec\"' -- Mixed in 10% Green Blue Crayola from the palette with the table background color.<br />
local subheaderClass = 'class=\"subheader\"'<br />
local valueColumnClass = 'class=\"value-column\"'<br />
local wideColumnClass = 'class=\"value-column wide-column\"'<br />
<br />
local infobox = '{| class=\"infobox animal-infobox\"\n'<br />
-- name of the animal<br />
infobox = infobox .. '|- class=\"animal-name\"\n| colspan=\"2\" | ' .. animal .. '\n'<br />
<br />
-- Water, Flying or Land Animal<br />
if animalTable.isSwimming == 'Swimming' then<br />
infobox = infobox .. '|- class=\"animal-type swimming\"\n| colspan=\"2\" | Water Animal[[Category:Animals]]\n'<br />
elseif animalTable.isFlying == 'Flying' then<br />
infobox = infobox .. '|- class=\"animal-type flying\"\n| colspan=\"2\" | Flying Animal[[Category:Animals]]\n'<br />
else <br />
infobox = infobox .. '|- class=\"animal-type land\"\n| colspan=\"2\" | Land Animal[[Category:Animals]]\n' <br />
end <br />
<br />
-- Animals Icon Image<br />
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'<br />
if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then<br />
image = animalimagename .. '_Animal.png'<br />
elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then<br />
image = animalimagename .. '_Animal.jpg'<br />
end<br />
<br />
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding:0;\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'<br />
<br />
-- 'General' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'<br />
<br />
-- Health<br />
if animalTable.health ~= nil then<br />
infobox = infobox .. '|-\n| Health:\n|' .. valueColumnClass .. '| ' .. animalTable.health .. '\n'<br />
end <br />
<br />
-- Idle Speed<br />
if animalTable.wanderingSpeed ~= nil then<br />
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Idle Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Eats<br />
if animalTable.foodSources ~= nil then<br />
-- 12em seems to be enough for the other column to scale up to fill the remaining space.<br />
-- With this the longest line "Attack Damage:" fits on one line.<br />
infobox = infobox .. '|-\n| Eats:\n|' .. wideColumnClass .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'<br />
end <br />
<br />
-- Climbing<br />
if animalTable.climbHeight ~= nil then<br />
infobox = infobox .. '|--' .. alternateRowColor .. '\n| Climb Height:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'<br />
end <br />
<br />
-- Carbon Released<br />
if animalTable.carbonRelease ~= nil then<br />
infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'<br />
end <br />
<br />
-- 'Hunting Information' section header<br />
infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n' <br />
<br />
-- Harvest<br />
if animalTable.resourceItem ~= nil then<br />
infobox = infobox .. '|-\n| Harvest Item:\n|' .. valueColumnClass .. '| ' .. animalTable.resourceItem .. '\n'<br />
end <br />
<br />
-- Flees<br />
infobox = infobox .. '|--' .. alternateRowColor .. '\n| Flees:\n|' .. valueColumnClass .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'<br />
<br />
-- Animals Fear<br />
if animalTable.fearFactor ~= nil then<br />
infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. valueColumnClass .. '| ' .. animalTable.fearFactor .. '\n'<br />
end<br />
<br />
-- Running Speed<br />
if animalTable.speed ~= nil then<br />
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Flee Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'<br />
end <br />
<br />
-- Attack Chance<br />
if animalTable.chanceToAttack ~= nil then<br />
infobox = infobox .. '|-\n| Attack Chance:\n|' .. valueColumnClass .. '| ' .. (animalTable.chanceToAttack*100) .. ' % \n'<br />
end<br />
<br />
-- Attack Damage<br />
if animalTable.damage ~= nil then<br />
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Damage:\n|' .. valueColumnClass .. '| ' .. animalTable.damage .. '\n'<br />
end<br />
<br />
-- Detect Range<br />
if animalTable.detectRange ~= nil then<br />
infobox = infobox .. '|-\n| Detect Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'<br />
end<br />
<br />
-- Attack Range<br />
if animalTable.attackRange ~= nil then<br />
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'<br />
end <br />
<br />
infobox = infobox .. '|}'<br />
<br />
return infobox<br />
end<br />
<br />
-- Main entry point for the Module<br />
function p.AnimalMain(frame)<br />
-- get args from the Template<br />
local args = Utils.normaliseArgs(frame)<br />
<br />
-- get animal data<br />
local animalData = require( 'Module:AnimalData' )<br />
<br />
return animalBox( args, animalData )<br />
end<br />
<br />
return p</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Template_Sandbox/Demian/StylesTest/styles.css&diff=8564Template:Template Sandbox/Demian/StylesTest/styles.css2022-04-09T16:34:43Z<p>Demian: Created page with "div.my-style { width: 20em; height: 10em; background-color: orangered; } span.big-text { font-size: 2em; font-weight: bold; }"</p>
<hr />
<div>div.my-style {<br />
width: 20em;<br />
height: 10em;<br />
background-color: orangered;<br />
}<br />
<br />
span.big-text {<br />
font-size: 2em;<br />
font-weight: bold;<br />
}</div>Demianhttps://wiki.play.eco/en/index.php?title=Template:Template_Sandbox/Demian/StylesTest&diff=8563Template:Template Sandbox/Demian/StylesTest2022-04-09T16:34:02Z<p>Demian: Test TemplateStyles.</p>
<hr />
<div><templatestyles src="Template:Template Sandbox/Demian/StylesTest/styles.css" /><br />
Normal text.<br />
<div class="my-style">Boxed text with <span class="big-text">big text!</span></div></div>Demianhttps://wiki.play.eco/en/index.php?title=Mod_Development&diff=8443Mod Development2022-03-12T11:16:01Z<p>Demian: /* Other Resources */ Remove old link.</p>
<hr />
<div>NOTE: The modding system is under heavy development. APIs are expected to change, which may break existing mods! Feel free to update any information on this wiki that is out of date.<br />
<br />
To get started on developing mods, see [[Installing the ModKit]]. For some example mods, see the [https://github.com/StrangeLoopGames/EcoModKit EcoModKit] repository.<br />
== Documentation ==<br />
[[File:Eco Modkit Docs.png|link=https://docs.play.eco]]<br><br />
Documentation of the server and game client code is available at [https://docs.play.eco https://docs.play.eco]. This is updated when the game is released to the latest version.<br />
== Discord ==<br />
You can discuss mods and modding on the {{Eco Discord}}.<br />
<br />
We have multiple channels:<br />
* [https://discord.gg/HXNz478 #mod-ads] for advertising your own mods.<br />
* [https://discord.gg/jGmsQNb #mod-dev] for talk about the development of mods.<br />
* [https://discord.gg/4DgYJAC #mod-talk] for general talk about mods, such as what existing mods to use or how to make basic changes to the game.<br />
* [https://discord.gg/VDxVg3W #mod-help] for issues with mods.<br />
* [https://discord.gg/qvDPzGv #mod-tutorials] for links to tutorials.<br />
<br />
== Tools ==<br />
Strange Loop Games recommends using the latest versions of Visual Studio and Unity.<br />
* [https://visualstudio.microsoft.com/vs/older-downloads/ Visual Studio 2019]<br />
* [https://unity3d.com/get-unity/download/archive Unity 2019.4.15f1] for [[Versions#v9.2.4|Eco 9.2.4]]<br />
<br />
== Official Guides ==<br />
[[Installing the ModKit]]<br />
<youtube dimensions="400x240" description="Eco New Flag Mod, with animations and materials setup" container="frame">ESETpMIfHl4</youtube><br />
== Player Contributed Written Guides ==<br />
* [https://docs.google.com/document/d/1zQFcIxWZcPSZgc3PzbsXHj373Z_ndUW_Q7HfI3iFV5E/ FZM. Eco Mod Tutorial: Creating New Constructable Blocks]<br />
* [https://docs.google.com/document/d/1SGDqJoKlHYL16j94L5jISO8281w-uoKuQeAm9KcUOmY/ Eco Mod Tutorial: The Item Class]<br />
== Player Contributed Video Guides ==<br />
<youtube dimensions="400x240" description="Getting Setup To Make Mods In Eco" container="frame">VamhpTr-wG8</youtube><br />
<youtube dimensions="400x240" description="Making Your First Item In Eco" container="frame">By75wsj_R2o</youtube><br />
<youtube dimensions="400x240" description="Making Your First Item PT2 - World Objects (Unity)" container="frame">-4JcxeB27jU</youtube><br />
<youtube dimensions="400x240" description="Using Other Mods within Your Own Mod" container="frame">hu-Jsk67vdw</youtube><br />
== Other Resources ==<br />
* [https://github.com/StrangeLoopGames/EcoModKit Eco Modkit] (check Wiki tab for documentation)<br />
* [https://github.com/StrangeLoopGames/EcoModKit/wiki/Tutorial-Ceiling-Fan-Light Tutorial: Ceiling Fan Light]<br />
[[Category: Modding]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Installing_the_ModKit&diff=8440Installing the ModKit2022-03-10T18:14:15Z<p>Demian: /* Install the ModKit */ Minor stylistic tweaks.</p>
<hr />
<div><br />
== Get the ModKit ==<br />
# Go to https://play.eco/account and log in if necessary.<br />
# Click on "ModKit" in the downloads section.<br />
# Unzip the ModKit archive to a directory on your computer.<br />
<br />
== Install the ModKit ==<br />
# Check the <tt>ProjectVersion.txt</tt> file in the ModKit directory, you will need to install a version of [https://unity3d.com/get-unity/download/archive Unity] that matches the year and first number exactly, but matching or higher than the third number is OK.<br />
# Create a new Unity project, selected "3D" as the template.<br />
# Click on the "Assets" menu, then "Import Package", then "Custom Package...". Select <tt>EcoModKit.unitypackage</tt> in the ModKit folder and press "Open", then select "Import".<br />
# Select the "Window" menu, then click "Open Package Manager". If in the top left it says "In Project", click it and select "Unity Registry". Select "Collections" from the list and then click "Install" down the bottom right. <br />
## Unity 2019.x: If you don't see the "Collections" package then you will have to turn on "Preview packages". Look for the "Advanced" drop down button in the "Package manager" and check "Show preview packages".<br />
## Unity 2020.x: In this version of Unity some packages are hidden entirely. You can install the package by clicking on the "+" (add) button in the "Package Manager" windows and click "Add package from git URL". Next input <code>com.unity.collections</code> and click "Add".<br />
# You are now ready to go!<br />
[[Category: Modding]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Installing_the_ModKit&diff=8439Installing the ModKit2022-03-10T18:09:17Z<p>Demian: /* Get the ModKit */ Tweak wording and add link.</p>
<hr />
<div><br />
== Get the ModKit ==<br />
# Go to https://play.eco/account and log in if necessary.<br />
# Click on "ModKit" in the downloads section.<br />
# Unzip the ModKit archive to a directory on your computer.<br />
<br />
== Install the ModKit ==<br />
# Check the ProjectVersion.txt file in the ModKit folder, you will need a version that matches the year and first number exactly, but matching or higher than the third is ok.<br />
# Install Unity if necessary<br />
# Create a new Unity project, selected "3D" as the template.<br />
# Click on the "Assets" menu, then "Import Package", then "Custom Package...". Select EcoModKit.unitypackage in the ModKit folder and press "Open", then select "Import".<br />
# Select the "Window" menu, then click "Open Package Manager". If in the top left it says "In Project", click it and select "Unity Registry". Select "Collections" from the list and then click "Install" down the bottom right. <br />
## Unity 2019.x: If you don't see the "Collections" package then you will have to turn on "Preview packages". Look for the "Advanced" drop down button in the "Package manager" and check "Show preview packages".<br />
## Unity 2020.x: In this version of Unity some packages are hidden entirely. You can install the package by clicking on the add(plus) button in the "package manager" windows and click "Add package from git URL". Next input "com.unity.collections" and click add.<br />
# You are now ready to go!<br />
[[Category: Modding]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Scything&diff=8438Scything2022-03-09T19:03:23Z<p>Demian: Redirected page to Scythe</p>
<hr />
<div>#REDIRECT [[Scythe]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Server_Configuration&diff=8437Server Configuration2022-03-09T19:02:38Z<p>Demian: /* User Settings */ Use Key template.</p>
<hr />
<div>[[Server Configuration]] can be done either through the server GUI or by directly editing configuration files. The latter option is only recommended for advanced users. Many aspects of the world, items, and player settings can be changed in this way.<br />
<br />
''This configuration guide is based on player tests and crowd-sourcing. No information in this guide has been confirmed by [[SLG]].''<br />
== Basic server configuration ==<br />
[[File:ServerConfig_Example.jpg|300px|thumb|Setting a server's public status to "True" and adding a server description, both done in the Config tab of the Network plugin.]]<br />
The most common and important server configurations can be made through the server GUI. Each tab in the server window will have at least 1 sub-tab. Usually, there will be at least 2 sub-tabs: Display and Config. The Display tab shows relevant information and stats about that plugin (each tab represents a server plugin).<br />
<br />
Opening the Config tab in each plugin will present a list of options that can be changed through drop-down menus or collections (look for the arrow or breadcrumbs on the right) or direct data entry.<br />
=== Common configurations ===<br />
Below is a guide to the most commonly configured settings that can be changed through the server GUI.<br />
==== Server Listing Settings ====<br />
Network > Config<br />
===== Make server public/private =====<br />
* Public Server — Set to True to have the server listed in the Eco client [[server browser]]. <br />
===== Set playtime table =====<br />
* Playtime — This is automatically filled in if you created the server in the Eco client and made a [[Timetable]] (schedule of preferred playtimes). If this is blank, the best way to fill it in is to “Set Playtime” through the Game Menu ({{Key|Esc}}), and copy and paste the data from '''playtime.eco'''.<br />
** On Windows 10, this file will be found at Users > [username] > AppData > LocalLow > StrangeLoopGames > Eco. Adding a timetable helps the server show up more prominently in the server browser.<br />
*Playtime (Version 0.8.3.x) - You declare the playtime in the '''network.eco''' file. Here is an example:<br />
** <code>"Playtime": "110000011111111122222222 110000011111111122222222 110000011111111122222222 110000011111111122222222 111110011111111122222222 221110012222222222222222 221110012222222222222222",</code><br />
** 1=Sometimes, 2= Regular, 0=Rarely.<br />
** Each line here represents a day. Remove all spaces and linebreaks when adding it to the config. If it contains and spaces or linebreaks it will crash the server on startup.<br />
===== Set server Discord =====<br />
* Discord Address — Adding the unique ID of a Discord server (after the “discord.gg/”) will provide a link to the Discord server from the tutorial.<br />
===== Set server password =====<br />
* Password — Set a password for the server, or leave this blank to not require a password. Players on the whitelist will not have to enter a password.<br />
===== Set server name =====<br />
* Description — Sets the name of your server in the client server browser. [[Text markup]] can be used to add color or modify the appearance of the text.<br />
===== Set server description =====<br />
* DetailedDescription — Sets the long-form description of your server when people click on it in the server browser. Adding this description helps the server show up more prominently in the browser.<br />
===== Set server category =====<br />
* ServerCategory — Choose from 1 of 4 categories that will show up when players first click on “New Game” in the Eco client. Selecting a category makes it much more likely new players will join your server. Strings available for this option are:<br />
**None<br />
**Beginner<br />
**Established<br />
**BeginnerHard<br />
**Strange<br />
For more information, see the [[Server Browser]] page.<br />
==== Sleep Settings ====<br />
Sleep > Config<br />
* Allow Fast Forward — Enable or disable sleep. This defaults to “False” on public servers and “True” on local servers. Enabling sleep is not recommended on larger servers or public servers. Players can use this to accelerate voting for laws, and some things are not 100% simulated during sleep. Use it at your own risk.<br />
* Sleep Time Pass Multiplier — Maximum multiplier applied to time while sleeping<br />
* Time to Reach Maximum Time Rate — Time it takes to reach Sleep Time Pass Multiplier<br />
==== XP/Specialty Progression Speed ====<br />
Difficulty Settings > Config <br />
* Collaboration Preset — Change [[collaboration]] settings to adjust how quickly players gain skill points. Sticking with the collaboration presets is recommended.<br />
* Specialty Cost Multiplier — Adjusts the required amount of XP required to reach the next star using a multiplier based on the following baseline values 0, 20, 50, 100, 200, 400, 800, 1600 after the 8th each stars baseline is 1600).<br />
* Skill Gain Multiplier — Adjusts the rate of skill points gained over time from food and housing. <br />
* Specialty Experience Divisor — Reduces experience rate based on number of specialties learned. Has no effect as of [[Version#v0.8.0.1|Beta 8.0.1]].<br />
* Specialty Experience PerLevel — Experience required to level up each specialty tier.<br />
* Craft Resource Multiplier — Adjusts the amount of materials required to craft a recipe. ''Note: Effective maximum of 4.5 in vanilla game. Values higher than 4.5 cannot produce workstations from a single tent stockpile.''<br />
* Craft Time Multiplier — Adjusts the amount of time that a recipe takes to craft.<br />
* Player Experience per Specialty — Gives player XP for improving at your chosen field. ''Note: This is not recommended for public servers because it essentially means that those in front will generally get further in front.''<br />
* Unlearn Refund Rate — Obsolete as of [[Version#v0.8.0.0|Beta 8.0]]. Has no effect.<br />
* End Game Craft Cost — Includes two options, "Normal and "Expensive" which will alter the crafting costs for the [[Laser]] and [[Computer Lab]]. Does not affect work orders in process.<br />
==== Meteor Settings ====<br />
Disasters > Config<br />
* Create Meteor — Enable or disable meteor. Changing from True to False while world is running will destroy the meteor. Changing from False to True while world is running will have disastrous consequences. If you wish to enable the meteor, regenerate the world first.<br />
* Meteor Impact Days — Number of real-life days until meteor makes impact, counting from the date/time the server was first started. To time the meteor impact precisely decimal points seem to be allowed (thus allowing you to align the meteor impact to a desired hour/minute). Editing this setting may require server restart or regeneration to take effect.<br />
==== User Settings ====<br />
Users > Config<br />
* Require Authentication — True/False. Validates users with Eco servers. Set to True by default. False has unknown effects and is not recommended.<br />
* Allow Debug Calls — True/False. Allows debug calls to be made to the webserver. Unknown effect.<br />
* White List — Whitelist selected players. Enter each individual player ID. Press {{key|Enter}} between each ID.<br />
* Black List — Blacklist selected players. Enter each individual player ID. Press {{key|Enter}} between each ID.<br />
* Admins — Give selected players ''full'' admin rights. Enter each individual player ID. Press {{key|Enter}} between each ID. Having an admin online helps the server show up more prominently in the server browser.<br />
''Note:'' Whitelist, Blacklist, and Admins all use player IDs. Use the <code>/whois</code> [[command]] to see their ID. You will need to enter the proper ID when editing these lists manually. <br />
<br />
Use the SLG ID unless the user is a Steam-only user.<br />
{|class="wikitable"<br />
| SLG only account || use SLG ID<br />
|-<br />
| Steam only account || use STEAMID64<br />
|-<br />
| SLG + Steam linked account || use SLG ID<br />
|}<br />
You are able to use the player's name when running the corresponding commands from inside the game.<br />
* Reputations — Manage [[reputation]] tiers and change their titles (this can be fun on a themed server!).<br />
* Unstuck Disable Time — Sets (in seconds) the <code>/unstuck</code> cooldown to prevent exploits.<br />
* <code>AdminCommandsLoggingLevel</code> — Sets the level of logging that happens when an admin invokes admin [[command]]s. There are four different levels:<br />
** <code>None</code> — No logging and no notification is given.<br />
** <code>LogFile</code> — Log to file.<br />
** <code>LogFileAndNotifyAdmins</code> — Log to file and notifies the all admins connected to the server.<br />
** <code>LogFileAndNotifyEveryone</code> — Log to file and notifies the all users connected to the server.<br />
* <code>UseExactSpawnLocation</code> — Toggles rather exact spawn location should be used for new players, or if the spawn location should be automatically changed dynamically to where there is wild food to gather. Default set to false.<br />
<br />
==== World Generation Settings ====<br />
WorldGenerator > Config <br />
<br />
''Note:'' Settings that affect world size, shape, and contents will not take effect until the world is re-generated)<br />
===== Change World Seed =====<br />
* Seed — Change the randomly generated seed that the world generation is based off.<br />
''Note'': If you want to duplicate a world off of a seed, you need to match the WorldGenerator.eco settings for that world. This is easy if you just replace your WorldGenerator.eco with a copy of the file from the generated server (the file must have been unchanged since the server was generated). All the random values are generated off the seed, but within ranges defined by the config, so you need both if you want the same end result.<br />
===== Change World Size =====<br />
* Dimensions — Changes the size of the world. The X and Y values ''must'' be the same and divisible by 4. However, not all worlds with dimensions that follow these rules will be stable.<br />
NOTE: The server (EcoServer32.exe) that is bundled with the Eco game client can only run worlds up to 100x100. To run larger worlds, the server must be downloaded separately, through Steam or the SLG website.<br />
<br />
Below are the current recommendations for world sizes. Worlds built outside these recommendations may experience playability, performance, and stability issues that are outside the capabilities of SLG support staff:<br />
* (72,72) — {{unit|0.52|km2}} — This is the default size, recommended for singleplayer and coop games.<br />
* (100,100) — {{unit|1|km2}} — This is the maximum size the 32-bit Server (executed by Singleplayer) can handle and the recommended size for small public servers. (Used by official servers to create a challenge-focused experience, despite them being medium to large sized)<br />
* (140,140) — {{unit|1.96|km2}} — This is the recommended size for medium to large public servers.<br />
*(160,160) — {{unit|2.56|km2}} — The biggest size supported by Strange Loop Games, recommended for the biggest public servers out there. (Used by official server White-Tiger)<br />
<br />
<br />
The following world sizes are known to be stable on servers with an above average performance, but are not recommended to be used, given they will not allow any meaningful impact on Ecology. Strange Loop Games does not guarantee to provide support for worlds of this size.<br />
* (172,172) — {{unit|2.96|km2}}<br />
* (200,200) — {{unit|4|km2}}<br />
<br />
<br />
The following world sizes can be stable on servers and for clients that are both having strong to extremely strong performance, but are not recommended to be used, given they will not allow any meaningful impact on Ecology and are not suitable for the vast majority of use cases. Strange Loop Games does not provide support for worlds of these sizes and does not guarantee to take bug reports that involve worlds of these sizes.<br />
* (224,224) — {{unit|5.02|km2}}<br />
* (240,240) — {{unit|5.76|km2}}<br />
* (248,248) — {{unit|6.15|km2}}<br />
* (272,272) — {{unit|7.4|km2}}<br />
* (296,296) — {{unit|8.76|km2}}<br />
* (300,300) — {{unit|9|km2}}<br />
* (360,360) — {{unit|12.6|km2}}<br />
* (400,400) — {{unit|16|km2}}<br />
<br />
<br />
Worlds over 400x400 may be possible to generate without the server crashing, but are extremely likely to be unstable, even with the most performant hardware available on clients and the server. Strange Loop Games does generally not provide any support nor take bug reports for worlds with such sizes.<br />
===== Change World Shape =====<br />
* WaterLevel — Sea level height.<br />
* Height — Maximum height of terrain.<br />
===== Player Spawn Location =====<br />
* Spawn Location — Set new player spawn location coordinates. <br />
* Use Exact Spawn Location — Set to True to spawn players at exactly the same coordinates. Defaults to False, which spawns players in a flat area nearby.<br />
<br />
<br />
== Editing config files (advanced) ==<br />
Editing config files can allow for more detailed changes. You can alter world generation, potentially drastically, in many ways. Player starting items can be added or removed. Objects can be edited and have their storage space changed.<br />
=== Before you begin editing ===<br />
Before making any changes, make sure you create backups for each configuration file. You should save copies of your edited config files as well, because patches can overwrite your changes.<br />
<br />
To make changing the files easier, consider using an editor like Notepad++.<br />
<br />
When [[Updating a Server|updating]] a server, you will want to manually edit the new config files with all your edits, so make sure you document every config change. You can use a text comparison tool to find differences in configs if you are unsure about changes.<br />
<br />
Some changes require additional steps to take effect as intended:<br />
* Changes in the area of world generation require a complete restart of the world.<br />
* Changes in EcoSim.eco are accepted when the server is restarted. However, the new values will only occur in newly planted / grown plants and trees.<br />
* Changes in the full range of mods require the deletion of "Eco.Mods.dll" to take effect.<br />
<br />
<br />
''Note: This configuration guide is based on player tests and crowd-sourcing. No information in this guide has been confirmed by [[SLG]].''<br />
=== List of configuration files ===<br />
The standard configuration files are located in ''Eco\Eco_Data\Server\configs''<br />
<br />
Many of the settings found within these files can also be edited through the server GUI. Generally, each configuration file has a tab in the server GUI that corresponds to it. Clicking on each particular setting in the GUI will explain what the setting does at the bottom of the window. <br />
==== Backup.eco ====<br />
Controls whether to keep backup save files, and how often to create them. <br />
==== Difficulty.eco ====<br />
Many of these settings were made obsolete with [[Versions#v0.8.0.0|version 0.8.0.0]], but may remain in the config files. See also [[Server Configuration#EcoSim.eco|EcoSim.eco]] for the base skill gain rate.<br />
{| class="wikitable sortable mw-collapsible"<br />
|+<br />
!Setting<br />
!Default<br />
!Options<br />
!Description<br />
|-<br />
|<code>CollaborationPreset</code><br />
|<code>MediumCollaboration</code><br />
|<br />
* <code>NoCollaboration</code><br />
* <code>LowCollaboration</code><br />
* <code>MediumCollaboration</code><br />
* <code>HighCollaboration</code><br />
|Change [[collaboration]] settings to adjust how quickly players gain skill points.<br />
|-<br />
|<code>SpecialtyCostMultiplier</code><br />
|<code>1.0</code><br />
|<br />
|Lower = faster star progression.<br />
|-<br />
|<code>SkillGainMultiplier</code><br />
|<code>1.0</code><br />
|<br />
|Higher = quicker XP.<br />
|-<br />
|<code>SpecialtyExperiencePerLevel</code><br />
|<code>25.0</code><br />
|<br />
|Higher = longer.<br />
|-<br />
|<code>CraftResourceModifier</code><br />
|<code>1.0</code><br />
|<br />
|Modifies how many resources players need for crafting<br />
|-<br />
|<code>CraftTimeMultiplier</code><br />
|<code>1.0</code><br />
|<br />
|Modifies the crafting time<br />
|-<br />
|<code>PlayerExperiencePerSpecialtyExperience</code><br />
|<code>0.0</code><br />
|<br />
|<br />
|-<br />
|<code>EndgameCraftCost</code><br />
|<code>Normal</code><br />
|<br />
* <code>Normal</code><br />
* <code>Expensive</code><br />
|<br />
|}<br />
The following presets are available by default:<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
! No Collaboration (0-3 players) <br />
|-<br />
| Specialty Cost Multiplier || 0.1<br />
|-<br />
| Skill Gain Multiplier || 5<br />
|-<br />
| Specialty Experience Divisor || 20<br />
|-<br />
| Specialty Experience Per Level || 25<br />
|-<br />
| Unlearn Refund Rate || 0.5<br />
|-<br />
| Craft Resource Modifier || 0.5<br />
|-<br />
| Craft Time Multiplier || 0.5<br />
|-<br />
| Player Experience Per Specialty || 0<br />
|-<br />
| End Game Craft Cost || Normal<br />
|-<br />
|}<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
! Low Collaboration (3-10 players)<br />
|-<br />
| Specialty Cost Multiplier || 0.5<br />
|-<br />
| Skill Gain Multiplier || 2<br />
|-<br />
| Specialty Experience Divisor || 20<br />
|-<br />
| Specialty Experience Per Level || 25<br />
|-<br />
| Unlearn Refund Rate || 0.5<br />
|-<br />
| Craft Resource Modifier || 1<br />
|-<br />
| Craft Time Multiplier || 1<br />
|-<br />
| Player Experience Per Specialty || 0<br />
|-<br />
| End Game Craft Cost || Normal<br />
|-<br />
|}<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
! Medium Collaboration (10-30 players)<br />
|-<br />
| Specialty Cost Multiplier || 1<br />
|-<br />
| Skill Gain Multiplier || 1<br />
|-<br />
| Specialty Experience Divisor || 20<br />
|-<br />
| Specialty Experience Per Level || 25<br />
|-<br />
| Unlearn Refund Rate || 0.5<br />
|-<br />
| Craft Resource Modifier || 1<br />
|-<br />
| Craft Time Multiplier || 1<br />
|-<br />
| Player Experience Per Specialty || 0<br />
|-<br />
| End Game Craft Cost || Normal<br />
|-<br />
|}<br />
{| class="wikitable mw-collapsible mw-collapsed"<br />
! High Collaboration (30+ players)<br />
|-<br />
| Specialty Cost Multiplier || 2<br />
|-<br />
| Skill Gain Multiplier || 1<br />
|-<br />
| Specialty Experience Divisor || 20<br />
|-<br />
| Specialty Experience Per Level || 25<br />
|-<br />
| Unlearn Refund Rate || 0.5<br />
|-<br />
| Craft Resource Modifier || 1<br />
|-<br />
| Craft Time Multiplier || 1<br />
|-<br />
| Player Experience Per Specialty || 0<br />
|-<br />
| End Game Craft Cost || Expensive<br />
|-<br />
|}<br />
<br />
==== Disasters.eco ====<br />
File use to configure the meteor.<br />
{| class="wikitable sortable mw-collapsible"<br />
!Setting<br />
!Default<br />
!Options<br />
!Description<br />
|-<br />
|<code>CreateMeteor</code><br />
|<code>true</code><br />
|<br />
*<code>true</code><br />
* <code>false</code><br />
|Defines if there is a meteor or not.<br />
|-<br />
|<code>MeteorImpactDays</code><br />
|<code>30.0</code><br />
|<br />
|Number of days before meteor. Real time defined.<br />
|}<br />
*<br />
==== EcoSim.eco ====<br />
Contains settings for atmosphere, [[pollution]] rates (e.g. from [[tailings]]) and sea level rise, as well as [[biome]] definitions and simulation interactions like rainfall.<br />
<br />
Also sets configurations for the time multiplier, day & night length and the base skill gain rate.<br />
* <code>TimeMult</code> An optional multiplier to make game time (including crafting, simulations, etc.) run faster or slower. <br />
* <code>TimeOfDayScale</code> Adjusts the speed at which the day/night cycle runs, as a value of X seconds per real-world second. Does not affect simulation speed.<br />
* <code>BaseSkillGainRate</code> The default experience gain for all players, regardless of their other sources of experience points and difficulty settings.<br />
==== Localization.eco ====<br />
File use to configure language.<br />
* <code>Language</code> (default : "English") Defines the language.<br />
** <code>English</code> English<br />
** <code>French</code> Français<br />
==== ModKit.eco ====<br />
Controls mod loading.<br />
* <code>WhitelistEnabled</code> Whether to use a whitelist to select mods to load. If disabled, all listed mods will be loaded.<br />
* <code>Whitelist</code> Which mods to load when whitelist is enabled.<br />
* <code>LiveUpdateUnityFiles</code> Whether to check for unity file updates continuously, e.g. when switching mods around for testing.<br />
* <code>PreserveGeneratedModsAssembly</code> Controls if the Eco.Mods.dll assembly is saved on server start.<br />
==== Network.eco ====<br />
File use to configure networking.<br />
*<code>PublicServer</code> (default : false) Defines if other players can see server.<br />
*<code>Playtime</code> See [[#Set_playtime_table]].<br />
*<code>DiscordAddress</code> Invite link ID for a Discord server (the ID after the “discord.gg/”).<br />
*<code>Password</code> Defines if a server's password.<br />
*<code>Description</code> Defines the name of the server.<br />
*<code>DetailedDescription</code> Defines the server's description.<br />
*<code>ServerCategory</code> See [[#Set_server_category]].<br />
*<code>IPAddress</code> (default : Any) Internal server IP-address the server should bind to.<br />
*<code>RemoteAddress</code> (default : ) Public/external IP-address and port number needed to reach the server. Can be a domain name, but still has to have the external game server port. Examples <code>"10.1.1.1:3000/"</code>, <code>"gs2.play.eco:3000/"</code>.<br />
*<code>GameServerPort</code> (default : 3000) Port to join server.<br />
*<code>WebServerPort</code> (default : 3001) Web application port.<br />
*<code>WebServerUrl</code> (default : ) Public/external web sever URL. Examples <code>"<nowiki>http://10.1.1.1:3001</nowiki>"</code>, <code>"<nowiki>http://gs2.play.eco:3001</nowiki>"</code><br />
*<code>Rate</code> The network rate used to communicate between server and client.<br />
**A low rate will cause slow updates in the world.<br />
**A high rate will risk lost packets and thus desync, as the network protocol uses UDP connections which does not retransmit lost packets.<br />
**Actual meaning of this value is unknown.<br />
*<code>MaxConnections</code> (default : -1) Maximum number of concurrent players (-1 no limits).<br />
*<code>UPnPEnabled</code> (default : true) <br /><br />
==== Pause.eco ====<br />
* <code>Paused</code> Pauses the game world when true.<br />
* <code>UnpauseAtFirstLogin</code> Allows newly created worlds to be paused until someone joins them for the first time.<br />
==== Profanity.eco ====<br />
Contains a list of offensive words (including such offenders as 'commie' and 'shinola'), presumably for chat protection.<br />
==== Rooms.eco ====<br />
* <code>EmptyBlocksCountAsWindows</code> Disable to require window blocks for windows.<br />
* <code>WallBlocksPerWindow</code> Defines how many wall blocks are needed for each empty window or door block.<br />
==== Sleep.eco ====<br />
This file is used to configure the [[Sleep]] feature. It is default disabled for dedicated servers, and enabled for local servers.<br />
* <code>AllowFastForward</code> (default depends on server type) will allow players to use [[bed]]s to fast-forward time.<br />
* <code>SleepTimePassMultiplier</code> (defaulted to "500") defines the maximum fast-forward speed.<br />
* <code>TimeToReachMaximumTimeRate</code> (defaulted "10") defines how long the windup time is to reach that maximum fast-forward speed.<br />
==== Stats.eco ====<br />
Controls reading and writing statistics information to the stats database. Disabling these will cause issues with the web interface.<br />
==== Storage.eco ====<br />
File use to configure world's saves.<br />
*<code>SaveName</code> The name of the world<br />
*<code>SaveFrequency</code> (default : "60") Time between saves.<br />
*<code>CleanupFilesOnExceptions</code> (default : false) Defines if we clean files when exceptions occured.<br />
*<code>StorageDirectory</code> (default : "Storage") Defines the name of the directory where saves files is stored.<br />
==== Users.eco ====<br />
Contains user controls like whitelisted and blacklisted players, who has admin privileges and the various titles players get through reputation. Also contains settings for how food plants are spawned around new players when they first join. <br />
* <code>MaxRepFromOnePerson</code> The most positive reputation a player can receive from one other player.<br />
* <code>MinRepFromOnePerson</code> The most negative reputation a player can receive from one other player.<br />
* <code>WhiteList</code> Users who can enter the server without inputting a password.<br />
* <code>BlackList</code> Users who are denied entry to the server.<br />
* <code>Admins</code> Users with admin privileges, able to use admin commands.<br />
* <code>Reputations</code> A list of titles given to users with corresponding reputation levels, and the color of those titles in hexcode.<br />
* <code>UnStuckDisableTime</code> A cooldown for using the unstuck command, to prevent abuse.<br />
* <code>AdminCommandsLoggingLevel</code> — Sets the level of logging that happens when an admin invokes admin [[command]]s. There are four different levels:<br />
** <code>None</code> — No logging and no notification is given.<br />
** <code>LogFile</code> — Log to file.<br />
** <code>LogFileAndNotifyAdmins</code> — Log to file and notifies the all admins connected to the server.<br />
** <code>LogFileAndNotifyEveryone</code> — Log to file and notifies the all users connected to the server.<br />
*<code>UseExactSpawnLocation</code> See [[#User Settings|User Settings]].<br />
*<code>SpawnLocation</code> Where new players will be placed in the world. Written in X, Y and Z coordinates.<br />
<code>IgnoreVersionMismatch</code> Controls if clients with a different version to the server should be allowed to connect. Defaults to false, and is used for Debug purposes only as it will likely result in strange behaviour if changed.<br />
==== World.eco ====<br />
*<code>WorldTickCPUMax</code> Determines how much of any CPU core can be used by the server. Defaults to 25%, and should supposedly not be set higher than 75%.<br />
==== WorldGenerator.eco ====<br />
File use to configure world's generator. Settings here will only take effect when generating a new world. <br />
*<code>Seed</code> Determines the randomizer seed used for world generation. Two identical config files with the same seed will generate identical worlds. Identical config files with different seeds will generate similar (i.e. based on the same parameters) but different worlds.<br />
*<code>Dimensions</code> Both values must be equal, and must be multiples of 4 (or the server won't launch). Larger world will be more resistant to pollution and have more natural resources. These values correspond to tens of meters (not blocks), so the default 72x72 world is 720 meters in each direction, or {{unit|0.52|km2}}. See also [[Server Configuration#Change World Size]].<br />
*<code>WaterLevel</code> At which height level the water's surface is. Defaults to a multiple of 4. Other values (e.g. 62 instead of the default 60) will cause water to reach only partially up the side of blocks. If that is a problem is unknown.<br />
*<code>Height</code> The maximum world terrain elevation, probably.<br />
<br />
*<code>LandPercentageRange</code> an upper and lower bound for how much of the world can be made into landmass during world generation. Anything that isn't land will be made into ocean. Keep in mind that more land will mean more vegetation and animals, which may shift the difficulty of the game as these affect pollution outcomes and available resources.<br />
*<code>CoastlineSize</code> Size of land coast (beach)<br />
*<code>ShallowOceanSize</code> Unknown, may be related to how much shallow water surrounds landmasses.<br />
*<code>BiomePercent</code> How much of the landmass will be of a certain biome type, adjustable for each kind of biome (e.g. WarmForestPercent). Uses a decimal value rather than percentages in the config file. The sum of these values must add up to less than a hundred percent so that the remainder can be made into grasslands.<br />
*<code>NumContinentsRange</code> Determines how many continents may be created. Set max and min values to the same (e.g. 2) to ensure exactly that many continents are generated.<br />
*<code>ContinentAvoidRange</code> How far apart continents will be. Unknown what the values actually mean.<br />
*<code>IslandPercent</code> How much of the world (or remaining ocean, maybe) will be dotted with islands.<br />
*<code>NumSmallIslandsRange</code> Determines the number of islands. Combined with IslandPercent, determines the size and number of islands present.<br />
*<code>IslandAvoidRange</code> Determines how far from other landmasses islands will be generated. Unknown what the values actually mean.<br />
*<code>NumBiome</code> One setting for each type (e.g. NumRainforests, etc.), determining how many will be generated. Combine with BiomePercent to make, for example, many small or fewer large such biomes.<br />
*<code>LakeSizeRange</code> Range of how many blocks the lakes will take up.<br />
*<code>NumLakesRange</code> Range of how many lakes canspawn.<br />
*<code>NumRiversRange</code> Range of how many rivers can spawn.<br />
*<code>RiverAvoidance</code> Distance between the spawned rivers.<br />
*<code>RiverWidth</code> Width of the River in blocks.<br />
*<code>MaxElevationOceanDistance</code> Unknown.<br />
*<code>ElevationPower</code> Unknown.<br />
*<code>AutoScale</code> Unknown.<br />
*<code>AutoScaleExponent</code> Unknown.<br />
*<code>SaveTerrainImage</code> Creates a biomes.png image in the server folder after worldgen if set to true.<br />
==== WorldObjects.eco ====<br />
Controls world object tick (update) behavior. This may be connected to when world object check to see if their stats have changed, and thus update their appearance. <br />
<br />
For example, as of [[Versions#v0.8.0.0|0.8]], [[Fertilizers|fertilizing crops]] requires waiting for (or forcing) a tick update for the new soil statistics to show up when using a [[Soil Sampler|soil sampler]]. <br />
*<code>TargetTickDeltaTimeMS</code> Time between world object ticks, in milliseconds. Defaults to 0, which makes it variable. Appears to target a 10 minute interval when variable.<br />
*<code>ParallelWorldObjectTicks</code> An experimental feature that allows parallel (as opposed to sequential) world object ticks. May increase performance at the cost of stability.<br />
[[Category: Server management]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Server_on_Linux&diff=8436Server on Linux2022-03-09T19:02:03Z<p>Demian: /* Stopping the Server */ Use Key template.</p>
<hr />
<div>== Important Foreword ==<br />
First, a disclaimer: [[Strange Loop Games]] does provide a Linux server build, but they do not offer official support for it at this time. It is provided as a convenience, not a product.<br />
<br />
If you run into trouble or have a question, you can make inquiries in the #server-help channel in the {{Eco Discord}}, but keep in mind the information above.<br />
== Prerequisites ==<br />
=== Mono No More ===<br />
Prior to [[Version#v9.0.0|version 9.0]] of Eco, it was required that you run with a very old build (no later than 5.14) of the Mono development libraries, and use Mono to run the server. This is no longer the case. Install the latest Mono libraries with the commands:<br />
<syntaxhighlight lang="bash"><br />
sudo apt update<br />
sudo apt install libgdiplus<br />
</syntaxhighlight><br />
See [https://www.mono-project.com/docs/gui/libgdiplus/ libgdiplus] for more information.<br />
<br />
=== .NET Core Libraries ===<br />
Eco is now built with and is run leveraging [https://docs.microsoft.com/en-us/dotnet/core .NET Core], and runs as a native binary on Linux. You will have to [https://docs.microsoft.com/en-us/dotnet/core/install/linux install the .NET Core 3.1 libraries], repositories for which Microsoft makes available for several Linux distributions. Follow the directions on Microsoft's site for instructions for installing the libraries.<br />
<br />
== Eco Dedicated Server files ==<br />
There are two primary options for acquisition of the Eco dedicated server: getting it directly from Strange Loop Games, or through Valve Software's Steam platform.<br />
=== Steam Command-Line Client ===<br />
==== Getting SteamCMD ====<br />
The ECO Dedicated Server is made available through Valve Software's [https://steampowered.com Steam] distribution system, and Valve provides a command-line tool called [https://developer.valvesoftware.com/wiki/SteamCMD SteamCMD] to facilitate command-line installation of products in various environments, including Linux. Follow the directions on the foregoing link to get the SteamCMD program installed and configured on your system. You will ''not'' need SteamCMD if you are acquiring the Eco Dedicated Server directly from Strange Loop Games. <br />
==== Installing Eco with SteamCMD ====<br />
Presuming for the same of simplicity that you wish to install the Eco Dedicated Server into an <tt>Eco</tt> subdirectory of your home directory, a script such as the following will install and subsequently update the software for you:<br />
<syntaxhighlight lang="sh"><br />
#!/bin/bash<br />
steamcmd +force_install_dir ~/Eco +login anonymous +app_update 739590 -beta default validate +quit<br />
</syntaxhighlight><br />
=== SLG Direct Download ===<br />
An archive of the current release of the Eco Dedicated Server as of this writing (Beta 9.4.1) can be found [https://play.eco/s3/release/EcoServerLinux_v0.9.4.1-beta.zip here]. The following series of commands will download the archive, and set the Eco Dedicated Server up in an <tt>Eco</tt> subdirectory of your home directory, and save a copy of the install archive into a <tt>dist</tt> subdirectory of your home directory:<br />
<syntaxhighlight lang="sh"><br />
mkdir -p ~/Eco<br />
cd ~/Eco<br />
wget https://play.eco/s3/release/EcoServerLinux_v0.9.4.1-beta.zip<br />
unzip EcoServerLinux_v0.9.4.1-beta.zip<br />
mkdir -p ~/dist<br />
mv EcoServerLinux_v0.9.4.1-beta.zip ~/dist/<br />
</syntaxhighlight><br />
== Setting up the network ==<br />
=== Setting up firewalld on your server ===<br />
<syntaxhighlight lang="bash"><br />
firewall-cmd --zone=public --add-port=3000/tcp --permanent<br />
firewall-cmd --zone=public --add-port=3000/udp --permanent<br />
firewall-cmd --zone=public --add-port=3001/tcp --permanent<br />
<br />
systemctl restart firewalld<br />
</syntaxhighlight><br />
=== Forwarding your router ports ===<br />
To give other people access to your server you need to tell your router how to handle incoming request from certain ports that come from an external computer.<br />
<br />
On an Asus router you can find these settings under Wan -> Virtual Server / Port Forwarding. ( I censored my own setup to keep my server secure but this should give some idea). First of all you need to set a name (Service name). The next item is the port range, on my router I would write 3000:3001 to give it the right range. Next item is the local IP - this should be your server IP. Leave the local port blank.<br />
== Starting the Server ==<br />
Because the Eco Dedicated Server is now a native Linux binary, starting it could not be easier. Again, presuming it is installed in an <tt>Eco</tt> subdirectory of your home:<br />
<syntaxhighlight lang="shell"><br />
cd ~/Eco<br />
./EcoServer<br />
</syntaxhighlight><br />
== Systemd service script ==<br />
If you wish to set up a systemd service to have ECO run automatically, this will do the trick:<br />
<br />
Using your favorite editor (vi, nano etc.) edit /usr/lib/systemd/system/EcoServer.service and paste the following:<br />
<syntaxhighlight lang="shell"><br />
[Unit]<br />
Description=Eco Server<br />
[Service]<br />
Type=simple<br />
Restart=on-failure<br />
RestartSec=5<br />
StartLimitInterval=60s<br />
StartLimitBurst=3<br />
User=ecoserver<br />
Group=ecoserver<br />
Environment="DOTNET_BUNDLE_EXTRACT_BASE_DIR=%h/.net"<br />
#ExecStartPre=/home/ark/server/steamcmd +login [username] +force_install_dir /home/ecoserver/Eco_server/ +app_update 739590 +quit<br />
ExecStart=/bin/bash -c 'cd /home/ecoserver/Eco_server && exec /home/ecoserver/Eco_server/EcoServer'<br />
ExecStop=killall -TERM srcds_linux<br />
[Install]<br />
WantedBy=multi-user.target<br />
</syntaxhighlight><br />
ExecStartPre is commented out because I was not able to get it to work without user input due to Steam Guard.<br />
Then update the systemd service by running the following:<syntaxhighlight lang="shell"><br />
sudo systemctl daemon-reload<br />
</syntaxhighlight>Enable the Systemd service:<syntaxhighlight lang="shell"><br />
sudo systemctl enable EcoServer<br />
</syntaxhighlight>You can then optionally start, stop and check the status of the server with the following commands respectively:<syntaxhighlight lang="shell" line="1"><br />
sudo systemctl start EcoServer<br />
sudo systemctl stop EcoServer<br />
sudo systemctl status EcoServer<br />
</syntaxhighlight><br />
'''Debian/Ubuntu Version'''<br />
<syntaxhighlight lang="shell"><br />
[Unit]<br />
Description=Westwoods Eco<br />
Wants=network-online.target<br />
After=syslog.target network.target nss-lookup.target network-online.target<br />
<br />
[Service]<br />
Restart=on-failure<br />
RestartSec=5<br />
StartLimitInterval=60s<br />
User=eco<br />
Group=eco<br />
LimitNOFILE=100000<br />
ExecStartPre=/usr/games/steamcmd +login anonymous +force_install_dir /gamesservers/eco +app_update 739590 default validate +quit<br />
ExecStart=/bin/bash -c 'cd /gamesservers/eco && exec /gamesservers/eco/EcoServer'<br />
ExecReload=/bin/kill -s TERM $MAINPID<br />
ExecStop=/bin/kill -s TERM $MAINPID<br />
[Install]<br />
WantedBy=multi-user.target<br />
</syntaxhighlight><br />
== Stopping the Server ==<br />
To safely shut down the Eco server, send SIGINT or press {{key|Ctrl+C}} with the <tt>EcoServer</tt> process interactively to initiate a safe shutdown.<br />
<br />
Please not that this procedure doesn't work with Eco versions prior to 9.0.0-beta.<br />
<br />
==Docker==<br />
There is a Docker version of the server as well. You can pull the latest stable version using:<br />
<syntaxhighlight lang="shell"><br />
docker pull strangeloopgames/eco-game-server:latest<br />
</syntaxhighlight><br />
You can also find additional builds here:<br />
<br />
https://hub.docker.com/r/strangeloopgames/eco-game-server<br />
<br />
You will need to make sure that the Docker container is exposing the ports and map them to ports on the host that are open in the hosts firewall and router.<br />
==Troubleshooting==<br />
===Missing GDI library ===<br />
You may sometimes get a crash on an attempted initial startup with an error resembling the following:<br />
<syntaxhighlight lang="sh"><br />
Failed to load server, Exception was Exception: DllNotFoundException Message:Unable to load shared library 'libgdiplus' or one of its dependencies.<br />
</syntaxhighlight><br />
The solution to this error state is to simply install the missing library. On a Debian-derived host this can be done with:<br />
<syntaxhighlight lang="sh"><br />
sudo apt install libgdiplus<br />
</syntaxhighlight><br />
===Connecting remotely===<br />
You may find that your server does not show up in a list for people outside of your local network, even if you have set "PublicServer": true and have opened the appropriate ports in your router (and firewall if enabled on your linux machine).<br />
<br />
If this happens, try clicking on the "+" symbol in the "Your Worlds" area, then adding in the external IP and port you used (probably 3000). Unfortunately, https://www.yougetsignal.com/tools/open-ports/ does _not_ accurately reflect one's ability to connect to the server.</div>Demianhttps://wiki.play.eco/en/index.php?title=Crane&diff=8435Crane2022-03-09T19:01:30Z<p>Demian: /* Strategy */ Use Key template.</p>
<hr />
<div>{{Infobox_Item|name=Crane}}<br />
The [[Crane]] is an item added in Eco [[Versions#0.7.5.0|v0.7.5.0]] that allows for the quick building of floors, walls, or columns. <br />
It may also be used to transfer and sort large amounts of carried items between stockpiles, vehicles, and other inventories.<br />
<br />
It is fueled with [[Petroleum]], [[Gasoline]] or [[Biodiesel]].<br />
<br />
== Strategy ==<br />
<br />
To operate the Crane, target the upper part of the object and press {{key|E}}. Target the lower part of the Crane will open the info panel.<br />
<br />
The Crane has what is called a grabber at the end of the cable, which is what is used to collect (or grab) items from stockpiles, vehicles, or other inventories. Radial positioning of the grabber is done by raising or lowering the boom while lowering/raising the grabber to maintain the grabber's height.<br />
<br />
To interact with stockpiles, vehicles, and other inventories, position the grabber to be near (usually above) them. The inventory will be highlighted green and a tooltip will be shown to indicate you are able to interact with it. You can grab blocks and carried items from the inventory with the {{key|Left Mouse Button}}, or drop them in the inventory with the {{key|Right Mouse Button}}. The Crane will only pick up one type of block or carried item, which means it may be used to sort blocks/items in a stock yard (which is a collection of stockpiles).<br />
<br />
The Crane can also place blocks in a rectangle along a horizontal or vertical axis. Left-clicking once sets the first corner of placement, and the second click determines the opposite corner, similar to clicking and dragging a selection box. The size of the wall, floor, or column that can be created is only limited by the number of blocks the crane is carrying and the range of the crane. The first corner of placement must be near another solid block, but the second corner may be up in the air provided that you have enough blocks to build up to it. <br />
<br />
Since the boom cannot be extended or retracted, placement of the crane is crucial. The Crane only takes up a 1x1 footprint, so it can be fit into tight spaces, despite what its model may suggest. It may be advantageous to place the Crane significantly higher above the area it will be working in, to get a better view.<br />
<br />
The Crane consumes fuel whenever someone is occupying the driver's seat, even if the boom is not being moved.<br />
<br />
== Operating Instructions ==<br />
<br />
* '''Left-click''' — Collect blocks from [[Stockpile]] or [[vehicles|vehicle]] / Build with collected blocks<br />
* '''Right-click''' — Place blocks in Stockpile or vehicle<br />
* <code>W</code> — Lower boom<br />
* <code>S</code> — Raise boom<br />
* <code>A</code> — Rotate Crane left<br />
* <code>D</code> — Rotate Crane right<br />
* '''Mouse Wheel''' Raises/Lowers the grabber<br />
* <code>Shift</code> + '''Mouse Wheel''' — Change block form, if available<br />
* <code>E</code> — Enter/exit Crane<br />
<br />
<!-- IN-GAME DESCRIPTION: Do not add a header or quotation marks. --><br />
{{Description|item=Crane}}<br />
<br />
==Crafting==<br />
{{GetRecipes|item=Crane}}</div>Demianhttps://wiki.play.eco/en/index.php?title=Power_Tab&diff=8434Power Tab2022-03-09T19:00:39Z<p>Demian: Use Key template, formatting, grammar.</p>
<hr />
<div>[[Power Tab]] can be found at the top of the window when you press {{key|E}} facing any machine or [[crafting station]] that requires fuel. It displays the power requirements for the machine or [[crafting station]] to function properly.<br />
<br />
There are several forms of power that can be used, organised into different categories. One of the more common, especially earlier on, is fuel supply. Fuel supply requires a [[fuel source]] in order to function. In this category, the left-most slot represents fuel being used, where the two slots to the right represent the backlog of fuel to be burned. From the backlog, the left-most slot will be drawn from first. The backlog is shown in [[Linked Storage|linked storage]], which allows for the backlog to be the first store location for produced [[charcoal]].<br />
<br />
[[Mechanical Power|Mechanical power]] and the [[Electric Power|power grid]] are other categories within the power tab. They are generated with remote blocks specialized for generating mechanical energy and electricity respectively. [[Mechanical Power|Mechanical power]] and [[Electric Power|electrical power]] are discussed in more detail on their respective pages.<br />
<br />
[[File:powertab.png|400px]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Chat_Commands&diff=8433Chat Commands2022-03-09T18:58:42Z<p>Demian: /* Chat Commands 0.7.5.0 */ Use Key template.</p>
<hr />
<div>== Text Markup ==<br />
The appearance of text can be modified with certain HTML tags. These work on signs as well as in chat.<br />
* '''bold''' = <code><nowiki><b>bold</b></nowiki></code><br />
* ''italic'' = <code><nowiki><i>italic</i></nowiki></code><br />
* <u>underlined</u> = <code><nowiki><u>underlined</u></nowiki></code><br />
* <s>strikethrough</s> = <code><nowiki><s>strikethrough</s></nowiki></code><br />
* <span style="color: #FF0000">color</span><br />
**<code><nowiki><#FF0000>color</color></nowiki></code><br />
** <code><nowiki><color=red>color</color></nowiki></code><br />
** <code><nowiki><#FF000050>color</color></nowiki></code> (50% transparency. Last two digits are for opacity, 00-FF)<br />
* <sub>subscript</sub> = <code><nowiki><sub>subscript</sub></nowiki></code><br />
* <sup>superscript</sup> = <code><nowiki><sup>superscript</sup></nowiki></code><br />
* <code><nowiki><br></nowiki></code> — Line break (creates a new text line)<br />
* <code><nowiki><nobr>Long text</nobr></nowiki></code> — Force text to be shown on single line<br />
* <code><align=left>Alignment</align></code> — (can align "center", "left", or "right". Center is default)<br />
<br />
<br />
Icons can also be shown on a sign or in chat using the item ID. If the item ID capitalization is followed, the item icon will appear with a gradient background if it so has one. If the item, ID is entered in all lowercase, the item icon will remove the gradient background and only include a shadow effect. The first example below would display the icon for [[Stone]] with the gradient background and the second without the gradient background:<br />
* Gradient Background: <code><ecoicon item='StoneItem'></code><br />
<br />
* No Gradient Background: <code><ecoicon item='stoneitem'></code><br />
== Chat Commands 0.9.x ==<br />
{{ChatCommands}}<br />
== Chat Commands 0.7.5.0 ==<br />
[[Chat Commands|Chat commands]] can be activated through the chat log by pressing {{key|Enter}} (using default key layout).<br />
<br />
Use '''/help''' to see all chat commands available to you in-game.<br />
<br />
''Note: "[ ]" indicates a parameter is required. "( )" indicates a parameter is optional''<br />
=== Player Commands ===<br />
{| class="wikitable sortable mw-collapsible"<br />
! colspan="200" | Player Chat Commands<br />
|-<br />
!Command !!Description !!Usage !!Result !!Notes<br />
|-<br />
|/allaccounts ||Display all bank accounts in the game. || || ||<br />
|-<br />
|/angry ||Angry. || || ||<br />
|-<br />
|/authlevel ||Displays your authorization level || || ||Returns "User", "Admin", or "Developer".<br />
|-<br />
|/frown ||Frown. || || ||<br />
|-<br />
|/grin ||Grin. || || ||<br />
|-<br />
|/help ||Displays all the commands avaliable || || ||<br />
|-<br />
|/listadmins ||Displays a list of all administrators. || || ||<br />
|-<br />
|/mark (waypointname) ||Drops a waypoint at the current position. Accepts an optional text string for the waypoint. ||/mark<br>/mark Test Waypoint ||Creates unnamed waypoint<br>Creates waypoint called "Test Waypoint" ||Waypoint can be removed by clicking on it when viewing it in the world and clicking "Remove".<br />
|-<br />
|/players ||Returns a list of online players || || ||<br />
|-<br />
|/sim sealevel (/sea) ||Displays the current sea level and how much it has risen. || || ||<br />
|-<br />
|/smile ||Smile. || || ||<br />
|-<br />
|/testroom ||Check the current surroundings to see if it's a room, and if not explain why not. || || ||<br />
|-<br />
|/thirdperson ||Toggles Third Person Camera || || ||<br />
|-<br />
|/titlelist ||Lists all existing titles and info about them. || || ||<br />
|-<br />
|/unstuck ||Attempts to unstick your avatar || || ||<br />
|-<br />
|/util unstuckvehicle (/freecar) ||Attempts to unstick your vehicle || || || Command that should help when the vehicle for some reason turned around or got stuck. Added in 8.2.6.<br />
|-<br />
|/useractivity ||Displays a list of users and when they last logged in. || || ||<br />
|-<br />
|/whatami ||View your current skill title || || ||<br />
|-<br />
|/whoami ||Shows your user ID || || ||<br />
|-<br />
|/yawn ||Yawn || || ||<br />
|-<br />
|}<br />
=== Admin Commands ===<br />
If you wish to use admin or developer commands, you must be added as an admin on the server (User->Config->Admins in Windows GUI).<br />
<br />
The admin config list, blacklist, and whitelist all use player IDs. You will need to enter the proper ID when editing these lists manually. You are able to use the player's name when running the corresponding commands from inside the game.<br />
<br />
Many server changing admin commands are not saved between server restarts. To make them persist between server restarts, change the setting in the [[Server_Configuration|server config]] file.<br />
{|class="wikitable"<br />
| SLG only account || use SLG ID<br />
|-<br />
| Steam only account || use STEAMID64<br />
|-<br />
| SLG + Steam linked account || use SLG ID<br />
|}<br />
'''''<span style="color: red;">Warning! Some of the commands might not work as intended! Use all chat commands at your own risk, especially developer commands.</span>'''''<br />
{|class="wikitable sortable mw-collapsible"<br />
!colspan="200" | Admin Chat Commands<br />
|-<br />
! style="width:20%" | Command !! style="width:25%" | Description !! style="width:15%" | Usage !! style="width:15%" | Result !! style="width:25%" | Notes<br />
|-<br />
|/addtodeed||Adds you to the permissions on the deed||/addtodeed||You now have [[auth]] on the [[deed]] you are standing on||Use <code>/removefromdeed</code> to undo it<br />
|-<br />
|/admin [player]||Adds a user as an Admin||/admin Ecko||Gives Ecko admin rights on the server||<br />
|-<br />
|/allblocks||Spawns all blocks || || ||<br />
|-<br />
|/allconstructed||Spawns all player constructable blocks || || ||<br />
|-<br />
|/allplants||Spawns all plant blocks|| || ||<br />
|-<br />
|/allskills ||Unlocks all skills|| || ||The player will receive property claim flags too.<br />
|-<br />
|/allterrain ||Spawns all diggable blocks|| || ||<br />
|-<br />
|/allworldobjects ||Spawns all world objects|| || ||Spawns from the player's current position in a single line heading East.<br />
|-<br />
|/atm||Add atmosphere || || ||<br />
|-<br />
|/ban [player],(reason)||Bans a user||/ban Ecko<br>/ban Ecko,Breaking the rules.||Bans Ecko from the server.<br>Bans Ecko with the reason: "Breaking the rules."||Kicks the player if they are online when they are banned.<br />
|-<br />
|/bhop||Toggles bunny hopping || || ||<br />
|-<br />
|/buildtechtree||Builds every worldobject in an appropriate building and fills it with fuel|| || ||Takes a while to spawn.<br />
|-<br />
|/bunnytime|| || || ||Spawns 100 Hares<br />
|-<br />
|/chattest||Spam a bunch of stuff to chat|| || ||USE WITH CAUTION. This will create 5-10 chat channels and will continue to spam until server is next shutdown/restarted.<br />
|-<br />
|/claimrect || Claims plots in a given rect centered on the user. || || ||<br />
|-<br />
|/clearlaws ||Removes all active laws || || ||<br />
|-<br />
|/clearrubble (radius) ||Clears rubble around the player. ||/clearrubble<br>/clearrubble 10 || ||<br />
|-<br />
|/day||Set and lock the server time to noon|| || ||You can only reverse this by editing timeofdayscale in your server settings. This has a default value of 48.<br />
|-<br />
|/deletecontract [id] || Deletes contacts by id.|| || ||<br />
|-<br />
|/destroyedatmosphere || Set the percent of a destroyed atmosphere to display, blended to over a given number of seconds|| || ||<br />
|-<br />
|/digest || || || ||<br />
|-<br />
|/dump||Removes all items from your inventory.|| || ||<br />
|-<br />
|/dumpcarried||Removes only the items you are carrying in the carry slot.|| || ||<br />
|-<br />
|/dumpselected||Removes only the currently selected item in your inventory.|| || ||<br />
|-<br />
|/durability (#)||Set the durability of the item you are holding||/durability<br>/durability 500||Sets the item's durability to 1.<br>Sets the item's durability to 500.||Can be set over the item's usual maximum durability. Causes the durability bar to extend past it's usual max limit.<br />
|-<br />
|/eat||Max your calories|| || ||Does not affect nutrition.<br />
|-<br />
|/fastforward (1/0) || Turns the fast forward effect on or off. || /fastforward 1<br>/fastforward 0 || Starts fast forward.<br>Stops fast forward. || To enable sleeping in beds, you have to edit the [[Server_Configuration|server config]].<br />
|-<br />
|/fly||Toggles fly mode|| || ||Shift to move faster, can move through objects / ground.<br />
|-<br />
|/give [itemname],(amount)||Give yourself an item||/give Lumber<br>/give Lumber,10||Gives the player 1 lumber.<br>Gives the player 10 lumber.||Will not give the player anything that they couldn't hold normally. Won't exceed the player's carrying weight.<br />
|-<br />
|/giveskillpoints [player],(amount)||Give skillpoints to another player||/giveskillpoints Ecko<br>/giveskillpoints Ecko,100||Gives Ecko 10 skill points.<br>Gives Ecko 100 skill points."||<br />
|-<br />
|/kick [player],(reason)||Kicks a user||/kick Ecko<br>/kick Ecko,Breaking the rules||Kicks Ecko from the server.<br>Kicks Ecko with reason: "Breaking the rules."||Only works if the player is online.<br />
|-<br />
|/leader (player)||Set the leader||/leader<br>/leader Ecko||Elects the commanding player as leader.<br>Elects Ecko as leader.||The player will be awarded with the same items and powers as if they were elected normally.<br />
|-<br />
|/level [x(default=10)],[y(default=10)],[BlockType(default=GrassBlock)]||Level the terrain||/level<br>/level 50,50||Spawns an 11x11 plot of grass.<br>Spawns a 50x50 plot of grass.||Any terrain spawned will reach to the center of the world from whatever height the command was called.<br />
|-<br />
|/levelup || Learns and levels up a skill and all its prerequisites. || || ||<br />
|-<br />
|/massinteract||Uses your currently selected tool on surrounding blocks|| || ||<br />
|-<br />
|/meteor destroy ||Destroys the meteor in orbit.|| || ||<br />
|-<br />
|/meteorfall||Begin the meteor impact sequence|| || ||<br />
|-<br />
|/meteorhitworldlayers||Triggers world layers to act as if they were hit by a meteor|| || ||<br />
|-<br />
|/meteorimpact||Make the meteor strike instantly|| || ||<br />
|-<br />
|/meteorrain [count],[timeBetween],[radius]||Makes meteorites rain down the sky||/meteorrain<br>/meteorrain 20,3,10||Spawn only 1 meteorite<br>Spawn 20 meteorites with 3 seconds between each meteorite in a 10 blocks radius||<br />
|-<br />
|/move [x],[y],[z]||Moves you to position x, y, z; where xyz are integers.|| || ||<br />
|-<br />
|/noah (count)|| ||/noah<br>/noah 5||Spawns 1 of every animal.<br>Spawns 5 of every animal.||<br />
|-<br />
|/noskills||Resets all skills to zero|| || ||<br />
|-<br />
|/oneshot||Kills nearest animal|| || ||<br />
|-<br />
|/openserverui||Opens the server UI|| || ||Only works if the server is running in same directory as the client (e.g. single-player).<br />
|-<br />
|/ownall||Claim all property|| || ||<br />
|-<br />
|/ownnone (player)||Revoke your property||/ownnone<br>/ownnone Ecko||Revokes all of your property.<br>Gives all of your property to Ecko||USE WITH CAUTION. May crash server / kick player.<br />
|-<br />
|/passlaws||Pass all pending laws|| || ||<br />
|-<br />
|/polluteair ||Creates AIR POLLUTION MACHINES OF DOOM|| || ||<br />
|-<br />
|/polluteco2 ||Creates x PPM of air pollution|| || ||<br />
|-<br />
|/polluteworld ||Rains tailings from the heavens to ruin the world|| || ||<br />
|-<br />
|/poorbunnies||Kills all animals|| || ||USE WITH CAUTION. May crash server / kick player.<br />
|-<br />
|/record||Toggles record mode|| || ||Prevents animals from running from the player. Enables recording mode.<br />
|-<br />
|/regenlayer || Regenerates a world layer, restoring it to the state it would be in if the world were newly generated|| || ||<br />
|-<br />
|/remove [BlockType], (x), (y), (z)<br />
|Removes the given block type from the area relative to the player<br />
|/remove DirtBlock, 100, 100, 100<br />
|Removes Dirt from a 100-block cube<br />
|Can use "soil" as BlockType to remove Dirt, Sand, etc. together.<br />
|-<br />
|/removeadmin [player]||Removes a user as an Admin||/removeadmin Ecko||Takes away Ecko's admin status||<br />
|-<br />
|/removefromdeed||Removes you from the permissions on the deed||/removefromdeed||You no longer have [[auth]] on the [[deed]] you are standing on||Opposite of <code>/addtodeed</code><br />
|-<br />
|/repairallrooms||Reinitialize all rooms that have broken and don't contribute to the housing score.|| || ||<br />
|-<br />
|/repopulate||Regenerates eco population|| || ||<br />
|-<br />
|/setpowercost||Reduces power consumption of all existing objects within a given radius to passed value (defaults zero).|| || ||<br />
|-<br />
|/setreputation [player],(reputation)||A command to set the user's reputation||/setreputation Ecko<br>/setreputation Ecko,10||Sets Ecko's reputation to 0.<br>Sets Ecko's reputation to 10.||<br />
|-<br />
|/setreputationrelative [target player],[source player],(reputation)||Set the user's reputation relative to another|| || ||<br />
|-<br />
|/setspawn||Changes the spawn location you your current location|| || ||The spawn location set by this command is not saved between server restarts. To make it persist between server restarts, change the spawn location in the [[Server_Configuration|server config]] file.<br />
|-<br />
|/shuffle (x),(y)|| || || ||<br />
|-<br />
|/skillpoints (amount)||Give yourself skill points||/skillpoints<br>/skillpoints 50||Gives the commanding player 10,000 skill points.<br>Gives the commanding player 50 skill points.||<br />
|-<br />
|/skillrate (rate)||Displays or sets the current skill rate multiplier||/skillrate<br>/skillrate 2||Displays the current skill rate.<br>Chnages the current skill rate to 2.||Announces changed skill rate to everyone on the server.<br />
|-<br />
|/spawnanimal (species),(count)||Spawns a number of animals||/spawnanimal<br>/spawnanimal Wolf<br>/spawnanimal Elk,10||Spawn a Hare.<br>Spawns a Wolf.<br>Spawns 10 Elk.||<br />
|-<br />
|/spawnbed || Spawns a bed in a house and puts you to sleep. || || ||<br />
|-<br />
|/spawnbuilding (building type(0-5)),(x),(y),(z),(roof type(0-2)),(windows(true-false))||Spawns a building|| /spawnbuilding 4,10,5,10,1,1<br />
| Spawns a Corrugated steel building 10 wide, 5 high, 10 long, flat roof, with windows <br />
|For building type: 0=[[log]], 1=[[Mortared Stone|mortared stone]], 2=[[lumber]], 3=[[brick]], 4=[[Corrugated Steel|corrugated steel]], 5=[[concrete]]. For rooftype: 0=block roof, 1=flat roof, 2=pointed roof. For windows: 0=no windows, 1=windows<br />
|-<br />
|/spawncrafting || Creates a craft setup where output from one thing is input to another. || || ||<br />
|-<br />
|/spawncrater ||Create a crater at the current position|| || ||<br />
|-<br />
|/spawneconomy||Attempts to build an economy|| || ||USE WITH CAUTION. May crash server / kick player.<br />
|-<br />
|/spawnfullstockpile||Generate a full stockpile|| || ||<br />
|-<br />
|/spawnlasers||Spawns the end-game lasers and power supplies, and drops thier power needs.|| || ||<br />
|-<br />
|/meteor spawn||Spawns a meteor into orbit, regardless of current disaster settings.|| || ||<br />
|-<br />
|/spawnplant (species),(count)||Spawns a plant or plants in a row with increasing ages||/spawnplant<br>/spawnplant Tomato<br>/spawnplant Beet,10||Spawns a Birch tree.<br>Spawns a Tomato plant.<br>Spawns 10 Beet plants.||<br />
|-<br />
|/spawnroad (length), (width), (road type)||Spawns a road|| || ||Road type Dirt by default only use length for Dirt Road, 1=Stone, 2=Concrete. will spawn up hill ramps, does not spawn downhill, only single block drop.<br />
|-<br />
|/spawntech (tech level 1-4)|| Spawns 4 buildings and road<br />
| /spawntech 1<br />
| Spawns a road and four log buildings with crafting stations ([[Workbench]], [[Research Table]], [[Wainwright Table]] and [[Carpentry Table]]) in them. Also gives all players 200 Skill Points.<br />
|Tech level changes by building type. 1=wood, 2=Brick, 3=CRASHS GAME 4=Steel<br />
|-<br />
|/spawnvillage [building type(0-5)],[quantity]||Spawns a village|| /spawnvillage 2,3<br />
|spawns 3 lumber buildings ||For building type: 0=[[log]], 1=[[Mortared Stone|mortared stone]], 2=[[lumber]], 3=[[brick]], 4=[[Corrugated Steel|corrugated steel]], 5=[[concrete]].<br />
|-<br />
|/steamsale (amount)||Give every player an amount of money||/steamsale<br>/steamsale 40||Gives each player 1000.<br>Gives each player 40.||Gives each player the amount for each currency on the server.<br />
|-<br />
|/targetowner (player)||Change owner of current target||/targetowner<br>/targetowner Deantwo||Changes ownership of target vehicle to you.<br>Change ownership of the target vehicle to ''Deantwo''.||change ownership of a targeted vehicle. Aim and the vehicle and use the command. Specify a player if wanting to change its ownership to someone else.<br />
|-<br />
|/tax (amount)||Tax all players an amount of money||/tax<br>/tax 40||Taxes all players for 1000.<br>Taxes all players for 40.||Taxes each player the amount for each currency on the server.<br />
|-<br />
|/teleport (x),(y),(z)||Teleport to an xyz coordinate|| || ||Acts just like /move. The y parameter has no effect.<br />
|-<br />
|/teleportplayer [player]||Teleport to a player||/teleportplayer Ecko||Teleports you to Ecko.||<br />
|-<br />
|/testcontracts||Creates a contract board and creates a LOT of random contracts.|| || ||USE WITH CAUTION. May crash server / kick player.<br />
|-<br />
|/trample||Tramples the surrounding ground|| || ||USE WITH CAUTION. May cover entire world.<br />
|-<br />
|/unclaim||Unclaim the plot you're standing on|| || ||Does not return property claim flags.<br />
|-<br />
|/unclaimabandoned [number] || Unclaims land plots owned by players that havent logged in for a given number of days. || /unclaimabandoned 1 || Unclaims all land plots owned by players who last logged in 24 hours ago or more. || Use /useractivity to check how long users have been absent.<br />
|-<br />
|/vomit||Empties your stomach|| ||'''Note:''' Only emptying calories (7.2.5)||<br />
|-<br />
|/warnuser [player],(message)||Sends a warning to a player||/warn Ecko<br>/warn Ecko,Don't do that!||Sends a warning to Ecko.<br>Sends Ecko a warning with the message: "Don't do that!"||Only works if the player is online.<br />
|-<br />
|/whatami ||View your current skill title|| || ||<br />
|-<br />
|/whitelist [player]||Adds a user to the whitelist.||/whitelist Ecko||Adds Ecko to the whitelist.||<br />
|-<br />
|/whois [player]||Shows the user ID of the requested user.||/whois Ecko||Displays Ecko's user ID||This displays the proper ID to use for admin list, blacklist, and whitelist<br />
|-<br />
|/work (calories)||Spends calories||/work<br>/work 200||Spends all of your calories.<br>Spends 200 calories.||<br />
|}<br />
=== Developer Commands ===<br />
{|class="wikitable sortable mw-collapsible"<br />
!colspan="200" | Developer Chat Commands<br />
|-<br />
!Command !!Description !!Usage !!Result !!Notes<br />
|-<br />
|/dummy||Spawns a dummy avatar|| || ||<br />
|-<br />
|/exceptional ||Throws an exception, very useful|| || ||<br />
|-<br />
|/getpathtoitem ||Gets the resources needed to craft something|| || ||<br />
|-<br />
|/iodide||Set radiation dose to 0|| || ||<br />
|-<br />
|/irradiate||Max out player radiation dose|| || ||<br />
|-<br />
|/lastplayeronearth||Kills all spawned dummys|| || ||<br />
|-<br />
|/listunobtainableitems ||Lists the items that cannot be crafted from some set of other items. Note that many of these are not meant to be crafted, e.g. hips and stone|| || ||<br />
|-<br />
|/metime||Spawns a clone of your avatar|| || ||<br />
|-<br />
|/resettutorial ||Resets the tutorial, including record of given items (which menu option does not do)|| || ||<br />
|-<br />
|/spawnbed||Spawns a bed in a house and puts you to sleep.|| || ||<br />
|-<br />
|/spawnspecies || Spawns a given species near the player, defaulting to a cedar|| || ||<br />
|-<br />
|/teleporttarget||Teleports otherPlayer to an xyz coordinate|| || ||<br />
|-<br />
|/teleporttargetplayer||Teleports player A to player B|| || ||<br />
|-<br />
|/toggle [uiName]||Toggles the show state of a UI, by UI prefab name|| || ||<br />
|}<br />
<br />
== Gallery ==<br />
<gallery><br />
File:Eco_DevUserCommands_0.7.5.1.png|Beta v7.5.1 Developer and User commands<br />
File:Eco_AdminCommands_0.7.5.1.png|Beta v7.5.1 Admin commands<br />
File:Commands_User_0.8.2.8.png|Beta v8.2.8 User commands<br />
</gallery><br />
[[de:Chat Commands]]<br />
[[Category: Server management]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Food&diff=8432Food2022-03-09T18:57:36Z<p>Demian: /* Plants */ Use Key template.</p>
<hr />
<div><br />
Food is a constant necessity for players in Eco. Lack of food will eventually halt the accumulation of [[Skill Points]] and prevent the player from doing any work that requires calories. However, players can not die from starvation.<br />
<br />
Skill point gain is increased by the player's nutrition and [[Housing]]. Nutrition is raised by eating more nutritious food while balancing the four nutrients: Carbohydrates, Protein, Fat and Vitamins.<br />
<br />
Food is eaten by right-clicking on it. It does not need to be assigned to the toolbar. Food can be eaten from the toolbar, the inventory, or directly from a container. Right-clicking a stack of food will only consume one portion.<br />
== Food and Skill Points ==<br />
{{Main|Skill Points}}<br />
A player's daily skill point gain is calculated based on the average nutrients of all foods in a player's stomach. The average (weighted based on food calories) of each nutrient is added, then multiplied by a balance modifier (between x0.5 and x2). Foods that are completely lacking in one or more nutrients are considered to have a value of 0 in the missing nutrient(s).<br />
<br />
Foods stay in the stomach for 24 hours after eating. After that time, they will cease to be part of the skill point gain calculation.<br />
== Properties of food ==<br />
<big>Consumption of an item under the food category will provide the player with the following values:</big><br />
=== Calories ===<br />
When a food item is consumed, its caloric value is added to the player's calorie value (shown as a pie chart on the bottom left of the screen). These calories are needed to do any type of manual labor in ECO such as using [[tools]] or running.<br />
<br />
Time will slowly convert the calories into skill points. Once the player's calories reach 0, the player's daily skill point gain will also drop to 0 and they will be unable to complete any work that requires calories.<br />
<br />
If the player's calories are above maximum, the player will be unable to eat any additional food and will be shown the "My stomach is full" message. The player will need to complete some manual labor in order to be able to eat additional food items. The calorie maximum defaults to 3,000, but that can be increased by investing in the skill [[Big Stomach]].<br />
=== Nutrients ===<br />
The four nutrients do not have any specific effects on the body individually, however the player can maximize their skill gain when maintaining a balanced diet. A balanced diet contains an even amount of the four categories below:<br />
==== Carbs ====<br />
Carbs (short for carbohydrates) are mainly found in starchy products like [[Bread]] and other baked goods. In early-game, [[Wheat]] should be used to produce items that are high in Carbs.<br />
==== Protein ====<br />
Protein is mainly found in meat-focused foods, but small amounts can also be found in [[Bean|Beans]] and other vegetarian items. [[Charred Meat]] is a good source of protein in early-game.<br />
==== Fat ====<br />
Fat is found by cooking other ingredients in [[Tallow]] (a byproduct of cooking 3 [[Raw Meat]]) or [[Oil]] (a byproduct of milling 12 [[Cereal Germ]] or by cooking 18 Tallow over a stove). <br />
==== Vitamins ====<br />
Vitamins are found in foods rich in vegetables or fruits. [[Huckleberries]] are the best way to supplement vitamin intake early on.<br />
== Food Crafting Stations & Recipes ==<br />
The following crafting stations are used for crafting food:<br />
* [[Campfire]]<br />
* [[Butchery Table]]<br />
* [[Bakery Oven]]<br />
* [[Mill]]<br />
* [[Kitchen]]<br />
* [[Cast Iron Stove]]<br />
* [[Stove]]<br />
{{See|List of Recipes (food)}}<br />
== Food Resources ==<br />
=== Plants ===<br />
Food-bearing plants are a food resource harvested from the world. Most can be harvesting simply by highlighting the plant and pressing {{key|E}}.<br />
<br />
Here are a few examples of plants that require a certain tool to harvest:<br />
* [[Wheat]], Agave and [[Fireweed Shoots]] require a [[scythe]].<br />
* [[Camas Bulb]] and [[Taro Root]] require a [[shovel]].<br />
* [[Acorn]] is harvested from the debris of an [[Oak|Oak Tree]], which requires an [[Axe]] to chop down.<br />
<gallery widths="200" perrow="4" caption="Food-bearing Plants"><br />
File:Beets_Plant.png|[[Beets]] - Grows in [[Grasslands]]<br />
File:Corn_Plant.jpg|[[Corn]] - Grows in Grasslands<br />
File:Fern_Plant.jpg|[[Fiddlehead|Ferns]] - Grows in forests, especially [[Warm Forest]]<br />
File:Huckleberry_Plant.jpg|[[Huckleberry]] - Grows in forests, especially Warm Forest<br />
File:Beans_Plant.png|[[Bean]]s - Grows in forests. Rare in Beta 8.0<br />
File:Wheat_Plant.png|[[Wheat]] - Grows in Grasslands<br />
File:Pumpkin_Plant.png|[[Pumpkin]] - Grows in Grasslands<br />
File:Camas_Plant.png|[[Camas]] - Grows in Warm Forest<br />
File:PricklyPear_Plant.png|[[Prickly Pear Fruit|Prickly Pear]] - Grows in [[Desert]]<br />
File:Tomatoes_Plant.jpg|[[Tomatoes]] Grows in Grasslands<br />
File:Fireweed_Plant.jpg|[[Fireweed]] - Grows in [[Boreal Forest]]<br />
File:CriminiMushroom_Plant.jpg|[[Crimini Mushroom]] - Grows in [[Rainforest]]<br />
File:AmanitaMushroom_Plant.jpg|[[Amanita Mushroom]] - Absent in Beta 8.0. '''(Poisonous!)'''<br />
File:Papaya_Tree.png|[[Papaya]] - Grows in Rainforest<br />
File:Pineapple_Plant.png|[[Pineapple]] - Grows in Rainforest<br />
File:BoleteMushroom_Plant.png|[[Bolete Mushroom]] - Grows in Rainforest<br />
File:Oak_Tree.jpg|[[Acorn]]s - Harvested from Oak Tree leaves<br />
File:Rice_Plant.jpg|[[Rice]] - Grows in Grasslands. Seemingly absent in Beta 8.0.<br />
File:Urchin_Plant.jpg|[[Urchin]] - Grows underwater<br />
File:Clam_Plant.png|[[Clam]] - Grows underwater<br />
</gallery><br />
<br />
=== Animals ===<br />
[[Animals]] are a food resource that requires the player to kill the animal with a [[Bow]], harvest the [[Animal Carcass|carcass]], and then prepare the carcass at a [[Butchery Table]] or [[Fishery]].<br />
<br />
[[Clam|Clams]] and [[Urchin|Urchins]] require the player to harvest by diving (holding the {{Key|Left Ctrl}} key on the keyboard) and then shucking/cleaning them at a [[Fishery]] in order to obtain [[Raw Fish]].<br />
<gallery widths="200" perrow="4" caption="Animals"><br />
File:Bison_Animal.jpg|[[Bison]]<br />
File:Elk_Animal.jpg|[[Elk]]<br />
File:Wolf_Animal.jpg|[[Wolf]]<br />
File:Fox_Animal.jpg|[[Fox]]<br />
File:Hare_Animal.jpg|[[Hare]]<br />
File:BighornSheep_Animal.png|[[Bighorn Sheep]]<br />
File:Tortoise_Animal.jpg|[[Tortoise]]<br />
File:Trout_Animal.jpg|[[Trout]]<br />
File:Salmon_Animal.jpg|[[Salmon]]<br />
File:Tuna_Animal.jpg|[[Tuna]]<br />
File:MountainGoat_Animal.png|[[Mountain Goat]]<br />
File:Turkey_Animal.png|[[Turkey]]<br />
</gallery><br />
<br />
=== Foods/Recipes ===<br />
{| class="wikitable sortable mw-collapsible" cellpadding="20px"<br />
|-<br />
|<br />
|{{FoodDetails}}<br />
|}<br />
== Guides ==<br />
[https://eco-food-simulator.web.app/ App that shows optimal food combination for available food. (Version 9)]<br />
<br />
[https://steamcommunity.com/sharedfiles/filedetails/?id=1556520648 Best Food Combos] — By Rupi<br />
<br />
[[ja:Food]]<br />
[[fr:Food]]<br />
[[ru:Еда]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Laws&diff=8431Laws2022-03-09T18:57:07Z<p>Demian: /* Proposing a law */ Use Key template.</p>
<hr />
<div><br />
{{contentneeded}}<br />
{{outdated}}<br />
[[File:Government.jpg|right|500px]]<br />
As the level of technology available to players increases, the capability for affecting the environment increases. To ensure players use this power positively, players must propose, discuss, and vote on laws. Passed laws will affect everyone. <br />
<br />
Currently, it is impossible to break a law, but [[Strange Loop Games]] has plans to implement a criminal justice system, making it so if you break a law you'll get a fine, be sent to jail for a period of time or be executed (perma-ban).<br />
<br />
== Defining Laws in 9.0 ==<br />
Laws can be defined in a [[Court]]. Each court can have up to 3 separate laws, but each law can have as many sections as desired.<br />
Each section of the law contains triggers, conditions and actions. Triggers define when the section of the law is triggered, for example when [[Hunting]] an [[Animals|animal]].<br />
<br />
[[File:Law Example No Hunting.png|800px]]<br />
<br />
In this example we prevent everyone from hunting. The action that is triggered when someone is trying to hunt any animal is "Prevent", which simply prevents the action.<br />
<br />
With conditions we can do a lot more. In the following example we allow any hunters to hunt on any property. If the hunter hasn't specialized in hunting, the action will be prevented.<br />
<br />
[[File:Law Example No Hunting Unless Skill Requirement.png|800px]]<br />
<br />
== Using evidence to argue for laws ==<br />
There is no guidebook to how to sustainably use the resources of the ecosystem, players must understand it by looking at the actual data themselves, and convince their fellow players of what they believe. As players have different specialities in the game, their incentives will be influenced heavily by their livelihood, just as in the real world (a lumberjack player may be less inclined to halt deforestation than the general population because their livelihood depends on it).<br />
<br />
Thus, even though players are working together towards a common goal, their individual incentives and desires will guide their decisions in a conflicting way, and navigating those through laws and scientific evidence to achieve success and avoid ruin is the core experience we plan to provide with Eco.<br />
<br />
[[File:Graph.png]]<br />
<br />
The ecosystem data is visible to players in the [[Web Interface]]. Players can gather full data on the ecosystem simulation in-game, allowing them to analyze what’s happening in the world and how the ecosystem works. This data can be used to construct arguments for laws, backing up the player-run government with hard scientific data.<br />
==Proposing a law==<br />
On most servers depending on how the players are running things, anyone will be able to propose a new law for other players to vote on. This can be done by clicking on the laws icon in the bottom right panel of the Heads-Up-Display or pressing the default shortcut {{key|L}}.<br />
<br />
This will prompt the government/laws windows displaying the current leader and active/proposed laws.<br />
<br />
At the bottom of this page (You may have to scroll down.), you will find the "propose law" button that will open the server's [[Web Interface]] on the proposal a law page.<br />
<br />
==Composing a new law==<br />
===Clauses===<br />
The law system has two types of clauses. The main one a player will be using is the "Prevent Action" clause. The other one is "On Law Passed".<br />
====Prevent Action====<br />
The Prevent Action category is used to do most of the laws in order to prevent players doing things. It can range from preventing the harvesting of wheat to setting who can and can not vote.<br />
====On Law Passed====<br />
The on law passed category is used to repeal other laws or define the districts.<br />
=====Repeal=====<br />
The repeal function allow players to repeal an existing law in case a law is no longer useful or required.<br />
===== Redefine District=====<br />
The Redefine District function allows players to define [[district]]s on the world map. These transcend claimed properties and allow for location-specific laws. Like banning the chopping of a tree within a specific district. Or preventing players from building inside the district.<br />
=====Define Demographic=====<br />
The Define Demographic function allows players to define a [[demographic]], which is logical definition of a dynamic group of players. For example a demographic could be; all players with level 2 in Logging. They can be used to make laws simpler or more dynamic.<br />
==Videos==<br />
Example laws for protecting the planet, economy, trees, roads, and resources:<br />
{{#ev:youtube|ALn3c4iF1cc}}<br />
==See Also==<br />
*[[Law Examples]]<br />
[[Category: Game concepts]]<br />
[[de:Gesetze]]<br />
[[Category:Government]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Backpack&diff=8430Backpack2022-03-09T18:56:35Z<p>Demian: Use Key and Unit templates, add link.</p>
<hr />
<div>__NOTOC__ <br />
A [[Backpack]] provides extra [[storage]] space for a player. Every player has a backpack equipped when they first log in to a server. At a [[Tailoring Table]] a Player can craft Backpacks to increase their carrying weight, movement speed, or decrease calories consumed. The GUI for the backpack can be toggled by pressing {{key|B}}.<br />
<br />
Any kind of [[:Category:Items|item]] that can be stored in your toolbar can also be stored in your backpack (up to 16 item stacks).<br />
<br />
All [[:Category:Blocks|blocks]] cannot be stored in a backpack. They need to be carried by hand, or by using a vehicle such as a [[Wood Cart|cart]].<br />
<br />
==Basic Backpack==<br />
Increases carrying capacity by {{unit|5.0|kg}}.<br />
{{Infobox_Item|name=Basic Backpack}}<br />
{{GetRecipes|item=Basic Backpack}}<br />
<br />
==Big Backpack==<br />
Increases carrying capacity by {{unit|10.0|kg}}.<br />
{{Infobox_Item|name=Big Backpack}}<br />
<br />
{{GetRecipes|item=Big Backpack}}<br />
<br />
==Bearpack==<br />
Increases carrying capacity by {{unit|15.0|kg}}.<br />
{{Infobox_Item|name=Bearpack}}<br />
{{GetRecipes|item=Bearpack}}<br />
<br />
==Light Backpack==<br />
Increases carrying capacity by {{unit|5.0|kg}}, and increases player movement speed.<br />
{{Infobox_Item|name=Light Backpack}}<br />
{{GetRecipes|item=Light Backpack}}<br />
<br />
==Work Backpack==<br />
{{Infobox_Item|name=Work Backpack}}<br />
Increases carrying capacity by {{unit|5.0|kg}}, and decreases player calorie consumption.<br />
{{GetRecipes|item=Work Backpack}}<br />
<br />
==Gallery==<br />
<gallery>File:BigBackpack_Details.png|[[Big Backpack]] item details [[Versions#v0.6.3.1|Alpha v6.3.1]].<br />
File:Backpack.png|''Example of a backpack''</gallery><br />
<br />
[[ja:Backpack]]</div>Demianhttps://wiki.play.eco/en/index.php?title=Auth&diff=8429Auth2022-03-09T18:54:27Z<p>Demian: /* Claimed Land */ Use Key template.</p>
<hr />
<div>Auth controls who can use an object on private [[property]].<br />
<br />
== Claimed Land ==<br />
By default only the owner of a [[deed]] is the only one able to do anything on a claimed plot of land. This includes digging and placing blocks.<br />
<br />
The owner of the deed can give permission to others to work on the claimed land associated with the deed. This is done by holding a [[Land Claim Stake]] and pressing {{key|E}} on the land, clicking the name of the deed while standing on it, or using a [[Real Estate Desk]].<br />
<br />
== Crafting Stations ==<br />
By default, a crafting station on private property claimed with a [[Land Claim Stake]] will only be usable by the property owner. This can be changed in the "Auth" tab of the crafting station. Adding player names, [[demographic]]s or ''Everyone'' to the [[auth]] list will allow others to use the crafting station.<br />
<br />
Crafting stations that are not on claimed property are usable by anyone, even if they are within a partially claimed room.</div>Demian