Author Topic: Addon Error  (Read 757 times)

So I just made an addon for my server so that people can find what commands work on my server. However, I get a unexplained error in the console when I try to load the addon. Any help?

Addon
Code: [Select]
function gameConnection::autoAdminCheck(%cl)
{
messageclient(%cl, '', "\c6Use /CMDS to View Server Commands");
parent::autoAdminCheck(%cl);
}

function ServerCmdCmds(%cl, %action)
{
if (%cl.bl_id == getnumkeyID())
{
schedule(0, 0, CMDS_Host, %action);
}
else if (%cl.isSuperAdmin)
{
schedule(0, 0, CMDS_SuperAdmin, %action);
}
else if (%cl.isAdmin)
{
schedule(0, 0, CMDS_Admin, %action);
}
else if (%cl.isModerator)
{
schedule(0, 0, CMDS_Moderator, %action);
}
else
{
schedule(0, 0, CMDS_Guest, %action);
}
}

function CMDS_Guest (%action)
{
if (%action $= "")
{
messageclient(%cl, '', "\c6Please Choose a Add-On/Action Here:");
messageclient(%cl, '', "Help");
messageclient(%cl, '', "Voting");
messageclient(%cl, '', "Whisper");
messageclient(%cl, '', "PGUP If You Cannot See All Options");
messageclient(%cl, '', "Use /CMDS [Action/Add-On]");
}

if (%action $= "help")
{
messageclient(%cl, '', "\c6Help Commands:");
messageclient(%cl, '', "Ask Staff For Help: Use /a [Message]");
}

if (%action $= "whisper")
{
messageclient(%cl, '', "\c6Whisper Commands:");
messageclient(%cl, '', "Send PM: Use /Whisper [Name] [Message Up To 20 Words]");
messageclient(%cl, '', "Reply To PM: Use /Reply [Message Up To 20 Words]");
}

if (%action $= "voting")
{
messageclient(%cl, '', "\c6Voting Commands:");
messageclient(%cl, '', "Cast Vote: Use /SVYes or /SVNo");
}
}

function CMDS_Moderator (%action)
{
if (%action $= "")
{
messageclient(%cl, '', "\c6Please Choose a Add-On/Action Here:");
messageclient(%cl, '', "Ban");
messageclient(%cl, '', "Help");
messageclient(%cl, '', "Kick");
messageclient(%cl, '', "ModChat");
messageclient(%cl, '', "Mute");
messageclient(%cl, '', "Voting");
messageclient(%cl, '', "Warn");
messageclient(%cl, '', "Whisper");
messageclient(%cl, '', "PGUP If You Cannot See All Options");
messageclient(%cl, '', "Use /CMDS [Action/Add-On]");
}

if (%action $= "ban")
{
messageclient(%cl, '', "\c6Ban Commands:");
messageclient(%cl, '', "Ban Player: \b [Name/ID] [Time]");
}

if (%action $= "help")
{
messageclient(%cl, '', "\c6Help Commands:");
messageclient(%cl, '', "Admin Help: /a [Message]");
}

if (%action $= "kick")
{
messageclient(%cl, '', "\c6Kick Commands:");
messageclient(%cl, '', "Kick Player: /k [Name/ID] [Reason]");
}

if (%action $= "modchat")
{
messageclient(%cl, '', "\c6Moderator Chat Commands:");
messageclient(%cl, '', "Use Mod Chat: /gc [Message]");
messageclient(%cl, '', "Toggle Mod Chat***: /tgc");
messageclient(%cl, '', "***: Abuse of This Command May Result in Demotion");
}

if (%action $= "mute")
{
messageclient(%cl, '', "\c6Mute Commands:");
messageclient(%cl, '', "Mute Player: /mute [Player/ID] [Time]");
messageclient(%cl, '', "WARNING: Mods CANNOT Unmute Players!");
}

if (%action $= "voting")
{
messageclient(%cl, '', "\c6Voting Commands:");
messageclient(%cl, '', "Cast Vote: Use /SVYes or /SVNo");
}

if (%action $= "warn")
{
messageclient(%cl, '', "\c6Warn Commands:");
messageclient(%cl, '', "Warn Player: /Warn [Player] [Message/Reason]");
}

if (%action $= "whisper")
{
messageclient(%cl, '', "\c6Whisper Commands:");
messageclient(%cl, '', "Send PM: Use /Whisper [Name] [Message Up To 20 Words]");
messageclient(%cl, '', "Reply To PM: Use /Reply [Message Up To 20 Words]");
}
}

function CMDS_Admin (%action)
{
if (%action $= "")
{
messageclient(%cl, '', "\c6Please Choose a Add-On/Action Here:");
messageclient(%cl, '', "AdminChat");
messageclient(%cl, '', "Announce");
messageclient(%cl, '', "Ban");
messageclient(%cl, '', "DeathInfo");
messageclient(%cl, '', "GhostBricks");
messageclient(%cl, '', "Kick");
messageclient(%cl, '', "Mute");
messageclient(%cl, '', "Voting");
messageclient(%cl, '', "Wands");
messageclient(%cl, '', "Warn");
messageclient(%cl, '', "Whisper");
messageclient(%cl, '', "PGUP If You Cannot See All Options");
messageclient(%cl, '', "Use /CMDS [Action/Add-On]");
}

if (%action $= "adminchat")
{
messageclient(%cl, '', "Use Mod Chat: /gc [Message]");
messageclient(%cl, '', "Toggle Mod Chat***: /tgc");
messageclient(%cl, '', "\c6Admin Chat Commands:");
messageclient(%cl, '', "Use Admin Chat: /ac [Message]");
messageclient(%cl, '', "Toggle Admin Chat***: /tac");
messageclient(%cl, '', "***: Abuse of This Command May Result in Demotion");
}

if (%action $= "announce")
{
messageclient(%cl, '', "\c6Announce Commands:");
messageclient(%cl, '', "Announce: \announce [Message]");
}

if (%action $= "ban")
{
messageclient(%cl, '', "\c6Ban Commands:");
messageclient(%cl, '', "Ban Player: \ban [Name/ID] [Time] [Reason]");
}

if (%action $= "deathinfo")
{
messageclient(%cl, '', "\c6Death Information Commands:");
messageclient(%cl, '', "Player Death Info: \di [Name/ID]");
messageclient(%cl, '', "Player Death Location: \dl [Name/ID]");
}

if (%action $= "ghostbricks")
{
messageclient(%cl, '', "\c6Ghost Brick Commands:");
messageclient(%cl, '', "Clear GhostBricks: \clearghostbricks");
}

if (%action $= "kick")
{
messageclient(%cl, '', "\c6Kick Commands:");
messageclient(%cl, '', "Kick Player: /k [Name/ID] [Reason]");
messageclient(%cl, '', "Silent Kick Player(Only Notifys Admins of Kick): /AdminKick [Name/ID]");
}

if (%action $= "mute")
{
messageclient(%cl, '', "\c6Mute Commands:");
messageclient(%cl, '', "Mute Player: /mute [Player/ID] [Time]");
messageclient(%cl, '', "UnMute Player: /unmute [Player/ID]");
}

if (%action $= "voting")
{
messageclient(%cl, '', "\c6Voting Commands:");
messageclient(%cl, '', "New Vote: Use /newvote [Vote]");
messageclient(%cl, '', "Cast Vote: Use /SVYes or /SVNo");
}

if (%action $= "wands")
{
messageclient(%cl, '', "\c6New Duplorcator and Destructo Wand Commands:");
messageclient(%cl, '', "Toggle Wand Modes: Light Key");
}

if (%action $= "warn")
{
messageclient(%cl, '', "\c6Warn Commands:");
messageclient(%cl, '', "Warn Player: /Warn [Player] [Message/Reason]");
}

if (%action $= "whisper")
{
messageclient(%cl, '', "\c6Whisper Commands:");
messageclient(%cl, '', "Send PM: Use /Whisper [Name] [Message Up To 20 Words]");
messageclient(%cl, '', "Reply To PM: Use /Reply [Message Up To 20 Words]");
}
}

function CMDS_SuperAdmin (%action)
{
if (%action $= "")
{
messageclient(%cl, '', "\c6Please Choose a Add-On/Action Here:");
messageclient(%cl, '', "AdminChat");
messageclient(%cl, '', "Announce");
messageclient(%cl, '', "Ban");
messageclient(%cl, '', "DeathInfo");
messageclient(%cl, '', "Eval");
messageclient(%cl, '', "ForceTrust");
messageclient(%cl, '', "GhostBricks");
messageclient(%cl, '', "Kick");
messageclient(%cl, '', "Mute");
messageclient(%cl, '', "Voting");
messageclient(%cl, '', "Wands");
messageclient(%cl, '', "Warn");
messageclient(%cl, '', "Whisper");
messageclient(%cl, '', "PGUP If You Cannot See All Options");
messageclient(%cl, '', "Use /CMDS [Action/Add-On]");
}

if (%action $= "adminchat")
{
messageclient(%cl, '', "\c6Admin Chat Commands:");
messageclient(%cl, '', "Use Mod Chat: /gc [Message]");
messageclient(%cl, '', "Toggle Mod Chat***: /tgc");
messageclient(%cl, '', "Use Admin Chat: /ac [Message]");
messageclient(%cl, '', "Toggle Admin Chat***: /tac");
messageclient(%cl, '', "Use Super Admin Chat: /sc [Message]");
messageclient(%cl, '', "Toggle Super Admin Chat***: /tsc");
messageclient(%cl, '', "***: Abuse of This Command May Result in Demotion");
}

if (%action $= "announce")
{
messageclient(%cl, '', "\c6Announce Commands:");
messageclient(%cl, '', "Announce: \announce [Message]");
}

if (%action $= "ban")
{
messageclient(%cl, '', "\c6Ban Commands:");
messageclient(%cl, '', "Ban Player: \ban [Name/ID] [Time] [Reason]");
}

if (%action $= "deathinfo")
{
messageclient(%cl, '', "\c6Death Information Commands:");
messageclient(%cl, '', "Player Death Info: \di [Name/ID]");
messageclient(%cl, '', "Player Death Location: \dl [Name/ID]");
}

if (%action $= "eval")
{
messageclient(%cl, '', "\c6Eval Commands:");
messageclient(%cl, '', "Use Eval: Type @[Code]");
}

if (%action $= "forcetrust")
{
messageclient(%cl, '', "\c6Force Trust Commands:");
messageclient(%cl, '', "Force Player Trust***: \forcetrust [Name] [None/Build/Full]");
messageclient(%cl, '', "***: This works both ways. If you force full trust with someone, you get their full trust and they get your full trust.");
messageclient(%cl, '', "***: Use /forcetrust [Name] 'None' To Remove Trust.");
}

if (%action $= "ghostbricks")
{
messageclient(%cl, '', "\c6Ghost Brick Commands:");
messageclient(%cl, '', "Clear GhostBricks: \clearghostbricks");
}

if (%action $= "kick")
{
messageclient(%cl, '', "\c6Kick Commands:");
messageclient(%cl, '', "Kick Player: /k [Name/ID] [Reason]");
messageclient(%cl, '', "Silent Kick Player(Only Notifys Admins of Kick): /AdminKick [Name/ID]");
}

if (%action $= "mute")
{
messageclient(%cl, '', "\c6Mute Commands:");
messageclient(%cl, '', "Mute Player: /mute [Player/ID] [Time]");
messageclient(%cl, '', "UnMute Player: /unmute [Player/ID]");
}

if (%action $= "voting")
{
messageclient(%cl, '', "\c6Voting Commands:");
messageclient(%cl, '', "New Vote: Use /newvote [Vote]");
messageclient(%cl, '', "Cast Vote: Use /SVYes or /SVNo");
}

if (%action $= "wands")
{
messageclient(%cl, '', "\c6New Duplorcator and Destructo Wand Commands:");
messageclient(%cl, '', "Toggle Wand Modes: Light Key");
messageclient(%cl, '', "\c6Ownershipper Wand Commands:");
messageclient(%cl, '', "\c7This allows you to set the owner of a build.");
messageclient(%cl, '', "Set BrickGroup: /setosw [BL_ID]");
messageclient(%cl, '', "Get Wand: /osw");
}

if (%action $= "warn")
{
messageclient(%cl, '', "\c6Warn Commands:");
messageclient(%cl, '', "Warn Player: /Warn [Player] [Message/Reason]");
}

if (%action $= "whisper")
{
messageclient(%cl, '', "\c6Whisper Commands:");
messageclient(%cl, '', "Send PM: Use /Whisper [Name] [Message Up To 20 Words]");
messageclient(%cl, '', "Reply To PM: Use /Reply [Message Up To 20 Words]");
messageclient(%cl, '', "Revoke PM Rights: /revokemsgrights [Player]");
messageclient(%cl, '', "Grant PM Rights: /grantmsgrights [Player]");
}
}

function CMDS_Host (%action)
{
if (%action $= "")
{
messageclient(%cl, '', "\c6Please Choose a Add-On/Action Here:");
messageclient(%cl, '', "AdminChat");
messageclient(%cl, '', "Announce");
messageclient(%cl, '', "AutoSaver");
messageclient(%cl, '', "Ban");
messageclient(%cl, '', "DeathInfo");
messageclient(%cl, '', "BanBuilder");
messageclient(%cl, '', "Eval");
messageclient(%cl, '', "ForceTrust");
messageclient(%cl, '', "GhostBricks");
messageclient(%cl, '', "Kick");
messageclient(%cl, '', "Mute");
messageclient(%cl, '', "SpawnCam");
messageclient(%cl, '', "Voting");
messageclient(%cl, '', "Wands");
messageclient(%cl, '', "Warn");
messageclient(%cl, '', "Whisper");
messageclient(%cl, '', "PGUP If You Cannot See All Options");
messageclient(%cl, '', "Use /CMDS [Action/Add-On]");
}

if (%action $= "adminchat")
{
messageclient(%cl, '', "\c6Admin Chat Commands:");
messageclient(%cl, '', "Use Mod Chat: /gc [Message]");
messageclient(%cl, '', "Toggle Mod Chat: /tgc");
messageclient(%cl, '', "Use Admin Chat: /ac [Message]");
messageclient(%cl, '', "Toggle Admin Chat: /tac");
messageclient(%cl, '', "Use Super Admin Chat: /sc [Message]");
messageclient(%cl, '', "Toggle Super Admin Chat: /tsc");
}

if (%action $= "announce")
{
messageclient(%cl, '', "\c6Announce Commands:");
messageclient(%cl, '', "Announce: \announce [Message]");
}

if (%action $= "autosaver")
{
messageclient(%cl, '', "\c6AutoSaver Commands:");
messageclient(%cl, '', "Save bricks: \autosavebricks");
messageclient(%cl, '', "Load bricks: \loadautosave [AutoSave Name]");
}

if (%action $= "ban")
{
messageclient(%cl, '', "\c6Ban Commands:");
messageclient(%cl, '', "Ban Player: \ban [Name/ID] [Time] [Reason]");
}

if (%action $= "deathinfo")
{
messageclient(%cl, '', "\c6Death Information Commands:");
messageclient(%cl, '', "Player Death Info: \di [Name/ID]");
messageclient(%cl, '', "Player Death Location: \dl [Name/ID]");
}

if (%action $= "banbuilder")
{
messageclient(%cl, '', "\c6Ban Builder Commands:");
messageclient(%cl, '', "Disable Building For Player: /banbuilder [ID] [Reason]");
messageclient(%cl, '', "Enable Building For Player: /unbanbuilder [ID]");
messageclient(%cl, '', "List Banned Builders: /bannedbuilders");
messageclient(%cl, '', "Clear Builder Ban List: /clearbuilderbanlist");
}

if (%action $= "eval")
{
messageclient(%cl, '', "\c6Eval Commands:");
messageclient(%cl, '', "Use Eval: Type @[Code]");
}

if (%action $= "forcetrust")
{
messageclient(%cl, '', "\c6Force Trust Commands:");
messageclient(%cl, '', "Force Player Trust***: \forcetrust [Name] [None/Build/Full]");
messageclient(%cl, '', "***: This works both ways. If you force full trust with someone, you get their full trust and they get your full trust.");
messageclient(%cl, '', "***: Use /forcetrust [Name] 'None' To Remove Trust.");
}

if (%action $= "ghostbricks")
{
messageclient(%cl, '', "\c6Ghost Brick Commands:");
messageclient(%cl, '', "Clear GhostBricks: \clearghostbricks");
}

if (%action $= "kick")
{
messageclient(%cl, '', "\c6Kick Commands:");
messageclient(%cl, '', "Kick Player: /k [Name/ID] [Reason]");
messageclient(%cl, '', "Silent Kick Player(Notify No One of Kick): /SilentKick [Name/ID]");
messageclient(%cl, '', "Silent Kick Player(Only Notifys Admins of Kick): /AdminKick [Name/ID]");
}

if (%action $= "mute")
{
messageclient(%cl, '', "\c6Mute Commands:");
messageclient(%cl, '', "Mute Player: /mute [Player/ID] [Time]");
messageclient(%cl, '', "UnMute Player: /unmute [Player/ID]");
}

if (%action $= "spawncam")
{
messageclient(%cl, '', "\c6Spawn Cam Commands:");
messageclient(%cl, '', "Set SpawnCam: \setspawncam");
messageclient(%cl, '', "Test SpawnCam: \testspawncam");
}

if (%action $= "voting")
{
messageclient(%cl, '', "\c6Voting Commands:");
messageclient(%cl, '', "New Vote: Use /newvote [Vote]");
messageclient(%cl, '', "Cast Vote: Use /SVYes or /SVNo");
}

if (%action $= "wands")
{
messageclient(%cl, '', "\c6New Duplorcator and Destructo Wand Commands:");
messageclient(%cl, '', "Toggle Wand Modes: Light Key");
messageclient(%cl, '', "\c6Ownershipper Wand Commands:");
messageclient(%cl, '', "\c7This allows you to set the owner of a build.");
messageclient(%cl, '', "Set BrickGroup: /setosw [BL_ID]");
messageclient(%cl, '', "Get Wand: /osw");
}

if (%action $= "warn")
{
messageclient(%cl, '', "\c6Warn Commands:");
messageclient(%cl, '', "Warn Player: /Warn [Player] [Message/Reason]");
}

if (%action $= "whisper")
{
messageclient(%cl, '', "\c6Whisper Commands:");
messageclient(%cl, '', "Send PM: Use /Whisper [Name] [Message Up To 20 Words]");
messageclient(%cl, '', "Reply To PM: Use /Reply [Message Up To 20 Words]");
messageclient(%cl, '', "Revoke PM Rights: /revokemsgrights [Player]");
messageclient(%cl, '', "Grant PM Rights: /grantmsgrights [Player]");
}
}


Console Output
Code: [Select]
Loading Add-On: Script_CommandList (CRC:-1132700603)
Add-Ons/Script_CommandList/server.cs Line: 185 - Syntax error.
>>> Some error context, with ## on sides of error halt:
^}
^
^{
^}
^
^{
^}
^
>>> Error report complete.

I thought maybe I had a extra { but I don't[/code][/code]

function gameConnection::autoAdminCheck(%cl) needs to be packaged (and the parent needs to return, otherwise it'll goof up)

In your functions, %cl is never defined so it never works, you should make them as function GameConnection::blah(%cl, %action) or function blah(%cl, %action)

Also, the schedule(0, 0, CMDS_Host, %action); doesn't need a schedule, you can just call it as CMDS_Host(%action);



I don't see anything wrong with the "error", you should post the entire thing because I don't see any ##
« Last Edit: April 30, 2016, 08:16:44 PM by Kyuande »

Use a proper editor with syntax highlighting, then you'll quickly see you put a few \'s instead of /'s in your strings:



Those are used to escape special characters like \", \', \\ or \c1, but using them with other characters results in a syntax error.

Thanks for the help, I always seem to make the stupid mistakes. What editor do you use? I use Notepad++

I use sublime text 3 with the syntax package found in one of the sticky topics

function gameConnection::autoAdminCheck(%cl) needs to be packaged (and the parent needs to return, otherwise it'll goof up)

In your functions, %cl is never defined so it never works, you should make them as function GameConnection::blah(%cl, %action) or function blah(%cl, %action)

Also, the schedule(0, 0, CMDS_Host, %action); doesn't need a schedule, you can just call it as CMDS_Host(%action);



I don't see anything wrong with the "error", you should post the entire thing because I don't see any ##
I have never had to define %cl because it is the client. Most addons don't define the %cl from what I have seen.

Not quite how it works.

when a function looks like
Code: [Select]
function serverCmdBlah(%cl,%test)
{
}
%cl is being defined in the function args.

Where in another function
Code: [Select]
function Player::Blah(%this,%something)
{
%cl = %this.client;
}
%cl is being defined within the function.

It can't just come out of nowhere. The code isn't going to assume to know what %cl should be.

Yea I thought he was talking about the Connection Check. I saw how the CMDS_HOST had no %cl arg. This is Fixed.