C#:
---
layout: forums
title: 'Array issue with command commands for python and c#'
breadcrumbs:
- "Plugin Development": "/forums/plugin-development.105/"
- "Rust Development": "/forums/rust-development.4/"
---
<div class="titleBar">
<h1>
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/' | prepend: site.baseurl }}">Array issue with command commands for python and c#</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">BasKoning</a>, <a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/' | prepend: site.baseurl }}"><span class="DateTime"
title="Apr 22, 2015 at 2:45 PM">Apr 22, 2015</span></a>.
</p>
</div>
<ol class="messageList" id="messageList">
<li id="post-81451" class="message" data-author="BasKoning">
<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="BasKoning" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">BasKoning</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">Consider these two small plugins, that demonstrate the use of console and chat commands with or without any
arguments.<br />
<br /> CommandExampleCs.cs=<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>using System;namespace Oxide.Plugins
{
[Info(" Command Example CS", "Bas", "0.1.0", ResourceId = 99681)]
public class CommandExampleCs : RustPlugin
{
[ChatCommand("checkcs")]
void cmdChatCheckCs(BasePlayer player, string cmd, string[] args)
{
Console.WriteLine(string.Format("player.displayName={0}", player.displayName));
Console.WriteLine(string.Format("player.userID{0}", player.userID));
Console.WriteLine(string.Format("cmd={0}", cmd));
Console.WriteLine(string.Format("Number of arguments={0}", args.Length));
foreach(string s in args){
Console.WriteLine( s );
}
Console.WriteLine("");
}
[ConsoleCommand("checkcs")]
void cmdConsoleCheckCs(ConsoleSystem.Arg args)
{
if (args.HasArgs())
{
Console.WriteLine(string.Format("Number of arguments={0}", args.Args.Length));
foreach(string s in args.Args){
Console.WriteLine( s );
}
Console.WriteLine("");
}
else
{
Console.WriteLine(string.Format("Number of arguments=0"));
}
}
}
}</pre>{% endraw %}
</div>CommandExamplePy.py=<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>import Systemclass CommandExamplePy:
def __init__(self):
self.Title = 'Command Example Py'
self.Author = 'Bas'
self.Version = V(0, 1, 0)
self.ResourceId = 44823 def Init(self):
#works fine:
command.AddChatCommand('checkpy', self.Plugin, 'cmdChatCheckPy')
#but this will not compile due to an 'array index is out of range'
#command.AddConsoleCommand('checkpy', self.Plugin, 'cmdConsoleCheckPy') def cmdChatCheckPy(self, player, cmd, args):
print "player.displayName=" + player.displayName
print "player.userID=" +str(player.userID)
print "cmd=" +cmd
print "number of arguments="+str(len(args))
print str(args) def cmdConsoleCheckPy(self, args):
print dir(args)</pre>{% endraw %}
</div>The problem is: in python AddConsoleCommand seems to malfunction due to an 'array index is out of range'?<br />
<br /> Or am I doing something wrong here? <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">BasKoning</a>,</span>
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span class="DateTime"
title="Apr 22, 2015 at 2:45 PM">Apr 22, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/' | prepend: site.baseurl }}" title="Permalink"
class="item muted postNumber hashPermalink OverlayTrigger" data-href="posts/81451/permalink">#1</a>
</div>
</div>
</div>
</li>
<li id="post-81460" class="message" data-author="Hatemail">
<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="Hatemail" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Hatemail</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">Correct your doing something wrong, all console commands must have a parent.<br />
<br /> Change:<br /> command.AddConsoleCommand('checkpy', self.Plugin, 'cmdConsoleCheckPy')<br />
<br /> To:<br /> command.AddConsoleCommand('example.checkpy', self.Plugin, 'cmdConsoleCheckPy') <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">Hatemail</a>,</span>
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81460' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span
class="DateTime" title="Apr 22, 2015 at 3:32 PM">Apr 22, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81460' | prepend: site.baseurl }}" title="Permalink"
class="item muted postNumber hashPermalink OverlayTrigger" data-href="posts/81460/permalink">#2</a>
</div>
</div>
</div>
</li>
<li id="post-81466" class="message" data-author="BasKoning">
<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="BasKoning" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">BasKoning</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">Yes, that works as in: the error is gone, but it does not work as in the dir of the args is never printed. Still
something is going wrong...<br />
<br /> I have this now:<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>import Systemclass ConsoleCommandExamplePy:
def __init__(self):
self.Title = 'Console Command Example Py'
self.Author = 'Bas'
self.Version = V(0, 1, 0)
self.ResourceId = 44823
def Init(self):
command.AddConsoleCommand('ConsoleCommandExamplePy.checkpy', self.Plugin, 'cmdConsoleCheckPy') def cmdConsoleCheckPy(self, args):
print 'Inside cmdConsoleCheckPy'</pre>{% endraw %}
</div>
<div class="messageTextEndMarker"> </div>
</blockquote>
</article>
</div>
<div class="editDate">Last edited by a moderator: <span class="DateTime" title="Apr 23, 2015 at 6:58 AM">Apr 23, 2015</span>
</div>
<div class="messageMeta ToggleTriggerAnchor">
<div class="privateControls">
<span class="item muted">
<span class="authorEnd"><a class="username author" dir="auto">BasKoning</a>,</span>
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81466' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span
class="DateTime" title="Apr 22, 2015 at 4:09 PM">Apr 22, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81466' | prepend: site.baseurl }}" title="Permalink"
class="item muted postNumber hashPermalink OverlayTrigger" data-href="posts/81466/permalink">#3</a>
</div>
</div>
</div>
</li>
<li id="post-81474" class="message" data-author="Hatemail">
<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="Hatemail" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Hatemail</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">You'll need to wait for someone who has experience with python to help you more. <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">Hatemail</a>,</span>
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81474' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span
class="DateTime" title="Apr 22, 2015 at 5:00 PM">Apr 22, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81474' | prepend: site.baseurl }}" title="Permalink"
class="item muted postNumber hashPermalink OverlayTrigger" data-href="posts/81474/permalink">#4</a>
</div>
</div>
</div>
</li>
<li id="post-81675" class="message" data-author="Nogrod">
<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="Nogrod" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">Nogrod</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">the parameter is from rust type ConsoleSystem+Args, so you can display with:<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>def cmdConsoleCheckPy(self, arg):
print arg.Args</pre>{% endraw %}
</div>and use functions like HasArgs([count]) and Get[Type](argNum) eg: arg.HasArgs(1) or arg.GetString(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">Nogrod</a>,</span>
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81675' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span
class="DateTime" title="Apr 23, 2015 at 10:37 AM">Apr 23, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-81675' | prepend: site.baseurl }}" title="Permalink"
class="item muted postNumber hashPermalink OverlayTrigger" data-href="posts/81675/permalink">#5</a>
</div>
</div>
</div>
</li>
<li id="post-82168" class="message" data-author="BasKoning">
<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="BasKoning" /></a>
</div>
<h3 class="userText">
<a class="username" dir="auto">BasKoning</a>
</h3>
<span class="arrow"></span>
</div>
</div>
<div class="messageInfo primaryContent">
<div class="messageContent">
<article>
<blockquote class="messageText SelectQuoteContainer ugc baseHtml">Tx: SkinN õ.Õ'.|. for the help on this<br />
<br /> In python, the <i>wierd </i>thing is: you have to type the complete command, including class name, in the console. Then it will work.<br /> So to have cmdConsoleCheckPy
triggered, you would have to type <b>PyConsole.checkpy</b> into the console.<br />
<br /> PyConsole.py<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>class PyConsole:
def __init__(self):
self.Title = 'PyConsole'
self.Author = 'Bas'
self.Version = V(0, 1, 0)
def Init(self):
command.AddConsoleCommand('PyConsole.checkpy', self.Plugin, 'cmdConsoleCheckPy')
def cmdConsoleCheckPy(self,args):
msg='PyConsole'
for arg in args.Args:
msg=msg+" "+arg
print msg</pre>{% endraw %}
</div>But the wierd thing is: in the c# plugin I made that does the same: I only have to type the command name itself, not the classname.<br /> So I would only have to type
<b>checkcs </b>into the console to trigger cmdConsoleCheckCs.<br />
<br /> CsConsole.cs<br />
<div class="bbCodeBlock bbCodeCode">
<div class="type">Code:</div>
{% raw %}<pre>using System;namespace Oxide.Plugins{
[Info("CsConsole", "Bas", "0.1.0")]
public class CsConsole : RustPlugin {
[ConsoleCommand("checkcs")]
void cmdConsoleCheckCs(ConsoleSystem.Arg args) {
if (args.HasArgs()) {
Console.WriteLine(string.Format("Number of arguments={0}", args.Args.Length));
foreach(string s in args.Args) {
Console.WriteLine( s );
}
}
else {
Console.WriteLine(string.Format("Number of arguments=0"));
}
Console.WriteLine("");
}
}
}</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">BasKoning</a>,</span>
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-82168' | prepend: site.baseurl }}" title="Permalink" class="datePermalink"><span
class="DateTime" title="Apr 24, 2015 at 7:20 PM">Apr 24, 2015</span></a>
</span>
</div>
<div class="publicControls">
<a href="{{ '/threads/array-issue-with-command-commands-for-python-and-c.7921/#post-82168' | prepend: site.baseurl }}" title="Permalink"
class="item muted postNumber hashPermalink OverlayTrigger" data-href="posts/82168/permalink">#6</a>
</div>
</div>
</div>
</li>
</ol>