Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <YSI\y_commands>
- #include <YSI\y_ini>
- #include <YSI\y_foreach>
- #include <sscanf2>
- forward UserDataLoad(playerid, name[], value[]);
- enum player_Information {
- Password[128],
- Kills,
- Deaths,
- AuthLvl,
- Cash,
- CustomSkin,
- Score,
- VIP
- }
- //Setting up the player information (what is inside of the user files, basically)
- new
- cInfo[MAX_PLAYERS][player_Information],
- HealTimer[MAX_PLAYERS] = 0;
- //#define DEBUGMODE
- //Uncomment this if you don't want the debug commands; Recommended to leave commented!
- #define SCRIPT_VERSION "0.1"
- //Supports letters aswell to allow for revisions to be monitored; Example: "0.1 R3"
- #define FLOAT_INFINITY (Float:0x7F800000)
- //Actual infinity - Not 999,999.
- #define USER_DIRECTORY "Accounts/%s.ini"
- //Account directory - Change if needed - Make sure this directory is created!
- #define REGISTER_DIALOG 1
- #define LOGIN_DIALOG 2
- main() {
- printf("[Carson Takeover -- Version %s]", SCRIPT_VERSION);
- }
- public OnGameModeInit() {
- new
- GamemodeText[40];
- //Supports up to 40 characters; Of course, it's easily changeable.
- format(GamemodeText, sizeof(GamemodeText), "V%s", SCRIPT_VERSION);
- SetGameModeText(GamemodeText);
- /* TEAM ONE - POLICE (medic included) */
- AddPlayerClass(282, -216.1157, 977.8385, 19.4922, 268.8744, 0, 0, 31, 100, 33, 150);
- //Police - "Heavy" gunner
- AddPlayerClass(280, -216.1157, 977.8385, 19.4922, 268.8744, 24, 50, 29, 100, 0, 0);
- //Police - "Light" patrol
- AddPlayerClass(275, -319.2993, 1051.0934, 20.3403, 358.0302, 33, 150, 42, 100, 0, 0);
- //Police - Medic
- /* TEAM TWO - INVADERS (medic included) */
- AddPlayerClass(34, -164.6095, 1059.6617, 19.7422, 267.0699, 0, 0, 31, 100, 33, 150);
- //"Rebel" - "Heavy" gunner
- AddPlayerClass(15, -168.0231, 1031.4714, 19.7344, 178.8775, 24, 50, 29, 100, 0, 0);
- //"Rebel" - "Light" invader
- AddPlayerClass(14, -258.9597, 1083.1741, 20.9399, 353.9203, 33, 150, 42, 100, 0, 0);
- //"Rebel" - Medic
- /* VEHICLES FOR THE WHOLE SERVER */
- AddStaticVehicle(598, -211.2230, 994.2327, 19.3020, 89.9457, 0, 1); // LVPD1
- AddStaticVehicle(598, -211.2466, 999.6469, 19.4083, 89.9753, 0, 1); // LVPD2
- AddStaticVehicle(598, -227.3858, 999.4583, 19.3383, 270.2986, 0, 1); // LVPD3
- AddStaticVehicle(598, -227.2980, 993.9480, 19.2911, 270.2558, 0, 1); // LVPD4
- return true;
- }
- public OnGameModeExit() {
- return true;
- }
- public OnPlayerRequestClass(playerid, classid) {
- if(classid == 0) {
- GameTextForPlayer(playerid, "~b~Local Police", 2000, 3);
- SetPlayerPos(playerid, -216.1157,977.8385,19.4922);
- SetPlayerFacingAngle(playerid, 268.8744);
- SetPlayerCameraPos(playerid, -212.6229,977.9282,19.3258);
- SetPlayerCameraLookAt(playerid, -216.5273,978.0528,19.4949);
- SetPVarInt(playerid, "Medic", 0);
- }
- else if(classid == 1) {
- GameTextForPlayer(playerid, "~b~Local Police", 2000, 3);
- SetPlayerPos(playerid, -215.5698,980.6157,19.4947);
- SetPlayerFacingAngle(playerid, 269.9826);
- SetPlayerCameraPos(playerid, -214.0886,980.7875,19.3382);
- SetPlayerCameraLookAt(playerid, -215.5698,980.6157,19.4947);
- SetPVarInt(playerid, "Medic", 0);
- }
- else if(classid == 2) { //medic
- GameTextForPlayer(playerid, "~b~Local Police", 2000, 3);
- SetPlayerPos(playerid, -319.2871,1051.4486,20.3403);
- SetPlayerFacingAngle(playerid, 358.0302);
- SetPlayerCameraPos(playerid, -319.5100,1056.7614,19.7422);
- SetPlayerCameraLookAt(playerid,-319.2871,1051.4486,20.3403);
- SetPVarInt(playerid, "Medic", 1);
- }
- else if(classid == 3) {
- GameTextForPlayer(playerid, "~r~Invaders", 2000, 3);
- SetPlayerPos(playerid, -164.6095,1059.6617,19.7422);
- SetPlayerFacingAngle(playerid, 267.0699);
- SetPlayerCameraPos(playerid, -160.0465,1059.4253,19.7596);
- SetPlayerCameraLookAt(playerid,-164.6095,1059.6617,19.7422);
- SetPVarInt(playerid, "Medic", 0);
- }
- else if(classid == 4) {
- GameTextForPlayer(playerid, "~r~Invaders", 2000, 3);
- SetPlayerPos(playerid, -168.0231,1031.4714,19.7344);
- SetPlayerFacingAngle(playerid, 178.8775);
- SetPlayerCameraPos(playerid, -168.2652,1026.6465,19.7344);
- SetPlayerCameraLookAt(playerid, -168.0231,1031.4714,19.7344);
- SetPVarInt(playerid, "Medic", 0);
- }
- else if(classid == 5) { //medic
- GameTextForPlayer(playerid, "~r~Invaders", 2000, 3);
- SetPlayerPos(playerid, -258.9597,1083.1741,20.9399);
- SetPlayerFacingAngle(playerid, 353.9203);
- SetPlayerCameraPos(playerid, -258.7643,1086.7354,19.8927);
- SetPlayerCameraLookAt(playerid,-258.9597,1083.1741,20.9399);
- SetPVarInt(playerid, "Medic", 1);
- }
- return true;
- }
- public OnPlayerConnect(playerid) {
- new
- player_Name[MAX_PLAYER_NAME],
- uFile[50];
- GetPlayerName(playerid, player_Name, sizeof(player_Name));
- format(uFile, 50, USER_DIRECTORY, player_Name);
- if(!fexist(uFile))
- {
- ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_INPUT, "Welcome!", "You do not appear to have an account on this server!\nPlease register by typing in your password below:", "Submit", "Quit");
- }
- else
- {
- ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_INPUT, "Welcome back!", "You appear to have an account on this server!\nPlease login by typing in your password below:", "Submit", "Quit");
- }
- return true;
- }
- public OnPlayerDisconnect(playerid, reason) {
- if(GetPVarInt(playerid, "Logged") == 1) {
- new
- uFile[50],
- player_Name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, player_Name, sizeof(player_Name));
- format(uFile, 50, USER_DIRECTORY, player_Name);
- new
- INI:playerFile = INI_Open(uFile);
- INI_WriteInt(playerFile, "Authorization", cInfo[playerid][AuthLvl]);
- INI_WriteInt(playerFile, "VIP", cInfo[playerid][VIP]);
- INI_WriteInt(playerFile, "Cash", GetPlayerMoney(playerid));
- INI_WriteInt(playerFile, "Score", GetPlayerScore(playerid));
- INI_WriteInt(playerFile, "Kills", cInfo[playerid][Kills]);
- INI_WriteInt(playerFile, "Skin", cInfo[playerid][CustomSkin]);
- INI_WriteInt(playerFile, "Deaths", cInfo[playerid][Deaths]);
- INI_Close(playerFile);
- }
- return true;
- }
- public OnPlayerSpawn(playerid) {
- if(cInfo[playerid][CustomSkin] != 0) {
- SetPlayerSkin(playerid, cInfo[playerid][CustomSkin]);
- SendClientMessage(playerid, -1, "{FFFFFF}Custom skin has been set.");
- }
- return true;
- }
- public OnPlayerDeath(playerid, killerid, reason) {
- return true;
- }
- public OnVehicleSpawn(vehicleid) {
- return true;
- }
- public OnVehicleDeath(vehicleid, killerid) {
- return true;
- }
- public OnPlayerText(playerid, text[]) {
- return true;
- }
- public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger) {
- return true;
- }
- public OnPlayerExitVehicle(playerid, vehicleid) {
- return true;
- }
- public OnPlayerStateChange(playerid, newstate, oldstate) {
- return true;
- }
- public OnPlayerEnterCheckpoint(playerid) {
- return true;
- }
- public OnPlayerLeaveCheckpoint(playerid) {
- return true;
- }
- public OnPlayerEnterRaceCheckpoint(playerid) {
- return true;
- }
- public OnPlayerLeaveRaceCheckpoint(playerid) {
- return true;
- }
- public OnRconCommand(cmd[]) {
- return true;
- }
- public OnPlayerRequestSpawn(playerid) {
- return true;
- }
- public OnObjectMoved(objectid) {
- return true;
- }
- public OnPlayerObjectMoved(playerid, objectid) {
- return true;
- }
- public OnPlayerPickUpPickup(playerid, pickupid) {
- return true;
- }
- public OnVehicleMod(playerid, vehicleid, componentid) {
- return true;
- }
- public OnVehiclePaintjob(playerid, vehicleid, paintjobid) {
- return true;
- }
- public OnVehicleRespray(playerid, vehicleid, color1, color2) {
- return true;
- }
- public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid) {
- return true;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) {
- return true;
- }
- public OnRconLoginAttempt(ip[], password[], success) {
- return true;
- }
- public OnPlayerUpdate(playerid) {
- return true;
- }
- public OnPlayerStreamIn(playerid, forplayerid) {
- return true;
- }
- public OnPlayerStreamOut(playerid, forplayerid) {
- return true;
- }
- public OnVehicleStreamIn(vehicleid, forplayerid) {
- return true;
- }
- public OnVehicleStreamOut(vehicleid, forplayerid) {
- return true;
- }
- public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
- switch(dialogid) {
- case REGISTER_DIALOG: {
- if(response) {
- if(strlen(inputtext) <= 128) {
- return OnPlayerRegister(playerid, inputtext);
- }
- else {
- ShowPlayerDialog(playerid, REGISTER_DIALOG, DIALOG_STYLE_INPUT, "Welcome!", "You do not appear to have an account on this server!\nPlease register by typing in your password below:", "Submit", "Quit");
- }
- }
- else return Kick(playerid);
- }
- case LOGIN_DIALOG: {
- if(response) {
- new
- uFile[50],
- player_Name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, player_Name, sizeof(player_Name));
- format(uFile, 50, USER_DIRECTORY, player_Name);
- INI_ParseFile(uFile, "UserDataLoad", .bExtra = true, .extra = playerid);
- new string[128];
- format(string, sizeof(string), "%s", inputtext);
- if(strcmp(string, cInfo[playerid][Password], true) == 0) {
- new
- Year, Month, Day,
- Hour, Minute, Second;
- //printf("inputtext: %s", string);
- getdate(Year, Month, Day);
- gettime(Hour, Minute, Second);
- printf("<User:%s> Logged in. [%d/%d/%d @ %d:%d]", player_Name, Month, Day, Year, Hour, Minute);
- SetPVarInt(playerid, "Logged", 1);
- return true;
- }
- else return ShowPlayerDialog(playerid, LOGIN_DIALOG, DIALOG_STYLE_INPUT, "Welcome back!", "You appear to have an account on this server!\nPlease login by typing in your password below:", "Submit", "Quit");
- }
- else Kick(playerid);
- return 0;
- }
- }
- return true;
- }
- public OnPlayerClickPlayer(playerid, clickedplayerid, source) {
- return true;
- }
- /* SSCANF SPECIFIERS | COMMANDS BELOW!
- - Y_Less
- SPECIFIER | NAME | EXAMPLE
- ______________________________________________________________________
- i, d | Integer | 1, 42, -10
- c | Character | a, o, *
- l | Logical | true, false
- b | Binary | 01001, 0b1100
- h, x | Hex | 1A, 0x23
- o | Octal | 045 12
- n | Number | 42, 0b010, 0xAC, 045
- f | Float | 0.7, -99.5
- g | IEEE Float | 0.7, -99.5, INFINITY, -INFINITY, NAN
- u | User name/id | Y_Less, 0
- q | Bot name/id | ShopBot, 27
- r | Player name/id| Y_Less, 42
- _______________________________________________________________________
- http://forum.sa-mp.com/showthread.php?t=120356 */
- CMD:spawnvehicle(playerid, params[])
- {
- new
- ModelID,
- Float:Pos[4],
- Vehicle,
- C1, C2;
- if(sscanf(params, "iI(-1)I(-1)", ModelID, C1, C2))
- return SendClientMessage(playerid, -1, "{FFFFFF}Usage: /spawnvehicle [model id]");
- if(cInfo[playerid][AuthLvl] >= 2) {
- GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
- GetPlayerFacingAngle(playerid, Pos[3]);
- Vehicle = CreateVehicle(ModelID, Pos[0], Pos[1], Pos[2], Pos[3], C1, C2, -1);
- PutPlayerInVehicle(playerid, Vehicle, 0);
- }
- return true;
- }
- CMD:restart(playerid, params[])
- {
- #pragma unused params
- #pragma unused playerid
- new
- uFile[50],
- player_Name[MAX_PLAYER_NAME];
- if(cInfo[playerid][AuthLvl] >= 3) {
- foreach(Player, i)
- {
- GetPlayerName(i, player_Name, sizeof(player_Name));
- format(uFile, 50, USER_DIRECTORY, player_Name);
- new
- INI:playerFile = INI_Open(uFile);
- INI_WriteInt(playerFile, "Authorization", cInfo[i][AuthLvl]);
- INI_WriteInt(playerFile, "VIP", cInfo[i][VIP]);
- INI_WriteInt(playerFile, "Cash", GetPlayerMoney(i));
- INI_WriteInt(playerFile, "Score", GetPlayerScore(i));
- INI_WriteInt(playerFile, "Kills", cInfo[i][Kills]);
- INI_WriteInt(playerFile, "Skin", cInfo[i][CustomSkin]);
- INI_WriteInt(playerFile, "Deaths", cInfo[i][Deaths]);
- printf("<User: System> Saved ID %d", i);
- INI_Close(playerFile);
- }
- GameModeExit();
- }
- else return SendClientMessage(playerid, -1, "Invalid Authorization Level.");
- return true;
- }
- CMD:heal(playerid, params[]) {
- #pragma unused params
- if(GetPVarInt(playerid, "Medic") == 1) {
- if(HealTimer[playerid] == 0) {
- new
- Float:Health;
- GetPlayerHealth(GetClosestPlayer(playerid, 3), Health);
- if(Health <= 80) {
- SetPlayerHealth(GetClosestPlayer(playerid, 3), Health+20);
- SetTimerEx("HealPlayer", 15000, 0, "i", playerid);
- HealTimer[playerid] = 1;
- if(GetClosestPlayer(playerid, 3) == -1) { SendClientMessage(playerid, -1, "Nobody's close enough to be healed!"); }
- }
- else return SendClientMessage(playerid, -1, "They have too much health to be healed!");
- }
- else return SendClientMessage(playerid, -1, "Please wait 15 seconds!");
- }
- else return SendClientMessage(playerid, -1, "You're not a medic!");
- return true;
- }
- CMD:sethealth(playerid, params[]) {
- new
- Health,
- Player;
- if(cInfo[playerid][AuthLvl] >= 1) {
- if(sscanf(params, "ui", Player, Health))
- return SendClientMessage(playerid, -1, "Usage: /sethealth [playerid] [amount of health]");
- SetPlayerHealth(Player, Health);
- }
- else return SendClientMessage(playerid, -1, "Invalid Authorization Level.");
- return true;
- }
- CMD:setarmour(playerid, params[]) {
- new
- Armour,
- Player;
- if(cInfo[playerid][AuthLvl] >= 1) {
- if(sscanf(params, "ui", Player, Armour))
- return SendClientMessage(playerid, -1, "Usage: /setarmour [playerid] [amount of armour]");
- SetPlayerArmour(Player, Armour);
- }
- else return SendClientMessage(playerid, -1, "Invalid Authorization Level.");
- return true;
- }
- CMD:kick(playerid, params[]) {
- new
- Player,
- Reason[50],
- string[128];
- if(cInfo[playerid][AuthLvl] >= 1) {
- if(sscanf(params, "us[128]", Player, Reason))
- return SendClientMessage(playerid, -1, "Usage: /kick [playerid] [reason]");
- new
- admin_Name[MAX_PLAYER_NAME],
- player_Name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, admin_Name, sizeof(admin_Name));
- GetPlayerName(Player, player_Name, sizeof(player_Name));
- if(strlen(Reason) > 50)
- return SendClientMessage(playerid, -1, "\"Reason\" parameter too long! Keep it below 50 characters!");
- format(string, sizeof(string), "<ACMD> Administrator %s has booted %s from the server, Reason: %s", admin_Name, player_Name, Reason);
- SendClientMessageToAll(-1, string);
- Kick(Player);
- }
- else return SendClientMessage(playerid, -1, "Invalid Authorization Level.");
- return true;
- }
- CMD:ban(playerid, params[]) {
- new
- Player,
- Reason[50],
- string[128];
- if(cInfo[playerid][AuthLvl] >= 2) {
- if(sscanf(params, "us[128]", Player, Reason))
- return SendClientMessage(playerid, -1, "Usage: /ban [playerid] [reason]");
- new
- admin_Name[MAX_PLAYER_NAME],
- player_Name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, admin_Name, sizeof(admin_Name));
- GetPlayerName(Player, player_Name, sizeof(player_Name));
- if(strlen(Reason) > 50)
- return SendClientMessage(playerid, -1, "\"Reason\" parameter too long! Keep it below 50 characters!");
- format(string, sizeof(string), "<ACMD> Administrator %s has banned %s from the server, Reason: %s", admin_Name, player_Name, Reason);
- SendClientMessageToAll(-1, string);
- BanEx(Player, Reason);
- }
- else return SendClientMessage(playerid, -1, "Invalid Authorization Level.");
- return true;
- }
- #if defined DEBUGMODE //Debug commands!
- CMD:getinfo(playerid, params[]) {
- #pragma unused params
- new
- string[128],
- Float:Position[4];
- GetPlayerPos(playerid, Position[0], Position[1], Position[2]);
- GetPlayerFacingAngle(playerid, Position[3]);
- format(string, sizeof(string), "{FFFFFF}XPos: %f, YPos: %f, ZPos: %f, FPos: %f, Int: %d, VW: %d", Position[0], Position[1], Position[2], Position[3], GetPlayerInterior(playerid), GetPlayerVirtualWorld(playerid));
- SendClientMessage(playerid, -1, string);
- return true;
- }
- CMD:a(playerid, params[])
- {
- #pragma unused params
- return cInfo[playerid][AuthLvl] = 5;
- }
- #endif
- OnPlayerRegister(playerid, password[]) {
- new
- uFile[50],
- player_Name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, player_Name, sizeof(player_Name));
- format(uFile, 50, USER_DIRECTORY, player_Name);
- new
- INI:playerFile = INI_Open(uFile);
- INI_WriteString(playerFile, "Password", password);
- INI_WriteInt(playerFile, "Authorization", 0);
- INI_WriteInt(playerFile, "VIP", 0);
- INI_WriteInt(playerFile, "Cash", 1);
- INI_WriteInt(playerFile, "Skin", 0);
- INI_WriteInt(playerFile, "Score", 0);
- INI_WriteInt(playerFile, "Kills", 0);
- INI_WriteInt(playerFile, "Deaths", 0);
- INI_Close(playerFile);
- SetPVarInt(playerid, "Logged", 1);
- return true;
- }
- public UserDataLoad(playerid,name[],value[]) {
- INI_String("Password", cInfo[playerid][Password], 128);
- INI_Int("Authorization", cInfo[playerid][AuthLvl]);
- INI_Int("VIP", cInfo[playerid][VIP]);
- INI_Int("Cash", cInfo[playerid][Cash]);
- INI_Int("Skin", cInfo[playerid][CustomSkin]);
- INI_Int("Score", cInfo[playerid][Score]);
- INI_Int("Kills", cInfo[playerid][Kills]);
- INI_Int("Deaths", cInfo[playerid][Deaths]);
- return true;
- }
- forward HealPlayer(playerid);
- public HealPlayer(playerid) {
- HealTimer[playerid] = 0;
- return true;
- }
- stock IsNumeric(const string[]) {
- for (new i = 0, j = strlen(string); i < j; i++)
- {
- if (string[i] > '9' || string[i] < '0') return 0;
- }
- return true;
- }
- stock Float:GetDistanceBetweenPoints(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2) {
- x1 -= x2;
- y1 -= y2;
- z1 -= z2;
- return floatsqroot((x1 * x1) + (y1 * y1) + (z1 * z1));
- }
- stock GetClosestPlayer(playerid,Float:limit) { //By cessil
- new Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2;
- GetPlayerPos(playerid,x1,y1,z1);
- new Float:Range = 999.9;
- new id = -1;
- foreach(Player,i)
- {
- if(playerid != i)
- {
- GetPlayerPos(i,x2,y2,z2);
- new Float:Dist = GetDistanceBetweenPoints(x1,y1,z1,x2,y2,z2);
- if(floatcmp(Range,Dist) == 1 && floatcmp(limit,Range) == 1)
- {
- Range = Dist;
- id = i;
- }
- }
- }
- return id;
- }
Advertisement
Add Comment
Please, Sign In to add comment