<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mygamingtalk.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Blackboard</id>
	<title>Blackboard - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mygamingtalk.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Blackboard"/>
	<link rel="alternate" type="text/html" href="https://mygamingtalk.com/wiki/index.php?title=Blackboard&amp;action=history"/>
	<updated>2026-05-02T07:42:17Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://mygamingtalk.com/wiki/index.php?title=Blackboard&amp;diff=1355&amp;oldid=prev</id>
		<title>Palota: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://mygamingtalk.com/wiki/index.php?title=Blackboard&amp;diff=1355&amp;oldid=prev"/>
		<updated>2023-02-13T07:02:28Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 07:02, 13 February 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Palota</name></author>
	</entry>
	<entry>
		<id>https://mygamingtalk.com/wiki/index.php?title=Blackboard&amp;diff=1354&amp;oldid=prev</id>
		<title>Palota: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://mygamingtalk.com/wiki/index.php?title=Blackboard&amp;diff=1354&amp;oldid=prev"/>
		<updated>2021-07-13T19:04:53Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{process header&lt;br /&gt;
 | title    = Blackboard Functions&lt;br /&gt;
 | section  =&lt;br /&gt;
 | previous = [[Omni-bot_Script_Reference | Script Reference]]&lt;br /&gt;
 | next     = &lt;br /&gt;
 | shortcut =&lt;br /&gt;
 | notes    =&lt;br /&gt;
}}&lt;br /&gt;
The blackboard is basically a global database that can be used to store generic data records. Items on the blackboard are made up of several common properties, and any number of additional user properties that can be passed as part of the table.&lt;br /&gt;
&lt;br /&gt;
These properties are &amp;#039;&amp;#039;&amp;#039;required&amp;#039;&amp;#039;&amp;#039; for every record posted.&lt;br /&gt;
* Owner - The owner id&lt;br /&gt;
* Target - The target id&lt;br /&gt;
* Duration - How long does it take for the record to expire&lt;br /&gt;
* DeleteOnExpire - Whether the record is automatically deleted when it expires&lt;br /&gt;
&lt;br /&gt;
What each property means is normally dependent on the type of blackboard record. The Owner is typically the game id of the bot, the target is normally an id that can be mapped to another object, such as a MapGoal serial number. The other properties control the records lifetime.&lt;br /&gt;
&lt;br /&gt;
== Blackboard Functions ==&lt;br /&gt;
&lt;br /&gt;
===MakeKey===&lt;br /&gt;
Makes a numeric blackboard item key. Normally you will inject this value into the global BB table with the rest of the blackboard keys.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; none&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; numeric key.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 BB.MYNEWKEY = Blackboard.MakeKey();&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===PostRecord===&lt;br /&gt;
Posts a record to the blackboard, keyed to a certain type, and storing arbitrary values.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (blackboard key, table)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; none&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 mytable = &lt;br /&gt;
 {&lt;br /&gt;
     Owner = b.GetGameId(),&lt;br /&gt;
     Target = 100,&lt;br /&gt;
     Duration = 10,&lt;br /&gt;
     DeleteOnExpire = true,&lt;br /&gt;
&lt;br /&gt;
     someinfo = 10,&lt;br /&gt;
     someinfo2 = 20,&lt;br /&gt;
 };&lt;br /&gt;
 Blackboard.PostRecord(BB.MYNEWKEY, mytable);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===GetRecords===&lt;br /&gt;
Retrieves all records matching a type from global Blackboard&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (blackboard key)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; table of all blackboard records, null if non exist.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 records = Blackboard.GetRecords(BB.MYNEWKEY);&lt;br /&gt;
 if(records)&lt;br /&gt;
 {&lt;br /&gt;
      foreach ( i and rcd in records )&lt;br /&gt;
      {&lt;br /&gt;
          print(rcd.someinfo);&lt;br /&gt;
          print(rcd.someinfo2);&lt;br /&gt;
      }&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===GetNumRecords===&lt;br /&gt;
Retrieves the number of records of a given type.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (blackboard key)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; number of records that exist of this type.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 numrecords = Blackboard.GetNumRecords(BB.MYNEWKEY);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===RecordExistsOwner===&lt;br /&gt;
Checks if a record exists for a certain key that matches a given owner id.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (blackboard key, owner id #)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; number of records that exist of this type.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 if(Blackboard.RecordExistsOwner(BB.MYNEWKEY, b.GetGameId())&lt;br /&gt;
 {&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===RecordExistsTarget===&lt;br /&gt;
Checks if a record exists for a certain key that matches a given target id.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (blackboard key, target id #)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; number of records that exist of this type.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 if(Blackboard.RecordExistsTarget(BB.MYNEWKEY, mapgoal.GetSerialNum())&lt;br /&gt;
 {&lt;br /&gt;
 }&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===RemoveByPoster===&lt;br /&gt;
Removes all records of a given type by the given owner id.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (owner id #) - If key type is left off, removes ALL records&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (owner id #, blackboard key type to remove)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; number of records removed&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // remove just my record type from this owner&lt;br /&gt;
 numremoved1 = Blackboard.RemoveByPoster(b.GetGameId(), BB.MYNEWKEY);&lt;br /&gt;
 // remove all records of all types for this owner&lt;br /&gt;
 numremoved2 = Blackboard.RemoveByPoster(b.GetGameId());&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===RemoveByTarget===&lt;br /&gt;
Removes all records of a given type by the given target id.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (target id #) - If key type is left off, removes ALL records&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (target id #, blackboard key type to remove)&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; number of records removed&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 // remove just my record type from this owner&lt;br /&gt;
 numremoved1 = Blackboard.RemoveByTarget(b.GetGameId(), BB.MYNEWKEY);&lt;br /&gt;
 // remove all records of all types for this owner&lt;br /&gt;
 numremoved2 = Blackboard.RemoveByTarget(b.GetGameId());&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
===PrintBlackboard===&lt;br /&gt;
Prints the global blackboard to the in game console.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; () - if key left off, prints records of ALL types.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Parameters:&amp;#039;&amp;#039;&amp;#039; (blackboard key) - only print records of this type.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Returns:&amp;#039;&amp;#039;&amp;#039; none&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Example:&amp;#039;&amp;#039;&amp;#039; &amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 Blackboard.PrintBlackboard();&lt;br /&gt;
 Blackboard.PrintBlackboard(BB.MYNEWKEY);&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Palota</name></author>
	</entry>
</feed>