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;
}