PDA

Просмотр полной версии : [Вопрос] Вопрос по отправке объявлений у NEWS



Dima_Turkow
06.06.2020, 12:33
Всем доброго времени суток, уважаемые посетители портала PRO-PAWN.RU !

Опишу суть проблемы : есть организация новостей и система редактирования объявлений.
При отправке объявления неким человеком, его должен отредактировать сотрудник NEWS и пустить в эфир.

Собственно все идеально отправляется и редактируется за исключением одного, номер телефона всегда пишется : 0.

static const fmt_str_50[] = "Объявление: %s. Прислал: %s. Тел: %d";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+94];
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adName],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adPhone]
);
SCMTA(0x00D900C8, string_50);

static const fmt_str_51[] = " Объявление опубликовал сотрудник LS News %s";
new string_51[sizeof(fmt_str_51)+MAX_PLAYER_NAME-1];
format(string_51, sizeof(string_51), fmt_str_51
,
GN(playerid)
);
SCMTA(0x7787D8FF, string_51);

for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[0] - 1; i++)
{
strmid(AdvertInfo[i][0][adText], AdvertInfo[i+1][0][adText],0, strlen(AdvertInfo[i+1][0][adText]), 90);
strmid(AdvertInfo[i][0][adName], AdvertInfo[i+1][0][adName],0, strlen(AdvertInfo[i+1][0][adName]), MAX_PLAYER_NAME);
player[i][pnumber] = AdvertInfo[i][0][adPhone];
}
TOTALADVERT[0]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");

Прошу помочь знающим людям в исправлении данного косяка .
P.S в - player[playerid][pnumber] хранится номер телефона игрока

SteveStage
06.06.2020, 14:10
static const fmt_str_50[] = "Объявление: %s. Прислал: %s. Тел: %d";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+94];
format(string_50, sizeof(string_50), fmt_str_50,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adName],
player[GetPVarInt(playerid, "AdvertID")][pnumber]
);
SCMTA(0x00D900C8, string_50);

static const fmt_str_51[] = " Объявление опубликовал сотрудник LS News %s";
new string_51[sizeof(fmt_str_51)+MAX_PLAYER_NAME-1];
format(string_51, sizeof(string_51), fmt_str_51
,
GN(playerid)
);
SCMTA(0x7787D8FF, string_51);

for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[0] - 1; i++)
{
strmid(AdvertInfo[i][0][adText], AdvertInfo[i+1][0][adText],0, strlen(AdvertInfo[i+1][0][adText]), 90);
strmid(AdvertInfo[i][0][adName], AdvertInfo[i+1][0][adName],0, strlen(AdvertInfo[i+1][0][adName]), MAX_PLAYER_NAME);
player[i][pnumber] = AdvertInfo[i][0][adPhone];
}
TOTALADVERT[0]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");

Попробуй так. Видимо в переменную AdvertInfo[playerid][0][adPhone] у тебя не записан номер телефона.

Хотя я бы сделал по другому:

new str_50[128+1];
format(str_50, sizeof(str_50), "Объявление: %s. Прислал: %s. Тел: %d",
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
GN(GetPVarInt(playerid, "AdvertID")),
player[GetPVarInt(playerid, "AdvertID")][pnumber]
);
SCMTA(0x00D900C8, str_50);

format(str_50, sizeof(str_50), " Объявление опубликовал сотрудник LS News %s",
GN(playerid)
);
SCMTA(0x7787D8FF, str_50);

for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[0] - 1; i++)
{
strmid(AdvertInfo[i][0][adText], AdvertInfo[i+1][0][adText],0, strlen(AdvertInfo[i+1][0][adText]), 90);
}
TOTALADVERT[0]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");

Вариант с static и new более выгоден, когда форматируется одна строка, а в таких случаях, как у тебя (форматируется 2 и более строки) выгоднее создавать один массив и форматировать его.

И еще что я заметил - у тебя в pnumber записывается эта пустая переменная adPhone.

Да по сути AdvertInfo должен хранить один лишь текст объявления, а ник и номер можно получить без него.

Dima_Turkow
06.06.2020, 14:28
Замечательно, волшебно, чудесно. Жаль - оба варианта не работают, все равно : "Тел: 0"

execution
06.06.2020, 14:30
Ты бы хоть код в читабельный вид привёл и разделил разные действия блоками. Сделай отдельно подачу и отправку.

SteveStage
06.06.2020, 14:31
Замечательно, волшебно, чудесно. Жаль - оба варианта не работают, все равно : "Тел: 0"

Покажи загрузку телефона из бд в pnumber.

Dima_Turkow
06.06.2020, 14:34
Если я в формат засуну, к примеру player[playerid][pnumber] - то номер телефона выведется, только выведется того кто редактирует, а не того кто прислал объявление

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

player[playerid][pnumber] = cache_get_field_content_int(0, "Number");

SteveStage
06.06.2020, 14:36
Если я в формат засуну, к примеру player[playerid][pnumber] - то номер телефона выведется, только выведется того кто редактирует, а не того кто прислал объявление

Ну так ты введи не playerid, а pvar, хранящий id того, кто прислал объявление.

Dima_Turkow
06.06.2020, 14:36
Каким образом, продемонстрируй пожалуйста ;)

SteveStage
06.06.2020, 14:38
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adName],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adPhone]
);

Вот, pvar AdvertID по видимому хранит id отправителя объявления.

Dima_Turkow
06.06.2020, 14:50
static const fmt_str_50[] = "Объявление: %s. Прислал: %s. Тел: %d";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+94];
format(string_50, sizeof(string_50), fmt_str_50,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adName],
player[GetPVarInt(playerid, "AdvertID")][pnumber]
);
SCMTA(0x00D900C8, string_50);

static const fmt_str_51[] = " Объявление опубликовал сотрудник LS News %s";
new string_51[sizeof(fmt_str_51)+MAX_PLAYER_NAME-1];
format(string_51, sizeof(string_51), fmt_str_51
,
GN(playerid)
);
SCMTA(0x7787D8FF, string_51);

for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[0] - 1; i++)
{
strmid(AdvertInfo[i][0][adText], AdvertInfo[i+1][0][adText],0, strlen(AdvertInfo[i+1][0][adText]), 90);
strmid(AdvertInfo[i][0][adName], AdvertInfo[i+1][0][adName],0, strlen(AdvertInfo[i+1][0][adName]), MAX_PLAYER_NAME);
player[i][pnumber] = AdvertInfo[i][0][adPhone];
}
TOTALADVERT[0]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");

Попробуй так. Видимо в переменную AdvertInfo[playerid][0][adPhone] у тебя не записан номер телефона.

Хотя я бы сделал по другому:

new str_50[128+1];
format(str_50, sizeof(str_50), "Объявление: %s. Прислал: %s. Тел: %d",
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
GN(GetPVarInt(playerid, "AdvertID")),
player[GetPVarInt(playerid, "AdvertID")][pnumber]
);
SCMTA(0x00D900C8, str_50);

format(str_50, sizeof(str_50), " Объявление опубликовал сотрудник LS News %s",
GN(playerid)
);
SCMTA(0x7787D8FF, str_50);

for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[0] - 1; i++)
{
strmid(AdvertInfo[i][0][adText], AdvertInfo[i+1][0][adText],0, strlen(AdvertInfo[i+1][0][adText]), 90);
}
TOTALADVERT[0]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");

Вариант с static и new более выгоден, когда форматируется одна строка, а в таких случаях, как у тебя (форматируется 2 и более строки) выгоднее создавать один массив и форматировать его.

И еще что я заметил - у тебя в pnumber записывается эта пустая переменная adPhone.

Да по сути AdvertInfo должен хранить один лишь текст объявления, а ник и номер можно получить без него.


Я сейчас сделал точно так, как ты описал второй вариант. Итог :Объявление отобразилось, Прислал : пустое место вывелось, Тел: 0

Я так понимаю проблема с PVAR ?

SteveStage
06.06.2020, 14:54
Я сейчас сделал точно так, как ты описал второй вариант. Итог :Объявление отобразилось, Прислал : пустое место вывелось, Тел: 0

Я так понимаю проблема с PVAR ?

Тогда покажи, как вообще в AdvertInfo и в PVar AdvertID записываются данные.

Dima_Turkow
06.06.2020, 15:12
Мне тогда тебе проще new pwn закинуть, нежели так куски кода скидывать, их очень много

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

в лс скинул

SteveStage
06.06.2020, 16:07
Я понял в чем проблема - у тебя в adPhone не записывается номер телефона.

Вот, замени свой case 822, 831 и 832 на это:


case 822:
{
if(response)
{
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
if(player[playerid][pmoney] < adv[cost_news_ls])
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, !"[ОШИБКА]: {B4B4B4}У Вас недостаточно денег!");
return true;
}
if(TOTALADVERT[0] > 19)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Список объявлений полон!");
return true;
}
player[playerid][pmoney] -= adv[cost_news_ls];
SavePlayer(playerid, "Money", player[playerid][pmoney], "d");
balance[bnews_ls] += adv[cost_news_ls];
TOTALADVERT[0] ++;
strmid(AdvertInfo[TOTALADVERT[0]][0][adText], ReportQ[playerid], 0, strlen(ReportQ[playerid]), 90);
strmid(AdvertInfo[TOTALADVERT[0]][0][adName], GN(playerid), 0, strlen(GN(playerid)), MAX_PLAYER_NAME);
AdvertInfo[TOTALADVERT[0]][0][adPhone] = player[playerid][pnumber];
SCM(playerid, COLOR_WHITE, "Ваше обьявление будет опубликовано после проверки");
AdvertTime = gettime() + 15;
}
else PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
}

case 831:
{
if(response)
{
if(player[playerid][pmoney] < adv[cost_news_sf])
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, !"[ОШИБКА]: {B4B4B4}У Вас недостаточно денег!");
return true;
}
if(TOTALADVERT[1] > 19)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Список объявлений полон!");
return true;
}
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
player[playerid][pmoney] -= adv[cost_news_sf];
SavePlayer(playerid, "Money", player[playerid][pmoney], "d");
balance[bnews_sf] += adv[cost_news_sf];
TOTALADVERT[1] ++;
strmid(AdvertInfo[TOTALADVERT[1]][1][adText], ReportQ[playerid], 0, strlen(ReportQ[playerid]), 90);
strmid(AdvertInfo[TOTALADVERT[1]][1][adName], GN(playerid), 0, strlen(GN(playerid)), MAX_PLAYER_NAME);
AdvertInfo[TOTALADVERT[0]][0][adPhone] = player[playerid][pnumber];
SCM(playerid, COLOR_WHITE, "Ваше обьявление будет опубликовано после проверки");
AdvertTime = gettime() + 15;
}
else PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
}
case 832:
{
if(response)
{
if(player[playerid][pmoney] < adv[cost_news_lv])
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, !"[ОШИБКА]: {B4B4B4}У Вас недостаточно денег!");
return true;
}
if(TOTALADVERT[2] > 19)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Список объявлений полон!");
return true;
}
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
player[playerid][pmoney] -= adv[cost_news_lv];
SavePlayer(playerid, "Money", player[playerid][pmoney], "d");
balance[bnews_lv] += adv[cost_news_lv];
TOTALADVERT[2] ++;
strmid(AdvertInfo[TOTALADVERT[2]][2][adText], ReportQ[playerid], 0, strlen(ReportQ[playerid]), 90);
strmid(AdvertInfo[TOTALADVERT[2]][2][adName], GN(playerid), 0, strlen(GN(playerid)), MAX_PLAYER_NAME);
AdvertInfo[TOTALADVERT[0]][0][adPhone] = player[playerid][pnumber];
SCM(playerid, COLOR_WHITE, "Ваше обьявление будет опубликовано после проверки");
AdvertTime = gettime() + 15;
}
else PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
}

Замена case 820, 825 и 829:

case 820:
{
if(response)
{
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
switch(listitem)
{
case 0:
{
if(AdvertTime > gettime())
{
DeletePVar(playerid, "AdvertID");
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Опубликовывать объявления можно раз в 15 секунд!");
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[0]; i++)
{
static const fmt_str_50[] = "[%d] Прислал: %s\n";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME-1];
format(string_50, sizeof(string_50), fmt_str_50
,
i,
AdvertInfo[i][0][adName]
);
strcat(string_100, string_50);
}
if(TOTALADVERT[0] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 819, DSL, "Объявления", string_100, "Выбрать", "Назад");
return true;
}
static const fmt_str_50[] = "Объявление: %s. Прислал: %s. Тел: %d";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+94];
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adName],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adPhone]
);
SCMTA(0x00D900C8, string_50);

static const fmt_str_51[] = " Объявление опубликовал сотрудник LS News %s";
new string_51[sizeof(fmt_str_51)+MAX_PLAYER_NAME-1];
format(string_51, sizeof(string_51), fmt_str_51
,
GN(playerid)
);
SCMTA(0x7787D8FF, string_51);

for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[0] - 1; i++)
{
strmid(AdvertInfo[i][0][adText], AdvertInfo[i+1][0][adText],0, strlen(AdvertInfo[i+1][0][adText]), 90);
strmid(AdvertInfo[i][0][adName], AdvertInfo[i+1][0][adName],0, strlen(AdvertInfo[i+1][0][adName]), MAX_PLAYER_NAME);
player[i][pnumber] = AdvertInfo[i][0][adPhone];
}
TOTALADVERT[0]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");

new string_100[1000];
for(new i = 1; i <= TOTALADVERT[0]; i++)
{
static const fmt_str_52[] = "[%d] Прислал: %s\n";
new string_52[sizeof(fmt_str_52)+MAX_PLAYER_NAME-1];
format(string_52, sizeof(string_52), fmt_str_52
,
i,
AdvertInfo[i][0][adName]
);
strcat(string_100, string_52);
}
if(TOTALADVERT[0] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 819, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
case 1:
{
static const fmt_str_50[] = "Текст: %s. Прислал: %s";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+90];
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][0][adName]
);
SPD(playerid, 821, DSI, "Редактор объявлений", string_50, "Принять", "Назад");
}
case 2:
{
for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[0] - 1; i++)
{
strmid(AdvertInfo[i][0][adText],AdvertInfo[i+1][0][adText],0,strlen(AdvertInfo[i+1][0][adText]), 90);
strmid(AdvertInfo[i][0][adName],AdvertInfo[i+1][0][adName],0,strlen(AdvertInfo[i+1][0][adName]), MAX_PLAYER_NAME);
}
TOTALADVERT[0]--;
SCM(playerid, COLOR_GREEN, "Объявление удалено");
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[0]; i++)
{
static const fmt_str_52[] = "[%d] Прислал: %s\n";
new string_52[sizeof(fmt_str_52)+MAX_PLAYER_NAME-1];
format(string_52, sizeof(string_52), fmt_str_52
,
i,
AdvertInfo[i][0][adName]
);
strcat(string_100, string_52);
}
if(TOTALADVERT[0] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 819, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
}
}
else
{
PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[0]; i++)
{
static const fmt_str_50[] = "[%d] Прислал: %s\n";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME-1];
format(string_50, sizeof(string_50), fmt_str_50
,
i,
AdvertInfo[i][0][adName]
);
strcat(string_100, string_50);
}
if(TOTALADVERT[0] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 819, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
}

case 825:
{
if(response)
{
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
switch(listitem)
{
case 0:
{
if(AdvertTime > gettime())
{
DeletePVar(playerid, "AdvertID");
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Опубликовывать объявления можно раз в 15 секунд!");
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[1]; i++)
{
static const fmt_str_50[] = "[%d] Прислал: %s\n";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME-1];
format(string_50, sizeof(string_50), fmt_str_50
,
i,
AdvertInfo[i][1][adName]
);
strcat(string_100, string_50);
}
if(TOTALADVERT[1] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 824, DSL, "Объявления", string_100, "Выбрать", "Назад");
return true;
}
static const fmt_str_50[] = "Объявление: %s. Прислал: %s. Тел: %d";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+94];
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][1][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][1][adName],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][1][adPhone]
);
SCMTA(0x00D900C8, string_50);
static const fmt_str_51[] = " Объявление опубликовал сотрудник SF News %s";
new string_51[sizeof(fmt_str_51)+MAX_PLAYER_NAME-1];
format(string_51, sizeof(string_51), fmt_str_51
,
GN(playerid)
);
SCMTA(0xA0FF9BFF, string_51);
for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[1] - 1; i++)
{
strmid(AdvertInfo[i][1][adText], AdvertInfo[i+1][1][adText], 0, strlen(AdvertInfo[i+1][1][adText]), 90);
strmid(AdvertInfo[i][1][adName], AdvertInfo[i+1][1][adName], 0, strlen(AdvertInfo[i+1][1][adName]), MAX_PLAYER_NAME);
}
TOTALADVERT[1]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[1]; i++)
{
static const fmt_str_52[] = "[%d] Прислал: %s\n";
new string_52[sizeof(fmt_str_52)+MAX_PLAYER_NAME-1];
format(string_52, sizeof(string_52), fmt_str_52
,
i,
AdvertInfo[i][1][adName]
);
strcat(string_100, string_52);
}
if(TOTALADVERT[1] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 824, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
case 1:
{
static const fmt_str_50[] = "Текст: %s. Прислал: %s";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+90];
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][1][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][1][adName]
);
SPD(playerid, 826, DSI, "Редактор объявлений", string_50, "Принять", "Назад");
}
case 2:
{
for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[1] - 1; i++)
{
strmid(AdvertInfo[i][1][adText],AdvertInfo[i+1][1][adText],0,strlen(AdvertInfo[i+1][1][adText]), 90);
strmid(AdvertInfo[i][1][adName],AdvertInfo[i+1][1][adName],0,strlen(AdvertInfo[i+1][1][adName]), MAX_PLAYER_NAME);
}
TOTALADVERT[1]--;
SCM(playerid, COLOR_GREEN, "Объявление удалено");
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[1]; i++)
{
static const fmt_str_52[] = "[%d] Прислал: %s\n";
new string_52[sizeof(fmt_str_52)+MAX_PLAYER_NAME-1];
format(string_52, sizeof(string_52), fmt_str_52
,
i,
AdvertInfo[i][1][adName]
);
strcat(string_100, string_52);
}
if(TOTALADVERT[1] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 824, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
}
}
else
{
PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[1]; i++)
{
static const fmt_str_50[] = "[%d] Прислал: %s\n";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME-1];
format(string_50, sizeof(string_50), fmt_str_50
,
i,
AdvertInfo[i][1][adName]
);
strcat(string_100, string_50);
}
if(TOTALADVERT[1] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 824, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
}

case 829:
{
if(response)
{
PlayerPlaySound(playerid, 1054, 0.0, 0.0, 0.0);
switch(listitem)
{
case 0:
{
if(AdvertTime > gettime())
{
DeletePVar(playerid, "AdvertID");
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Опубликовывать объявления можно раз в 15 секунд!");
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[2]; i++)
{
static const fmt_str_50[] = "[%d] Прислал: %s\n";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME-1];
format(string_50, sizeof(string_50), fmt_str_50
,
i,
AdvertInfo[i][2][adName]
);
strcat(string_100, string_50);
}
if(TOTALADVERT[2] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 828, DSL, "Объявления", string_100, "Выбрать", "Назад");
return true;
}
static const fmt_str_50[] = "Объявление: %s. Прислал: %s. Тел: %d";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+94];
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][2][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][2][adName],
player[GetPVarInt(playerid, "AdvertID")][2][adPhone]
);
SCMTA(0x00D900C8, string_50);
static const fmt_str_51[] = " Объявление опубликовал сотрудник LV News %s";
new string_51[sizeof(fmt_str_51)+MAX_PLAYER_NAME-1];
format(string_51, sizeof(string_51), fmt_str_51
,
GN(playerid)
);
SCMTA(0xFFA5A9FF, string_51);
for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[2] - 1; i++)
{
strmid(AdvertInfo[i][2][adText], AdvertInfo[i+1][2][adText], 0, strlen(AdvertInfo[i+1][2][adText]), 90);
strmid(AdvertInfo[i][2][adName], AdvertInfo[i+1][2][adName], 0, strlen(AdvertInfo[i+1][2][adName]), MAX_PLAYER_NAME);
}
TOTALADVERT[2]--;
AdvertTime = gettime() + 15;
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[2]; i++)
{
static const fmt_str_52[] = "[%d] Прислал: %s\n";
new string_52[sizeof(fmt_str_52)+MAX_PLAYER_NAME-1];
format(string_52, sizeof(string_52), fmt_str_52
,
i,
AdvertInfo[i][2][adName]
);
strcat(string_100, string_52);
}
if(TOTALADVERT[2] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 828, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
case 1:
{
static const fmt_str_50[] = "Текст: %s. Прислал: %s";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME+90];
format(string_50, sizeof(string_50), fmt_str_50
,
AdvertInfo[GetPVarInt(playerid, "AdvertID")][2][adText],
AdvertInfo[GetPVarInt(playerid, "AdvertID")][2][adName]
);
SPD(playerid, 830, DSI, "Редактор объявлений", string_50, "Принять", "Назад");
}
case 2:
{
for(new i = GetPVarInt(playerid, "AdvertID"); i <= TOTALADVERT[2] - 1; i++)
{
strmid(AdvertInfo[i][2][adText],AdvertInfo[i+1][2][adText],0,strlen(AdvertInfo[i+1][2][adText]), 90);
strmid(AdvertInfo[i][2][adName],AdvertInfo[i+1][2][adName],0,strlen(AdvertInfo[i+1][2][adName]), MAX_PLAYER_NAME);
}
TOTALADVERT[2]--;
SCM(playerid, COLOR_GREEN, "Объявление удалено");
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[2]; i++)
{
static const fmt_str_52[] = "[%d] Прислал: %s\n";
new string_52[sizeof(fmt_str_52)+MAX_PLAYER_NAME-1];
format(string_52, sizeof(string_52), fmt_str_52
,
i,
AdvertInfo[i][2][adName]
);
strcat(string_100, string_52);
}
if(TOTALADVERT[2] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 828, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
}
}
else
{
PlayerPlaySound(playerid, 1055, 0.0, 0.0, 0.0);
DeletePVar(playerid, "AdvertID");
new string_100[1000];
for(new i = 1; i <= TOTALADVERT[2]; i++)
{
static const fmt_str_50[] = "[%d] Прислал: %s\n";
new string_50[sizeof(fmt_str_50)+MAX_PLAYER_NAME-1];
format(string_50, sizeof(string_50), fmt_str_50
,
i,
AdvertInfo[i][2][adName]
);
strcat(string_100, string_50);
}
if(TOTALADVERT[2] == 0)
{
PlayerPlaySound(playerid, 31203, 0.0, 0.0, 0.0);
SCM(playerid, COLOR_RED, "[ОШИБКА]: {B4B4B4}Новых объявлений нет!");
callcmd::news(playerid);
return true;
}
SPD(playerid, 828, DSL, "Объявления", string_100, "Выбрать", "Назад");
}
}

И читабельность твоего кода на дне. Я уже молчу про количество создаваемых массивов, когда другие не используются...
И эти case 666 отвратительно выглядят, заменил бы константами в энуме.