Выполнение функции перед сменой карты

Тема в разделе "Программирование / Скриптинг", создана пользователем Primo, 27 фев 2014.

  1. Primo

    Primo Где мои манеры

    Сообщения:
    1.335
    Симпатии:
    408
    Добрый день.

    Потребовалось выполнение некоторых функций перед сменой карты.
    Т.е. нужно выполнить функцию перед тем, как сменится карта.
    Как отловить смену карты?
     
  2. KorDen

    KorDen Atra esterní ono thelduin!

    Сообщения:
    2.194
    Симпатии:
    1.413
    public OnMapEnd()
    {
    ...
    }
     
    Primo нравится это.
  3. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    666
    OnMapEnd
     
    Primo нравится это.
  4. Primo

    Primo Где мои манеры

    Сообщения:
    1.335
    Симпатии:
    408
    И тут я встал в ступор...
    Как мне сохранить в такой функции данные для каждого игрока? :D

    Будет ли такой вариант кода правильным?
    PHP:
    public OnMapEnd()
    {
        
    decl String:sAuth[32];
        for (new 
    client=1client<=GetMaxClients(); client++ && !IsFakeClient(client))
        {
            
    GetClientAuthString(clientsAuthsizeof(sAuth) - 1);
            new 
    String:pName[256];
            
    GetClientName(clientpName256);
            
    decl String:query[256];
            
    Format(querysizeof(query), "INSERT OR REPLACE INTO users('Steam', 'Nick', 'Level', 'XP', 'Kills', 'Deaths', 'Credits') VALUES ('%s', '%s', %d, %d, %d, %d, %d);"sAuthpNamePlayer[pLevel][client], Player[pXP][client], Player[pKills][client], Player[pDeaths][client], Player[pCredits][client]);
            
    SQL_TQuery(dbSQL_SelectPlayerCallbackquery0);
        }
    }
     
  5. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    666
    Primo
    Сохраняй при дисконнекте игрока
     
    Primo нравится это.
  6. Primo

    Primo Где мои манеры

    Сообщения:
    1.335
    Симпатии:
    408
    Попробовал, но не сохраняет при смене карты...

    PHP:
        HookEvent("player_disconnect"ClientDisconnect);
    PHP:
    public ClientDisconnect(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    decl String:sAuth[32];
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));
        
    GetClientAuthString(clientsAuthsizeof(sAuth) - 1);
        if(
    client <= MaxClients && !IsFakeClient(client))
        {

            new 
    String:pName[256];
            
    GetClientName(clientpName256);
            
    decl String:query[256];
            
    Format(querysizeof(query), "INSERT OR REPLACE INTO users('Steam', 'Nick', 'Level', 'XP', 'Kills', 'Deaths', 'Credits') VALUES ('%s', '%s', %d, %d, %d, %d, %d);"sAuthpNamePlayer[pLevel][client], Player[pXP][client], Player[pKills][client], Player[pDeaths][client], Player[pCredits][client]);
            
    SQL_TQuery(dbSQL_SelectPlayerCallbackquery0);
        }
    }
     
  7. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    666
    public OnClientDisconnect(client)
     
    Primo нравится это.