Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 5 из 5
  1. #1
    Аватар для Unknown
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.07.2014
    Сообщений
    106
    Репутация:
    0 ±

    Бонусы для игроков

    Проблема системы в том что если 1 день получил бонус на 2 не получаю..

    PHP код:
    stock Bonus(playerid)
    {
        if(
    PlayerInfo[playerid][pProigral]==0)
        {
            if(
    PlayerInfo[playerid][pPoluchil]==0)
            {
                if(
    PlayerInfo[playerid][pBonusDay]==0)
                {
                    
    PlayerInfo[playerid][pExp] += 1;
                    
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Вы получили бонус ");
                    
    PlayerInfo[playerid][pBonusDay]=1;
                    
    PlayerInfo[playerid][pPoluchil]=1// это значит что игрок получил бонус
                    
    new hour,minut,sec;
                    
    gettime(hour,minut,sec);//узнаём время
                    
    new wremya 23 hour;//отнимаем 23 от часа который у игрока сейчас
                    
    SetTimer("Obnul",wremya*60*60*1000,false);//запускаем таймер который обнулит переменную получения бонуса
                    
    new mtr[144];
                    
    format(mtr,144,"Вы сможете получить следующий бонус через {FFFFFF}%d часов",wremya);
                    
    SendClientMessage(playerid,COLOR_LIGHTGREEN,mtr);
                    return 
    true;
                }
                            if(
    PlayerInfo[playerid][pBonusDay]==1)
                {
                    
    PlayerInfo[playerid][pExp] += 2;
                    
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Вы получили бонус ");
                    
    PlayerInfo[playerid][pBonusDay]=2;
                    
    PlayerInfo[playerid][pPoluchil]=1;
                    new 
    hour,minut,sec;
                    
    gettime(hour,minut,sec);
                    new 
    wremya 23 hour;
                    
    SetTimer("Obnul",wremya*60*60*1000,false);
                    new 
    mtr[144];
                    
    format(mtr,144,"Вы сможете получить следующий бонус через {FFFFFF}%d часов",wremya);
                    
    SendClientMessage(playerid,COLOR_LIGHTGREEN,mtr);
                    return 
    true;
                }
            }
        }
            else
        {
            if(
    PlayerInfo[playerid][pBonusDay]!=0)
            {
                
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Чтобы получать бонусы Вы должны играть каждый день. Начинайте с начала.");
                
    PlayerInfo[playerid][pBonusDay]=0;
                
    PlayerInfo[playerid][pPoluchil]=0;
                if(
    PlayerInfo[playerid][pBonusDay]==0)
                {
                    
    PlayerInfo[playerid][pExp] += 1;
                    
    SendClientMessage(playerid,COLOR_LIGHTGREEN,"Вы получили бонус ");
                    
    PlayerInfo[playerid][pBonusDay]=1;
                    
    PlayerInfo[playerid][pPoluchil]=1;
                    new 
    hour,minut,sec;
                    
    gettime(hour,minut,sec);
                    new 
    wremya 23 hour;
                    
    SetTimer("Obnul",wremya*60*60*1000,false);
                    new 
    mtr[144];
                    
    format(mtr,144,"Вы сможете получить следующий бонус через {FFFFFF}%d часов",wremya);
                    
    SendClientMessage(playerid,COLOR_LIGHTGREEN,mtr);
                    return 
    true;
                }
            }
        }
        return 
    true;

    PHP код:
    forward Obnul(i);
    public 
    Obnul(i)
    {
        
    PlayerInfo[i][pPoluchil]=0;//обнулили теперь игрок сможет получить бонус!!
        
    SetTimer("Zawel",1000,true);
        return 
    true;
    }

    forward Zawel(i);
    public 
    Zawel(i)
    {
        
    prower[i]++;//переменная которая будет считать кол-во раз загружения паблика
        
    if(prower[i]==86400)//если игрок не зашел на сервер за это время (это колво секунд = 24 часам)
        
    {
            
    PlayerInfo[i][pProigral]=1// устанавливаем игроку что он проиграл и ему прийдёться начать все с начала )
        
    }
        if(
    IsPlayerConnected(i))// а если подключился
        
    {
            
    prower[i]=0// обнуляем и продолжаем давать бонусы игроку
        
    }
        return 
    true;

    - - - Добавлено - - -

    сохронение и т.д все сделал все сохроняет

  2. #2
    Аватар для Salvacore
    Инжунер-погромист

    Статус
    Оффлайн
    Регистрация
    10.05.2013
    Адрес
    Аҧсуа бызшәа
    Сообщений
    2,271
    Репутация:
    418 ±
    PHP код:
    if(PlayerInfo[playerid][pPoluchil]==0
    PHP код:
    PlayerInfo[playerid][pPoluchil]=1// это значит что игрок получил бонус 

  3. #3
    Аватар для Flime
    Пользователь

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Адрес
    Москва
    Сообщений
    92
    Репутация:
    16 ±
    Опишите систему. Сам принцип не ясен.
    Как вы собираетесь отслеживать что-то, если у вас игроки меняются, а id остаются. Без записи в таблицу или в фаил ничего не выйдет.
    Или задача игрока оставаться на сервере до 24 часов?

  4. #4
    Аватар для Unknown
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.07.2014
    Сообщений
    106
    Репутация:
    0 ±
    смысла не понял -_- т.е если я так сделаю то перезайду и получу за 2й день

    - - - Добавлено - - -

    сейчас опишу

    - - - Добавлено - - -

    бонус на система по дням если допустим игрок не зашел один день на сервер то ему прийдеться начинать все с начала.

    OnPlayerLogin
    PHP код:
    iniGetInt(File,"BonusDay",PlayerInfo[playerid][pBonusDay]);
            
    iniGetInt(File,"Poluchil",PlayerInfo[playerid][pPoluchil]);
            
    iniGetInt(File,"Proigral",PlayerInfo[playerid][pProigral]); 
    и т.д где это сохроняем в файл с аккаунтом игрока если игрок получил бонус за 1 день то
    pBonusDay=1;
    pPoluchil =1;
    затем наступил следующий день то игрок должен получить бонус за 2й день
    pBonusDay=2;
    pPoluchil =1;
    но проблема в том что он его не получает хоть и есть этот паблик обнуления "pPoluchil"

    PHP код:
    forward Obnul(i);
    public 
    Obnul(i)
    {
        
    PlayerInfo[i][pPoluchil]=0;
        
    SetTimer("Zawel",1000,true);
        return 
    true;

    надеюсь понятно...

  5. #5
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    5,588
    Репутация:
    1984 ±
    Вы в файл записывайте дату получения из getdate, а не получил/не получил. И уже когда игрок хочет получить бонус - проверяйте
    Связаться со мной в VK можно через личные сообщения этой группы
    Заказы не принимаю

    Широко известно, что идеи стоят 0.8333 цента каждая (исходя из рыночной цены 10 центов за дюжину).
    Великих идей полно, на них нет спроса.
    Воплощение идеи в законченную игру требует долгой работы,
    таланта, терпения и креативности, не говоря уж о затратах денег, времени и ресурсов.
    Предложить идею просто, воплотить – вот в чём проблема

    Steve Pavlina

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

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