Доступ к архиву

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

[Вопрос]Команда

Статус
В этой теме нельзя размещать новые ответы.

Egor45

Умник
Взял нормальный мод за основу, исправил разные баги....начал оптимизировать как могу, при оптимизации команд хз что выходит все проверки смешиваются.

Команда до оптимизации:
PHP:
		if(strcmp(cmd, "/me", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(gPlayerLogged[playerid] == 0)
	        {
	            SendClientMessage(playerid, COLOR_GREY, "   Вы не залогинены!");
	            return 1;
	        }
			GetPlayerName(playerid, sendername, sizeof(sendername));
			new length = strlen(cmdtext);
			while ((idx < length) && (cmdtext[idx] <= ' '))
			{
				idx++;
			}
			new offset = idx;
			new result[64];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			if(!strlen(result))
			{
				SendClientMessage(playerid, COLOR_GRAD2, " Используйте: /me [действие]");
				return 1;
			}
			spaceGroupsToSpaces(result);
    		trimSideSpaces(result);
			new word[256],Index;while(Index < strlen(result)) { // проверка сообщения на рекламу серверов и ее вырезание
			word = strtok(result,Index);
			if(Adv(word)==1||ZP(word)||U(word)||T(word)||N(word)||PP(word)||P(word)||V(word)||R(word)||PL(word)||ZV(word)||I(word)||ST(word)||PR(word)||DL(word)||RE(word)||VOC(word)||A(word)||NO(word)||TCZ(word)||BOP(word)){
					new i=strfind(result,word),j=i+strlen(word)-1; result[i++]='[';
					while(i<j) {result[i]='|';i++;}
					result[j]=']';
					BanEx(playerid, " Попытка рекламы сервера");
				}
		 	}

			if(PlayerInfo[playerid][pAdmin] <= 0)
			{
			for(new i = 0; i < sizeof(Smailiki); i++)
			{
				if(strfind(result,Smailiki[i], true) != -1)
				{
				    PlayerInfo[playerid][pMuted] = 1;
					PlayerInfo[playerid][pMuteTime] = PlayerInfo[playerid][pMuteTime] + 100;
					new name[MAX_PLAYER_NAME];
					GetPlayerName(playerid, name, sizeof(name));
					format(string,sizeof(string),"%s заткнут(a) на %d секунд Причина: Смайлы в IC чат", name, PlayerInfo[playerid][pMuteTime]);
					SendClientMessageToAll(COLOR_LIGHTRED,string);
				}
			}
			}
			if(PlayerInfo[playerid][pMuted] == 1)
			{
			    SendClientMessage(playerid,COLOR_GREY,"Вы заткнуты");
			    return 1;
			}
			format(string, sizeof(string), "* %s %s", sendername, result);
			ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,0,0);
			printf("%s", string);
		}
		return 1;
	}
Команда после оптимизации...
PHP:
if(strcmp(cmd, "/me", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
	        if(gPlayerLogged[playerid] == 0) return 1; SendClientMessage(playerid, COLOR_GREY, "   Вы не залогинены!");//Оптимизирована
			GetPlayerName(playerid, sendername, sizeof(sendername));
			new length = strlen(cmdtext);
			while ((idx < length) && (cmdtext[idx] <= ' '))
			{
				idx++;
			}
			new offset = idx;
			new result[64];
			while ((idx < length) && ((idx - offset) < (sizeof(result) - 1)))
			{
				result[idx - offset] = cmdtext[idx];
				idx++;
			}
			result[idx - offset] = EOS;
			if(!strlen(result)) return 1; SendClientMessage(playerid, COLOR_GRAD2, " Используйте: /me [действие]");//Оптимизирована
			spaceGroupsToSpaces(result);
    		trimSideSpaces(result);
			new word[256],Index;while(Index < strlen(result)) { // проверка сообщения на рекламу серверов и ее вырезание
			word = strtok(result,Index);
			if(Adv(word)==1||ZP(word)||U(word)||T(word)||N(word)||PP(word)||P(word)||V(word)||R(word)||PL(word)||ZV(word)||I(word)||ST(word)||PR(word)||DL(word)||RE(word)||VOC(word)||A(word)||NO(word)||TCZ(word)||BOP(word)){
					new i=strfind(result,word),j=i+strlen(word)-1; result[i++]='[';
					while(i<j) {result[i]='|';i++;}
					result[j]=']';
					BanEx(playerid, " Попытка рекламы сервера");
				}
		 	}

			if(PlayerInfo[playerid][pAdmin] <= 0)
			{
			for(new i = 0; i < sizeof(Smailiki); i++)
			{
				if(strfind(result,Smailiki[i], true) != -1)
				{
				    PlayerInfo[playerid][pMuted] = 1;
					PlayerInfo[playerid][pMuteTime] = PlayerInfo[playerid][pMuteTime] + 100;
					new name[MAX_PLAYER_NAME];
					GetPlayerName(playerid, name, sizeof(name));
					format(string,sizeof(string),"%s заткнут(a) на %d секунд Причина: Смайлы в IC чат", name, PlayerInfo[playerid][pMuteTime]);
					SendClientMessageToAll(COLOR_LIGHTRED,string);
				}
			}
			}
			if(PlayerInfo[playerid][pMuted] == 1) return 1; SendClientMessage(playerid,COLOR_GREY,"Вы заткнуты");//Оптимизировал
			format(string, sizeof(string), "* %s %s", sendername, result);
			ProxDetector(30.0, playerid, string, COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,0,0);
			printf("%s", string);
		}
		return 1;
	}
Всего лиш оптимизировал проверки и всё смешалось что я делаю не так?
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу