Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <streamer>
- #include <zcmd>
- #include <foreach>
- enum cPack {
- bool:CarePackageUsed,
- bool:CarePackageLanded,
- bool:PlaneMoveStage,
- Float:CarePackageRotation,
- CarePackagePlane,
- CarePackageFlare,
- CarePackageParachute,
- CarePackageBox,
- CarePackageStuff,
- Float:CarePackageLand[3],
- Text3D:CarePackageText
- }
- enum cPstuff {
- type,
- id,
- name[26],
- value
- }
- new CarePackageContains[][cPstuff] = {
- {0,9,"Chainsaw",1},
- {0,22,"Colt-45",50},
- {0,23,"Colt-45 Silenced",50},
- {0,24,"Desert Eagle",50},
- {0,25,"Shotgun",50},
- {0,26,"Sawnoff Shotgun",50},
- {0,27,"Combat Shotgun",50},
- {0,28,"Micro SMG/Uzi",50},
- {0,29,"MP5",50},
- {0,30,"AK-47",50},
- {0,31,"M4",50},
- {0,32,"TEC-9",50},
- {0,33,"Country Rifle",50},
- {0,34,"Sniper Rifle",50},
- {0,35,"RPG",50},
- {0,36,"Heat Seeker",50},
- //{0,38,"Minigun",50},
- {0,37,"Flamethrower",50}
- };
- new pCarePackage[MAX_PLAYERS][cPack];
- public OnFilterScriptInit() {
- print("\n--------------------------------------");
- print("Care Package System by EvilShadeZ");
- print("--------------------------------------\n");
- return 1;
- }
- CMD:carepackage(playerid, params[])
- {
- if(pCarePackage[playerid][CarePackageUsed] == true) return SendClientMessage(playerid,0xFF0000FF,"Care package is already incomming");
- new Float:X,Float:Y,Float:Z;
- GetPlayerPos(playerid,Float:X,Float:Y,Float:Z);
- CreateCarePackageForPlayer(playerid,Float:X,Float:Y,Float:Z);
- pCarePackage[playerid][CarePackageUsed] = true;
- return 1;
- }
- stock CreateCarePackageForPlayer(playerid,Float:X,Float:Y,Float:Z) {
- new angle = random(360);
- pCarePackage[playerid][PlaneMoveStage] = false;
- pCarePackage[playerid][CarePackageFlare] = CreateDynamicObject(18728,X,Y,Z-2,0,0,0,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid),-1,250,250);
- pCarePackage[playerid][CarePackageLand][0] = X;
- pCarePackage[playerid][CarePackageLand][1] = Y;
- pCarePackage[playerid][CarePackageLand][2] = Z-1.5;
- pCarePackage[playerid][CarePackageRotation] = angle;
- GetXYFromPosWithAngle(X,Y,angle,300);
- pCarePackage[playerid][CarePackagePlane] = CreateDynamicObject(14553,X,Y,Z+75,11.9,0,-angle,GetPlayerVirtualWorld(playerid),GetPlayerInterior(playerid),-1,500,500);
- MoveDynamicObject(pCarePackage[playerid][CarePackagePlane], pCarePackage[playerid][CarePackageLand][0], pCarePackage[playerid][CarePackageLand][1], pCarePackage[playerid][CarePackageLand][2]+75, 30, 11.9, 0, -angle);
- Streamer_Update(playerid);
- pCarePackage[playerid][CarePackageLanded] = false;
- }
- public OnDynamicObjectMoved(objectid) {
- foreach(new i : Player) {
- if(objectid == pCarePackage[i][CarePackagePlane]) {
- if(pCarePackage[i][PlaneMoveStage] == false) {
- pCarePackage[i][PlaneMoveStage] = true;
- new Float:X,Float:Y,Float:Z,Float:PlaneFlyPos[2];
- GetDynamicObjectPos(objectid, X, Y, Z);
- PlaneFlyPos[0] = pCarePackage[i][CarePackageLand][0];
- PlaneFlyPos[1] = pCarePackage[i][CarePackageLand][1];
- GetXYFromPosWithAngle(PlaneFlyPos[0],PlaneFlyPos[1],pCarePackage[i][CarePackageRotation]+180,300);
- MoveDynamicObject(pCarePackage[i][CarePackagePlane], PlaneFlyPos[0], PlaneFlyPos[1], pCarePackage[i][CarePackageLand][2]+75, 30, 11.9, 0, -pCarePackage[i][CarePackageRotation]);
- //CarePackageParachute
- pCarePackage[i][CarePackageParachute] = CreateDynamicObject(2903,X,Y,Z,0,0,random(360),GetPlayerVirtualWorld(i),GetPlayerInterior(i),-1,200,200);
- MoveDynamicObject(pCarePackage[i][CarePackageParachute], pCarePackage[i][CarePackageLand][0], pCarePackage[i][CarePackageLand][1], pCarePackage[i][CarePackageLand][2], 15, 0, 0, random(360));
- Streamer_Update(i);
- break;
- } else if(pCarePackage[i][PlaneMoveStage] == true) {
- DestroyDynamicObject(objectid);
- pCarePackage[i][CarePackagePlane] = -1;
- break;
- }
- } else if(objectid == pCarePackage[i][CarePackageParachute]) {
- pCarePackage[i][CarePackageBox] = CreateDynamicObject(3013,pCarePackage[i][CarePackageLand][0], pCarePackage[i][CarePackageLand][1], pCarePackage[i][CarePackageLand][2]+0.7,0,0,random(360),GetPlayerVirtualWorld(i),GetPlayerInterior(i),-1,200,200);
- //CarePackageContains[][cPstuff]
- pCarePackage[i][CarePackageStuff] = random(sizeof(CarePackageContains));
- new string[128];
- pCarePackage[i][CarePackageLanded] = true;
- format(string,128,"{FFAF00}[{F3FF02}CARE PACKAGE{FFAF00}]\n{FFFFFF}%s",CarePackageContains[pCarePackage[i][CarePackageStuff]][name]);
- pCarePackage[i][CarePackageText] = Create3DTextLabel(string, 0x008080FF, pCarePackage[i][CarePackageLand][0], pCarePackage[i][CarePackageLand][1], pCarePackage[i][CarePackageLand][2]+1, 40.0, GetPlayerVirtualWorld(i), 0);
- DestroyDynamicObject(objectid);
- DestroyDynamicObject(pCarePackage[i][CarePackageFlare]);
- pCarePackage[i][CarePackageParachute] = -1;
- pCarePackage[i][CarePackageFlare] = -1;
- Streamer_Update(i);
- break;
- }
- }
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if (newkeys && KEY_SECONDARY_ATTACK)
- {
- foreach(new i : Player) {
- if(pCarePackage[i][CarePackageUsed] == true && pCarePackage[i][CarePackageLanded] == true) {
- if(IsPlayerInRangeOfPoint(playerid,2,pCarePackage[i][CarePackageLand][0], pCarePackage[i][CarePackageLand][1], pCarePackage[i][CarePackageLand][2])) {
- DestroyDynamicObject(pCarePackage[i][CarePackageBox]);
- Delete3DTextLabel(pCarePackage[i][CarePackageText]);
- pCarePackage[i][CarePackageBox] = -1;
- new string[128];
- format(string,sizeof(string),"{FFAF00}[{F3FF02}CARE PACKAGE{FFAF00}]{FFFFFF} You've picked up %s from care package.",CarePackageContains[pCarePackage[i][CarePackageStuff]][name]);
- SendClientMessage(playerid,0xFFFFFFFF,string);
- OnPlayerPickUpCarePackage(playerid,pCarePackage[i][CarePackageStuff]);
- pCarePackage[i][CarePackageUsed] = false;
- pCarePackage[i][CarePackageLanded] = false;
- break;
- }
- }
- }
- }
- return 1;
- }
- forward OnPlayerPickUpCarePackage(playerid,pickupid);
- public OnPlayerPickUpCarePackage(playerid,pickupid) {
- if(CarePackageContains[pickupid][type] == 0) GivePlayerWeapon(playerid,CarePackageContains[pickupid][id],CarePackageContains[pickupid][value]);
- }
- public OnPlayerConnect(playerid) {
- pCarePackage[playerid][CarePackageUsed] = false;
- pCarePackage[playerid][CarePackageLanded] = false;
- pCarePackage[playerid][CarePackagePlane] = -1;
- pCarePackage[playerid][CarePackageFlare] = -1;
- pCarePackage[playerid][CarePackageParachute] = -1;
- return 1;
- }
- GetXYFromPosWithAngle(&Float:x, &Float:y,Float:Angle,Float:distance) {
- x += (distance * floatsin(Angle, degrees));
- y += (distance * floatcos(Angle, degrees));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement