30.01.2012, 13:10
Here it is...
Код:
// Player commands filterscript by Superthijs. // Contains the /ADMINMSG, /CMDLIST, /GETDISTANCE, /SETCOLORS, /PAY, /PM, // /SUICIDE, /REPAIR and /RQPAY commands. #define FILTERSCRIPT #include <a_samp> #include "../include/sscanf.inc" public OnPlayerCommandText(playerid, cmdtext[]) { new cmd[256], params[256]; sscanf(cmdtext, "ss", cmd, params); // Send a message to all admin players if(!strcmp(cmd, "/ADMINMSG", true)) { new Message[256]; if(sscanf(params, "s", Message)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/ADMINMSG{FFFF00}: Usage: {FF4040}/ADMINMSG [message]"); new SenderName[MAX_PLAYER_NAME]; GetPlayerName(playerid, SenderName, sizeof(SenderName)); new String[1024]; format(String, sizeof(String), "{00BBFF}Message from {FF40FF}%s {00BBFF}to all admin players: {FFFFFF}%s", SenderName, Message); for(new i; i < MAX_PLAYERS; i = i + 1) { if(IsPlayerConnected(i) == 0) continue; if(IsPlayerAdmin(i) == 0) continue; // if(i == playerid) continue; SendClientMessage(i, 0xFFFFFFFF, String); } format(String, sizeof(String), "{FF0000}/ADMINMSG{FFFF00}: Message sent to all admins: {FFFFFF}%s", Message); SendClientMessage(playerid, 0xFFFFFFFF, String); return 1; } // Retrieve a list of commands if(!strcmp(cmdtext, "/FF0000LIST", true)) { SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/FF0000LIST /GETDISTANCE /PAY /PM /REPAIR /RQPAY /SETCOLORS /SUICIDE"); return 1; } // Get the distance (in meters) between the current player and another one if(!strcmp(cmd, "/GETDISTANCE", true)) { new TargetID; if(sscanf(params, "d", TargetID)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/GETDISTANCE{FFFF00}: Usage: {FF4040}/GETDISTANCE [player ID]"); if(IsPlayerConnected(TargetID) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/GETDISTANCE{FFFF00}: Invalid player ID."); if(TargetID == playerid) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/GETDISTANCE{FFFF00}: You cannot get the distance to yourself."); new Float:X1, Float:X2, Float:Y1, Float:Y2, Float:Z1, Float:Z2, Float:Distance; GetPlayerPos(playerid, X1, Y1, Z1); GetPlayerPos(TargetID, X2, Y2, Z2); X1 = X1 - X2; Y1 = Y1 - Y2; Z1 = Z1 - Z2; Distance = floatsqroot((X1 * X1) + (Y1 * Y1) + (Z1 * Z1)); Distance = floatround(Distance, floatround_round); new TargetName[MAX_PLAYER_NAME]; GetPlayerName(TargetID, TargetName, sizeof(TargetName)); new String[1024]; format(String, sizeof(String), "{FF0000}/GETDISTANCE{FFFF00}: You are {00FFFF}%f {FFFF00}meters away from {NAME}%s{FFFF00}.", Distance, TargetName); SendClientMessage(playerid, 0xFFFFFFFF, String); return 1; } // Set the colors of the current vehicle if(!strcmp(cmd, "/SETCOLORS", true)) { new Color1, Color2; if(sscanf(params, "dd", Color1, Color2)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/SETCOLORS{FFFF00}: Usage: {FF4040}/SETCOLORS [color 1] [color 2]"); if(IsPlayerInAnyVehicle(playerid) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/SETCOLORS{FFFF00}: You are not in a vehicle."); if(Color1 < 0 || Color1 > 255 || Color2 < 0 || Color2 > 255) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/SETCOLORS{FFFF00}: Invalid color ID."); ChangeVehicleColor(GetPlayerVehicleID(playerid), Color1, Color2); new String[1024]; format(String, sizeof(String), "{FF0000}/SETCOLORS{FFFF00}: You have changed the colors of your vehicle to {MONEY}%d %d{FFFF00}.", Color1, Color2); SendClientMessage(playerid, 0xFFFFFFFF, String); return 1; } // Pay another player if(!strcmp(cmd, "/PAY", true)) { new player; new amount; new money = GetPlayerMoney(playerid); if(sscanf(params, "dd", player, amount)) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: Usage: {FF4040}/PAY [player ID] [amount]{FFFF00}."); if(IsPlayerConnected(player)==0) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: Invalid player ID."); if(player == playerid) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: You cannot pay yourself."); if(amount < 1) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: Invalid amount."); if(money - amount < 0) return SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/PAY{FFFF00}: You do not have enough money."); GivePlayerMoney(player,amount); GivePlayerMoney(playerid,-amount); new name[MAX_PLAYER_NAME]; new sendername[MAX_PLAYER_NAME]; GetPlayerName(player,name,sizeof(name)); GetPlayerName(playerid,sendername,sizeof(sendername)); new String[1024]; format(String,sizeof(String),"{FF0000}/PAY{FFFF00}: You have paid {00FFFF}$%d {FFFF00}to {FF40FF}%s{FFFF00}.", amount, name); SendClientMessage(playerid,0xFFFFFFFF,String); format(String,sizeof(String),"{FF40FF}%s {FFFF00}has paid you {00FFFF}$%d{FFFF00}.", sendername, amount); SendClientMessage(player,0xFFFFFFFF,String); return 1; } // Send a PM to another player if(!strcmp(cmd, "/PM", true)) { new TargetID, PM[256]; if(sscanf(params, "ds", TargetID, PM)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/PM{FFFF00}: Usage: {FF4040}/PM [player ID] [message]"); if(IsPlayerConnected(TargetID) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/PM{FFFF00}: Invalid player ID."); if(TargetID == playerid) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/PM{FFFF00}: You cannot PM yourself."); new SenderName[MAX_PLAYER_NAME]; GetPlayerName(playerid, SenderName, sizeof(SenderName)); new String[1024]; format(String, sizeof(String), "{FFFF00}PM from {FF40FF}%s{FFFF00}: {FFFFFF}%s", SenderName, PM); SendClientMessage(TargetID, 0xFFFFFFFF, String); new TargetName[MAX_PLAYER_NAME]; GetPlayerName(TargetID, TargetName, sizeof(TargetName)); format(String, sizeof(String), "{FF0000}/PM{FFFF00}: PM sent to {FF40FF}%s{FFFF00}: {FFFFFF}%s", TargetName, PM); SendClientMessage(playerid, 0xFFFFFFFF, String); return 1; } // Kill the current player if(!strcmp(cmdtext, "/SUICIDE", true)) { SetPlayerHealth(playerid,0); SendClientMessage(playerid,0xFFFFFFFF,"{FF0000}/SUICIDE{FFFF00}: You have killed yourself."); return 1; } // Repair the current vehicle if(!strcmp(cmdtext, "/REPAIR", true)) { if(IsPlayerInAnyVehicle(playerid) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/REPAIR{FFFF00}: You are not in a vehicle."); new Float:VehicleHealth; GetVehicleHealth(GetPlayerVehicleID(playerid), VehicleHealth); if(VehicleHealth == 1000) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/REPAIR{FFFF00}: Your vehicle does not need repair."); new Bill = floatround((1000 - VehicleHealth) / 10, floatround_round); if(Bill == 0) Bill = 1; new String[1024]; if(GetPlayerMoney(playerid) - Bill < 0) { format(String, sizeof(String), "{FF0000}/REPAIR{FFFF00}: With the current vehicle state, you need at least {00FFFF}$%d{FFFF00}.", Bill); SendClientMessage(playerid, 0xFFFFFFFF, String); return 1; } RepairVehicle(GetPlayerVehicleID(playerid)); GivePlayerMoney(playerid, 0 - Bill); format(String, sizeof(String), "{FF0000}/REPAIR{FFFF00}: You have repaired your vehicle, {00FFFF}-$%d{FFFF00}.", Bill); SendClientMessage(playerid, 0xFFFFFFFF, String); SetPVarInt(playerid, "MoneySpentOnVehicleRepair", GetPVarInt(playerid, "MoneySpentOnVehicleRepair") + Bill); return 1; } // Request another player to pay you if(!strcmp(cmd, "/RQPAY", true)) { new TargetID, Amount; if(sscanf(params, "dd", TargetID, Amount)) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: Usage: {FF4040}/RQPAY [player ID] [amount]"); if(IsPlayerConnected(TargetID) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: Invalid player ID."); if(TargetID == playerid) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: You cannot send a payment request to yourself."); if(Amount < 1) return SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}/RQPAY{FFFF00}: Invalid amount."); new TargetName[MAX_PLAYER_NAME]; GetPlayerName(TargetID, TargetName, sizeof(TargetName)); new String[1024]; format(String, sizeof(String), "{FF0000}/RQPAY{FFFF00}: You have requested {FF40FF}%s {FFFF00}to pay you {00FFFF}$%d{FFFF00}.", TargetName, Amount); SendClientMessage(playerid, 0xFFFFFFFF, String); new SenderName[MAX_PLAYER_NAME]; GetPlayerName(playerid, SenderName, sizeof(SenderName)); format(String, sizeof(String), "{FF40FF}%s {FFFF00}has requested you to pay {00FFFF}$%d{FFFF00}.", SenderName, Amount); SendClientMessage(TargetID, 0xFFFFFFFF, String); return 1; } return 0; }