18:39
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
        
Подвиcание SA-MP (2)
Max 20.02.2017 21:57
 





Рекомендуем:
Добавить IP: 95.172.59.51:7777





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
Скачать GTA SAMP 0.3.7 - Кл... 20.07.2015
Страница 1 из 212»
Модератор форума: Dima-kun 
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [Tutorial] Создание Системы Доната (Рассказ о написании системы доната (Дня новечков))
[Tutorial] Создание Системы Доната
Fifa4kaДата: Среда, 15.02.2012, 21:12 | Сообщение # 1
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Здраствуйте Уважаемые Пользователи SRC!

Это мой первый Урок,я вам расскажу как написать простенькую систему Доната!
Будьте Внимательны,эта система была написана для одного мода(Автор Я)
Так же система Доната написана на sscanf

Начнём:

// Вставляем Загрузку данных о персонаже

Code
if (strcmp(ParameterName, "Pointss", false) == 0)
APlayerData[playerid][Pointss] = strval(ParameterValue);
if (strcmp(ParameterName, "VIP", false) == 0)  
APlayerData[playerid][VIP] = strval(ParameterValue);


// Вставляем Сохранения данных о персонаже

Code
format(LineForFile, 100, "Pointss %i\r\n", APlayerData[playerid][Pointss]);
fwrite(PFile, LineForFile);  
format(LineForFile, 100, "VIP %i\r\n", APlayerData[playerid][VIP]);  
fwrite(PFile, LineForFile);


// Вставляем Ниже enum данных о персонаже

Code
Pointss,
VIP


// Команда Выдать Points игроку

Code
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);


// всталяем в Defines

Code
#define DialogPoints           900
#define DialogVIP           901
#define DialogScorePoints           1000
#define DialogMoneyPoints           1001


// Вставляем как простой паблик

Code
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
KievskiyДата: Среда, 15.02.2012, 21:15 | Сообщение # 2
Группа: Модераторы
Сообщений: 1394
Награды: 76
Город: Киев
Репутация: 3530
Замечания: 0%
Статус:
Молодец, за старания + ! ;)


Vladimir_Teleshun


http://gta-servers.ru/
DrevenДата: Среда, 15.02.2012, 21:38 | Сообщение # 3
Гуру
Группа: Продвинутые
Сообщений: 1094
Награды: 205
Город: od.ua
Репутация: 1099
Замечания: 0%
Статус:
Молодец))) но по идее можно было сделать в разы проще и более коротким кодом


www.samp-rpg.com

Сообщение отредактировал Dreven - Среда, 15.02.2012, 21:38
Fifa4kaДата: Среда, 15.02.2012, 21:39 | Сообщение # 4
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Quote (Dreven)
но по идее можно было сделать в разы проще и более коротким кодом


Пишу как умею) да и для новичков пойдёт и такое)



LatronДата: Среда, 15.02.2012, 22:12 | Сообщение # 5
Группа: I'm V.I.P.
Сообщений: 2115
Награды: 22
Город: Орел
Репутация: 1604
Замечания: 0%
Статус:
Quote (Fifa4ka)
Будьте Внимательны,эта система была написана для одного мода(Автор Я)

Для какого мода?Значит надо было создавать в разделе этого.Предполагаю это ГФ.



Моё портфолио

Мои работы:
[ Lesson ] Операторы в PAWN.
[ Lesson ] Переменная.
[ GM ] RegSys. ( Last update: 21.04.2012 )




Улыбайся всем как можно шире - =)) Они должны быть уверены,что ты холодная лицемерная сволочь. © Виктор Пелевин
Fifa4kaДата: Среда, 15.02.2012, 22:54 | Сообщение # 6
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Quote (Latron)

Для какого мода?Значит надо было создавать в разделе этого.Предполагаю это ГФ.


Ну как мне думать то это Не гф 100% :D

Там не используется sscanf да и сама система совсем другая)
Но и переписать этот Туториал легко и просто! Сделать можно за 5 минут! :)

За то облегчит работу Админу и игрокам легче станет)



MixДата: Четверг, 16.02.2012, 18:03 | Сообщение # 7
Постоялец
Группа: Продвинутые
Сообщений: 305
Награды: 1
Город: Ульяновск
Репутация: 52
Замечания: 20%
Статус:
Я всегда думал, что донат - обмен реальных денег на игровые деньги, или машины там, здания...
MarkeloFFДата: Четверг, 16.02.2012, 18:26 | Сообщение # 8
Советчик
Группа: I'm V.I.P.
Сообщений: 1032
Награды: 14
Город: Калининград
Репутация: 191
Замечания: 80%
Статус:
ZeT73, правильно думал, за донат это всё и покупают =)
DrevenДата: Четверг, 16.02.2012, 21:36 | Сообщение # 9
Гуру
Группа: Продвинутые
Сообщений: 1094
Награды: 205
Город: od.ua
Репутация: 1099
Замечания: 0%
Статус:
ZeT73, таким способом маскируют донат, типо купи поинты и все, а там уже за поинты випки, машины, игровые деньги, ну типо чтобы не палиться типо "за реал машина" и так далее


www.samp-rpg.com
ВеликсДата: Четверг, 16.02.2012, 22:18 | Сообщение # 10
Мастер джэдай
Группа: Модераторы
Сообщений: 3923
Награды: 287
Город: Мухосранск
Репутация: 8404
Замечания: 0%
Статус:
Quote (Fifa4ka)
[2500]

зачем столько ячеек? crazy



[cut=freestyle]
ПРИНЕСЛА СОРОКА В РОТЕ ПРИВОРОТ ,
СВЯЗАЛАСЬ НА ШЕЕ ЛОЗА И БЫЛ ПОЛНЫЙ ПИ**ЕЦ,
ОСЕНЬ С ЗИМОЙ, ЛЕТО С ВЕСНОЙ,
ГУСЬ С ЛИСОЙ, ЕБ**ИСЬ ВО ТЬМЕ НОЧНОЙ.
УЗЕЛ ЗАВЯЗАЛСЯ, ПЕПЕЛ РАЗМЕТАЛСЯ И ЛИСА ЗАБЕРЕМЕНЕЛА.
ВМЕСТЕ ВЕК ВЕКОВАТЬ, ПУТУ НЕ РАЗВЯЗАТЬ.
ТРАВА ПЕРЕПЛЕТИСЬ, УЗЕЛ ЗАВОРОЖИСЬ.
ЛЕНАРУ ДАЙ УМА И ЛЕНУ
НА ВЕЛЕ НЕ ОТРАЗИСЬ,ЕБ*СЬ ЕБ*СЬ ЕБ*СЬ
© Хасан
[/cut]
ХасанДата: Четверг, 16.02.2012, 23:04 | Сообщение # 11
Группа: Модераторы
Сообщений: 2810
Награды: 388
Город: X-Files
Репутация: 2897
Замечания: 0%
Статус:
Зачем эта система хз.Они умудряются и без системы обходится.
Ну молодец хоть так



малі діти недають нам спати - великі діти недають нам жити © Iван Миколайчук

— Вот ты говорил, город — сила, а здесь слабые все.
— Город — это злая сила. Сильный приезжает — становится слабым. Город забирает силу. Вот и ты пропал…© Брат

— ...лягушки падают с неба
— Видимо у них не раскрылись парашюты. © X-Files

— Разве вы не хотели бы жить вечно?
— Если в моде останутся штаны со стрелками то нет.© X-Files

Ибо таковые лжеапостолы, лукавые делатели, принимают вид Апостолов Христовых. И неудивительно: потому что сам сатана принимает вид Ангела света, а потому не великое дело, если и служители его принимают вид служителей правды; но конец их будет по делам их.
(2Кор 11:13-15).
Aleksey_SmokeДата: Четверг, 16.02.2012, 23:17 | Сообщение # 12
Новенький
Группа: Пользователи
Сообщений: 42
Награды: 0
Город: Рига
Репутация: 5
Замечания: 0%
Статус:
Молодец Fifa4ka, отличная работа.
Jumpman23Дата: Четверг, 16.02.2012, 23:32 | Сообщение # 13
Группа: I'm V.I.P.
Сообщений: 1359
Награды: 23
Город: Kingston, Rastapolis
Репутация: 504
Замечания: 100%
Статус:
у меня одно сложилось мнение что это говно?


Тсссс, тссс, отключите снисходительный тон. Помните: вас уже лишали права слова на этом форуме.
Прошу прощения у всех кого я заебал или оскорбил (Кроме икварпа и чеза - вы ибланы).
Великс ты красава.
Fifa4kaДата: Пятница, 17.02.2012, 01:06 | Сообщение # 14
Местный
Группа: I'm V.I.P.
Сообщений: 748
Награды: 38
Город: Рига
Замечания: 0%
Статус:
Quote (velix)
зачем столько ячеек?


Ай на бум поставила,я же не знаю сколько вы там впишите :D когда я тогда делала там было 2500 я подщитывала crazy

Quote (Jumpman23)
у меня одно сложилось мнение что это говно?


Ой извените ваш крохатный мозг не может нечего понять,Эта скрытная система доната,и очень удобная для админов и игроков, допустим он хочет заказать пойнты, я ему уже решать куда вкладывать, да и если кто-то хочет купить деньги или даже лвл,админу лишь 1 раз прописать команду и дать пойнты не то что расчитывать сколько ему давать денег и что! Туда можно добавить много чего,Ой извени я не знала что ты не знаешь что такое sscanf fun Вы пользуетесь нубо GF может переписать вам под GF?

Главное иметь фантазию,

А обойти эту систему не возможно :)

Вот так вот! crazy

Quote (Августин)
Зачем эта система хз.Они умудряются и без системы обходится.
Ну молодец хоть так


Знаешь есть такие люди как например,хочу быть крутым,хочу обогнать всех,ой впадлу качаться лучше вложу,типо задроты) :D

Quote (Dreven)
ZeT73, таким способом маскируют донат, типо купи поинты и все, а там уже за поинты випки, машины, игровые деньги, ну типо чтобы не палиться типо "за реал машина" и так далее


Берём ситуацию,у тебя играет 200-300 человек допустим,по мимо у тебя много работы, тебе пишут хочу купить лвл хочу или купить вип или деньги,тебе лучше зайти и дать пойнт чем подщитать сколько лвл давать или сколько денег или ещё что-то! Согласись?

А так же у человека есть свой выбор,хотел купить вип,а передумал куплю лучше лвл или деньги ну к примеру) Система лёгкая,а если ещё на Mysql мод,то вообще круто можно сделать автоматический заказ пойнтов там допустим через телефон или ещё) Так же они не пропадаются и копить можно,допустим не вип,он будет каждый месяц собирать чуть вкладывать,и в конце концов купить же вип) :)





Сообщение отредактировал Fifa4ka - Пятница, 17.02.2012, 01:17
EmiGrantДата: Пятница, 17.02.2012, 01:32 | Сообщение # 15
Долгожитель
Группа: Продвинутые
Сообщений: 1362
Награды: 34
Город: Пятигорск
Репутация: 1653
Замечания: 40%
Статус:
Quote (Fifa4ka)
Берём ситуацию,у тебя играет 200-300 человек допустим,по мимо у тебя много работы, тебе пишут хочу купить лвл хочу или купить вип или деньги,тебе лучше зайти и дать пойнт чем подщитать сколько лвл давать или сколько денег или ещё что-то! Согласись?

Если речь заходит о реальных деньгах, то мне без разницы, как давать, обычно или "поинтами" :)





Если человек несет бред, то здесь 2 варианта: либо он очень умный либо очень тупой © EmiGrant
Форум SAMP о мультиплеерах для GTA. »   » Wiki-Samp-Rus » [Tutorial] Создание Системы Доната (Рассказ о написании системы доната (Дня новечков))
Страница 1 из 212»
Поиск:





 


 


 
Хостинг от uCoz SAMP-RUS.COM