public dcmd_commands(playerid, text[], help) { CHECK_STR(text) if (help) { YS_HELP("*** Lists all available commands at your level"); } else { new props, pages; new level = 0; level = CallRemoteFunction("YSGetUserLevel", "i", playerid); for (new i = 0; i < gComCount; i++) { if (gFuncLevels[i] <= level) props++; } pages = (props + 7) / 8; new page = strval(text); new string[64]; if (props == 0) { SendFormattedMessage(playerid, LG_MSG_COLOR, "*** No modules found"); } else if (props > 8) { if (page) { if (page <= pages) { for (new i = 0, j = 0, k = (page - 1) * 8, n = k + 8; i < gComCount && j < n; i++) { if (gFuncLevels[i] <= level) { if (j >= k) { format(string, sizeof (string), "*** /%s", comname("", i)); SendFormattedMessage(playerid, LG_MSG_COLOR, string); } j++; } } } format(string, sizeof (string), "*** Use \"/%ncommands #\" where # is 1 - %d to list", pages); SendFormattedMessage(playerid, LG_MSG_COLOR, string); } else { SendFormattedMessage(playerid, LG_MSG_COLOR, "*** More than 8 commands found"); format(string, sizeof (string), "*** Use \"/%ncommands #\" where # is 1 - %d to list", pages); SendFormattedMessage(playerid, LG_MSG_COLOR, string); } } else { //print("1"); for (new j = 0, i = 0; i < props && j < gComCount; j++) { //print("2"); if (gFuncLevels[j] <= level) { //print("3"); format(string, sizeof (string), "*** /%s", comname("", j)); SendFormattedMessage(playerid, LG_MSG_COLOR, string); i++; } } } } return 1; } public dcmd_help(playerid, text[], help) { CHECK_STR(text) if (help) { //new str[64]; //format(str, sizeof (str), "Provides information on the server script and commands")); YS_HELP("*** Provides information on the server script and commands"); } else { if (text[0]) { if (!ProcessCommand(playerid, text, 1)) { YS_HELP("*** Unknown command, no help available"); } } else { new str[MAX_STRING]; YS_HELP(" "); YS_HELP("*** Alex \"Y_Less\" Cole's server admin script (c) 2006"); format(str, sizeof (str), "*** Version %d.%02d.%02d", VERSION_MAJ, VERSION_MID, VERSION_MIN); YS_HELP(str); YS_HELP("***"); YS_HELP("*** Scripting help: mabako, DracoBlue, D-Kynen"); YS_HELP("*** Thanks to the SA:MP team and beteteam"); YS_HELP("***"); //format(str, sizeof (str), "*** Type \"/%s \" for more", comname("help")); //YS_HELP(str); YS_HELP("*** Type \"/%nhelp \" for more"); YS_HELP("*** info on a specific command"); //format(str, sizeof (str), "*** Type \"/%s\" for commands", comname("commands")); YS_HELP("*** Type \"/%ncommands\" for commands"); //YS_HELP(str); } //#pragma unused playerid, text, help } return 1; } comname(name[], num = -1, incpre = 1) { new str[MAX_STRING] = ""; // Not really a very MAX string but meh /*#if defined YS_ALT_NAMES_OFF //#define comname(%1) %1 if (num != -1) format(str, sizeof (str), "%s%s", prename(), GetCommand(num)); else format(str, sizeof (str), "%s%s", prename(), name); //return str; #else format(str, sizeof (str), "%s%s", prename(), name); #if !defined YS_ALT_NAMES_ON if (gComSet & YS_COMSET_USE_ALT) { #endif*/ if (num != -1) { format(str, sizeof (str), "%s%s", incpre ? prename() : "", GetComName(num)); //gAltNames[num][0] ? GetAltName(num) : GetCommand(num)); //printf("%s %d %s %s", str, gAltNames[num][0], GetAltName(num), GetCommand(num)); //str = "hi"; //return str; } else { for (new i = 0; i < gComCount; i++) { //printf("%s %s", name, GetCommand(i)); if (strcmp(name, gFuncNames[i]) == 0) { format(str, sizeof (str), "%s%s", incpre ? prename() : "", GetComName(i)); //return str; break; } } } /*#if !defined YS_ALT_NAMES_ON } #endif //return str; #endif*/ return str; } GetComName(num) { //new str[MAX_STRING] = ""; // Not really a very MAX string but meh //format(str, sizeof (str), "%s%s", prename(), gAltNames[num][0] ? GetAltName(num) : GetCommand(num)); #if !defined YS_ALT_NAMES_OFF #if !defined YS_ALT_NAMES_ON if (gAltNames[num][0]) { #endif /*for (new i = 0, j = strlen(gAltNames[num]); i < j; i++) { str[i] = gAltNames[num][i]; printf("%c", str[i]); }*/ //str = GetAltName(num); return gAltNames[num]; #if !defined YS_ALT_NAMES_ON } else { #endif #endif /*for (new i = 0, j = strlen(gFuncNames[num]); i < j; i++) { str[i] = gFuncNames[num][i]; printf("%c", str[i]); }*/ //str = GetCommand(num); return gFuncNames[num]; #if !defined YS_ALT_NAMES_OFF && !defined YS_ALT_NAMES_ON } #endif //format(str, sizeof (str), "%s%s", prename(), str); // WHY I have to do all that I have no idea, can't be efficient // But for some reason just using my old style format breaks. // OK, it seems it was the ? in format that was breaking it. //printf("%s", str); //return str; new str[MAX_FUNC_NAME] = ""; //str = ""; return str; } prename() { new str[9] = ""; #if !defined YS_USE_PREFIX_OFF #if !defined YS_USE_PREFIX_ON if (YS_COMSET_USE_PREFIX & gComSet) { #endif format(str, sizeof (str), "%s ", gPrefix[1]); #if !defined YS_USE_PREFIX_ON } #endif #endif return str; } public dcmd_loadmod(playerid, text[], help) { CHECK_STR(text) if (help) { YS_HELP("*** Loads a module by name (YSS_.amx)"); } else { if (text[0] == 0) { SendFormattedMessage(playerid, LG_MSG_COLOR, "*** You must enter a module name"); } else { new str[64]; format(str, sizeof (str), "reloadfs YSS_%s", text); SendRconCommand(str); } } return 1; } public dcmd_unloadmod(playerid, text[], help) { CHECK_STR(text) if (help) { YS_HELP("*** Unloads a script module by number"); //new str[32]; //format(str, sizeof (str), "*** Type \"/%s\" to list modules", comname("listmodules")); YS_HELP("*** Type \"/%nlistmodules\" to list modules"); } else { if (text[0] == 0) { SendFormattedMessage(playerid, 0xFF0000FF, "*** You must enter a module number"); } else { new num = strval(text); if (num < MAX_MODULES) { new str[64]; format(str, sizeof (str), "unloadfs YSS_%s", gModules[num]); SendRconCommand(str); } else { SendFormattedMessage(playerid, 0xFF0000FF, "*** Invalid module number"); } } } return 1; } public dcmd_reloadadmin(playerid, text[], help) { CHECK_STR(text) if (help) { YS_HELP("*** Reloads the admin script entirely"); YS_HELP("*** NOTE: Any unsaved settings will be lost"); } else { SendRconCommand("reloadfs YSS_rcon"); //RELOAD_SELF); } return 1; } public dcmd_listmod(playerid, text[], help) { CHECK_STR(text) if (help) { YS_HELP("*** Lists loaded server script modules"); } else { new props, pages, level = 0; level = CallRemoteFunction("YSGetUserLevel", "i", playerid) >= ComLevel("unloadmodule") ? 1 : 0; for (new i = 0; i < MAX_MODULES; i++) { if ((gModules[i][0] != 0) && (gModHidden[i] != 0 ? level : 1)) props++; } pages = (props + 7) / 8; new page = strval(text); new string[64]; if (props == 0) { SendFormattedMessage(playerid, LG_MSG_COLOR, "*** No modules found"); } else if (props > 8) { if (page) { if (page <= pages) { for (new i = 0, j = 0, k = (page - 1) * 8, n = k + 8; i < MAX_MODULES && j < n; i++) { if ((gModules[i][0] != 0) && (gModHidden[i] ? level : 1)) { if (j >= k) { format(string, sizeof (string), "*** Module %d: %s", i, gModNames[i]); SendFormattedMessage(playerid, LG_MSG_COLOR, string); } j++; } } } format(string, sizeof (string), "*** Use \"/%nlistmodules #\" where # is 1 - %d to list", pages); SendFormattedMessage(playerid, LG_MSG_COLOR, string); } else { SendFormattedMessage(playerid, LG_MSG_COLOR, "*** More than 8 modules found"); format(string, sizeof (string), "*** Use \"/%nlistmodules #\" where # is 1 - %d to list", pages); SendFormattedMessage(playerid, LG_MSG_COLOR, string); } } else { //print("1"); for (new j = 0, i = 0; i < props && j < MAX_MODULES; j++) { //print("2"); if (gModules[j][0] != 0 && gModHidden[j] ? level : 1) { //print("3"); format(string, sizeof (string), "*** Module %d: %s", i, gModNames[i]); SendFormattedMessage(playerid, LG_MSG_COLOR, string); i++; } } } } return 1; } public dcmd_setlevel(playerid, text[], help) { CHECK_STR(text) if (help) { YS_HELP("*** Sets the userlevel required to use a command"); YS_HELP("*** Parameters: "); YS_HELP("*** NOTE: must be the REAL function name"); YS_HELP("*** NOT an alternate name defined via the ini if used"); } else { new str[MAX_FUNC_NAME]; if (text[0] == 0) { SendFormattedMessage(playerid, 0xFF0000FF, "*** You must enter some paramters"); return 1; } new index = 0; str = strtok(text, index); /*if (str[0] == 0) { SendFormattedMessage(playerid, 0xFF0000FF, "*** You must enter some paramters"); format(str, sizeof (str), "*** Type \"/%s %s\" for more help", comname("help"), comname("setlevel", -1, 0)); return 1; }*/ /*if (text[index] == 0) {*/ new i; for (i = 0; i < MAX_COMMANDS; i++) { if (strcmp(gFuncNames[i], str, true, index) == 0) { gFuncLevels[i] = strval(strtok(text, index)); SendFormattedMessage(playerid, LG_MSG_COLOR, "*** Command level set"); break; } } if (i == MAX_COMMANDS) { SendFormattedMessage(playerid, 0xFF0000FF, "*** Command not found"); } } return 1; } public dcmd_reloadini(playerid, text[], help) { CHECK_STR(text) if (help) { YS_HELP("*** Reloads ALL settings from the ini files"); } else { //SendFormattedMessage(playerid, LG_MSG_COLOR, "*** Settings reloading"); //READINI CallRemoteFunction("ReadINI", "i", 0); SendFormattedMessage(playerid, LG_MSG_COLOR, "*** Settings reloaded"); //CallRemoteFunction("ReadINI", ""); } return 1; }