Simple greeter bot: Difference between revisions

From Virtual Paradise Wiki
Jump to navigation Jump to search
No edit summary
new syntax highlighting tags
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
<C>
<syntaxhighlight lang="cpp">
#include <VPSDK/VP.h>
#include <VPSDK/VP.h>
#include <stdio.h>
#include <stdio.h>
Line 61: Line 61:
     vp_say(sdk, (char*)&message);
     vp_say(sdk, (char*)&message);
}
}
</C>
</syntaxhighlight>
==C#==
==C#==
In order to use the Virtual Paradise .Net SDK you must:
In order to use the Virtual Paradise .Net SDK you must:
Line 68: Line 68:
*The latest version of the native VP x86 SDK, that is supported, is included in the VPNET distribution
*The latest version of the native VP x86 SDK, that is supported, is included in the VPNET distribution


<CSharp>
<syntaxhighlight lang="csharp">
using System;
using System;
using VpNet.Core;
using VpNet.Core;
Line 140: Line 140:
     }
     }
}
}
</CSharp>
</syntaxhighlight>


==VB .Net==
==VB .Net==
<VBNet>
<syntaxhighlight lang="vbnet">
Imports VpNet.Core
Imports VpNet.Core
Imports VpNet.Core.EventData
Imports VpNet.Core.EventData
Line 210: Line 210:


End Module
End Module
</VBNet>
</syntaxhighlight>
[[Category: Bots]]
[[Category: Bots]]
[[Category: SDK]]
[[Category: SDK]]

Revision as of 17:41, 6 February 2015

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#

In order to use the Virtual Paradise .Net SDK you must:

  • Have Visual Studio or Visual C# Express installed and configured
  • Download the .Net SDK from the VPNet SDK Download page
  • The latest version of the native VP x86 SDK, that is supported, is included in the VPNET distribution
using System;
using VpNet.Core;
using VpNet.Core.EventData;
using VpNet.Core.Structs;

class ExampleBot
{
    //Virtual Paradise SDK Instance
    public static Instance VPInstance;

    static void Main(string[] args)
    {
        try
        {
            //Initialize the Virtual Paradise .Net SDK
            VPInstance = new Instance();

            //Register the events you wish to capture (Such as avatar entry)
            //This must be done AFTER the initialization, but before connection
            VPInstance.EventAvatarAdd += EventAvatarAdd;
            VPInstance.EventAvatarDelete += EventAvatarDelete;

            //Connect to the universe using the default server settings
            VPInstance.Connect();

            //Login to the universe using your username, password,
            //and the desired bot name
            VPInstance.Login("Username", "Password", "MyBotName");

            //Enter the world
            VPInstance.Enter("MyWorld");

            //Set the bot's position in the world 
            VPInstance.UpdateAvatar(0.0f, 0.0f, 0.0f);

            //In order to process any pending network events and data
            //we must repeatedly call the Wait() function
            //Here we use a wait of 50 Miliseconds
            while (true)
            {
                VPInstance.Wait(50);
            }
        }

        //This allows us to cleanly catch and handle 
        //any errors the SDK throws. In normal usage,
        //you should handle specific errors, and not
        //use a catch-all like the one below.
        catch (VpException ex)
        {
            Console.WriteLine("{0}", ex.Message);
        }

        //This pauses the console on crash, so that
        //you can review the error thrown by the SDK
        Console.Read();
    }
    static void EventAvatarAdd(Instance Sender, Avatar AvatarData)
    {
        //A user has entered the world (or the bot's range)
        //We print the user's name followed by a brief message
        VPInstance.Say(AvatarData.Name + " Entered");
    }

    static void EventAvatarDelete(Instance Sender, Avatar AvatarData)
    {
        //A user has left the world (or the bot's range)
        //We print the user's name followed by a brief message
        VPInstance.Say(AvatarData.Name + " Left");
    }
}

VB .Net

Imports VpNet.Core
Imports VpNet.Core.EventData
Imports VpNet.Core.Structs

Module ExampleBot
    'Virtual Paradise SDK Instance
    Public VPInstance As Instance

    Sub Main(ByVal args As String())
        Try
            'Initialize the Virtual Paradise .Net SDK
            VPInstance = New Instance()

            'Register the events you wish to capture (Such as avatar entry)
            'This must be done AFTER the initialization, but before connection
            AddHandler VPInstance.EventAvatarAdd, AddressOf EventAvatarAdd
            AddHandler VPInstance.EventAvatarDelete, AddressOf EventAvatarDelete

            'Connect to the universe using the default server settings
            VPInstance.Connect()

            'Login to the universe using your username, password,
            'and the desired bot name
            VPInstance.Login("Username", "Password", "MyBotName")

            'Enter the world
            VPInstance.Enter("MyWorld")

            'Set the bot's position in the world 
            VPInstance.UpdateAvatar(0.0F, 0.0F, 0.0F)

            'Write success message to the console
            Console.WriteLine("Login success!")

            'In order to process any pending network events and data
            'we must repeatedly call the Wait() function
            'Here we use a wait of 50 Miliseconds
            While True
                VPInstance.Wait(50)
            End While

            'This allows us to cleanly catch and handle 
            'any errors the SDK throws. In normal usage,
            'you should handle specific errors, and not
            'use a catch-all like the one below.
        Catch ex As VpException
            Console.WriteLine("{0}", ex.Message)
        End Try

        'This pauses the console on crash, so that
        'you can review the error thrown by the SDK
        Console.Read()
    End Sub
    Private Sub EventAvatarAdd(ByVal Sender As Instance, ByVal AvatarData As Avatar)
        'A user has entered the world (or the bot's range)
        'We print the user's name followed by a brief message
        VPInstance.Say(AvatarData.Name & " Entered")
    End Sub

    Private Sub EventAvatarDelete(ByVal Sender As Instance, ByVal AvatarData As Avatar)
        'A user has left the world (or the bot's range)
        'We print the user's name followed by a brief message
        VPInstance.Say(AvatarData.Name & " Left")
    End Sub

End Module