26.03.2013, 00:45
Hey I need help I have this gamemode what i've been working on but the dealerships cause lag to the server, when creating a dealership/creating a dealershipcar/buying the car.
Code:
#define MAX_DEALERSHIPVEHICLES 25 #define MAX_CARDEALERSHIPS 50 enum cdInfo { cdOwned, cdOwner[MAX_PLAYER_NAME], Float: cdEntranceX, Float: cdEntranceY, Float: cdEntranceZ, Float: cdExitX, Float: cdExitY, Float: cdExitZ, cdMessage[128], cdTill, cdInterior, Float: cdRadius, cdPrice, cdPickupID, Text3D:cdTextLabel, Text3D:cdVehicleLabel[MAX_DEALERSHIPVEHICLES], cdVehicleModel[MAX_DEALERSHIPVEHICLES], cdVehicleCost[MAX_DEALERSHIPVEHICLES], cdVehicleId[MAX_DEALERSHIPVEHICLES], Float: cdVehicleSpawnX[MAX_DEALERSHIPVEHICLES], Float: cdVehicleSpawnY[MAX_DEALERSHIPVEHICLES], Float: cdVehicleSpawnZ[MAX_DEALERSHIPVEHICLES], Float: cdVehicleSpawnAngle[MAX_DEALERSHIPVEHICLES], Float: cdVehicleSpawn[4], };
Code:
new CarDealershipInfo[MAX_CARDEALERSHIPS][cdInfo]; } if(GetCarDealershipVehicleId(newcar) != -1 && GetCarDealershipVehicleId(newcar) == GetPVarInt(playerid, "editingcdveh")) return 1; if(GetCarDealershipVehicleId(newcar) != -1) { new string[57 + 20 + 4]; format(string, sizeof(string),"Would you like to buy this %s?\n\nThis vehicle costs $%d.", GetVehicleName(newcar), CarDealershipInfo[GetCarDealershipId(newcar)][cdVehicleCost][GetCarDealershipVehicleId(newcar)]); ShowPlayerDialog(playerid,DIALOG_CDBUY,DIALOG_STYLE_MSGBOX,"Warning:",string,"Buy","Cancel"); TogglePlayerControllable(playerid, false); return 1; } LoadcDealerships() { new idx, idx2; new string[128]; new owner[MAX_PLAYER_NAME]; new message[128]; djAutocommit(false); while (idx < sizeof(CarDealershipInfo)) { format(string, sizeof(string), "%d/owned", idx); CarDealershipInfo[idx][cdOwned] = djInt("cardealerships.json", string); format(string, sizeof(string), "%d/owner", idx); format(owner, sizeof(owner), "%s", dj("cardealerships.json", string)); strmid(CarDealershipInfo[idx][cdOwner], owner, 0, strlen(owner), 255); format(string, sizeof(string), "%d/entrance/x", idx); CarDealershipInfo[idx][cdEntranceX] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/entrance/y", idx); CarDealershipInfo[idx][cdEntranceY] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/entrance/z", idx); CarDealershipInfo[idx][cdEntranceZ] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/exit/x", idx); CarDealershipInfo[idx][cdExitX] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/exit/y", idx); CarDealershipInfo[idx][cdExitY] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/exit/z", idx); CarDealershipInfo[idx][cdExitZ] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/message", idx); format(message, sizeof(message), "%s", dj("cardealerships.json", string)); strmid(CarDealershipInfo[idx][cdMessage], message, 0, strlen(message), 255); format(string, sizeof(string), "%d/till", idx); CarDealershipInfo[idx][cdTill] = djInt("cardealerships.json", string); format(string, sizeof(string), "%d/interior", idx); CarDealershipInfo[idx][cdInterior] = djInt("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclespawn/x", idx); CarDealershipInfo[idx][cdVehicleSpawn][0] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclespawn/y", idx); CarDealershipInfo[idx][cdVehicleSpawn][1] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclespawn/z", idx); CarDealershipInfo[idx][cdVehicleSpawn][2] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclespawn/a", idx); CarDealershipInfo[idx][cdVehicleSpawn][3] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/radius", idx); CarDealershipInfo[idx][cdRadius] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/price", idx); CarDealershipInfo[idx][cdPrice] = djInt("cardealerships.json", string); while (idx2 < MAX_DEALERSHIPVEHICLES) { format(string, sizeof(string), "%d/vehicleangle/%d", idx, idx2); CarDealershipInfo[idx][cdVehicleSpawnAngle][idx2] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclespawnx/%d", idx, idx2); CarDealershipInfo[idx][cdVehicleSpawnX][idx2] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclespawny/%d", idx, idx2); CarDealershipInfo[idx][cdVehicleSpawnY][idx2] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclespawnz/%d", idx, idx2); CarDealershipInfo[idx][cdVehicleSpawnZ][idx2] = djFloat("cardealerships.json", string); format(string, sizeof(string), "%d/vehiclecost/%d", idx, idx2); CarDealershipInfo[idx][cdVehicleCost][idx2] = djInt("cardealerships.json", string); format(string, sizeof(string), "%d/vehicletypes/%d", idx, idx2); CarDealershipInfo[idx][cdVehicleModel][idx2] = djInt("cardealerships.json", string); idx2++; } idx2 = 0; idx++; } djAutocommit(true); return 1; }
Code:
SavecDealership(id) { new idx2; new string[128]; printf("Saving Car Dealership %d.", id); //djAutocommit(false); format(string, sizeof(string), "%d/owned", id); djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdOwned]); format(string, sizeof(string), "%d/owner", id); djSet("cardealerships.json", string, CarDealershipInfo[id][cdOwner]); format(string, sizeof(string), "%d/entrance/x", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdEntranceX]); format(string, sizeof(string), "%d/entrance/y", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdEntranceY]); format(string, sizeof(string), "%d/entrance/z", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdEntranceZ]); format(string, sizeof(string), "%d/exit/x", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdExitX]); format(string, sizeof(string), "%d/exit/y", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdExitY]); format(string, sizeof(string), "%d/exit/z", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdExitZ]); format(string, sizeof(string), "%d/message", id); djSet("cardealerships.json", string, CarDealershipInfo[id][cdMessage]); format(string, sizeof(string), "%d/till", id); djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdTill]); format(string, sizeof(string), "%d/interior", id); djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdInterior]); format(string, sizeof(string), "%d/vehiclespawn/x", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][0]); format(string, sizeof(string), "%d/vehiclespawn/y", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][1]); format(string, sizeof(string), "%d/vehiclespawn/z", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][2]); format(string, sizeof(string), "%d/vehiclespawn/a", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawn][3]); format(string, sizeof(string), "%d/radius", id); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdRadius]); format(string, sizeof(string), "%d/price", id); djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdPrice]); while (idx2 < MAX_DEALERSHIPVEHICLES) { format(string, sizeof(string), "%d/vehicleangle/%d", id, idx2); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnAngle][idx2]); format(string, sizeof(string), "%d/vehiclespawnx/%d", id, idx2); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnX][idx2]); format(string, sizeof(string), "%d/vehiclespawny/%d", id, idx2); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnY][idx2]); format(string, sizeof(string), "%d/vehiclespawnz/%d", id, idx2); djSetFloat("cardealerships.json", string, CarDealershipInfo[id][cdVehicleSpawnZ][idx2]); format(string, sizeof(string), "%d/vehiclecost/%d", id, idx2); djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdVehicleCost][idx2]); format(string, sizeof(string), "%d/vehicletypes/%d", id, idx2); djSetInt("cardealerships.json", string, CarDealershipInfo[id][cdVehicleModel][idx2]); idx2++; } //djAutocommit(true); return 1; }
Code:
CMD:createdealership(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] < 1337) { SendClientMessageEx(playerid, COLOR_GREY, " You are not allowed to use this command."); return 1; } new string[128], price, radius, message[64]; if(sscanf(params, "dds[64]", price, radius, message)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /createdealership [price] [radius] [message]"); new Float:X,Float:Y,Float:Z; GetPlayerPos(playerid,X,Y,Z); new dealershipid = CreateCarDealership(X, Y, Z, radius, price, message); if(dealershipid == -1) { SendClientMessageEx(playerid, COLOR_GREY, "ERROR: Car Dealerships limit reached."); } else { format(string, sizeof(string), " Car Dealership created with ID %d.", dealershipid); SendClientMessageEx(playerid, COLOR_GRAD1, string); } return 1; }
Code:
CMD:destroydealership(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] < 1337) { SendClientMessageEx(playerid, COLOR_GREY, " You are not allowed to use this command."); return 1; } new string[128], dealershipid; if(sscanf(params, "d", dealershipid)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /destroydealership [dealershipid]"); for(new d = 0 ; d < MAX_CARDEALERSHIPS; d++) { if(IsPlayerInRangeOfPoint(playerid, 3.0, CarDealershipInfo[d][cdEntranceX], CarDealershipInfo[d][cdEntranceY], CarDealershipInfo[d][cdEntranceZ])) { DestroyCarDealership(d); format(string, sizeof(string), " Car Dealership destroyed with ID %d.", d); SendClientMessageEx(playerid, COLOR_GRAD1, string); return 1; } } if(dealershipid > MAX_CARDEALERSHIPS) return 1; if(dealershipid < 0) return 1; DestroyCarDealership(dealershipid); format(string, sizeof(string), " Car Dealership destroyed with ID %d.", dealershipid); SendClientMessageEx(playerid, COLOR_GRAD1, string); return 1; } CMD:createcdveh(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] < 1337) { SendClientMessageEx(playerid, COLOR_GREY, " You are not allowed to use this command."); return 1; } new string[128], price, dealershipid, modelid; if(sscanf(params, "ddd", price, dealershipid, modelid)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /createcdveh [price] [dealership] [modelid]"); new Float:X,Float:Y,Float:Z,Float:A; GetPlayerPos(playerid,X,Y,Z); GetPlayerFacingAngle(playerid, A); new cdvehicleid = CreateCarDealershipVehicle(dealershipid, modelid, X, Y, Z, A, price); if(cdvehicleid == -1) { SendClientMessageEx(playerid, COLOR_GREY, "ERROR: cdVehicles limit reached."); } else { format(string, sizeof(string), " Car Dealership Vehicle created with ID %d.", cdvehicleid); SendClientMessageEx(playerid, COLOR_GRAD1, string); } return 1; }
Code:
CMD:destroycdveh(playerid, params[]) { if (PlayerInfo[playerid][pAdmin] < 1337) { SendClientMessageEx(playerid, COLOR_GREY, " You are not allowed to use this command."); return 1; } new string[128], vehid; if(sscanf(params, "d", vehid)) return SendClientMessageEx(playerid, COLOR_WHITE, "USAGE: /destroycdveh [vehicleid]"); DestroyCarDealershipVehicle(GetCarDealershipId(vehid), GetCarDealershipVehicleId(vehid)); SavecDealership(GetCarDealershipId(vehid)); format(string, sizeof(string), " Car Dealership Vehicle destroyed with ID %d.", vehid); SendClientMessageEx(playerid, COLOR_GRAD1, string); return 1; }