30.08.2013, 15:29
Say I had a normal "NGG edit". How would I script a /apark, and /aimpound? Remember, NGG is scripted in ZCMD.
CMD:park(playerid, params[]) { if(PlayerInfo[playerid][pVehicleKeysFrom] != INVALID_PLAYER_ID) { new ownerid = PlayerInfo[playerid][pVehicleKeysFrom]; if(IsPlayerConnected(ownerid)) { new d = PlayerInfo[playerid][pVehicleKeys]; if(IsPlayerInVehicle(playerid, PlayerVehicleInfo[ownerid][d][pvId])) { if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessageEx(playerid, COLOR_GREY, "You must be in the driver seat."); new Float:x, Float:y, Float:z, Float:angle, Float:health; GetVehicleHealth(PlayerVehicleInfo[ownerid][d][pvId], health); if(health < 800) return SendClientMessageEx(playerid, COLOR_GREY, " Your vehicle is too damaged to park it."); if(PlayerInfo[playerid][pLockCar] == GetPlayerVehicleID(playerid)) PlayerInfo[playerid][pLockCar] = INVALID_VEHICLE_ID; if(IsARC(GetPlayerVehicleID(playerid))) // RC Vehicles { new Float:vehPos[3]; GetVehiclePos(GetPlayerVehicleID(playerid),vehPos[0], vehPos[1], vehPos[2]); SetPlayerPos(playerid,vehPos[0], vehPos[1]+0.5, vehPos[2]+0.5); } GetVehiclePos(PlayerVehicleInfo[ownerid][d][pvId], x, y, z); GetVehicleZAngle(PlayerVehicleInfo[ownerid][d][pvId], angle); SurfingCheck(GetPlayerVehicleID(playerid)); UpdatePlayerVehicleParkPosition(ownerid, d, x, y, z, angle, health); PutPlayerInVehicle(playerid, GetPlayerVehicleID(playerid), 0); SetPlayerArmedWeapon(playerid, 0); new string[29 + (MAX_PLAYER_NAME * 2)]; format(string, sizeof(string), "* %s has parked %s's vehicle.", GetPlayerNameEx(playerid), GetPlayerNameEx(ownerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); return 1; } } } for(new d = 0 ; d < MAX_PLAYERVEHICLES; d++) { if(IsPlayerInVehicle(playerid, PlayerVehicleInfo[playerid][d][pvId])) { new Float:x, Float:y, Float:z, Float:angle, Float:health; GetVehicleHealth(PlayerVehicleInfo[playerid][d][pvId], health); if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessageEx(playerid, COLOR_GREY, "You must be in the driver seat."); if(health < 800) return SendClientMessageEx(playerid, COLOR_GREY, " Your vehicle is too damaged to park it."); if(PlayerInfo[playerid][pLockCar] == GetPlayerVehicleID(playerid)) PlayerInfo[playerid][pLockCar] = INVALID_VEHICLE_ID; GetVehiclePos(PlayerVehicleInfo[playerid][d][pvId], x, y, z); GetVehicleZAngle(PlayerVehicleInfo[playerid][d][pvId], angle); SurfingCheck(GetPlayerVehicleID(playerid)); UpdatePlayerVehicleParkPosition(playerid, d, x, y, z, angle, health); PutPlayerInVehicle(playerid, PlayerVehicleInfo[playerid][d][pvId], 0); SetPlayerArmedWeapon(playerid, 0); new string[30 + (MAX_PLAYER_NAME * 2)]; format(string, sizeof(string), "* %s has parked their vehicle.", GetPlayerNameEx(playerid)); ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE); return 1; } } SendClientMessageEx(playerid, COLOR_GREY, "You need to be inside a vehicle that you own."); return 1; }
CMD:impound(playerid, params[]) { switch(PlayerInfo[playerid][pMember]) { case 1, 2, 3, 7, 11: { if(!IsAtImpoundingPoint(playerid)) { SendClientMessageEx(playerid, COLOR_GREY, "You are not near the impound point, you can't impound!"); return 1; } if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) { new iVehType, iVehIndex, iTargetOwner, iVehTowed = GetVehicleTrailer(GetPlayerVehicleID(playerid)); if(!GetVehicleModel(iVehTowed)) { return SendClientMessageEx(playerid, COLOR_GREY, "The vehicle in tow has been desynced and therefore cannot be impounded."); } foreach(Player, i) { iVehIndex = GetPlayerVehicle(i, iVehTowed); if(iVehIndex != -1) { iVehType = 1; iTargetOwner = i; break; } } if(!iVehType) { for(new i; i < MAX_FAMILY; ++i) { iVehIndex = GetGangVehicle(i, iVehTowed); if(iVehIndex != -1) { iVehType = 2; iTargetOwner = i; break; } } } switch(iVehType) { case 0, 2: { SendClientMessageEx(playerid, COLOR_GRAD1, "The impound administration could not find any registration on the vehicle and has returned it."); DetachTrailerFromVehicle(GetPlayerVehicleID(playerid)); SetVehiclePos(iVehTowed, 0, 0, 0); // Attempted desync fix SetVehicleToRespawn(iVehTowed); } case 1: { PlayerVehicleInfo[iTargetOwner][iVehIndex][pvImpounded] = 1; PlayerVehicleInfo[iTargetOwner][iVehIndex][pvId] = INVALID_PLAYER_VEHICLE_ID; DetachTrailerFromVehicle(GetPlayerVehicleID(playerid)); SetVehiclePos(iVehTowed, 0, 0, 0); // Attempted desync fix DestroyVehicle(iVehTowed); --PlayerCars; new szMessage[96]; format(szMessage, sizeof(szMessage),"* You have impounded %s's %s.",GetPlayerNameEx(iTargetOwner), VehicleName[PlayerVehicleInfo[iTargetOwner][iVehIndex][pvModelId] - 400]); SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMessage); format(szMessage, sizeof(szMessage), "Your %s has been impounded. You may release it at the DMV in Dillimore.", VehicleName[PlayerVehicleInfo[iTargetOwner][iVehIndex][pvModelId] - 400]); SendClientMessageEx(iTargetOwner, COLOR_LIGHTBLUE, szMessage); format(szMessage, sizeof(szMessage), "HQ: %s has impounded %s's %s ($%i unpaid tickets).", GetPlayerNameEx(playerid), GetPlayerNameEx(iTargetOwner), VehicleName[PlayerVehicleInfo[iTargetOwner][iVehIndex][pvModelId] - 400], PlayerVehicleInfo[iTargetOwner][iVehIndex][pvTicket]); SendRadioMessage(PlayerInfo[playerid][pMember], RADIO, szMessage); } /*case 2: { new szMessage[29 + MAX_PLAYER_NAME]; format(szMessage, sizeof(szMessage),"* You have impounded %s's %s.",FamilyInfo[iTargetOwner][FamilyName], GetVehicleName(iVehTowed)); SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMessage); format(szMessage, sizeof(szMessage), "Your %s has been impounded. You may release it at the BH in Dillimore.", GetVehicleName(iVehTowed)); SendNewFamilyMessage(iTargetOwner, COLOR_LIGHTBLUE, szMessage); FamilyVehicleInfo[iTargetOwner][iVehIndex][fvImpounded] = 1; FamilyVehicleInfo[iTargetOwner][iVehIndex][fvId] = INVALID_VEHICLE_ID; DestroyVehicle(iVehTowed); }*/ } arr_Towing[playerid] = INVALID_VEHICLE_ID; } } default: SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use this command."); } return 1; }
CMD:aimpound(playerid, params[]) { if(PlayerInfo[playerid][pAdmin] >= 3) // from admin level 3 if(!IsAtImpoundingPoint(playerid)) { SendClientMessageEx(playerid, COLOR_GREY, "You are not near the impound point, you can't impound!"); return 1; } if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid))) { new iVehType, iVehIndex, iTargetOwner, iVehTowed = GetVehicleTrailer(GetPlayerVehicleID(playerid)); if(!GetVehicleModel(iVehTowed)) { return SendClientMessageEx(playerid, COLOR_GREY, "The vehicle in tow has been desynced and therefore cannot be impounded."); } foreach(Player, i) { iVehIndex = GetPlayerVehicle(i, iVehTowed); if(iVehIndex != -1) { iVehType = 1; iTargetOwner = i; break; } } if(!iVehType) { for(new i; i < MAX_FAMILY; ++i) { iVehIndex = GetGangVehicle(i, iVehTowed); if(iVehIndex != -1) { iVehType = 2; iTargetOwner = i; break; } } } switch(iVehType) { case 0, 2: { SendClientMessageEx(playerid, COLOR_GRAD1, "The impound administration could not find any registration on the vehicle and has returned it."); DetachTrailerFromVehicle(GetPlayerVehicleID(playerid)); SetVehiclePos(iVehTowed, 0, 0, 0); // Attempted desync fix SetVehicleToRespawn(iVehTowed); } case 1: { PlayerVehicleInfo[iTargetOwner][iVehIndex][pvImpounded] = 1; PlayerVehicleInfo[iTargetOwner][iVehIndex][pvId] = INVALID_PLAYER_VEHICLE_ID; DetachTrailerFromVehicle(GetPlayerVehicleID(playerid)); SetVehiclePos(iVehTowed, 0, 0, 0); // Attempted desync fix DestroyVehicle(iVehTowed); --PlayerCars; new szMessage[96]; format(szMessage, sizeof(szMessage),"* You have impounded %s's %s.",GetPlayerNameEx(iTargetOwner), VehicleName[PlayerVehicleInfo[iTargetOwner][iVehIndex][pvModelId] - 400]); SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMessage); format(szMessage, sizeof(szMessage), "Your %s has been impounded. You may release it at the DMV in Dillimore.", VehicleName[PlayerVehicleInfo[iTargetOwner][iVehIndex][pvModelId] - 400]); SendClientMessageEx(iTargetOwner, COLOR_LIGHTBLUE, szMessage); format(szMessage, sizeof(szMessage), "HQ: %s has impounded %s's %s ($%i unpaid tickets).", GetPlayerNameEx(playerid), GetPlayerNameEx(iTargetOwner), VehicleName[PlayerVehicleInfo[iTargetOwner][iVehIndex][pvModelId] - 400], PlayerVehicleInfo[iTargetOwner][iVehIndex][pvTicket]); SendRadioMessage(PlayerInfo[playerid][pMember], RADIO, szMessage); } /*case 2: { new szMessage[29 + MAX_PLAYER_NAME]; format(szMessage, sizeof(szMessage),"* You have impounded %s's %s.",FamilyInfo[iTargetOwner][FamilyName], GetVehicleName(iVehTowed)); SendClientMessageEx(playerid, COLOR_LIGHTBLUE, szMessage); format(szMessage, sizeof(szMessage), "Your %s has been impounded. You may release it at the BH in Dillimore.", GetVehicleName(iVehTowed)); SendNewFamilyMessage(iTargetOwner, COLOR_LIGHTBLUE, szMessage); FamilyVehicleInfo[iTargetOwner][iVehIndex][fvImpounded] = 1; FamilyVehicleInfo[iTargetOwner][iVehIndex][fvId] = INVALID_VEHICLE_ID; DestroyVehicle(iVehTowed); }*/ } arr_Towing[playerid] = INVALID_VEHICLE_ID; } } default: SendClientMessageEx(playerid, COLOR_GRAD2, "You are not authorized to use this command."); } return 1; }