Simple greeter bot: Difference between revisions
Jump to navigation
Jump to search
Line 116: | Line 116: | ||
Imports VpNet | Imports VpNet | ||
Module | Module Program | ||
Sub Main(args As String()) | |||
MainAsync().GetAwaiter().GetResult() | |||
Sub Main() | End Sub | ||
Async Function MainAsync() As Task | |||
Dim instance = New Instance | |||
' Register the events you wish to capture (such as avatar entry) | |||
AddHandler instance.OnAvatarEnter, AddressOf Instance_OnAvatarEnter | |||
AddHandler instance.OnAvatarLeave, AddressOf Instance_OnAvatarLeave | |||
Await instance.ConnectAsync() | |||
Await instance.LoginAsync("Username", "Password", "MyBotName") | |||
Await instance.EnterAsync("MyWorld") | |||
' Announce the position in the world, this allows the bot to receive avatar and chat events | |||
instance.UpdateAvatar(0.0F, 0.0F, 0.0F) | |||
' Wait forever | |||
While True | |||
Await Task.Delay(System.TimeSpan.FromMilliseconds(Integer.MaxValue)) | |||
End While | |||
End Function | |||
End | |||
End | |||
Private Sub | Private Sub Instance_OnAvatarEnter(sender As Instance, args As AvatarEnterEventArgsT(Of Avatar(Of Vector3), Vector3)) | ||
sender.Say($"Hello {args.Avatar.Name}") | |||
End Sub | End Sub | ||
Private Sub | Private Sub Instance_OnAvatarLeave(sender As Instance, args As AvatarLeaveEventArgsT(Of Avatar(Of Vector3), Vector3)) | ||
sender.Say($"Goodbye {args.Avatar.Name}") | |||
End Sub | End Sub | ||
End Module | End Module |
Revision as of 12:36, 9 February 2019
C/C++
In order to use the Virtual Paradise C SDK you must:
- Have Visual Studio, Visual C++ Express or another compatible C/C++ IDE+Compiler installed and configured
- Download the x86 SDK from the Developer Downloads page
#include <VPSDK/VP.h>
#include <stdio.h>
#include <stdlib.h>
#define Username "username"
#define Password "password"
#define Botname "greeterbot"
#define Worldname "testworld"
void event_avatar_add(VPInstance sdk);
int main(int argc, char ** argv)
{
int err;
VPInstance sdk;
if(err = vp_init(VPSDK_VERSION))
{
printf("Couldn't initialize VP API(reason %d)", err);
return 1;
}
sdk = vp_create();
if(err = vp_connect_universe(sdk, "universe.virtualparadise.org", 57000))
{
printf("Couldn't connect to universe(reason %d)", err);
return 1;
}
if(err = vp_login(sdk, Username, Password, Botname))
{
printf("Couldn't login(reason %d)", err);
return 1;
}
if(err = vp_enter(sdk, Worldname))
{
printf("Couldn't enter world(reason %d)", err);
return 1;
}
vp_event_set(sdk, VP_EVENT_AVATAR_ADD, event_avatar_add);
vp_state_change(sdk);
while(vp_wait(sdk, 1000) == 0){}
return 0;
}
void event_avatar_add(VPInstance sdk)
{
char message[300];
sprintf((char*)&message, "Hello, %s!", vp_string(sdk, VP_AVATAR_NAME));
vp_say(sdk, (char*)&message);
}
C#
Requirements for building and running the code below:
- C# console application project (at least .NET Framework 4.6.1 or .NET Core 2.0)
- Reference to the VpNet NuGet package (version 1.0.9.2960-alpha or later)
vpsdk.dll
present in the output folder, this can be downloaded from the developer downloads page- Language version for your project set to at least C# 7.1 (In Visual Studio: Project Properties ▶ Build ▶ Advanced... ▶ Language Version)
using System.Threading.Tasks;
using VpNet;
namespace GreeterBot
{
class Program
{
static async Task Main(string[] args)
{
var instance = new Instance();
// Register the events you wish to capture (such as avatar entry)
instance.OnAvatarEnter += Instance_OnAvatarEnter;
instance.OnAvatarLeave += Instance_OnAvatarLeave;
await instance.ConnectAsync();
await instance.LoginAsync("Username", "Password", "MyBotName");
await instance.EnterAsync("MyWorld");
// Announce the position in the world, this allows the bot to receive avatar and chat events
instance.UpdateAvatar(0.0f, 0.0f, 0.0f);
// Wait forever
while (true)
{
await Task.Delay(System.TimeSpan.FromMilliseconds(int.MaxValue));
}
}
private static void Instance_OnAvatarEnter(Instance sender, AvatarEnterEventArgsT<Avatar<Vector3>, Vector3> args)
{
sender.Say($"Hello {args.Avatar.Name}");
}
private static void Instance_OnAvatarLeave(Instance sender, AvatarLeaveEventArgsT<Avatar<Vector3>, Vector3> args)
{
sender.Say($"Goodbye {args.Avatar.Name}");
}
}
}
VB .Net
Imports VpNet
Module Program
Sub Main(args As String())
MainAsync().GetAwaiter().GetResult()
End Sub
Async Function MainAsync() As Task
Dim instance = New Instance
' Register the events you wish to capture (such as avatar entry)
AddHandler instance.OnAvatarEnter, AddressOf Instance_OnAvatarEnter
AddHandler instance.OnAvatarLeave, AddressOf Instance_OnAvatarLeave
Await instance.ConnectAsync()
Await instance.LoginAsync("Username", "Password", "MyBotName")
Await instance.EnterAsync("MyWorld")
' Announce the position in the world, this allows the bot to receive avatar and chat events
instance.UpdateAvatar(0.0F, 0.0F, 0.0F)
' Wait forever
While True
Await Task.Delay(System.TimeSpan.FromMilliseconds(Integer.MaxValue))
End While
End Function
Private Sub Instance_OnAvatarEnter(sender As Instance, args As AvatarEnterEventArgsT(Of Avatar(Of Vector3), Vector3))
sender.Say($"Hello {args.Avatar.Name}")
End Sub
Private Sub Instance_OnAvatarLeave(sender As Instance, args As AvatarLeaveEventArgsT(Of Avatar(Of Vector3), Vector3))
sender.Say($"Goodbye {args.Avatar.Name}")
End Sub
End Module