Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* VIP System by Variable */
- /* Update version 2 - Special Thanks to Konstantinos */
- #include <a_samp>
- #include <sscanf>
- #include <zcmd>
- new DB: VDB;
- new ECMD[MAX_PLAYERS][14];
- public OnFilterScriptInit()
- {
- VDB = db_open("VDB.db");
- db_query(VDB, "CREATE TABLE IF NOT EXISTS `VIP` (`PNAME`, `VIPRANK`, `X`, `Y`, `Z`)");
- print("\n\n------------------------------------");
- print("\nVariable VIP System has been loaded!\n");
- print("------------------------------------\n\n");
- return 1;
- }
- public OnFilterScriptExit()
- {
- db_close(VDB);
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- if(GetVipRank(playerid) >= 1)
- {
- SendClientMessage(playerid, 0xFF99FFFF, "[VIP] {FFFFFF}Welcome back.");
- }
- return 1;
- }
- public OnPlayerText(playerid, text[])
- {
- new String[128];
- if(GetVipRank(playerid) >= 1)
- {
- if(text[0] != '$')
- {
- format(String, sizeof(String), "{FF00FF}[VIP] {%06x}[%d] %s:{FFFFFF} %s", GetPlayerColor(playerid) >>> 8, playerid, GetName(playerid), text);
- SendClientMessageToAll(0xFF00FFFF, String);
- return 0;
- }
- else if(text[0] == '$')
- {
- for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
- {
- if(IsPlayerConnected(i) && !IsPlayerNPC(i))
- {
- if(GetVipRank(i) >= 1)
- {
- format(String, sizeof(String), "{FF00FF}[V.Chat] {%06x}[%d] %s:{FFFFFF} %s", GetPlayerColor(playerid) >>> 8, playerid, GetName(playerid), text[1]);
- SendClientMessage(i, 0x0099FFFF, String);
- return 0;
- }
- }
- }
- }
- }
- return 1;
- }
- CMD:setvip(playerid, params[])
- {
- new ID, Level, Query[300], DBResult: Result;
- if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "You are not authorized to use this command.");
- if(sscanf(params, "ii", ID, Level)) return SendClientMessage(playerid, 0xFF0000FF, "Correct: /setvip [ID] [Level] From 0 to 3.");
- if(Level > 3 || Level < 0) return SendClientMessage(playerid, 0xFF0000FF, "Levels are from 0-3 only!");
- if(!IsPlayerConnected(ID) || ID == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000FF, "Player isn't connected!");
- format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(ID));
- Result = db_query(VDB, Query);
- if(db_num_rows(Result))
- {
- format(Query, sizeof(Query), "UPDATE `VIP` SET VIPRANK = '%d' WHERE PNAME = '%q'", Level, GetName(ID));
- db_query(VDB, Query);
- GameTextForPlayer(playerid, "~g~VIP Updated.", 5000, 3);
- }
- else if(!db_num_rows(Result))
- {
- format(Query, sizeof(Query), "INSERT INTO VIP(PNAME, VIPRANK, X, Y, Z) VALUES('%s', '%d', '0.0', '0.0', '0.0')", GetName(ID), Level);
- db_query(VDB, Query);
- GameTextForPlayer(playerid, "~g~VIP Added.", 5000, 3);
- }
- db_free_result(Result);
- return 1;
- }
- CMD:vhelp(playerid)
- {
- SendClientMessage(playerid, 0x00FF00FF, "Level 1: vheal, vequip, vjp, vrespawn, vtime, '$' for VIP Chat.");
- SendClientMessage(playerid, 0x00FF00FF, "Level 2: vcar, vboat, vbike, vheli, vcc.");
- SendClientMessage(playerid, 0x00FF00FF, "Level 3: vgoto, vskin, vsavepos, vloadpos.");
- return 1;
- }
- CMD:vheal(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 1)
- {
- if(gettime() > ECMD[playerid][0])
- {
- ECMD[playerid][0] = gettime() + 60;
- SetPlayerHealth(playerid, 100);
- SendClientMessage(playerid, 0xFF00FFFF, "Health has been restored!");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vequip(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 1)
- {
- if(gettime() > ECMD[playerid][2])
- {
- ECMD[playerid][1] = gettime() + 60;
- GivePlayerWeapon(playerid, 35, 5);
- GivePlayerWeapon(playerid, 24, 100);
- GivePlayerWeapon(playerid, 34, 100);
- GivePlayerWeapon(playerid, 9, 1);
- SendClientMessage(playerid, 0xFF00FFFF, "Chainsaw(9), Desert Eagle(24), Sniper Rifle(34) and Rocket launcher(35) has been spawned!");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vjp(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 1)
- {
- if(gettime() > ECMD[playerid][2])
- {
- ECMD[playerid][2] = gettime() + 60;
- SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USEJETPACK);
- SendClientMessage(playerid, 0xFF00FFFF, "Jetpack has been spawned!");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vrespawn(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 1)
- {
- if(gettime() > ECMD[playerid][3])
- {
- ECMD[playerid][3] = gettime() + 60;
- SpawnPlayer(playerid);
- SendClientMessage(playerid, 0xFF00FFFF, "You've been respawned!");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vtime(playerid, params[])
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot/in car to use this feature.");
- else if(GetVipRank(playerid) >= 1)
- {
- if(gettime() > ECMD[playerid][4])
- {
- new Hours, Minutes;
- if(sscanf(params, "ii", Hours, Minutes)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vtime [H] [M].");
- SetPlayerTime(playerid, Hours, Minutes);
- SendClientMessage(playerid, 0xFF00FFFF, "Time has been updated!");
- ECMD[playerid][4] = gettime() + 60;
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vcar(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 2)
- {
- if(gettime() > ECMD[playerid][5])
- {
- new veh, Float:X, Float:Y, Float:Z, Float:A;
- ECMD[playerid][5] = gettime() + 60;
- GetPlayerPos(playerid, X, Y, Z);
- GetPlayerFacingAngle(playerid, A);
- veh = CreateVehicle(411, X, Y, Z, A, 0, 6, -1);
- PutPlayerInVehicle(playerid, veh, 0);
- SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned, with NOS!");
- AddVehicleComponent(veh, 1010);
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vboat(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 2)
- {
- if(gettime() > ECMD[playerid][6])
- {
- new veh, Float:X, Float:Y, Float:Z, Float:A;
- ECMD[playerid][6] = gettime() + 60;
- GetPlayerPos(playerid, X, Y, Z);
- GetPlayerFacingAngle(playerid, A);
- veh = CreateVehicle(493, X, Y, Z, A, 0, 6, -1);
- PutPlayerInVehicle(playerid, veh, 0);
- SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned!");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vbike(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 2)
- {
- if(gettime() > ECMD[playerid][7])
- {
- new veh, Float:X, Float:Y, Float:Z, Float:A;
- ECMD[playerid][7] = gettime() + 60;
- GetPlayerPos(playerid, X, Y, Z);
- GetPlayerFacingAngle(playerid, A);
- veh = CreateVehicle(463, X, Y, Z, A, 0, 6, -1);
- PutPlayerInVehicle(playerid, veh, 0);
- SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned!");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vheli(playerid)
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 2)
- {
- if(gettime() > ECMD[playerid][8])
- {
- new veh, Float:X, Float:Y, Float:Z, Float:A;
- ECMD[playerid][8] = gettime() + 60;
- GetPlayerPos(playerid, X, Y, Z);
- GetPlayerFacingAngle(playerid, A);
- veh = CreateVehicle(487, X, Y, Z, A, 0, 6, -1);
- PutPlayerInVehicle(playerid, veh, 0);
- SendClientMessage(playerid, 0xFF00FFFF, "VIP Vehicle spawned!");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vcc(playerid, params[])
- {
- if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, 0xFF0000FF, "You aren't in any vehicle.");
- else if(GetVipRank(playerid) >= 2)
- {
- if(gettime() > ECMD[playerid][9])
- {
- new Col1, Col2;
- if(sscanf(params, "ii", Col1, Col2)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vcc [First Color] [Sec Color].");
- if(Col1 > 255 || Col1 < 0) return SendClientMessage(playerid, 0xFF0000FF, "Vehicle Colours are between 0-255 only.");
- if(Col2 > 255 || Col2 < 0) return SendClientMessage(playerid, 0xFF0000FF, "Vehicle Colours are between 0-255 only.");
- ChangeVehicleColor(GetPlayerVehicleID(playerid), Col1, Col2);
- SendClientMessage(playerid, 0xFF00FFFF, "Vehicle Colour has been updated!");
- ECMD[playerid][9] = gettime() + 60;
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vgoto(playerid, params[])
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 3)
- {
- if(gettime() > ECMD[playerid][10])
- {
- new ID, Float:X, Float:Y, Float:Z, Float:A;
- if(sscanf(params, "i", ID)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vgoto [ID].");
- if(!IsPlayerConnected(ID) || ID == playerid || ID == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0xFF0000FF, "Invalid Player ID.");
- SendClientMessage(playerid, 0xFF00FFFF, "Teleported to player Sucessfully!");
- SendClientMessage(ID, 0xFF00FFFF, "A Very Important Person has teleported to you!");
- GetPlayerPos(ID, X, Y, Z);
- GetPlayerFacingAngle(ID, A);
- SetPlayerPos(playerid, X, Y, Z);
- SetPlayerFacingAngle(playerid, A);
- ECMD[playerid][10] = gettime() + 60;
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vskin(playerid, params[])
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot to use this feature.");
- else if(GetVipRank(playerid) >= 3)
- {
- if(gettime() > ECMD[playerid][10])
- {
- new SkinID;
- if(sscanf(params, "i", SkinID)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /vskin [ID].");
- if(SkinID > 311 || SkinID < 0) return SendClientMessage(playerid, 0xFF0000FF, "Skins are between 0-311 only.");
- SetPlayerSkin(playerid, SkinID);
- SendClientMessage(playerid, 0xFF00FFFF, "Skin has been changed!");
- ECMD[playerid][11] = gettime() + 60;
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vsavepos(playerid, params[])
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot/in car to use this feature.");
- else if(GetVipRank(playerid) >= 3)
- {
- if(gettime() > ECMD[playerid][10])
- {
- SaveVipPos(playerid);
- ECMD[playerid][12] = gettime() + 60;
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vloadpos(playerid, params[])
- {
- if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT && GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0xFF0000FF, "You must be on foot/in car to use this feature.");
- else if(GetVipRank(playerid) >= 3)
- {
- if(gettime() > ECMD[playerid][10])
- {
- LoadVipPos(playerid);
- ECMD[playerid][13] = gettime() + 60;
- } else return SendClientMessage(playerid, 0xFF0000FF, "You've to wait 60 seconds between each use.");
- } else return SendClientMessage(playerid, 0xFF0000FF, "You don't have enough level to use this feature.");
- return 1;
- }
- CMD:vips(playerid)
- {
- new total = 0, String[128];
- for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
- {
- if(IsPlayerConnected(i) && !IsPlayerNPC(i))
- {
- if(GetVipRank(i) >= 1)
- {
- total++;
- SendClientMessage(playerid, 0xFF00FFFF, "Online Very Important Persons:");
- format(String, sizeof(String), "{%06x}%s (Level: %d)", GetPlayerColor(i) >>> 8, GetName(i), GetVipRank(i));
- SendClientMessage(playerid, GetPlayerColor(i), String);
- }
- }
- }
- if(total == 0) return SendClientMessage(playerid, 0xFF00FFFF, "There are no online Very Important Persons!");
- return 1;
- }
- stock GetVipRank(playerid)
- {
- new Query[180], DBResult: Result, Assoc[5], Viprank = 0;
- format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
- Result = db_query(VDB, Query);
- if(db_num_rows(Result))
- {
- format(Query, sizeof(Query), "SELECT * FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
- Result = db_query(VDB, Query);
- db_get_field_assoc(Result, "VIPRANK", Assoc, 5);
- Viprank = strval(Assoc);
- }
- db_free_result(Result);
- return Viprank;
- }
- stock SaveVipPos(playerid)
- {
- new Query[250], DBResult: Result;
- format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
- Result = db_query(VDB, Query);
- if(db_num_rows(Result))
- {
- new Float:X, Float:Y, Float:Z;
- GetPlayerPos(playerid, X, Y, Z);
- format(Query, sizeof(Query), "UPDATE `VIP` SET X = '%0.2f', Y = '%0.2f', Z = '%0.2f' WHERE PNAME = '%q'", X, Y, Z, GetName(playerid));
- db_query(VDB, Query);
- SendClientMessage(playerid, -1, "Saved the position, use /vloadpos to load it any time.");
- }
- db_free_result(Result);
- return 1;
- }
- stock LoadVipPos(playerid)
- {
- new Query[128], DBResult: Result;
- format(Query, sizeof(Query), "SELECT `PNAME` FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
- Result = db_query(VDB, Query);
- if(db_num_rows(Result))
- {
- new pX[20], pY[20], pZ[20];
- format(Query, sizeof(Query), "SELECT * FROM `VIP` WHERE PNAME = '%q'", GetName(playerid));
- Result = db_query(VDB, Query);
- db_get_field_assoc(Result, "X", pX, 20);
- db_get_field_assoc(Result, "Y", pY, 20);
- db_get_field_assoc(Result, "Z", pZ, 20);
- SetPlayerPos(playerid, strval(pX), strval(pY), strval(pZ));
- SendClientMessage(playerid, -1, "Loaded the last saved position from your records.");
- }
- db_free_result(Result);
- return 1;
- }
- stock GetName(playerid)
- {
- new pName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pName, sizeof(pName));
- return pName;
- }
Advertisement
Add Comment
Please, Sign In to add comment