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;
}
Последнее редактирование:
