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

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

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

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

SameID

, Не учитывать обрабатываемого игрока...
Статус пользователя KPOCT
сообщение 21.8.2015, 14:06
Сообщение #1
Стаж: 11 лет

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

Здравствуйте.
Нужна помощь.

Код:
public client_putinserver(id)
{
new steamid[32], userid; userid = get_user_userid(id)
get_user_authid(id, steamid, 31)

if(is_playing_already(steamid))
{
server_cmd("kick #%i ^"На сервере уже есть игрок с этим SteamID^"", userid)
}
}

bool:is_playing_already(steamid[]){ return find_player("c", steamid) ? true : false}


В этом случае плагин будет искать игрока с таким же стим ид, как и у обрабатываемого. Но найдёт его же (обрабатываемого игрока) и кикнет.
Нужно, чтобы обрабатываемый игрок не учитывался.
Буду благодарен за помощь.

Отредактировал: Bloo, - 21.8.2015, 15:55
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Fintok
сообщение 22.8.2015, 12:09
Сообщение #2


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

KPOCT, увы, не получится это сделать, функцией это не предусмотрено.
Как вариант можно запивать authid игрока в общий массив игроков и сравнивать данные при входе.

Код:
#include <amxmodx>

#define PLUGIN "Anti Double AuthID"
#define VERSION "0.1 Fix"
#define AUTHOR "Fintok!"

#define MAX_PLAYERS 32

new bool:g_bIsPlayer[MAX_PLAYERS + 1]
new g_szAuthIDs[MAX_PLAYERS + 1][35]
new Trie:g_tAuthIDs

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

g_tAuthIDs = TrieCreate()
}

public client_authorized(id)
{
if(!(g_bIsPlayer[id] = bool:(!is_user_bot(id) && !is_user_hltv(id))))
return

get_user_authid(id, g_szAuthIDs[id], charsmax(g_szAuthIDs[]))

if(TrieKeyExists(g_tAuthIDs, g_szAuthIDs[id]))
server_cmd("kick #%i ^"На сервере уже есть игрок с этим SteamID^"", get_user_userid(id))
}

public client_putinserver(id)
{
if(!g_bIsPlayer[id])
return

if(is_valid_authid(g_szAuthIDs[id]))
TrieSetCell(g_tAuthIDs, g_szAuthIDs[id], 1)
}

public client_disconnect(id)
{
if(!g_bIsPlayer[id])
return

TrieDeleteKey(g_tAuthIDs, g_szAuthIDs[id])

g_szAuthIDs[id][0] = '^0'
}

public plugin_end()
TrieDestroy(g_tAuthIDs)

stock is_valid_authid(const szAuthID[])
{
static const szAuthIDs[][] = { "STEAM_ID_LAN", "STEAM_ID_PENDING", "VALVE_ID_LAN", "VALVE_ID_PENDING", "STEAM_666:88:666" }

for(new i = 0; i <= charsmax(szAuthIDs); i++)
{
if(equali(szAuthID, szAuthIDs[i]))
return false
}
return true
}


Отредактировал: Fintok, - 22.8.2015, 14:55
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KPOCT
сообщение 22.8.2015, 15:35
Сообщение #3
Стаж: 11 лет

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

Спасибо большое, но, как видите, это не помогло.
Ссылка на jpg
http://pixs.ru/showimage/SnimokJPG_6117724_18509149.jpg

У меня получилось зайти. Дело в том, что, если подключаться одновременно, то можно обойти проверку.
К слову, в плагине BanIP fakes это предусмотрено.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя floricus
сообщение 22.8.2015, 15:51
Сообщение #4
Стаж: 18 лет

Сообщений: 79
Благодарностей: 46
Полезность: 395

А почему просто не включить соль в dproto?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 22.8.2015, 18:12
Сообщение #5


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

floricus, соль не защищает от одинаковых authid на сервере.
Если злоумышленник будет знать реальный authid жертвы, то он сможет его подменить и в итоге получится дубль.

KPOCT, ничего страшного, попробуй тогда такой вариант.
Насчет BanIP fakes, не знаю, не видел его.

Код:
#include <amxmodx>

#define PLUGIN "Anti Double AuthID"
#define VERSION "0.2"
#define AUTHOR "Fintok!"

#define MAX_PLAYERS 32

new bool:g_bIsPlayer[MAX_PLAYERS + 1]
new g_szAuthIDs[MAX_PLAYERS + 1][35]
new Trie:g_tAuthIDs

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)

g_tAuthIDs = TrieCreate()
}

public client_putinserver(id)
{
if(!(g_bIsPlayer[id] = bool:(!is_user_bot(id) && !is_user_hltv(id))))
return

get_user_authid(id, g_szAuthIDs[id], charsmax(g_szAuthIDs[]))

if(!is_valid_authid(g_szAuthIDs[id]))
return

if(!TrieKeyExists(g_tAuthIDs, g_szAuthIDs[id]))
TrieSetCell(g_tAuthIDs, g_szAuthIDs[id], id)
else
server_cmd("kick #%i ^"На сервере уже есть игрок с этим SteamID^"", get_user_userid(id))
}

public client_disconnect(id)
{
if(!g_bIsPlayer[id])
return

static iUserId
TrieGetCell(g_tAuthIDs, g_szAuthIDs[id], iUserId)

if(iUserId == id)
TrieDeleteKey(g_tAuthIDs, g_szAuthIDs[id])

g_szAuthIDs[id][0] = '^0'
}

public plugin_end()
TrieDestroy(g_tAuthIDs)

stock is_valid_authid(const szAuthID[])
{
static const szAuthIDs[][] = { "STEAM_ID_LAN", "STEAM_ID_PENDING", "VALVE_ID_LAN", "VALVE_ID_PENDING", "STEAM_666:88:666" }

for(new i = 0; i <= charsmax(szAuthIDs); i++)
{
if(equali(szAuthID, szAuthIDs[i]))
return false
}
return true
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя KPOCT
сообщение 22.8.2015, 21:27
Сообщение #6
Стаж: 11 лет

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

Преогромное спасибо :) Работает.

Отредактировал: Bloo, - 25.8.2015, 18:19
Причина: Выдано устное предупреждение!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя KPOCT
сообщение 22.8.2015, 21:34
Сообщение #7
Стаж: 11 лет

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

Fintok, извиняюсь, но нажать на "Спасибо" не могу, потому как не "насобирал" 15 сообщений.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Fintok
сообщение 22.8.2015, 22:30
Сообщение #8


Стаж: 16 лет

Сообщений: 756
Благодарностей: 294
Полезность: 638

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