Melee attack error SOLVED

S

Squirtle Plays

Guest
when I ran this its give me this message
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Step Event0
for object object0:

Variable object0.dx(100008, -2147483648) not set before reading it.
at gml_Script_PlayerState_Free (line 31) - x += dx;
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_PlayerState_Free (line 31)
called from - gml_Object_object0_Step_0 (line 56) - case PLAYERSTATE.FREE: PlayerState_Free(); break;

Code:
/// 0description Insert description here
var t1 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_bottom + 1) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_bottom + 1) & tile_index_mask;
if (t1 != 0 || t2 != 0) 
    if keyboard_check(vk_space)
    v_speed = -jump_impulse;
    


var dx = move_speed * (keyboard_check(vk_right) - keyboard_check((vk_left)));
keyAttack = keyboard_check_pressed(ord("Z"));
var dy = v_speed;
v_speed += grav;

//do vertical move
y += dy;
if ( dy > 0 )  { //downwards
    var t1 = tilemap_get_at_pixel (tilemap, bbox_left, bbox_bottom) & tile_index_mask;
     var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_bottom) & tile_index_mask;
    
     if(t1 != 0 || t2 != 0) {
        y = ((bbox_bottom & ~63) - 1) - sprite_bbox_bottom;
        v_speed = 0;
     }
} else { //upwards
    var t1 = tilemap_get_at_pixel (tilemap, bbox_left, bbox_top) & tile_index_mask;
     var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_top) & tile_index_mask;
    
     if(t1 != 0 || t2 != 0) {
        y = ((bbox_top + 64 ) & ~63) - sprite_bbox_top;
        v_speed = 0;
     }
}

//do horizontal move
x += dx;
if ( dx > 0 )  { //right
    var t1 = tilemap_get_at_pixel (tilemap, bbox_right, bbox_top) & tile_index_mask;
     var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_bottom) & tile_index_mask;
    
     if(t1 != 0 || t2 != 0) {
        x = ((bbox_right & ~63) - 1) - sprite_bbox_right;
     }
} else { //left
    var t1 = tilemap_get_at_pixel (tilemap, bbox_left, bbox_top) & tile_index_mask;
     var t2 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_bottom) & tile_index_mask;
    
     if(t1 != 0 || t2 != 0) {
        x  = ((bbox_left + 64 ) & ~63) - sprite_bbox_left;
     }
}

switch (state)
{
    
    case PLAYERSTATE.FREE: PlayerState_Free(); break;   
    case PLAYERSTATE.ATTACK_STAB: PlayerState_Attack_Stab(); break;
    
}
 

TsukaYuriko

☄️
Forum Staff
Moderator
The error message tells you exactly what's wrong. You're trying to access a variable that you didn't define beforehand, or one that fell out of scope - for example by declaring a variable as local via var and then calling a script which tries to access said variable.
 
S

Squirtle Plays

Guest
I declared the variable in my create event here though
Code:
/// 0description Insert description here

//basic player vars
move_speed = 5;
jump_impulse = 15;
grav = 0.75
v_speed = 0;

//Tile map info
var l = layer_get_id("collision_map");
tilemap = layer_tilemap_get_id(l);

//sprite info
sprite_bbox_left = sprite_get_bbox_left(sprite_index) - sprite_get_xoffset(sprite_index)
sprite_bbox_right = sprite_get_bbox_right(sprite_index) - sprite_get_xoffset(sprite_index)
sprite_bbox_bottom = sprite_get_bbox_bottom(sprite_index) - sprite_get_yoffset(sprite_index)
sprite_bbox_top = sprite_get_bbox_top(sprite_index) - sprite_get_yoffset(sprite_index)

state = PLAYERSTATE.FREE
hitByAttack = ds_list_create();


enum PLAYERSTATE
{
    FREE,
    ATTACK_STAB
}
 

TsukaYuriko

☄️
Forum Staff
Moderator
I declared the variable in my create event here though
Code:
/// 0description Insert description here

//basic player vars
move_speed = 5;
jump_impulse = 15;
grav = 0.75
v_speed = 0;

//Tile map info
var l = layer_get_id("collision_map");
tilemap = layer_tilemap_get_id(l);

//sprite info
sprite_bbox_left = sprite_get_bbox_left(sprite_index) - sprite_get_xoffset(sprite_index)
sprite_bbox_right = sprite_get_bbox_right(sprite_index) - sprite_get_xoffset(sprite_index)
sprite_bbox_bottom = sprite_get_bbox_bottom(sprite_index) - sprite_get_yoffset(sprite_index)
sprite_bbox_top = sprite_get_bbox_top(sprite_index) - sprite_get_yoffset(sprite_index)

state = PLAYERSTATE.FREE
hitByAttack = ds_list_create();


enum PLAYERSTATE
{
    FREE,
    ATTACK_STAB
}
Pardon the question, but... where? I don't see you declaring it anywhere.


Please post the full code of everything you referenced in the opening post.
 
S

Squirtle Plays

Guest
It was trying to reference line 31 of PlayerState_Free so I made it so its on line 31
 
Top