Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Простейшая сис-ма ачивок без сохранения.

  1. #1
    Активный пользователь Аватар для LMapper
    Регистрация
    01.04.2011
    Адрес
    != true
    Сообщений
    991
    Репутация: 91

    Звание: скоро придёт к известности

    Простейшая сис-ма ачивок без сохранения.

    отступ

    Achievements

    Начеркал на досуге. Глядишь - кому полезно будет.
    Система состоит из 2ух комплектов текстдравов (12 всего), и управляющей ими конструкции. "Дизайн" играет только роль демонстрации механики.
    Полный функционал (с сохранением, с корректировкой длины бокса в зависимости от длины описания, усовершенствованным "механизмом" показа, красивым оформлением) готов реализовать по заказу. (Есть много идей для красивой и практичной реализации, но самому это не нужно)
    Использование:
    PHP код:
    Achievement(playerid"Loser""Lose more than $ 10,000"8003); 

    Название ачивки - Loser
    Описание достижения - Lose more than $ 10,000
    Денежное вознаграждение - 800
    Опыт - 3
    Пример использования:
    PHP код:
    public OnPlayerDeath(playeridkilleridreason)
    {
        new 
    dengi GetPlayerMoney(playerid)/4;
        
    SetPlayerMoney(playerid,GetPlayerMoney(playerid)-dengi);
        
    SetPlayerMoney(killerid,GetPlayerMoney(killerid)+dengi);
        If (
    dengi 10000)
        {
            
    Achievement(playerid"Loser""Lose more than $ 10,000"8003);
        }



    Установка:

    Ко всем new[/o]
    PHP код:
    new Text:BoxUp;                         new Text:BoxDown;
    new 
    Text:AchievementUp;                 new Text:AchievementDown;
    new 
    Text:AchievementNameUp;           new Text:AchievementNameDown;
    new 
    Text:AchievementDescriptionUp;    new Text:AchievementDescriptionDown;
    new 
    Text:AchievementMoneyUp;          new Text:AchievementMoneyDown;
    new 
    Text:AchievementExpUp;            new Text:AchievementExpDown;
    new 
    bool:FASN// First Achievement Showing Now ?
    new bool:SASN// Second Achievement Showing Now ? 
    PHP код:
    forward Achievement(playerid,aname[],adescr[],amoney,aexp);
    forward killmepleaseup(playerid); forward killmepleasedown(playerid); 
    К пабликам:
    PHP код:
    public Achievement(playerid,aname[],adescr[],amoney,aexp)
    {
        if (
    FASN == true)
        {
            if (
    SASN == true)
            {
                
    TextDrawHideForAll(Text:BoxUp);
                
    TextDrawHideForAll(Text:AchievementUp);
                
    TextDrawHideForAll(Text:AchievementNameUp);
                
    TextDrawHideForAll(Text:AchievementDescriptionUp);
                
    TextDrawHideForAll(Text:AchievementMoneyUp);
                
    TextDrawHideForAll(Text:AchievementExpUp);
                goto 
    assist;
            }
            else
            {
                
    assist:
                
    SASN true;
                
    TextDrawSetString(AchievementNameDownaname);
                
    TextDrawSetString(AchievementDescriptionDownadescr);


                new 
    resultmoney[10];
                
    format(resultmoney,sizeof(resultmoney),"$%i",amoney);
                
    TextDrawSetString(AchievementMoneyDownresultmoney);
                            
    SetPlayerMoney(playerid,GetPlayerMoney(playerid)+amoney); // Если есть античит - надо изменить.

                    
    new resultexp [7];
                
    format(resultexp,sizeof(resultexp),"%iexp",aexp);
                    
    TextDrawSetString(AchievementExpDownresultexp);
                            
    GiveExp(playerid,aexp);// Необходимо подстроить под свой мод !
     
                
    TextDrawShowForPlayer(playerid,Text:BoxDown);
                
    TextDrawShowForPlayer(playerid,Text:AchievementDown);
                
    TextDrawShowForPlayer(playerid,Text:AchievementNameDown);
                
    TextDrawShowForPlayer(playerid,Text:Text:AchievementDescriptionDown);
                
    TextDrawShowForPlayer(playerid,Text:AchievementMoneyDown);
                
    TextDrawShowForPlayer(playerid,Text:AchievementExpDown);
                
                
    SetTimer("killmepleasedown",5000,false);
            }
        }
        else
        {
            
    FASN true;
            
    TextDrawSetString(AchievementNameUpaname);
            
    TextDrawSetString(AchievementDescriptionUpadescr);
            
            new 
    resultmoney[10];
            
    format(resultmoney,sizeof(resultmoney),"$%i",amoney);
            
    TextDrawSetString(AchievementMoneyUpresultmoney);
            
            new 
    resultexp [7];
            
    format(resultexp,sizeof(resultexp),"%iexp",aexp);
            
    TextDrawSetString(AchievementExpUpresultexp);
            
            
    TextDrawShowForPlayer(playerid,Text:BoxUp);
            
    TextDrawShowForPlayer(playerid,Text:AchievementUp);
            
    TextDrawShowForPlayer(playerid,Text:AchievementNameUp);
            
    TextDrawShowForPlayer(playerid,Text:Text:AchievementDescriptionUp);
            
    TextDrawShowForPlayer(playerid,Text:AchievementMoneyUp);
            
    TextDrawShowForPlayer(playerid,Text:AchievementExpUp);
            
            
    SetTimer("killmepleaseup",5000,false);
        }

    PHP код:
    public killmepleaseup(playerid)
    {
            
    TextDrawHideForPlayer(playerid,Text:BoxUp);
            
    TextDrawHideForPlayer(playerid,Text:AchievementUp);
            
    TextDrawHideForPlayer(playerid,Text:AchievementNameUp);
            
    TextDrawHideForPlayer(playerid,Text:Text:AchievementDescriptionUp);
            
    TextDrawHideForPlayer(playerid,Text:AchievementMoneyUp);
            
    TextDrawHideForPlayer(playerid,Text:AchievementExpUp);
            
    FASN false;

    PHP код:
    public killmepleasedown(playerid)
    {
            
    TextDrawHideForPlayer(playerid,Text:BoxDown);
            
    TextDrawHideForPlayer(playerid,Text:AchievementDown);
            
    TextDrawHideForPlayer(playerid,Text:AchievementNameDown);
            
    TextDrawHideForPlayer(playerid,Text:Text:AchievementDescriptionDown);
            
    TextDrawHideForPlayer(playerid,Text:AchievementMoneyDown);
            
    TextDrawHideForPlayer(playerid,Text:AchievementExpDown);
            
    SASN false;

    В OnGameModInit
    PHP код:
    // TextDraws Up
        
    BoxUp TextDrawCreate(276.000000107.000000"   ");
        
    TextDrawBackgroundColor(BoxUp255);
        
    TextDrawFont(BoxUp1);
        
    TextDrawLetterSize(BoxUp0.5000001.000000);
        
    TextDrawColor(BoxUp, -1);
        
    TextDrawSetOutline(BoxUp0);
        
    TextDrawSetProportional(BoxUp1);
        
    TextDrawSetShadow(BoxUp1);
        
    TextDrawUseBox(BoxUp1);
        
    TextDrawBoxColor(BoxUp255);
        
    TextDrawTextSize(BoxUp18.0000000.000000);
        
    TextDrawSetSelectable(BoxUp0);

        
    AchievementUp TextDrawCreate(22.00000099.000000"Achievement Unlocked:");
        
    TextDrawBackgroundColor(AchievementUp255);
        
    TextDrawFont(AchievementUp1);
        
    TextDrawLetterSize(AchievementUp0.3500001.300000);
        
    TextDrawColor(AchievementUp, -1);
        
    TextDrawSetOutline(AchievementUp1);
        
    TextDrawSetProportional(AchievementUp1);
        
    TextDrawSetSelectable(AchievementUp0);

        
    AchievementNameUp TextDrawCreate(162.00000098.000000"%aname");
        
    TextDrawBackgroundColor(AchievementNameUp255);
        
    TextDrawFont(AchievementNameUp1);
        
    TextDrawLetterSize(AchievementNameUp0.5000001.500000);
        
    TextDrawColor(AchievementNameUp, -1);
        
    TextDrawSetOutline(AchievementNameUp1);
        
    TextDrawSetProportional(AchievementNameUp1);
        
    TextDrawSetSelectable(AchievementNameUp0);

        
    AchievementDescriptionUp TextDrawCreate(28.000000112.000000"%adescr");
        
    TextDrawBackgroundColor(AchievementDescriptionUp255);
        
    TextDrawFont(AchievementDescriptionUp1);
        
    TextDrawLetterSize(AchievementDescriptionUp0.3200001.000000);
        
    TextDrawColor(AchievementDescriptionUp, -1);
        
    TextDrawSetOutline(AchievementDescriptionUp0);
        
    TextDrawSetProportional(AchievementDescriptionUp1);
        
    TextDrawSetShadow(AchievementDescriptionUp1);
        
    TextDrawSetSelectable(AchievementDescriptionUp0);

        
    AchievementMoneyUp TextDrawCreate(220.000000121.000000"$%amoney");
        
    TextDrawBackgroundColor(AchievementMoneyUp255);
        
    TextDrawFont(AchievementMoneyUp1);
        
    TextDrawLetterSize(AchievementMoneyUp0.5000001.000000);
        
    TextDrawColor(AchievementMoneyUp433854970);
        
    TextDrawSetOutline(AchievementMoneyUp1);
        
    TextDrawSetProportional(AchievementMoneyUp1);
        
    TextDrawSetSelectable(AchievementMoneyUp0);

        
    AchievementExpUp TextDrawCreate(170.000000121.000000"%aexp exp");
        
    TextDrawBackgroundColor(AchievementExpUp255);
        
    TextDrawFont(AchievementExpUp1);
        
    TextDrawLetterSize(AchievementExpUp0.5000001.100000);
        
    TextDrawColor(AchievementExpUp, -65281);
        
    TextDrawSetOutline(AchievementExpUp1);
        
    TextDrawSetProportional(AchievementExpUp1);
        
    TextDrawSetSelectable(AchievementExpUp0);
        
        
    // TextDraws Down
        
    BoxDown TextDrawCreate(276.000000139.000000"   ");
        
    TextDrawBackgroundColor(BoxDown255);
        
    TextDrawFont(BoxDown1);
        
    TextDrawLetterSize(BoxDown0.5000001.000000);
        
    TextDrawColor(BoxDown, -1);
        
    TextDrawSetOutline(BoxDown0);
        
    TextDrawSetProportional(BoxDown1);
        
    TextDrawSetShadow(BoxDown1);
        
    TextDrawUseBox(BoxDown1);
        
    TextDrawBoxColor(BoxDown255);
        
    TextDrawTextSize(BoxDown18.0000000.000000);
        
    TextDrawSetSelectable(BoxDown0);

        
    AchievementDown TextDrawCreate(22.000000131.000000"Achievement Unlocked:");
        
    TextDrawBackgroundColor(AchievementDown255);
        
    TextDrawFont(AchievementDown1);
        
    TextDrawLetterSize(AchievementDown0.3500001.300000);
        
    TextDrawColor(AchievementDown, -1);
        
    TextDrawSetOutline(AchievementDown1);
        
    TextDrawSetProportional(AchievementDown1);
        
    TextDrawSetSelectable(AchievementDown0);

        
    AchievementNameDown TextDrawCreate(162.000000130.000000"%aname");
        
    TextDrawBackgroundColor(AchievementNameDown255);
        
    TextDrawFont(AchievementNameDown1);
        
    TextDrawLetterSize(AchievementNameDown0.5000001.500000);
        
    TextDrawColor(AchievementNameDown, -1);
        
    TextDrawSetOutline(AchievementNameDown1);
        
    TextDrawSetProportional(AchievementNameDown1);
        
    TextDrawSetSelectable(AchievementNameDown0);

        
    AchievementDescriptionDown TextDrawCreate(28.000000144.000000"%adescr");
        
    TextDrawBackgroundColor(AchievementDescriptionDown255);
        
    TextDrawFont(AchievementDescriptionDown1);
        
    TextDrawLetterSize(AchievementDescriptionDown0.3200001.000000);
        
    TextDrawColor(AchievementDescriptionDown, -1);
        
    TextDrawSetOutline(AchievementDescriptionDown0);
        
    TextDrawSetProportional(AchievementDescriptionDown1);
        
    TextDrawSetShadow(AchievementDescriptionDown1);
        
    TextDrawSetSelectable(AchievementDescriptionDown0);

        
    AchievementMoneyDown TextDrawCreate(220.000000155.000000"$%amoney");
        
    TextDrawBackgroundColor(AchievementMoneyDown255);
        
    TextDrawFont(AchievementMoneyDown1);
        
    TextDrawLetterSize(AchievementMoneyDown0.5000001.000000);
        
    TextDrawColor(AchievementMoneyDown433854970);
        
    TextDrawSetOutline(AchievementMoneyDown1);
        
    TextDrawSetProportional(AchievementMoneyDown1);
        
    TextDrawSetSelectable(AchievementMoneyDown0);

        
    AchievementExpDown TextDrawCreate(170.000000155.000000"%aexp exp");
        
    TextDrawBackgroundColor(AchievementExpDown255);
        
    TextDrawFont(AchievementExpDown1);
        
    TextDrawLetterSize(AchievementExpDown0.5000001.100000);
        
    TextDrawColor(AchievementExpDown, -65281);
        
    TextDrawSetOutline(AchievementExpDown1);
        
    TextDrawSetProportional(AchievementExpDown1);
        
    TextDrawSetSelectable(AchievementExpDown0); 
    Автор: LMapper
    Pawn,Sourcepawn,ArmA.
    Delphi,Pascal,etc..
    Досье:
    ...У ДЦ были проблемы с электроснабжением, никак не связанные с тем, что я играю в лол....
    С уважением,
    Команда Ru-hoster
    Психически не устойчив, на таблетках.

  2. 2 пользователей сказали cпасибо LMapper за это полезное сообщение:

    Fallen A. (28.06.2015), Фора (28.06.2015)

  3. #2
    Potato Аватар для SDraw
    Регистрация
    10.04.2011
    Сообщений
    1,327
    Репутация: 390

    Звание: - очень-очень хороший человек

    Re: Простейшая сис-ма ачивок без сохранения.

    Еще один...
    Тема перемещена.

  4. #3
    Активный пользователь Аватар для LMapper
    Регистрация
    01.04.2011
    Адрес
    != true
    Сообщений
    991
    Репутация: 91

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    Цитата Сообщение от SDraw Посмотреть сообщение
    Еще один...
    Тема перемещена.
    Спасибо.
    Кстати, данный код не рассчитан на одновременное получение ачивки несколькими игроками (коллективное достижение).
    Pawn,Sourcepawn,ArmA.
    Delphi,Pascal,etc..
    Досье:
    ...У ДЦ были проблемы с электроснабжением, никак не связанные с тем, что я играю в лол....
    С уважением,
    Команда Ru-hoster
    Психически не устойчив, на таблетках.

  5. #4
    Активный пользователь Аватар для Argument
    Регистрация
    06.11.2012
    Адрес
    δδδδδδδδδδδδδδδδ
    Возраст
    54
    Сообщений
    780
    Репутация: 118

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    Для дм сервера очень вкусно будет)
    Мониторинг форумов (статистика за сегодня)
    Pawno.su:
    Lightcode.ru:
    Pro-pawn.ru:
    Pawno-info.ru:

  6. #5
    Активный пользователь Аватар для LMapper
    Регистрация
    01.04.2011
    Адрес
    != true
    Сообщений
    991
    Репутация: 91

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    Цитата Сообщение от Argument Посмотреть сообщение
    Для дм сервера очень вкусно будет)
    На РПГ думаю вообще только так будет.
    Pawn,Sourcepawn,ArmA.
    Delphi,Pascal,etc..
    Досье:
    ...У ДЦ были проблемы с электроснабжением, никак не связанные с тем, что я играю в лол....
    С уважением,
    Команда Ru-hoster
    Психически не устойчив, на таблетках.

  7. #6
    Активный пользователь
    Регистрация
    02.10.2011
    Адрес
    Калининград
    Возраст
    27
    Сообщений
    194
    Репутация: 51

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    При онлайне + 100, ачивки так и будут лезть , а тут у всех один и тот же TD ...
    Мб я туплю, но может стоило для каждого игрока своё?

    Ну, а так не плохо

  8. #7
    Активный пользователь Аватар для LMapper
    Регистрация
    01.04.2011
    Адрес
    != true
    Сообщений
    991
    Репутация: 91

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    Цитата Сообщение от Fun4ik Посмотреть сообщение
    При онлайне + 100, ачивки так и будут лезть , а тут у всех один и тот же TD ...
    Мб я туплю, но может стоило для каждого игрока своё?

    Ну, а так не плохо
    Как я указал в топике, это простейшая система, и она никак не пойдет на сервера с онлайном от ~30.
    Изначально была идея сделать как-раз систему, которая подстроится под всё сама, и всё будет учитывать, но это займет много времени,
    мне эта система не нужна, а в паблик её делать смысла не вижу, по этому:
    Полный функционал (с сохранением, с корректировкой длины бокса в зависимости от длины описания, усовершенствованным "механизмом" показа, красивым оформлением) готов реализовать по заказу. (Есть много идей для красивой и практичной реализации, но самому это не нужно)
    Вооот. А что на счет текстдрава для каждого игрока: одна из фишек это системы, это то, что при получении нескольких ачивок одновременно (как на скрине), они не будут конфликтовать, они не будут появляться друг в друге, а выведутся красивым списком. Одна ачивка = 6 ТД, список из хотя-бы 2 ачивок - это уже 12 ТД. Делать 12ТД для каждого игрока, тем-более если на сервере онлайном от 100 - ты сам понимаешь, не правильно. По этому остаётся искать другой вариант. Для "лайтовой" сис-мы я сделал так, если делать для крупного сервера - придётся переделывать данную схему.
    Pawn,Sourcepawn,ArmA.
    Delphi,Pascal,etc..
    Досье:
    ...У ДЦ были проблемы с электроснабжением, никак не связанные с тем, что я играю в лол....
    С уважением,
    Команда Ru-hoster
    Психически не устойчив, на таблетках.

  9. #8
    Активный пользователь Аватар для LMapper
    Регистрация
    01.04.2011
    Адрес
    != true
    Сообщений
    991
    Репутация: 91

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    Больше критики.
    Pawn,Sourcepawn,ArmA.
    Delphi,Pascal,etc..
    Досье:
    ...У ДЦ были проблемы с электроснабжением, никак не связанные с тем, что я играю в лол....
    С уважением,
    Команда Ru-hoster
    Психически не устойчив, на таблетках.

  10. #9
    Активный пользователь Аватар для LMapper
    Регистрация
    01.04.2011
    Адрес
    != true
    Сообщений
    991
    Репутация: 91

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    Апну
    Pawn,Sourcepawn,ArmA.
    Delphi,Pascal,etc..
    Досье:
    ...У ДЦ были проблемы с электроснабжением, никак не связанные с тем, что я играю в лол....
    С уважением,
    Команда Ru-hoster
    Психически не устойчив, на таблетках.

  11. #10
    Активный пользователь Аватар для LMapper
    Регистрация
    01.04.2011
    Адрес
    != true
    Сообщений
    991
    Репутация: 91

    Звание: скоро придёт к известности

    Re: Простейшая сис-ма ачивок без сохранения.

    ап
    Pawn,Sourcepawn,ArmA.
    Delphi,Pascal,etc..
    Досье:
    ...У ДЦ были проблемы с электроснабжением, никак не связанные с тем, что я играю в лол....
    С уважением,
    Команда Ru-hoster
    Психически не устойчив, на таблетках.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. Способ сохранения MysQL R34
    от Hostel в разделе Вопросы по скриптингу
    Ответов: 20
    Последнее сообщение: 07.03.2014, 03:24
  2. Нет Сохранения
    от Hostel в разделе Вопросы по скриптингу
    Ответов: 35
    Последнее сообщение: 16.02.2014, 16:07
  3. Нет сохранения в бд
    от red в разделе Вопросы по скриптингу
    Ответов: 0
    Последнее сообщение: 09.02.2014, 14:01
  4. По поводу сохранения денег.
    от Pinokiys_ в разделе Вопросы по скриптингу
    Ответов: 7
    Последнее сообщение: 04.08.2013, 13:12
  5. Помогите, со системой сохранения
    от BestJoker228 в разделе Вопросы по скриптингу
    Ответов: 1
    Последнее сообщение: 29.06.2013, 08:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •