Expert
Умник
Редактирование объявлений Advance-RP
Доброго времени суток.
Давно была написана система редактирования новостей для СМИ, подобие Advance-RP.
Не нашел ничего подобного на форуме, решил выложить.
Автор: Я.
Как она работает:
1. Подаем объявление.
2. Объявление приходит в редакцию СМИ.
3. Вводим команду /news
4. Выводится диалог с возможностью одобрить/редактировать/отклонить объявление.
5. Объявление появляется у игроков.
Начнем:
В начало мода:
В OnGameModeInit:
Находим свою команду /ad и вставляем туда:
Создаем команду /news
В OnDialogResponse:
Вроде бы и все, если что забыл пишите, доработаем.
Жду оценки.
Давно была написана система редактирования новостей для СМИ, подобие Advance-RP.
Не нашел ничего подобного на форуме, решил выложить.
Автор: Я.
Как она работает:
1. Подаем объявление.
2. Объявление приходит в редакцию СМИ.
3. Вводим команду /news
4. Выводится диалог с возможностью одобрить/редактировать/отклонить объявление.
5. Объявление появляется у игроков.
Начнем:
В начало мода:
PHP:
#define MAX_ADVERT 50
new TOTALADVERT;
enum ad_info
{
ad_sender[MAX_PLAYER_NAME],
ad_phone,
ad_text[128],
bool:ad_good
};
new AdvertInfo[MAX_ADVERT][ad_info];
PHP:
for(new i = 0; i < MAX_ADVERT; i++)
{
AdvertInfo[i][ad_phone] = 0;
strdel(AdvertInfo[i][ad_text], 0, 128);
strdel(AdvertInfo[i][ad_sender], 0, MAX_PLAYER_NAME);
}
PHP:
TOTALADVERT++;
AdvertInfo[TOTALADVERT][ad_phone] = PlayerInfo[playerid][pPhone];
strmid(AdvertInfo[TOTALADVERT][ad_text],params[0],0,128,128);
strmid(AdvertInfo[TOTALADVERT][ad_sender],PlayerName(playerid),0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
SendClientMessage(playerid, color_white, "Ты отправил сообщение в СМИ!");
Создаем команду /news
PHP:
if(strcmp(cmd, "/news", true) == 0)
{
for(new i = 1; i <= TOTALADVERT;i++)
{
if(AdvertInfo[i][ad_good] == true) continue;
SetPVarInt(playerid, "advert_id", i), AdvertInfo[i][ad_good] = true;
f(query_mysql, ""W"Отправитель: %s\n\nТекст:\n{FFC125}%s\n\n\
"W"Для редактирования объявления введите новый текст и нажмите 'Отправить'.\n\
Если редактирование объявлению не нужно, оставьте поле пустым.", AdvertInfo[i][ad_sender], AdvertInfo[i][ad_text]);
break;
}
if(TOTALADVERT == 0) return SendClientMessage(playerid, color_grey, "Объявлений нет.");
return ShowPlayerDialog(playerid, d_news2, DIALOG_STYLE_INPUT, "Публикация объявления", query_mysql, "Отправить", "Отклонить");
}
PHP:
case d_news2:
{
if(response)
{
new messages[128];
if(!strlen(inputtext))
{
f(messages,"{009ACD}%s | Отправил %s[%i](тел. %i)", AdvertInfo[GetPVarInt(playerid, "advert_id")][ad_text], AdvertInfo[GetPVarInt(playerid, "advert_id")][ad_sender],
GetPlayerID(AdvertInfo[GetPVarInt(playerid, "advert_id")][ad_sender]),AdvertInfo[GetPVarInt(playerid, "advert_id")][ad_phone]);
SendClientMessageToAll(color_green, messages);
f(messages,"{00688B} Объявление проверил: %s", PlayerName(playerid));
SendClientMessageToAll(color_green, messages);
for(new i = 1; i <= TOTALADVERT;i++)
{
AdvertInfo[i][ad_phone] = AdvertInfo[i+1][ad_phone];
strmid(AdvertInfo[i][ad_text], AdvertInfo[i+1][ad_text], 0, strlen(AdvertInfo[i+1][ad_text]), 128);
strmid(AdvertInfo[i][ad_sender], AdvertInfo[i+1][ad_sender], 0, strlen(AdvertInfo[i+1][ad_sender]), MAX_PLAYER_NAME);
}
TOTALADVERT--;
AdvertInfo[GetPVarInt(playerid,"advert_id")][ad_good] = false;
DeletePVar(playerid, "advert_id");
return true;
}
f(messages,"{009ACD}%s | Отправил %s[%i](тел. %i)", inputtext, AdvertInfo[GetPVarInt(playerid, "advert_id")][ad_sender],
GetPlayerID(AdvertInfo[GetPVarInt(playerid, "advert_id")][ad_sender]), AdvertInfo[GetPVarInt(playerid, "advert_id")][ad_phone]);
SendClientMessageToAll(color_green, messages);
f(messages,"{00688B} Объявление отредактировал: %s", PlayerName(playerid));
SendClientMessageToAll(color_green, messages);
for(new i = 1; i <= TOTALADVERT;i++)
{
AdvertInfo[i][ad_phone] = AdvertInfo[i+1][ad_phone];
strmid(AdvertInfo[i][ad_text], AdvertInfo[i+1][ad_text], 0, strlen(AdvertInfo[i+1][ad_text]), 128);
strmid(AdvertInfo[i][ad_sender], AdvertInfo[i+1][ad_sender], 0, strlen(AdvertInfo[i+1][ad_sender]), MAX_PLAYER_NAME);
}
TOTALADVERT--;
AdvertInfo[GetPVarInt(playerid,"advert_id")][ad_good] = false;
DeletePVar(playerid, "advert_id");
return true;
}
else
{
if(!strlen(inputtext))
{
f(query_mysql, ""W"Отправитель: %s\n\nТекст:\n{FFC125}%s\n\n\
"W"Для редактирования объявления введите новый текст и нажмите 'Отправить'.\n\
Если редактирование объявлению не нужно, оставьте поле пустым.", AdvertInfo[GetPVarInt(playerid,"advert_id")][ad_sender],
AdvertInfo[GetPVarInt(playerid,"advert_id")][ad_text]);
ShowPlayerDialog(playerid, d_news2, DIALOG_STYLE_INPUT, "Публикация объявления", query_mysql, "Отправить", "Отклонить");
return SendClientMessage(playerid, color_grey, "Укажи причину отклонения!!");
}
SendMes(GetPlayerID(AdvertInfo[GetPVarInt(playerid,"advert_id")][ad_sender]), color_white, "%s[%i] отклонил Ваше объявление. Причина: %s",PlayerName(playerid),playerid, inputtext);
for(new i = 1; i <= TOTALADVERT;i++)
{
AdvertInfo[i][ad_phone] = AdvertInfo[i+1][ad_phone];
strmid(AdvertInfo[i][ad_text], AdvertInfo[i+1][ad_text], 0, strlen(AdvertInfo[i+1][ad_text]), 128);
strmid(AdvertInfo[i][ad_sender], AdvertInfo[i+1][ad_sender], 0, strlen(AdvertInfo[i+1][ad_sender]), MAX_PLAYER_NAME);
}
TOTALADVERT--;
AdvertInfo[GetPVarInt(playerid,"advert_id")][ad_good] = false;
DeletePVar(playerid, "advert_id");
}
}
Жду оценки.
Последнее редактирование:
