VP EVENT TELEPORT: Difference between revisions
Jump to navigation
Jump to search
Roy Curtis (talk | contribs) m oops |
Roy Curtis (talk | contribs) added example (please check for c correctness) |
||
Line 22: | Line 22: | ||
#define Password "1234" | #define Password "1234" | ||
#define World "VP-Build" | #define World "VP-Build" | ||
VPInstance sdk; | |||
int main(int argc, char ** argv) | int main(int argc, char ** argv) | ||
Line 27: | Line 29: | ||
vp_init(VPSDK_VERSION); | vp_init(VPSDK_VERSION); | ||
sdk = vp_create(); | |||
vp_connect_universe(sdk, "universe.virtualparadise.org", 57000); | vp_connect_universe(sdk, "universe.virtualparadise.org", 57000); | ||
vp_login(sdk, Username, Password, "VPBot"); | vp_login(sdk, Username, Password, "VPBot"); | ||
vp_enter(sdk, World); | vp_enter(sdk, World); | ||
vp_state_change(sdk); | vp_state_change(sdk); | ||
vp_event_set(sdk, VP_EVENT_TELEPORT, on_teleport); | |||
while(vp_wait(sdk, 1000) == 0){} | while(vp_wait(sdk, 1000) == 0){} | ||
return 0; | return 0; | ||
} | |||
void event_teleport(VPInstance sdk) | |||
{ | |||
// Only teleports to given coordinates and rotation, not world | |||
// To teleport, we need to set our MY_* attributes to given teleport | |||
// attributes and change state | |||
vp_float_set(sdk, VP_MY_X, vp_float(sdk, VP_TELEPORT_X)); | |||
vp_float_set(sdk, VP_MY_Y, vp_float(sdk, VP_TELEPORT_Y)); | |||
vp_float_set(sdk, VP_MY_Z, vp_float(sdk, VP_TELEPORT_Z)); | |||
vp_float_set(sdk, VP_MY_PITCH, vp_float(sdk, VP_TELEPORT_PITCH)); | |||
vp_float_set(sdk, VP_MY_YAW, vp_float(sdk, VP_TELEPORT_YAW)); | |||
vp_state_change(sdk); | |||
} | } | ||
</c> | </c> | ||
|seealso= | |seealso= | ||
}} | }} |
Revision as of 04:37, 25 August 2013
Event set and handler snippet
vp_event_set(instance, VP_EVENT_TELEPORT, event_teleport);
void event_teleport(VPInstance instance) { }
A request for the receiving client to teleport to a location, sent to the client from a vp_teleport()
call.
Attributes
Attribute | Usage | |
---|---|---|
VP_AVATAR_SESSION | Source session ID of the teleport request | |
VP_TELEPORT_X | Destination X coordinate | |
VP_TELEPORT_Y | Destination Y coordinate | |
VP_TELEPORT_Z | Destination Z coordinate | |
VP_TELEPORT_PITCH | Destination pitch rotation | |
VP_TELEPORT_YAW | Destination yaw rotation | |
VP_TELEPORT_WORLD | Destination world |
Behavior
- If VP_TELEPORT_WORLD is a blank string, it should be assumed that the client use its current world
- This event is only broadcasted to the target session; no other sessions will see it
- The teleport is not enforced by the server; the client may ignore the event
Examples
- This is a minimal program example which contains no error checking
<c>
- include <vpsdk/VP.h>
- include <stdio.h>
- include <stdlib.h>
- define Username "User"
- define Password "1234"
- define World "VP-Build"
VPInstance sdk;
int main(int argc, char ** argv) {
vp_init(VPSDK_VERSION);
sdk = vp_create();
vp_connect_universe(sdk, "universe.virtualparadise.org", 57000); vp_login(sdk, Username, Password, "VPBot"); vp_enter(sdk, World); vp_state_change(sdk); vp_event_set(sdk, VP_EVENT_TELEPORT, on_teleport); while(vp_wait(sdk, 1000) == 0){} return 0;
}
void event_teleport(VPInstance sdk) {
// Only teleports to given coordinates and rotation, not world // To teleport, we need to set our MY_* attributes to given teleport // attributes and change state vp_float_set(sdk, VP_MY_X, vp_float(sdk, VP_TELEPORT_X)); vp_float_set(sdk, VP_MY_Y, vp_float(sdk, VP_TELEPORT_Y)); vp_float_set(sdk, VP_MY_Z, vp_float(sdk, VP_TELEPORT_Z)); vp_float_set(sdk, VP_MY_PITCH, vp_float(sdk, VP_TELEPORT_PITCH)); vp_float_set(sdk, VP_MY_YAW, vp_float(sdk, VP_TELEPORT_YAW));
vp_state_change(sdk);
} </c>