Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 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,282
    Репутация:
    417 ±
    PHP код:
    if(PlayerInfo[playerid][pPoluchil]==0
    PHP код:
    PlayerInfo[playerid][pPoluchil]=1// это значит что игрок получил бонус 

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

    Статус
    Оффлайн
    Регистрация
    01.06.2014
    Адрес
    Москва
    Сообщений
    92
    Репутация:
    15 ±
    Опишите систему. Сам принцип не ясен.
    Как вы собираетесь отслеживать что-то, если у вас игроки меняются, а 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
    Адрес
    Восточный Мордор
    Сообщений
    3,931
    Репутация:
    1502 ±
    Вы в файл записывайте дату получения из getdate, а не получил/не получил. И уже когда игрок хочет получить бонус - проверяйте
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

 

 

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

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

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

Ваши права

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