Simple greeter bot: Difference between revisions
Jump to navigation
Jump to search
m →C# |
Fix code to work with newer SDK |
||
(7 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
*Have Visual Studio, Visual C++ Express or another compatible C/C++ IDE+Compiler installed and [[developer environments#C|configured]] | *Have Visual Studio, Visual C++ Express or another compatible C/C++ IDE+Compiler installed and [[developer environments#C|configured]] | ||
*Download the x86 SDK from the [http://dev.virtualparadise.org/downloads.php Developer Downloads] page | *Download the x86 SDK from the [http://dev.virtualparadise.org/downloads.php Developer Downloads] page | ||
< | <syntaxhighlight lang="cpp"> | ||
#include < | #include <VPSDK/VP.h> | ||
#include <stdio.h> | #include <stdio.h> | ||
#include <stdlib.h> | #include <stdlib.h> | ||
Line 12: | Line 12: | ||
#define Password "password" | #define Password "password" | ||
#define Botname "greeterbot" | #define Botname "greeterbot" | ||
#define Worldname " | #define Worldname "testworld" | ||
void event_avatar_add(VPInstance sdk); | void event_avatar_add(VPInstance sdk); | ||
Line 19: | Line 19: | ||
{ | { | ||
int err; | int err; | ||
VPInstance sdk; | |||
if(err = vp_init(VPSDK_VERSION)) | if(err = vp_init(VPSDK_VERSION)) | ||
{ | { | ||
Line 25: | Line 27: | ||
} | } | ||
sdk = vp_create(NULL); | |||
sdk = vp_create(); | |||
if(err = vp_connect_universe(sdk, "universe.virtualparadise.org", 57000)) | if(err = vp_connect_universe(sdk, "universe.virtualparadise.org", 57000)) | ||
Line 56: | Line 57: | ||
void event_avatar_add(VPInstance sdk) | void event_avatar_add(VPInstance sdk) | ||
{ | { | ||
char message[ | char message[300]; | ||
sprintf((char*)&message, "Hello, %s!", vp_string(sdk, VP_AVATAR_NAME)); | sprintf((char*)&message, "Hello, %s!", vp_string(sdk, VP_AVATAR_NAME)); | ||
vp_say(sdk, (char*)&message); | vp_say(sdk, (char*)&message); | ||
} | } | ||
</ | </syntaxhighlight> | ||
==C#== | ==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 [https://www.nuget.org/packages/vpnet VpNet NuGet package] (version 1.0.9.2960-alpha or later) | ||
* | * <code>vpsdk.dll</code> present in the output folder, this can be downloaded from the [https://dev.virtualparadise.org/downloads.php developer downloads page] | ||
* Language version for your project set to at least C# 7.1 (In Visual Studio: Project Properties ▶ Build ▶ Advanced... ▶ Language Version) | |||
< | <syntaxhighlight lang="csharp"> | ||
using System | using System.Threading.Tasks; | ||
using VpNet; | |||
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) | 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}"); | |||
} | |||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
==VB .Net== | ==VB .Net== | ||
Requirements for building and running the code below: | |||
* VB console application project (at least .NET Framework 4.6.1 or .NET Core 2.0) | |||
* Reference to the [https://www.nuget.org/packages/vpnet VpNet NuGet package] (version 1.0.9.2960-alpha or later) | |||
Imports VpNet | * <code>vpsdk.dll</code> present in the output folder, this can be downloaded from the [https://dev.virtualparadise.org/downloads.php developer downloads page] | ||
<syntaxhighlight lang="vbnet"> | |||
Imports VpNet | |||
Module | Module Program | ||
Sub Main(args As String()) | |||
MainAsync().GetAwaiter().GetResult() | |||
End Sub | |||
Sub Main( | |||
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}") | |||
Private Sub | |||
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 | ||
</ | </syntaxhighlight> | ||
[[Category: Bots]] | [[Category: Bots]] | ||
[[Category: SDK]] | [[Category: SDK]] |
Latest revision as of 22:12, 30 July 2021
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(NULL);
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
Requirements for building and running the code below:
- VB 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
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