rendered paste body#include <a_samp>
#include <dutils>
#include <dudb>
#include <dini>
/* 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
/* COLORS */
#define COLOR_BLUE 0x0000FFAA
#define COLOR_GREY 0xAFAFAFAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_WHITE 0xFFFFFFAA
#define COLOR_PURPLE 0x9900FFAA
#define COLOR_BROWN 0x993300AA
#define COLOR_ORANGE 0xFF9933AA
#define COLOR_CYAN 0x99FFFFAA
#define COLOR_PINK 0xFF66FFAA
#define COLOR_LIME 0x99FF00AA
#define COLOR_BLACK 0x000000AA
#define COLOR_TURQ 0x00A3C0AA
#define SLOTS 8
enum playerdata {
Registered,
LoggedIn,
Level,
Muted,
Jailed,
JailTime,
Frozen,
FreezeTime,
Kills,
Deaths,
God,
Warnings,
Spawned,
TimesSpawned,
Spam
};
enum ServerData {
MaxPing,
ReadPMs,
ReadCmds,
MaxAdminLevel,
AdminOnlySkins,
AdminSkin,
NameKick,
AntiBot,
AntiSpam,
AntiSwear,
NoCaps,
Locked
};
new playerinfo[MAX_PLAYERS][playerdata];
new ServerInfo[ServerData];
new InDuel[MAX_PLAYERS];
new cdt=-1; new CountTimer;
main()
{
print("\n----------------------------------");
print(" Paul Gm 0.1 ");
print("----------------------------------\n");
}
public OnGameModeInit()
{
SetGameModeText("Blank Script");
AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
return 1;
}
public OnGameModeExit()
{
print("\n----------------------------------");
print(" Exiting Paul Gm 0.1 ");
print("----------------------------------\n");
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
return 1;
}
public OnPlayerRequestSpawn(playerid)
{
return 1;
}
public OnPlayerConnect(playerid)
{
new enters [47];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(enters, sizeof(enters), "%s e' entrato nel server", name);
SendClientMessageToAll(COLOR_YELLOW, enters);
playerinfo[playerid][Deaths] = 0;
playerinfo[playerid][Kills] = 0;
playerinfo[playerid][Jailed] = 0;
playerinfo[playerid][Level] = 0;
playerinfo[playerid][LoggedIn] = 0;
playerinfo[playerid][Registered] = 0;
playerinfo[playerid][TimesSpawned] = 0;
playerinfo[playerid][Muted] = 0;
playerinfo[playerid][God] = 0;
if (udb_Exists(name))
{
new file[MAX_PLAYER_NAME], tmp [50], tmp2[256];
format(file, sizeof(file), "users/%s.sav", udb_encode(name));
GetPlayerIp(playerid, tmp, sizeof(tmp));
tmp2 = dini_Get(file,"ip");
if(!strcmp(tmp,tmp2,true))
{
SendClientMessage(playerid, COLOR_ORANGE,"ACCOUNT: Bentornato!");
SendClientMessage(playerid,COLOR_ORANGE, "ACCOUNT: Automaticamente loggato!");
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,dUserINT(name).("money"));
playerinfo[playerid][Deaths] = (dUserINT(name).("deaths"));
playerinfo[playerid][Kills] = (dUserINT(name).("kills"));
playerinfo[playerid][Level] = (dUserINT(name).("level"));
playerinfo[playerid][Frozen] = (dUserINT(name).("frozen"));
playerinfo[playerid][Jailed] = (dUserINT(name).("jailed"));
playerinfo[playerid][JailTime] = (dUserINT(name).("jailtime"));
playerinfo[playerid][FreezeTime] = (dUserINT(name).("freezetime"));
playerinfo[playerid][Registered] = 1;
playerinfo[playerid][LoggedIn] = 1;
}
else
{
SendClientMessage(playerid,COLOR_ORANGE, "ACCOUNT: questo player e' gia' registrato! Usa /login [password]");
}
}
else if (!udb_Exists(name))
{
new msg[256];
format(msg,sizeof(msg),"ACCOUNT: Ciao %s! Scrivi /register [password] per registrarti!",name);
SendClientMessage(playerid,COLOR_ORANGE, msg);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
new exits [57];
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
switch(reason)
{
case 0: format(exits, sizeof(exits), "%s e' uscito dal server. (Timeout)", name);
case 1: format(exits, sizeof(exits), "%s e' uscito dal server. (Leaving)", name);
case 2: format(exits, sizeof(exits), "%s e' uscito dal server. (Kicked)", name);
}
SendClientMessageToAll(COLOR_YELLOW, exits);
if (playerinfo[playerid][LoggedIn] == 1)
{
dUserSetINT(name).("money",GetPlayerMoney(playerid));
dUserSetINT(name).("kills",playerinfo[playerid][Kills]);
dUserSetINT(name).("deaths",playerinfo[playerid][Deaths]);
dUserSetINT(name).("jailtime",playerinfo[playerid][JailTime]);
dUserSetINT(name).("freezetime",playerinfo[playerid][FreezeTime]);
new Float:health; GetPlayerHealth(playerid, Float:health);
new Float:armour; GetPlayerArmour(playerid, Float:armour);
new year,month,day; getdate(year, month, day);
new strdate[20]; format(strdate, sizeof(strdate), "%d.%d.%d",day,month,year);
new file[256]; format(file,sizeof(file),"users/%s.sav",udb_encode(name));
dUserSetINT(name).("health",floatround(health));
dUserSetINT(name).("armour",floatround(armour));
dini_Set(file,"LastOn",strdate);
}
playerinfo[playerid][LoggedIn] = 0;
playerinfo[playerid][Level] = 0;
playerinfo[playerid][God] = 0;
return 1;
}
public OnPlayerSpawn(playerid)
{
playerinfo[playerid][Spawned] = 1;
if(playerinfo[playerid][Frozen] == 1)
{
TogglePlayerControllable(playerid,false); SendClientMessage(playerid,COLOR_GREY,"Sei ancora freezato!");
}
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(playerinfo[playerid][LoggedIn]==1)
{
playerinfo[playerid][Deaths]++;
}
SendDeathMessage(killerid, playerid,reason);
return 1;
}
public OnVehicleSpawn(vehicleid)
{
return 1;
}
public OnVehicleDeath(vehicleid, killerid)
{
return 1;
}
public OnPlayerText(playerid, text[])
{
/* CHAT LOGS */
new File:ftw=fopen("logs/chatlog.txt", io_append);
new year,month,day;
getdate(year,month,day);
new hour,minute,second;
gettime(hour, minute, second);
new ip[16];
GetPlayerIp(playerid,ip,sizeof(ip));
new pname[MAX_PLAYER_NAME];
GetPlayerName(playerid,pname,sizeof(pname));
new fstring[256];
format(fstring, sizeof(fstring), "[%d/%d/%d][%d.%d.%d][%s]%s:%s\r\n",day,month,year,hour,minute,second,ip,pname,text);
fwrite(ftw, fstring);
fclose(ftw);
return 1;
}
public OnPlayerPrivmsg(playerid, recieverid, text[])
{
return 1;
}
public OnPlayerCommandText(playerid, cmdtext[])
{
/* DCMD */
dcmd(kill, 4, cmdtext);
dcmd(register, 8,cmdtext);
dcmd(login,5,cmdtext);
dcmd(jail, 4, cmdtext);
dcmd(logout, 6, cmdtext);
dcmd(asay, 4, cmdtext);
dcmd(clearchat, 9, cmdtext);
dcmd(clearallchat, 12, cmdtext);
dcmd(getid, 5, cmdtext);
dcmd(report, 6, cmdtext);
dcmd(teleplayer, 10, cmdtext);
dcmd(warn, 5, cmdtext);
dcmd(duel,4,cmdtext);
dcmd(countdown, 9, cmdtext);
dcmd(fix, 3, cmdtext);
dcmd(resetstats, 10, cmdtext);
dcmd(changepass, 10, cmdtext);
dcmd(stats, 5, cmdtext);
dcmd(god, 3, cmdtext);
return 0;
}
/* COMMANDS */
dcmd_kill(playerid, params[])
{
#pragma unused params
new money = GetPlayerMoney(playerid);
SetPlayerHealth(playerid, 0);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, money-1000);
return 1;
}
dcmd_register(playerid, params[])
{
new name[MAX_PLAYER_NAME];
new exists [256];
GetPlayerName(playerid, name, sizeof(name));
if (playerinfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: Gia' loggato!");
if (strlen(params)==0) return SendClientMessage(playerid, COLOR_ORANGE,"ACCOUNT /register [password]");
if (strlen(params)<4) return SendClientMessage(playerid, COLOR_ORANGE,"ACCOUNT: La password deve contenere piu' di 3 caratteri");
if(udb_Exists(name)){
format(exists,sizeof(exists),"ACCOUNT: Il player con nome %s esiste gia'! Cambia nome!",name);
SendClientMessage(playerid,COLOR_ORANGE,exists);
}
if (udb_Create(name,params))
{
new file[256], tmp3[100];
new strdate[20], year,month,day; getdate(year, month, day);
GetPlayerName(playerid,name,24); format(file,256,"users/%s.sav",udb_encode(name));
GetPlayerIp(playerid,tmp3,sizeof(tmp3)); dUserSet(name).("ip",tmp3);
dUserSet(name).("password",params);
dUserSetINT(name).("registered",1);
format(strdate, sizeof(strdate), "%d/%d/%d",day,month,year);
dUserSet(name).("RegisteredDate",strdate);
dUserSetINT(name).("level",0);
dUserSetINT(name).("frozen",0);
dUserSetINT(name).("freezetime",0);
dUserSetINT(name).("jailed",0);
dUserSetINT(name).("jailtime",0);
dUserSetINT(name).("kills",0);
dUserSetINT(name).("deaths",0);
dUserSetINT(name).("money",0);
dUserSetINT(name).("exp",0);
dUserSet(name).("LastOn",strdate);
playerinfo[playerid][LoggedIn] = 1;
playerinfo[playerid][Registered] = 1;
SendClientMessage(playerid, COLOR_ORANGE, "ACCOUNT: Registrato e automaticamente loggato!");
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
if(playerinfo[playerid][Spawned] == 1) TogglePlayerControllable(playerid,true);
return 1;
}
return 1;
}
dcmd_login(playerid,params[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if (playerinfo[playerid][LoggedIn] == 1) return SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: Gia loggato!");
if (!udb_Exists(name)) return SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: L'account non esiste, usa /register [password].");
if (strlen(params)==0) return SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: USO:: /login [password]");
if (!udb_CheckLogin(name,params))
{
return SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: Login fallito! Password sbagliata!");
}
else
{
new money;
money = (dUserINT(name).("money"));
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, money);
playerinfo[playerid][Deaths] = (dUserINT(name).("deaths"));
playerinfo[playerid][Kills] = (dUserINT(name).("kills"));
playerinfo[playerid][Level] = (dUserINT(name).("level"));
playerinfo[playerid][Frozen] = (dUserINT(name).("frozen"));
playerinfo[playerid][Jailed] = (dUserINT(name).("jailed"));
playerinfo[playerid][LoggedIn] = 1;
playerinfo[playerid][Registered] = 1;
new file[256]; GetPlayerName(playerid,name,24); format(file,256,"users/%s.sav",udb_encode(name));
new tmp3[100]; GetPlayerIp(playerid,tmp3,100); dini_Set(file,"ip",tmp3);
if(playerinfo[playerid][Spawned] == 1) TogglePlayerControllable(playerid,true);
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: Loggato!");
SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: Bentornato!");
return 1;
}
}
dcmd_jail(playerid,params[])
{
new name[MAX_PLAYER_NAME], adminname[MAX_PLAYER_NAME], string[256], time, reason[256];
GetPlayerName(playerid, name, sizeof(name)); GetPlayerName(playerid, adminname, sizeof(adminname));
if(playerinfo[playerid][Level] >= 3)
{
new player1;
if (sscanf(params, "ddz", player1, time, reason))return SendClientMessage(playerid, COLOR_PURPLE, "USO: /jail [playerid] [time] [reason]");
if(!IsPlayerConnected(player1) || playerid == INVALID_PLAYER_ID)
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Il player non e' connesso o sei tu!");
return 1;
}
if(time < 10 )
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Tempo sbagliato (deve essere maggiore di 10 secondi)");
return 1;
}
CMDMessageToAdmins(playerid,"LJail");
GetPlayerName(player1, name, sizeof(name)); GetPlayerName(playerid, adminname, sizeof(adminname));
format(string,sizeof(string),"L'amministratore %s ti ha messo in cella per %d secondi[reason: %s]",adminname,time,reason); SendClientMessage(player1,COLOR_TURQ,string);
format(string,sizeof(string),"L'amministratore %s ha messo in cella %s per %d secondi [reason: %s]",adminname, name, time, reason); SendClientMessageToAll(COLOR_TURQ,string);
playerinfo[player1][JailTime] = time;
SetTimerEx("JailPlayer",5000,0,"d",player1);
SetTimerEx("Jail1",1000,0,"d",player1);
playerinfo[player1][Jailed] = 1;
playerinfo[player1][JailTime] = time;
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Non hai un livello abbastanza alto per usare questo comando!");
}
return 1;
}
dcmd_logout(playerid,params[])
{
#pragma unused params
if (playerinfo[playerid][LoggedIn] == 1)
{
new name[MAX_PLAYER_NAME];
dUserSetINT(name).("money",GetPlayerMoney(playerid));
dUserSetINT(name).("kills",playerinfo[playerid][Kills]);
dUserSetINT(name).("deaths",playerinfo[playerid][Deaths]);
dUserSetINT(name).("jailtime",playerinfo[playerid][JailTime]);
dUserSetINT(name).("freezetime",playerinfo[playerid][FreezeTime]);
new Float:health; GetPlayerHealth(playerid, Float:health);
new Float:armour; GetPlayerArmour(playerid, Float:armour);
new year,month,day; getdate(year, month, day);
new strdate[20]; format(strdate, sizeof(strdate), "%d.%d.%d",day,month,year);
new file[256]; format(file,sizeof(file),"users/%s.sav",udb_encode(name));
dUserSetINT(name).("health",floatround(health));
dUserSetINT(name).("armour",floatround(armour));
dini_Set(file,"LastOn",strdate);
playerinfo[playerid][LoggedIn] = 0;
playerinfo[playerid][Level] = 0;
}
else
{
SendClientMessage(playerid, COLOR_ORANGE, "ACCOUNT: Non sei piu' loggato!");
}
}
dcmd_asay(playerid,params[])
{
if(playerinfo[playerid][Level] >= 2)
{
new adminname[MAX_PLAYER_NAME], string[256];
if(strlen(params)==0) return SendClientMessage(playerid, COLOR_PURPLE, "USO: /asay [text]");
GetPlayerName(playerid, adminname, sizeof(adminname));
format(string, sizeof(string), "**Admin %s: %s",adminname,params);
SendClientMessageToAll(COLOR_PINK,string);
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Devi essere almeno di livello 2 per usare questo comando");
}
return 1;
}
dcmd_clearchat(playerid,params[])
{
#pragma unused params
if(playerinfo[playerid][Level] >= 2)
{
CMDMessageToAdmins(playerid,"CLEARCHAT");
for(new i = 0; i < 11; i++) SendClientMessageToAll(COLOR_GREEN," ");
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Devi essere almeno di livello 2 per usare questo comando");
}
return 1;
}
dcmd_clearallchat(playerid,params[])
{
#pragma unused params
if(playerinfo[playerid][Level] >= 4)
{
CMDMessageToAdmins(playerid,"CLEARALLCHAT");
for(new i = 0; i < 50; i++) SendClientMessageToAll(COLOR_GREEN," ");
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Devi essere almeno di livello 4 per usare questo comando");
}
return 1;
}
dcmd_getid(playerid,params[])
{
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
new string[256];
if(!strlen(params)) return SendClientMessage(playerid,COLOR_PURPLE,"USO: /getid [parte del nick]");
format(string,sizeof(string),"Ricerca di: \"%s\": ",params);
SendClientMessage(playerid,COLOR_LIME,string);
new found;
for(new i=0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
GetPlayerName(i, name, MAX_PLAYER_NAME);
new namelen = strlen(name);
new bool:searched=false;
for(new pos=0; pos <= namelen; pos++)
{
if(searched != true)
{
if(strfind(name,params,true) == pos)
{
found++;
format(string,sizeof(string),"%d. %s (ID %d)",found,name,i);
SendClientMessage(playerid, COLOR_LIME ,string);
searched = true;
}
}
}
}
}
return 1;
}
dcmd_report(playerid, params[])
{
new reported;
new reason[256];
if (sscanf(params, "ds", playerid, reason)) return SendClientMessage(playerid, COLOR_PURPLE, "USO: /report [playerid] [reason]");
if(!IsPlayerConnected(reported) || reported == INVALID_PLAYER_ID) return SendClientMessage(playerid,COLOR_RED,"ERRORE: Il player non e' connesso!");
if(playerinfo[reported][Level] == ServerInfo[MaxAdminLevel]) return SendClientMessage(playerid,COLOR_RED,"ERRORE: Non puoi farlo con l'amministratore");
if(playerid == reported) return SendClientMessage(playerid,COLOR_RED,"ERRORE: Non puoi farlo a te stesso!");
new reportedname[MAX_PLAYER_NAME], reporter[MAX_PLAYER_NAME], str[100];
GetPlayerName(reported, reportedname, sizeof(reportedname)); GetPlayerName(playerid, reporter, sizeof(reporter));
format(str, sizeof(str), "||NewReport|| %s(ID %d) reported %s(ID %d) reason = %s", reporter,playerid, reportedname, reported, reason);
MessageToAdmins(COLOR_WHITE,str);
new File:ftw=fopen("reports/report.txt", io_append);
format(str, sizeof(str), "||NewReport|| %s(ID %d) reported %s(ID %d) reason = %s", reporter,playerid, reportedname, reported, reason);
fwrite(ftw, str);
fclose(ftw);
SendClientMessage(playerid,COLOR_CYAN, "Report inviato.");
return 1;
}
dcmd_teleplayer(playerid,params[])
{
if(playerinfo[playerid][Level] >= 3)
{
new player1,player2;
if (sscanf(params, "dd", player1, player2)) return SendClientMessage(playerid, COLOR_PURPLE, "USO: /report [playerid] [reason]");
if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID)
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Il player non e' connesso!");
return 1;
}
if(!IsPlayerConnected(player1) || player2 == INVALID_PLAYER_ID)
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Il player non e' connesso!");
return 1;
}
new Float:plocx,Float:plocy,Float:plocz;
GetPlayerPos(player2, plocx, plocy, plocz); new intid = GetPlayerInterior(player2); SetPlayerInterior(player1,intid);
SetPlayerVirtualWorld(player1,GetPlayerVirtualWorld(player2));
CMDMessageToAdmins(playerid,"TELEPLAYER");
if (GetPlayerState(player1) == 2)
{
new VehicleID = GetPlayerVehicleID(player1);
SetVehiclePos(VehicleID, plocx, plocy+4, plocz); LinkVehicleToInterior(VehicleID,intid);
SetVehicleVirtualWorld(VehicleID, GetPlayerVirtualWorld(player2) );
}
else
{
SetPlayerPos(player1,plocx,plocy+2, plocz);
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Devi essere almeno di livello 3 per usare questo comando");
}
return 1;
}
dcmd_warn(playerid,params[])
{
if(playerinfo[playerid][Level] >= 2)
{
new reason[256]; new warned; new pname[256]; new aname[256]; new str[256];
if (sscanf(params, "dz", warned, reason))return SendClientMessage(playerid, COLOR_PURPLE, "USO: /warn [PlayerID] [Reason]");
if(!IsPlayerConnected(warned) || warned == INVALID_PLAYER_ID || (playerinfo[warned][Level] == ServerInfo[MaxAdminLevel]) || (warned == playerid))
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Player is not connected or is yourself");
return 1;
}
CMDMessageToAdmins(playerid,"WARN");
if(playerinfo[warned][Warnings] == 0)
{
playerinfo[warned][Warnings]+=1;
GetPlayerName(warned, pname, sizeof (str)); GetPlayerName(playerid, aname, sizeof (str));
format(str, sizeof (str), "***L'amministratore %s ha fatto a %s un avvertimento [Reason: %s] [1/3 Warnings]***", aname, pname, reason);
SendClientMessageToAll(COLOR_LIME, str);
return 1;
}
else if(playerinfo[warned][Warnings] == 1)
{
GetPlayerName(warned, pname, sizeof (str)); GetPlayerName(playerid, aname, sizeof (str));
format(str, sizeof (str), "***L'amministratore %s ha fatto a %s un avvertimento [Reason: %s] [2/3 Warnings]***", aname, pname, reason);
SendClientMessageToAll(COLOR_LIME, str);
playerinfo[warned][Warnings]+=1;
return 1;
}
else if(playerinfo[warned][Warnings] == 2)
{
GetPlayerName(warned, pname, sizeof (str)); GetPlayerName(playerid, aname, sizeof (str));
format(str, sizeof (str), "***L'amministratore %s ha kickato %s [Reason: %s] [3/3 Warnings]***", aname, pname, reason);
SendClientMessageToAll(COLOR_LIME, str);
new File:ftw=fopen("reports/report.txt", io_append);
format(str, sizeof (str), "***L'amministratore %s ha kickato %s [Reason: %s] [3/3 Warnings]***", aname, pname, reason);
fwrite(ftw, str);
fclose(ftw);
return 1;
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERROR: Devi essere almeno di livello 2 per usare questo comando");
}
return 1;
}
dcmd_duel(playerid,params[])
{
if(playerinfo[playerid][Level] >= 3)
{
new player1; new player2; new location;
if (sscanf(params, "ddz", player1, player2, location))
{
SendClientMessage(playerid, COLOR_PURPLE, "USO: /duel [player1 id] [player2 id] [location (1) or (2) or (3)]");
SendClientMessage(playerid, COLOR_PURPLE, "Se il posto non e' specificato il duello sara' fatto dove si trovano i giocatori!");
return 1;
}
if(!IsPlayerConnected(player1) || player1 == INVALID_PLAYER_ID)
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Il player non e' connesso!");
return 1;
}
if(!IsPlayerConnected(player1) || player2 == INVALID_PLAYER_ID)
{
SendClientMessage(playerid,COLOR_RED,"ERROR: Il player non e' connesso!");
return 1;
}
if(location == 1)
{
SetPlayerInterior(player1,16); SetPlayerPos(player1,-1404.067, 1270.3706, 1042.8672); SetPlayerHealth(player1,100.0); SetPlayerArmour(player1,100.0); GivePlayerWeapon(player1,26,400); GivePlayerWeapon(player1,24,300); GivePlayerWeapon(player1,28,500);
SetPlayerInterior(player2,16); SetPlayerPos(player2,-1395.067, 1261.3706, 1042.8672); SetPlayerHealth(player2,100.0); SetPlayerArmour(player2,100.0); GivePlayerWeapon(player2,26,400); GivePlayerWeapon(player2,24,300); GivePlayerWeapon(player2,28,500);
InDuel[player1] = 1;
InDuel[player2] = 1;
CMDMessageToAdmins(playerid,"DUEL");
cdt=6;
CountTimer=SetTimer("duel",1000,1);
}
else if(location == 2)
{
SetPlayerInterior(player1,0); SetPlayerPos(player1,1353.407,2188.155,11.02344); SetPlayerHealth(player1,100.0); SetPlayerArmour(player1,100.0); GivePlayerWeapon(player1,26,400); GivePlayerWeapon(player1,24,300); GivePlayerWeapon(player1,28,500);
SetPlayerInterior(player2,0); SetPlayerPos(player2,1346.255,2142.843,11.01563); SetPlayerHealth(player2,100.0); SetPlayerArmour(player2,100.0); GivePlayerWeapon(player2,26,400); GivePlayerWeapon(player2,24,300); GivePlayerWeapon(player2,28,500);
InDuel[player1] = 1;
InDuel[player2] = 1;
CMDMessageToAdmins(playerid,"DUEL");
cdt=6;
CountTimer=SetTimer("duel",1000,1);
}
else if(location == 3)
{
SetPlayerInterior(player1,10); SetPlayerPos(player1,-1041.037,1078.729,1347.678); SetPlayerFacingAngle(player1,135); SetPlayerHealth(player1,100.0); SetPlayerArmour(player1,100.0); GivePlayerWeapon(player1,26,400); GivePlayerWeapon(player1,24,300); GivePlayerWeapon(player1,28,500);
SetPlayerInterior(player2,10); SetPlayerPos(player2,-1018.061,1052.502,1346.327); SetPlayerFacingAngle(player2,45); SetPlayerHealth(player2,100.0); SetPlayerArmour(player2,100.0); GivePlayerWeapon(player2,26,400); GivePlayerWeapon(player2,24,300); GivePlayerWeapon(player2,28,500);
InDuel[player1] = 1;
InDuel[player2] = 1;
CMDMessageToAdmins(playerid,"DUEL");
cdt=6;
CountTimer=SetTimer("duel",1000,1);
}
else
{
InDuel[player1] = 1;
InDuel[player2] = 1;
CMDMessageToAdmins(playerid,"DUEL");
cdt=6;
CountTimer=SetTimer("duel",1000,1);
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERROR: Devi essere almeno di livello 3 per usare questo comando");
}
return 1;
}
dcmd_countdown(playerid,params[])
{
#pragma unused params
if(playerinfo[playerid][Level] >= 1)
{
CMDMessageToAdmins(playerid,"COUNTDOWN");
cdt=6;
CountTimer=SetTimer("countdown",1000,1);
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERROR: Devi essere almeno di livello 1 per usare questo comando");
}
return 1;
}
dcmd_fix(playerid,params[])
{
#pragma unused params
if(playerinfo[playerid][Level] >= 1)
{
if (IsPlayerInAnyVehicle(playerid))
{
new VehicleID = GetPlayerVehicleID(playerid); SetVehicleHealth(VehicleID,1250.0);
SendClientMessage(playerid,COLOR_LIME,"Vehicle Fixed");
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Non sei in un veicolo");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERRORE: Devi essere almeno di livello 1 per usare questo comando");
}
return 1;
}
dcmd_resetstats(playerid,params[])
{
#pragma unused params
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(playerinfo[playerid][LoggedIn] == 1)
{
// save as backup
dUserSetINT(name).("oldkills",playerinfo[playerid][Kills]);
dUserSetINT(name).("olddeaths",playerinfo[playerid][Deaths]);
// stats reset
playerinfo[playerid][Kills] = 0;
playerinfo[playerid][Deaths] = 0;
dUserSetINT(name).("kills",playerinfo[playerid][Kills]);
dUserSetINT(name).("deaths",playerinfo[playerid][Deaths]);
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: Stats resettate. Le tue deaths e i tuoi kill ora sono: 0");
}
else
{
SendClientMessage(playerid,COLOR_RED, "ERRORE: Devi avere un account per usare questo comando");
}
return 1;
}
dcmd_changepass(playerid, params[])
{
new name[MAX_PLAYER_NAME], string[256];
GetPlayerName(playerid, name, sizeof(name));
if(playerinfo[playerid][LoggedIn] ==1)
{
if(!strlen(params))
{
SendClientMessage(playerid, COLOR_PURPLE, "USO: /changepass [password]");
return 1;
}
if(strlen(params) < 3)
{
SendClientMessage(playerid,COLOR_ORANGE,"ACCOUNT: Password troppo corta!");
return 1;
}
dUserSetINT(name).("password_hash",udb_hash(params) );
dUserSet(name).("Password",params);
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
format(string, sizeof(string),"ACCOUNT: Hai cambiato la password in [ %s ]",params);
SendClientMessage(playerid,COLOR_ORANGE,string);
}
else
{
SendClientMessage(playerid,COLOR_RED, "ERRORE: Devi avere un account per usare questo comando");
}
return 1;
}
dcmd_stats(playerid, params[])
{
new player1; new name[MAX_PLAYER_NAME], string[256];
GetPlayerName(playerid, name, sizeof(name));
if(!strlen(params))
{
ShowScore(playerid);
return 1;
}
if(IsPlayerConnected(player1))
{
GetPlayerName(player1, name, sizeof(name));
format(string, sizeof(string), "<> %s's Stats: Kills: %d | Deaths: %d | Ratio: %0.2f | Money: $%d ",name, playerinfo[player1][Kills], playerinfo[player1][Deaths],Float:playerinfo[player1][Deaths]/Float:playerinfo[player1][Deaths],GetPlayerMoney(player1));
SendClientMessage(playerid, COLOR_YELLOW, string);
return 1;
}
else
{
SendClientMessage(playerid, COLOR_RED, "ERRORE: Player non connesso!");
return 1;
}
}
dcmd_god(playerid,params[])
{
#pragma unused params
if(playerinfo[playerid][Level] >= 3)
{
if(playerinfo[playerid][God] == 0)
{
playerinfo[playerid][God] = 1;
SetPlayerHealth(playerid,100000);
GivePlayerWeapon(playerid,38,50000); GivePlayerWeapon(playerid,15,50000); GivePlayerWeapon(playerid,26,50000);
SendClientMessage(playerid,COLOR_TURQ,"GODMODE ON");
}
else
{
playerinfo[playerid][God] = 0;
SendClientMessage(playerid,COLOR_TURQ,"GODMODE OFF");
SetPlayerHealth(playerid, 100); ResetPlayerWeapons(playerid);
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"ERROR: You need to be level 3 to use this command");
}
return 1;
}
/* END COMMANDS */
public OnPlayerInfoChange(playerid)
{
return 1;
}
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
return 1;
}
public OnPlayerStateChange(playerid, newstate, oldstate)
{
return 1;
}
public OnPlayerEnterCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveCheckpoint(playerid)
{
return 1;
}
public OnPlayerEnterRaceCheckpoint(playerid)
{
return 1;
}
public OnPlayerLeaveRaceCheckpoint(playerid)
{
return 1;
}
public OnRconCommand(cmd[])
{
return 1;
}
public OnObjectMoved(objectid)
{
return 1;
}
public OnPlayerObjectMoved(playerid, objectid)
{
return 1;
}
public OnPlayerPickUpPickup(playerid, pickupid)
{
return 1;
}
public OnPlayerSelectedMenuRow(playerid, row)
{
return 1;
}
public OnPlayerExitedMenu(playerid)
{
return 1;
}
/* STOCK & OTHER */
stock CMDMessageToAdmins(playerid,command[]) { new string[200],name[30]; GetPlayerName(playerid,name,30); format(string,200,"[Admin]: %s ha usato il comando %s",name,command); return MessageToAdmins(COLOR_WHITE,string); }
forward MessageToAdmins(color,const string[]);
public MessageToAdmins(color,const string[])
{
for(new i = 0; i <= MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) == 1)
{
if (playerinfo[i][Level] >= 1)
{
SendClientMessage(i, color, string);
}
}
}
return 1;
}
stock sscanf(string[], format[], {Float,_}:...)
{
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs();
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if (ch >= '0' && ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return 1;
}
}
while ((ch = string[stringPos]) && ch != ' ');
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
ch,
num = 0;
while ((ch = string[stringPos++]))
{
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
case ' ':
{
break;
}
default:
{
return 1;
}
}
}
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{
new tmp[25];
strmid(tmp, string, stringPos, stringPos+sizeof(tmp)-2);
setarg(paramPos, 0, _:floatstr(tmp));
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != ' ')
{
setarg(paramPos, i++, ch);
}
if (!i) return 1;
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != ' ')
{
stringPos++;
}
while (string[stringPos] == ' ')
{
stringPos++;
}
paramPos++;
}
while (format[formatPos] == 'z') formatPos++;
return format[formatPos];
}
forward countdown();
public countdown()
{
if(cdt==6)
{
GameTextForAll("~p~Starting...",1000,6);
}
cdt--;
new text[20]; format(text,sizeof(text),"~w~%d",cdt);
for(new i = 0; i < MAX_PLAYERS; i++)
{
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
TogglePlayerControllable(i,0);
}
GameTextForAll(text,1000,6);
if (cdt==0)
{
GameTextForAll("~g~GO~ r~!",1000,6);
KillTimer(CountTimer);
for(new i = 0; i < MAX_PLAYERS; i++)
{
TogglePlayerControllable(i,1);
PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
}
}
}
//------------------------------------------
forward duel();
public duel()
{
if(cdt==6)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(InDuel[i] == 1)
{
GameTextForPlayer(i,"~p~Duel Starting...",1000,6);
}
}
}
cdt--;
new text[20]; format(text,sizeof(text),"~w~%d",cdt);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(InDuel[i] == 1)
{
PlayerPlaySound(i, 1056, 0.0, 0.0, 0.0);
TogglePlayerControllable(i,0);
GameTextForPlayer(i,text,1000,6);
}
}
if (cdt==0)
{
KillTimer(CountTimer);
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(InDuel[i] == 1)
{
TogglePlayerControllable(i,1);
PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
GameTextForPlayer(i,"~g~GO~ r~!",1000,6);
}
}
}
}
ShowScore(playerid)
{
new string[256], playername[MAX_PLAYER_NAME]; GetPlayerName(playerid, playername, sizeof(playername));
format(string, sizeof(string), "<> %s's Stats: Kills: %d | Deaths: %d | Ratio: %0.2f | Money: $%d",playername,playerinfo[playerid][Kills],playerinfo[playerid][Deaths], (Float:playerinfo[playerid][Kills]/Float:playerinfo[playerid][Deaths]),GetPlayerMoney(playerid));
SendClientMessage(playerid,COLOR_YELLOW, string);
}