PDA

Просмотр полной версии : [Вопрос] Команды чата



DmX
15.01.2016, 13:39
Может у кого было такое, использую DC_CMD + SSCANF

Команды чата - Общий - Рация - и т.д не работают если символов от 21 до 41 (Бывает значение меняется)

Я уже весь код перебрал и не могу понять почему, пишу в чат - в ответ ничего ) Как думаете, что может быть?

- - - Добавлено - - -

Странно, что только на хостинге такая шняга (Запускаю на ПК - такого нет)

- - - Добавлено - - -


[debug] Run time error 20: "Invalid index parameter (bad entry point)"

Скорее всего в этом таится серкет, как исправить? Кто знает?

DeimoS
15.01.2016, 14:07
Код команд + список подключаемых инклюдов + список подключаемых плагинов + логи при вызове команды с подключенным crashdetect (и компилятору пропиши опцию "-d3")

DmX
15.01.2016, 16:12
Я думаю это из за логов.


CMD:ooc(playerid, params[])
{
if(GetPVarInt(playerid, "Logged")) return true;
new string[164];
if(isnull(params)) return command(playerid,"/o(oc) [Текст]");
//if(PlayerInfo[playerid][pLevel] == 1 && PlayerInfo[playerid][pExp] < 4 && PlayerInfo[playerid][pAdmin] == 0) return error(playerid,"Вы должны отыграть 4 часа на сервере");
if(OOCact == true && PlayerInfo[playerid][pAdmin] == 0) return error(playerid,"В данный момент общий чат отключен");
for(new i;i < strlen(params);i++)
{
new a[2],c=0;
for(new j = 0;j < strlen(params);j++)
{
strmid(a,params,i+j,i+j+1,2);
if('0' <= a[0] <= '9')c+=1;
}
if(c == 8 || strfind(params,".ru", true) != -1 || strfind(params," .ru", true) != -1 || strfind(params,".ru ", true) != -1 || strfind(params,".ру", true) != -1 || strfind(params,"точка", true) != -1
|| strfind(params,"точка", true) != -1 || strfind(params,"точка", true) != -1 || strfind(params,"www", true) != -1||
strfind(params,"http", true) != -1 || strfind(params,".net", true) != -1 || strfind(params,".com", true) != -1 ||
strfind(params,". ru", true) != -1 || strfind(params,". net", true) != -1 || strfind(params,". com", true) != -1
|| strfind(params,"w w w", true) != -1)
{
SCM(playerid, COLOR_ADM1, "Подозрение на рекламу сервера, сообщение не отправлено.");
format(string,sizeof(string),"[Анти-реклама] %s [ID: %d]: %s",PlayerInfo[playerid][pName],playerid,params);
SendAdminMessage(COLOR_ADM1,string);
string="";
return false;
}
}
if(OtOOC[playerid] > 0) return format(string,sizeof(string),"До следующего сообщения в /o чат осталось %s.",TimeConvert(OtOOC[playerid])),SCM(playerid,COLOR_OFF,string);
if(PlayerInfo[playerid][pMute] > 0) return MuteCheck(playerid);
if(KLAP[playerid] == true) return error(playerid,"У вас кляп во рту");
if(PlayerInfo[playerid][pJailTime] > 0) return error(playerid,"Вы в тюрьме");
switch(PlayerInfo[playerid][pAdmin])
{
case 1..3:
{
format(string, sizeof(string), "> ({FF6347}М{F8F8FF}) %s[%d]: %s",PlayerInfo[playerid][pName],playerid,params),ToAll(0xF8F8FFFF, string);
format(string,sizeof(string),"[%d.%d.%d][OOC] (M) %s %s: %s (%d:%02d:%02d)\r\n",Day,Month,Year,GetRankName(playerid),PlayerInfo[playerid][pName],params,hours,minutes,seconds);
new File:nFile = fopen("logi/chat/ooc.txt",io_append);
fwriteex(nFile, string);
fclose(nFile);
return true;
}
case 4:
{
format(string, sizeof(string), "> ({FF6347}Гл.М{F8F8FF}) %s[%d]: %s",PlayerInfo[playerid][pName],playerid,params),ToAll(0xF8F8FFFF, string);
format(string,sizeof(string),"[%d.%d.%d][OOC] (Гл.М) %s %s: %s (%d:%02d:%02d)\r\n",Day,Month,Year,GetRankName(playerid),PlayerInfo[playerid][pName],params,hours,minutes,seconds);
new File:nFile = fopen("logi/chat/ooc.txt",io_append);
fwriteex(nFile, string);
fclose(nFile);
return true;
}
case 5..6:
{
format(string, sizeof(string), "> ({FF6347}А{F8F8FF}) %s[%d]: %s",PlayerInfo[playerid][pName],playerid,params),ToAll(0xF8F8FFFF, string);
format(string,sizeof(string),"[%d.%d.%d][OOC] (А) %s %s: %s (%d:%02d:%02d)\r\n",Day,Month,Year,GetRankName(playerid),PlayerInfo[playerid][pName],params,hours,minutes,seconds);
new File:nFile = fopen("logi/chat/ooc.txt",io_append);
fwriteex(nFile, string);
fclose(nFile);
return true;
}
}
if(PlayerInfo[playerid][pHelper] > 0)
{
format(string, sizeof(string), "> ({FF6347}H{F8F8FF}) %s[%d]: %s",PlayerInfo[playerid][pName],playerid,params);
ToAll(0xF8F8FFFF, string);
format(string,sizeof(string),"[%d.%d.%d][OOC] (H) %s %s: %s (%d:%02d:%02d)\r\n",Day,Month,Year,GetRankName(playerid),PlayerInfo[playerid][pName],params,hours,minutes,seconds);
new File:nFile = fopen("logi/chat/ooc.txt",io_append);
fwriteex(nFile, string);
fclose(nFile);
return true;
}
if(PlayerInfo[playerid][pLeader] > 0)
{
format(string, sizeof(string), "> ({9B30FF}L{F8F8FF}) %s[%d]: %s",PlayerInfo[playerid][pName],playerid,params);
ToAll(0xF8F8FFFF, string);
format(string,sizeof(string),"[%d.%d.%d][OOC] (L) %s %s: %s (%d:%02d:%02d)\r\n",Day,Month,Year,GetRankName(playerid),PlayerInfo[playerid][pName],params,hours,minutes,seconds);
new File:nFile = fopen("logi/chat/ooc.txt",io_append);
fwriteex(nFile, string);
fclose(nFile);
OtOOC[playerid] = 120;
return true;
}
if(PlayerInfo[playerid][pAdmin] == 0)
{
format(string, sizeof(string), "> %s[%d]: %s",PlayerInfo[playerid][pName],playerid,params),ToAll(0xF8F8FFFF, string);
format(string,sizeof(string),"[%d.%d.%d][OOC] %s %s: %s (%d:%02d:%02d)\r\n",Day,Month,Year,GetRankName(playerid),PlayerInfo[playerid][pName],params,hours,minutes,seconds);
new File:nFile = fopen("logi/chat/ooc.txt",io_append);
fwriteex(nFile, string);
fclose(nFile);
OtOOC[playerid] = 3*60;
}
return true;
}


CMD:news(playerid, params[])
{
if(GetPVarInt(playerid, "Logged")) return true;
if(PlayerInfo[playerid][pMemb] != 7) return true;
if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 582) return error(playerid,"Дать новости можно только в фургоне San News");
new asd[168];
if(sscanf(params, "s[150]",params[0])) return command(playerid, "/news [Текст]");
if(OtNEWS[playerid] > 0)
{
format(asd,sizeof(asd),"Подождите, новость можно дать через %s",TimeConvert(OtNEWS[playerid])),SCM(playerid,COLOR_OFF,asd);
return true;
}
format(asd, sizeof(asd), "[Новости ML] от %s[%d]: %s",PlayerInfo[playerid][pName],playerid, params[0]),ToAll(0xFFA500FF, asd);
format(asd,sizeof(asd),"[%d.%d.%d] [Новости ML] от %s: %s (%d:%02d:%02d)\r\n",Day,Month,Year,PlayerInfo[playerid][pName],params[0],hours,minutes,seconds);
new File:nFile = fopen("logi/chat/news.txt",io_append);
fwriteex(nFile, asd);
fclose(nFile);
OtNEWS[playerid] = 40;
return true;
}

Список плагинов: dc_cmd crashdetect mysql streamer sscanf

КрашДетект что то не работает, хотя сделал все как надо.

- - - Добавлено - - -

Чат в OnPlayerText отлично работает.

Daniel_Cortez
15.01.2016, 16:45
КрашДетект что то не работает, хотя сделал все как надо.
http://pro-pawn.ru/showthread.php?2991&p=66040&viewfull=1#post66040

DmX
15.01.2016, 20:34
У меня нет выхода за пределы массива. Помогите разобраться с командами.

vovandolg
15.01.2016, 20:53
Плагин крашдетект всегда первый надо ставить в загрузке..
А насчёт логирования - убирать не пробовал?

DmX
15.01.2016, 23:39
Вот смотрите, я сервер в ПУ перезагружаю, всё отлично минут 5-10 потом опять начинает.

Либо от 21 до 41 символа не работает, либо от 25 до 45.

- - - Добавлено - - -


Плагин крашдетект всегда первый надо ставить в загрузке..
А насчёт логирования - убирать не пробовал?

Я убирал всё, что можно. Лысая команда была - и ничего не отправляется. Я не пойму в чем проблема. Как команды с модом связанны? Никак! Команда идет как отдельный сток. Значит дело в плагине, я целый день вожусь с этим ><

DmX
16.01.2016, 00:18
Баг появляется после использования функции

GameModeExit();

ziggi
16.01.2016, 00:20
Вот смотрите, я сервер в ПУ перезагружаю, всё отлично минут 5-10 потом опять начинает.

Либо от 21 до 41 символа не работает, либо от 25 до 45.

- - - Добавлено - - -



Я убирал всё, что можно. Лысая команда была - и ничего не отправляется. Я не пойму в чем проблема. Как команды с модом связанны? Никак! Команда идет как отдельный сток. Значит дело в плагине, я целый день вожусь с этим ><

Проверь своё предположение: выключи плагин и поставь zcmd.