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

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

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

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

Система репортеров, с мероприятием.

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

igor_chupin

Компетентный
Привет, друзья вот сделал для своего мода систему новостей и решил её выложить в public как Мануал.
Примечания: команды на sscanf2. Делал для своего мода, по этому переменные изменяйте на свои.
Расскажу о ней в конце описания.
Приступим:
Ко всем #define добавляем.
PHP:
#define DIALOG_MP									500
#define DIALOG_MP_ME								501
#define UnAdminMes 									"{FF0000}[ОШИБКА]{FFFFFF} Нет прав на использование команды!"
#define send										SendClientMessage
#define f(%1,										format(%1,sizeof(%1),
#define vError										"{FF0000}[ОШИБКА]{FFFFFF}"
Будьте осторожны если у вас заняты данный диалоги смените на свои числа.
ко всем new.
PHP:
new MPGO;
new newsmoney;
new MPNews[MAX_PLAYERS];
new bool:NewsDuty[MAX_PLAYERS];
new newson = -1;
В public OnPlayerCommandText(playerid, cmdtext[])
PHP:
if(strcmp(cmdtext, "/newsduty", true) == 0)
	{
		if(Player[playerid][pMember] != 8) return SendClientMessage(playerid, COLOR_RED, UnAdminMes);
		if(newson != playerid && newson != -1) return send(playerid,COLOR_WHITE,""vError" Уже кто-то ведет мероприятия!");
		if(newson == -1)
		{
			f(string,"%s[%d]{FFFFFF} вышел на дежурство репортеров.",sendername(playerid),playerid);
			SendTeamMessage(8, COLOR_LIGHTBLUE, string);
			NewsDuty[playerid] = true;
			newson = playerid;
			MPGO = 0;
		}
		else if(newson == playerid)
		{
			f(string,"%s[%d]{FFFFFF} ушел с дежурство репортеров.",sendername(playerid),playerid);
			SendTeamMessage(8, COLOR_LIGHTBLUE, string);
			NewsDuty[playerid] = false;
			MPGO = 0;
			newson = -1;
		}
		return 1;
	}
	if(strcmp(cmd, "/newspay", true) == 0)
	{
		if(newson == -1) return send(playerid,COLOR_WHITE,""vError" Не кто не введет дежурство.");
		if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "[КОМАНДЫ]{FFFFFF} /newspay [кол-во]");
		if(Player[playerid][pMoney] < params[0]) return SendClientMessage(playerid, COLOR_RED, ""vError" У вас нет столько денег");
		if(params[0] < 10000 || params[0] > 10000000) return send(playerid, COLOR_WHITE, "Количество должно быть от 10.000$ до 10.000.000$.");
		GivePlayerKapusta(playerid, -params[0]);
		newsmoney += params[0];
		f(string,"%s[%d]{FFFFFF} пожертвовал для мероприятия %d$, теперь приз составляет %d$.",sendername(playerid),playerid,params[0],newsmoney);
		SendClientMessageToAll(COLOR_LIGHTBLUE, string);
		return 1;
	}
	if(strcmp(cmd, "/newswin", true) == 0)
	{
		if(Player[playerid][pMember] != 8) return SendClientMessage(playerid, COLOR_RED, UnAdminMes);
		if(newson != playerid) return SendClientMessage(playerid, COLOR_RED, ""vError" Вы не ведете мероприятия.");
		if(newsmoney == 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Приз не может быть 0$");
		if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, COLOR_LIGHTBLUE, "[КОМАНДЫ]{FFFFFF} /newswin [playerid]");
		GivePlayerKapusta(params[0], newsmoney/100*75);
		f(string,"Вы получаете {1560bd}75%{ffffff} от приза, {1560bd}15%{ffffff} идут репортеру, ваш приз составил {00a86b}%d$",newsmoney/100*75);
		send(params[0],COLOR_WHITE,string);
		GivePlayerKapusta(playerid, newsmoney/100*15);
		f(string,"Ваша прибыль с МероПриятия составила {00a86b}%d$",newsmoney/100*15);
		send(playerid,COLOR_WHITE,string);
		f(string,"И победитель мероприятия стал {1560bd}%s[%d]{ffffff} и он получает {00a86b}%d$",sendername(params[0]),params[0],newsmoney/100*75);
		SendClientMessageToAll(COLOR_WHITE, string);
		newsmoney = 0;
		OnPlayerCommandText(playerid,"/newsduty");
		return 1;
	}
	if(strcmp(cmd, "/mpgo", true) == 0)
	{
		if(Player[playerid][pLevel] == 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Ваш уровень не должен быть 0-вым!");
		if(Player[playerid][pJailed] > 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Вы находитесь в тюрьме!");
		if(MPGO == 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Мероприятия не открыто!");
		if(MPGO == 1 || MPGO == 2 || MPGO == 4)
		{
			new Float:plocx,Float:plocy,Float:plocz;
			GetPlayerPos(MPNews[playerid], plocx, plocy, plocz);
			SetPlayerVirtualWorld(playerid,GetPlayerVirtualWorld(playerid));
			ServerSetPlayerPos(playerid,plocx,plocy+2, plocz);
			send(playerid,COLOR_RED,"Вы были телепортированы на место проведения мероприятия.");
			if(MPGO == 1) GivePlayerWeaponAC(playerid, 24, 1000);
			if(MPGO == 2 || MPGO == 4)
			{
				GivePlayerWeaponAC(playerid, 24, 1000);
				GivePlayerWeaponAC(playerid, 25, 1000);
				GivePlayerWeaponAC(playerid, 29, 1000);
				GivePlayerWeaponAC(playerid, 31, 1000);
			}
		}
		if(MPGO == 3 || MPGO == 5) return send(playerid,COLOR_RED,""vError" На данное МероПриятия запрещено телепортироваться!");
		return 1;
	}
	if(strcmp(cmd, "/newsmp", true) == 0)
	{
		if(Player[playerid][pMember] != 8) return SendClientMessage(playerid, COLOR_RED, UnAdminMes);
		if(newson != playerid) return SendClientMessage(playerid, COLOR_RED, ""vError" Вы не ведете мероприятия.");
		if(MPGO != 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Вы уже выбрали мероприятия!");
		f(string,"{00a86b}[1]{ffffff} МероПриятия PvP.\n\
		{00a86b}[2]{ffffff} МероПриятия Counter-Strike.\n\
		{00a86b}[3]{ffffff} МероПриятия Приветы и Пожелания.\n\
		{00a86b}[4]{ffffff} МероПриятия DeathMatch.\n\
		{00a86b}[5]{ffffff} МероПриятия Что-то свое.");
		ShowPlayerDialog(playerid,DIALOG_MP,DIALOG_STYLE_LIST,"{33CCFF}Выберете МероПриятия",string,"Ок","Назад");
		return 1;
	}
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
PHP:
if(dialogid == DIALOG_MP)
	{
		if(!response) return 1;
		switch(listitem)
		{
		case 0:
			{
				if(newsmoney == 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Приз не может быть 0$");
				MPGO = 1;
				f(string, "[NG] News %s[%d]: Открыт набор на МП ''PvP'' приз составляет: %d$.", sendername(playerid),playerid,newsmoney/100*75);
				OOCNews(TAXI_COLOR,string);
				OOCNews(TAXI_COLOR,"[NG] News: Для участия на МП введите ''/mpgo''");
				TSetTimer("mpgo",60000*5,false);
			}
		case 1:
			{
				if(newsmoney == 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Приз не может быть 0$");
				MPGO = 2;
				f(string, "[NG] News %s[%d]: Открыт набор на МП ''Counter-Strike'' приз составляет: %d$.", sendername(playerid),playerid,newsmoney/100*75);
				OOCNews(TAXI_COLOR,string);
				OOCNews(TAXI_COLOR,"[NG] News: Для участия на МП введите ''/mpgo''");
				TSetTimer("mpgo",60000*5,false);
			}
		case 2:
			{
				MPGO = 3;
				f(string, "[NG] News %s[%d]: Открыто мероприятия ''Приветы и Пожелания''", sendername(playerid),playerid);
				OOCNews(TAXI_COLOR,string);
			}
		case 3:
			{
				if(newsmoney == 0) return SendClientMessage(playerid, COLOR_RED, ""vError" Приз не может быть 0");
				MPGO = 4;
				f(string, "[NG] News %s[%d]: Открыт набор на МП ''DeathMatch'' приз составляет: %d$.", sendername(playerid),playerid,newsmoney/100*75);
				OOCNews(TAXI_COLOR,string);
				OOCNews(TAXI_COLOR,"[NG] News: Для участия на МП введите ''/mpgo''");
				TSetTimer("mpgo",60000*5,false);
			}
		case 4:ShowPlayerDialog(playerid,DIALOG_MP_ME,DIALOG_STYLE_INPUT, "{33ccff}Введите названия мероприятия", "{ffffff}Введите названия Мероприятия.","Выбрать","Отмена");
		}
		MPNews[playerid] = playerid;
	}
	if(dialogid == DIALOG_MP_ME)
	{
		if(!response) return 1;
		MPGO = 5;
		f(string, "[NG] News %s[%d]: Открыто мероприятия ''%s''.", sendername(playerid),playerid,(inputtext));
		OOCNews(TAXI_COLOR,string);
	}
В конец мода
PHP:
forward mpgo();
public mpgo()
{
	new string[144];
	MPGO = 0;
	f(string, "[NG] News : Набор на мероприятия закрыт, напомню приз составляет: %d$.",newsmoney/100*75);
	OOCNews(TAXI_COLOR,string);
	return 1;
}
В команду /news добавляем проверку.
PHP:
if(newson != playerid && newson != -1) return send(playerid,COLOR_WHITE,""vError" Уже кто-то ведет репортаж!");
		if(NewsDuty[playerid] != true) return send(playerid,COLOR_RED,""vError" Вы не вышли на дежурство ''/newsduty''.");
в public OnPlayerDisconnect(playerid, reason)
PHP:
if(newson == playerid)
	{
		f(string,"%s покинул эфир.",sendername(playerid));
		NewsDuty[playerid] = false;
		SendClientMessageToAll(COLOR_LIGHTRED,string);
		newson = -1;
	}
Ну вот и все, а теперь расскажу о системе:
1.Какой нибудь репортер выходит на дежурство.
2.Пишет в news типо привет кидайте деньги на мп /newspay [price].
3.Кто-нибудь скидывает деньги, они идут в такой маленький общак репортеров.
4.Он пишет /newsmp и выбирает мероприятия.
5.Затем все прописывают /mpgo и их телепортирует на мероприятия.
6.В конце кто нибудь выигрывает и репортер прописывает команду /newswin [playerid].
7.И этому игроку идут 75% от приза, а оставшиеся 15% идут репортеру.
немного скринов:



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