Author Topic: Coding Help  (Read 1151 times)

Can someone tell me what I'm doing wrong.

Code: [Select]
if(isPackage(GetRank))
deactivatepackage(GetRank);

package GetRank
{
function serverCmdGetrank (%client, %target, %showall)
{
if (%client.isStaff)
{
%file = new fileObject();
%file.openForRead("config/server/AutoRank/Members.txt");
%id = 0;
while (%id != %target.getBLID())
{
if (%file.isEOF())
break;
%line = %file.readline();
%id = getWord(%line,0);
}

if (%id = %target.getBLID())
{
%member = getWord(%line,1);
%admin = getWord(%line,2);
%super = getWord(%line,3);
%mod = getWord(%line,4);
%reg = getWord(%line,5);
%dev = getWord(%line,6);
messageClient(%client, '', "\c2User " @ %id @ " Has The Following Privledges:" );
messageClient(%client, '', "\c2Member: " @ %member @ );
messageClient(%client, '', "\c2Admin: " @ %admin @ );
messageClient(%client, '', "\c2Super Admin: " @ %super @ );
messageClient(%client, '', "\c2Moderator: " @ %mod @ );
messageClient(%client, '', "\c2Regular: " @ %reg @ );
messageClient(%client, '', "\c2Developer: " @ %dev @ );
}
else
{
messageClient(%client, '', "\c2User Not Found / Has No Privledges" );
}

if (%showall == "showall")
{
messageAll(%client, '', "\c2User " @ %id @ " Has The Following Privledges:" );
messageAll(%client, '', "\c2Member: " @ %member @ );
messageAll(%client, '', "\c2Admin: " @ %admin @ );
messageAll(%client, '', "\c2Super Admin: " @ %super @ );
messageAll(%client, '', "\c2Moderator: " @ %mod @ );
messageAll(%client, '', "\c2Regular: " @ %reg @ );
messageAll(%client, '', "\c2Developer: " @ %dev @ );
}
else
{
messageClient(%client, '', "\c2To Display This Message To Server, Use /getrank showall");
}

}
else
{
messageClient(%client, '', "\c2Only Staff May Use This Command.");
}
}
};

ActivatePackage(GetRank);

Console says:
Code: [Select]
Executing Add-Ons/Server_AutoRanks_GetRank/server.cs.
Add-Ons/Server_AutoRanks_GetRank/server.cs Line: 35 - Syntax error.
>>> Some error context, with ## on sides of error halt:
^^^^%super = getWord(%line,3);
^^^^%mod = getWord(%line,4);
^^^^%reg = getWord(%line,5);
^^^^%dev = getWord(%line,6);
>>> Error report complete.
« Last Edit: February 09, 2016, 04:38:40 PM by shawn6183 »

I don't know where the syntax error is, but even if there was no error, it wouldn't work right.

if (%id = %target.getBLID())
Should be
if (%id == %target.getBLID())
You're defining %id as %target.getBLID() and it'll always be true(unless you're Badspot).
Use == to compare numbers.

if (%showall == "showall")
Should be
if (%showall $= "showall")
$= is to compare strings.
But you never define $showAll before this. So this statement will never be true.

Don't end it with @(this is probably a syntax error).
messageClient(%client, '', "\c2Member: " @ %member @ );
Just do
messageClient(%client, '', "\c2Member: " @ %member);
And instead of doing @ to connect it, you can use SPC to connect it to the string with a space in between.

if (%showall == "showall")
Should be
if (%showall $= "showall")
$= is to compare strings.
But you never define $showAll before this. So this statement will never be true.

the showall is defined when you call the function i.e. /getrank 47695 showall

Updated server file:
Code: [Select]
if(isPackage(GetRank))
deactivatepackage(GetRank);

package GetRank
{
function serverCmdGetrank (%client, %target, %showall)
{
if (%client.isStaff)
{
%file = new fileObject();
%file.openForRead("config/server/AutoRank/Members.txt");
%id = 0;
while (%id != %target.getBLID())
{
if (%file.isEOF())
break;
%line = %file.readline();
%id = getWord(%line,0);
}

if (%id == %target.getBLID())
{
%member = getWord(%line,1);
%admin = getWord(%line,2);
%super = getWord(%line,3);
%mod = getWord(%line,4);
%reg = getWord(%line,5);
%dev = getWord(%line,6);

if (%showall $= "showall")
{
messageAll(%client, '', "\c2User" SPC @ %id @ SPC "Has The Following Privledges:" );
messageAll(%client, '', "\c2Member:" SPC @ %member);
messageAll(%client, '', "\c2Admin:" SPC @ %admin);
messageAll(%client, '', "\c2Super Admin:" SPC @ %super);
messageAll(%client, '', "\c2Moderator:" SPC @ %mod);
messageAll(%client, '', "\c2Regular:" SPC @ %reg);
messageAll(%client, '', "\c2Developer:" SPC @ %dev);
}
else
{
messageClient(%client, '', "\c2User" SPC @ %id @ SPC "Has The Following Privledges:" );
messageClient(%client, '', "\c2Member:" SPC @ %member);
messageClient(%client, '', "\c2Admin:" SPC @ %admin);
messageClient(%client, '', "\c2Super Admin:" SPC @ %super);
messageClient(%client, '', "\c2Moderator:" SPC @ %mod);
messageClient(%client, '', "\c2Regular:" SPC @ %reg);
messageClient(%client, '', "\c2Developer:" SPC @ %dev);
messageClient(%client, '', "\c2To Display This Message To Server, Use /getrank showall");
}
}
else
{
messageClient(%client, '', "\c2User Not Found / Has No Privledges" );
}
}
else
{
messageClient(%client, '', "\c2Only Staff May Use This Command.");
}
}
};

ActivatePackage(GetRank);

console log:
Code: [Select]
Executing Add-Ons/Server_AutoRanks_GetRank/server.cs.
Add-Ons/Server_AutoRanks_GetRank/server.cs Line: 37 - Syntax error.
>>> Some error context, with ## on sides of error halt:
^^^^%member = getWord(%line,1);
^^^^%admin = getWord(%line,2);
^^^^%super = getWord(%line,3);
^^^^%mod = getWord(%line,4);
^^^^%reg = getWord(%line,5);
^^^^%dev = getWord(%line,6);
^^^^
^^^^{
>>> Error report complete.

If you edit an add-on while Blockland is running and you try to run it after running it at least once in the same session, the add-on breaks claiming a syntax error. Always. Try restarting your Blockland and running the script. I see nothing wrong there.

SPC @
@ SPC

choose one or the other, you can't have both right after one another

EDIT: also "privileges"

I got it to work. This issue was I was doing SPC @ %id and it needed to be SPC %id.