Это мой первый Урок,я вам расскажу как написать простенькую систему Доната! Будьте Внимательны,эта система была написана для одного мода(Автор Я) Так же система Доната написана на sscanf
Начнём:
// Вставляем Загрузку данных о персонаже
Code
if (strcmp(ParameterName, "Pointss", false) == 0) APlayerData[playerid][Pointss] = strval(ParameterValue); if (strcmp(ParameterName, "VIP", false) == 0) APlayerData[playerid][VIP] = strval(ParameterValue);
COMMAND:givepoints(playerid, params[]) { new Msg[128], Name[24], OtherName[24], OtherPlayer, pointss;
SendAdminText(playerid, "/givepoints", params);
if (APlayerData[playerid][LoggedIn] == true) { if (APlayerData[playerid][PlayerLevel] >= 5) { if (sscanf(params, "ud", OtherPlayer, pointss)) SendClientMessage(playerid, 0xFF0000AA, "Используйте: \"/givepoints [id/имя игрока] [сумма points]\""); else { if (IsPlayerConnected(OtherPlayer)) { GetPlayerName(playerid, Name, sizeof(Name)); GetPlayerName(OtherPlayer, OtherName, sizeof(OtherName)); APlayerData[OtherPlayer][Pointss]+= pointss; format(Msg, 128, "{00FF00}Вы получили {FFFF00}%i points{00FF00} от {FFFF00}%s", pointss, Name); SendClientMessage(OtherPlayer, 0xFFFFFFFF, Msg); format(Msg, 128, "{00FF00}Вы дали {FFFF00}%i points{00FF00} игроку {FFFF00}%s", pointss, OtherName); SendClientMessage(playerid, 0xFFFFFFFF, Msg); PlayerFile_Save(playerid); PlayerFile_Save(OtherPlayer); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Этот игрок не подключен!"); } } else return 0; } else return 0; return 1; }
// Команда Система Доната!
Code
COMMAND:donate(playerid, params[]) { SendAdminText(playerid, "/donate", params); if (APlayerData[playerid][LoggedIn] == true) { ShowPlayerDialog(playerid, DialogPoints, DIALOG_STYLE_LIST, "-=Donate Список=-", "Купить VIP акк\nОбмен Очков за Points\nОбмен рублей за Points\nПомощь\nИнформация", "Выбрать", "Отмена"); } else return 0;
return 1; }
// В моде Вставляем ниже public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Code
case DialogPoints: Dialog_Points(playerid, response, listitem); case DialogVIP: Dialog_VIP(playerid, response, listitem); case DialogScorePoints: Dialog_ScorePoints(playerid, response, inputtext); case DialogMoneyPoints: Dialog_MoneyPoints(playerid, response, inputtext);
Dialog_Points(playerid, response, listitem) { if(!response) return 1; new DialogMsg[500]; switch (listitem) { case 0: { ShowPlayerDialog(playerid, DialogVIP, DIALOG_STYLE_LIST, "VIP Список", "VIP Bronze - 500 Points\nVIP Silver - 700 Points\nVIP Gold - 1000 Points", "Купить", "Отмена"); } case 1: { format(DialogMsg, sizeof(DialogMsg), "%s{FFFFFF}На счету Points: {00FF00}$%i\n \n", DialogMsg, APlayerData[playerid][Pointss]); format(DialogMsg, sizeof(DialogMsg), "%s{FFFFFF}Курс обмана составляет 5 Points - 1 Очко \n", DialogMsg); format(DialogMsg, sizeof(DialogMsg), "%s{FF0000}ВНИМАНИЯ:{FFFFFF} Вводите Points только {00FF00}5,10,15,20 и т.д!\n", DialogMsg); format(DialogMsg, sizeof(DialogMsg), "%s{FFFFFF}Введите сумму points,которую вы хотите обменять на очки:", DialogMsg); ShowPlayerDialog(playerid, DialogScorePoints, DIALOG_STYLE_INPUT, "Обмен Очков за Points", DialogMsg, "Далее", "Отмена"); } case 2: { format(DialogMsg, sizeof(DialogMsg), "%s{FFFFFF}На счету Points: {00FF00}$%i\n \n", DialogMsg, APlayerData[playerid][Pointss]); format(DialogMsg, sizeof(DialogMsg), "%s{FFFFFF}Курс обмана составляет 1 Points - 1,000 рублей(игровых) \n", DialogMsg); format(DialogMsg, sizeof(DialogMsg), "%s{FFFFFF}Введите сумму points,которую вы хотите обменять на рубли:", DialogMsg); ShowPlayerDialog(playerid, DialogMoneyPoints, DIALOG_STYLE_INPUT, "Обмен рублей за Points", DialogMsg, "Далее", "Отмена"); } case 3: { new helpdialog[2500]; format(helpdialog,sizeof(helpdialog), "%s\n%s",PointsHelp[0],PointsHelp[1]); ShowPlayerDialog(playerid,6500,DIALOG_STYLE_MSGBOX,"Помощь", helpdialog, "Прочитал", ""); } case 4: { new infodialog[2500]; format(infodialog,sizeof(infodialog), "%s\n%s",PointsInfo[0],PointsInfo[1]); ShowPlayerDialog(playerid,7500,DIALOG_STYLE_MSGBOX,"Информация", infodialog, "Прочитал", ""); } } return 1; }
Code
Dialog_VIP(playerid, response, listitem) { if(!response) return 1; switch (listitem) { case 0: { //SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}На данный момент Функция в Разработке! Приносим свои извенения"); #define VIPB 500 if ((APlayerData[playerid][Pointss] >= VIPB)) { APlayerData[playerid][VIP] = 1; APlayerData[playerid][Pointss] -= VIPB; SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Вы купили VIP Bronze за 500 Points"); PlayerFile_Save(playerid); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Вам нужно 500 Points чтоб купить VIP Bronze"); } case 1: { //SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}На данный момент Функция в Разработке! Приносим свои извенения"); #define VIPS 700 if ((APlayerData[playerid][Pointss] >= VIPS)) { APlayerData[playerid][VIP] = 2; APlayerData[playerid][Pointss] -= VIPS; SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Вы купили VIP Silver за 700 Points"); PlayerFile_Save(playerid); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Вам нужно 700 Points чтоб купить VIP Silver"); } case 2: { //SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}На данный момент Функция в Разработке! Приносим свои извенения,"); #define VIPG 1000 if ((APlayerData[playerid][Pointss] >= VIPG)) { APlayerData[playerid][VIP] = 3; APlayerData[playerid][Pointss] -= VIPG; SendClientMessage(playerid, 0xFFFFFFFF, "{00FF00}Вы купили VIP Gold за 1000 Points"); PlayerFile_Save(playerid); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Вам нужно 1000 Points чтоб купить VIP Gold"); } } return 1; }
Code
Dialog_ScorePoints(playerid, response, inputtext[]) { if(!response) return 1; new PointsScore, Msg[128]; PointsScore = strval(inputtext); if (PointsScore > 4) { if (PointsScore <= APlayerData[playerid][Pointss]) { #define Score2 5 RewardPlayer(playerid, 0, PointsScore / Score2); APlayerData[playerid][Pointss] -= PointsScore; format(Msg, 128, "{00FF00}Вы успешно обменяли {FFFF00}%i Points{00FF00} на {FFFF00}%i Очки{00FF00}", PointsScore,PointsScore / Score2); SendClientMessage(playerid, 0xFFFFFFFF, Msg); PlayerFile_Save(playerid); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Вы не распологаете такой суммой Points!"); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Вы должны ввести положительную сумму Points!");
return 1; }
Code
Dialog_MoneyPoints(playerid, response, inputtext[]) { if(!response) return 1; new PointsMoney, Msg[128]; PointsMoney = strval(inputtext); if (PointsMoney > 0) { if (PointsMoney <= APlayerData[playerid][Pointss]) { #define Money2 1000 RewardPlayer(playerid, PointsMoney * Money2, 0); APlayerData[playerid][Pointss] -= PointsMoney; format(Msg, 128, "{00FF00}Вы успешно обменяли {FFFF00}%i Points{00FF00} на {FFFF00}%i рублей{00FF00}", PointsMoney,PointsMoney * Money2); SendClientMessage(playerid, 0xFFFFFFFF, Msg); PlayerFile_Save(playerid); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Вы не распологаете такой суммой Points!"); } else SendClientMessage(playerid, 0xFFFFFFFF, "{FF0000}Вы должны ввести положительную сумму Points!");
return 1; }
// В мод вписываем в начале вот это
Code
new PointsHelp[2][] = { /*0*/ {"{00FF00}<< ПОМОЩЬ >>"}, /*1*/ {"{00FF00}<< БЛАБЛАБЛАБЛА >>"} };
Code
new PointsInfo[2][] = { /*0*/ {"{00FF00}<< ИНФОРМАЦИЯ >>"}, /*1*/ {"{00FF00}<< БЛАБЛАБЛАБЛА >>"} };
Ну впринципе всё,Если будут вопросы или нужна будет помощь перевести его в другой какой нить мод пишите помогу! Сильно не дерзайте это моя первая работа,да и первый раз выкладываю
С уважением Пользователь Fifa4ka
Сообщение отредактировал Fifa4ka - Среда, 15.02.2012, 21:15
ZeT73, таким способом маскируют донат, типо купи поинты и все, а там уже за поинты випки, машины, игровые деньги, ну типо чтобы не палиться типо "за реал машина" и так далее
Ибо таковые лжеапостолы, лукавые делатели, принимают вид Апостолов Христовых. И неудивительно: потому что сам сатана принимает вид Ангела света, а потому не великое дело, если и служители его принимают вид служителей правды; но конец их будет по делам их. (2Кор 11:13-15).
Тсссс, тссс, отключите снисходительный тон. Помните: вас уже лишали права слова на этом форуме. Прошу прощения у всех кого я заебал или оскорбил (Кроме икварпа и чеза - вы ибланы). Великс ты красава.
Ай на бум поставила,я же не знаю сколько вы там впишите когда я тогда делала там было 2500 я подщитывала
Quote (Jumpman23)
у меня одно сложилось мнение что это говно?
Ой извените ваш крохатный мозг не может нечего понять,Эта скрытная система доната,и очень удобная для админов и игроков, допустим он хочет заказать пойнты, я ему уже решать куда вкладывать, да и если кто-то хочет купить деньги или даже лвл,админу лишь 1 раз прописать команду и дать пойнты не то что расчитывать сколько ему давать денег и что! Туда можно добавить много чего,Ой извени я не знала что ты не знаешь что такое sscanf Вы пользуетесь нубо GF может переписать вам под GF?
Главное иметь фантазию,
А обойти эту систему не возможно
Вот так вот!
Quote (Августин)
Зачем эта система хз.Они умудряются и без системы обходится. Ну молодец хоть так
Знаешь есть такие люди как например,хочу быть крутым,хочу обогнать всех,ой впадлу качаться лучше вложу,типо задроты)
Quote (Dreven)
ZeT73, таким способом маскируют донат, типо купи поинты и все, а там уже за поинты випки, машины, игровые деньги, ну типо чтобы не палиться типо "за реал машина" и так далее
Берём ситуацию,у тебя играет 200-300 человек допустим,по мимо у тебя много работы, тебе пишут хочу купить лвл хочу или купить вип или деньги,тебе лучше зайти и дать пойнт чем подщитать сколько лвл давать или сколько денег или ещё что-то! Согласись?
А так же у человека есть свой выбор,хотел купить вип,а передумал куплю лучше лвл или деньги ну к примеру) Система лёгкая,а если ещё на Mysql мод,то вообще круто можно сделать автоматический заказ пойнтов там допустим через телефон или ещё) Так же они не пропадаются и копить можно,допустим не вип,он будет каждый месяц собирать чуть вкладывать,и в конце концов купить же вип)
Сообщение отредактировал Fifa4ka - Пятница, 17.02.2012, 01:17
Берём ситуацию,у тебя играет 200-300 человек допустим,по мимо у тебя много работы, тебе пишут хочу купить лвл хочу или купить вип или деньги,тебе лучше зайти и дать пойнт чем подщитать сколько лвл давать или сколько денег или ещё что-то! Согласись?
Если речь заходит о реальных деньгах, то мне без разницы, как давать, обычно или "поинтами"