Script events

From StealthBot Wiki Backup
Jump to: navigation, search

Script events are VBScript subroutines that StealthBot recognizes and calls automatically when something happens in the bot.

Basics

If first you place code in your script, it will be executed as soon as the script is loaded. To wait until something else calls your code, you must put it inside of subroutines.

Every subroutine needs a triggering event to run: something needs to happen before the script can begin to do anything. For instance, if you want to make a greet, you need to first detect someone joining. Someone joining will be the triggering event we are looking for, so we would want the Event_UserJoins subroutine to catch that event. Now, if you want something to happen when a user types something, specifically in the white chat (channel chat), what event do you think we need? Something that catches someone talking, right? Event_UserTalk is what we'll look for.

Every event has a set of required parameters (in some cases, they require zero parameters) that must be present. You don't necessarily need to use all of them; you'll probably just want one of the variables. But you have to list all of them as the parameters for the subroutine or else the subroutine will not be called.

It will be overwhelming at first, but the events are named in such a way that they generally describe when they will be called: Event_PressedEnter is "fired" (called) when you press the Enter key from within the bot to send a message.

Template:Usersource

How to use

  1. Put the event in your script like so.
  2. Sub Event_EventName(EventArgument, EventArgument)
        ' place VBScript code here
    End Sub
    
  3. Put valid VBScript code in place of the comment.
  4. You're done! Your bot will do the specified instructions when the event occurs.

List of script events

Here are a list of the current script events that you can use:

Bot Status Changes

Event_FirstRuncalled when the bot first starts up and not on subsequent script reloads
Event_Loadoccurs after the bot loads or when a script is enabled/reloaded
Event_LoggedOnUsername, Productthe bot has successfully logged on to the server (but is not yet in a channel)
Event_ChannelJoinChannelName, Flagsthe bot joins a channel
Event_ChannelLeavethe bot leaves a channel
Event_Closeoccurs before the bot closes or the script is disabled/reloaded
Event_LoggedOffthe bot disconnects from Battle.net
Event_Shutdownoccurs when the bot closes

Bot Functions

Event_CommandCmdthe bot receives a command. Cmd is a Command object
Event_MessageQueuedMessageID, Message, Taga message is added to the message queue
Event_MessageSentMessageID, Message, Tagthe bot sends a message to the server
Event_ErrorNumber, Description, Line, Column, Text, Sourcean error occurs in the execution of the script
Event_PressedEnterTextwhen the enter key is pressed on the send box
Event_PacketReceivedProtocol, ID, Length, Datathe bot receives a packet from the server (or BNLS)
Event_PacketSentProtocol, ID, Length, Datathe bot sends a packet to the server (or BNLS)

Chat Events

Event_UserEmoteUsername, Flags, Messageoccurs when a user in the channel uses an emote (the /emote or /me command)
Event_UserInChannelUsername, Flags, Message, Ping, Product, StatUpdateoccurs once for each user in a channel when the bot joins
Event_UserJoinsUsername, Flags, Message, Ping, Product, Level, OriginalStatstring, Bannedoccurs when a user joins the channel
Event_UserLeavesUsername, Flagsoccurs when a user leaves the channel
Event_UserTalkUsername, Flags, Message, Pingoccurs when a user talks in a channel
Event_WhisperFromUserUsername, Flags, Message, Pingoccurs when the bot receives a private whisper from another user
Event_FlagUpdateUsername, NewFlags, Pingoccurs when a user receives an update to their channel flags

Server Events

Event_ChannelListChannels()when the bot receives a list of available channels from the server
Event_ServerErrorMessagethe bot receives an error message from the server
Event_ServerInfoMessagethe bot receives an informational message from the server
Event_KeyReturnKeyName, KeyValueoccurs when the bot receives a user's profile information

Clan Events

Event_BotClanInfoClanTag, Rankthe bot is told it is a member of a WarCraft III clan
Event_BotClanRankChangedNewRankthe bot is promoted or demoted in a WarCraft III Clan
Event_BotJoinedClanClanTagthe bot successfully joins a WarCraft III clan
Event_BotRemovedFromClanthe bot is removed from a WarCraft III clan or the clan is disbanded
Event_ClanCandidateListResult, Users()the bot receives a list of potential clan members
Event_ClanDemoteUserReplyResultthe server responds to an attempt to demote a clan member, result is boolean
Event_ClanDisbandReplyResultthe server responds to an attempt to disband the clan, result is boolean
Event_ClanInfoName, Rank, Onlinecalled once for each member of the clan
Event_ClanInvitationToken, ClanTag, RawClanTag, ClanName, InvitedBy, NewClanthe bot is invited to join a clan
Event_ClanInviteUserReplyResulta user responds to the bot's invitation to join a clan
Event_ClanMemberLeavesUsernamea member leaves the clan
Event_ClanMemberListUsername, Rank, Onlinecalled once for each member of a clan upon login
Event_ClanMemberUpdateUsername, Rank, Onlinea clan member changes rank or online status
Event_ClanMOTDMessagethe bot receives the clan's message of the day (every 30 seconds and when joining the clan channel)
Event_ClanPromoteUserReplyResultthe server responds to an attempt to promote a clan member, result is boolean
Event_ClanRemoveUserReplyResultthe server responds to the bot's attempt to remove a user, or itself, from the clan

Object events

An object event is a script event "called by" an object created with the CreateObj function.

The name of the event uses a similar format as the above script events, except that instead of the word Event, we use the name we has passed to CreateObj() as the name of the object.

For example, if we created a LongTimer object and named it LTimerObj, its Timer() event would fire an event called LTimerObj_Timer. The number of parameters and function name still must match what the event call is looking for.

It can be simplified to think of the script as having a global object named Event whose job is to call global script events and that all events follow the naming format of ObjectName_EventName.

See also