Доступ к архиву

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

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

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

[Мануал] Система объявлений Advance Rp [80%]

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

Holly.Wood

Умник
Я думаю это сис-ма превосходит и ту которая в RLS.

Описание:
Подавать объявления ( /ad ) можно когда угодно НО после того как предыдущее проверят СМИ, таймера на /ad нету, как проверили так можно подавать следующее.
Для сми команда /edit (без iD без ничего)
Если оставить диалог пустой то объявление подастся без изменений и в чате будет написано " Объявление проверил ... "
Или же можно изменить тогда в чате будет писаться " Объявление отредактировал ... "
Ну и в крайнем случае отклонить.


Начнем.

Ко всем new добавим:
PHP:
#define advert 777
new ADV[   MAX_PLAYERS   ];
new OBV[   MAX_PLAYERS   ];
new ADVERTISE;
в OnPlayerCommandText

PHP:
if(strcmp(cmd, "/edit", true) == 0)
	{
		if(PlayerInfo[playerid][pMember] == 15 || PlayerInfo[playerid][pMember] == 16 || PlayerInfo[playerid][pMember] == 17)
		{
			new giveplayer[  MAX_PLAYER_NAME  ],giveplayerid,sendername[  MAX_PLAYER_NAME  ],string[   256   ];
			if(IsPlayerConnected(giveplayerid))
			{
					GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
					GetPlayerName(playerid, sendername, sizeof(sendername));
					if(ADVERTISE == 0) return SendClientMessage(playerid,-1,"Никто не подавал объявление");
					OBV[playerid] = giveplayerid;
					format(string, sizeof(string), "{ffffff}Отправитель: %s\nТекст:{fde910} %s\n\n{ffffff}Введите новый текст для этого объявления или оставьте поле пустым если редактирование не нужно\n\
					Вы также можете отклонить объявление с причиной нажав кнопку \"Отклонить\"",giveplayer,ADV[giveplayerid]);
					ShowPlayerDialog(playerid,advert,DIALOG_STYLE_INPUT,"{00ff00}Публикация объявления",string,"Готово","Отклонить");
			}
		}
		else
		{
			return true;
		}
	}
	if(strcmp(cmd, "/advertise", true) == 0 || strcmp(cmd, "/ad", true) == 0)
	{
		if(IsPlayerConnected(playerid))
		{
		    if(ADVERTISE == 1) return SendClientMessage(playerid,-1, "Кто-то уже подал объявление");
			new sendername[  MAX_PLAYER_NAME  ];
			if(PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid, COLOR_GRAD, "{FF0000}[Недоступно]{ffffff} Команда доступна с 3-го уровня.");
			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 SendClientMessage(playerid, COLOR_WHITE, "{00C0FF}Используйте{FFFFFF} : (/ad)vertise [сообщение]");
                        new string[145];
			if(PlayerInfo[playerid][pCash] < 10) return SendClientMessage(playerid, COLOR_WHITE,  "{FF0000}[Недоступно]{ffffff} У вас недостаточно денег для подачи рекламы.");
			GetPlayerName(playerid, sendername, sizeof(sendername));
			SendClientMessage(playerid, COLOR_WHITE, "Ваше объявление было отправлено в СМИ для утверждения");
			format(string, sizeof(string), "{f4c430}[Для утверждения] Автор: %s[%d]. Текст: %s",sendername, playerid,(result));
			SendFamilyMessage(15, -1, string);
			PlayerInfo[playerid][pCash] -= 10,ADVERTISE = 1;
			strmid(ADV[playerid], result, 0, strlen(result), 255);
		}
		return true;
	}
И в OnDialogResponse

PHP:
case advert:
		{
		    new sendername[  MAX_PLAYER_NAME  ];
			GetPlayerName(OBV[playerid], sendername, sizeof(sendername));
			if(response)
			{
			    new texts[160];
			   	new name[  MAX_PLAYER_NAME  ];
				if(strlen(inputtext) == 0)
				{
				    format(texts, sizeof(texts), "{66ff00}Обьявление: %s. Прислал(а): %s[%d]. Номер: %d",ADV[playerid], GN(OBV[playerid]),OBV[playerid],PlayerInfo[OBV[playerid]][pNumber]),SendClientMessageToAll(-1,texts);
					format(texts, sizeof(texts), "{34c924} Объявление проверил работник Радоцентра: %s.", GN(playerid)),SendClientMessageToAll(-1,texts);
					ADV[ OBV[playerid] ] = 0,OBV[playerid] = 501,ADVERTISE = 0;
				}
				else
				{
				 GetPlayerName(playerid, name, sizeof(name));
				 format(texts, sizeof(texts), "{66ff00}Обьявление: %s. Прислал(а): %s[%d]. Номер: %d",  (inputtext), sendername,OBV[playerid],PlayerInfo[OBV[playerid]][pNumber]),SendClientMessageToAll(-1,texts);
				 format(texts, sizeof(texts), "{34c924} Объявление отредактировал работник Радоцентра: %s.", GN(playerid)),SendClientMessageToAll(-1,texts);
				 ADV[ OBV[playerid] ] = 0,OBV[playerid] = 501,ADVERTISE = 0;
				}
				return true;
			}
			else
			{
					format(string, sizeof(string), "{FF6600}Вы отклонили объявление",sendername, playerid, (inputtext)),SendClientMessage(playerid, COLOR_YELLOW, string);
					format(string, sizeof(string), "{FF6600}%s[%d] отклонил обьявление. Причина: %s",sendername, playerid, (inputtext)),SendClientMessage(OBV[playerid], COLOR_YELLOW, string);
					ADV[ OBV[playerid] ] = 0,OBV[playerid] = 501,ADVERTISE = 0;
			}
		}
На этом все вот хорошая вам система с небольшим кодом.

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