Русское сообщество по скриптингу

Временное сохранение счёта (Temp score)

Утвержденные плагины для AMX Mod X администратором/модератором форума.

Модератор: Leonidddd

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только работоспособных плагинов для AMX Mod X. Новые плагины нужно выкладывать в разделе "Новые плагины".

Временное сохранение счёта (Temp score)

Сообщение Subb98 » 13 июл 2016, 14:01

Текущая версия: 0.2 от 10.07.2016

Описание:
Данный плагин позволяет временно сохранять счёт для отсоединившихся игроков, и, если игрок вновь подключится к серверу в течение заданного времени, то его прежний счёт в таблице игроков (ScoreBoard) будет восстановлен.

Требования:
  • AMX Mod X 1.8.2 и выше
Модули:
  • Counter-Strike (cstrike.inc)
  • Fun (fun.inc)
Настройки:

Код: Выделить всё
const OUT_TIME = 180; /* кол-во времени в секундах, по истечении которого
статистика будет удалена при следующем входе игрока на сервер */
const MIN_FRAGS = 3; // минимальное кол-во фрагов, необходимое для сохранения статистики 

Благодарности:
У вас нет необходимых прав для просмотра вложений в этом сообщении.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Временное сохранение счёта (Temp score)

Сообщение Капитан » 09 янв 2017, 20:46

Здравствуйте, с праздниками всех.
При компиляции на 1.8.3 - Re, есть ошибка:

Аватара пользователя
Капитан
 
Сообщения: 12
Зарегистрирован: 06 мар 2016, 21:05
Благодарил (а): 14 раз.
Поблагодарили: 0 раз.

Re: Временное сохранение счёта (Temp score)

Сообщение Subb98 » 09 янв 2017, 20:55

Капитан, добрый вечер, и вас с праздниками. :-)
Попробуйте:

Код: Выделить всё
/* Temp score 0.3 [09.01.2016]
 * Original idea: 93RUS
 * Thanks BloodMoon for some ideas
 * Thanks Lev for syntax error detection */

#include <amxmodx>
#include <cstrike>
#include <fun>

#pragma semicolon 1

#if AMXX_VERSION_NUM < 183
const MAX_PLAYERS 32;
#endif

const OUT_TIME 180// in seconds
const MIN_FRAGS 3// min frags for save

enum _:SCORE_DATA {
    
SD_FRAGS,
    
SD_DEATHS,
    
SD_OUT_TIME[24]
}

new 
Trie:g_tScoreg_szIp[MAX_PLAYERS 1][22];

public 
plugin_init() {
    
register_plugin("Temp score""0.3""Subb98");
    
g_tScore TrieCreate();
}

public 
client_putinserver(id) {
    
g_szIp[id][0] = '^0';
    if(!
is_user_bot(id) && !is_user_hltv(id)) {
        
get_user_ip(idg_szIp[id], charsmax(g_szIp[]));
        if(
TrieKeyExists(g_tScoreg_szIp[id])) {
            
CheckKey(idg_szIp[id]);
        }
    }
}

#if AMXX_VERSION_NUM < 183
public client_disconnect(id) {
#else
public client_disconnected(id) {
#endif
    
if(g_szIp[id][0]) {
        new 
aScore[SCORE_DATA];
        if((
aScore[SD_FRAGS] = get_user_frags(id)) >= MIN_FRAGS) {
            
aScore[SD_DEATHS] = cs_get_user_deaths(id);
            
float_to_str(get_gametime(), aScore[SD_OUT_TIME], charsmax(aScore[SD_OUT_TIME]));
            
TrieSetArray(g_tScoreg_szIp[id], aScoresizeof aScore);
        }
    }
}

public 
plugin_end() {
    
TrieDestroy(g_tScore);
}

CheckKey(const id, const szIp[]) {
    new 
aScore[SCORE_DATA], Float:fOutTime;
    
TrieGetArray(g_tScoreszIpaScoresizeof aScore);
    
fOutTime str_to_float(aScore[SD_OUT_TIME]);
    if(
get_gametime() - OUT_TIME fOutTime) { // this key valid
        
set_user_frags(idaScore[SD_FRAGS]), cs_set_user_deaths(idaScore[SD_DEATHS]);
    } else {
        
TrieDeleteKey(g_tScoreszIp);
    }
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Временное сохранение счёта (Temp score)

Сообщение Капитан » 09 янв 2017, 21:14

Спасибо за оперативность.
Все работает, ещё раз большое спасибо.
Аватара пользователя
Капитан
 
Сообщения: 12
Зарегистрирован: 06 мар 2016, 21:05
Благодарил (а): 14 раз.
Поблагодарили: 0 раз.


Вернуться в Утвержденные плагины

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6