C#:
---
layout: forums
title: 'How do I change datatable values?'
breadcrumbs:
- "Plugin Development": "/forums/plugin-development.105/"
- "Rust Development": "/forums/rust-development.4/"
---
<div class="titleBar">
<h1>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/' | prepend: site.baseurl }}">How do I change datatable values?</a>
</h1>
<p id="pageDescription" class="muted">Discussion in '<a href="{{ '/forums/rust-development.4/' | prepend: site.baseurl }}">Rust Development</a>' started by <a class="username" dir="auto">Mike
#GetRekt</a>, <a href="{{ '/threads/how-do-i-change-datatable-values.10494/' | prepend: site.baseurl }}"><span class="DateTime" title="Jul 24, 2015 at 11:02 PM">Jul 24, 2015</span></a>.
</p>
</div>
<ol class="messageList" id="messageList">
<li id="post-111949" class="message" data-author="Mike #GetRekt">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Mike #GetRekt" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Mike #GetRekt</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> Hey, i have absolutely no idea how to use data files..<br /> i already went through <a
href="http://docs.oxidemod.org/rust/?csharp#creating-a-data-table" target="_blank" class="externalLink rel="
nofollow">http://docs.oxidemod.org/rust/?csharp#creating-a-data-table</a>, but how do i change values etc.?<br /> I would be very glad if someone could give me a quick
introduction to data-tables <img src="{{ '/assets/styles/default/xenforo/clear.png' | prepend: site.baseurl }}" class="mceSmilieSprite mceSmilie1" alt=":)" title="Smile :)" />
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Mike #GetRekt</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 24, 2015 at 11:02 PM">Jul 24, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/111949/permalink">#1</a>
</div>
</div>
</div>
</li>
<li id="post-111963" class="message" data-author="Deicide666ra">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Deicide666ra" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Deicide666ra</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> The storeddata is a class, you can add and remove variables in it and just access it.. <div
class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Deicide666ra</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-111963' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 12:36 AM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-111963' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/111963/permalink">#2</a>
</div>
</div>
</div>
</li>
<li id="post-112149" class="message" data-author="Mike #GetRekt">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Mike #GetRekt" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Mike #GetRekt</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>using System.Collections.Generic;
using Oxide.Core;namespace Oxide.Plugins
{
[Info("Money", "xCreez", 1.0)]
[Description("This example illustrates how to save to a data file.")]
class Money : RustPlugin
{
class StoredData
{
public HashSet<MoneyInfo> MoneyDatabase = new HashSet<MoneyInfo>(); public StoredData()
{
}
} class MoneyInfo
{
public string UserId;
public string Name;
public int Money; public MoneyInfo(BasePlayer player)
{
UserId = player.userID.ToString();
Name = player.displayName;
Money = 1000;
}
} StoredData storedData; private void Loaded()
{
storedData = Interface.GetMod().DataFileSystem.ReadObject<StoredData>("Money");
} [ChatCommand("Test")]
private void Test(BasePlayer player, string command, string[] args)
{
var info = new MoneyInfo(player);
Puts(storedData.MoneyDatabase.ToString());
if (storedData.MoneyDatabase.Contains(info))
{
PrintToChat(player, "Your data has already been added to the file.");
}
else
{
PrintToChat(player, "Saving your data to the file.");
storedData.MoneyDatabase.Add(info);
Interface.GetMod().DataFileSystem.WriteObject("Money", storedData);
}
}
}
}</pre>{% endraw %}
</div>Why is that saving new data everytime i use /Test ? <div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Mike #GetRekt</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112149' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 5:25 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112149' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112149/permalink">#3</a>
</div>
</div>
</div>
</li>
<li id="post-112170" class="message" data-author="Deicide666ra">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Deicide666ra" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Deicide666ra</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> this line:<br />
<br /> Interface.GetMod().DataFileSystem.WriteObject("Money", storedData);<br />
<br /> Saves the file.... if you do not want to save everytime, just do storedData.MoneyDatabase.Add(info);...<br />
<br /> Note that if you do not save and the server restarts, the data will be lost! If you do not save for every operation you should at least have a timer that saves on a
regular basis.<br /> [DOUBLEPOST=1437843836][/DOUBLEPOST]Wait I take that back... The function as it is creates a new MoneyInfo every execution, so the part where it says
"Your data has already been added" will never ever be reached. You'd need to check for a unique thing in MoneyInfo vs the ones in the MoneyDatabase list. <div
class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Deicide666ra</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112170' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 6:01 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112170' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112170/permalink">#4</a>
</div>
</div>
</div>
</li>
<li id="post-112198" class="message" data-author="Mike #GetRekt">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Mike #GetRekt" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Mike #GetRekt</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> I dont know what exactly you mean :/ <div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Mike #GetRekt</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112198' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 7:05 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112198' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112198/permalink">#5</a>
</div>
</div>
</div>
</li>
<li id="post-112202" class="message" data-author="Deicide666ra">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Deicide666ra" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Deicide666ra</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">
<div class="bbCodeBlock bbCodeQuote" data-author="Mike #GetRekt">
<aside>
<div class="attribution type">Mike #GetRekt said: <a href="#post-112198" class="AttributionLink">↑</a>
</div>
<blockquote class="quoteContainer">
<div class="quote">I dont know what exactly you mean :/</div>
<div class="quoteExpand">Click to expand...</div>
</blockquote>
</aside>
</div>Sorry was on phone and didn't feel like writing a novel, I'm on the computer now. Basically, that example you started from is just that, an example, it's
not functional. Let me expand on this.<br />
<br /> First problem is that example uses a Hashset... I have no idea why everyone keeps using those, they are about the most useless "collection" type structure in
.NET and have a very specific use, one which is not needed in this example here. In the context of that example they should be using a Dictionary and use either the BasePlayer
structure as a key, or better yet the SteamID.<br />
<br /> The second problem, which I hinted at in my first reply, is that the "test" function does not do what it suggests it's doing... The .Contains function
looks for a Reference and the "info" structure that is passed to that function was just freshly created (new MoneyInfo). There is literally never, ever a time when
entering that function that "Contains" can return true. The proper code would be something like:<br />
<br /> if (storedData.MoneyDatabase.Any(mi => mi.UserId == player.userID.ToString()))<br />
<br /> This statement will return true if a MoneyInfo has already been added to the MoneyDatabase for that player.<br />
<br /> Last but not least, one would expect that the goal of the Test function would be for example to add money to the player account. Creating a new MoneyInfo structure right
at the start of the function is not necessary, the function should first try to retrieve the current player balance and add to it instead of creating a new one each time.<br />
<br /> Here's a re-write of the example which makes a whole lot more sense:<br />
<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>using System.Collections.Generic;
using Oxide.Core;namespace Oxide.Plugins
{
[Info("Money", "Re-write by Deicide666ra (original version: xCreez)", 1.1)]
[Description("This example illustrates how to save to a data file.")]
class Money : RustPlugin
{
class StoredData
{
public Dictionary<ulong, MoneyInfo> MoneyDatabase = new Dictionary<ulong, MoneyInfo>();
} class MoneyInfo
{
public string UserId;
public string Name;
public int Money; public MoneyInfo(BasePlayer player)
{
UserId = player.userID.ToString();
Name = player.displayName;
Money = 1000;
}
} StoredData storedData; private void Loaded()
{
storedData = Interface.GetMod().DataFileSystem.ReadObject<StoredData>("Money");
} [ChatCommand("CreateAccount")]
private void CreateAccount(BasePlayer player, string command, string[] args)
{
MoneyInfo playerBalance = null;
if (storedData.MoneyDatabase.TryGetValue(player.userID, out playerBalance) == false)
{
// no info on that player found, init new balance for him
playerBalance = new MoneyInfo(player); // add it to the database
storedData.MoneyDatabase.Add(player.userID, playerBalance); // save the new player to disk
PrintToChat(player, "Saving your data to the file.");
Interface.GetMod().DataFileSystem.WriteObject("Money", storedData);
}
else
{
PrintToChat(player, "Your data has already been added to the file.");
}
} [ChatCommand("AddMoney")]
private void AddMoney(BasePlayer player, string command, string[] args)
{
if (args.Length != 1)
{
PrintToChat(player, "Error! Usage: /AddMoney amount (ex: /AddMoney 1000 to add 1000 credits)");
return;
} MoneyInfo playerBalance = null;
if (storedData.MoneyDatabase.TryGetValue(player.userID, out playerBalance) == false)
{
PrintToChat(player, "This player has no account! Use /CreateAccount first!");
return;
} int amount = 0;
if (int.TryParse(args[0], out amount) == false || amount == 0)
{
PrintToChat(player, "Could not determin amount, amount could not be parsed or is zero!");
return;
} // Apply the amount (can be negative, not not fractional)
playerBalance.Money += amount; // save the new player to disk
PrintToChat(player, "Saving your data to the file.");
Interface.GetMod().DataFileSystem.WriteObject("Money", storedData);
}
}
}</pre>{% endraw %}
</div>
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="editDate"> Last edited by a moderator: <span class="DateTime" title="Jul 25, 2015 at 7:57 PM">Jul 25, 2015</span>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Deicide666ra</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112202' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 7:28 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112202' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112202/permalink">#6</a>
</div>
</div>
</div>
</li>
<li id="post-112208" class="message" data-author="Mike #GetRekt">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Mike #GetRekt" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Mike #GetRekt</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> Thanks for the re-write, but it gives me an error when i reload the plugin after saving an Account and it
won't let me AddMoney because it says "Could not determin amount, amount could not be parsed or is zero!" even if the amount is > 0 <div
class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Mike #GetRekt</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112208' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 7:43 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112208' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112208/permalink">#7</a>
</div>
</div>
</div>
</li>
<li id="post-112210" class="message" data-author="Deicide666ra">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Deicide666ra" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Deicide666ra</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> Didn't test it sorry, change that check line to this, I messed up <img
src="{{ '/assets/styles/default/xenforo/clear.png' | prepend: site.baseurl }}" class="mceSmilieSprite mceSmilie1" alt=":)" title="Smile :)" /><br />
<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>if (int.TryParse(args[0], out amount) == false || amount == 0)</pre>{% endraw %}
</div>[DOUBLEPOST=1437850650][/DOUBLEPOST]Edit: Fixed the code in the other reply <img src="{{ '/assets/styles/default/xenforo/clear.png' | prepend: site.baseurl }}" class="mceSmilieSprite mceSmilie1" alt=":)"
title="Smile :)" />
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Deicide666ra</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112210' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 7:56 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112210' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112210/permalink">#8</a>
</div>
</div>
</div>
</li>
<li id="post-112212" class="message" data-author="Mike #GetRekt">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Mike #GetRekt" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Mike #GetRekt</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> That fixes the error while adding Money but after saving a Account to the Database it gives me an error if i
reload the plugin <img src="{{ '/assets/styles/default/xenforo/clear.png' | prepend: site.baseurl }}" class="mceSmilieSprite mceSmilie9" alt=":eek:" title="Eek! :eek:" />
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Mike #GetRekt</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112212' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 8:00 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112212' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112212/permalink">#9</a>
</div>
</div>
</div>
</li>
<li id="post-112214" class="message" data-author="Deicide666ra">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Deicide666ra" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Deicide666ra</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> What error? I have a mod that uses a Dictionary like that do I don't see how that would be an issue... Gimme
the error <img src="{{ '/assets/styles/default/xenforo/clear.png' | prepend: site.baseurl }}" class="mceSmilieSprite mceSmilie1" alt=":)" title="Smile :)" />
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Deicide666ra</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112214' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 8:08 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112214' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112214/permalink">#10</a>
</div>
</div>
</div>
</li>
<li id="post-112232" class="message" data-author="Mike #GetRekt">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Mike #GetRekt" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Mike #GetRekt</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> There you go:<br />
<img src="proxy.php?image=http%3A%2F%2Fi.epvpimg.com%2FsfGpe.png&hash=a8857d3718e77fac7d7573827b6c6fda" class="bbCodeImage LbImage" alt="[​IMG]"
data-url="http://i.epvpimg.com/sfGpe.png" />
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Mike #GetRekt</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112232' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 8:29 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112232' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112232/permalink">#11</a>
</div>
</div>
</div>
</li>
<li id="post-112238" class="message" data-author="Deicide666ra">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Deicide666ra" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Deicide666ra</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> Not sure but I think it's probably the MoneyInfo class that needs an empty constructor, try this:<br />
<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>using System.Collections.Generic;
using Oxide.Core;namespace Oxide.Plugins
{
[Info("Money", "Re-write by Deicide666ra (original version: xCreez)", 1.1)]
[Description("This example illustrates how to save to a data file.")]
class Money : RustPlugin
{
class StoredData
{
public Dictionary<ulong, MoneyInfo> MoneyDatabase = new Dictionary<ulong, MoneyInfo>();
} class MoneyInfo
{
public string UserId;
public string Name;
public int Money; public MoneyInfo() { } public MoneyInfo(BasePlayer player)
{
UserId = player.userID.ToString();
Name = player.displayName;
Money = 1000;
}
} StoredData storedData; private void Loaded()
{
storedData = Interface.GetMod().DataFileSystem.ReadObject<StoredData>("Money");
} [ChatCommand("CreateAccount")]
private void CreateAccount(BasePlayer player, string command, string[] args)
{
MoneyInfo playerBalance = null;
if (storedData.MoneyDatabase.TryGetValue(player.userID, out playerBalance) == false)
{
// no info on that player found, init new balance for him
playerBalance = new MoneyInfo(player); // add it to the database
storedData.MoneyDatabase.Add(player.userID, playerBalance); // save the new player to disk
PrintToChat(player, "Saving your data to the file.");
Interface.GetMod().DataFileSystem.WriteObject("Money", storedData);
}
else
{
PrintToChat(player, "Your data has already been added to the file.");
}
} [ChatCommand("AddMoney")]
private void AddMoney(BasePlayer player, string command, string[] args)
{
if (args.Length != 1)
{
PrintToChat(player, "Error! Usage: /AddMoney amount (ex: /AddMoney 1000 to add 1000 credits)");
return;
} MoneyInfo playerBalance = null;
if (storedData.MoneyDatabase.TryGetValue(player.userID, out playerBalance) == false)
{
PrintToChat(player, "This player has no account! Use /CreateAccount first!");
return;
} int amount = 0;
if (int.TryParse(args[0], out amount) == false || amount == 0)
{
PrintToChat(player, "Could not determin amount, amount could not be parsed or is zero!");
return;
} // Apply the amount (can be negative, not not fractional)
playerBalance.Money += amount; // save the new player to disk
PrintToChat(player, "Saving your data to the file.");
Interface.GetMod().DataFileSystem.WriteObject("Money", storedData);
}
}
}</pre>{% endraw %}
</div>
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Deicide666ra</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112238' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 8:37 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112238' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112238/permalink">#12</a>
</div>
</div>
</div>
</li>
<li id="post-112267" class="message" data-author="Mike #GetRekt">
<div class="messageUserInfo">
<div class="messageUserBlock">
<div class="avatarHolder">
<span class="helper"></span>
<a class="avatar Avm" data-avatarhtml="true"><img src="{{ '/assets/styles/oxide/logo.og.png' | prepend: site.baseurl }}" width="96" height="96" alt="Mike #GetRekt" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Mike #GetRekt</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml"> I seriously love you <img src="{{ '/assets/styles/default/xenforo/clear.png' | prepend: site.baseurl }}" class="mceSmilieSprite mceSmilie8" alt=":D"
title="Big Grin :D" /><br /> Works like a charm, thank you very much <img src="{{ '/assets/styles/default/xenforo/clear.png' | prepend: site.baseurl }}" class="mceSmilieSprite mceSmilie1" alt=":)"
title="Smile :)" />
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">Mike #GetRekt</a>,</span>
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112267' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Jul 25, 2015 at 9:43 PM">Jul 25, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/how-do-i-change-datatable-values.10494/#post-112267' | prepend: site.baseurl }}" title="Permalink" class="item muted postNumber hashPermalink OverlayTrigger"
data-href="posts/112267/permalink">#13</a>
</div>
</div>
</div>
</li>
</ol>