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

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

  1. Primo

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

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

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

    KorDen Atra esterní ono thelduin! Ньюсмейкер

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

    The End Is Near... Russian Roulette

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

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

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

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

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

    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
    Симпатии:
    659
    public OnClientDisconnect(client)
     
    Primo нравится это.