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

Реклама


**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 200руб/мес, Текстовая 100руб/мес.
Показано с 1 по 2 из 2
  1. #1
    Аватар для codeo
    Пользователь

    Статус
    Оффлайн
    Регистрация
    24.04.2014
    Сообщений
    108
    Репутация:
    9 ±

    Бонус каждый час

    Можно ли как нибудь через эту функцию(NetStats_GetConnectedTime) сделать выдачу бонуса каждый час?

    тестил с одной минутой, засунул в секундный таймер, но в течении всей минуты был флуд..

    PHP код:
            if(NetStats_GetConnectedTime(i) / 60000 == 1)
            {
                
    SendClientMessage(i, -1"{FFFF00}Ты в сети 1 минут");
            } 

  2. #2
    Аватар для ^_^
    Übermensch

    Статус
    Оффлайн
    Регистрация
    25.11.2013
    Сообщений
    161
    Репутация:
    243 ±
    Начнём с одной интересной особенности С подобных языках (вроде Pawn) а именно - конечный результат операции в Павн имеет тип максимального типа операндов (переменных). В данном случае у вас:

    Значит результат деления у вас будет неполным частным = 1. (Пример в Павн: 60000/60000 = 60001/60000 = 60002/60000 = ... = 11999/60000 = 1).
    Исправляется проблема очень легко, достаточно один операнд перевести в тип Float:, делается это двумя способами:
    1) NetStats_GetConnectedTime(i) / 60000.0 //Добавляем дробную часть .0
    2) float(NetStats_GetConnectedTime(i)) / 60000 //Переводим возвращаеммое значение функции NetStats_GetConnectedTime в тип Float:.
    Так мы получим результат 1 только когда функция будет точно равна 60000.
    (Пример в Павн: 60000/60000.0 = 1 = 60002/60000.0 = ... = 119999/60000.0).

    P.S: Насчёт вашей системы, вам не придётся использовать операцию деления, а операцию остатка от деления ( % ). Если остаток от деления к 3600000 миллисекунд равен нулю, значит игрок отыграл час.
    Тогда проверка будет:
     Попробуйте сами подумать прежде чем посмотреть готовый ответ ;)

    PHP код:
    if(NetStats_GetConnectedTime(i) % 3600000 == 0

    Желательно также добавить проверку на логин, и т.д... если вы часто используете данную проверку, есть шанс что проверка пройдёт когда игрок сразу подключится к игре, ибо 0 % 3600000 тоже равен нулю.
    UPD: Насчёт последней цитаты, функция NetStats_GetConnectedTime возвращает ноль только когда игрок не подключён. Собственно в проверки у вас должна быть и проверка на IsPlayerConnected(i), либо если у вас есть система регистрации - на переменную которая хранит статус логина, иначе бонус будет выдаваться неподключенным игрокам.
    Последний раз редактировалось ^_^; 24.06.2014 в 19:15.

  3. 3 пользователя(ей) сказали cпасибо:
    AndreyKa (25.06.2014)codeo (27.06.2014)Salvacore (24.06.2014)
 

 

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

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

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

Ваши права

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