Доступ к готовым решениям

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

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

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

Мануал Редактирование новостей Advance-RP

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

Expert

Умник
Редактирование объявлений Advance-RP

Доброго времени суток.
Давно была написана система редактирования новостей для СМИ, подобие 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];
В OnGameModeInit:

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);
	}
Находим свою команду /ad и вставляем туда:

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, "Отправить", "Отклонить");
	}
В OnDialogResponse:

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");
			}
		}
Вроде бы и все, если что забыл пишите, доработаем.
Жду оценки.

​
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу