igor_chupin
Компетентный
Привет, друзья вот сделал для своего мода систему новостей и решил её выложить в public как Мануал.
Примечания: команды на sscanf2. Делал для своего мода, по этому переменные изменяйте на свои.
Расскажу о ней в конце описания.
Приступим:
Ко всем #define добавляем.
Будьте осторожны если у вас заняты данный диалоги смените на свои числа.
ко всем new.
В public OnPlayerCommandText(playerid, cmdtext[])
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
В конец мода
В команду /news добавляем проверку.
в public OnPlayerDisconnect(playerid, reason)
Ну вот и все, а теперь расскажу о системе:
1.Какой нибудь репортер выходит на дежурство.
2.Пишет в news типо привет кидайте деньги на мп /newspay [price].
3.Кто-нибудь скидывает деньги, они идут в такой маленький общак репортеров.
4.Он пишет /newsmp и выбирает мероприятия.
5.Затем все прописывают /mpgo и их телепортирует на мероприятия.
6.В конце кто нибудь выигрывает и репортер прописывает команду /newswin [playerid].
7.И этому игроку идут 75% от приза, а оставшиеся 15% идут репортеру.
немного скринов:
Примечания: команды на 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;
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;
}
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;
}
PHP:
if(newson != playerid && newson != -1) return send(playerid,COLOR_WHITE,""vError" Уже кто-то ведет репортаж!");
if(NewsDuty[playerid] != true) return send(playerid,COLOR_RED,""vError" Вы не вышли на дежурство ''/newsduty''.");
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% идут репортеру.
немного скринов:
Последнее редактирование:
