<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.virtualparadise.org/index.php?action=history&amp;feed=atom&amp;title=Vp_query_cell</id>
	<title>Vp query cell - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.virtualparadise.org/index.php?action=history&amp;feed=atom&amp;title=Vp_query_cell"/>
	<link rel="alternate" type="text/html" href="https://wiki.virtualparadise.org/index.php?title=Vp_query_cell&amp;action=history"/>
	<updated>2026-05-04T21:12:42Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.virtualparadise.org/index.php?title=Vp_query_cell&amp;diff=4236&amp;oldid=prev</id>
		<title>Sleepy E: Basic layout</title>
		<link rel="alternate" type="text/html" href="https://wiki.virtualparadise.org/index.php?title=Vp_query_cell&amp;diff=4236&amp;oldid=prev"/>
		<updated>2016-12-12T21:06:06Z</updated>

		<summary type="html">&lt;p&gt;Basic layout&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{sdk method page|query_cell|Query the objects in a cell.&lt;br /&gt;
|paramex=x, z&lt;br /&gt;
|parameters=&lt;br /&gt;
  {{sdk parameter row|int |x |X cell coordinate}}&lt;br /&gt;
  {{sdk parameter row|int |z |Z cell coordinate}}&lt;br /&gt;
|returncodes=&lt;br /&gt;
  {{sdk return code row|NOT_IN_WORLD |Bot is not currently in a world}}&lt;br /&gt;
|behavior=&lt;br /&gt;
|caveats=&amp;lt;i&amp;gt;x&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;z&amp;lt;/i&amp;gt; are not the same as object or avatar coordinates. See the example.&lt;br /&gt;
|examples=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int cell_from_coordinate(double val)&lt;br /&gt;
{&lt;br /&gt;
  return val &amp;lt; 0 ? static_cast&amp;lt;int&amp;gt;(val) - 1 : static_cast&amp;lt;int&amp;gt;(val);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int query_at(VPInstance sdk, double x, double z)&lt;br /&gt;
{&lt;br /&gt;
  int cell_x, cell_z;&lt;br /&gt;
&lt;br /&gt;
  cell_x = cell_from_coordinate(x);&lt;br /&gt;
  cell_z = cell_from_coordinate(z);&lt;br /&gt;
&lt;br /&gt;
  return vp_query_cell(sdk, cell_x, cell_z);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handle_object(VPInstance sdk)&lt;br /&gt;
{&lt;br /&gt;
  const char *model;&lt;br /&gt;
&lt;br /&gt;
  model = vp_string(sdk, VP_OBJECT_MODEL);&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;Found a %s in the cell\n&amp;quot;, model);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handle_cell_end(VPInstance sdk)&lt;br /&gt;
{&lt;br /&gt;
  vp_say(sdk, &amp;quot;Query finished!&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int g_owner_session;&lt;br /&gt;
double g_owner_x;&lt;br /&gt;
double g_owner_z;&lt;br /&gt;
&lt;br /&gt;
void handle_chat(VPInstance sdk)&lt;br /&gt;
{&lt;br /&gt;
  int session;&lt;br /&gt;
&lt;br /&gt;
  session = vp_int(sdk, VP_AVATAR_SESSION);&lt;br /&gt;
&lt;br /&gt;
  if (session == g_owner_session) // Ignore chat from other people than owner&lt;br /&gt;
  {&lt;br /&gt;
    char *str;&lt;br /&gt;
&lt;br /&gt;
    str = vp_string(sdk, VP_CHAT_MESSAGE);&lt;br /&gt;
&lt;br /&gt;
    if (stricmp(str, &amp;quot;query&amp;quot;) == 0) // Check if owner wants to query the cell at his/her position&lt;br /&gt;
      query_at(sdk, g_owner_x, g_owner_z);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handle_avatar_add(VPInstance sdk)&lt;br /&gt;
{&lt;br /&gt;
  int user_id;&lt;br /&gt;
&lt;br /&gt;
  user_id = vp_int(sdk, VP_USER_ID);&lt;br /&gt;
  if (user_id == vp_int(sdk, VP_MY_USER_ID))&lt;br /&gt;
  {&lt;br /&gt;
    g_owner_session = vp_int(sdk, VP_AVATAR_SESSION);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handle_avatar_change(VPInstance sdk) // Keep track of where the owner of the bot is at in the world&lt;br /&gt;
{&lt;br /&gt;
  int session;&lt;br /&gt;
&lt;br /&gt;
  session = vp_int(sdk, VP_AVATAR_SESSION);&lt;br /&gt;
&lt;br /&gt;
  if (session == g_owner_session)&lt;br /&gt;
  {&lt;br /&gt;
    g_owner_x = vp_double(sdk, VP_AVATAR_X);&lt;br /&gt;
    g_owner_z = vp_double(sdk, VP_AVATAR_Z);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main(int argc, const char* argv[])&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  //...&lt;br /&gt;
&lt;br /&gt;
  vp_event_set(sdk, VP_EVENT_OBJECT, handle_object);&lt;br /&gt;
  vp_event_set(sdk, VP_EVENT_CELL_END, handle_cell_end);&lt;br /&gt;
  vp_event_set(sdk, VP_EVENT_CHAT, handle_chat);&lt;br /&gt;
  vp_event_set(sdk, VP_EVENT_AVATAR_ADD, handle_avatar_add);&lt;br /&gt;
  vp_event_set(sdk, VP_EVENT_AVATAR_CHANGE, handle_avatar_change);&lt;br /&gt;
&lt;br /&gt;
  //...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
|seealso=&lt;br /&gt;
* {{sdk method|query_cell_revision}}&lt;br /&gt;
* {{sdk event|OBJECT}}&lt;br /&gt;
* {{sdk event|CELL_END}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Sleepy E</name></author>
	</entry>
</feed>