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

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

  1. Primo

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

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

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

    KorDen Atra esterní ono thelduin!

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

    The End Is Near... Russian Roulette

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

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

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

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

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

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