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

Реклама


   
IP:176.32.36.96:7777 Ha6op adm,liderov + bonuse.

**Как получить V.I.P** (Перейти)
Чтобы заказать рекламу на Pro-Pawn.Ru, обращайтесь в Skype.
Баннерная реклама 100руб/мес, Текстовая 50руб/мес.
Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя
Показано с 11 по 20 из 37
  1. #11
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    318
    Репутация:
    124 ±
    Цитата Сообщение от Valera_Trefilov Посмотреть сообщение
    Я бы сделал так:

    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid,"Loginned",1);
        
    SetTimerEx("LoginnedTimer"600000"i"playerid);
        return 
    true;


    PHP код:
    forward LoginnedTimer(i);
    public 
    LoginnedTimer(i)
    {
        if(
    GetPVarInt(i,"Loginned")==1)
            
    Kick(i);
        return 
    true;

    это туда где вы авторизуетесь:
    PHP код:
    if(GetPVarInt(playerid,"Loginned")==1DeletePVar(playerid,"Loginned"); 
    А если я зайду, увижу окно авторизации, продержусь 50 секунд, выйду и следом зайдет игрок под моим ID

  2. #12
    Аватар для Valera_Trefilov
    Пользователь

    Статус
    Оффлайн
    Регистрация
    10.12.2013
    Сообщений
    35
    Репутация:
    7 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    А если я зайду, увижу окно авторизации, продержусь 50 секунд, выйду и следом зайдет игрок под моим ID
    Не будет такого. Запуск таймера в коннекте.

    Разве что можно делать так:

    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid,"Loginned",SetTimerEx("LoginnedTimer"600000"i"playerid));
        return 
    true;

    PHP код:
    public OnPlayerDisconnect(playerid,reason)
    {
        if(
    GetPVarInt(playerid,"Loginned")!=0)
            
    KillTimer(GetPVarInt(playerid,"Loginned"));
        return 
    true;

    PHP код:
    forward LoginnedTimer(i);
    public 
    LoginnedTimer(i)
    {
        if(
    GetPVarInt(i,"Loginned")!=0)
            
    Kick(i);
        return 
    true;

    это туда где вы авторизуетесь:

    PHP код:
    if(GetPVarInt(playerid,"Loginned")!=0DeletePVar(playerid,"Loginned"); 
    исправил в общем
    Последний раз редактировалось Valera_Trefilov; 09.04.2015 в 21:52.

  3. #13
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    318
    Репутация:
    124 ±
    Не будет такого. Запуск таймера в коннекте.
    Это и являлось причиной ошибки.

  4. #14
    Аватар для Londlem
    Модератор

    Статус
    Оффлайн
    Регистрация
    19.10.2013
    Адрес
    Ярославль
    Сообщений
    1,361
    Репутация:
    766 ±
    Много кто предлагал делать, но: Зачем создавать для каждого игрока таймер? Если можно проверять каждого игрока в цикле, что более надёжнее, нежели проверять определённого.

  5. #15
    Аватар для Maranzalla
    Заблокирован

    Статус
    Оффлайн
    Регистрация
    25.04.2014
    Адрес
    Moscow
    Сообщений
    108
    Репутация:
    -1 ±
    Цитата Сообщение от Valera_Trefilov Посмотреть сообщение
    Я бы сделал так:

    PHP код:
    public OnPlayerConnect(playerid)
    {
        
    SetPVarInt(playerid,"Loginned",1);
        
    SetTimerEx("LoginnedTimer"600000"i"playerid);
        return 
    true;


    PHP код:
    forward LoginnedTimer(i);
    public 
    LoginnedTimer(i)
    {
        if(
    GetPVarInt(i,"Loginned")==1)
            
    Kick(i);
        return 
    true;

    это туда где вы авторизуетесь:
    PHP код:
    if(GetPVarInt(playerid,"Loginned")==1DeletePVar(playerid,"Loginned"); 
    да этот вариант лучше

  6. #16
    Аватар для Coopr
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.04.2016
    Сообщений
    13
    Репутация:
    0 ±
    Извини никто не скажет как добавить чтобы в чат писалось время это. К примеру:
    Оставшее время на авторизацию : 30(--30-29-28-27-26-25-24-23-22-21-20.....)
    С убыванием на -1 и как ноль то Кик
    Последний раз редактировалось Coopr; 24.04.2016 в 22:53.

  7. #17
    Аватар для wAx
    ¯\_(ツ)_/¯

    Статус
    Оффлайн
    Регистрация
    13.12.2013
    Сообщений
    318
    Репутация:
    124 ±
    Цитата Сообщение от Coopr Посмотреть сообщение
    Извини никто не скажет как добавить чтобы в чат писалось время это. К примеру:
    Оставшее время на авторизацию : 30(--30-29-28-27-26-25-24-23-22-21-20.....)
    С убыванием на -1 и как ноль то Кик
    выводить в чат каждую секунду время оставшееся на авторизацию - бредовая затея, не думаю что игрокам понравится. Но если все таки хочешь, то создаешь переменную, равную общему времени на авторизацию и в секундном таймере вычитаешь по 1 секунде, обновляешь данные и выводишь игроку в чат.

  8. Пользователь сказал cпасибо:
    Coopr (25.04.2016)
  9. #18
    Аватар для DeimoS
    Модератор?

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,014
    Репутация:
    1206 ±
    Цитата Сообщение от wAx Посмотреть сообщение
    выводить в чат каждую секунду время оставшееся на авторизацию - бредовая затея, не думаю что игрокам понравится. Но если все таки хочешь, то создаешь переменную, равную общему времени на авторизацию и в секундном таймере вычитаешь по 1 секунде, обновляешь данные и выводишь игроку в чат.
    Ну или без переменной:
    PHP код:
    SetTimerEx("@____TimeForAuthorization"10000"ii"playerid30); 
    PHP код:
    @____TimeForAuthorization(playeridtime);
    @
    ____TimeForAuthorization(playeridtime)
    {
        new 
    string[...];
        
    format(...);
        
    SendClientMessage(playerid, -1string);
        if(
    time 0SetTimerEx("@____TimeForAuthorization"10000"ii"playeridtime-1);
        else
        {
            
    SendCLientMessage(playerid. -1. "Время вышло");
        }
        return 
    1;

    Я не говорю, что этот вариант лучше или оптимизированнее - я не тестировал. Просто ещё один вариант реализации, который мне пришёл на ум
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

  10. Пользователь сказал cпасибо:
    Coopr (25.04.2016)
  11. #19
    Аватар для Coopr
    Пользователь

    Статус
    Оффлайн
    Регистрация
    15.04.2016
    Сообщений
    13
    Репутация:
    0 ±
    PHP код:
    new string[30];
    format(stringsizeof(string), "%d", --string); 
    Так??


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

    Цитата Сообщение от DeimoS Посмотреть сообщение
    Ну или без переменной:
    PHP код:
    SetTimerEx("@____TimeForAuthorization"10000"ii"playerid30); 
    PHP код:
    @____TimeForAuthorization(playeridtime);
    @
    ____TimeForAuthorization(playeridtime)
    {
        new 
    string[...];
        
    format(...);
        
    SendClientMessage(playerid, -1string);
        if(
    time 0SetTimerEx("@____TimeForAuthorization"10000"ii"playeridtime-1);
        else
        {
            
    SendCLientMessage(playerid. -1. "Время вышло");
        }
        return 
    1;

    Я не говорю, что этот вариант лучше или оптимизированнее - я не тестировал. Просто ещё один вариант реализации, который мне пришёл на ум
    Получается к все этому мне надо сделать еще так???

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

    Статус
    Оффлайн
    Регистрация
    27.01.2014
    Адрес
    Восточный Мордор
    Сообщений
    3,014
    Репутация:
    1206 ±
    Цитата Сообщение от Coopr Посмотреть сообщение
    PHP код:
    new string[30];
    format(stringsizeof(string), "%d", --string); 
    Так??
    Нет :D Если брать мою реализацию, то так:
    PHP код:
    @____TimeForAuthorization(playeridtime);
    @
    ____TimeForAuthorization(playeridtime)
    {
        new 
    string[3];
        
    format(stringsizeof(string), "%d"time);
        
    SendClientMessage(playerid, -1string);
        if(
    time 0SetTimerEx("@____TimeForAuthorization"10000"ii"playeridtime-1);
        else
        {
            
    SendCLientMessage(playerid. -1. "Время вышло");
        }
        return 
    1;

    Если брать реализацию wAx, то можно при начале авторизации присвоить к pVar значение, например:
    PHP код:
    SetPVarInt(playerid"TimeForAuthorization"31); 
    И потом в секундный таймер вставить код, типа:
    PHP код:
    if(GetPVarInt(playerid"TimeForAuthorization"))
    {
        new 
    authorization_time GetPVarInt(playerid"TimeForAuthorization")-1;

        
    SetPVarInt(playerid"TimeForAuthorization"authorization_time);
        if(
    authorization_time == 1)
        {
            
    SendClientMessage(playerid, -1"Время вышло");
            
    DeletePVar(playerid"TimeForAuthorization");
        }
        else
        {
            new 
    string[3];
            
    format(stringsizeof(string), "%d"authorization_time-1);
            
    SendClientMessage(playerid, -1string);
        }

    Только playerid на переменную цикла заменить нужно
    Связаться со мной можно в личных сообщениях этой группы

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

    Steve Pavlina

  13. Пользователь сказал cпасибо:
    Coopr (25.04.2016)
 

 
Страница 2 из 4 ПерваяПервая 1234 ПоследняяПоследняя

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

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

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

Ваши права

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