BSL:Snippets: Difference between revisions
(moving in from main BSL page; made some comment corrections and tweaks) |
(adding lede, multiplication hack) |
||
| Line 1: | Line 1: | ||
Various useful snippets of BSL that can be useful for modders. | |||
==Character setup== | |||
# an old but useful character setup function by geyser | # an old but useful character setup function by geyser | ||
func '''SpawnNameFlagHealthReset'''(string n, int f, int h, int r) | func '''SpawnNameFlagHealthReset'''(string n, int f, int h, int r) | ||
| Line 18: | Line 20: | ||
} | } | ||
==Follow me== | |||
var bool follow_me = 1; | var bool follow_me = 1; | ||
| Line 85: | Line 87: | ||
sleep 60 | sleep 60 | ||
fork dont_follow_me | fork dont_follow_me | ||
} | |||
==Multiplication hack== | |||
var int multiplicand; | |||
var int multiplier; | |||
var int mult_progress; | |||
var int product; | |||
func void '''multiply'''(int a, int b) | |||
{ | |||
product = 0; | |||
multiplicand = a; | |||
multiplier = b; | |||
mult_progress = 0; | |||
fork do_mult(); | |||
} | |||
func void do_mult(void) | |||
{ | |||
product = product + multiplicand; | |||
mult_progress = mult_progress + 1; | |||
if (mult_progress < multiplier) | |||
{ | |||
sleep(1); | |||
fork do_mult(); | |||
} | |||
} | } | ||
[[Category:Modding tutorials]] | [[Category:Modding tutorials]] | ||
Latest revision as of 23:06, 4 December 2015
Various useful snippets of BSL that can be useful for modders.
Character setup
# an old but useful character setup function by geyser
func SpawnNameFlagHealthReset(string n, int f, int h, int r)
{
ai2_spawn(n); chr_teleport(n, f)
if(h) chr_set_health(n, h)
if(r) chr_inv_reset(n)
}
# sample usage
func wave_setup
{
# note that the health and inventory-reset parameters can be omitted
SpawnNameFlagHealthReset Griffin 23 600
SpawnNameFlagHealthReset Muro 22 2500
SpawnNameFlagHealthReset F_Er89 22 80 1
SpawnNameFlagHealthReset A_S1 24
}
Follow me
var bool follow_me = 1;
### beginning of the journey
func follow_me_TV
{
# ai2_spawn charname # or somewhere else
chr_lock_active charname
fork follow
}
func follow
{
if (follow_me eq 1)
{
ai2_followme charname
ai2_setmovementmode charname run
sleep 180
fork follow
}
}
### events
func dont_follow_me_TV_enter
{
follow_me = 0
}
func dont_follow_me_TV_extit
{
follow_me = 1
fork follow
}
### player orders
func main
{
# Original code here
fork do_follow_me
fork dont_follow_me
}
func do_follow_me
{
chr_wait_animation 0 ORDERbk_fw_kick
follow_me = 1
follow
# in case he/she is passive right now
ai2_passive charname 0
# sleep until anim finishes
sleep 60
fork do_follow_me
}
func dont_follow_me
{
chr_wait_animation 0 ORDERbk_fw_punch
follow_me = 0
ai2_idle charname
# sleep until anim finishes
sleep 60
fork dont_follow_me
}
Multiplication hack
var int multiplicand;
var int multiplier;
var int mult_progress;
var int product;
func void multiply(int a, int b)
{
product = 0;
multiplicand = a;
multiplier = b;
mult_progress = 0;
fork do_mult();
}
func void do_mult(void)
{
product = product + multiplicand;
mult_progress = mult_progress + 1;
if (mult_progress < multiplier)
{
sleep(1);
fork do_mult();
}
}