Advertisement
C0BRA

Old SA:MP script

Mar 25th, 2015
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.64 KB | None | 0 0
  1. #include <a_samp>
  2. #include <core>
  3. #include <float>
  4. #include <Dini>
  5. #define COLOR_GREEN 0x33AA33AA
  6. #define COLOR_ORANGE 0xFF9900AA
  7. #define COLOR_RED 0xFF000055
  8. #define FILTERSCRIPT
  9.  
  10.  
  11. forward MortarAim(playerid);
  12. forward firemortar(playerid, Float:x, Float:y, Float:z);
  13. forward returncamera(playerid);
  14. forward GiveMissiles();
  15. forward RemoveTextDraw(playerid);
  16. forward TextDraw(playerid, text);
  17.  
  18. new Float:ROCKET_SPEED[256]; // 70.0
  19. new Float:ROCKET_HEIGHT[256]; // 600.0
  20. new int:MISSILE_OBJECT_ID[256]; // 3790
  21. new int:MISSILE_MAX_AT_ONE_TIME[256]; // 5
  22. new int:MISSILE_REFILL_TIME[256]; // 60
  23. new int:MISSILE_EXPLOSION_TYPE[256]; // 7
  24. new Float:MISSILE_EXPLOSION_RAD[256];
  25. new int:ADMINS_HAVE_SUPER_POWERS[256];
  26. new PLAYER_IS_AIM_MORTAR[MAX_PLAYERS];
  27. new Float:OLD_CAMERA_POSX[MAX_PLAYERS];
  28. new Float:OLD_CAMERA_POSY[MAX_PLAYERS];
  29. new Float:OLD_CAMERA_POSZ[MAX_PLAYERS];
  30. new Float:OLD_CAMERA_AIMX[MAX_PLAYERS];
  31. new Float:OLD_CAMERA_AIMY[MAX_PLAYERS];
  32. new Float:OLD_CAMERA_AIMZ[MAX_PLAYERS];
  33. new mortaraim[MAX_PLAYERS];
  34. new missile[MAX_PLAYERS];
  35. new missilesmoke[MAX_PLAYERS];
  36. new mortar_esc[MAX_PLAYERS];
  37. new mortar_is_firing[MAX_PLAYERS];
  38. new mortar_missiles_left[MAX_PLAYERS];
  39. new Text:textdraw[MAX_PLAYERS];
  40.  
  41. main()
  42. {
  43.     print("\n<|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>>");
  44.     print("<|----{Mortar Strike By C0BRA}------|>");
  45.     print("<|_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-|>\n");
  46. }
  47.  
  48. public OnFilterScriptInit()
  49. {
  50.     ROCKET_HEIGHT[0] = floatstr(dini_Get("/mortarstrike/config.ini", "ROCKET_HEIGHT"));
  51.     MISSILE_OBJECT_ID[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_OBJECT_ID"));
  52.     ROCKET_SPEED[0] = floatstr(dini_Get("/mortarstrike/config.ini", "ROCKET_SPEED"));  
  53.     MISSILE_MAX_AT_ONE_TIME[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_MAX_AT_ONE_TIME"));  
  54.     MISSILE_REFILL_TIME[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_REFILL_TIME"));  
  55.     MISSILE_EXPLOSION_TYPE[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_EXPLOSION_TYPE"));
  56.     MISSILE_EXPLOSION_RAD[0] = floatstr(dini_Get("/mortarstrike/config.ini", "MISSILE_EXPLOSION_RAD"));
  57.     ADMINS_HAVE_SUPER_POWERS[0] = strval(dini_Get("/mortarstrike/config.ini", "ADMINS_HAVE_SUPER_POWERS"));
  58.     SetTimer("GiveMissiles", 1000*MISSILE_REFILL_TIME[0], true);
  59. }
  60.  
  61. public OnPlayerCommandText(playerid, cmdtext[])
  62. {
  63.     if (strcmp("/texttest", cmdtext, true, 9) == 0)
  64.     {
  65.         if(cmdtext[9] == 0)
  66.         {
  67.             SendClientMessage(playerid, 0xF30000FF, "Usage: /texttest [TEXT]");
  68.             return 1;
  69.         }
  70.         new txt;
  71.         txt = cmdtext[10];
  72.         TextDraw(playerid, txt);
  73.         return 1;
  74.     }
  75.    
  76.     if (strcmp("/mortar", cmdtext, true, 10) == 0)
  77.     {
  78.         printf("SPEED:%f HEIGHT:%f MAX:%i TIME:%i", ROCKET_SPEED[0], ROCKET_HEIGHT[0], MISSILE_MAX_AT_ONE_TIME[0], MISSILE_REFILL_TIME);
  79.         if(mortar_missiles_left[playerid] == 0) {
  80.         SendClientMessage(playerid, COLOR_RED, "You have no missiles, please wait to be alicated more!"); return 1;}
  81.         if(mortar_is_firing[playerid] == 1){
  82.             SendClientMessage(playerid, COLOR_ORANGE, "You can only fire one missile at a time!");
  83.             return 1;
  84.         }
  85.         mortar_missiles_left[playerid] -= 1;
  86.         mortar_is_firing[playerid] = 1;
  87.         new Float:x, Float:y, Float:z;
  88.         TogglePlayerControllable(playerid, 0);
  89.         GetPlayerPos(playerid, x, y, z);
  90.         OLD_CAMERA_POSX[playerid] = x;
  91.         OLD_CAMERA_POSY[playerid] = y;
  92.         OLD_CAMERA_POSZ[playerid] = z+30;
  93.         OLD_CAMERA_AIMX[playerid] = x;
  94.         OLD_CAMERA_AIMY[playerid] = y;
  95.         OLD_CAMERA_AIMZ[playerid] = z;
  96.         SetPlayerCameraPos(playerid, x, y, z);
  97.         PLAYER_IS_AIM_MORTAR[playerid] = 1;
  98.         mortaraim[playerid] = SetTimerEx("MortarAim", 100, true, "i", playerid);
  99.         return 1;
  100.     }
  101.     if (strcmp("/missilesleft", cmdtext, true, 15) == 0)
  102.     {
  103.         new str[128];
  104.         new missleft = mortar_missiles_left[playerid];
  105.         if(missleft == 0){
  106.             format(str, sizeof(str), "You have %i missiles left, Please wait for more!", missleft);
  107.             SendClientMessage(playerid, COLOR_RED, str);
  108.         }
  109.         else if(missleft == MISSILE_MAX_AT_ONE_TIME[0]){
  110.             format(str, sizeof(str), "You have %i missiles left, You are at your maximum limit!", missleft);
  111.             SendClientMessage(playerid, COLOR_GREEN, str); 
  112.         } else {
  113.         format(str, sizeof(str), "You have %i missiles left!", missleft);
  114.         SendClientMessage(playerid, COLOR_ORANGE, str);
  115.         }
  116.         return 1;
  117.     }
  118.     return 0;
  119. }
  120.  
  121. public OnPlayerDeath(playerid, killerid, reason)
  122. {
  123.     if(PLAYER_IS_AIM_MORTAR[playerid] == 1)
  124.     {
  125.         TogglePlayerControllable(playerid, 1);
  126.         SetCameraBehindPlayer(playerid);
  127.         KillTimer(mortaraim[playerid]);
  128.         PLAYER_IS_AIM_MORTAR[playerid] = 0;
  129.     }
  130.     return 1;
  131. }
  132.  
  133. public OnPlayerRequestSpawn(playerid)
  134. {
  135.     return 1;
  136. }
  137.  
  138. public OnPlayerDisconnect(playerid)
  139. {
  140.     mortar_missiles_left[playerid] = 0;
  141.     SetCameraBehindPlayer(playerid);
  142.     TogglePlayerControllable(playerid, 1);
  143.     KillTimer(mortaraim[playerid]);
  144.     mortar_esc[playerid] = 0;
  145.     return 1;
  146. }
  147.  
  148. public OnPlayerConnect(playerid)
  149. {
  150.     mortar_esc[playerid] = 0;
  151.     mortar_missiles_left[playerid] = 0;
  152.     SetCameraBehindPlayer(playerid);
  153.     TogglePlayerControllable(playerid, 1);
  154.     KillTimer(mortaraim[playerid]);
  155.     return 1;
  156. }
  157.  
  158. public MortarAim(playerid)
  159. {
  160.     if(PLAYER_IS_AIM_MORTAR[playerid] == 1)
  161.     {
  162.         new Float:multi = 2.0;
  163.         new keys, updown, leftright;
  164.         if(IsPlayerConnected(playerid))
  165.         {
  166.             GetPlayerKeys(playerid, keys, updown, leftright);
  167.             new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
  168.             x2 = OLD_CAMERA_AIMX[playerid];
  169.             y2 = OLD_CAMERA_AIMY[playerid];
  170.             z2 = OLD_CAMERA_AIMZ[playerid];
  171.             x = OLD_CAMERA_POSX[playerid];
  172.             y = OLD_CAMERA_POSY[playerid];
  173.             z = OLD_CAMERA_POSZ[playerid];
  174.             if(keys == KEY_SPRINT)
  175.             {
  176.                 multi = 10.0;
  177.             }
  178.             if(keys == KEY_WALK)
  179.             {
  180.                 multi = 0.5;
  181.             }
  182.             if(keys == KEY_ANALOG_UP || updown == KEY_UP)
  183.             {
  184.                 y2+=2*multi;
  185.                 y+=2*multi;
  186.                 x2+=2*multi;
  187.                 x+=2*multi;
  188.             }
  189.             if(keys == KEY_ANALOG_DOWN || updown == KEY_DOWN)
  190.             {
  191.                 y2-=(2*multi);
  192.                 y-=(2*multi);
  193.                 x2-=(2*multi);
  194.                 x-=(2*multi);
  195.             }
  196.             if(keys == KEY_ANALOG_RIGHT || leftright == KEY_RIGHT)
  197.             {
  198.                 y2-=(2*multi);
  199.                 y-=(2*multi);
  200.                 x2+=2*multi;
  201.                 x+=2*multi;
  202.             }
  203.             if(keys == KEY_ANALOG_LEFT || leftright == KEY_LEFT)
  204.             {
  205.                 y2+=2*multi;
  206.                 y+=2*multi;
  207.                 x2-=(2*multi);
  208.                 x-=(2*multi);
  209.             }
  210.             if(keys == KEY_ACTION)
  211.             {
  212.                 z2+=2*multi;
  213.                 z+=2*multi;
  214.             }
  215.             if(keys == KEY_JUMP)
  216.             {
  217.                 z2-=(2*multi);
  218.                 z-=(2*multi);
  219.             }
  220.             OLD_CAMERA_AIMX[playerid] = x2;
  221.             OLD_CAMERA_AIMY[playerid] = y2;
  222.             OLD_CAMERA_AIMZ[playerid] = z2;
  223.             OLD_CAMERA_POSX[playerid] = x;
  224.             OLD_CAMERA_POSY[playerid] = y;
  225.             OLD_CAMERA_POSZ[playerid] = z;
  226.             SetPlayerCameraPos(playerid, x, y, z);
  227.             SetPlayerCameraLookAt(playerid, x2, y2, z2);
  228.             if(keys == KEY_SECONDARY_ATTACK)
  229.             {
  230.                 KillTimer(mortaraim[playerid]);
  231.                 PLAYER_IS_AIM_MORTAR[playerid] = 0;
  232.                 missile[playerid] = CreateObject(MISSILE_OBJECT_ID[0], x2, y2, z2+ROCKET_HEIGHT[0],0.0,-90.0,0.0); //rocket
  233.                 missilesmoke[playerid] = CreateObject(269, x2, y2, z2+ROCKET_HEIGHT[0], 0.0, 0.0, 0.0); //Smoke
  234.                 MoveObject(missile[playerid], x2, y2, z2, ROCKET_SPEED[0]);
  235.                 MoveObject(missilesmoke[playerid], x2, y2, z2, ROCKET_SPEED[0]);
  236.                 mortar_esc[playerid] = 0;
  237.                 mortaraim[playerid] = SetTimerEx("firemortar", 50, true, "ifff", playerid, x2, y2, z2);
  238.             }
  239.         }
  240.     } else {
  241.         TogglePlayerControllable(playerid, 1);
  242.         SetCameraBehindPlayer(playerid);
  243.         KillTimer(mortaraim[playerid]);
  244.     }
  245. }
  246.  
  247. public firemortar(playerid, Float:x, Float:y, Float:z)
  248. {
  249.     new Float:xx, Float:yy, Float:cz;
  250.     GetObjectPos(missile[playerid], xx, yy, cz);   
  251.     if(mortar_esc[playerid] == 0)
  252.     {
  253.         SetPlayerCameraLookAt(playerid, x, y, z);
  254.         SetPlayerCameraPos(playerid, xx+0.500001, yy+0.500001, cz+1.500001);
  255.     }
  256.     if(cz == z)
  257.     {
  258.         KillTimer(mortaraim[playerid]);
  259.         CreateExplosion(x, y, z, MISSILE_EXPLOSION_TYPE[0], MISSILE_EXPLOSION_RAD[0]);
  260.         DestroyObject(missile[playerid]);
  261.         DestroyObject(missilesmoke[playerid]);
  262.         if(mortar_esc[playerid] == 0){
  263.             SetPlayerCameraLookAt(playerid, x, y, z);
  264.             SetPlayerCameraPos(playerid, x, y+20, z+50);
  265.         }
  266.         mortaraim[playerid] = SetTimerEx("returncamera", 50, true, "i", playerid);     
  267.     }
  268.     new keys, leftright, updown;
  269.     GetPlayerKeys(playerid, keys, updown, leftright);
  270.     if(keys == KEY_SPRINT && mortar_esc[playerid] == 0){
  271.         mortar_esc[playerid] = 2;
  272.     }
  273.     if (mortar_esc[playerid] == 2)
  274.     {
  275.         TogglePlayerControllable(playerid, 1);
  276.         SetCameraBehindPlayer(playerid);
  277.         mortar_esc[playerid] = 1;
  278.     }
  279.    
  280. }
  281.  
  282. public returncamera(playerid)
  283. {
  284.     new keys, leftright, updown;
  285.     GetPlayerKeys(playerid, keys, updown, leftright);
  286.     if(keys == KEY_SECONDARY_ATTACK) {
  287.         SetCameraBehindPlayer(playerid);
  288.         TogglePlayerControllable(playerid, 1);
  289.         KillTimer(mortaraim[playerid]);
  290.         mortar_is_firing[playerid] = 0;
  291.         mortar_esc[playerid] = 0;
  292.     }
  293.     if(mortar_esc[playerid] == 1){
  294.         KillTimer(mortaraim[playerid]);
  295.         mortar_esc[playerid] = 0;
  296.         mortar_is_firing[playerid] = 0;
  297.     }
  298. }
  299.  
  300. public GiveMissiles()
  301. {
  302.     for(new i; i < MAX_PLAYERS; i++)
  303.     {
  304.         if(IsPlayerConnected(i))
  305.         {
  306.             if(mortar_missiles_left[i] == 5)
  307.             {}else{
  308.                 mortar_missiles_left[i] += 1;
  309.             }
  310.             if(IsPlayerAdmin(i) && ADMINS_HAVE_SUPER_POWERS[0] == 1)
  311.             {
  312.                 mortar_missiles_left[i] = MISSILE_MAX_AT_ONE_TIME[0];
  313.             }
  314.            
  315.         }
  316.     }
  317. }
  318.  
  319. public TextDraw(playerid, text)
  320. {
  321.     new textdr[256];
  322.     format(textdr, sizeof(textdr), "%s", text);
  323.     textdraw[playerid] = TextDrawCreate(350.0, 500.0, textdr);
  324.     TextDrawFont(textdraw[playerid], 1);
  325.     TextDrawSetOutline(textdraw[playerid], 1);
  326.     TextDrawAlignment(textdraw[playerid], 2);
  327.     TextDrawShowForPlayer(playerid, textdraw[playerid]);
  328.     SetTimerEx("RemoveTextDraw", 2000, false, "i", playerid);
  329. }
  330.  
  331. public RemoveTextDraw(playerid)
  332. {
  333.     TextDrawDestroy(textdraw[playerid]);
  334. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement