uite cum am pus #include <a_samp>
#include <lethaldudb2>
#pragma dynamic 145000
/*
* DUDB functions
* (c) Copyright 2006-2007 by DracoBlue
*
* @version : 2.4
* @author : DracoBlue (http://dracoblue.net)
* @date : 8th May 2006
* @update : 12th July 2007
* @require : DUtils 1.10
* @require : DINI 1.5
*
* This Unit is provided as is (no warranties).
* Feel free to use it, a little message in
* about box is honouring thing, isn't it?
*
*/
#if defined _dudb_included
#endinput
#endif
#define _dudb_included
#pragma library dutils
#include <dutils>
#include <dini>
#define dUser(%1).( udb_User(%1,
#define dUserINT(%1).( udb_UserInt(%1,
#define dUserSet(%1).( udb_UserSet(%1,
#define dUserSetINT(%1).( udb_UserSetInt(%1,
#define dUserSetFLOAT(%1).( udb_UserSetFloat(%1,
#define dUserFLOAT(%1).( udb_UserFloat(%1,
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
stock udb_encode(nickname[]) {
new tmp[MAX_STRING];
set(tmp,nickname);
tmp=strreplace("_","_00",tmp);
tmp=strreplace(";","_01",tmp);
tmp=strreplace("!","_02",tmp);
tmp=strreplace("/","_03",tmp);
tmp=strreplace("\\","_04",tmp);
tmp=strreplace("[","_05",tmp);
tmp=strreplace("]","_06",tmp);
tmp=strreplace("?","_07",tmp);
tmp=strreplace(".","_08",tmp);
tmp=strreplace("*","_09",tmp);
tmp=strreplace("<","_10",tmp);
tmp=strreplace(">","_11",tmp);
tmp=strreplace("{","_12",tmp);
tmp=strreplace("}","_13",tmp);
tmp=strreplace(" ","_14",tmp);
tmp=strreplace("\"","_15",tmp);
tmp=strreplace(":","_16",tmp);
tmp=strreplace("|","_17",tmp);
tmp=strreplace("=","_18",tmp);
return tmp;
}
stock udb_decode(nickname[]) {
new tmp[MAX_STRING];
set(tmp,nickname);
tmp=strreplace("_01",";",tmp);
tmp=strreplace("_02","!",tmp);
tmp=strreplace("_03","/",tmp);
tmp=strreplace("_04","\\",tmp);
tmp=strreplace("_05","[",tmp);
tmp=strreplace("_06","]",tmp);
tmp=strreplace("_07","?",tmp);
tmp=strreplace("_08",".",tmp);
tmp=strreplace("_09","*",tmp);
tmp=strreplace("_10","<",tmp);
tmp=strreplace("_11",">",tmp);
tmp=strreplace("_12","{",tmp);
tmp=strreplace("_13","}",tmp);
tmp=strreplace("_14"," ",tmp);
tmp=strreplace("_15","\"",tmp);
tmp=strreplace("_16",":",tmp);
tmp=strreplace("_17","|",tmp);
tmp=strreplace("_18","=",tmp);
tmp=strreplace("_00","_",tmp);
return tmp;
}
stock udb_Exists(nickname[]) {
new tmp[MAX_STRING];
format(tmp,sizeof(tmp),"ladmin/users/%s.sav",udb_encode(nickname));
return fexist(tmp);
}
stock udb_Remove(nickname[]) {
new tmp[MAX_STRING];
format(tmp,sizeof(tmp),"ladmin/users/%s.sav",udb_encode(nickname));
return dini_Remove(tmp);
}
stock udb_UserSetInt(nickname[],key[],value) {
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
return dini_IntSet(fname,key,value);
}
stock udb_UserSetFloat(nickname[],key[],Float:value) {
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
return dini_FloatSet(fname,key,value);
}
stock udb_UserSet(nickname[],key[],value[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
return dini_Set(fname,key,value);
}
stock udb_User(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
format(fname,sizeof(fname),dini_Get(fname,key));
return fname;
}
stock Float:udb_UserFloat(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
return dini_Float(fname,key);
}
stock udb_UserInt(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
return dini_Int(fname,key);
}
stock udb_CheckLogin(nickname[],pwd[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
if (udb_UserInt(nickname,"password_hash")==udb_hash(pwd)) return true;
return false;
}
stock udb_Create(nickname[],pwd[]) {
if (udb_Exists(nickname)) return false;
new fname[MAX_STRING];
format(fname,sizeof(fname),"ladmin/users/%s.sav",udb_encode(nickname));
dini_Create(fname);
udb_UserSetInt(nickname,"password_hash",udb_hash(pwd));
return true;
}
stock udb_RenameUser(nickname[],newnick[]) {
new oldfname[MAX_STRING];
new newfname[MAX_STRING];
format(oldfname,sizeof(oldfname),"ladmin/users/%s.sav",udb_encode(nickname));
format(newfname,sizeof(newfname),"ladmin/users/%s.sav",udb_encode(newnick));
return frenametextfile(oldfname,newfname);
}
/*
|===============================================|
| --== LethaL Adminscript ==-- |
| -== Version 4.2 ==-- |
| ladmin4v2.pwn |
|===============================================|
*/
//-----------------------------------------------------------------------------------//
#define USE_MENUS // Comment to remove all menus. Uncomment to enable menus
//#define DISPLAY_CONFIG // displays configuration in console window on filterscript load
#define SAVE_LOGS // Comment if your server runs linux (logs wont be saved)
#define ENABLE_SPEC // Comment if you are using a spectate system already
#define USE_STATS // Comment to disable /stats
#define ANTI_MINIGUN // Displays who has a minigun
//#define USE_AREGISTER // Changes /register, /login etc to /areister, /alogin etc
//#define HIDE_ADMINS // Displays number of admins online instead of level and names
#define ENABLE_FAKE_CMDS // Comment to disable /fakechat, /fakedeath, /fakecmd commanads
//-----------------------------------------------------------------------------------//
#define MAX_WARNINGS 3 // /warn command
#define MAX_REPORTS 7
#define MAX_CHAT_LINES 7
#define SPAM_MAX_MSGS 5
#define SPAM_TIMELIMIT 8 // SECONDS
#define PING_MAX_EXCEEDS 4
#define PING_TIMELIMIT 60 // SECONDS
#define MAX_FAIL_LOGINS 4
//Ranks//
#define RANK_NEWBIE 0
#define RANK_BABY_KILLA 1
#define RANK_SOLDIER 2
#define RANK_GANGSTA 3
#define RANK_UNDERBOSS 4
#define RANK_BOSS 5
new gPlayerLogged[MAX_PLAYERS];
new pRank[MAX_PLAYERS];
// Admin Area
new AdminArea[6] = {
377, // X
170, // Y
1008, // Z
90, // Angle
3, // Interior
0 // Virtual World
};
//-=Main colours=-
#define blue 0x375FFFFF
#define red 0xFF0000AA
#define green 0x33FF33AA
#define yellow 0xFFFF00AA
#define grey 0xC0C0C0AA
#define blue1 0x2641FEAA
#define lightblue 0x33CCFFAA
#define orange 0xFF9900AA
#define black 0x2C2727AA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_BLUE 0x0000BBAA
#define COLOR_PURPLE 0x800080AA
#define COLOR_BLACK 0x000000AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_GREEN1 0x33AA33AA
#define COLOR_BROWN 0xA52A2AAA
#define COLOR_LIGHTBLUE 0x00D0F6AA
// DCMD
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
// Caps
#define UpperToLower(%1) for ( new ToLowerChar; ToLowerChar < strlen( %1 ); ToLowerChar ++ ) if ( %1[ ToLowerChar ]> 64 && %1[ ToLowerChar ] < 91 ) %1[ ToLowerChar ] += 32
// Spec
#define ADMIN_SPEC_TYPE_NONE 0
#define ADMIN_SPEC_TYPE_PLAYER 1
#define ADMIN_SPEC_TYPE_VEHICLE 2
// Enums
enum PlayerData
{
RegisteredDate,
Registered,
LoggedIn,
Level,
Muted,
Caps,
Jailed,
JailTime,
Frozen,
FreezeTime,
Kills,
Deaths,
hours,
mins,
secs,
TotalTime,
ConnectTime,
MuteWarnings,
Warnings,
Spawned,
TimesSpawned,
God,
Score,
GodCar,
DoorsLocked,
SpamCount,
SpamTime,
PingCount,
PingTime,
BotPing,
pPing[PING_MAX_EXCEEDS],
blip,
blipS,
pColour,
pCar,
SpecID,
SpecType,
bool:AllowedIn,
FailLogin
};
new PlayerInfo[MAX_PLAYERS][PlayerData];
enum ServerData
{
MaxPing,
ReadPMs,
SetScore,
ReadCmds,
MaxAdminLevel,
AdminOnlySkins,
AdminSkin,
AdminSkin2,
NameKick,
PartNameKick,
AntiBot,
AntiSpam,
AntiSwear,
NoCaps,
Locked,
Password[128],
GiveWeap,
GiveMoney,
ConnectMessages,
AdminCmdMsg,
AutoLogin,
MaxMuteWarnings,
DisableChat,
MustLogin,
MustRegister,
};
new ServerInfo[ServerData];
new Float:Pos[MAX_PLAYERS][4];
// rcon
new Chat[MAX_CHAT_LINES][128];
//Timers
new PingTimer;
new GodTimer;
new BlipTimer[MAX_PLAYERS];
new JailTimer[MAX_PLAYERS];
new FreezeTimer[MAX_PLAYERS];
new LockKickTimer[MAX_PLAYERS];
//Duel
new CountDown = -1, cdt[MAX_PLAYERS] = -1;
new InDuel[MAX_PLAYERS];
// Menus
#if defined USE_MENUS
new Menu:LMainMenu, Menu:AdminEnable, Menu:AdminDisable,
Menu:LVehicles, Menu:twodoor, Menu:fourdoor, Menu:fastcar, Menu:Othercars,
Menu:bikes, Menu:boats, Menu:planes, Menu:helicopters,
Menu:XWeapons, Menu:XWeaponsBig, Menu:XWeaponsSmall, Menu:XWeaponsMore,
Menu:LWeather,Menu:LTime,
Menu:LTuneMenu, Menu:PaintMenu, Menu:LCars, Menu:LCars2,
Menu:LTele, Menu:LasVenturasMenu, Menu:LosSantosMenu, Menu:SanFierroMenu,
Menu:DesertMenu, Menu:FlintMenu, Menu:MountChiliadMenu, Menu:InteriorsMenu;
#endif
// Forbidden Names & Words
new BadNames[100][100], // Whole Names
BadNameCount = 0,
BadPartNames[100][100], // Part of name
BadPartNameCount = 0,
ForbiddenWords[100][100],
ForbiddenWordCount = 0;
// Report
new Reports[MAX_REPORTS][128];
// Ping Kick
new PingPos;
new VehicleNames[212][] = {
"Landstalker","Bravura","Buffalo","Linerunner","Pereniel","Sentinel","Dumper","Firetruck","Trashmaster","Stretch","Manana","Infernus",
"Voodoo","Pony","Mule","Cheetah","Ambulance","Leviathan","Moonbeam","Esperanto","Taxi","Washington","Bobcat","Mr Whoopee","BF Injection",
"Hunter","Premier","Enforcer","Securicar","Banshee","Predator","Bus","Rhino","Barracks","Hotknife","Trailer","Previon","Coach","Cabbie",
"Stallion","Rumpo","RC Bandit","Romero","Packer","Monster","Admiral","Squalo","Seasparrow","Pizzaboy","Tram","Trailer","Turismo","Speeder",
"Reefer","Tropic","Flatbed","Yankee","Caddy","Solair","Berkley's RC Van","Skimmer","PCJ-600","Faggio","Freeway","RC Baron","RC Raider",
"Glendale","Oceanic","Sanchez","Sparrow","Patriot","Quad","Coastguard","Dinghy","Hermes","Sabre","Rustler","ZR3 50","Walton","Regina",
"Comet","BMX","Burrito","Camper","Marquis","Baggage","Dozer","Maverick","News Chopper","Rancher","FBI Rancher","Virgo","Greenwood",
"Jetmax","Hotring","Sandking","Blista Compact","Police Maverick","Boxville","Benson","Mesa","RC Goblin","Hotring Racer A","Hotring Racer B",
"Bloodring Banger","Rancher","Super GT","Elegant","Journey","Bike","Mountain Bike","Beagle","Cropdust","Stunt","Tanker","RoadTrain",
"Nebula","Majestic","Buccaneer","Shamal","Hydra","FCR-900","NRG-500","HPV1000","Cement Truck","Tow Truck","Fortune","Cadrona","FBI Truck",
"Willard","Forklift","Tractor","Combine","Feltzer","Remington","Slamvan","Blade","Freight","Streak","Vortex","Vincent","Bullet","Clover",
"Sadler","Firetruck","Hustler","Intruder","Primo","Cargobob","Tampa","Sunrise","Merit","Utility","Nevada","Yosemite","Windsor","Monster A",
"Monster B","Uranus","Jester","Sultan","Stratum","Elegy","Raindance","RC Tiger","Flash","Tahoma","Savanna","Bandito","Freight","Trailer",
"Kart","Mower","Duneride","Sweeper","Broadway","Tornado","AT-400","DFT-30","Huntley","Stafford","BF-400","Newsvan","Tug","Trailer A","Emperor",
"Wayfarer","Euros","Hotdog","Club","Trailer B","Trailer C","Andromada","Dodo","RC Cam","Launch","Police Car (LSPD)","Police Car (SFPD)",
"Police Car (LVPD)","Police Ranger","Picador","S.W.A.T. Van","Alpha","Phoenix","Glendale","Sadler","Luggage Trailer A","Luggage Trailer B",
"Stair Trailer","Boxville","Farm Plow","Utility Trailer"
};
//==============================================================================
public OnFilterScriptInit()
{
print("\n________________________________________");
print("________________________________________");
print(" LAdmin Loading... ");
print("________________________________________");
if(!fexist("ladmin/"))
{
print("\n\n > WARNING: Folder Missing From Scriptfiles\n");
SetTimerEx("PrintWarning",2500,0,"s","ladmin");
return 1;
}
if(!fexist("ladmin/logs/"))
{
print("\n\n > WARNING: Folder Missing From Scriptfiles\n");
SetTimerEx("PrintWarning",2500,0,"s","ladmin/logs");
return 1;
}
if(!fexist("ladmin/config/"))
{
print("\n\n > WARNING: Folder Missing From Scriptfiles\n");
SetTimerEx("PrintWarning",2500,0,"s","ladmin/config");
return 1;
}
if(!fexist("ladmin/users/"))
{
print("\n\n > WARNING: Folder Missing From Scriptfiles\n");
SetTimerEx("PrintWarning",2500,0,"s","ladmin/users");
return 1;
}
UpdateConfig();
#if defined DISPLAY_CONFIG
ConfigInConsole();
#endif
//===================== [ The Menus ]===========================//
#if defined USE_MENUS
LMainMenu = CreateMenu("Main Menu", 2, 55.0, 200.0, 100.0, 80.0);
SetMenuColumnHeader(LMainMenu, 0, "Choose an option below");
AddMenuItem(LMainMenu, 0, "Enable");
AddMenuItem(LMainMenu, 0, "Disable");
AddMenuItem(LMainMenu, 0, "Server Weather");
AddMenuItem(LMainMenu, 0, "Server Time");
AddMenuItem(LMainMenu, 0, "All Vehicles");
AddMenuItem(LMainMenu, 0, "Admin Cars");
AddMenuItem(LMainMenu, 0, "Tuning Menu");
AddMenuItem(LMainMenu, 0, "Choose Weapon");
AddMenuItem(LMainMenu, 0, "Teleports");
AddMenuItem(LMainMenu, 0, "Exit Menu");//
AdminEnable = CreateMenu("~b~Configuration ~g~ Menu",2, 55.0, 200.0, 150.0, 80.0);
SetMenuColumnHeader(AdminEnable, 0, "Enable");
AddMenuItem(AdminEnable, 0, "Anti Swear");
AddMenuItem(AdminEnable, 0, "Bad Name Kick");
AddMenuItem(AdminEnable, 0, "Anti Spam");
AddMenuItem(AdminEnable, 0, "Ping Kick");