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

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

  1. Primo

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

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

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

    KorDen Atra esterní ono thelduin!

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

    The End Is Near... Russian Roulette

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

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

    Сообщения:
    1.365
    Симпатии:
    439
    И тут я встал в ступор...
    Как мне сохранить в такой функции данные для каждого игрока? :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

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

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

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

    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

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