Перейти к содержанию
Авторизация  
Vladimir_Kulkov

Система объявлений Advance RolePlay [100%]

Рекомендуемые сообщения

Vladimir_Kulkov

Описание:

 

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

Для СМИ команда /edit (без iD без ничего)

Если оставить диалог пустой то объявление подастся без изменений и в чате будет написано " Объявление проверил ... "

Или же можно изменить тогда в чате будет писаться " Объявление отредактировал ... "

Ну и в крайнем случае отклонить.

 

Скрины:

d704e8d862ec.png

Ко всем define

 

#define advert 777

Ко всем new

 

new ADV[MAX_PLAYERS];

new OBV[MAX_PLAYERS];

new ADVERTISE;

в public OnPlayerCommandText

 

if(strcmp(cmd, "/edit", true) == 0)

{

if(PlayerInfo[playerid][pMember] == 14 || PlayerInfo[playerid][pMember] == 15 || PlayerInfo[playerid][pMember] == 16 || PlayerInfo[playerid][pMember] == 17 || PlayerInfo[playerid][pMember] == 30)

{

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]

GetPlayerName(playerid, sendername, sizeof(sendername));

new length = strlen(cmdtext);

while ((idx

{

idx++;

}

new offset = idx;

new result[64];

while ((idx

{

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]

GetPlayerName(playerid, sendername, sizeof(sendername));

SendClientMessage(playerid, COLOR_WHITE, "Ваше объявление было отправлено в СМИ для утверждения");

format(string, sizeof(string), "{f4c430}[Для утверждения] Автор: %s[%d]. Текст: %s",sendername, playerid,(result));

SendFamilyMessage(14, -1, string),SendFamilyMessage(15, -1, string),SendFamilyMessage(16, -1, string),SendFamilyMessage(17, -1, string),SendFamilyMessage(30, -1, string);

PlayerInfo[playerid][pCash] -= 10,ADVERTISE = 1;

strmid(ADV[playerid], result, 0, strlen(result), 255);

}

return true;

}

В OnDialogResponse

 

case advert: // если без case, то if(dialogid == advert)

{

new sendername[MAX_PLAYER_NAME];

GetPlayerName(OBV[playerid], sendername, sizeof(sendername));

if(response)

{

new texts[1000];

new name[MAX_PLAYER_NAME];

if(strlen(inputtext) == 0)

{

format(texts, sizeof(texts), "%s | Отправил %s[%d] (тел. %d)",ADV[playerid], GN(OBV[playerid]),OBV[playerid],PlayerInfo[OBV[playerid]][pNumber]

);

SendClientMessageToAll(TEAM_GROVE_COLOR,texts);

new rangz[256];

switch(PlayerInfo[playerid][pMember]){

case 15,16,17:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Директор радиоцентра";

case 9:rangz = "Главный редактор";

case 8:rangz = "Редактор";

case 7:rangz = "Попощник редактора";

case 6:rangz = "Корректор";

case 5:rangz = "Старший журналист";

case 4:rangz = "Журналист";

case 3:rangz = "Радиотехник";

case 2:rangz = "Верстальщик новостей";

case 1:rangz = "Начинающий работник";}}

case 30:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Директор ТВ-центра";

case 9:rangz = "Управляющий студией";

case 8:rangz = "Ведущий";

case 7:rangz = "Режиссёр";

case 6:rangz = "Звукорежиссёр";

case 5:rangz = "Оператор";

case 4:rangz = "Светотехник";

case 3:rangz = "Телемастер";

case 2:rangz = "Помощник телемастера";

case 1:rangz = "Помощник редакций";}}

case 14:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Управляющий СМИ";}}}

format(texts, sizeof(texts), "{228B22}Объявление проверил %s %s[%d]", rangz, GN(playerid), playerid),SendClientMessageToAll(-1,texts);

ADV[OBV[playerid]] = 0,OBV[playerid] = 501,ADVERTISE = 0;

}

else

{

GetPlayerName(playerid, name, sizeof(name));

format(texts, sizeof(texts), "%s | Отправил %s[%d] (тел. %d)", (inputtext), sendername,OBV[playerid],PlayerInfo[OBV[playerid]][pNumber]);

SendClientMessageToAll(TEAM_GROVE_COLOR,texts);

new rangz[256];

switch(PlayerInfo[playerid][pMember]){

case 15,16,17:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Директор радиоцентра";

case 9:rangz = "Главный редактор";

case 8:rangz = "Редактор";

case 7:rangz = "Попощник редактора";

case 6:rangz = "Корректор";

case 5:rangz = "Старший журналист";

case 4:rangz = "Журналист";

case 3:rangz = "Радиотехник";

case 2:rangz = "Верстальщик новостей";

case 1:rangz = "Начинающий работник";}}

case 30:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Директор ТВ-центра";

case 9:rangz = "Управляющий студией";

case 8:rangz = "Ведущий";

case 7:rangz = "Режиссёр";

case 6:rangz = "Звукорежиссёр";

case 5:rangz = "Оператор";

case 4:rangz = "Светотехник";

case 3:rangz = "Телемастер";

case 2:rangz = "Помощник телемастера";

case 1:rangz = "Помощник редакций";}}

case 14:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Управляющий СМИ";}}}

format(texts, sizeof(texts), "{228B22}Объявление отредактировал %s %s[%d]", rangz, GN(playerid), 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);

new rangz[256];

switch(PlayerInfo[playerid][pMember]){

case 15,16,17:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Директор радиоцентра";

case 9:rangz = "Главный редактор";

case 8:rangz = "Редактор";

case 7:rangz = "Попощник редактора";

case 6:rangz = "Корректор";

case 5:rangz = "Старший журналист";

case 4:rangz = "Журналист";

case 3:rangz = "Радиотехник";

case 2:rangz = "Верстальщик новостей";

case 1:rangz = "Начинающий работник";}}

case 30:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Директор ТВ-центра";

case 9:rangz = "Управляющий студией";

case 8:rangz = "Ведущий";

case 7:rangz = "Режиссёр";

case 6:rangz = "Звукорежиссёр";

case 5:rangz = "Оператор";

case 4:rangz = "Светотехник";

case 3:rangz = "Телемастер";

case 2:rangz = "Помощник телемастера";

case 1:rangz = "Помощник редакций";}}

case 14:{

switch(PlayerInfo[playerid][pRang]){

case 10:rangz = "Управляющий СМИ";}}}

format(string, sizeof(string), "{FF6600}%s %s[%d] отклонил объявление. Причина: %s",rangz, sendername, playerid, (inputtext)),SendClientMessage(OBV[playerid], COLOR_YELLOW, string);

ADV[OBV[playerid]] = 0,OBV[playerid] = 501,ADVERTISE = 0;

}

}

 

Автор: Unreal

P.s. Если подобная есть, то удалите.

Изменено пользователем Vladimir_Kulkov

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

У меня ерроры на 


P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(2560) : error 017: undefined symbol "string"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(2560) : error 017: undefined symbol "string"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(2560) : error 029: invalid expression, assumed zero
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(2560) : fatal error 107: too many error messages on one line
 
Compilation aborted.Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase
 
 
4 Errors.
 

На строку

format(string, sizeof(string), "{FF6600}?? ????????? ??????????",sendername, playerid, (inputtext)),SendClientMessage(playerid, COLOR_YELLOW, string);

Модераторы объедините сообщения пожалуйста,а то у меня нет отредактировать кнопки

 

Верхнее я решил,теперь другие ерроры

P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25187) : error 027: invalid character constant
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25187) : warning 217: loose indentation
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25187) : error 027: invalid character constant
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25205) : error 017: undefined symbol "idx"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25207) : error 017: undefined symbol "idx"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25207) : warning 215: expression has no effect
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25209) : error 017: undefined symbol "idx"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25211) : error 017: undefined symbol "idx"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25213) : error 017: undefined symbol "idx"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25214) : error 017: undefined symbol "idx"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25214) : warning 215: expression has no effect
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25216) : error 017: undefined symbol "idx"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25219) : error 017: undefined symbol "pCash"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25223) : error 017: undefined symbol "SendFamilyMessage"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25224) : error 017: undefined symbol "pCash"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25876) : warning 216: nested comment
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(25883) : warning 216: nested comment
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(29589) : error 017: undefined symbol "string"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(29589) : error 017: undefined symbol "string"
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(29589) : error 029: invalid expression, assumed zero
P:\??? ??????\??? ???\gamemodes\cream1.2.pwn(29589) : fatal error 107: too many error messages on one line

Compilation aborted.Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase


16 Errors.

На вот эти команды

 	if(strcmp(cmd, "/edit", true) == 0)
    {
    if(Account[playerid][pMember] == 14 || Account[playerid][pMember] == 15 || Account[playerid][pMember] == 16 || Account[playerid][pMember] == 17 || Account[playerid][pMember] == 30)
    {
    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(Account[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(Account[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(14, -1, string),SendFamilyMessage(15, -1, string),SendFamilyMessage(16, -1, string),SendFamilyMessage(17, -1, string),SendFamilyMessage(30, -1, string);
 	 	Account[playerid][pCash] -= 10,ADVERTISE = 1;
 	 	strmid(ADV[playerid], result, 0, strlen(result), 255);
 	 	}
 	return true;
 	}
Изменено пользователем komodik

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
na1x

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
vladislavkapalkin

весь код в кучу не понятно что куда .для новичков вообше не разобрать 

  • Like 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
#Pawno

Если копируете , то код хотя бы проверяйте на работу способность. 
Да и оптимизаций нет , и уже наверно не кто не использует старый забытый процессор strcmp.
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.