emake
My emake stuff for my new d-mod does not work, the scripts seam to be ok, so I think it is in the sprites or something, anyone knowing an answer???
I use scripts that are almost equal to the original game for this, and Cedit says they are ok. So I think it isn't in the scripts...
but for the scripts:
[a pillbug (en-pill0)]
//pillbug brain
void main( void )
{
sp_brain(¤t_sprite, 9);
sp_speed(¤t_sprite, 1);
sp_exp(¤t_sprite, 5);
sp_base_walk(¤t_sprite, 130);
sp_base_death(¤t_sprite, 140);
sp_touch_damage(¤t_sprite, 1);
sp_hitpoints(¤t_sprite, 8);
preload_seq(131);
preload_seq(133);
preload_seq(141);
preload_seq(143);
if (random(2,1) == 1)
{
sp_target(¤t_sprite, 1);
}
}
void hit( void )
{
sp_target(¤t_sprite, &enemy_sprite);
playsound(30, 21050, 4000, ¤t_sprite, 0);
//lock on to the guy who just hit us
//playsound
}
void die( void )
{
int &hold = sp_editor_num(¤t_sprite);
if (&hold != 0)
editor_type(&hold, 6);
&save_x = sp_x(¤t_sprite, -1);
&save_y = sp_y(¤t_sprite, -1);
external("emake","small");
}
[emake]
//make, contains info on making items given after a monster dies
void medium( void )
{
int &mcrap = random(20,1);
if (&mcrap == 1)
{
//lets give 'em a small heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "sheart");
return;
}
if (&mcrap == 2)
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 0, 54, 1);
sp_script(&crap, "heart");
return;
}
if (&mcrap == 3)
{
&mcrap = random(3,1);
if (&mcrap == 1)
{
//give them food type 1
int &crap = create_sprite(&save_x, &save_y, 6, 421, 1);
sp_script(&crap, "sfood");
}
if (&mcrap == 2)
{
//give them food type 2
int &crap = create_sprite(&save_x, &save_y, 6, 421, 2);
sp_script(&crap, "sfood");
}
if (&mcrap == 3)
{
//give them food type 3
int &crap = create_sprite(&save_x, &save_y, 6, 421, 7);
sp_script(&crap, "sfood");
}
if (&mcrap == 4)
{
//give them food type 4
int &crap = create_sprite(&save_x, &save_y, 6, 421, 8);
sp_script(&crap, "sfood");
}
return;
}
//all others lets give 'em a random amount of gold
int &crap = create_sprite(&save_x, &save_y, 0, 178, 4);
sp_script(&crap, "mgold");
debug("exiting medium emake after creating gold");
return;
}
void large( void )
{
int &mcrap = random(20,1);
if (&mcrap == 2)
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "heart");
return;
}
if (&mcrap == 3)
{
&mcrap = random(3,1);
if (&mcrap == 1)
{
//give them food type 1
int &crap = create_sprite(&save_x, &save_y, 6, 421, 1);
sp_script(&crap, "sfood");
}
if (&mcrap == 2)
{
//give them food type 2
int &crap = create_sprite(&save_x, &save_y, 6, 421, 2);
sp_script(&crap, "sfood");
}
if (&mcrap == 3)
{
//give them food type 3
int &crap = create_sprite(&save_x, &save_y, 6, 421, 7);
sp_script(&crap, "sfood");
}
if (&mcrap == 4)
{
//give them food type 4
int &crap = create_sprite(&save_x, &save_y, 6, 421, 8);
sp_script(&crap, "sfood");
}
return;
}
//lets give 'em a random amount of gold
int &crap = create_sprite(&save_x, &save_y, 6, 178, 4);
sp_script(&crap, "lgold");
}
void xlarge( void )
{
int &mcrap = random(20,1);
if (&mcrap == 2)
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "heart");
return;
}
if (&mcrap == 3)
{
&mcrap = random(3,1);
if (&mcrap == 1)
{
//give them food type 1
int &crap = create_sprite(&save_x, &save_y, 6, 421, 1);
sp_script(&crap, "sfood");
}
if (&mcrap == 2)
{
//give them food type 2
int &crap = create_sprite(&save_x, &save_y, 6, 421, 2);
sp_script(&crap, "sfood");
}
if (&mcrap == 3)
{
//give them food type 3
int &crap = create_sprite(&save_x, &save_y, 6, 421, 7);
sp_script(&crap, "sfood");
}
if (&mcrap == 4)
{
//give them food type 4
int &crap = create_sprite(&save_x, &save_y, 6, 421, 8);
sp_script(&crap, "sfood");
}
return;
}
debug("Making silver");
if (&story == 5)
{
//lets give 'em a random amount of silver
int &crap = create_sprite(&save_x, &save_y, 0, 195, 29);
sp_script(&crap, "lsilver");
} else
{
//give 'em gold
int &crap = create_sprite(&save_x, &save_y, 6, 178, 4);
sp_script(&crap, "gold200");
}
}
void small( void )
{
int &mcrap = random(3,1);
if (&mcrap == 1)
{
//lets give 'em a small heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "sheart");
return;
}
return;
}
void lheart( void )
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "heart");
return;
}
void xlgold( void )
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 0, 178, 4);
sp_script(&crap, "xlgold");
return;
}
[sheart]
//this script fills life up, touch_damage must be set to -1. (run script mode)
void main( )
{
sp_seq(¤t_sprite, 54);
sp_frame(¤t_sprite, 1); //so the seq will start
sp_brain(¤t_sprite, 6);
sp_touch_damage(¤t_sprite, -1);
sp_nohit(¤t_sprite, 1);
}
void touch( void )
{
&life += 3;
if (&life > &lifemax)
{
&life = &lifemax;
}
Playsound(10,22050,0,0,0);
sp_brain_parm(¤t_sprite, 10);
sp_brain(¤t_sprite, 12);
sp_touch_damage(¤t_sprite, 0);
sp_timing(¤t_sprite, 0);
//kill this item so it doesn't show up again for this player
int &hold = sp_editor_num(¤t_sprite);
if (&hold != 0)
editor_type(&hold, 1);
}
Also, debug says it loads the script sheart when a monster dies, but I don't see it on the screen. maybe it is in the graphics or something?
but for the scripts:
[a pillbug (en-pill0)]
//pillbug brain
void main( void )
{
sp_brain(¤t_sprite, 9);
sp_speed(¤t_sprite, 1);
sp_exp(¤t_sprite, 5);
sp_base_walk(¤t_sprite, 130);
sp_base_death(¤t_sprite, 140);
sp_touch_damage(¤t_sprite, 1);
sp_hitpoints(¤t_sprite, 8);
preload_seq(131);
preload_seq(133);
preload_seq(141);
preload_seq(143);
if (random(2,1) == 1)
{
sp_target(¤t_sprite, 1);
}
}
void hit( void )
{
sp_target(¤t_sprite, &enemy_sprite);
playsound(30, 21050, 4000, ¤t_sprite, 0);
//lock on to the guy who just hit us
//playsound
}
void die( void )
{
int &hold = sp_editor_num(¤t_sprite);
if (&hold != 0)
editor_type(&hold, 6);
&save_x = sp_x(¤t_sprite, -1);
&save_y = sp_y(¤t_sprite, -1);
external("emake","small");
}
[emake]
//make, contains info on making items given after a monster dies
void medium( void )
{
int &mcrap = random(20,1);
if (&mcrap == 1)
{
//lets give 'em a small heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "sheart");
return;
}
if (&mcrap == 2)
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 0, 54, 1);
sp_script(&crap, "heart");
return;
}
if (&mcrap == 3)
{
&mcrap = random(3,1);
if (&mcrap == 1)
{
//give them food type 1
int &crap = create_sprite(&save_x, &save_y, 6, 421, 1);
sp_script(&crap, "sfood");
}
if (&mcrap == 2)
{
//give them food type 2
int &crap = create_sprite(&save_x, &save_y, 6, 421, 2);
sp_script(&crap, "sfood");
}
if (&mcrap == 3)
{
//give them food type 3
int &crap = create_sprite(&save_x, &save_y, 6, 421, 7);
sp_script(&crap, "sfood");
}
if (&mcrap == 4)
{
//give them food type 4
int &crap = create_sprite(&save_x, &save_y, 6, 421, 8);
sp_script(&crap, "sfood");
}
return;
}
//all others lets give 'em a random amount of gold
int &crap = create_sprite(&save_x, &save_y, 0, 178, 4);
sp_script(&crap, "mgold");
debug("exiting medium emake after creating gold");
return;
}
void large( void )
{
int &mcrap = random(20,1);
if (&mcrap == 2)
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "heart");
return;
}
if (&mcrap == 3)
{
&mcrap = random(3,1);
if (&mcrap == 1)
{
//give them food type 1
int &crap = create_sprite(&save_x, &save_y, 6, 421, 1);
sp_script(&crap, "sfood");
}
if (&mcrap == 2)
{
//give them food type 2
int &crap = create_sprite(&save_x, &save_y, 6, 421, 2);
sp_script(&crap, "sfood");
}
if (&mcrap == 3)
{
//give them food type 3
int &crap = create_sprite(&save_x, &save_y, 6, 421, 7);
sp_script(&crap, "sfood");
}
if (&mcrap == 4)
{
//give them food type 4
int &crap = create_sprite(&save_x, &save_y, 6, 421, 8);
sp_script(&crap, "sfood");
}
return;
}
//lets give 'em a random amount of gold
int &crap = create_sprite(&save_x, &save_y, 6, 178, 4);
sp_script(&crap, "lgold");
}
void xlarge( void )
{
int &mcrap = random(20,1);
if (&mcrap == 2)
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "heart");
return;
}
if (&mcrap == 3)
{
&mcrap = random(3,1);
if (&mcrap == 1)
{
//give them food type 1
int &crap = create_sprite(&save_x, &save_y, 6, 421, 1);
sp_script(&crap, "sfood");
}
if (&mcrap == 2)
{
//give them food type 2
int &crap = create_sprite(&save_x, &save_y, 6, 421, 2);
sp_script(&crap, "sfood");
}
if (&mcrap == 3)
{
//give them food type 3
int &crap = create_sprite(&save_x, &save_y, 6, 421, 7);
sp_script(&crap, "sfood");
}
if (&mcrap == 4)
{
//give them food type 4
int &crap = create_sprite(&save_x, &save_y, 6, 421, 8);
sp_script(&crap, "sfood");
}
return;
}
debug("Making silver");
if (&story == 5)
{
//lets give 'em a random amount of silver
int &crap = create_sprite(&save_x, &save_y, 0, 195, 29);
sp_script(&crap, "lsilver");
} else
{
//give 'em gold
int &crap = create_sprite(&save_x, &save_y, 6, 178, 4);
sp_script(&crap, "gold200");
}
}
void small( void )
{
int &mcrap = random(3,1);
if (&mcrap == 1)
{
//lets give 'em a small heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "sheart");
return;
}
return;
}
void lheart( void )
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 6, 54, 1);
sp_script(&crap, "heart");
return;
}
void xlgold( void )
{
//lets give 'em a large heart
int &crap = create_sprite(&save_x, &save_y, 0, 178, 4);
sp_script(&crap, "xlgold");
return;
}
[sheart]
//this script fills life up, touch_damage must be set to -1. (run script mode)
void main( )
{
sp_seq(¤t_sprite, 54);
sp_frame(¤t_sprite, 1); //so the seq will start
sp_brain(¤t_sprite, 6);
sp_touch_damage(¤t_sprite, -1);
sp_nohit(¤t_sprite, 1);
}
void touch( void )
{
&life += 3;
if (&life > &lifemax)
{
&life = &lifemax;
}
Playsound(10,22050,0,0,0);
sp_brain_parm(¤t_sprite, 10);
sp_brain(¤t_sprite, 12);
sp_touch_damage(¤t_sprite, 0);
sp_timing(¤t_sprite, 0);
//kill this item so it doesn't show up again for this player
int &hold = sp_editor_num(¤t_sprite);
if (&hold != 0)
editor_type(&hold, 1);
}
Also, debug says it loads the script sheart when a monster dies, but I don't see it on the screen. maybe it is in the graphics or something?
Have you screwed up with the global variables at main.c or something? Just in case, you should copy all the main globals from the orignal main.c and paste them in your own dmod...
I think that's the case. &save_x and &save_y aren't part of the default list of globals and when you don't have them in main.c, you won't have heart appearing (/me remembers his first D-Mod patch for Once in a Lifetime.. which had the same problem
)
