Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

> Правила раздела

Перед созданием новой темы убедитесь, не искал ли кто-нибудь подобный плагин до вас, для этого следует воспользоваться поиском.

Все вновь созданные темы, с названием типа "Помогите найти", "А что это за плагин", "Ищу плагин", "Нужен плагин", "Подскажите пожалуйста название плагина" - будут удалены.
При создании темы постарайтесь максимально понятно сформулировать её заголовок так, чтобы он соответствовал функциям плагина который Вы ищите. В том случае, если Вам не удается сформулировать мысль и правильно расписать всё в теме, воспользуйтесь графическим редактором, к примеру Paint, что бы примерно изобразить функции нужного Вам плагина.

антиспавн

, повторный в одном раунде
Статус пользователя primm
сообщение 2.2.2014, 15:39
Сообщение #1


Стаж: 16 лет
Город: Москва

Сообщений: 517
Благодарностей: 140
Полезность: 520

Столкнулся тут с проблемой. Убил вчера вражину одну в начале раунда, он меня тоже хорошо покоцал зараза. Подбегаю к вражескому респу и тот же игрок меня с юспи добивает. Может плагин какой есть или каким то другим способом можно это поправить, без использования антиреконнекта? Если не трудно ткните как это поправить!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 2.2.2014, 15:54
Сообщение #2
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(primm @ 2.2.2014, 17:39) *
Столкнулся тут с проблемой. Убил вчера вражину одну в начале раунда, он меня тоже хорошо покоцал зараза. Подбегаю к вражескому респу и тот же игрок меня с юспи добивает. Может плагин какой есть или каким то другим способом можно это поправить, без использования антиреконнекта? Если не трудно ткните как это поправить!

Скрытый текст
Код
#include < amxmodx >
#include < fakemeta >

new const PLUGIN_NAME[ ]        =       "Block Spawn For Reconnect";
new const PLUGIN_VERSION[ ]     =       "0.1";
new const PLUGIN_AUTHOR[ ]      =       "Bos93";

const m_iSpawnCount = 365;

new Trie:g_pSteam;

public plugin_init( )
{
        register_plugin( PLUGIN_NAME,   PLUGIN_VERSION, PLUGIN_AUTHOR );
        register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");

        g_pSteam = TrieCreate( );

}

public client_disconnect( pPlayer )
{
        new szSteam[ 32 ];

        get_user_authid( pPlayer, szSteam, charsmax( szSteam ) );

        TrieSetCell( g_pSteam, szSteam, 1 );
}


public client_putinserver( pPlayer )
{
        new szSteam[ 32 ];
        get_user_authid( pPlayer, szSteam, charsmax( szSteam ) );

        if ( TrieKeyExists( g_pSteam, szSteam ) )
        {
                set_pdata_int( pPlayer, m_iSpawnCount, 1);
        }
}


public EventRoundStart( )
{
        TrieClear( g_pSteam );
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя C4acTbe
сообщение 2.2.2014, 15:59
Сообщение #3


Стаж: 13 лет

Сообщений: 880
Благодарностей: 408
Полезность: 706

Цитата(TarikYuzkiv @ 2.2.2014, 15:54) *
Скрытый текст
Код
#include < amxmodx >
#include < fakemeta >

new const PLUGIN_NAME[ ]        =       "Block Spawn For Reconnect";
new const PLUGIN_VERSION[ ]     =       "0.1";
new const PLUGIN_AUTHOR[ ]      =       "Bos93";

const m_iSpawnCount = 365;

new Trie:g_pSteam;

public plugin_init( )
{
        register_plugin( PLUGIN_NAME,   PLUGIN_VERSION, PLUGIN_AUTHOR );
        register_event("HLTV", "EventRoundStart", "a", "1=0", "2=0");

        g_pSteam = TrieCreate( );

}

public client_disconnect( pPlayer )
{
        new szSteam[ 32 ];

        get_user_authid( pPlayer, szSteam, charsmax( szSteam ) );

        TrieSetCell( g_pSteam, szSteam, 1 );
}


public client_putinserver( pPlayer )
{
        new szSteam[ 32 ];
        get_user_authid( pPlayer, szSteam, charsmax( szSteam ) );

        if ( TrieKeyExists( g_pSteam, szSteam ) )
        {
                set_pdata_int( pPlayer, m_iSpawnCount, 1);
        }
}


public EventRoundStart( )
{
        TrieClear( g_pSteam );
}


Как я понимаю не дает игроку заново возродиться, верно?
Давно пользуетесь этим плагином ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 2.2.2014, 16:02
Сообщение #4
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Цитата(primm @ 2.2.2014, 15:39) *
Столкнулся тут с проблемой. Убил вчера вражину одну в начале раунда, он меня тоже хорошо покоцал зараза. Подбегаю к вражескому респу и тот же игрок меня с юспи добивает. Может плагин какой есть или каким то другим способом можно это поправить, без использования антиреконнекта? Если не трудно ткните как это поправить!

Код:

/* Copyright © 2008, ConnorMcLeod

Reconnect Features is free software;
you can redistribute it and/or modify it under the terms of the
GNU General Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Reconnect Features; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.
*/

#include <amxmodx>
#include <fakemeta>

/****** Customization Area ******/
// Flag to allow admin to reconnect without hudmessage
// This is usefull when you reconnect with another nick to watch a suspected cheater
// This will still set back your score/money/...
#define ADMIN_SILENT ADMIN_KICK

// Color for hud message
#define RED 0
#define GREEN 100
#define BLUE 200
/********************************/

#define PLUGIN "Reconnect Features"
#define AUTHOR "ConnorMcLeod"
#define VERSION "0.2.4 BETA"

#define MAX_PLAYERS 32
#define MAX_STORED 64

#define OFFSET_CSMONEY 115
#define OFFSET_CSDEATHS 444

#define TASK_KILL 1946573517
#define TASK_CLEAR 2946573517
#define TASK_PLAYER 3946573517


enum Storage {
StoreSteamId[20],
StoreFrags,
StoreDeaths,
StoreMoney,
StoreRound
}

new g_CurInfos[MAX_PLAYERS+1][Storage]
new g_StoredInfos[MAX_STORED][Storage]

new bool:g_bPlayerNonSpawnEvent[MAX_PLAYERS + 1]
new g_iFwFmClientCommandPost

new g_iRoundNum

new g_pcvarTime, g_pcvarScore, g_pcvarMoney, g_pcvarSpawn, g_pcvarStartMoney, g_pcvarNotify
new mp_startmoney
new g_msgidDeathMsg
new g_iMaxPlayers

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_dictionary("reconnect.txt")

register_cvar("reconnect_features", VERSION, FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_SPONLY)
g_pcvarTime = register_cvar("amx_noreconnect_time", "45")
g_pcvarScore = register_cvar("amx_noreconnect_score", "0")
g_pcvarMoney = register_cvar("amx_noreconnect_money", "0")
g_pcvarSpawn = register_cvar("amx_noreconnect_spawn", "1")
g_pcvarStartMoney = register_cvar("amx_noreconnect_startmoney", "0")
g_pcvarNotify = register_cvar("amx_noreconnect_notify", "0")

register_event("HLTV", "eNewRound", "a", "1=0", "2=0")

register_event("TextMsg", "eRestart", "a", "2&#Game_C", "2&#Game_w")

register_event("ResetHUD", "Event_ResetHUD", "b")
register_event("TextMsg", "Event_TextMsg_GameWillRestartIn", "a", "2=#Game_will_restart_in")
register_clcmd("fullupdate", "ClientCommand_fullupdate")

register_event("Money", "eMoney", "be")
register_event("ScoreInfo", "eScoreInfo", "a")
}

public plugin_cfg()
{
mp_startmoney = get_cvar_pointer("mp_startmoney")
g_msgidDeathMsg = get_user_msgid("DeathMsg")
g_iMaxPlayers = global_get(glb_maxClients)
}

public Event_TextMsg_GameWillRestartIn()
{
static id
for(id = 1; id <= g_iMaxPlayers; ++id)
if( is_user_alive(id) )
g_bPlayerNonSpawnEvent[id] = true
}

public ClientCommand_fullupdate(id)
{
g_bPlayerNonSpawnEvent[id] = true
static const szClientCommandPost[] = "Forward_ClientCommand_Post"
g_iFwFmClientCommandPost = register_forward(FM_ClientCommand, szClientCommandPost, 1)
return PLUGIN_CONTINUE
}

public Forward_ClientCommand_Post(id)
{
unregister_forward(FM_ClientCommand, g_iFwFmClientCommandPost, 1)
g_bPlayerNonSpawnEvent[id] = false
return FMRES_HANDLED
}

public Event_ResetHUD(id)
{
if (!is_user_alive(id))
return

if (g_bPlayerNonSpawnEvent[id])
{
g_bPlayerNonSpawnEvent[id] = false
return
}

Forward_PlayerSpawn(id)
}

Forward_PlayerSpawn(id)
{
if(g_CurInfos[id][StoreRound] == g_iRoundNum)
{
g_CurInfos[id][StoreRound] = 0
set_task(0.1, "task_delay_kill", id+TASK_KILL)
}
}

public task_delay_kill(id)
{
id -= TASK_KILL

new Float:fFrags
pev(id, pev_frags, fFrags)
set_pev(id, pev_frags, ++fFrags)

set_pdata_int(id, OFFSET_CSDEATHS, get_pdata_int(id, OFFSET_CSDEATHS) - 1)

new msgblock = get_msg_block(g_msgidDeathMsg)
set_msg_block(g_msgidDeathMsg, BLOCK_ONCE)
dllfunc(DLLFunc_ClientKill, id)
set_msg_block(g_msgidDeathMsg, msgblock)

}

public eMoney(id)
{
g_CurInfos[id][StoreMoney] = read_data(1)
}

public eScoreInfo()
{
new id = read_data(1)
if(!(1<= id <= g_iMaxPlayers))
return

g_CurInfos[id][StoreFrags] = read_data(2)
g_CurInfos[id][StoreDeaths] = read_data(3)
}

public eRestart()
{
for(new i; i < MAX_STORED; i++)
{
remove_task(i+TASK_CLEAR)
remove_task(i+TASK_PLAYER)
g_StoredInfos[i][StoreSteamId][0] = 0
}
}

public eNewRound()
{
g_iRoundNum++
}

public client_disconnect(id)
{
if(is_user_bot(id) || is_user_hltv(id))
{
return
}

new Float:fTaskTime = get_pcvar_float(g_pcvarTime)
if(!fTaskTime)
return

static iFree
for(iFree = 0; iFree <= MAX_STORED; iFree++)
{
if(iFree == MAX_STORED)
{
return
}
if(!g_StoredInfos[iFree][StoreSteamId][0])
break
}

copy(g_StoredInfos[iFree][StoreSteamId], 19, g_CurInfos[id][StoreSteamId])
g_StoredInfos[iFree][StoreFrags] = g_CurInfos[id][StoreFrags]
g_StoredInfos[iFree][StoreDeaths] = g_CurInfos[id][StoreDeaths]
g_StoredInfos[iFree][StoreMoney] = g_CurInfos[id][StoreMoney]
g_StoredInfos[iFree][StoreRound] = g_iRoundNum

g_CurInfos[id][StoreSteamId][0] = 0
g_CurInfos[id][StoreFrags] = 0
g_CurInfos[id][StoreDeaths] = 0
g_CurInfos[id][StoreMoney] = 0
g_CurInfos[id][StoreRound] = 0

set_task(fTaskTime, "task_clear", iFree+TASK_CLEAR)
}

public task_clear(iTaskId)
{
iTaskId -= TASK_CLEAR
g_StoredInfos[iTaskId][StoreSteamId][0] = 0
}

public client_putinserver(id)
{
if(is_user_bot(id) || is_user_hltv(id))
return

g_bPlayerNonSpawnEvent[id] = false

static szSteamId[20]
get_user_authid(id, szSteamId, 19)
copy(g_CurInfos[id][StoreSteamId], 19, szSteamId)

for(new i; i < MAX_STORED; i++)
{
if(!g_StoredInfos[i][StoreSteamId][0])
continue

if( equal(g_StoredInfos[i][StoreSteamId], szSteamId, strlen(szSteamId)) )
{
if(get_pcvar_num(g_pcvarScore))
{
set_pev(id, pev_frags, float(g_StoredInfos[i][StoreFrags]))
set_pdata_int(id, OFFSET_CSDEATHS, g_StoredInfos[i][StoreDeaths])
g_CurInfos[id][StoreFrags] = g_StoredInfos[i][StoreFrags]
g_CurInfos[id][StoreDeaths] = g_StoredInfos[i][StoreDeaths]
}
if(get_pcvar_num(g_pcvarMoney))
{
new iMoney = g_StoredInfos[i][StoreMoney]
new iStartMoney = get_pcvar_num(mp_startmoney)
if(get_pcvar_num(g_pcvarStartMoney) && iMoney > iStartMoney)
{
set_pdata_int(id, OFFSET_CSMONEY, iStartMoney)
g_CurInfos[id][StoreMoney] = iStartMoney
}
else
{
set_pdata_int(id, OFFSET_CSMONEY, iMoney)
g_CurInfos[id][StoreMoney] = iMoney
}
}
if(get_pcvar_num(g_pcvarSpawn))
{
g_CurInfos[id][StoreRound] = g_StoredInfos[i][StoreRound]
}


g_StoredInfos[i][StoreSteamId][0] = 0

new iNotifyType = get_pcvar_num(g_pcvarNotify)
if(iNotifyType && !(get_user_flags(id)&ADMIN_SILENT) )
{
static szName[32]
get_user_name(id, szName, 31)
if( iNotifyType == 1 )
{
set_hudmessage(RED, GREEN, BLUE, -1.0, 0.35, 2, 3.0, 10.0, 0.1, 0.2, -1)
show_hudmessage(0, "%L", LANG_PLAYER, "RF_ALL", szName)
}
else
{
client_print(0, print_chat, "[GCN] %L", LANG_PLAYER, "RF_ALL", szName)
}
}
return
}
}
g_CurInfos[id][StoreRound] = -1
}
Прикрепленный файл  reconnect.txt ( 2,42 килобайт ) Кол-во скачиваний: 9


Отредактировал: user.gameover.user, - 2.2.2014, 16:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 2.2.2014, 16:08
Сообщение #5
Стаж: 13 лет

Сообщений: 509
Благодарностей: 196
Полезность: 635

Цитата(C4acTbe @ 2.2.2014, 17:59) *
Как я понимаю не дает игроку заново возродиться, верно?
Давно пользуетесь этим плагином ?

Правильно понимаете.

На моем сервере стоит три месяца, на серверах моих "клиентов" - порядка месяца.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Safety1st
сообщение 2.2.2014, 16:21
Сообщение #6
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Альтернатива плагину, выложенному TarikYuzkiv'ом - тут. Принцип запрета спавнов одинаковый. Но первый блочит спавн игрока только после реконнекта, запоминая его SteamID, второй - спавн всех по прошествии некоторого времени с начала раунда. Когда-то второе может быть предпочтительнее.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя primm
сообщение 2.2.2014, 17:01
Сообщение #7


Стаж: 16 лет
Город: Москва

Сообщений: 517
Благодарностей: 140
Полезность: 520

Всем спасибо! Приду с работы поставлю.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
CannibaL
сообщение 2.2.2014, 19:40
Сообщение #8
Стаж: 12 лет

Сообщений: 415
Благодарностей: 59
Полезность: 0

Поставил себе на сервер ! полет отличный
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: