Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <samp_bcrypt>
- #include <sscanf2>
- #include <zcmd>
- #define SERVER_DATABASE "server.db"
- #define REGISTER_DIALOG 0
- #define LOGIN_DIALOG 1
- #define MAX_HOUSES 100
- #define PLAYER 0
- #define HELPER 1
- #define ADMIN 2
- #define OWNER 3
- #define VIP_BRONZE 0
- #define VIP_SILVER 1
- #define VIP_GOLD 2
- #define VIP_DIAMOND 3
- #define REWARD_INTERVAL (3600000)
- #define REWARD_MONEY 2000
- #define REWARD_SCORE 1
- #define GAMESTATE_FREEROAM 0
- #define GAMESTATE_ROLEPLAY 1
- #define VIP_CHAT_COLOR F72585
- #define COLOR_YELLOW 0xFFFF00AA
- #define COLOR_RED 0xAA3333AA
- #define COLOR_MAGENTA 0xFF00FFFF
- #define COLOR_GOLD 0xFFD700FF
- #define COLOR_GREEN 0x008000FF
- new DB:server_database;
- new DBResult:database_result;
- new rpName[MAX_PLAYERS][24];
- new Text:PublicTD[1];
- enum player_data
- {
- player_kills,
- player_deaths,
- player_admin_level,
- player_vip_level,
- bool:player_logged
- };
- new PlayerData[MAX_PLAYERS][player_data];
- new gamestate=GAMESTATE_FREEROAM;
- stock GetName(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- return name;
- }
- stock DB_Escape(text[])//Credits: Y_Less
- {
- new ret[80 * 2], ch, i, j;
- while ((ch = text[i++]) && j < sizeof (ret))
- {
- if (ch == '\'')
- {
- if (j < sizeof (ret) - 2)
- {
- ret[j++] = '\'';
- ret[j++] = '\'';
- }
- }
- else if (j < sizeof (ret))
- {
- ret[j++] = ch;
- }
- else
- {
- j++;
- }
- }
- ret[sizeof (ret) - 1] = '\0';
- return ret;
- }
- stock SaveAccount(playerid)
- {
- new query[256];
- if(PlayerData[playerid][player_logged] == true)
- {
- format(query, sizeof(query),
- "UPDATE USERS SET SCORE = '%d', KILLS = '%d', DEATHS = '%d',ADMIN_LEVEL = '%d', VIP_LEVEL = '%d' WHERE NAME = '%s' COLLATE NOCASE",
- GetPlayerScore(playerid), PlayerData[playerid][player_kills], PlayerData[playerid][player_deaths],
- PlayerData[playerid][player_admin_level], PlayerData[playerid][player_vip_level],GetName(playerid));
- database_result = db_query(server_database, query);
- db_free_result(database_result);
- }
- return 1;
- }
- main() { }
- public OnGameModeInit()
- {
- SetGameModeText("Blank Script");
- SetTimer("GiveHourlyReward",REWARD_INTERVAL,true);
- ManualVehicleEngineAndLights();
- AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
- server_database = db_open(SERVER_DATABASE);
- db_query(server_database, "CREATE TABLE IF NOT EXISTS USERS (`NAME`, `PASS`, `SCORE`, `KILLS`, `DEATHS`,`ADMIN_LEVEL`,`VIP_LEVEL`)");
- PublicTD[0] = TextDrawCreate(480.000000, 316.000000, "~y~NAME:_~g~INFERNUS~n~~y~SPEED:_~b~0KM/h~n~~y~HEALTH:_~r~100~n~~y~FUEL:_~w~64L");
- TextDrawFont(PublicTD[0], 1);
- TextDrawLetterSize(PublicTD[0], 0.229166, 1.950000);
- TextDrawTextSize(PublicTD[0], 572.500000, 15.500000);
- TextDrawSetOutline(PublicTD[0], 1);
- TextDrawSetShadow(PublicTD[0], 0);
- TextDrawAlignment(PublicTD[0], 1);
- TextDrawColor(PublicTD[0], -1);
- TextDrawBackgroundColor(PublicTD[0], 255);
- TextDrawBoxColor(PublicTD[0], 100);
- TextDrawUseBox(PublicTD[0], 1);
- TextDrawSetProportional(PublicTD[0], 1);
- TextDrawSetSelectable(PublicTD[0], 0);
- return 1;
- }
- public OnGameModeExit()
- {
- db_close(server_database);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- SetPlayerScore(playerid, 0);
- PlayerData[playerid][player_kills] = 0;
- PlayerData[playerid][player_deaths] = 0;
- PlayerData[playerid][player_admin_level] = 0;
- PlayerData[playerid][player_logged] = false;
- GivePlayerMoney(playerid, 500000);
- new query[128];
- format(query, sizeof(query), "SELECT NAME FROM USERS WHERE NAME = '%s' COLLATE NOCASE", DB_Escape(GetName(playerid)));
- database_result = db_query(server_database, query);
- if(db_num_rows(database_result))
- {
- ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_PASSWORD, "{FFFFFF}Account Login", "{FFFFFF}Please enter your password below to login to your account:", "Enter", "Leave");
- }
- else
- {
- ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_PASSWORD, "{FFFFFF}Register Account", "{FFFFFF}Please enter a password below to register an account:", "Enter", "Leave");
- }
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- SaveAccount(playerid);
- return 1;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate)
- {
- if (newstate == PLAYER_STATE_DRIVER) // Player entered a vehicle as a driver
- {
- TextDrawShowForPlayer(playerid, PublicTD[0]);
- }
- else if (oldstate == PLAYER_STATE_DRIVER) // Player exited the vehicle
- {
- TextDrawHideForPlayer(playerid, PublicTD[0]);
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- if(killerid != INVALID_PLAYER_ID)
- {
- SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
- PlayerData[killerid][player_kills]++;
- }
- SetPlayerScore(playerid, GetPlayerScore(playerid) - 1);
- PlayerData[playerid][player_deaths]++;
- return 1;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
- {
- if(dialogid == REGISTER_DIALOG)
- {
- if(response)
- {
- if(strlen(inputtext) < 3 || strlen(inputtext) > 24)
- {
- SendClientMessage(playerid, -1, "SERVER: Your password must be from 3-24 characters.");
- return ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_PASSWORD, "{FFFFFF}Register Account", "{FFFFFF}Please enter a password below to register an account:", "Enter", "Leave");
- }
- bcrypt_hash(playerid, "OnPlayerRegister", inputtext, 12);
- return 1;
- }
- else
- {
- Kick(playerid);
- }
- }
- else if(dialogid == LOGIN_DIALOG)
- {
- if(response)
- {
- new query[256], field[64];
- format(query, sizeof(query), "SELECT PASS FROM USERS WHERE NAME = '%s' COLLATE NOCASE", DB_Escape(GetName(playerid)));
- database_result = db_query(server_database, query);
- if(db_num_rows(database_result))
- {
- db_get_field_assoc(database_result, "PASS", field, sizeof(field));
- bcrypt_verify(playerid, "OnPlayerLogin", inputtext, field);
- }
- return 1;
- }
- else
- {
- Kick(playerid);
- }
- }
- return 1;
- }
- forward OnPlayerLogin(playerid, bool:success);
- public OnPlayerLogin(playerid, bool:success)
- {
- if(success)
- {
- new query[256], field[24];
- format(query, sizeof(query), "SELECT * FROM USERS WHERE NAME = '%s' COLLATE NOCASE", DB_Escape(GetName(playerid)));
- database_result = db_query(server_database, query);
- if(db_num_rows(database_result))
- {
- db_get_field_assoc(database_result, "SCORE", field, sizeof(field));
- SetPlayerScore(playerid, strval(field));
- db_get_field_assoc(database_result, "KILLS", field, sizeof(field));
- PlayerData[playerid][player_kills] = strval(field);
- db_get_field_assoc(database_result, "DEATHS", field, sizeof(field));
- PlayerData[playerid][player_deaths] = strval(field);
- db_get_field_assoc(database_result, "ADMIN_LEVEL", field, sizeof(field));
- PlayerData[playerid][player_admin_level] = strval(field);
- db_get_field_assoc(database_result, "VIP_LEVEL", field, sizeof(field));
- PlayerData[playerid][player_vip_level] = strval(field);
- }
- db_free_result(database_result);
- PlayerData[playerid][player_logged] = true;
- SendClientMessage(playerid, -1, "SERVER: You have successfully logged into your account.");
- return 1;
- }
- else
- {
- Kick(playerid);
- }
- return 1;
- }
- forward OnPlayerRegister(playerid);
- public OnPlayerRegister(playerid)
- {
- new password[64];
- bcrypt_get_hash(password);
- new query[256];
- format(query, sizeof(query), "INSERT INTO USERS (NAME, PASS, SCORE, KILLS, DEATHS,ADMIN_LEVEL,VIP_LEVEL,last_x,last_y,last_z,last_angle,INT,WORLD) VALUES ('%s', '%s', '%d', '%d', '%d','%d','%d')", DB_Escape(GetName(playerid)), password, GetPlayerScore(playerid), PlayerData[playerid][player_kills], PlayerData[playerid][player_deaths],PlayerData[playerid][player_admin_level],PlayerData[playerid][player_vip_level]);
- database_result = db_query(server_database, query);
- db_free_result(database_result);
- PlayerData[playerid][player_logged] = true;
- SendClientMessage(playerid, -1, "SERVER: You have successfully registered an account.");
- return 1;
- }
- forward GiveHourlyReward();
- public GiveHourlyReward()
- {
- new i;
- for(i=0;i<MAX_PLAYERS;i++)
- {
- GivePlayerMoney(i,REWARD_MONEY);
- SetPlayerScore(i,GetPlayerScore(i)+REWARD_SCORE);
- SendClientMessage(i, 0x00FF00FF, "You have received your hourly reward: $2000 and +1 Score!");
- }
- return 1;
- }
- public OnPlayerText(playerid,text[])
- {
- if(text[0]=='#')
- {
- if (PlayerData[playerid][player_vip_level] < VIP_BRONZE)
- {
- SendClientMessage(playerid, COLOR_RED, "You are not a VIP!");
- return 0; // Block message from being sent to normal chat
- }
- new message[128];
- format(message, sizeof(message), "[VIP Chat] %s: %s", GetPlayerNameEx(playerid), text[1]); // Remove #
- for (new i = 0; i < MAX_PLAYERS; i++)
- {
- if (IsPlayerConnected(i) && PlayerData[i][player_vip_level] >= VIP_BRONZE)
- {
- SendClientMessage(i, COLOR_GOLD, message);
- }
- }
- return 0; // Block original message from going to normal chat
- }
- return 1;
- }
- public OnPlayerUpdate(playerid)
- {
- if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER) // Only update if player is driving
- {
- new vehicleid = GetPlayerVehicleID(playerid);
- new vehicleModel = GetVehicleModel(vehicleid);
- new Float:vehicleHealth;
- GetVehicleHealth(vehicleid, vehicleHealth);
- // Get speed
- new str[64], speed = GetPlayerSpeed(playerid);
- format(str, sizeof(str), "~y~NAME:_~g~%s~n~~y~SPEED:_~b~%dKM/h~n~~y~HEALTH:_~r~%d~n~~y~FUEL:_~w~64L",
- GetVehicleName(vehicleModel), speed, vehicleHealth);
- TextDrawSetString(PublicTD[0], str);
- }
- return 1;
- }
- stock GetPlayerSpeed(playerid)
- {
- new Float:x, Float:y, Float:z, Float:speed;
- GetPlayerVelocity(playerid, x, y, z);
- // Approximate square root without floatsqrt
- new Float:sum = (x * x + y * y + z * z);
- new Float:approx = sum / (1.0 + sum / 2.0); // Simple approximation
- speed = floatmul(approx, 180.0); // Convert to km/h
- return floatround(speed);
- }
- stock GetVehicleName(vehicleid)
- {
- new name[32];
- switch (vehicleid)
- {
- case 411: name = "INFERNUS";
- case 451: name = "TURISMO";
- case 400: name = "LANDSTALKER";
- default: name = "UNKNOWN";
- }
- return name;
- }
- stock GetPlayerNameEx(playerid)
- {
- new name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- return name;
- }
- CMD:setlevel(playerid, params[])
- {
- new targetid, name[MAX_PLAYER_NAME], level[16], string[128], query[256], admin;
- if (!IsPlayerAdmin(playerid))
- return SendClientMessage(playerid, -1, "You are not authorized to use this command.");
- // Parse the parameters using sscanf
- if (sscanf(params, "us[16]", targetid, level))
- return SendClientMessage(playerid, -1, "Syntax: /setlevel [playerid] [level]");
- // Check if target player is valid
- if (!IsPlayerConnected(targetid))
- return SendClientMessage(playerid, -1, "Invalid player ID.");
- // Determine admin level
- if (!strcmp(level, "player", true)) admin = PLAYER;
- else if (!strcmp(level, "helper", true)) admin = HELPER;
- else if (!strcmp(level, "admin", true)) admin = ADMIN;
- else if (!strcmp(level, "owner", true)) admin = OWNER;
- else
- return SendClientMessage(playerid, -1, "Invalid admin level.");
- // Get player's name
- GetPlayerName(targetid, name, sizeof(name));
- // Check if database is connected
- if (!server_database)
- return SendClientMessage(playerid, -1, "Database connection error.");
- // Query to check if player exists in DB
- format(query, sizeof(query), "SELECT ADMIN_LEVEL FROM USERS WHERE NAME = '%s' COLLATE NOCASE", DB_Escape(name));
- new DBResult:result = db_query(server_database, query);
- if (db_num_rows(result))
- {
- db_free_result(result);
- // Update admin level in database
- format(query, sizeof(query), "UPDATE USERS SET ADMIN_LEVEL = %d WHERE NAME = '%s' COLLATE NOCASE", admin, DB_Escape(name));
- db_query(server_database, query);
- // Update player's admin level in memory
- PlayerData[targetid][player_admin_level] = admin;
- format(string, sizeof(string), "SERVER: You have successfully set the admin level of %s to %s.", name, level);
- SendClientMessage(playerid, -1, string);
- }
- else
- {
- SendClientMessage(playerid, -1, "Player not found in database.");
- db_free_result(result);
- }
- return 1;
- }
- CMD:setvip(playerid, params[])
- {
- new targetid, name[24], vip[16], string[128], query[256], vip_level;
- if (!IsPlayerAdmin(playerid))
- return SendClientMessage(playerid, -1, "You are not authorized to use this command.");
- // Corrected sscanf format
- if (sscanf(params, "us[16]", targetid, name, vip))
- return SendClientMessage(playerid, -1, "Syntax: /setvip [playerid] [vip level]");
- if (!IsPlayerConnected(targetid))
- return SendClientMessage(playerid, -1, "Invalid player ID.");
- if (!strcmp(vip, "bronze", true)) vip_level = VIP_BRONZE;
- else if (!strcmp(vip, "silver", true)) vip_level = VIP_SILVER;
- else if (!strcmp(vip, "gold", true)) vip_level = VIP_GOLD;
- else if (!strcmp(vip, "diamond", true)) vip_level = VIP_DIAMOND;
- else
- return SendClientMessage(playerid, -1, "Invalid VIP level.");
- format(query, sizeof(query), "UPDATE USERS SET VIP_LEVEL = %d WHERE NAME = '%s' COLLATE NOCASE", vip_level, DB_Escape(name));
- db_query(server_database, query);
- PlayerData[targetid][player_vip_level] = vip_level;
- format(string, sizeof(string), "SERVER: You have successfully set the VIP level of %s to %s.", name, vip);
- SendClientMessage(playerid, -1, string);
- return 1;
- }
- CMD:v(playerid,params[])
- {
- if(PlayerData[playerid][player_vip_level]<VIP_BRONZE)
- {
- return SendClientMessage(playerid, -1, "You are not a VIP player.");
- }
- if(isnull(params))
- {
- return SendClientMessage(playerid, -1, "Usage: /v [message]");
- }
- new color, msg[128], name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- switch(PlayerData[playerid][player_vip_level])
- {
- case VIP_BRONZE: color = 0xCD7F32FF; // Bronze
- case VIP_SILVER: color = 0xC0C0C0FF; // Silver
- case VIP_GOLD: color = 0xFFD700FF; // Gold
- case VIP_DIAMOND: color = 0xFFF72585; // Diamond
- default: color = 0xFFFFFFAA;
- }
- format(msg, sizeof(msg), "[VIP Chat] %s: %s", name, params);
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(PlayerData[i][player_vip_level] >= VIP_BRONZE)
- {
- SendClientMessage(i, color, msg);
- }
- }
- return 1;
- }
- CMD:checkstatus(playerid, params[])
- {
- new targetid, name[MAX_PLAYER_NAME], string[128], adminTitle[32], vipTitle[32];
- // If no parameters are provided, check the player's own status
- if (sscanf(params, "u", targetid))
- targetid = playerid;
- if (!IsPlayerConnected(targetid))
- return SendClientMessage(playerid, -1, "Invalid player ID.");
- GetPlayerName(targetid, name, sizeof(name));
- // Assign Admin Titles
- switch (PlayerData[targetid][player_admin_level])
- {
- case 0: adminTitle = "None";
- case 1: adminTitle = "Moderator";
- case 2: adminTitle = "Administrator";
- case 3: adminTitle = "Senior Admin";
- case 4: adminTitle = "Head Admin";
- case 5: adminTitle = "Owner";
- default: adminTitle = "Unknown";
- }
- // Assign VIP Titles
- switch (PlayerData[targetid][player_vip_level])
- {
- case 0: vipTitle = "None";
- case 1: vipTitle = "Silver VIP";
- case 2: vipTitle = "Gold VIP";
- case 3: vipTitle = "Platinum VIP";
- case 4: vipTitle = "Diamond VIP";
- default: vipTitle = "Unknown";
- }
- format(string, sizeof(string), "Player: %s | Admin: %s | VIP: %s", name, adminTitle, vipTitle);
- SendClientMessage(playerid, -1, string);
- return 1;
- }
- /*CMD:ban(playerid,params[])
- {
- new targetid,reason;
- if(PlayerData[playerid][player_admin_level]<5) return SendClientMessage(playerid,-1,"You are not authorized to use this command");
- if(sscanf(params,"uz",targetid,reason))return SendClientMessage(playerid,-1,"Usage: /ban [playerid] [reason]");
- if(!IsPlayerConnected(playerid))return SendClientMessage(playerid,-1,"Player is not connected");
- }*/
- CMD:cca(playerid, params[])
- {
- if (!IsPlayerAdmin(playerid) && PlayerData[playerid][player_admin_level]<0) // Check if the player is an admin
- {
- SendClientMessage(playerid, 0xFF0000FF, "You don't have permission to use this command!");
- return 1;
- }
- for (new i = 0; i < 50; i++) // Sends 50 empty messages to clear the chat for all players
- {
- SendClientMessageToAll(-1, " ");
- }
- SendClientMessageToAll(0x00FF00FF, "The chat has been cleared by an admin!");
- return 1;
- }
- CMD:engine(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
- new vehicleid = GetPlayerVehicleID(playerid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- if(engine == VEHICLE_PARAMS_OFF) {
- SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective);
- SendClientMessage(playerid, COLOR_YELLOW, "Engine started!");
- } else {
- SetVehicleParamsEx(vehicleid, VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
- SendClientMessage(playerid, -1, "Engine turned off!");
- }
- return 1;
- }
- CMD:lights(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
- new vehicleid = GetPlayerVehicleID(playerid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- if(lights == VEHICLE_PARAMS_OFF) {
- SetVehicleParamsEx(vehicleid, engine, VEHICLE_PARAMS_ON, alarm, doors, bonnet, boot, objective);
- SendClientMessage(playerid, COLOR_YELLOW, "Lights turned on!");
- } else {
- SetVehicleParamsEx(vehicleid, engine, VEHICLE_PARAMS_OFF, alarm, doors, bonnet, boot, objective);
- SendClientMessage(playerid, -1, "Lights turned off!");
- }
- return 1;
- }
- CMD:bonnet(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
- new vehicleid = GetPlayerVehicleID(playerid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- if(bonnet == VEHICLE_PARAMS_OFF) {
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, VEHICLE_PARAMS_ON, boot, objective);
- SendClientMessage(playerid, COLOR_YELLOW, "Bonnet opened!");
- } else {
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, VEHICLE_PARAMS_OFF, boot, objective);
- SendClientMessage(playerid, -1, "Bonnet closed!");
- }
- return 1;
- }
- CMD:boot(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
- new vehicleid = GetPlayerVehicleID(playerid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- if(boot == VEHICLE_PARAMS_OFF) {
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, VEHICLE_PARAMS_ON, objective);
- SendClientMessage(playerid, COLOR_YELLOW, "Boot opened!");
- } else {
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, VEHICLE_PARAMS_OFF, objective);
- SendClientMessage(playerid, -1, "Boot closed!");
- }
- return 1;
- }
- CMD:doors(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, COLOR_RED, "You are not in a vehicle!");
- new vehicleid = GetPlayerVehicleID(playerid);
- new engine, lights, alarm, doors, bonnet, boot, objective;
- GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
- if(doors == VEHICLE_PARAMS_OFF) {
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, VEHICLE_PARAMS_ON, bonnet, boot, objective);
- SendClientMessage(playerid, COLOR_YELLOW, "Doors locked!");
- } else {
- SetVehicleParamsEx(vehicleid, engine, lights, alarm, VEHICLE_PARAMS_OFF, bonnet, boot, objective);
- SendClientMessage(playerid, -1, "Doors unlocked!");
- }
- return 1;
- }
- CMD:viphelp(playerid, params[])
- {
- if(PlayerData[playerid][player_vip_level]<VIP_BRONZE) return SendClientMessage(playerid, COLOR_RED, "You are not a VIP!");
- SendClientMessage(playerid, COLOR_GOLD, "[VIP COMMANDS]");
- SendClientMessage(playerid, COLOR_YELLOW, "/vipheal - Fully restores your health & armor");
- SendClientMessage(playerid, COLOR_YELLOW, "/vipcar - Spawns a luxury VIP vehicle");
- SendClientMessage(playerid, COLOR_YELLOW, "/vipskin - Change to exclusive VIP skins");
- SendClientMessage(playerid, COLOR_YELLOW, "/vipweapons - Get special weapons");
- SendClientMessage(playerid, COLOR_YELLOW, "/vipjetpack - Get a jetpack");
- SendClientMessage(playerid,COLOR_YELLOW,"/viprepair - Repairs the car");
- return 1;
- }
- CMD:vipheal(playerid, params[])
- {
- if(PlayerData[playerid][player_vip_level] > 0)
- {
- SetPlayerHealth(playerid, 100.0);
- SendClientMessage(playerid, COLOR_YELLOW, "VIP: You have been healed!");
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "VIP: This command is only for VIP players!");
- }
- return 1;
- }
- CMD:vipweapons(playerid, params[])
- {
- if(PlayerData[playerid][player_vip_level] > 0)
- {
- GivePlayerWeapon(playerid, 24, 100); // Deagle with 100 ammo
- GivePlayerWeapon(playerid, 31, 200); // M4 with 200 ammo
- SendClientMessage(playerid, COLOR_YELLOW, "VIP: You have received your VIP weapons!");
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "VIP: This command is only for VIP players!");
- }
- return 1;
- }
- CMD:vipcar(playerid, params[])
- {
- if (PlayerData[playerid][player_vip_level] < VIP_BRONZE) // Check if player is VIP
- {
- SendClientMessage(playerid, COLOR_RED, "You are not a VIP!");
- return 1;
- }
- new vehicleid;
- if(sscanf(params, "d", vehicleid))
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Usage: /vipcar [vehicle ID]");
- return 1;
- }
- SpawnVIPCar(playerid, vehicleid);
- return 1;
- }
- CMD:vipcolor(playerid, params[])
- {
- if(PlayerData[playerid][player_vip_level] > 0)
- {
- new color;
- switch (PlayerData[playerid][player_vip_level])
- {
- case VIP_BRONZE: color = 0xCD7F32FF;
- case VIP_SILVER: color = 0xC0C0C0FF;
- case VIP_GOLD: color = 0xFFD700FF;
- case VIP_DIAMOND: color = 0x1E90FFFF;
- }
- SetPlayerColor(playerid, color);
- SendClientMessage(playerid, COLOR_YELLOW, "VIP: Your player color has been updated!");
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "VIP: This command is only for VIP players!");
- }
- return 1;
- }
- CMD:viprepair(playerid, params[])
- {
- if (PlayerData[playerid][player_vip_level] < VIP_BRONZE)
- {
- SendClientMessage(playerid, COLOR_RED, "You are not a VIP!");
- return 1;
- }
- new vehicleid = GetPlayerVehicleID(playerid);
- if (!vehicleid)
- {
- SendClientMessage(playerid, COLOR_YELLOW, "You are not in a vehicle!");
- return 1;
- }
- RepairVehicle(vehicleid);
- SendClientMessage(playerid, COLOR_GREEN, "Your vehicle has been repaired!");
- return 1;
- }
- CMD:vipjetpack(playerid, params[])
- {
- if(PlayerData[playerid][player_vip_level] > 0)
- {
- GivePlayerWeapon(playerid, 370, 1); // Jetpack
- SendClientMessage(playerid, COLOR_YELLOW, "VIP: You have received a Jetpack!");
- }
- else
- {
- SendClientMessage(playerid, COLOR_RED, "VIP: This command is only for VIP players!");
- }
- return 1;
- }
- stock SpawnVIPCar(playerid, vehicleid)
- {
- new Float:x, Float:y, Float:z, Float:angle;
- // Get player position and facing angle
- GetPlayerPos(playerid, x, y, z);
- GetPlayerFacingAngle(playerid, angle);
- // Calculate position in front of the player
- x += 3.0 * floatsin(-angle, degrees);
- y += 3.0 * floatcos(-angle, degrees);
- // Spawn the VIP car in front of the player
- new carid = CreateVehicle(vehicleid, x, y, z, angle, -1, -1, 100);
- // Put player in the driver's seat
- PutPlayerInVehicle(playerid, carid, 0);
- SendClientMessage(playerid, 0x00FF00FF, "VIP car has been spawned in front of you!");
- return carid;
- }
- CMD:vipskin(playerid, params[])
- {
- if (PlayerData[playerid][player_vip_level] < VIP_BRONZE)
- {
- SendClientMessage(playerid, COLOR_RED, "You are not a VIP!");
- return 1;
- }
- new skinid;
- if(sscanf(params, "d", skinid))
- {
- SendClientMessage(playerid, COLOR_YELLOW, "Usage: /vipskin [skin ID]");
- return 1;
- }
- if (skinid < 0 || skinid > 311) // San Andreas has skins from 0 to 311
- {
- SendClientMessage(playerid, COLOR_RED, "Invalid skin ID! Choose between 0-311.");
- return 1;
- }
- SetPlayerSkin(playerid, skinid);
- SendClientMessage(playerid, COLOR_GREEN, "Your VIP skin has been changed!");
- return 1;
- }
- CMD:freeroam(playerid, params[])
- {
- if (gamestate == GAMESTATE_FREEROAM) return SendClientMessage(playerid, COLOR_RED, "You are already in Freeroam mode.");
- gamestate = GAMESTATE_FREEROAM;
- SendClientMessageToAll(COLOR_YELLOW, "Game state changed to Freeroam.");
- return 1;
- }
- CMD:roleplay(playerid, params[])
- {
- if (gamestate == GAMESTATE_ROLEPLAY) return SendClientMessage(playerid, COLOR_RED, "You are already in Roleplay mode.");
- gamestate = GAMESTATE_ROLEPLAY;
- SendClientMessageToAll(COLOR_YELLOW, "Game state changed to Roleplay.");
- return 1;
- }
- CMD:me(playerid, params[])
- {
- if (gamestate != GAMESTATE_ROLEPLAY)
- return SendClientMessage(playerid, COLOR_RED, "Roleplay mode is not enabled!");
- if (isnull(params))
- return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /me [action]");
- new str[128];
- format(str, sizeof(str), "* %s %s", rpName[playerid], params);
- SendClientMessageToAll(COLOR_YELLOW, str);
- return 1;
- }
- CMD:do(playerid, params[])
- {
- if (gamestate != GAMESTATE_ROLEPLAY)
- return SendClientMessage(playerid, COLOR_RED, "Roleplay mode is not enabled!");
- if (isnull(params))
- return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /do [description]");
- new str[128];
- format(str, sizeof(str), "* %s", params);
- SendClientMessageToAll(COLOR_YELLOW, str);
- return 1;
- }
- CMD:b(playerid, params[])
- {
- if (gamestate != GAMESTATE_ROLEPLAY)
- return SendClientMessage(playerid, COLOR_RED, "Roleplay mode is not enabled!");
- if (isnull(params))
- return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /b [message]");
- new str[128];
- format(str, sizeof(str), "(OOC) %s: %s", rpName[playerid], params);
- SendClientMessageToAll(COLOR_YELLOW, str);
- return 1;
- }
- CMD:shout(playerid, params[])
- {
- if (gamestate != GAMESTATE_ROLEPLAY)
- return SendClientMessage(playerid, COLOR_RED, "Roleplay mode is not enabled!");
- if (isnull(params))
- return SendClientMessage(playerid, COLOR_YELLOW, "USAGE: /shout [message]");
- new str[128];
- format(str, sizeof(str), "%s shouts: %s!", rpName[playerid], strupr(params));
- SendClientMessageToAll(COLOR_YELLOW, str);
- return 1;
- }
- stock strupr(string[])
- {
- for (new i = 0; i < strlen(string); i++)
- {
- if (string[i] >= 'a' && string[i] <= 'z')
- {
- string[i] -= 32; // Convert to uppercase
- }
- }
- return string;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement