Slothman/Slothbot: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
Line 35: Line 35:
===onBotFindEnemy===
===onBotFindEnemy===
This triggers when a bot locates an enemy, This event can be cancelled to prevent the bot from chasing players
This triggers when a bot locates an enemy, This event can be cancelled to prevent the bot from chasing players
====Parameters====
 
<big>'''Parameters'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
element enemy
element enemy
</syntaxhighlight>
</syntaxhighlight>
*'''enemy''': The Player or Ped the bot has spotted
*'''enemy''': The Player or Ped the bot has spotted
====Source====
<big>'''Source'''</big>
The [[event system#Event source|source]] of this event is the Bot that has found an enemy
The [[event system#Event source|source]] of this event is the Bot that has found an enemy


Line 47: Line 48:
===onBotWasted===
===onBotWasted===
This triggers when a bot is killed.
This triggers when a bot is killed.
====Parameters====
 
<big>'''Parameters'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
element attacker, float weapon, float bodypart
element attacker, float weapon, float bodypart
Line 54: Line 56:
*'''weapon''': The weapon id used to kill the bot
*'''weapon''': The weapon id used to kill the bot
*'''bodypart''': The bodypart id that was hit to kill the bot
*'''bodypart''': The bodypart id that was hit to kill the bot
====Source====
<big>'''Source'''</big>
The [[event system#Event source|source]] of this event is the Bot that died
The [[event system#Event source|source]] of this event is the Bot that died


Line 61: Line 63:
===onBotSpawned===
===onBotSpawned===
This triggers when a bot is spawned.
This triggers when a bot is spawned.
====Source====
 
<big>'''Source'''</big>
The [[event system#Event source|source]] of this event is the Bot that spawned
The [[event system#Event source|source]] of this event is the Bot that spawned


Line 68: Line 71:
===onBotFollow===
===onBotFollow===
This triggers when a bot starts following a teammate
This triggers when a bot starts following a teammate
====Parameters====
 
<big>'''Parameters'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
element leader
element leader
</syntaxhighlight>
</syntaxhighlight>
*'''leader''': The Player or Ped the bot has started following
*'''leader''': The Player or Ped the bot has started following
====Source====
<big>'''Source'''</big>
The [[event system#Event source|source]] of this event is the Bot that starts following a teammate
The [[event system#Event source|source]] of this event is the Bot that starts following a teammate


Line 82: Line 86:
===spawnBot===
===spawnBot===
This function spawns a bot ingame
This function spawns a bot ingame
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool spawnBot ( element theBot, float x, float y, float z, [ int rotation = 0, int skinID = 0, int interior = 0, int dimension = 0, team theTeam = nil, int weapon = nil, string theMode = "hunting", string theModesubject = nil ] )
bool spawnBot ( element theBot, float x, float y, float z, [ int rotation = 0, int skinID = 0, int interior = 0, int dimension = 0, team theTeam = nil, int weapon = nil, string theMode = "hunting", string theModesubject = nil ] )
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''x:''' The x co-ordinate to spawn the bot at
*'''x:''' The x co-ordinate to spawn the bot at
*'''y:''' The y co-ordinate to spawn the bot at
*'''y:''' The y co-ordinate to spawn the bot at
*'''z:''' The z co-ordinate to spawn the bot at
*'''z:''' The z co-ordinate to spawn the bot at
====Optional Arguments====
 
<big>'''Optional Arguments'''</big>
*'''rotation:''' rotation of the bot on spawn
*'''rotation:''' rotation of the bot on spawn
*'''skinID:''' bots skin on spawn
*'''skinID:''' bots skin on spawn
Line 103: Line 110:
===setBotHunt===
===setBotHunt===
makes the bot travel pathways untill finding an enemy or teammate
makes the bot travel pathways untill finding an enemy or teammate
====Syntax====
<big>'''Syntax'''</big>
 
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotHunt ( element theBot )
bool setBotHunt ( element theBot )
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to hunt
*'''theBot:''' The bot you want to hunt


Line 114: Line 123:
===setBotWait===
===setBotWait===
makes the bot stand still untill an enemy of teammate comes into view
makes the bot stand still untill an enemy of teammate comes into view
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotWait ( element theBot )
bool setBotWait ( element theBot )
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to wait
*'''theBot:''' The bot you want to wait


Line 125: Line 136:
===setBotChase===
===setBotChase===
makes the bot attack an anemy bot or player
makes the bot attack an anemy bot or player
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotChase ( element theBot, element theTarget )
bool setBotChase ( element theBot, element theTarget )
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot that you want to do the chasing
*'''theBot:''' The bot that you want to do the chasing
*'''theTarget:''' The bot or player you want to be chased
*'''theTarget:''' The bot or player you want to be chased
Line 137: Line 150:
===setBotFollow===
===setBotFollow===
makes the bot follow a teammate bot or player
makes the bot follow a teammate bot or player
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotFollow( element theBot, element theTarget )
bool setBotFollow( element theBot, element theTarget )
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot that you want to do the following
*'''theBot:''' The bot that you want to do the following
*'''theTarget:''' The bot or player you want to be followed
*'''theTarget:''' The bot or player you want to be followed
Line 149: Line 164:
===setBotGuard===
===setBotGuard===
makes the bot move to the specific coords and stay there while attacking any enemies
makes the bot move to the specific coords and stay there while attacking any enemies
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotGuard( element theBot, float x, float y, float z, [ bool priority = false ] )
bool setBotGuard( element theBot, float x, float y, float z, [ bool priority = false ] )
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to do the guarding
*'''theBot:''' The bot you want to do the guarding
*'''x:''' The X coords you want the bot to guard
*'''x:''' The X coords you want the bot to guard
*'''y:''' The Y coords you want the bot to guard
*'''y:''' The Y coords you want the bot to guard
*'''z:''' The Z coords you want the bot to guard
*'''z:''' The Z coords you want the bot to guard
====Optional Arguments====
 
<big>'''Optional Arguments'''</big>
*'''priority:''' Set to true only if you want the bot to only shoot once it has reached the location to guard
*'''priority:''' Set to true only if you want the bot to only shoot once it has reached the location to guard


Line 165: Line 183:
===getBotTeam===
===getBotTeam===
returns the Team the bot is on, false if no team
returns the Team the bot is on, false if no team
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
string getBotTeam ( element theBot)
string getBotTeam ( element theBot)
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to check the team of
*'''theBot:''' The bot you want to check the team of


Line 176: Line 196:
===setBotTeam===
===setBotTeam===
changes the bot's team and loyalties
changes the bot's team and loyalties
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotTeam ( element theBot, team theTeam )
bool setBotTeam ( element theBot, team theTeam )
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to change the team of
*'''theBot:''' The bot you want to change the team of
*'''theTeam:''' The team the bot should join
*'''theTeam:''' The team the bot should join
Line 188: Line 210:
===getBotAttackEnabled===
===getBotAttackEnabled===
returns true if the bot is allowed to attack, false otherwise
returns true if the bot is allowed to attack, false otherwise
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool getBotAttackEnabled( element theBot)
bool getBotAttackEnabled( element theBot)
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to check if it can atack
*'''theBot:''' The bot you want to check if it can atack


Line 199: Line 223:
===setBotAttackEnabled===
===setBotAttackEnabled===
allow or disallow the bot to attack (press fire)
allow or disallow the bot to attack (press fire)
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotAttackEnabled( element theBot, bool enabled)
bool setBotAttackEnabled( element theBot, bool enabled)
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to set if it can atack
*'''theBot:''' The bot you want to set if it can atack
*'''enabled:''' set to false to remove the bots ability to attack, true to allow it
*'''enabled:''' set to false to remove the bots ability to attack, true to allow it
Line 211: Line 237:
===getBotMode===
===getBotMode===
returns the mode the bot is in ("chasing", "waiting", "guarding", "hunting", "following") or if the bot is chasing or following, it will return the mode and the target
returns the mode the bot is in ("chasing", "waiting", "guarding", "hunting", "following") or if the bot is chasing or following, it will return the mode and the target
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
string getBotMode( element theBot)
string getBotMode( element theBot)
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to check the status of
*'''theBot:''' The bot you want to check the status of


Line 222: Line 250:
===isPedBot===
===isPedBot===
returns true if the ped is a bot, false otherwise
returns true if the ped is a bot, false otherwise
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool ispedbot( element thePed)
bool ispedbot( element thePed)
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''thePed:''' The ped you want to check if its a bot
*'''thePed:''' The ped you want to check if its a bot


Line 233: Line 263:
===setBotWeapon===
===setBotWeapon===
allow or disallow the bot to attack (press fire)
allow or disallow the bot to attack (press fire)
====Syntax====
 
<big>'''Syntax'''</big>
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
bool setBotWeapon( element theBot, float weapon)
bool setBotWeapon( element theBot, float weapon)
</syntaxhighlight>
</syntaxhighlight>
====Required Arguments====
 
<big>'''Required Arguments'''</big>
*'''theBot:''' The bot you want to set the weapon of
*'''theBot:''' The bot you want to set the weapon of
*'''weapon:''' the weapon id you want to give the bot
*'''weapon:''' the weapon id you want to give the bot

Revision as of 05:31, 4 April 2010

Slothbot

This is a resource designed to allow scripts or gamemodes to insert a ped into the game that roughly simulates combat with a real player. gamemodes can implement the bots as opponents to actual players or as teammates.

FEATURES:

Teamplay: The bot is capable of identifying friend from foe

Map Navigation: When the bot is placed in a map that has suitable pathways marked out (see below on how to do that) the bot will navigate the map, seeking out enemies. Without pathways, a bot can still think for itself, but wont move around as profficiently.

Aggressiveness: Bots will attack any ped, player or bot thats not on it's team.

Cooperation: Bots can automatically team up with teammates (either player or bot) by meeting up with them and sticking together

Advanced movement: If theres obstacles blocking a bot's path, the bot will attempt to get around or over it instead of just walking into a wall for eternity

Multiple modes of playing:

  • "hunting" - travel pathways untill finding an enemy or teammate
  • "waiting" - stand still untill an enemy of teammate comes into view
  • "guarding" - the bot will attack any enemy that comes within sight, but not move from its spawn position
  • "following" - the bot will follow a player or bot while attacking enemies
  • "chasing" - the bot will attack an anemy bot or player

Gamemode/Script integration: This script provides several functions and events to allow other resources to see and control what the bot's are doing, and even take control of certain behaviour.

EDF for map path creation: Integrated into the map editor, map designers can easily place paths for bots to follow along in their maps. this greatly increased the bots ability to simulate true playing.

SERVER EVENTS

onBotFindEnemy

This triggers when a bot locates an enemy, This event can be cancelled to prevent the bot from chasing players

Parameters

element enemy
  • enemy: The Player or Ped the bot has spotted

Source The source of this event is the Bot that has found an enemy


onBotWasted

This triggers when a bot is killed.

Parameters

element attacker, float weapon, float bodypart
  • attacker: The Element that killed the bot
  • weapon: The weapon id used to kill the bot
  • bodypart: The bodypart id that was hit to kill the bot

Source The source of this event is the Bot that died


onBotSpawned

This triggers when a bot is spawned.

Source The source of this event is the Bot that spawned


onBotFollow

This triggers when a bot starts following a teammate

Parameters

element leader
  • leader: The Player or Ped the bot has started following

Source The source of this event is the Bot that starts following a teammate


SERVER FUNCTIONS

All of these funtions will have to be used through the call function, otherwise they won't work

spawnBot

This function spawns a bot ingame

Syntax

bool spawnBot ( element theBot, float x, float y, float z, [ int rotation = 0, int skinID = 0, int interior = 0, int dimension = 0, team theTeam = nil, int weapon = nil, string theMode = "hunting", string theModesubject = nil ] )

Required Arguments

  • x: The x co-ordinate to spawn the bot at
  • y: The y co-ordinate to spawn the bot at
  • z: The z co-ordinate to spawn the bot at

Optional Arguments

  • rotation: rotation of the bot on spawn
  • skinID: bots skin on spawn
  • interior: interior the bot will spawn into
  • dimension: The ID of the dimension that the bot should be in
  • theTeam: the team the bot will join
  • theMode: the action the bot will be performing when spawned (see "modes of playing" above)
  • theModeSubject: if theMode is "chasing" or "hunting" this arg is needed to tell the bot what opponent to chase or teammate to follow


setBotHunt

makes the bot travel pathways untill finding an enemy or teammate Syntax

bool setBotHunt ( element theBot )

Required Arguments

  • theBot: The bot you want to hunt


setBotWait

makes the bot stand still untill an enemy of teammate comes into view

Syntax

bool setBotWait ( element theBot )

Required Arguments

  • theBot: The bot you want to wait


setBotChase

makes the bot attack an anemy bot or player

Syntax

bool setBotChase ( element theBot, element theTarget )

Required Arguments

  • theBot: The bot that you want to do the chasing
  • theTarget: The bot or player you want to be chased


setBotFollow

makes the bot follow a teammate bot or player

Syntax

bool setBotFollow( element theBot, element theTarget )

Required Arguments

  • theBot: The bot that you want to do the following
  • theTarget: The bot or player you want to be followed


setBotGuard

makes the bot move to the specific coords and stay there while attacking any enemies

Syntax

bool setBotGuard( element theBot, float x, float y, float z, [ bool priority = false ] )

Required Arguments

  • theBot: The bot you want to do the guarding
  • x: The X coords you want the bot to guard
  • y: The Y coords you want the bot to guard
  • z: The Z coords you want the bot to guard

Optional Arguments

  • priority: Set to true only if you want the bot to only shoot once it has reached the location to guard


getBotTeam

returns the Team the bot is on, false if no team

Syntax

string getBotTeam ( element theBot)

Required Arguments

  • theBot: The bot you want to check the team of


setBotTeam

changes the bot's team and loyalties

Syntax

bool setBotTeam ( element theBot, team theTeam )

Required Arguments

  • theBot: The bot you want to change the team of
  • theTeam: The team the bot should join


getBotAttackEnabled

returns true if the bot is allowed to attack, false otherwise

Syntax

bool getBotAttackEnabled( element theBot)

Required Arguments

  • theBot: The bot you want to check if it can atack


setBotAttackEnabled

allow or disallow the bot to attack (press fire)

Syntax

bool setBotAttackEnabled( element theBot, bool enabled)

Required Arguments

  • theBot: The bot you want to set if it can atack
  • enabled: set to false to remove the bots ability to attack, true to allow it


getBotMode

returns the mode the bot is in ("chasing", "waiting", "guarding", "hunting", "following") or if the bot is chasing or following, it will return the mode and the target

Syntax

string getBotMode( element theBot)

Required Arguments

  • theBot: The bot you want to check the status of


isPedBot

returns true if the ped is a bot, false otherwise

Syntax

bool ispedbot( element thePed)

Required Arguments

  • thePed: The ped you want to check if its a bot


setBotWeapon

allow or disallow the bot to attack (press fire)

Syntax

bool setBotWeapon( element theBot, float weapon)

Required Arguments

  • theBot: The bot you want to set the weapon of
  • weapon: the weapon id you want to give the bot


CREDITS:

  • Slothman: Bot creator, main scripter
  • Gamesnert: EDF creator, scripting, testing
  • Dragon: Gamemode creator, testing, scripting help
  • EvGeniz: early testing, mapping

Thanks to Everyone else who made suggestions, tested the script, helped when i was stuck, etc