JHFlauzino

Untitled

May 4th, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 9.12 KB | None | 0 0
  1. #TouhouDanmakufu[Player]
  2. #ScriptVersion[3]
  3. #Title["Zino"]
  4. #Text[""]
  5. #ID["Zino"]
  6. #ReplayName["Zino"]
  7. #include"./lib/includes.txt"
  8.  
  9. let playerSprite = GetCurrentScriptDirectory ~ "./marisasprite.png";
  10. let playerID = GetPlayerObjectID;
  11. let playerObj = ObjPrim_Create(OBJ_SPRITE_2D);
  12. let hitboxObj = ObjPrim_Create(OBJ_SPRITE_2D);
  13. let count = -1;
  14. let isFocus = false;//focus
  15. let ShotPress = false;//shot press
  16. let Shooting = false;// is shooting
  17.  
  18. let objBoss = -1;
  19. let ObjOption;
  20. let ObjOption1;
  21.  
  22. @Initialize{
  23.     SetPlayerSpeed(4,2);
  24.     ObjPlayer_AddIntersectionCircleA1(playerID,0,0,3,16);
  25.     SetPlayerClip(0+5,0+5,384-5,448-5);
  26.     SetPlayerDownStateFrame(60);
  27.     SetPlayerRebirthFrame(30);
  28.     SetPlayerAutoItemCollectLine(90);
  29.     OptionSpin;
  30.     ShotU1;//shot
  31.    
  32.     renderPlayer;
  33.     renderHitbox(GetPlayerX,GetPlayerY);
  34. }
  35. @Event{
  36.     alternative(GetEventType)
  37.    
  38.     case(EV_REQUEST_SPELL){
  39.         if(GetPlayerSpell > 0){
  40.             SetScriptResult(true);
  41.             SetPlayerInvincibilityFrame(120);// a little bomb to make the character not useless
  42.         }else{
  43.             SetScriptResult(false);
  44.         }
  45.     }
  46.     case(EV_PLAYER_SHOOTDOWN){//if the player have been hit
  47.         SetForbidPlayerShot(true);
  48.         SetForbidPlayerSpell(true);
  49.         ObjRender_SetAlpha(playerObj,0);
  50.     }
  51.     case(EV_PLAYER_REBIRTH){//if the player revives
  52.         SetForbidPlayerShot(false);
  53.         SetForbidPlayerSpell(false);
  54.         SetPlayerInvincibilityFrame(120);
  55.         SetPlayerSpell(3);
  56.         ObjRender_SetAlpha(playerObj,255);
  57.     }
  58. }
  59.  
  60. @MainLoop{
  61.     if(GetVirtualKeyState(VK_SLOWMOVE) == KEY_PUSH || GetVirtualKeyState(VK_SLOWMOVE) == KEY_HOLD){
  62.         isFocus = true;//checks if the player is in focus mode
  63.     }
  64.     if(GetVirtualKeyState(VK_SLOWMOVE) == KEY_PULL){
  65.         isFocus = false;//checks if the player is in focus mode
  66.     }
  67.     if(GetVirtualKeyState(VK_SHOT) == KEY_PUSH || GetVirtualKeyState(VK_SHOT) == KEY_HOLD){
  68.         ShotPress = true;//checks if the player is pressing the shot button
  69.     }else{
  70.         ShotPress = false;//checks if the player is pressing the shot button
  71.     }
  72.     if(IsPermitPlayerShot && ShotPress){
  73.         Shooting = true;//checks if the player is shooting
  74.     }else{
  75.         Shooting = false;//checks if the player is shooting
  76.     }
  77.     yield;
  78. }
  79. task ShotU1{
  80.     while(true){
  81.         let las = -1;
  82.         let las1 = -1;
  83.         if(Shooting){
  84.             ascent(i in 0..1){
  85.                 las = ObjShot_Create(OBJ_STRAIGHT_LASER);//default laser
  86.                 ObjShot_Regist(las);
  87.                 ObjShot_SetAutoDelete(las, false);
  88.                 ObjShot_SetGraphic(las, 1016);
  89.                 ObjShot_SetDamage(las, 1);
  90.                 ObjShot_SetPenetration(las, 3);
  91.                 ObjLaser_SetLength(las, 512);
  92.                 ObjLaser_SetRenderWidth(las,20);
  93.                 ObjLaser_SetIntersectionWidth(las,20);
  94.                 ObjStLaser_SetAngle(las,270);
  95.                 KeepAtObj(las,playerID);
  96.                 deleteinloop(las);
  97.                 ObjStLaser_SetSource(las,false);
  98.                 Obj_SetRenderPriorityI(las,79);
  99.                 ObjRender_SetAlpha(las,255);
  100.                 /*if(Shooting&&isFocus){
  101.                     ObjRender_SetColor(las1,255,255,0);
  102.                 }
  103.                 if(Shooting&&!isFocus){
  104.                     ObjRender_SetColor(las1,255,255,255);
  105.                 }code don't work*/
  106.             }
  107.             while(Shooting&&!isFocus){
  108.                 let angleT= 270-(360/72)*3;
  109.                 ascent(i in 0..72/9){
  110.                     let obj = CreatePlayerShotA1(ObjRender_GetX(ObjOption),ObjRender_GetY(ObjOption),5,angleT,5,1,879);// create the shot
  111.                     let obj1 = CreatePlayerShotA1(ObjRender_GetX(ObjOption1),ObjRender_GetY(ObjOption1),5,angleT,5,1,879);// create the shot
  112.                     angleT+=360/72;//set the angle
  113.                     ObjRender_SetColor(obj,0,0,0);//set the color
  114.                     ObjRender_SetColor(obj1,0,0,0);
  115.                     ObjRender_SetAlpha(obj1,128);//set the opacity
  116.                     ObjRender_SetAlpha(obj,128);
  117.                 }
  118.                 wait(5);//so that the script don't crash and to make it not too powerful
  119.             }
  120.             if(Shooting&&isFocus){
  121.                 ascent(i in 0..1){
  122.                     las = ObjShot_Create(OBJ_STRAIGHT_LASER);
  123.                     ObjShot_Regist(las);
  124.                     ObjShot_SetAutoDelete(las, false);
  125.                     ObjShot_SetGraphic(las, 1016);//graphic
  126.                     ObjShot_SetDamage(las, 1);//damage
  127.                     ObjShot_SetPenetration(las, 3);//penetration
  128.                     ObjLaser_SetLength(las, 512+256);//length
  129.                     ObjLaser_SetRenderWidth(las,20);//width
  130.                     ObjLaser_SetIntersectionWidth(las,20);
  131.                     KeepAtObj(las,ObjOption);//keep the location at the familiar
  132.                     deleteinloop(las);//delete when stop firing
  133.                     ObjStLaser_SetSource(las,false);// to not draw the base light
  134.                     Obj_SetRenderPriorityI(las,79);//to be above all things
  135.                     ObjRender_SetAlpha(las,255);//to make it 100% observable
  136.                     ObjRender_SetColor(las,255,128,0);//set the color to complete orange
  137.                    
  138.                     las1 = ObjShot_Create(OBJ_STRAIGHT_LASER);//same thing as above
  139.                     ObjShot_Regist(las1);
  140.                     ObjShot_SetAutoDelete(las1, false);
  141.                     ObjShot_SetGraphic(las1, 1016);
  142.                     ObjShot_SetDamage(las1, 1);
  143.                     ObjShot_SetPenetration(las1, 3);
  144.                     ObjLaser_SetLength(las1, 512+256);
  145.                     ObjLaser_SetRenderWidth(las1,20);
  146.                     ObjLaser_SetIntersectionWidth(las1,20);
  147.                     KeepAtObj(las1,ObjOption1);
  148.                     deleteinloop(las1);
  149.                     ObjStLaser_SetSource(las1,false);
  150.                     Obj_SetRenderPriorityI(las1,79);
  151.                     ObjRender_SetAlpha(las1,255);
  152.                     ObjRender_SetColor(las1,255,128,0);
  153.                    
  154.                     while(!Obj_IsDeleted(las)&&!Obj_IsDeleted(las1)){
  155.                         /*let enemy = [0] ~ GetAllEnemyID;
  156.                         let dist = [0];
  157.                         let nearestID = 0;
  158.                         let distA2 = [0];
  159.                         ascent(i in 0..length(enemy)){
  160.                             let distV = [GetDistance(ObjMove_GetX(enemy[i]),ObjMove_GetY(enemy[i]),GetPlayerX,GetPlayerY)];
  161.                             dist = dist ~ distV;
  162.                         }
  163.                         ascent(i in 0..length(dist)){
  164.                             let distnrst = min(dist[i],dist[max(i-1,0)]);
  165.                             let distnrstA = [distnrst];
  166.                             distA2 = distA2 ~ distnrstA;
  167.                             if(distA2[i] == distnrst){nearestID++;}
  168.                         }code don't work*/
  169.                         yield;
  170.                     }
  171.                 }
  172.             }
  173.             while(Shooting){yield;}
  174.         }
  175.         yield;
  176.     }
  177. }
  178. task OptionSpin{//create the familiar
  179.     let ang = 180;//set the initial angle
  180.     let rad = 32;//the radius
  181.     let angbonus = 1;//the number that the ang will increase
  182.     let radminus = 16;//to decrease radius y
  183.     ObjOption = ObjPrim_Create(OBJ_SPRITE_2D);
  184.     ObjPrim_SetTexture(ObjOption,playerSprite);//texture
  185.     Obj_SetRenderPriorityI(ObjOption,31);//layer
  186.     ObjRender_SetAngleXYZ(ObjOption,0,0,0);//reset angle
  187.     ObjRender_SetScaleXYZ(ObjOption,1,1,1);// normal scale
  188.     ObjRender_SetAlpha(ObjOption,255);//completely visible 
  189.     ObjSprite2D_SetSourceRect(ObjOption,87,16,102,30);//the source
  190.     ObjSprite2D_SetDestCenter(ObjOption);//to make render obj move functions usable
  191.  
  192.     ObjOption1 = ObjPrim_Create(OBJ_SPRITE_2D);//same thing
  193.     ObjPrim_SetTexture(ObjOption1,playerSprite);
  194.     Obj_SetRenderPriorityI(ObjOption1,31);
  195.     ObjRender_SetAngleXYZ(ObjOption1,0,0,0);
  196.     ObjRender_SetScaleXYZ(ObjOption1,1,1,1);
  197.     ObjRender_SetAlpha(ObjOption1,255);
  198.     ObjSprite2D_SetSourceRect(ObjOption1,87,16,102,30);
  199.     ObjSprite2D_SetDestCenter(ObjOption1);
  200.  
  201.     while(!Obj_IsDeleted(ObjOption) || !Obj_IsDeleted(ObjOption1)){
  202.         ObjRender_SetPosition(ObjOption,GetPlayerX+rad*cos(ang),GetPlayerY+(rad-radminus)*sin(ang),0);//change the position to a angle in a circle
  203.         ObjRender_SetPosition(ObjOption1,GetPlayerX+rad*cos(ang-180),GetPlayerY+(rad-radminus)*sin(ang-180),0);
  204.         ang+=angbonus;// add the angle
  205.         if(isFocus){
  206.             rad = 16;//set the radius
  207.             radminus = 8;//take 8 form the y radius
  208.         }else{
  209.             rad = 32;//same thing as above
  210.             angbonus = 1;
  211.             radminus = 16;
  212.         }
  213.         yield;
  214.     }  
  215. }
  216. task deleteinloop(las){
  217.     while(!Obj_IsDeleted(las)){//check if the player is shooting, if not, deletes the laser
  218.         if(!Shooting){
  219.             Obj_Delete(las);
  220.         }yield;
  221.     }
  222. }
  223. task KeepAtObj(obj,obj1){// keep the location at the position of a obj
  224.     while(!Obj_IsDeleted(obj)){
  225.         ObjMove_SetPosition(obj,ObjRender_GetX(obj1),ObjRender_GetY(obj1));
  226.         yield;
  227.     }
  228. }
  229. task renderPlayer{
  230.     ObjPrim_SetTexture(playerObj,playerSprite);
  231.     Obj_SetRenderPriorityI(playerObj,31);
  232.     ObjRender_SetBlendType(playerObj,BLEND_ALPHA);
  233.     ObjRender_SetAngleXYZ(playerObj,0,0,0);
  234.     ObjRender_SetScaleXYZ(playerObj,1,1,1);
  235.     ObjRender_SetAlpha(playerObj,255);
  236.     ObjSprite2D_SetSourceRect(playerObj,0,0,32,48);
  237.     ObjSprite2D_SetDestCenter(playerObj);
  238.     ObjRender_SetPosition(playerObj,GetPlayerX,GetPlayerY,0);
  239.    
  240.     while(!Obj_IsDeleted(playerObj)){
  241.         ObjRender_SetPosition(playerObj,GetPlayerX,GetPlayerY,0);
  242.         yield;
  243.         if(GetVirtualKeyState(VK_LEFT) == KEY_PUSH || GetVirtualKeyState(VK_LEFT) == KEY_HOLD){
  244.             ObjRender_SetAngleY(playerObj,0);
  245.             ObjSprite2D_SetSourceRect(playerObj,32,0,64,48);
  246.         }else if(GetVirtualKeyState(VK_RIGHT) == KEY_PUSH || GetVirtualKeyState(VK_RIGHT) == KEY_HOLD){
  247.             ObjRender_SetAngleY(playerObj,180);
  248.             ObjSprite2D_SetSourceRect(playerObj,32,0,64,48);
  249.         }else{
  250.             ObjSprite2D_SetSourceRect(playerObj,0,0,32,48);
  251.         }
  252.     }
  253. }
  254.  
  255. task renderHitbox(x,y){
  256.     let alpha = 0;
  257.     let spin = 0;
  258.     ObjPrim_SetTexture(hitboxObj,playerSprite);
  259.     ObjRender_SetBlendType(hitboxObj,BLEND_ALPHA);
  260.     Obj_SetRenderPriorityI(hitboxObj,50);
  261.     ObjRender_SetAlpha(hitboxObj,0);
  262.     ObjRender_SetScaleXYZ(hitboxObj,1,1,0);
  263.     ObjSprite2D_SetSourceRect(hitboxObj,0,64,64,128);
  264.     ObjSprite2D_SetDestCenter(hitboxObj);
  265.    
  266.     while(!Obj_IsDeleted(hitboxObj)){
  267.         ObjRender_SetPosition(hitboxObj,GetPlayerX,GetPlayerY,0);
  268.         ObjRender_SetAngleZ(hitboxObj,spin);
  269.         ObjRender_SetAlpha(hitboxObj,alpha);
  270.         spin+=1;
  271.         if(isFocus){
  272.             alpha = 255;
  273.         }else{
  274.             alpha = 0;
  275.         }
  276.         yield;     
  277.     }
  278. }
Advertisement
Add Comment
Please, Sign In to add comment