rendered paste body#include "yadhed.pwn"#include "yadcom.pwn"ProcessCommand(playerid, cmd[], help){ new len; //= strfind(cmd, " "); //if (len == -1) len = strlen(cmd); for (new i = 0; i < sizeof (gFuncNames); i++) { #if defined YS_ALT_NAMES_ON if (gAltNames[i][0] ? (len = strlen(gAltNames[i])) && strcmp(cmd, gAltNames[i], true, len) == 0 : (len = strlen(gFuncNames[i])) && strcmp(cmd, gFuncNames[i], true, len) == 0) { // Command entered if (gFuncLevel[i] <= gUserLevel[playerid]) { if ((cmd[len] == 0 && CallFunc(i, playerid, "", help)) || (cmd[len] == 32 && CallFunc(i, playerid, cmd[len + 1], help))) return 1; } else { if (gComSet & YS_COMSET_USE_WARNINGS) { SendClientMessage(playerid, 0xFF0000FF, "*** You cannot use that command"); } } break; } //if ((gAltNames[i][0] ? (strcmp(cmd, gAltNames[i], true, len) == 0 ? true : false) : (strcmp(cmd, gFuncNames[i], true, len) == 0 ? true : false)) && (gFuncLevel[i] <= gUserLevel[playerid]) && ((cmd[len] == 0 && CallFunc(i, playerid, "", help)) || (cmd[len] == 32 && CallFunc(i, playerid, cmd[len + 1], help)))) return 1; //if (((gAltNames[i][0] == 0 && strcmp(cmd, gFuncNames[i], true, len) == 0) || (strcmp(cmd, gAltNames[i], true, len) == 0)) && ((cmd[len] == 0 && CallFunc(i, playerid, "", help)) || (cmd[len] == 32 && CallFunc(i, playerid, cmd[len + 1], help)))) return 1; #else #if defined YS_ALT_NAMES_OFF len = strlen(gFuncNames[i]); //printf("%s %s %d", gFuncNames[i], cmd, i); if (strcmp(cmd, gFuncNames[i], true, len) == 0) // return 1; { // Command entered if (gFuncLevel[i] <= gUserLevel[playerid]) { if ((cmd[len] == 0 && CallFunc(i, playerid, "", help)) || (cmd[len] == 32 && CallFunc(i, playerid, cmd[len + 1], help))) return 1; } else { if (gComSet & YS_COMSET_USE_WARNINGS) { SendClientMessage(playerid, 0xFF0000FF, "*** You cannot use that command"); } } } #else if (((gComSet & YS_COMSET_USE_ALT) && (gAltNames[i][0] != 0)) ? (len = strlen(gAltNames[i])) && strcmp(cmd, gAltNames[i], true, len) == 0 : (len = strlen(gFuncNames[i])) && strcmp(cmd, gFuncNames[i], true, len) == 0) //if (((gAltNames[i][0] == 0 && strcmp(cmd, gFuncNames[i], true, len) == 0) || (strcmp(cmd, gAltNames[i], true, len) == 0))) return 1; { // Command entered if (gFuncLevel[i] <= gUserLevel[playerid]) { if ((cmd[len] == 0 && CallFunc(i, playerid, "", help)) || (cmd[len] == 32 && CallFunc(i, playerid, cmd[len + 1], help))) return 1; } else { if (gComSet & YS_COMSET_USE_WARNINGS) { SendClientMessage(playerid, 0xFF0000FF, "*** You cannot use that command"); return 1; } } } #endif #endif } return 0;}public OnFilterScriptInit(){ ReadINI(); #if !defined YS_LOGGING_OFF saveloop(); //gLastSave = mktime(); #endif #if !defined YS_INTERNAL_OFF SetInternalComms(); #endif /*#if !defined YS_CHAT_OFF for (new i = 0; i < MAX_PLAYERS; i++) { gChanColor[i] = (random(255) << 24) + (random(255) << 16) + (random(255) << 8) + 0xAA; } #endif*/ YS_LOG_CODE(YS_ON_FILTER_SCRIPT_INIT, "OnFilterScriptInit()") print("\n===================================="); print("| |"); print("| Y_Less's server script |"); print("| ---------------------- |"); print("| |"); print("| By Alex \"Y_Less\" Cole - (c) 2006 |"); print("| |"); print("====================================\n"); return 1;}#if !defined YS_INTERNAL_OFFSetInternalComms(){ #if !defined YS_INTERNALS_ON if (gIntenalSettings & YS_INT_USE) { #endif #if !defined YS_USE_PREFIX_OFF #if !defined YS_USE_PREFIX_ON YS_INT_SET_CODE(gComSet, YS_COMSET_USE_PREFIX, YS_INT_PREFIX) #else YS_INT_QUICK_CODE(YS_INT_PREFIX) #endif #else YS_INT_UNSET_CODE(YS_INT_PREFIX) #endif #if !defined YS_ALT_NAMES_OFF #if !defined YS_ALT_NAMES_ON YS_INT_SET_CODE(gComSet, YS_COMSET_USE_PREFIX, YS_INT_ALT) #else YS_INT_QUICK_CODE(YS_INT_ALT) #endif #else YS_INT_UNSET_CODE(YS_INT_ALT) #endif #if !defined YS_LOGGING_OFF #if !defined YS_LOGGING_ON YS_INT_SET_CODE(gRecArray, YS_USE_LOGGING, YS_INT_LOGGING) #else YS_INT_QUICK_CODE(YS_INT_LOGGING) #endif #else YS_INT_UNSET_CODE(YS_INT_LOGGING) #endif #if !defined YS_MESSAGES_OFF #if !defined YS_MESSAGES_ON YS_INT_SET_CODE(gMessageDat, MS_BITS_USE, YS_INT_MESSAGES) #else YS_INT_QUICK_CODE(YS_INT_MESSAGES) #endif #else YS_INT_UNSET_CODE(YS_INT_MESSAGES) #endif #if !defined YS_SECURE_COMMANDS_OFF #if !defined YS_SECURE_COMMANDS_ON YS_INT_SET_CODE(gUseSecure, YS_SEC_USE, YS_INT_SECURE) #else YS_INT_QUICK_CODE(YS_INT_SECURE) #endif #else YS_INT_UNSET_CODE(YS_INT_SECURE) #endif #if !defined YS_CHAT_OFF #if !defined YS_CHAT_ON YS_INT_SET_CODE(gChatSettings, YS_USE_CHAT, YS_INT_CHAT) #else YS_INT_QUICK_CODE(YS_INT_CHAT) #endif #else YS_INT_UNSET_CODE(YS_INT_CHAT) #endif #if !defined YS_USERS_OFF #if !defined YS_USERS_ON YS_INT_SET_CODE(gUserSettings, YU_USE_USERS, YS_INT_USERS) #else YS_INT_QUICK_CODE(YS_INT_USERS) #endif #else YS_INT_UNSET_CODE(YS_INT_USERS) #endif #if !defined YS_INDIVIDUAL_FILES_OFF #if !defined YS_INDIVIDUAL_FILES_ON YS_INT_SET_CODE(gUserSettings, YU_USE_INDIVIDUAL, YS_INT_INDI) #else YS_INT_QUICK_CODE(YS_INT_INDI) #endif #else YS_INT_UNSET_CODE(YS_INT_INDI) #endif #if !defined YS_INTERNAL_OFF #if !defined YS_INTERNAL_ON YS_INT_SET_CODE(gIntenalSettings, YS_INT_USE, YS_INT_INT) #else YS_INT_QUICK_CODE(YS_INT_INT) #endif #else YS_INT_UNSET_CODE(YS_INT_INT) #endif #if !defined YS_INTERNALS_ON } else { gIntenalSettings = 0; } #endif}#endifpublic OnFilterScriptExit(){ YS_LOG_CODE(YS_ON_FILTER_SCRIPT_EXIT, "OnFilterScriptExit()") return 1;}ReadINI(){ new File:inifile; if (fexist(INI_NAME)) { inifile = fopen(INI_NAME, io_read); if (inifile) { #if !defined YS_LOGGING_OFF new igdone; new fldone; #endif #if !defined YS_MESSAGES_OFF new mc = 0; new intext = 0; #endif new str[MAX_INI_LINE]; new group = 0; while (fread(inifile, str)) { // Read line first if (str[0] == '[') { StripNL(str); INI_GROUP(LOGGING) else INI_GROUP(MESSAGES) else INI_GROUP(MEMBERLEVELS) else INI_GROUP(COMMANDLEVELS) else INI_GROUP(ALTNAMES) else INI_GROUP(SETTINGS) else INI_GROUP(IGNORECOMMANDS) else INI_GROUP(FILTERCOMMANDS) } else { switch (group) { #if !defined YS_LOGGING_OFF case YS_INI_LOGGING: { INI_GET_B(OnFilterScriptInit, YS_ON_FILTER_SCRIPT_INIT, 18, gRecArray) else INI_GET_B(OnFilterScriptExit, YS_ON_FILTER_SCRIPT_EXIT, 18, gRecArray) else INI_GET_B(OnPlayerRequestClass, YS_ON_PLAYER_REQUEST_CLASS, 20, gRecArray) else INI_GET_B(OnPlayerRequestSpawn, YS_ON_PLAYER_REQUEST_SPAWN, 20, gRecArray) else INI_GET_B(OnPlayerConnect, YS_ON_PLAYER_CONNECT, 15, gRecArray) else INI_GET_B(OnPlayerDisconnect, YS_ON_PLAYER_DISCONNECT, 18, gRecArray) else INI_GET_B(OnPlayerSpawn, YS_ON_PLAYER_SPAWN, 13, gRecArray) else INI_GET_B(OnPlayerDeath, YS_ON_PLAYER_DEATH, 13, gRecArray) else INI_GET_B(OnVehicleSpawn, YS_ON_VEHICLE_SPAWN, 14, gRecArray) else INI_GET_B(OnVehicleDeath, YS_ON_VEHICLE_DEATH, 14, gRecArray) else INI_GET_B(OnPlayerText, YS_ON_PLAYER_TEXT, 12, gRecArray) else INI_GET_B(OnPlayerPrivmsg, YS_ON_PLAYER_PRIVMSG, 15, gRecArray) else INI_GET_B(OnPlayerCommandText, YS_ON_PLAYER_COMMAND_TEXT, 19, gRecArray) else INI_GET_B(OnPlayerInfoChange, YS_ON_PLAYER_INFO_CHANGE, 18, gRecArray) else INI_GET_B(OnPlayerEnterVehicle, YS_ON_PLAYER_ENTER_VEHICLE, 20, gRecArray) else INI_GET_B(OnPlayerExitVehicle, YS_ON_PLAYER_EXIT_VEHICLE, 19, gRecArray) else INI_GET_B(OnPlayerStateChange, YS_ON_PLAYER_STATE_CHANGE, 19, gRecArray) else INI_GET_B(OnPlayerEnterCheckpoint, YS_ON_PLAYER_ENTER_CHECKPOINT, 23, gRecArray) else INI_GET_B(OnPlayerLeaveCheckpoint, YS_ON_PLAYER_LEAVE_CHECKPOINT, 23, gRecArray) } #endif #if !defined YS_LOGGING_OFF || !defined YS_SECURE_COMMANDS_OFF case YS_INI_IGNORECOMMANDS: { StripNL(str); if (str[0]) { if (igdone < MAX_SKIPPED_COMMANDS) { strmid(gIgnoredCommands[igdone], str, 0, strlen(str), YS_MAX_CMD_LENGTH); igdone++; } else { print("YSS warning: Max ignored commands reached, some may not be ignored"); } } } case YS_INI_FILTERCOMMANDS: { StripNL(str); if (str[0]) { if (fldone < MAX_SKIPPED_COMMANDS) { strmid(gFilteredCommands[fldone], str, 0, strlen(str), YS_MAX_CMD_LENGTH); fldone++; } else { print("YSS warning: Max filtered commands reached, some may not be filtered"); } } } #endif #if !defined YS_MESSAGES_OFF case YS_INI_MESSAGES: { if (!intext) { if (mc < YS_MAX_MESSAGES) { //INI_GET_B(Use, MS_TYPE_USE, 3, gMessages[mc][MS_TYPE]) INI_GET_B(Ignore, MS_TYPE_IGNORE, 6, gMessages[mc][MS_TYPE]) else if (strcmp(str, "Type", true, 4) == 0) { gMessages[mc][MS_TYPE] &= 0xFFFF0000; gMessages[mc][MS_TYPE] += strval(ReturnINIValue(str[4])); } else INI_GET_H(Color, gMessages[mc][MS_INFO], 5) else INI_GET_I(Time, gMessages[mc][MS_INFO], 4) else INI_GET_B(Spawn, MS_BITS_MOTD_TYPE, 5, gMessageDat) else if (strcmp(str, "Connect", true, 7) == 0) { if (strval(ReturnINIValue(str[7]))) { gMessageDat &= -1 ^ MS_BITS_MOTD_TYPE; } else { gMessageDat |= MS_BITS_MOTD_TYPE; }} else INI_GET_B(Include, MS_BITS_MOTD_INC, 7, gMessageDat) else if (strcmp(str, "Motd", true, 4) == 0) { gMessageDat &= 0xFFFFFF00; if (strval(ReturnINIValue(str[4]))) { gMessageDat |= mc & 0xFF; } else { gMessageDat |= 0xFF; } } //else INI_GET_I(Count, gMessageCount, 5) else if (strcmp(str, "Text", true, 4) == 0) { intext = 1; //print("hi"); } } else { print("YSS warning: Max messages reached"); intext = -1; } } else if (intext > 0) { if (str[0] > 0x20)// && str[0] != ' ') { //printf("%s %d %d", str, mc, intext); StripNL(str); switch (intext) { case 1: { //strmid(gMessages[mc][MS_TEXT_0], str, 0, MAX_INI_LINE); format(gMessages[mc][MS_TEXT_0], MAX_INI_LINE, "%s", str); //printf("stored? %s", gMessages[mc][MS_TEXT_0]); } case 2: { format(gMessages[mc][MS_TEXT_1], MAX_INI_LINE, "%s", str); } case 3: { format(gMessages[mc][MS_TEXT_2], MAX_INI_LINE, "%s", str); } case 4: { format(gMessages[mc][MS_TEXT_3], MAX_INI_LINE, "%s", str); } case 5: { format(gMessages[mc][MS_TEXT_4], MAX_INI_LINE, "%s", str); } default: { intext = -1; } } intext++; } else { intext = 0; mc++; } } } #endif case YS_INI_MEMBERLEVELS: { new num[3]; new i, j; i = GetININame(num, str); j = strval(num); if (j < MAX_LEVELS) { strmid(gLevelNames[j], ReturnINIValue(str[i]), 0, MAX_INI_LINE); StripNL(gLevelNames[j]); } else { printf("YSS warning: Level title excedes maximum levels (%d)", MAX_LEVELS); } } case YS_INI_COMMANDLEVELS: { StripNL(str); if (str[0]) { new com[YS_MAX_CMD_LENGTH]; new i, j; i = GetININame(com, str); /*while (str[i] != ' ' && str[i] != '=' && str[i] != 0) { com[i] = str[i]; i++; }*/ for (j = 0; j < sizeof (gFuncNames); j++) { if (strcmp(gFuncNames[j], com, true) == 0) { gFuncLevel[j] = strval(ReturnINIValue(str[i])); break; } } if (j == sizeof (gFuncNames)) printf("YSS warning: Could not find command for level: %s", com); //printf("%d", ((gComSet & YS_COMSET_USE_ALT) && (gAltNames[j][0] != 0)) ? 27 : 11); } } #if !defined YS_ALT_NAMES_OFF case YS_INI_ALTNAMES: { StripNL(str); if (str[0]) { new com[YS_MAX_CMD_LENGTH]; new i, j; i = GetININame(com, str); /*while (str[i] != ' ' && str[i] != '=' && str[i] != 0) { com[i] = str[i]; i++; }*/ while (str[i] == ' ' || str[i] == '=' || str[i] == '/') i++; for (j = 0; j < sizeof (gFuncNames); j++) { if (strcmp(gFuncNames[j], com, true) == 0) { //if (strfind(str, "/", false, i) != -1) i++; strmid(gAltNames[j], str, i, strlen(str)); break; } } if (j == sizeof (gFuncNames)) printf("YSS warning: Could not find command for alt name: %s", com); //printf("%d", ((gComSet & YS_COMSET_USE_ALT) && (gAltNames[j][0] != 0)) ? 27 : 11); } } #endif case YS_INI_SETTINGS: { INI_GET_B(CommandWarnings, YS_COMSET_USE_WARNINGS, 15, gComSet) /*if (strcmp(str, "CommandWarnings", true, 15) == 0) { if (strval(ReturnINIValue(str[15]))) { gComSet |= 0x0000FF00; } else { gComSet &= 0xFFFF00FF; } }*/ #if !defined YS_LOGGING_OFF else INI_GET_S(DateFormat, gDateFormat, 10) else INI_GET_B(UseLogging, YS_USE_LOGGING, 10, gRecArray) else INI_GET_B(ExpandParameters, YS_USE_EXPANDED_PARS, 16, gRecArray) else INI_GET_B(NameParameters, YS_USE_PAR_NAMING, 14, gRecArray) else INI_GET_B(UseDailySaves, YS_USE_DAILY_SAVES, 13, gRecArray) else INI_GET_I(SaveDelay, gSaveDelay, 9) #endif #if !defined YS_USERS_OFF else INI_GET_B(UseUsers, YU_USE_USERS, 8, gUserSettings) #endif /*#if !defined YS_INTERNAL_OFF else INI_GET_B(gIntenalSettings, YS_INT_USE, , gIntenalSettings) #endif*/ #if !defined YS_CHAT_OFF else INI_GET_H(ChatColor, gChatColor, 9) else INI_GET_B(UseChat, YS_USE_CHAT, 7, gChatSettings) #endif #if !defined YS_SECURE_COMMANDS_OFF else INI_GET_B(UseSecure, YS_SEC_USE, 9, gUseSecure) else INI_GET_B(RecSecure, YS_SEC_REC, 9, gUseSecure) #endif #if !defined YS_INTERNAL_OFF else INI_GET_B(UseComms, YS_INT_USE, 8, gIntenalSettings) #endif #if !defined YS_ALT_NAMES_OFF else INI_GET_B(UseAltNames, YS_COMSET_USE_ALT, 11, gComSet) /*else if (strcmp(str, "UseAltNames", true, 11) == 0) { if (strval(ReturnINIValue(str[11]))) { gComSet |= 0x00FF0000; } else { gComSet &= 0xFF00FFFF; } }*/ #endif #if !defined YS_USE_PREFIX_OFF else INI_GET_B(UsePrefix, YS_COMSET_USE_PREFIX, 9, gComSet) /*else if (strcmp(str, "UsePrefix", true, 9) == 0) { if (strval(ReturnINIValue(str[9]))) { gComSet |= 0x000000FF; } else { gComSet &= 0xFFFFFF00; } }*/ else if (strcmp(str, "Prefix", true, 6) == 0) { //gPrefix = ReturnINIValue(str[6]); format(gPrefix, sizeof (gPrefix), "%s%s", strfind(str, "/", false, 6) == -1 ? "/" : "", ReturnINIValue(str[6])); StripNL(gPrefix); } //INI_GET_S(Prefix, gPrefix, 6) #endif #if !defined YS_MESSAGES_OFF else INI_GET_B(UseMessages, MS_BITS_USE, 11, gMessageDat) else INI_GET_I(MessageDelay, gMessageDelay, 12) /*else if (strcmp(str, "MessageDelay", true, 12) == 0) { gMessageDat &= -1 ^ MS_BITS_COUNT; gMessageDat |= (strval(ReturnINIValue(str[12])) << 8) & MS_BITS_COUNT; }*/ //printf("%s", gDateFormat); #endif } } } } #if !defined YS_MESSAGES_OFF gMessageDat &= 0xFFFF00FF; new c; for (new i = 0; i < YS_MAX_MESSAGES; i++) { if (gMessages[i][MS_TEXT_0][0] != 0) { //printf("%s %d", gMessages[i][MS_TEXT_0], c); c++; //gMessageDat += 256; // (+= 1 << 8) } } gMessageDat |= (c << 8) & MS_BITS_COUNT; //printf("%d %d", gMessageDat, (gMessageDat & MS_BITS_COUNT) >>> 8); #endif print("YSS message: Settings loaded"); } else { print("YSS warning: Could not read ini file, default settings loaded"); } } else { print("YSS warning: Could not find ini file, default settings loaded"); }}StripNL(str[]){ new l = strlen(str) - 1; if (l != -1 && (str[l] == '\n' || str[l] == '\r')) { str[l] = 0; l--; if (l != -1 && (str[l] == '\n' || str[l] == '\r')) { str[l] = 0; } }}GetININame(name[], str[]){ new i; while (str[i] != ' ' && str[i] != '=' && str[i] != 0) { name[i] = str[i]; i++; } return i;}ReturnINIValue(string[]){ //#pragma unused ReturnINIValue new retstr[MAX_INI_LINE] = ""; new i = 0, j; j = strlen(string); while ((string[i] == ' ' || string[i] == '=') && i < j) { i++; } if (i < j) { strmid(retstr, string, i, j); } return retstr; /*new e = strfind(str, "=") + 1; if (e == strlen(str)) return 0; return strtok(str, e);*/}prename(){ new str[9]; #if !defined YS_USE_PREFIX_OFF #if !defined YS_USE_PREFIX_ON if (YS_COMSET_USE_PREFIX & gComSet) { #endif //if (YS_COMSET_USE_PREFIX & gComSet) //{ format(str, sizeof (str), "%s ", gPrefix[1]); //} //#else //format(str, sizeof (str), "%s ", gPrefix[1]); #if !defined YS_USE_PREFIX_ON } #endif #endif return str;}/* prename() { new str[9]; format(str, sizeof (str), "%s ", gPrefix[1]); return str; } #else prename() { new str[9]; if (YS_COMSET_USE_PREFIX & gComSet) { format(str, sizeof (str), "%s ", gPrefix[1]); } return str; } #endif#else#endif*/comname(name[], num = -1){ new str[YS_MAX_CMD_LENGTH + 10]; #if defined YS_ALT_NAMES_OFF //#define comname(%1) %1 if (num != -1) format(str, sizeof (str), "%s%s", prename(), gFuncNames[num]); else format(str, sizeof (str), "%s%s", prename(), name); return str; #else #if !defined YS_ALT_NAMES_ON if (gComSet & YS_COMSET_USE_ALT) { #endif if (num != -1) { format(str, sizeof (str), "%s%s", prename(), gAltNames[num][0] ? gAltNames[num] : gFuncNames[num]); return str; } for (new i = 0; i < sizeof (gFuncNames); i++) { if (strcmp(name, gFuncNames[i]) == 0) { format(str, sizeof (str), "%s%s", prename(), gAltNames[i][0] ? gAltNames[i] : gFuncNames[i]); return str; } } #if !defined YS_ALT_NAMES_ON } #endif format(str, sizeof (str), "%s%s", prename(), name); return str; #endif}#if !defined YS_USERS_OFF || !defined YS_CHAT_OFFIsInteger(string[]){ for (new i = 0, j = strlen(string); i < j; i++) { if (string[i] > '9' || string[i] < '0') return 0; } return 1;}#endif#if !defined YS_USERS_OFFstrtok(string[], &index){ new length = strlen(string); while ((index < length) && (string[index] <= ' ')) { index++; // Strip leading spaces } new offset = index; new result[32]; while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof (result) - 1))) { result[index - offset] = string[index]; index++; } result[index - offset] = EOS; while ((index < length) && (string[index] <= ' ')) { index++; // Strip trailing spaces (required now) } return result;}MakeHash(str[]){ static charset[] = "#|NrT_^+=QMh`JdnSF<9ZzXjwEK¬¦IU8ay\\3bRgH[(C)2O06 Y-Less.com]$4%5Wk;@'xVuG7*!1\"£Pp{&l:i~DfvB}qtA,>?/"; static css = 99; //(size of ESCAPED charset string) new target[PASS_LENGTH]; //new hash = 1; //new i = 0; //new b, c, d, f; /*while ((str[i]) && (i < size)) { hash %= str[i]; //f = ((b & c) | ((!b) & d)); }*/ new j = strlen(str); new maxj = (((j + 16) / 16) * 16); if (maxj > PASS_LENGTH - 1) maxj = PASS_LENGTH; // Limit length for errors //new maxj2 = (j >> 3 + 1) << 3; new sum = j; new tmp[2] = 0; for (new i = 0; i < maxj; i++) { tmp[0] = (i >= j) ? ' ' : str[i]; sum = (sum + strfind(charset, tmp) + 1) % css; //printf("%d, %d, %c", strfind(charset, tmp), sum, charset[sum]); target[i] = charset[sum]; } target[maxj] = '\0'; return target;}SavePlayer(playerid, text[] = "", ban = -1, mute = -1, level = -1){ if (fexist(USER_FILE_INDEX)) { new File:bla = fopen(USER_FILE_INDEX, io_read); new File:temp = fopen("YU_TMP_FILE", io_write); if (bla && temp) { new name[256]; GetPlayerName(playerid, name, sizeof (name)); new str[256]; while (fread(bla, str)) { new idx = 0; if (strcmp(strtok(str, idx), name) == 0) { StripNL(str); format(name, sizeof (name), "%s %d", name, strval(strtok(str, idx))); new num; num = strval(strtok(str, idx)); if (ban == -1) ban = num; num = strval(strtok(str, idx)); if (mute == -1) mute = num; num = strval(strtok(str, idx)); if (level == -1) level = num; format(name, sizeof (name), "%s %d %d %d", name, ban, mute, level); if (text[0]) { format(str, sizeof (str), "%s %s\r\n", name, text); } else { strmid(str, str, idx, strlen(str)); format(str, sizeof (str), "%s %s\r\n", name, str); } } fwrite(temp, str); } fclose(temp); fclose(bla); if (fremove(USER_FILE_INDEX)) { bla = fopen(USER_FILE_INDEX, io_write); temp = fopen("YU_TMP_FILE", io_read); while (fread(temp, str)) { fwrite(bla, str); } fclose(bla); fclose(temp); fremove("YU_TMP_FILE"); } else { return 0; } } else { return 0; } } else { return 0; } return 1;}#endif#if !defined YS_MESSAGES_OFF || !defined YS_CHAT_OFFhexval(string[]){ new m = 0; if (string[0] == '0' && string[1] == 'x') m = 2; new ret = 0; for (new i = m, j = 28; i < 8 + m; i++, j -= 4) { new k = string[i]; if (k >= '0' && k <= '9') { ret += (k - 0x30) << j; } else if (k >= 'A' && k <= 'F') { ret += (k - 0x37) << j; } else if (k >= 'a' && k <= 'f') { ret += (k - 0x57) << j; } else { return 0; } } return ret;}#endif#if !defined YS_MESSAGES_OFFMessageCheck(d = 255, playerid = INVALID_PLAYER_ID){ //print("hi"); static lastcall; #if !defined YS_MESSAGES_ON if (gMessageDat & MS_BITS_USE) { #endif //print("hi"); if (mktime() - lastcall >= gMessageDelay) { // Display a message //d = random((gMessageDat & MS_BITS_COUNT) >>> 8); //printf("%d %d %d", d, gMessageDat & MS_BITS_COUNT, (gMessageDat & MS_BITS_COUNT) >>> 8); //printf("%d %d %d %d", (MS_TYPE_IGNORE & gMessages[d][MS_TYPE]), gMessageDat & MS_BITS_MOTD, d, gMessageDat & MS_BITS_MOTD_INC); //printf("%d", (MS_TYPE_IGNORE & gMessages[d][MS_TYPE])); if (d == 255) while (d == 255 || ((gMessageDat & MS_BITS_MOTD) == d && !(gMessageDat & MS_BITS_MOTD_INC)) || (MS_TYPE_IGNORE & gMessages[d][MS_TYPE])) d = random((gMessageDat & MS_BITS_COUNT) >>> 8); //{ if (playerid == INVALID_PLAYER_ID) { if (gMessages[d][MS_TYPE] & 0xFFFF) { GameTextForAll(gMessages[d][MS_TEXT_0], gMessages[d][MS_INFO] * 1000, gMessages[d][MS_TYPE] & 0xFFFF); } else { new c = gMessages[d][MS_INFO]; if (gMessages[d][MS_TEXT_0][0]) SendClientMessageToAll(c, gMessages[d][MS_TEXT_0]); if (gMessages[d][MS_TEXT_1][0]) SendClientMessageToAll(c, gMessages[d][MS_TEXT_1]); if (gMessages[d][MS_TEXT_2][0]) SendClientMessageToAll(c, gMessages[d][MS_TEXT_2]); if (gMessages[d][MS_TEXT_3][0]) SendClientMessageToAll(c, gMessages[d][MS_TEXT_3]); if (gMessages[d][MS_TEXT_4][0]) SendClientMessageToAll(c, gMessages[d][MS_TEXT_4]); } } else { if (gMessages[d][MS_TYPE] & 0xFFFF) { GameTextForPlayer(playerid, gMessages[d][MS_TEXT_0], gMessages[d][MS_INFO] * 1000, gMessages[d][MS_TYPE] & 0xFFFF); } else { new c = gMessages[d][MS_INFO]; if (gMessages[d][MS_TEXT_0][0]) SendClientMessage(playerid, c, gMessages[d][MS_TEXT_0]); if (gMessages[d][MS_TEXT_1][0]) SendClientMessage(playerid, c, gMessages[d][MS_TEXT_1]); if (gMessages[d][MS_TEXT_2][0]) SendClientMessage(playerid, c, gMessages[d][MS_TEXT_2]); if (gMessages[d][MS_TEXT_3][0]) SendClientMessage(playerid, c, gMessages[d][MS_TEXT_3]); if (gMessages[d][MS_TEXT_4][0]) SendClientMessage(playerid, c, gMessages[d][MS_TEXT_4]); } } } #if !defined YS_MESSAGES_ON } #endif lastcall = mktime();}#endif#if !defined YS_LOGGING_OFF || !defined YS_MESSAGES_OFFmktime(){ static days_of_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; new hour, minute, second; gettime(hour, minute, second); new timestamp; timestamp = second + minute * 60 + hour * 3600; getdate(hour, minute, second); if (((hour % 4 == 0) && (hour % 100 != 0)) || (hour % 400 == 0)) { days_of_month[1] = 29; } else { days_of_month[1] = 28; } if (minute > 1) { // No January Calculation, because its always the 0 past months for (new i = 0; i < minute - 1; i++) { second += days_of_month[i]; } } timestamp += second * 86400; // printf("Days this hour: %d",days_this_year); for (new j = 1970; j < hour; j++) { timestamp += 31536000; if (((hour % 4 == 0) && (hour % 100 != 0)) || (hour % 400 == 0)) timestamp += 86400; // Schaltjahr + 1 Tag } return timestamp;}#endif#if !defined YS_LOGGING_OFFyLog(string[]){ //new File:g_fLogFile; if (g_fLogFile) { /*strcat(gTempBuf, MakeFormattedTime()); strcat(gTempBuf, ": "); strcat(gTempBuf, string); strcat(gTempBuf, "\r\n"); } else {*/ fwrite(g_fLogFile, MakeFormattedTime()); fwrite(g_fLogFile, ": "); fwrite(g_fLogFile, string); fwrite(g_fLogFile, "\r\n"); } //new time = mktime(); //printf("%d %d %d %d", time, gLastSave, gSaveDelay, time - gLastSave); if (mktime() - gLastSave >= gSaveDelay) { saveloop(); } return 1;}saveloop(autos = 0){ static run = 0, day; static str[32]; if (run) { if (g_fLogFile) { fwrite(g_fLogFile, MakeFormattedTime()); if (autos) { fwrite(g_fLogFile, ": Logs auto-saved\r\n"); } else { fwrite(g_fLogFile, ": Logs saved\r\n"); } fclose(g_fLogFile); } else { print("YSS error: No active log file, some logs may be missing"); } new d; getdate(d, d, d); if ((gRecArray & YS_USE_DAILY_SAVES) && (d != day)) { openlogfile(str, ": New file created\r\n", sizeof (str)); day = d; } else { g_fLogFile = fopen(str, io_append); if (!g_fLogFile) { print("YSS error: Could not open log file, the server will not be logged"); print(" Type \"/ys save\" (or equivalent) to try again"); } } } else { run = 1; openlogfile(str, ": Server started\r\n", sizeof (str)); getdate(day, day, day); } gLastSave = mktime();}openlogfile(name[], str[], len){ strmid(name, MakeFormattedDate(""), 0, 10, len); format(name, len, LOG_FILE_NAME, name); g_fLogFile = fopen(name, io_append); if (!g_fLogFile) { print("YSS error: Could not open log file, the server will not be logged"); print(" Type \"/ys save\" (or equivalent) to try again"); } else { fwrite(g_fLogFile, "\r\n====================================\r\n"); fwrite(g_fLogFile, "| |\r\n"); fwrite(g_fLogFile, "| Y_Less's server script |\r\n"); fwrite(g_fLogFile, "| ---------------------- |\r\n"); fwrite(g_fLogFile, "| |\r\n"); fwrite(g_fLogFile, "| By Alex \"Y_Less\" Cole - (c) 2006 |\r\n"); fwrite(g_fLogFile, "| |\r\n"); fwrite(g_fLogFile, "====================================\r\n\r\n"); fwrite(g_fLogFile, MakeFormattedTime()); fwrite(g_fLogFile, str); }}MakeFormattedTime(){ new str[9], h, m, s; gettime(h, m, s); format(str, sizeof (str), "%d:%02d:%02d", h, m, s); return str;}MakeFormattedDate(split[]){ new str[11], d, m, y, j; getdate(y, m, d); if (strlen(gDateFormat) == 8) y %= 100; /*{ case 10: { yf = "%s%04d"; } case 8: { yf = "%s%02d"; } default: { print("Invalid date format"); return str; } }*/ for (new i = 0; i < 3; i++) { if (gDateFormat[j] == 'd') format(str, sizeof (str), "%s%02d", str, d); if (gDateFormat[j] == 'm') format(str, sizeof (str), "%s%02d", str, m); if (gDateFormat[j] == 'y') format(str, sizeof (str), "%s%02d", str, y); if (i < 2) { j = strfind(gDateFormat, ":", false, j) + 1; strcat(str, split); } } return str;}ReturnPlayerIDData(playerid){ new pdat[128]; if (IsPlayerConnected(playerid)) { if (gRecArray & YS_USE_EXPANDED_PARS) // Change { format(pdat, sizeof (pdat), "%d: %s", playerid, ReturnPlayerName(playerid)); } else { format(pdat, sizeof (pdat), "%d", playerid); } } else { if (gRecArray & YS_USE_EXPANDED_PARS) { pdat = "-1: None"; } else { pdat = "-1"; } } return pdat;}ReturnPlayerName(playerid){ new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof (pname)); return pname;}#endifpublic OnPlayerRequestClass(playerid, classid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_REQUEST_CLASS, "OnPlayerRequestClass(%s%s, %s%d)", PAR_DAT(playerid), ID_DAT, PAR_DAT(classid), 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){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_REQUEST_SPAWN, "OnPlayerRequestSpawn(%s%s)", PAR_DAT(playerid), ID_DAT) return 1;}public OnPlayerConnect(playerid){ #if !defined YS_MESSAGES_OFF #if !defined YS_MESSAGES_ON if (gMessageDat & MS_BITS_USE) { #endif new motd = gMessageDat & MS_BITS_MOTD; if (!(gMessageDat & MS_BITS_MOTD_TYPE) && motd != 0xFF) MessageCheck(motd, playerid); else YS_MESSAGE_CODE #if !defined YS_MESSAGES_ON } #endif #endif YS_LOG_CODE(YS_ON_PLAYER_CONNECT, "OnPlayerConnect(%s%s)", PAR_DAT(playerid), ID_DAT) #if !defined YS_LOGGING_OFF gPlayersConnected++; #endif #if !defined YS_CHAT_OFF gChannel[playerid] = -1; #endif return 1;}public OnPlayerDisconnect(playerid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_DISCONNECT, "OnPlayerDisconnect(%s%s)", PAR_DAT(playerid), ID_DAT) #if !defined YS_CHAT_OFF if (gChannel[playerid] != -1) { gChanInfo[gChannel[playerid]]--; gChannel[playerid] = -1; } #endif #if !defined YS_LOGGING_OFF gPlayersConnected-- ; if (gPlayersConnected == 0) { saveloop(1); } #endif return 1;}public OnPlayerSpawn(playerid){ #if !defined YS_MESSAGES_OFF #if !defined YS_MESSAGES_ON if (gMessageDat & MS_BITS_USE) { #endif new motd = gMessageDat & MS_BITS_MOTD; if ((gMessageDat & MS_BITS_MOTD_TYPE) && motd != 0xFF) MessageCheck(motd, playerid); else YS_MESSAGE_CODE #if !defined YS_MESSAGES_ON } #endif #endif YS_LOG_CODE(YS_ON_PLAYER_SPAWN, "OnPlayerSpawn(%s%s)", PAR_DAT(playerid), ID_DAT) //dfb = INI afijo;;; * 4 return 1;}public OnPlayerDeath(playerid, killerid, reason){ YS_MESSAGE_CODE #if !defined YS_LOGGING_OFF static reasonnames[][RS_DAT_ENUM] = { {"0: UNKNOWN_DEATH_REASON", "0"}, {"1: WEAPON_BRASSKNUCKLE", "1"}, {"2: WEAPON_GOLFCLUB", "2"}, {"3: WEAPON_NITESTICK", "3"}, {"4: WEAPON_KNIFE", "4"}, {"5: WEAPON_BAT", "5"}, {"6: WEAPON_SHOVEL", "6"}, {"7: WEAPON_POOLSTICK", "7"}, {"8: WEAPON_KATANA", "8"}, {"9: WEAPON_CHAINSAW", "9"}, {"10: WEAPON_DILDO", "10"}, {"11: WEAPON_DILDO2", "11"}, {"12: WEAPON_VIBRATOR", "12"}, {"13: WEAPON_VIBRATOR2", "13"}, {"14: WEAPON_FLOWER", "14"}, {"15: WEAPON_CANE", "15"}, {"16: WEAPON_GRENADE", "16"}, {"17: WEAPON_TEARGAS", "17"}, {"18: WEAPON_MOLTOV", "18"}, {"19: UNKNOWN_DEATH_REASON", "19"}, {"20: UNKNOWN_DEATH_REASON", "20"}, {"21: UNKNOWN_DEATH_REASON", "21"}, {"22: WEAPON_COLT45", "22"}, {"23: WEAPON_SILENCED", "23"}, {"24: WEAPON_DEAGLE", "24"}, {"25: WEAPON_SHOTGUN", "25"}, {"26: WEAPON_SAWEDOFF", "26"}, {"27: WEAPON_SHOTGSPA", "27"}, {"28: WEAPON_UZI", "28"}, {"29: WEAPON_MP5", "29"}, {"30: WEAPON_AK47", "30"}, {"31: WEAPON_M4", "31"}, {"32: WEAPON_TEC9", "32"}, {"33: WEAPON_RIFLE", "33"}, {"34: WEAPON_SNIPER", "34"}, {"35: WEAPON_ROCKETLAUNCHER", "35"}, {"36: WEAPON_HEATSEEKER", "36"}, {"37: WEAPON_FLAMETHROWER", "37"}, {"38: WEAPON_MINIGUN", "38"}, {"39: WEAPON_SATCHEL", "39"}, {"40: WEAPON_BOMB", "40"}, {"41: WEAPON_SPRAYCAN", "41"}, {"42: WEAPON_FIREEXTINGUISHER", "42"}, {"43: WEAPON_CAMERA", "43"}, {"44: UNKNOWN_DEATH_REASON", "44"}, {"45: UNKNOWN_DEATH_REASON", "45"}, {"46: WEAPON_PARACHUTE", "46"}, {"47: UNKNOWN_DEATH_REASON", "47"}, {"48: UNKNOWN_DEATH_REASON", "48"}, {"49: WEAPON_VEHICLE", "49"}, {"50: UNKNOWN_DEATH_REASON", "50"}, {"51: UNKNOWN_DEATH_REASON", "51"}, {"52: UNKNOWN_DEATH_REASON", "52"}, {"53: WEAPON_DROWN", "53"}, {"54: WEAPON_COLLISION", "54"} }; /*static reasonnames[][] = { {"WEAPON_BRASSKNUCKLE"}, {"WEAPON_GOLFCLUB"}, {"WEAPON_NITESTICK"}, {"WEAPON_KNIFE"}, {"WEAPON_BAT"}, {"WEAPON_SHOVEL"}, {"WEAPON_POOLSTICK"}, {"WEAPON_KATANA"}, {"WEAPON_CHAINSAW"}, {"WEAPON_DILDO"}, {"WEAPON_DILDO2"}, {"WEAPON_VIBRATOR"}, {"WEAPON_VIBRATOR2"}, {"WEAPON_FLOWER"}, {"WEAPON_CANE"}, {"WEAPON_GRENADE"}, {"WEAPON_TEARGAS"}, {"WEAPON_MOLTOV"}, {"WEAPON_COLT45"}, {"WEAPON_SILENCED"}, {"WEAPON_DEAGLE"}, {"WEAPON_SHOTGUN"}, {"WEAPON_SAWEDOFF"}, {"WEAPON_SHOTGSPA"}, {"WEAPON_UZI"}, {"WEAPON_MP5"}, {"WEAPON_AK47"}, {"WEAPON_M4"}, {"WEAPON_TEC9"}, {"WEAPON_RIFLE"}, {"WEAPON_SNIPER"}, {"WEAPON_ROCKETLAUNCHER"}, {"WEAPON_HEATSEEKER"}, {"WEAPON_FLAMETHROWER"}, {"WEAPON_MINIGUN"}, {"WEAPON_SATCHEL"}, {"WEAPON_BOMB"}, {"WEAPON_SPRAYCAN"}, {"WEAPON_FIREEXTINGUISHER"}, {"WEAPON_CAMERA"}, {"WEAPON_PARACHUTE"}, {"WEAPON_VEHICLE"}, {"WEAPON_DROWN"}, {"WEAPON_COLLISION"} };*/ /*if (gRecArray & YS_USE_EXPANDED_PARS) { YS_LOG_CODE(YS_ON_PLAYER_DEATH, "OnPlayerDeath(%s%s, %s%s, %s%d: %s)", PAR_DAT(playerid), ID_DAT, PAR_DAT(killerid), ReturnPlayerIDData(killerid), PAR_DAT(reason), reason, reasonnames[reason]) } else { YS_LOG_CODE(YS_ON_PLAYER_DEATH, "OnPlayerDeath(%s%s, %s%s, %s%d)", PAR_DAT(playerid), ID_DAT, PAR_DAT(killerid), ReturnPlayerIDData(killerid), PAR_DAT(reason), reason) }*/ YS_LOG_CODE(YS_ON_PLAYER_DEATH, "OnPlayerDeath(%s%s, %s%s, %s%s)", PAR_DAT(playerid), ID_DAT, PAR_DAT(killerid), ReturnPlayerIDData(killerid), PAR_DAT(reason), RS_DAT(reason)) #endif return 1;}public OnVehicleSpawn(vehicleid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_VEHICLE_SPAWN, "OnVehicleSpawn(%s%d)", PAR_DAT(vehicleid), vehicleid) return 1;}public OnVehicleDeath(vehicleid, killerid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_VEHICLE_DEATH, "OnVehicleDeath(%s%d, %s%s)", PAR_DAT(vehicleid), vehicleid, PAR_DAT(killerid), ReturnPlayerIDData(killerid)) return 1;}public OnPlayerText(playerid, text[]){ YS_MESSAGE_CODE new i, j; #pragma unused i, j #if !defined YS_SECURE_COMMANDS_OFF #if !defined YS_SECURE_COMMANDS_ON if (gUseSecure & YS_SEC_USE) { #endif while (text[i] < 0x41) i++; #if !defined YS_ALT_NAMES_OFF #if !defined YS_ALT_NAMES_ON if (gComSet & YS_COMSET_USE_PREFIX) { #endif if (strcmp(text[i], gPrefix[1], true, strlen(gPrefix) - 1) == 0) i += strlen(gPrefix); #if !defined YS_ALT_NAMES_ON } #endif #endif for (j = 0; j < MAX_SKIPPED_COMMANDS; j++) { //printf("%d %d %s %s %s", i, j, text, gIgnoredCommands[j], gFilteredCommands[j]) if ((gIgnoredCommands[j][0] && strcmp(gIgnoredCommands[j], text[i], true, strlen(gIgnoredCommands[j])) == 0) || (gFilteredCommands[j][0] && strcmp(gFilteredCommands[j], text[i], true, strlen(gFilteredCommands[j])) == 0)) break; } /*if (j == MAX_SKIPPED_COMMANDS) { YS_LOG_CODE(YS_ON_PLAYER_TEXT, "OnPlayerText(%s%s, %s%s)", PAR_DAT(playerid), ID_DAT, PAR_DAT(text[]), text) #if defined YS_LOGGING_OFF new str[256]; #endif //return 1; #if !defined YS_CHAT_OFF j = gChannel[playerid]; new color = (j > -1 && j < sizeof (gChannel)) ? gChanColor[j] : gChatColor; //#else //new color = (GetPlayerColor(playerid) & 0xFFFFFF00) | 0xAA; // Set the players text color alpha to AA #endif GetPlayerName(playerid, str, sizeof (str)); format(str, sizeof (str), "%s: %s", str, text); for (i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { #if defined YS_CHAT_OFF SendClientMessage(i, gChatColor, str); #else #if !defined YS_CHAT_ON if (YS_USE_CHAT & gChatSettings) { #endif if (gChannel[i] == j) { SendClientMessage(i, color, str); } #if !defined YS_CHAT_ON } else { SendClientMessage(i, color, str); } #endif #endif*/ /*#if !defined YS_CHAT_OFF #if !defined YS_CHAT_ON if (!(YS_USE_CHAT & gChatSettings)) { } else { if (gChannel[i] == j) { #else #endif #endif #if !defined YS_CHAT_OFF } #endif*/ //} //} //} //#if !defined YS_LOGGING_OFF //else if (gUseSecure & YS_SEC_REC) if (j < MAX_SKIPPED_COMMANDS) { YS_LOG_CODE(YS_ON_PLAYER_TEXT, "OnPlayerText(%s%s, %s<security filtered>)", PAR_DAT(playerid), ID_DAT, PAR_DAT(text[])) return 0; } /*#else if (j == MAX_SKIPPED_COMMANDS) { return 1; }*/ //#endif #if !defined YS_SECURE_COMMANDS_ON } #endif //#else #endif YS_LOG_CODE(YS_ON_PLAYER_TEXT, "OnPlayerText(%s%s, %s%s)", PAR_DAT(playerid), ID_DAT, PAR_DAT(text[]), text) #if !defined YS_CHAT_OFF #if defined YS_LOGGING_OFF new str[256]; #endif j = gChannel[playerid]; new color = (j > -1 && j < sizeof (gChannel)) ? gChanColor[j] : gChatColor; GetPlayerName(playerid, str, sizeof (str)); format(str, sizeof (str), "%s: %s", str, text); SendChannelMessage(j, color, str); //SendChannelMessage(j, color, str); /*for (i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { #if defined YS_CHAT_OFF SendClientMessage(i, gChatColor, str); #else #if !defined YS_CHAT_ON if (YS_USE_CHAT & gChatSettings) { #endif if (gChannel[i] == j) { SendClientMessage(i, color, str); } #if !defined YS_CHAT_ON } else { SendClientMessage(i, color, str); } #endif #endif } }*/ #endif return 0;}#if !defined YS_CHAT_OFFJoinChannel(playerid, channel){ new str[128]; //GetPlayerName(playerid, str, sizeof (str)); new old = gChannel[playerid]; format(str, sizeof (str), "*** %s joined the channel", ReturnPlayerName(playerid)); SendChannelMessage(channel, 0x00FFFFAA, str); if (old != -1) { gChanInfo[old]--; } gChannel[playerid] = channel; gChanInfo[channel]++; format(str, sizeof (str), "*** Welcome to channel %d", channel); SendClientMessage(playerid, 0x00FFFFAA, str); SendClientMessage(playerid, 0x00FFFFAA, "*** Current Members:"); for (new i = 0; i < MAX_PLAYERS; i++) { if (gChannel[i] == channel && IsPlayerConnected(i)) { //GetPlayerName(i, str, sizeof (str)); format(str, sizeof (str), "*** %s", ReturnPlayerName(i)); SendClientMessage(playerid, 0x00FFFFAA, str); } } format(str, sizeof (str), "*** %s left the channel", ReturnPlayerName(playerid)); SendChannelMessage(old, 0x00FFFFAA, str);}SendChannelMessage(channel, color, str[]){ #if !defined YS_CHAT_ON if (YS_USE_CHAT & gChatSettings) { #endif for (new i = 0; i < MAX_PLAYERS; i++) { if (IsPlayerConnected(i)) { if (gChannel[i] == channel) { SendClientMessage(i, color, str); } } } #if !defined YS_CHAT_ON } else { SendClientMessageToAll(color, str); } #endif}#endifpublic OnPlayerPrivmsg(playerid, senderid, text[]){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_PRIVMSG, "OnPlayerPrivmsg(%s%s, %s%s, %s%s)", PAR_DAT(playerid), ID_DAT, PAR_DAT(senderid), ReturnPlayerIDData(senderid), PAR_DAT(text[]), text) return 1;}public OnPlayerCommandText(playerid, cmdtext[]){ if (IsPlayerConnected(playerid)) { YS_MESSAGE_CODE new retval; #if defined YS_USE_PREFIX_ON new len = strlen(gPrefix); if (strcmp(cmdtext, gPrefix, true, len) == 0 && ((cmdtext[len] == 32 && ProcessCommand(playerid, cmdtext[len + 1], 0)) || (cmdtext[len] == 0 && dcmd_commands(playerid, "", false)))) retval = 1; #else #if defined YS_USE_PREFIX_OFF #if !defined YS_LOGGING_OFF new len = 1; #endif if (ProcessCommand(playerid, cmdtext[1], 0)) retval = 1; #else new len = strlen(gPrefix); new prefix = gComSet & YS_COMSET_USE_PREFIX ? 1 : 0; if ((prefix ? (strcmp(cmdtext, gPrefix, true, len) == 0) : true) && (prefix ? (cmdtext[len] == 32 ? true : (cmdtext[len] == 0 && !dcmd_commands(playerid, "", false))) : true) && ProcessCommand(playerid, cmdtext[(prefix * len) + 1], 0)) retval = 1; #if !defined YS_LOGGING_OFF if (prefix) len++; else len = 1; #endif #endif #endif #if !defined YS_LOGGING_OFF #if !defined YS_LOGGING_ON if (gRecArray & YS_USE_LOGGING) { #endif if (gRecArray & YS_ON_PLAYER_COMMAND_TEXT) { new dontrec; for (new i = 0; i < MAX_SKIPPED_COMMANDS; i++) { new k = strlen(gIgnoredCommands[i]); if (gIgnoredCommands[i][0] == 0) break; else if (strcmp(gIgnoredCommands[i], cmdtext[len], true, k) == 0 || strcmp(gIgnoredCommands[i], cmdtext[1], true, k) == 0) { dontrec = 1; break; } } if (!dontrec) { for (new i = 0; i < MAX_SKIPPED_COMMANDS; i++) { new k = strlen(gFilteredCommands[i]); if (gFilteredCommands[i][0] == 0) break; else if (strcmp(gFilteredCommands[i], cmdtext[len], true, k) == 0) { dontrec = -1; len += k; break; } else if (strcmp(gFilteredCommands[i], cmdtext[1], true, k) == 0) { dontrec = -1; len = k + 1; break; } } new str[256]; if (dontrec) { strmid(str, cmdtext, 0, len); format(str, sizeof (str), "OnPlayerCommandText(%s%s, %s%s <parameters>)", PAR_DAT(playerid), ID_DAT, PAR_DAT(cmdtext[]), str); } else { format(str, sizeof (str), "OnPlayerCommandText(%s%s, %s%s)", PAR_DAT(playerid), ID_DAT, PAR_DAT(cmdtext[]), cmdtext); } yLog(str); } } /*#if defined YS_ALT_NAMES_ON #else #if defined YS_ALT_NAMES_OFF #else if (((gComSet & YS_COMSET_USE_ALT) && (gAltNames[i][0] != 0)) ? (strcmp(cmdtext[len], gAltNames[i], true, strlen(gAltNames[i])) == 0 || (len != 1 && strcmp(cmdtext[1], gAltNames[i], true, strlen(gAltNames[i])) == 0)) : (strcmp(cmdtext[len], gFuncNames[i], true, strlen(gFuncNames[i])) == 0 || (len != 1 && strcmp(cmdtext[1], gFuncNames[i], true, strlen(gFuncNames[i])) == 0))) #endif #endif*/ #if !defined YS_LOGGING_ON } #endif #endif return retval; } #if !defined YS_LOGGING_OFF else { YS_LOG_CODE(YS_ON_PLAYER_COMMAND_TEXT, "Exploit attempt: OnPlayerCommandText(%s%s, %s%s)", PAR_DAT(playerid), ID_DAT, PAR_DAT(cmdtext[]), cmdtext) } #endif return 0;}public OnPlayerInfoChange(playerid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_INFO_CHANGE, "OnPlayerInfoChange(%s%s)", PAR_DAT(playerid), ID_DAT) return 1;}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_ENTER_VEHICLE, "OnPlayerEnterVehicle(%s%s, %s%d, %s%d)", PAR_DAT(playerid), ID_DAT, PAR_DAT(vehicleid), vehicleid, PAR_DAT(ispassenger), ispassenger) return 1;}public OnPlayerExitVehicle(playerid, vehicleid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_EXIT_VEHICLE, "OnPlayerExitVehicle(%s%s, %s%d)", PAR_DAT(playerid), ID_DAT, PAR_DAT(vehicleid), vehicleid) return 1;}public OnPlayerStateChange(playerid, newstate, oldstate){ YS_MESSAGE_CODE #if !defined YS_LOGGING_OFF /*static statenames[][] = { {"PLAYER_STATE_NONE"}, {"PLAYER_STATE_ONFOOT"}, {"PLAYER_STATE_DRIVER"}, {"PLAYER_STATE_PASSENGER"}, {"PLAYER_STATE_EXIT_VEHICLE"}, {"PLAYER_STATE_ENTER_VEHICLE_DRIVER"}, {"PLAYER_STATE_ENTER_VEHICLE_PASSENGER"}, {"PLAYER_STATE_WASTED"}, {"PLAYER_STATE_SPAWNED"} };*/ static statenames[][ST_DAT_ENUM] = { {"0: PLAYER_STATE_NONE", "0"}, {"1: PLAYER_STATE_ONFOOT", "1"}, {"2: PLAYER_STATE_DRIVER", "2"}, {"3: PLAYER_STATE_PASSENGER", "3"}, {"4: PLAYER_STATE_EXIT_VEHICLE", "4"}, {"5: PLAYER_STATE_ENTER_VEHICLE_DRIVER", "5"}, {"6: PLAYER_STATE_ENTER_VEHICLE_PASSENGER", "6"}, {"7: PLAYER_STATE_WASTED", "7"}, {"8: PLAYER_STATE_SPAWNED", "8"} }; if (gRecArray & YS_USE_PAR_NAMING) { YS_LOG_CODE(YS_ON_PLAYER_STATE_CHANGE, "OnPlayerStateChange(playerid: %s, newstate: %s, oldstate: %s)", ID_DAT, ST_DAT(newstate), ST_DAT(oldstate)) } else { YS_LOG_CODE(YS_ON_PLAYER_STATE_CHANGE, "OnPlayerStateChange(%s, %s, %s)", ID_DAT, ST_DAT(newstate), ST_DAT(oldstate)) } #endif return 1;}public OnPlayerEnterCheckpoint(playerid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_ENTER_CHECKPOINT, "OnPlayerEnterCheckpoint(%s%s)", PAR_DAT(playerid), ID_DAT) return 1;}public OnPlayerLeaveCheckpoint(playerid){ YS_MESSAGE_CODE YS_LOG_CODE(YS_ON_PLAYER_LEAVE_CHECKPOINT, "OnPlayerLeaveCheckpoint(%s%s)", PAR_DAT(playerid), ID_DAT) return 1;}