Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <core>
- #include <float>
- #include <Dini>
- #define COLOR_GREEN 0x33AA33AA
- #define COLOR_ORANGE 0xFF9900AA
- #define COLOR_RED 0xFF000055
- #define FILTERSCRIPT
- forward MortarAim(playerid);
- forward firemortar(playerid, Float:x, Float:y, Float:z);
- forward returncamera(playerid);
- forward GiveMissiles();
- forward RemoveTextDraw(playerid);
- forward TextDraw(playerid, text);
- new Float:ROCKET_SPEED[256]; // 70.0
- new Float:ROCKET_HEIGHT[256]; // 600.0
- new int:MISSILE_OBJECT_ID[256]; // 3790
- new int:MISSILE_MAX_AT_ONE_TIME[256]; // 5
- new int:MISSILE_REFILL_TIME[256]; // 60
- new int:MISSILE_EXPLOSION_TYPE[256]; // 7
- new Float:MISSILE_EXPLOSION_RAD[256];
- new int:ADMINS_HAVE_SUPER_POWERS[256];
- new PLAYER_IS_AIM_MORTAR[MAX_PLAYERS];
- new Float:OLD_CAMERA_POSX[MAX_PLAYERS];
- new Float:OLD_CAMERA_POSY[MAX_PLAYERS];
- new Float:OLD_CAMERA_POSZ[MAX_PLAYERS];
- new Float:OLD_CAMERA_AIMX[MAX_PLAYERS];
- new Float:OLD_CAMERA_AIMY[MAX_PLAYERS];
- new Float:OLD_CAMERA_AIMZ[MAX_PLAYERS];
- new mortaraim[MAX_PLAYERS];
- new missile[MAX_PLAYERS];
- new missilesmoke[MAX_PLAYERS];
- new mortar_esc[MAX_PLAYERS];
- new mortar_is_firing[MAX_PLAYERS];
- new mortar_missiles_left[MAX_PLAYERS];
- new Text:textdraw[MAX_PLAYERS];
- main()
- {
- print("\n<|^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^>>");
- print("<|----{Mortar Strike By C0BRA}------|>");
- print("<|_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-|>\n");
- }
- public OnFilterScriptInit()
- {
- ROCKET_HEIGHT[0] = floatstr(dini_Get("/mortarstrike/config.ini", "ROCKET_HEIGHT"));
- MISSILE_OBJECT_ID[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_OBJECT_ID"));
- ROCKET_SPEED[0] = floatstr(dini_Get("/mortarstrike/config.ini", "ROCKET_SPEED"));
- MISSILE_MAX_AT_ONE_TIME[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_MAX_AT_ONE_TIME"));
- MISSILE_REFILL_TIME[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_REFILL_TIME"));
- MISSILE_EXPLOSION_TYPE[0] = strval(dini_Get("/mortarstrike/config.ini", "MISSILE_EXPLOSION_TYPE"));
- MISSILE_EXPLOSION_RAD[0] = floatstr(dini_Get("/mortarstrike/config.ini", "MISSILE_EXPLOSION_RAD"));
- ADMINS_HAVE_SUPER_POWERS[0] = strval(dini_Get("/mortarstrike/config.ini", "ADMINS_HAVE_SUPER_POWERS"));
- SetTimer("GiveMissiles", 1000*MISSILE_REFILL_TIME[0], true);
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if (strcmp("/texttest", cmdtext, true, 9) == 0)
- {
- if(cmdtext[9] == 0)
- {
- SendClientMessage(playerid, 0xF30000FF, "Usage: /texttest [TEXT]");
- return 1;
- }
- new txt;
- txt = cmdtext[10];
- TextDraw(playerid, txt);
- return 1;
- }
- if (strcmp("/mortar", cmdtext, true, 10) == 0)
- {
- printf("SPEED:%f HEIGHT:%f MAX:%i TIME:%i", ROCKET_SPEED[0], ROCKET_HEIGHT[0], MISSILE_MAX_AT_ONE_TIME[0], MISSILE_REFILL_TIME);
- if(mortar_missiles_left[playerid] == 0) {
- SendClientMessage(playerid, COLOR_RED, "You have no missiles, please wait to be alicated more!"); return 1;}
- if(mortar_is_firing[playerid] == 1){
- SendClientMessage(playerid, COLOR_ORANGE, "You can only fire one missile at a time!");
- return 1;
- }
- mortar_missiles_left[playerid] -= 1;
- mortar_is_firing[playerid] = 1;
- new Float:x, Float:y, Float:z;
- TogglePlayerControllable(playerid, 0);
- GetPlayerPos(playerid, x, y, z);
- OLD_CAMERA_POSX[playerid] = x;
- OLD_CAMERA_POSY[playerid] = y;
- OLD_CAMERA_POSZ[playerid] = z+30;
- OLD_CAMERA_AIMX[playerid] = x;
- OLD_CAMERA_AIMY[playerid] = y;
- OLD_CAMERA_AIMZ[playerid] = z;
- SetPlayerCameraPos(playerid, x, y, z);
- PLAYER_IS_AIM_MORTAR[playerid] = 1;
- mortaraim[playerid] = SetTimerEx("MortarAim", 100, true, "i", playerid);
- return 1;
- }
- if (strcmp("/missilesleft", cmdtext, true, 15) == 0)
- {
- new str[128];
- new missleft = mortar_missiles_left[playerid];
- if(missleft == 0){
- format(str, sizeof(str), "You have %i missiles left, Please wait for more!", missleft);
- SendClientMessage(playerid, COLOR_RED, str);
- }
- else if(missleft == MISSILE_MAX_AT_ONE_TIME[0]){
- format(str, sizeof(str), "You have %i missiles left, You are at your maximum limit!", missleft);
- SendClientMessage(playerid, COLOR_GREEN, str);
- } else {
- format(str, sizeof(str), "You have %i missiles left!", missleft);
- SendClientMessage(playerid, COLOR_ORANGE, str);
- }
- return 1;
- }
- return 0;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(PLAYER_IS_AIM_MORTAR[playerid] == 1)
- {
- TogglePlayerControllable(playerid, 1);
- SetCameraBehindPlayer(playerid);
- KillTimer(mortaraim[playerid]);
- PLAYER_IS_AIM_MORTAR[playerid] = 0;
- }
- return 1;
- }
- public OnPlayerRequestSpawn(playerid)
- {
- return 1;
- }
- public OnPlayerDisconnect(playerid)
- {
- mortar_missiles_left[playerid] = 0;
- SetCameraBehindPlayer(playerid);
- TogglePlayerControllable(playerid, 1);
- KillTimer(mortaraim[playerid]);
- mortar_esc[playerid] = 0;
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- mortar_esc[playerid] = 0;
- mortar_missiles_left[playerid] = 0;
- SetCameraBehindPlayer(playerid);
- TogglePlayerControllable(playerid, 1);
- KillTimer(mortaraim[playerid]);
- return 1;
- }
- public MortarAim(playerid)
- {
- if(PLAYER_IS_AIM_MORTAR[playerid] == 1)
- {
- new Float:multi = 2.0;
- new keys, updown, leftright;
- if(IsPlayerConnected(playerid))
- {
- GetPlayerKeys(playerid, keys, updown, leftright);
- new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
- x2 = OLD_CAMERA_AIMX[playerid];
- y2 = OLD_CAMERA_AIMY[playerid];
- z2 = OLD_CAMERA_AIMZ[playerid];
- x = OLD_CAMERA_POSX[playerid];
- y = OLD_CAMERA_POSY[playerid];
- z = OLD_CAMERA_POSZ[playerid];
- if(keys == KEY_SPRINT)
- {
- multi = 10.0;
- }
- if(keys == KEY_WALK)
- {
- multi = 0.5;
- }
- if(keys == KEY_ANALOG_UP || updown == KEY_UP)
- {
- y2+=2*multi;
- y+=2*multi;
- x2+=2*multi;
- x+=2*multi;
- }
- if(keys == KEY_ANALOG_DOWN || updown == KEY_DOWN)
- {
- y2-=(2*multi);
- y-=(2*multi);
- x2-=(2*multi);
- x-=(2*multi);
- }
- if(keys == KEY_ANALOG_RIGHT || leftright == KEY_RIGHT)
- {
- y2-=(2*multi);
- y-=(2*multi);
- x2+=2*multi;
- x+=2*multi;
- }
- if(keys == KEY_ANALOG_LEFT || leftright == KEY_LEFT)
- {
- y2+=2*multi;
- y+=2*multi;
- x2-=(2*multi);
- x-=(2*multi);
- }
- if(keys == KEY_ACTION)
- {
- z2+=2*multi;
- z+=2*multi;
- }
- if(keys == KEY_JUMP)
- {
- z2-=(2*multi);
- z-=(2*multi);
- }
- OLD_CAMERA_AIMX[playerid] = x2;
- OLD_CAMERA_AIMY[playerid] = y2;
- OLD_CAMERA_AIMZ[playerid] = z2;
- OLD_CAMERA_POSX[playerid] = x;
- OLD_CAMERA_POSY[playerid] = y;
- OLD_CAMERA_POSZ[playerid] = z;
- SetPlayerCameraPos(playerid, x, y, z);
- SetPlayerCameraLookAt(playerid, x2, y2, z2);
- if(keys == KEY_SECONDARY_ATTACK)
- {
- KillTimer(mortaraim[playerid]);
- PLAYER_IS_AIM_MORTAR[playerid] = 0;
- missile[playerid] = CreateObject(MISSILE_OBJECT_ID[0], x2, y2, z2+ROCKET_HEIGHT[0],0.0,-90.0,0.0); //rocket
- missilesmoke[playerid] = CreateObject(269, x2, y2, z2+ROCKET_HEIGHT[0], 0.0, 0.0, 0.0); //Smoke
- MoveObject(missile[playerid], x2, y2, z2, ROCKET_SPEED[0]);
- MoveObject(missilesmoke[playerid], x2, y2, z2, ROCKET_SPEED[0]);
- mortar_esc[playerid] = 0;
- mortaraim[playerid] = SetTimerEx("firemortar", 50, true, "ifff", playerid, x2, y2, z2);
- }
- }
- } else {
- TogglePlayerControllable(playerid, 1);
- SetCameraBehindPlayer(playerid);
- KillTimer(mortaraim[playerid]);
- }
- }
- public firemortar(playerid, Float:x, Float:y, Float:z)
- {
- new Float:xx, Float:yy, Float:cz;
- GetObjectPos(missile[playerid], xx, yy, cz);
- if(mortar_esc[playerid] == 0)
- {
- SetPlayerCameraLookAt(playerid, x, y, z);
- SetPlayerCameraPos(playerid, xx+0.500001, yy+0.500001, cz+1.500001);
- }
- if(cz == z)
- {
- KillTimer(mortaraim[playerid]);
- CreateExplosion(x, y, z, MISSILE_EXPLOSION_TYPE[0], MISSILE_EXPLOSION_RAD[0]);
- DestroyObject(missile[playerid]);
- DestroyObject(missilesmoke[playerid]);
- if(mortar_esc[playerid] == 0){
- SetPlayerCameraLookAt(playerid, x, y, z);
- SetPlayerCameraPos(playerid, x, y+20, z+50);
- }
- mortaraim[playerid] = SetTimerEx("returncamera", 50, true, "i", playerid);
- }
- new keys, leftright, updown;
- GetPlayerKeys(playerid, keys, updown, leftright);
- if(keys == KEY_SPRINT && mortar_esc[playerid] == 0){
- mortar_esc[playerid] = 2;
- }
- if (mortar_esc[playerid] == 2)
- {
- TogglePlayerControllable(playerid, 1);
- SetCameraBehindPlayer(playerid);
- mortar_esc[playerid] = 1;
- }
- }
- public returncamera(playerid)
- {
- new keys, leftright, updown;
- GetPlayerKeys(playerid, keys, updown, leftright);
- if(keys == KEY_SECONDARY_ATTACK) {
- SetCameraBehindPlayer(playerid);
- TogglePlayerControllable(playerid, 1);
- KillTimer(mortaraim[playerid]);
- mortar_is_firing[playerid] = 0;
- mortar_esc[playerid] = 0;
- }
- if(mortar_esc[playerid] == 1){
- KillTimer(mortaraim[playerid]);
- mortar_esc[playerid] = 0;
- mortar_is_firing[playerid] = 0;
- }
- }
- public GiveMissiles()
- {
- for(new i; i < MAX_PLAYERS; i++)
- {
- if(IsPlayerConnected(i))
- {
- if(mortar_missiles_left[i] == 5)
- {}else{
- mortar_missiles_left[i] += 1;
- }
- if(IsPlayerAdmin(i) && ADMINS_HAVE_SUPER_POWERS[0] == 1)
- {
- mortar_missiles_left[i] = MISSILE_MAX_AT_ONE_TIME[0];
- }
- }
- }
- }
- public TextDraw(playerid, text)
- {
- new textdr[256];
- format(textdr, sizeof(textdr), "%s", text);
- textdraw[playerid] = TextDrawCreate(350.0, 500.0, textdr);
- TextDrawFont(textdraw[playerid], 1);
- TextDrawSetOutline(textdraw[playerid], 1);
- TextDrawAlignment(textdraw[playerid], 2);
- TextDrawShowForPlayer(playerid, textdraw[playerid]);
- SetTimerEx("RemoveTextDraw", 2000, false, "i", playerid);
- }
- public RemoveTextDraw(playerid)
- {
- TextDrawDestroy(textdraw[playerid]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement