Reflecting over the center x (left to right reflection and vice versa):
NewX = (GetCenterX - GetPlayerX) + GetCenterX;
NewY = GetPlayerY;
Reflecting over the center y (top to bottom reflection and vice versa):
NewX = GetPlayerX;
NewY = (GetCenterY - GetPlayerY) + GetCenterY;
Your code is illegible to me in it's current state. So I'll fix it...
#TouhouDanmakufu
#Title[Spell 1]
#Text[Spell 1]
#Player[FREE]
#BackGround[User(.\img.png)]
#ScriptVersion[2]
script_enemy_main{
//let BossImg = GetCurrentScriptDirectory~"bossimg.png";
//#include_function "lib\ExpandedShotDatav4\shot_replace.dnh"
let frame = 10;
let acc = 0;
let s1 = 1.5;
let angle = 0;
let l =60;
let move = 0;
let o = 15;
let n = 12;
let side = 0;
let verticle = GetPlayerY;
let objLaz1=Obj_Create(OBJ_LASER);
task Laser{
Obj_SetAngle(objLaz1, 90);
ObjLaser_SetLength(objLaz1, 490);
ObjLaser_SetWidth(objLaz1, 7);
ObjShot_SetDelay(objLaz1, 60);
ObjShot_SetGraphic(objLaz1, WHITE03);
Obj_SetSpeed(objLaz1, 0);
Obj_SetY(objLaz1, 0);
while(Obj_BeDeleted(objLaz1)==false) {
Obj_SetX(objLaz1, GetCenterX);
Obj_SetCollisionToObject(objLaz1, true);
ObjShot_SetBombResist(objLaz1, true);
yield;
}
}
@Initialize {
//SoundLoad;
//LoadGraphic(BossImg);
SetMovePosition02(GetCenterX, GetCenterY-60, 0);
SetLife(300);
SetEnemyMarker(true);
Concentration01(60);
Concentration02(60);
MagicCircle(true);
//ShotInit;
Laser;
//Task;
}
@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
frame+=1;
if(frame%1==0){
//loop(4){
CreateShotA(0,GetCenterX+side,verticle,10);
SetShotDataA(0,0,0,0,0,0,0,RED05);
//SetShotDataA(0,120,0,angle+frame*8,0.03,0.05,3,RED05);
SetShotKillTime(0,200);
angle+=360/4;
FireShot(0);
// }
}
if(GetKeyState(VK_LEFT)==KEY_HOLD){
side+=3.5;
}
if(GetKeyState(VK_RIGHT)==KEY_HOLD){
side-=3.5;
}
if(GetKeyState(VK_UP)==KEY_HOLD){
verticle-=3.5;
}
if(GetKeyState(VK_DOWN)==KEY_HOLD){
verticle+=3.5;
}
if(side<14){
side=32;
}
if(verticle<GetClipMinY){
verticle=GetClipMinY+1;
}
if(verticle>GetClipMaxY){
verticle=GetClipMaxY-1;
}
if(GetPlayerX<GetCenterX){
if(side>GetCenterX){
side=side-20;
}
if(side>GetClipMaxX){
side=GetClipMaxX-1;
}
}
if(GetPlayerX<GetCenterX){
if(side>GetClipMinX){
side=GetClipMinX+1;
}
if(side>GetCenterX){
side=side+20;
}
}
}
@DrawLoop{
DrawText(side,GetCenterX,GetCenterY,25,255);
DrawText(verticle,GetCenterX,GetCenterY-30,25,255);
DrawText(GetPlayerX,GetCenterX,GetCenterY+30,25,255);
DrawText(GetCenterX,GetCenterX,GetCenterY+60,25,255);
/*
SetTexture(BossImg);
SetRenderState(ALPHA); SetAlpha(255);
SetGraphicScale(1.25,1.25);
SetGraphicAngle(0,0,0);
if(int(GetSpeed())==0){
SetGraphicRect(0,0,33,63);
}
if(GetSpeedX()<0){
SetGraphicRect(32,0,69,62);
}
if(GetSpeedX()>0){
SetGraphicAngle(180,0,0);
SetGraphicRect(32,0,69,62);
}
DrawGraphic(GetX,GetY);
*/
}
@Finalize{
//DeleteGraphic(BossImg);
}
}
That's your code with it's tabbing fixed. Here's your code with the problem fixed:
#TouhouDanmakufu
#Title[Spell 1]
#Text[Spell 1]
#Player[FREE]
#BackGround[User(.\img.png)]
#ScriptVersion[2]
script_enemy_main{
//let BossImg = GetCurrentScriptDirectory~"bossimg.png";
//#include_function "lib\ExpandedShotDatav4\shot_replace.dnh"
let frame = 10;
let angle = 0;
let NewX = GetPlayerX;
let NewY = GetPlayerY;
let objLaz1=Obj_Create(OBJ_LASER);
task Laser{
Obj_SetAngle(objLaz1, 90);
ObjLaser_SetLength(objLaz1, 490);
ObjLaser_SetWidth(objLaz1, 7);
ObjShot_SetDelay(objLaz1, 60);
ObjShot_SetGraphic(objLaz1, WHITE03);
Obj_SetSpeed(objLaz1, 0);
Obj_SetY(objLaz1, 0);
while(Obj_BeDeleted(objLaz1)==false) {
Obj_SetX(objLaz1, GetCenterX);
Obj_SetCollisionToObject(objLaz1, true);
ObjShot_SetBombResist(objLaz1, true);
yield;
}
}
@Initialize {
//SoundLoad;
//LoadGraphic(BossImg);
SetMovePosition02(GetCenterX, GetCenterY-60, 0);
SetLife(300);
SetEnemyMarker(true);
Concentration01(60);
Concentration02(60);
MagicCircle(true);
//ShotInit;
Laser;
//Task;
}
@MainLoop {
SetCollisionA(GetX, GetY, 32);
SetCollisionB(GetX, GetY, 24);
frame+=1;
//frame++; <-- ???
NewX = (GetCenterX - GetPlayerX) + GetCenterX;
NewY = GetPlayerY;
//If the remainder of frame divided by one equals zero, do this. Every frame?
if(frame%1==0){
//loop(4){
CreateShotA(0,NewX,NewY,10);
SetShotDataA(0,0,0,0,0,0,0,RED05);
//SetShotDataA(0,120,0,angle+frame*8,0.03,0.05,3,RED05);
SetShotKillTime(0,200);
angle+=360/4;
FireShot(0);
// }
}
}
@DrawLoop{
/*
SetTexture(BossImg);
SetRenderState(ALPHA); SetAlpha(255);
SetGraphicScale(1.25,1.25);
SetGraphicAngle(0,0,0);
if(int(GetSpeed())==0){
SetGraphicRect(0,0,33,63);
}
if(GetSpeedX()<0){
SetGraphicRect(32,0,69,62);
}
if(GetSpeedX()>0){
SetGraphicAngle(180,0,0);
SetGraphicRect(32,0,69,62);
}
DrawGraphic(GetX,GetY);
*/
}
@Finalize{
//DeleteGraphic(BossImg);
}
}