| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255 |
- /*
- Shipment System by Dom
- */
- #include <YSI\y_hooks>
- #define MAX_SHIPMENT_POINTS 4
- new SHIPMENT_MATS_NEEDED = 60;
- #define SHIPMENT_TYPE_ARMS 1
- #define SHIPMENT_TYPE_DRUGS 2
- new Float:arrShipPositions[2][3] = {
- {-1450.52, 1506.85, 0.0}, // large container ship with stairs
- {-2329.41, 1524.87, 0.75} // container ship nearer to Gant Bridge
- };
- new Float:arrDeliverPositions[MAX_SHIPMENT_POINTS][3] = {
- {-2686.3425,-2196.2932,-0.7420}, // Whetstone - Chilliad Beach
- {-1722.5935,230.6965,-0.6083}, // SF Docks
- {2289.6096,-2433.3176,-0.5133}, // Ocean Docks
- {2960.0776,-538.0289,-0.0771} // east beach
- };
- new Float:arrShipmentTrucks[MAX_SHIPMENT_POINTS][3] = {
- {-2650.3557,-2260.4309,6.7077}, // Whetstone - Chilliad Beach
- {-1725.7112,219.3324,3.6448}, // SF Docks
- {2294.1125,-2393.9399,13.5469}, // Ocean Docks
- {2912.3601,-554.3483,11.1824} // east beach
- };
- CMD:gshipmentstocks(playerid, params[]) {
- if(PlayerInfo[playerid][pAdmin] < 3) return SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use this command.");
- szMiscArray[0] = 0;
- format(szMiscArray, sizeof(szMiscArray), "Stock needed: %d", SHIPMENT_MATS_NEEDED);
- SendClientMessage(playerid, COLOR_WHITE, szMiscArray);
- for(new i = 0; i < MAX_SHIPMENT_POINTS; i++) {
- format(szMiscArray, sizeof(szMiscArray), "%s: %i", GetStockPointName(i), arrGangShipmentData[i][gs_iStock]);
- SendClientMessage(playerid, COLOR_WHITE, szMiscArray);
- }
- return 1;
- }
- LoadShipment(playerid) {
- SetPVarInt(playerid, "LoadShipmentTime", 5);
- TogglePlayerControllable(playerid, 0);
- SetPVarInt(playerid, "IsFrozen", 1);
- SetTimerEx("OnLoadShipment", 1000, false, "i", playerid);
- return 1;
- }
- DeliverShipment(playerid, iShipmentPoint) {
- arrGangShipmentData[iShipmentPoint][gs_iStock]++;
- szMiscArray[0] = 0;
- GivePlayerCash(playerid, 20000);
- SendClientMessage(playerid, COLOR_WHITE, "You have been given $20,000 for completing your assigned delivery.");
- DeletePVar(playerid, "DeliveringShipment");
- DeletePVar(playerid, "ShipmentCallActive");
- ClearCheckpoint(playerid);
- if(arrGangShipmentData[iShipmentPoint][gs_iStock] >= SHIPMENT_MATS_NEEDED) {
- arrGangShipmentData[iShipmentPoint][gs_iVehicle] = CreateVehicle(482, arrShipmentTrucks[iShipmentPoint][0], arrShipmentTrucks[iShipmentPoint][1], arrShipmentTrucks[iShipmentPoint][2], 0, random(128), random(128), 60 * 5);
- arrGangShipmentData[iShipmentPoint][gs_iStock] -= SHIPMENT_MATS_NEEDED;
- foreach(new i : Player) {
- if((0 <= PlayerInfo[i][pMember] < MAX_GROUPS) && arrGroupData[PlayerInfo[i][pMember]][g_iGroupType] == GROUP_TYPE_CRIMINAL) {
- format(szMiscArray, sizeof(szMiscArray), "{FF0000}Alert: {FFFFFF}An unknown shipment has been delivered to %s", GetStockPointName(iShipmentPoint));
- SendClientMessageEx(playerid, COLOR_YELLOW, szMiscArray);
- }
- }
- }
- g_mysql_SaveMOTD();
- return 1;
- }
- /*ReturnShipmentType(iShipmentPoint) {
- switch(iShipmentPoint) {
- case 0, 1: return SHIPMENT_TYPE_ARMS;
- case 2, 3: return SHIPMENT_TYPE_DRUGS;
- }
- return -1;
- }*/
- GetStockPointName(iShipmentPoint) {
- new szReturn[20];
- switch(iShipmentPoint) {
- case 0: szReturn = "Whetstone Beach";
- case 1: szReturn = "San Fierro Docks";
- case 2: szReturn = "Los Santos Airport";
- case 3: szReturn = "East Beach";
- }
- return szReturn;
- }
- forward ShipmentConvo(playerid, iStage);
- public ShipmentConvo(playerid, iStage) {
- switch(iStage) {
- case 1: {
- SendClientMessageEx(playerid, COLOR_YELLOW, "(cellphone) Unknown Caller says: Ayo ese I've got a job for ya.");
- SetTimerEx("ShipmentConvo", 3000, false, "ii", playerid, 2);
- }
- case 2: {
- SendClientMessageEx(playerid, COLOR_YELLOW, "(cellphone) Unknown Caller says: I need an overseas shipment taken care of homie.");
- SendClientMessageEx(playerid, COLOR_YELLOW, "(cellphone) Unknown Caller says: Can I trust you with my shit?");
- SetTimerEx("ShipmentConvo", 5000, false, "ii", playerid, 3);
- }
- case 3: {
- SendClientMessageEx(playerid, COLOR_YELLOW, "(cellphone) Unknown Caller says: I'm sending you the coordinates right now.");
- SendClientMessageEx(playerid, COLOR_YELLOW, "(cellphone) Unknown Caller says: Get a boat and head over there ASAP!");
- SendClientMessageEx(playerid, COLOR_GRAD2, " They hung up.");
- SendClientMessageEx(playerid, COLOR_LIGHTBLUE, "Get a boat and head to the location marked on your minimap.");
- new rand = random(2);
- SetPlayerCheckpoint(playerid, arrShipPositions[rand][0], arrShipPositions[rand][1], arrShipPositions[rand][2], 4);
- gPlayerCheckpointStatus[playerid] = CHECKPOINT_LOADSHIPMENT;
- }
- }
- return 1;
- }
- forward OnLoadShipment(playerid);
- public OnLoadShipment(playerid) {
- new iLoadTime = GetPVarInt(playerid, "LoadShipmentTime");
- szMiscArray[0] = 0;
- SetPVarInt(playerid, "LoadShipmentTime", iLoadTime - 1);
- format(szMiscArray, sizeof(szMiscArray), "~n~~n~~n~~n~~n~~n~~n~~n~~n~~w~%d seconds left", iLoadTime);
- GameTextForPlayer(playerid, szMiscArray, 1100, 3);
- if(iLoadTime > 0) return SetTimerEx("OnLoadShipment", 1000, false, "i", playerid);
- new rand = random(4);
- SetPlayerCheckpoint(playerid, arrDeliverPositions[rand][0], arrDeliverPositions[rand][1], arrDeliverPositions[rand][2], 4);
- SetPVarInt(playerid, "DeliveringShipment", 1);
- gPlayerCheckpointStatus[playerid] = CHECKPOINT_DELIVERSHIPMENT;
- SendClientMessageEx(playerid, COLOR_YELLOW, "Follow your way to the marker to deliver your shipment.");
- DeletePVar(playerid, "LoadShipmentTime");
- DeletePVar(playerid, "IsFrozen");
- TogglePlayerControllable(playerid, 1);
- return 1;
- }
- hook OnPlayerEnterCheckpoint(playerid) {
- switch(gPlayerCheckpointStatus[playerid]) {
- case CHECKPOINT_LOADSHIPMENT: {
- if(IsABoat(GetPlayerVehicleID(playerid))) {
- if(GetPVarType(playerid, "ShipmentCallActive") == 1) {
- for(new i = 0; i < MAX_SHIPMENT_POINTS; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 5.0, arrShipPositions[i][0], arrShipPositions[i][1], arrShipPositions[i][2]))
- return LoadShipment(playerid);
- }
- }
- }
- else SendClientMessageEx(playerid, COLOR_WHITE, "You must be in a boat");
- }
- case CHECKPOINT_DELIVERSHIPMENT: {
- if(IsABoat(GetPlayerVehicleID(playerid))) {
- if(GetPVarType(playerid, "DeliveringShipment") == 1) {
- for(new i = 0; i < MAX_SHIPMENT_POINTS; i++) {
- if(IsPlayerInRangeOfPoint(playerid, 5.0, arrDeliverPositions[i][0], arrDeliverPositions[i][1], arrDeliverPositions[i][2]))
- return DeliverShipment(playerid, i);
- }
- }
- }
- else SendClientMessageEx(playerid, COLOR_WHITE, "You must be in a boat");
- }
- }
- return 1;
- }
- CMD:delivershipment(playerid, params[]) {
- new iVehID = GetPlayerVehicleID(playerid);
- new iGroupID = PlayerInfo[playerid][pMember];
- szMiscArray[0] = 0;
- if(!IsACriminal(playerid)) return SendClientMessageEx(playerid, COLOR_WHITE, "You are not in a criminal organization.");
- if(!IsAGangShipmentTruck(iVehID) || !iVehID) return SendClientMessageEx(playerid, COLOR_WHITE, "You are not in a shipment truck!");
- if(IsPlayerInRangeOfPoint(playerid, 5.0, arrGroupData[iGroupID][g_fCratePos][0], arrGroupData[iGroupID][g_fCratePos][1], arrGroupData[iGroupID][g_fCratePos][2])) {
- for(new v = 0; v < MAX_SHIPMENT_POINTS; v++) {
- if(iVehID == arrGangShipmentData[v][gs_iVehicle]) {
- RemovePlayerFromVehicle(playerid);
- GenerateShipmentStock(iGroupID, SHIPMENT_TYPE_ARMS);
- DestroyVehicle(iVehID);
- arrGangShipmentData[v][gs_iVehicle] = INVALID_VEHICLE_ID;
- SendClientMessageEx(playerid, COLOR_WHITE, "You have delivered your shipment to your group.");
- format(szMiscArray, sizeof(szMiscArray), "%s has delivered a shipment.", GetPlayerNameEx(playerid));
- GroupLog(iGroupID, szMiscArray);
- break;
- }
- }
- }
- return 1;
- }
- CMD:editshipment(playerid, params[])
- {
- if(PlayerInfo[playerid][pAdmin] < 99999) return SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use this command.");
- new val;
- if(sscanf(params, "d", val) || val <= 0) return SendClientMessageEx(playerid, COLOR_GRAD2, "USAGE: /editshipment [value]");
- format(szMiscArray, sizeof(szMiscArray), "You have edited the mats needed for gang shipments to: %d (Previously: %d)", val, SHIPMENT_MATS_NEEDED);
- SendClientMessageEx(playerid, COLOR_GRAD2, szMiscArray);
- format(szMiscArray, sizeof(szMiscArray), "%s has edited the mats needed for gang shipments to: %d (Previously: %d)", val, SHIPMENT_MATS_NEEDED);
- Log("logs/admin.log", szMiscArray);
- SHIPMENT_MATS_NEEDED = val;
- g_mysql_SaveMOTD();
- return 1;
- }
- forward LoadGangShipmentData(i);
- public LoadGangShipmentData(i)
- {
- szMiscArray[0] = 0;
- for(new j = 0; j != MAX_SHIPMENT_POINTS; j++)
- {
- format(szMiscArray, sizeof(szMiscArray), "gs_iStock%d", j);
- arrGangShipmentData[j][gs_iStock] = cache_get_field_content_int(i, szMiscArray, MainPipeline);
- }
- SHIPMENT_MATS_NEEDED = cache_get_field_content_int(i, "SHIPMENT_MATS_NEEDED", MainPipeline);
- }
- forward SaveGangShipmentData(size, query[]);
- public SaveGangShipmentData(size, query[])
- {
- szMiscArray[0] = 0;
- for(new j = 0; j != MAX_SHIPMENT_POINTS; j++)
- format(szMiscArray, sizeof(szMiscArray), "%s`gs_iStock%d` = '%d', ", szMiscArray, j, arrGangShipmentData[j][gs_iStock]);
- format(query, size, "%s, %s `SHIPMENT_MATS_NEEDED` = '%d',", query, szMiscArray, SHIPMENT_MATS_NEEDED);
- }
|