#define FILTERSCRIPT
#include a_samp
#include a_mysql
#include zcmd
#define function%0(%1) forward%0(%1);public%0(%1)
enum {
DIALOG_FOMENU=1500,
DIALOG_SCP
}
enum serveradat {
servername[64],
modename[32],
mapname[32],
rcon_pass[64]
};
new
string[1024],
query[512],
line[512],
escape[256],
sInfo[serveradat]
;
new sql;
public OnFilterScriptInit() {
sql = mysql_connect(\"localhost\", \"root\", \"few\", \"\");
mysql_function_query(sql, \"SELECT * FROM `serverinfos`\", true, \"THREAD_LoadServerInfos\", \"\");
return 1;
}
public OnFilterScriptExit() {
mysql_close(sql);
return 1;
}
CMD:scp(playerid) {
if(!IsPlayerAdmin(playerid)) return 0;
string[0] = EOS;
line[0] = EOS;
format(line, sizeof(line), \"{ffffff}Szerver neve\\t{00aaff}[%s]\\n\", sInfo[servername]);
strcat(string, line);
format(line, sizeof(line), \"{ffffff}Mód neve\\t{30aaff}[%s]\\n\", sInfo[modename]);
strcat(string, line);
format(line, sizeof(line), \"{ffffff}Map neve\\t{60aaff}[%s]\\n\", sInfo[mapname]);
strcat(string, line);
format(line, sizeof(line), \"{ffffff}RCON jelszó\\t{90aaff}[%s]\\n\", sInfo[rcon_pass]);
strcat(string, line);
ShowPlayerDialog(playerid, DIALOG_FOMENU, 2, \"{ff0000}Szerver Control Panel\", string, \"Tovább\", \"Kilépés\");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
switch(dialogid) {
case DIALOG_FOMENU: {
if(!response) return 0;
SetPVarInt(playerid, \"sinfoItem\", listitem);
switch(listitem) {
case 0: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Szerver név\", \"Írd lentre a szervered új nevét\", \"Változtat\", \"Vissza\");
case 1: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Mód név\", \"Írd lentre a szervered új módnevét\", \"Változtat\", \"Vissza\");
case 2: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Map név\", \"Írd lentre a szervered új mapnevét\", \"Változtat\", \"Vissza\");
case 3: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Rcon Jelszó\", \"Írd lentre a szervered új Rcon jelszavát\", \"Változtat\", \"Vissza\");
}
}
case DIALOG_SCP: {
if(!response) return cmd_scp(playerid);
mysql_real_escape_string(inputtext, escape);
switch(GetPVarInt(playerid, \"sinfoItem\")) {
case 0: {
if(!(0 < strlen(inputtext) < 65)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver neve min. 1, max. 64 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET ServerName = \'%s\' WHERE ServerName = \'%s\'\", escape, sInfo[servername]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[servername], 64, escape);
format(line, sizeof(line), \"hostname %s\", escape);
SendRconCommand(line);
}
case 1: {
if(!(0 < strlen(inputtext) < 33)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver módjának neve min. 1, max. 32 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET ModeName = \'%s\' WHERE ModeName = \'%s\'\", escape, sInfo[modename]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[modename], 32, escape);
SetGameModeText(escape);
}
case 2: {
if(!(0 < strlen(inputtext) < 33)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver mapjának neve min. 1, max. 32 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET MapName = \'%s\' WHERE MapName = \'%s\'\", escape, sInfo[mapname]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[mapname], 32, escape);
format(line, sizeof(line), \"mapname %s\", escape);
SendRconCommand(line);
}
case 3: {
if(!(0 < strlen(inputtext) < 65)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver Rcon jelszava min. 1, max. 64 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET RconPassword = \'%s\' WHERE RconPassword = \'%s\'\", escape, sInfo[rcon_pass]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[rcon_pass], 64, escape);
format(line, sizeof(line), \"rcon_password %s\", escape);
SendRconCommand(line);
}
}
cmd_scp(playerid);
}
}
return 1;
}
function THREAD_Finish() return 1;
function THREAD_LoadServerInfos() {
new rows = cache_num_rows(sql);
for(new i; i < rows; i++) {
cache_get_row(i, 0, sInfo[servername], sql, 64);
cache_get_row(i, 1, sInfo[modename], sql, 32);
cache_get_row(i, 2, sInfo[mapname], sql, 32);
cache_get_row(i, 3, sInfo[rcon_pass], sql, 64);
}
format(line, sizeof(line), \"hostname %s\", sInfo[servername]);
SendRconCommand(line);
SetGameModeText(sInfo[modename]);
format(line, sizeof(line), \"mapname %s\", sInfo[mapname]);
SendRconCommand(line);
format(line, sizeof(line), \"rcon_password %s\", sInfo[rcon_pass]);
SendRconCommand(line);
return 1;
}
V2:
#define FILTERSCRIPT
#include a_samp
#include a_mysql
#include zcmd
#define function%0(%1) forward%0(%1);public%0(%1)
enum {
DIALOG_FOMENU=1500,
DIALOG_SCP
}
enum serveradat {
servername[64],
modename[32],
mapname[32],
rcon_pass[64],
Float:grav,
precord
};
new
string[1024],
query[512],
line[512],
escape[256],
sInfo[serveradat],
nowplayers
;
new sql;
public OnFilterScriptInit() {
sql = mysql_connect(\"localhost\", \"root\", \"few\", \"\");
mysql_function_query(sql, \"SELECT * FROM `serverinfos`\", true, \"THREAD_LoadServerInfos\", \"\");
return 1;
}
public OnFilterScriptExit() {
mysql_close(sql);
return 1;
}
public OnPlayerConnect(playerid) {
nowplayers ++;
if(nowplayers > sInfo[precord]) {
string[0] = EOS;
format(string, sizeof(string), \"Újabb játékos rekord született a szerveren: %i játékos!\", nowplayers);
SendClientMessageToAll(-1, string);
sInfo[precord] ++;
}
format(query, sizeof(query), \"UPDATE `serverinfos` SET pRecord = \'%i\' WHERE pRecord = \'%i\'\", nowplayers, sInfo[precord]-1);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
return 1;
}
public OnPlayerDisconnect(playerid, reason) {
nowplayers --;
return 1;
}
CMD:scp(playerid) {
if(!IsPlayerAdmin(playerid)) return 0;
string[0] = EOS;
line[0] = EOS;
format(line, sizeof(line), \"{ffffff}Szerver neve\\t{00aaff}[%s]\\n\", sInfo[servername]);
strcat(string, line);
format(line, sizeof(line), \"{ffffff}Mód neve\\t{30aaff}[%s]\\n\", sInfo[modename]);
strcat(string, line);
format(line, sizeof(line), \"{ffffff}Map neve\\t{60aaff}[%s]\\n\", sInfo[mapname]);
strcat(string, line);
format(line, sizeof(line), \"{ffffff}RCON jelszó\\t{90aaff}[%s]\\n\", sInfo[rcon_pass]);
strcat(string, line);
strcat(string, \"{ff0000}Szerver újraindítása\\n\");
strcat(string, \"{ffffff}Chat szöveg küldése\\n\");
format(line, sizeof(line), \"{ffffff}Gravitáció\\t{90aaff}[%f]\\n\", sInfo[grav]);
strcat(string, line);
format(line, sizeof(line), \"{ffffff}Játékos rekord\\t{90aaff}[%i]\\n\", sInfo[precord]);
strcat(string, line);
ShowPlayerDialog(playerid, DIALOG_FOMENU, 2, \"{ff0000}Szerver Control Panel\", string, \"Tovább\", \"Kilépés\");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
switch(dialogid) {
case DIALOG_FOMENU: {
if(!response) return 0;
SetPVarInt(playerid, \"sinfoItem\", listitem);
switch(listitem) {
case 0: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Szerver név\", \"Írd lentre a szervered új nevét\", \"Változtat\", \"Vissza\");
case 1: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Mód név\", \"Írd lentre a szervered új módnevét\", \"Változtat\", \"Vissza\");
case 2: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Map név\", \"Írd lentre a szervered új mapnevét\", \"Változtat\", \"Vissza\");
case 3: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Rcon Jelszó\", \"Írd lentre a szervered új Rcon jelszavát\", \"Változtat\", \"Vissza\");
case 4: {
SendClientMessageToAll(-1, \"A szerver 10 másodperc múlva újraindul! {ff0000}(RESTART)\");
SetTimer(\"ServerRestart\", 10000, false);
}
case 5: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Rcon kiírás\", \"Írd lentre a a kívánt szöveget ami a chaten fog megjelenni\", \"Küld\", \"Vissza\");
case 6: ShowPlayerDialog(playerid, DIALOG_SCP, DIALOG_STYLE_INPUT, \"{ffff66}Gravitáció\", \"Írd lentre az új gravitáció értékét\", \"Változtat\", \"Vissza\");
}
}
case DIALOG_SCP: {
if(!response) return cmd_scp(playerid);
mysql_real_escape_string(inputtext, escape);
switch(GetPVarInt(playerid, \"sinfoItem\")) {
case 0: {
if(!(0 < strlen(inputtext) < 65)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver neve min. 1, max. 64 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET ServerName = \'%s\' WHERE ServerName = \'%s\'\", escape, sInfo[servername]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[servername], 64, escape);
format(line, sizeof(line), \"hostname %s\", escape);
SendRconCommand(line);
}
case 1: {
if(!(0 < strlen(inputtext) < 33)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver módjának neve min. 1, max. 32 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET ModeName = \'%s\' WHERE ModeName = \'%s\'\", escape, sInfo[modename]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[modename], 32, escape);
SetGameModeText(escape);
}
case 2: {
if(!(0 < strlen(inputtext) < 33)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver mapjának neve min. 1, max. 32 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET MapName = \'%s\' WHERE MapName = \'%s\'\", escape, sInfo[mapname]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[mapname], 32, escape);
format(line, sizeof(line), \"mapname %s\", escape);
SendRconCommand(line);
}
case 3: {
if(!(0 < strlen(inputtext) < 65)) return SendClientMessage(playerid, 0xff6666ff, \"A szerver Rcon jelszava min. 1, max. 64 karakterbõl állhat!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET RconPassword = \'%s\' WHERE RconPassword = \'%s\'\", escape, sInfo[rcon_pass]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
format(sInfo[rcon_pass], 64, escape);
format(line, sizeof(line), \"rcon_password %s\", escape);
SendRconCommand(line);
}
// case 4 = gmx (restart)
case 5: {
if(!(0 < strlen(inputtext) < 129)) return SendClientMessage(playerid, 0xff6666ff, \"A beirandó Rcon szöveg mérete min. 1, max. 128 karakterbõl állhat!\"), cmd_scp(playerid);
format(line, sizeof(line), \"say %s\", inputtext);
SendRconCommand(line);
}
case 6: {
if(!strlen(inputtext) || !(strval(inputtext) <= 50 && strval(inputtext) >= -50)) return SendClientMessage(playerid, 0xff6666ff, \"A beirandó gravitációs érték min. -50.0, max. 50.0 közötti értéket kell megadnia!\"), cmd_scp(playerid);
format(query, sizeof(query), \"UPDATE `serverinfos` SET gravity = \'%f\' WHERE gravity = \'%f\'\", escape, sInfo[grav]);
mysql_function_query(sql, query, true, \"THREAD_Finish\", \"\");
sInfo[grav] = floatstr(escape);
SetGravity(sInfo[grav]);
}
}
cmd_scp(playerid);
}
}
return 1;
}
function THREAD_Finish() return 1;
function THREAD_LoadServerInfos() {
new rows = cache_num_rows(sql);
for(new i; i < rows; i++) {
cache_get_row(i, 0, sInfo[servername], sql, 64);
cache_get_row(i, 1, sInfo[modename], sql, 32);
cache_get_row(i, 2, sInfo[mapname], sql, 32);
cache_get_row(i, 3, sInfo[rcon_pass], sql, 64);
sInfo[grav] = cache_get_row_float(i, 4, sql);
sInfo[precord] = cache_get_row_int(i, 5, sql);
}
format(line, sizeof(line), \"hostname %s\", sInfo[servername]);
SendRconCommand(line);
SetGameModeText(sInfo[modename]);
format(line, sizeof(line), \"mapname %s\", sInfo[mapname]);
SendRconCommand(line);
format(line, sizeof(line), \"rcon_password %s\", sInfo[rcon_pass]);
SendRconCommand(line);
format(line, sizeof(line), \"gravity %f\", sInfo[grav]);
SendRconCommand(line);
return 1;
}
function ServerRestart() {
SendClientMessageToAll(-1, \"A szerver újraindul...\");
SendRconCommand(\"exit\");
return 1;
}
Használjátok egészséggel a szkriptet, ez a 4 beállítás még bõvülni fog, és ehhez kérném szépen leírni az ötleteiteket hogy tovább tudjam fejleszteni a szkriptet!
A MySQL-hez értõ emberkéktõl meg várom a kritikákat.
További szép napot és kellemes fórumozást!