To read values from an outside object to make it relative to, you must use an Identifier, followed by a dot (.), followed by the variable name. It will look something like this:
Code:
instance_create(obj_player.x+61,obj_player.y+34,obj_bullet)
However, I would advise you to not use hard numbers in your function code. Create local variables instead. Like this:
Code:
var bullet_offset_x = 61;
var bullet_offset_y = 34;
instance_create(obj_player.x+bullet_offset_x,obj_player.y+bullet_offset_y,obj_bullet)
A rule of thumb I use, is that if I'm going to use the same value twice in a code, I make a local variable. Doing it like this will help if you need those values in your code again or if you need to change something it makes it easier to read.
For more information of types of variables, read your manual. While in the GameMaker IDE press "F1" click on the "Search" tab on the left side, and copy and paste the following topic name. It will come up as the last one, but will match exactly.
Variables And Variable Scope
For more information about the identifiers, read:
Addressing Variables in Other Instances
Edit:
You can also set the values after creating the instance. I wont show you how to do this with your code because it may confuse you, but it also may become helpful to you in the future. This works because the function "instance_create" actually returns the id of the instance created. So you can do things like this:
Code:
var new_instance = instance_create( x , y , obj_ball );
new_instance.speed = 8;
new_instance.direction = irandom( 359 );
It's important to understand, that when you instance_create, the "Create" event trigger immediately, then the rest of your code. So if you set speed to 4 in the obj_ball Create event, then had that code, the ball speed would effectively start as 8 ( it would be set 4 from the Create event being triggered with instance_create, then set to 8 almost immediately afterwards by new_instance.speed = 8;