Thanks so much Om3N. That script worked. Given you reputation.
I got another filterscript, was trying to make a stats command but it doesn't have any enums. How to make it with this
pawn Код:
#include <a_samp>
#include <sscanf2>
#include <zcmd>
#include <dudb>
#include <dini>
#pragma unused ret_memcpy
//Files
#define USER_FILE "accounts\\%s.ini"
//Colors
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_RED 0xFF0000AA
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_SUCCESS 0x81F79FFF
#define COLOR_REPORT 0xFFCC66AA
#define COLOR_GRAY 0x999999AA
#define COLOR_LIGHTBLUE 0x33CCFFAA
#define COLOR_TEAL 0x81BEF7FF
//Variables
new PlayerMuted[MAX_PLAYERS];
public OnFilterScriptInit()
{
print("\n--------------------------------------------");
print(" Login/Admin System By austin070 Loaded");
print("--------------------------------------------\n");
return 1;
}
public OnPlayerConnect(playerid)
{
new file[128];
format(file, sizeof(file), USER_FILE, GetPName(playerid));
if(dini_Int(file, "Banned")== 1) {
SendClientMessage(playerid, COLOR_TEAL, "You are banned from this server.");
}
if(fexist(file)) {
ShowLogin(playerid);
}else {
ShowRegister(playerid);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new Float:X, Float:Y, Float:Z;
new file[128]; format(file, 128, USER_FILE, GetPName(playerid));
if(fexist(file)) {
GetPlayerPos(playerid, X, Y, Z);
dini_FloatSet(file, "LastX", X);
dini_FloatSet(file, "LastY", Y);
dini_FloatSet(file, "LastZ", Z);
dini_IntSet(file, "Cash", GetPlayerMoney(playerid));
}
return 1;
}
public OnPlayerUpdate(playerid)
{
return 1;
}
public OnPlayerSpawn(playerid)
{
new file[128];
new name[MAX_PLAYER_NAME];
new str1[128];
format(file, sizeof(file), USER_FILE, GetPName(playerid));
if(fexist(file)) {
SetPlayerPos(playerid, dini_Float(file, "LastX"),dini_Float(file, "LastY"),dini_Float(file, "LastZ"));
SetCameraBehindPlayer(playerid);
GivePlayerMoney(playerid, dini_Int(file, "Cash"));
format(str1, 128, "Welcome %s, your stats have been successfully restored.", name);
SendClientMessage(playerid, COLOR_WHITE, str1);
}
return 1;
}
public OnRconLoginAttempt(ip[], password[],success)
{
if(success)
{
new eyep[16];
for(new i=0; i<MAX_PLAYERS; i++)
{
GetPlayerIp(i, eyep, sizeof(eyep));
if(strcmp(ip, eyep, true) == 0)
{
SetAdminLevel(i, 5);
}
}
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
switch(dialogid)
{
case 1:
{
if(!response) return Kick(playerid);
new file[128];
format(file, 128, USER_FILE, GetPName(playerid));
if(!strlen(inputtext)) return ShowLogin(playerid);
if(udb_hash(inputtext) !=dini_Int(file, "Password")) {
ShowLogin(playerid);
SendClientMessage(playerid, COLOR_RED, "Incorrect Password.");
return ShowLogin(playerid);
}
SendClientMessage(playerid, COLOR_YELLOW, "You have successfully logged in!");
SetPlayerColor(playerid, COLOR_WHITE);
}
case 2:
{
if(!response) return Kick(playerid);
new name[MAX_PLAYER_NAME], file[128], string[128];
format(file, 128, USER_FILE, GetPName(playerid));
if(!strlen(inputtext)) return ShowRegister(playerid);
dini_Create(file);
dini_Set(file, "Name", GetPName(playerid));
dini_IntSet(file, "Password", udb_hash(inputtext));
dini_IntSet(file, "LastInt", 0);
dini_IntSet(file, "AdminLevel", 0);
format(string, 128, "Registration successfull |Account Name: %s | Password: %s |", name, inputtext);
SendClientMessage(playerid, COLOR_SUCCESS, string);
SetPlayerColor(playerid, COLOR_WHITE);
}
}
return 1;
}
public OnPlayerText(playerid, text[])
{
if(PlayerMuted[playerid] == 1) {
SendClientMessage(playerid, COLOR_RED, "You are muted!");
return 0;
}
return 1;
}
ShowLogin(playerid)
{
new str1[128];
new name[MAX_PLAYER_NAME];
format(str1, 128, "{FFFFFF}Welcome to TwD Freeroam\n\n{DDCA22}Account:{FFFFFF} %s\n\nPlease Enter Your Password Below", name);
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_PASSWORD, "Login", str1, "Login", "");
return 1;
}
ShowRegister(playerid)
{
new str1[128];
new name[MAX_PLAYER_NAME];
format(str1, 128, "{FFFFFF}Welcome to TwD Freeroam\n\n{DDCA22}Account:{FFFFFF} %s\n\nChoose a password to register this account", name);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Registration", str1, "Register", "");
SendClientMessage(playerid, COLOR_TEAL,"Welcome to Gold's Freeroam");
SendClientMessage(playerid, COLOR_YELLOW, "For automatic generated help, please type /help");
return 1;
}
GetPName(playerid)
{
new PlayerName[MAX_PLAYER_NAME];
GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
return PlayerName;
}
GetAdminLevel(playerid)
{
new file[128]; format(file, 128, USER_FILE, GetPName(playerid));
return dini_Int(file, "AdminLevel");
}
stock SetAdminLevel(playerid, level)
{
new file[128];
format(file, sizeof(file), USER_FILE, GetPName(playerid));
return dini_IntSet(file, "AdminLevel", level);
}
/* ADMIN SYSTEM
LEVELS GO FROM 1-5
*/
CMD:report(playerid, params[])
{
new str[50];
if(sscanf(params, "s[50]", str)== 0) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /report [text]");
SendClientMessage(playerid, COLOR_YELLOW, "Your report has been sent to any online admins.");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(GetAdminLevel(i)>= 1 || IsPlayerAdmin(i))
{
format(str, sizeof(str), "[REPORT] %s: %s", GetPName(playerid), params);
SendClientMessage(i, COLOR_REPORT, str);
}
}
return 1;
}
CMD:acmds(playerid, params[])
{
if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, COLOR_WHITE, "LEVEL 1");
SendClientMessage(playerid, COLOR_GRAY, "/respawncar /goto /gethere /apm /repair /freeze /unfreeze /mute /unmute");
}
if(GetAdminLevel(playerid) >=2 || IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, COLOR_WHITE, "LEVEL 2");
SendClientMessage(playerid, COLOR_GRAY, "/disarm /vrespawn /veh /kick /givemoney");
}
if(GetAdminLevel(playerid) >=3 || IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, COLOR_WHITE, "LEVEL 3");
SendClientMessage(playerid, COLOR_GRAY, "/ban /akill");
}
if(GetAdminLevel(playerid) >=4 || IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, COLOR_WHITE, "LEVEL 4");
SendClientMessage(playerid, COLOR_GRAY, "/sethp");
}
if(GetAdminLevel(playerid) >=5 || IsPlayerAdmin(playerid))
{
SendClientMessage(playerid, COLOR_WHITE, "LEVEL 5");
SendClientMessage(playerid, COLOR_GRAY, "/adminlevel /restart");
}
return 1;
}
//LEVEL 1
CMD:spectate(playerid, params[])
{
new giveplayerid, str[128];
if(GetAdminLevel(playerid) >=1) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /spectate [playerid]");
PlayerSpectatePlayer(playerid, giveplayerid);
format(str, 128, "You are now spectating %s.", GetPName(giveplayerid));
}
return 1;
}
CMD:respawncar(playerid, params[])
{
new vid;
if(GetAdminLevel(playerid) >= 1) {
if(sscanf(params, "i", vid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /respawncar [VIN]");
new bool:unwanted[MAX_VEHICLES];
for(new player=0; player<MAX_PLAYERS; player++)
{
if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
}
for(new i = 1; i <MAX_VEHICLES; i++)
{
if(!unwanted[i]) SetVehicleToRespawn(i);
}
}
return 1;
}
CMD:goto(playerid, params[])
{
if(GetAdminLevel(playerid) >= 1) {
new Float:x, Float:y, Float:z, Float:a, giveplayerid;
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /goto [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
GetPlayerPos(giveplayerid, x, y, z);
GetPlayerFacingAngle(giveplayerid, a);
SetPlayerPos(playerid, x-1, y-1, z);
SetPlayerFacingAngle(playerid, a);
}
return 1;
}
CMD:gethere(playerid, params[])
{
if(GetAdminLevel(playerid) >= 1) {
new Float:x, Float:y, Float:z, Float:a, giveplayerid;
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /gethere [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
GetPlayerPos(playerid, x, y, z);
GetPlayerFacingAngle(playerid, a);
SetPlayerPos(giveplayerid, x-1, y-1, z);
SetPlayerFacingAngle(giveplayerid, a);
}
return 1;
}
CMD:apm(playerid, params[])
{
if(GetAdminLevel(playerid) >= 1) {
new str1[128],str[128], giveplayerid;
if(sscanf(params, "us[50]", giveplayerid, str)== 0) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /apm [playerid] [text]");
if(!IsPlayerConnected(giveplayerid)) return 1;
format(str1, sizeof(str1), "PM from Administration: %s", params[2]);
format(str, sizeof(str), "(ADMININFO) {FFFF00}Your admin PM was sent to %i", strval(params));
SendClientMessage(giveplayerid, COLOR_REPORT, str1);
SendClientMessage(playerid, COLOR_WHITE, str);
}
return 1;
}
CMD:repair(playerid, params[])
{
if(GetAdminLevel(playerid) >= 1) {
if(IsPlayerInAnyVehicle(playerid)) {
SetVehicleHealth(GetPlayerVehicleID(playerid), 1000);
RepairVehicle(GetPlayerVehicleID(playerid));
SendClientMessage(playerid, COLOR_YELLOW, "You have repaired your vehicle.");
}
}
return 1;
}
CMD:freeze(playerid, params[])
{
new giveplayerid, str[128];
if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /freeze [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
format(str, 128, "You have frozen %s.", GetPName(giveplayerid));
SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been frozen by an administrator.");
TogglePlayerControllable(giveplayerid, 0);
}
return 1;
}
CMD:unfreeze(playerid, params[])
{
new giveplayerid, str[128];
if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unfreeze [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
format(str, 128, "You have unfrozen %s.", GetPName(giveplayerid));
SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been unfrozen by an administrator.");
TogglePlayerControllable(giveplayerid, 1);
}
return 1;
}
CMD:mute(playerid, params[])
{
new giveplayerid, str[128];
if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /mute [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
if(PlayerMuted[giveplayerid] == 0) {
PlayerMuted[giveplayerid] = 1;
format(str, 128, "You have muted %s.", GetPName(giveplayerid));
SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been muted by an administrator.");
}else {
SendClientMessage(playerid, COLOR_RED, "Player is already muted!");
}
}
return 1;
}
CMD:unmute(playerid, params[])
{
new giveplayerid, str[128];
if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /unmute [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
if(PlayerMuted[giveplayerid] == 1) {
PlayerMuted[giveplayerid] = 0;
format(str, 128, "You have unmuted %s.", GetPName(giveplayerid));
SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been unmuted by an administrator.");
}else {
SendClientMessage(playerid, COLOR_RED, "Player is not muted!");
}
}
return 1;
}
CMD:a(playerid, params[])
{
new str[50];
if(GetAdminLevel(playerid) >=1 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "s[50]", str)== 0) SendClientMessage(playerid, COLOR_WHITE, "USAGE: /a [announcement]");
SendClientMessageToAll(COLOR_RED, params);
}
return 1;
}
//LEVEL 2
CMD:disarm(playerid, params[])
{
new giveplayerid, str[128];
if(GetAdminLevel(playerid) >=2 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /disarm [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
format(str, 128, "You have disarmed %s.", GetPName(giveplayerid));
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "Your weapons have been reset by an administrator.");
ResetPlayerWeapons(giveplayerid);
}
return 1;
}
CMD:vrespawn(playerid, params[])
{
if(GetAdminLevel(playerid) >= 2) {
new bool:unwanted[MAX_VEHICLES];
for(new player=0; player<MAX_PLAYERS; player++)
{
if(IsPlayerInAnyVehicle(player)) { unwanted[GetPlayerVehicleID(player)]=true; }
}
for(new v = 1; v <= MAX_VEHICLES; v++)
{
if(!unwanted[v]) SetVehicleToRespawn(v);
}
}
return 1;
}
CMD:veh(playerid, params[])
{
if(GetAdminLevel(playerid) >= 2) {
new car;
if(IsPlayerInAnyVehicle(playerid)) return 1;
if(sscanf(params, "i", car)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /veh [vehid]");
if(strval(params) >611 || strval(params) <400) return SendClientMessage(playerid, COLOR_RED, "Invalid model id!");
new Float:x, Float:y, Float:z, Float:a;
GetPlayerPos(playerid, x,y,z);
GetPlayerFacingAngle(playerid, a);
car = CreateVehicle(strval(params), x, y, z,a, -1, -1, 60);
PutPlayerInVehicle(playerid, car, 0);
}
return 1;
}
CMD:kick(playerid, params[])
{
new giveplayerid;
if(GetAdminLevel(playerid) >=2 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /kick [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
new str[128], str2[128];
format(str, 128, "You have kicked %s from the server.", GetPName(giveplayerid));
format(str2, 128, "You have been kicked from the server by %s.", GetPName(playerid));
SendClientMessage(playerid, COLOR_RED, str);
SendClientMessage(giveplayerid, COLOR_RED, str2);
Kick(giveplayerid);
}
return 1;
}
CMD:givemoney(playerid, params[])
{
if(GetAdminLevel(playerid) >= 2) {
new giveplayerid, money;
if(sscanf(params, "ui", giveplayerid, money)) SendClientMessage(playerid, COLOR_WHITE, "USAGE: /givemoney [playerid] [amount]");
if(!IsPlayerConnected(giveplayerid)) return 1;
GivePlayerMoney(playerid, money);
}
return 1;
}
//LEVEL 3
CMD:akill(playerid, params[])
{
new giveplayerid, str[128];
if(GetAdminLevel(playerid >=3)) {
if(sscanf(params, "u", giveplayerid)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /akill [playerid]");
if(!IsPlayerConnected(giveplayerid)) return 1;
SetPlayerHealth(giveplayerid, 0);
format(str, 128, "You have admin-killed %s.", GetPName(giveplayerid));
SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, "You have been killed by an administrator.");
}
return 1;
}
CMD:ban(playerid, params[])
{
if(GetAdminLevel(playerid) >= 3) {
new reason[50], giveplayerid, sendername[24], year, month, day, date[128], str[128], str2[128], str3[128], PlayerName[24], file[128];
if(sscanf(params, "us", giveplayerid, reason)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /ban [playerid] [reason]");
if(!IsPlayerConnected(giveplayerid)) return 1;
getdate(year, month, day);
format(date, sizeof(date), "Date: %02d/%02d/%d", month, day, year);
GetPlayerName(playerid, sendername, 20);
GetPlayerName(giveplayerid, PlayerName, sizeof(PlayerName));
format(file, 128, USER_FILE, PlayerName);
dini_IntSet(file, "Banned", 1);
dini_Set(file, "BannedReason", reason);
dini_Set(file, "BannedBy", sendername);
dini_Set(file, "DateBanned", date);
format(str, 128, "You have banned %s. Reason: %s.",PlayerName, reason);
format(str2, 128, "You have been banned from this server. Reason: %s", reason);
format(str3, 128, "Banned by: %s", sendername);
SendClientMessage(playerid, COLOR_RED, str);
SendClientMessage(giveplayerid, COLOR_RED, str2);
SendClientMessage(giveplayerid, COLOR_RED, str3);
SendClientMessage(giveplayerid, COLOR_RED, date);
SendClientMessage(giveplayerid, COLOR_RED, "Make a ban appeal via the forums.");
Kick(giveplayerid);
}
return 1;
}
//LEVEL 4
CMD:sethp(playerid, params[])
{
new Float:health, giveplayerid, str[128], str2[128];
if(GetAdminLevel(playerid) >=4 || IsPlayerAdmin(playerid)) {
if(sscanf(params, "ud", giveplayerid, health)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /sethp [playerid] [health]");
if(!IsPlayerConnected(giveplayerid)) return 1;
SetPlayerHealth(giveplayerid, health);
format(str, 128, "You have set the health of %s to %d.", GetPName(giveplayerid), health);
format(str2, 128, "Your health has been set to %d by an administrator.", health);
SendClientMessage(playerid, COLOR_LIGHTBLUE, str);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, str2);
}
return 1;
}
//LEVEL 5
CMD:restart(playerid, params[])
{
if(GetAdminLevel(playerid) >=5) {
SendRconCommand("gmx");
}
return 1;
}
CMD:adminlevel(playerid, params[])
{
new giveplayerid, level, str[128], str2[128];
if(GetAdminLevel(playerid) >= 5) {
new file[128]; format(file, 128, USER_FILE, GetPName(giveplayerid));
if(sscanf(params, "ud", giveplayerid, level)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /adminlevel [playerid] [level 1-5]");
if(!IsPlayerConnected(giveplayerid)) return 1;
if(0 > strval(params[2]) > 5) return SendClientMessage(playerid, COLOR_RED, "Invalid admin level! (1-5)");
dini_IntSet(file, "AdminLevel", level);
format(str, 128, "You have set the admin level of %s to %d!", GetPName(giveplayerid), level);
format(str2, 128, "%s has set your admin level to %d!", GetPName(playerid), level);
SendClientMessage(playerid,COLOR_LIGHTBLUE, str);
SendClientMessage(giveplayerid, COLOR_LIGHTBLUE, str2);
}
return 1;
}