Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- *
- *
- * SAMP Shark System by targetid
- * Copyright by targetid
- * Breadfish: http://forum.sa-mp.de/index.php?page=User&userID=32659
- *
- *
- *
- *
- */
- #include <a_samp>
- #define SHARK_ALERT_ZONE //delete this line and the red shark alert zone will be destroy
- #define SHARK_ALERT_ICON //delete this line and the alert icon that is attached on the shark will be destroy
- #define SHARK_ALERT_ICON_TYPE 0 //the icon type ... currently a square ... the list with icon types: http://wiki.sa-mp.com/wiki/MapIcons
- #define SHARK_ALERT_ICON_COL 3 //the icon color ... currently red ... you can take the color ids from there: http://wiki.sa-mp.com/wiki/Vehicle_Color_IDs
- #define SHARK_ALTER_ICON_SLOT 99 //the icon slot for the shark icon ... you can only use 100 map icons at the same time
- #define MIN_SHARK_SWIMSPEED 2.5 //the shark minimal swim speed limit
- #define MAX_SHARK_SWIMSPEED 9.0 //the shark maximal swim speed limit
- //delete the following 6 lines when you include the streamer from incognito (Download: http://forum.sa-mp.com/showthread.php?t=102865)
- #define CreateDynamicObject CreateObject
- #define DestroyDynamicObject DestroyObject
- #define GetDynamicObjectPos GetObjectPos
- #define GetDynamicObjectRot GetObjectRot
- #define MoveDynamicObject MoveObject
- #define OnDynamicObjectMove OnObjectMoved
- enum SharkInfo
- {
- Float:sh_x,
- Float:sh_y,
- Float:sh_z,
- Float:sh_xr,
- Float:sh_yr,
- Float:sh_zr,
- Float:sh_minx,
- Float:sh_miny,
- Float:sh_maxx,
- Float:sh_maxy,
- sh_zone,
- sh_obj,
- Float:sh_rpos[2],
- sh_nextattack,
- sh_targetid,
- Float:sh_hp
- }
- forward SharkAttack();
- new Shark[][SharkInfo] =
- {
- //to add a new shark you must input the x,y,z spawn coordinates and the x,y,z of rotation coordinates (default 0.0) at least the shark zone where the shark swim into
- //Float:sh_x,Float:sh_y,Float:sh_z,Float:sh_xr,Float:sh_yr,Float:sh_zr,Float:sh_minx,Float:sh_miny,Float:sh_maxx,Float:sh_maxy,sh_obj,Float:sh_rpos[2],sh_nextattack,sh_targetid,Float:sh_hp
- {389.7715,-2185.0862,-2.0,0.0,0.0,0.0,81.74512, -2919.469, 922.5522, -1950.205},//Los Santos Pier
- {-2274.7344,1891.1919,-2.0,0.0,0.0,0.0,-2966.18, 1588.191, -1891.816, 2090.34},//Bayside
- {-1291.1990,1096.1586,-2.0,0.0,0.0,0.0,-1389.667, 548.8602, -1179.465, 1471.412},//San Fierro Wang Cars
- {1983.8652,-162.5381,-2.0,0.0,0.0,0.0,1903.494, -233.5575, 2078.662, -58.38938},//Mount Gomery
- {-63.6942,-1862.7518,-2.0,0.0,0.0,0.0,-210.2018, -2020.272, 70.06725, -1728.326},//Los Santos Pier 2
- {1983.8652,-162.5381,-2.0,0.0,0.0,0.0,-969.2637, 326.9805, -572.2159, 607.2495}//San Fierro Airport
- };
- new SharkTimer;
- public OnFilterScriptInit()
- {
- print("\n--------------------------------------\n\n");
- print("Shark System by targetid loaded");
- print("\n\n--------------------------------------\n");
- for(new i=0;i<sizeof(Shark);i++)
- {
- #if defined SHARK_ALERT_ZONE
- Shark[i][sh_zone] = GangZoneCreate(Shark[i][sh_minx],Shark[i][sh_miny],Shark[i][sh_maxx],Shark[i][sh_maxy]);
- #endif
- Shark[i][sh_obj] = CreateDynamicObject(1608,Shark[i][sh_x],Shark[i][sh_y],Shark[i][sh_z],Shark[i][sh_xr],Shark[i][sh_yr],Shark[i][sh_zr]);
- RandPosInZone(Shark[i][sh_minx],Shark[i][sh_miny],Shark[i][sh_maxx],Shark[i][sh_maxy],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1]);
- MoveDynamicObject(Shark[i][sh_obj],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1],Shark[i][sh_z],MIN_SHARK_SWIMSPEED,Shark[i][sh_xr],Shark[i][sh_yr],Shark[i][sh_zr]);
- Shark[i][sh_nextattack] = gettime() + (10);
- Shark[i][sh_targetid] = -1;
- Shark[i][sh_hp] = 1000.0;
- }
- SharkTimer = SetTimer("SharkAttack",1093,1);
- return 1;
- }
- public OnFilterScriptExit()
- {
- KillTimer(SharkTimer);
- for(new i=0;i<sizeof(Shark);i++)
- {
- #if defined SHARK_ALERT_ZONE
- GangZoneDestroy(Shark[i][sh_zone]);
- #endif
- DestroyDynamicObject(Shark[i][sh_obj]);
- MoveDynamicObject(Shark[i][sh_obj],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1],Shark[i][sh_z],MIN_SHARK_SWIMSPEED,Shark[i][sh_xr],Shark[i][sh_yr],Shark[i][sh_zr]);
- for(new i2;SharkInfo:i2<SharkInfo;i2++)
- {
- Shark[i][SharkInfo:i2] = 0;
- }
- }
- print("\n--------------------------------------\n\n");
- print("Shark System by targetid unloaded");
- print("\n\n--------------------------------------\n");
- return 1;
- }
- public OnPlayerDeath(playerid,killerid,reason)
- {
- for(new i=0;i<sizeof(Shark);i++)
- {
- if(Shark[i][sh_targetid] != playerid) continue;
- #if defined SHARK_ALERT_ZONE
- GangZoneStopFlashForPlayer(Shark[i][sh_targetid],Shark[i][sh_zone]);
- GangZoneHideForPlayer(Shark[i][sh_targetid],Shark[i][sh_zone]);
- #endif
- #if defined SHARK_ALERT_ICON
- RemovePlayerMapIcon(playerid,SHARK_ALTER_ICON_SLOT);
- #endif
- RandPosInZone(Shark[i][sh_minx],Shark[i][sh_miny],Shark[i][sh_maxx],Shark[i][sh_maxy],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1]);
- MoveDynamicObject(Shark[i][sh_obj],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1],Shark[i][sh_z],MIN_SHARK_SWIMSPEED,Shark[i][sh_xr],Shark[i][sh_yr],Shark[i][sh_zr]);
- Shark[i][sh_targetid] = -1;
- }
- return 1;
- }
- public OnDynamicObjectMove(objectid)
- {
- new Float:Pos[3];
- for(new i=0;i<sizeof(Shark);i++)
- {
- if(Shark[i][sh_targetid] == -1)
- {
- if(objectid == Shark[i][sh_obj])
- {
- GetDynamicObjectPos(Shark[i][sh_obj],Pos[0],Pos[1],Pos[2]);
- if(Pos[0] == Shark[i][sh_rpos][0] && Pos[1] == Shark[i][sh_rpos][1])
- {
- RandPosInZone(Shark[i][sh_minx],Shark[i][sh_miny],Shark[i][sh_maxx],Shark[i][sh_maxy],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1]);
- MoveDynamicObject(Shark[i][sh_obj],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1],Shark[i][sh_z],MIN_SHARK_SWIMSPEED,Shark[i][sh_xr],Shark[i][sh_yr],Shark[i][sh_zr]);
- }
- }
- }
- }
- return 1;
- }
- public SharkAttack()
- {
- new Float:Pos[6],string[64];
- for(new i=0;i<sizeof(Shark);i++)
- {
- if(Shark[i][sh_targetid] == -1)
- {
- for(new playerid=0;playerid<MAX_PLAYERS;playerid++)
- {
- if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid))
- {
- if(IsPlayerInZone(playerid,Shark[i][sh_minx],Shark[i][sh_miny],Shark[i][sh_maxx],Shark[i][sh_maxy]) && !IsVehicleABoat(GetPlayerVehicleID(playerid)))
- {
- GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
- if(Pos[2] < 1.0)
- {
- Shark[i][sh_targetid] = playerid;
- #if defined SHARK_ALERT_ZONE
- GangZoneShowForPlayer(playerid,Shark[i][sh_zone],0xDD140074);
- GangZoneFlashForPlayer(playerid,Shark[i][sh_zone],0xDD150089);
- #endif
- #if defined SHARK_ALERT_ICON
- SetPlayerMapIcon(playerid,SHARK_ALTER_ICON_SLOT,Shark[i][sh_x],Shark[i][sh_y],Shark[i][sh_z],SHARK_ALERT_ICON_TYPE,SHARK_ALERT_ICON_COL,MAPICON_LOCAL);
- #endif
- if(GetPlayerSpeed(Shark[i][sh_targetid]) != 0) GetPlayerFacingAngle(playerid,Pos[3]),MoveDynamicObject(Shark[i][sh_obj],Pos[0],Pos[1],Pos[2],MAX_SHARK_SWIMSPEED,0.0,0.0,Pos[3]);
- else MoveDynamicObject(Shark[i][sh_obj],Pos[0],Pos[1],Pos[2],MAX_SHARK_SWIMSPEED,0.0,0.0,0.0);
- }
- }
- }
- }
- if(gettime() > Shark[i][sh_nextattack] && Shark[i][sh_nextattack] != 0) Shark[i][sh_nextattack] = gettime() + (10);
- }
- else
- {
- GetDynamicObjectPos(Shark[i][sh_obj],Pos[0],Pos[1],Pos[2]);
- #if defined SHARK_ALERT_ICON
- SetPlayerMapIcon(Shark[i][sh_targetid],SHARK_ALTER_ICON_SLOT,Pos[0],Pos[1],Pos[2],SHARK_ALERT_ICON_TYPE,SHARK_ALERT_ICON_COL,MAPICON_LOCAL);
- #endif
- GetDynamicObjectRot(Shark[i][sh_obj],Pos[3],Pos[4],Pos[5]);
- if(Pos[2] > 0.5) MoveDynamicObject(Shark[i][sh_obj],Pos[0],Pos[1],Shark[i][sh_z],MAX_SHARK_SWIMSPEED,Pos[3],Pos[4],Pos[5]);
- if(!IsPlayerConnected(Shark[i][sh_targetid])) MoveDynamicObject(Shark[i][sh_obj],Shark[i][sh_x],Shark[i][sh_y],Shark[i][sh_z],MAX_SHARK_SWIMSPEED,Shark[i][sh_xr],Shark[i][sh_yr],Shark[i][sh_zr]),Shark[i][sh_targetid] = -1;
- if(!IsPlayerInZone(Shark[i][sh_targetid],Shark[i][sh_minx],Shark[i][sh_miny],Shark[i][sh_maxx],Shark[i][sh_maxy]) || IsVehicleABoat(GetPlayerVehicleID(Shark[i][sh_targetid])))
- {
- #if defined SHARK_ALERT_ZONE
- GangZoneStopFlashForPlayer(Shark[i][sh_targetid],Shark[i][sh_zone]);
- GangZoneHideForPlayer(Shark[i][sh_targetid],Shark[i][sh_zone]);
- #endif
- #if defined SHARK_ALERT_ICON
- RemovePlayerMapIcon(Shark[i][sh_targetid],SHARK_ALTER_ICON_SLOT);
- #endif
- RandPosInZone(Shark[i][sh_minx],Shark[i][sh_miny],Shark[i][sh_maxx],Shark[i][sh_maxy],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1]);
- MoveDynamicObject(Shark[i][sh_obj],Shark[i][sh_rpos][0],Shark[i][sh_rpos][1],Shark[i][sh_z],MIN_SHARK_SWIMSPEED,Shark[i][sh_xr],Shark[i][sh_yr],Shark[i][sh_zr]);
- Shark[i][sh_targetid] = -1;
- }
- else
- {
- if(gettime() > Shark[i][sh_nextattack])
- {
- GetDynamicObjectPos(Shark[i][sh_obj],Pos[0],Pos[1],Pos[2]);
- if(IsPlayerInRangeOfPoint(Shark[i][sh_targetid],5.0,Pos[0],Pos[1],Pos[2]) && Pos[2] <= 0.5)
- {
- format(string,sizeof(string),"** %s wird von etwas unbekanntem gebissen **",PlayerName(Shark[i][sh_targetid]));
- SendClientMessage(Shark[i][sh_targetid],0xAA00FF38,string);
- new Float:heal;
- GetPlayerHealth(Shark[i][sh_targetid],heal),SetPlayerHealth(Shark[i][sh_targetid],heal-25);
- Shark[i][sh_nextattack] = gettime() + (10);
- }
- GetPlayerPos(Shark[i][sh_targetid],Pos[0],Pos[1],Pos[2]);
- if(GetPlayerSpeed(Shark[i][sh_targetid]) != 0) GetPlayerFacingAngle(Shark[i][sh_targetid],Pos[3]),MoveDynamicObject(Shark[i][sh_obj],Pos[0],Pos[1],Pos[2]-2,MAX_SHARK_SWIMSPEED,0.0,0.0,Pos[3]);
- else MoveDynamicObject(Shark[i][sh_obj],Pos[0],Pos[1],Pos[2]-2,5.0,0.0,0.0,0.0);
- }
- else
- {
- GetPlayerPos(Shark[i][sh_targetid],Pos[0],Pos[1],Pos[2]);
- if(GetPlayerSpeed(Shark[i][sh_targetid]) != 0) GetPlayerFacingAngle(Shark[i][sh_targetid],Pos[3]),MoveDynamicObject(Shark[i][sh_obj],Pos[0],Pos[1],Shark[i][sh_z]-random(5)+2,MIN_SHARK_SWIMSPEED,0.0,0.0,Pos[3]);
- else MoveDynamicObject(Shark[i][sh_obj],Pos[0],Pos[1],Shark[i][sh_z]-random(5)+2,MIN_SHARK_SWIMSPEED,0.0,0.0,0.0);
- }
- }
- }
- }
- return 1;
- }
- stock RandPosInZone(Float:zminX,Float:zminY,Float:zmaxX,Float:zmaxY,&Float:zdestX,&Float:zdestY)
- {
- new iMin,iMax,Float:mul = floatpower(10.0,4);
- iMin = floatround(zminX * mul);
- iMax = floatround(zmaxX * mul);
- zdestX = float(random(iMax - iMin) + iMin) / mul;
- iMin = floatround(zminY * mul);
- iMax = floatround(zmaxY * mul);
- zdestY = float(random(iMax - iMin) + iMin) / mul;
- return 1;
- }
- stock IsPlayerInZone(playerid,Float:zminX,Float:zminY,Float:zmaxX,Float:zmaxY,Float:hmax = 2000.0)
- {
- new Float:zoneX,Float:zoneY,Float:zoneZ;
- GetPlayerPos(playerid,zoneX,zoneY,zoneZ);
- if((zoneX >= zminX && zoneX <= zmaxX && zoneY >= zminY && zoneY <= zmaxY && zoneZ < hmax))
- {
- return 1;
- }
- return 0;
- }
- stock IsVehicleABoat(vehicleid)
- {
- new model = GetVehicleModel(vehicleid);
- switch(model)
- {
- case 472,473,493,595,484,430,453,452,446,454:return 1;
- }
- return 0;
- }
- stock GetPlayerSpeed(playerid)
- {
- new Float:SpeedVel[3],Float:Speeddistance,Speed;
- if(!IsPlayerConnected(playerid))return 0;
- if(!IsPlayerInAnyVehicle(playerid)) GetPlayerVelocity(playerid,SpeedVel[0],SpeedVel[1],SpeedVel[2]);
- else GetVehicleVelocity(GetPlayerVehicleID(playerid),SpeedVel[0],SpeedVel[1],SpeedVel[2]);
- Speeddistance = floatsqroot(((SpeedVel[0]*SpeedVel[0])+(SpeedVel[1]*SpeedVel[1]))+(SpeedVel[2]*SpeedVel[2]))*144;
- Speed = floatround(Speeddistance,floatround_round);
- return Speed;
- }
- stock PlayerName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid,name,MAX_PLAYER_NAME);
- return name;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement