Функция создающая копию игрока при его отключении от сервера

denj

Участник
Сообщения
23
Реакции
0
Помогите реализовать функцию, которая при отключении игрока от сервера будет создавать его копию в виде бота, с его ником и статистикой (фраги, смери, очки). А если игрок заходит обратно, то продолжает с той статистикой, которая была на момент его отключения. CS:GO
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
это уже будет не функция а плагин!
 

denj

Участник
Сообщения
23
Реакции
0
Хотя бы функцию, которая привяжет только что созданного бота к STEAMID64 игрока)

Добавлено через 11 минут
Я изучаю язык несколько дней, и пока мало что понимаю.
Давай тогда по порядку.
PHP:
public OnClientDisconnect(client)
{
    if (!IsFakeClient(client) && GetClientTeam(client)) //если отключился не бот, а игрок, ранее выбиравший комманду
    {
        decl String:auth[MAX_NAME_LENGTH];
        GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth));
        decl String:fake_name[MAX_NAME_LENGTH];
        GetClientName(client, fake_name, sizeof(fake_name));
        CreateFakeClient(fake_name);
    }
}
Когда игрок отключатеся, создается бот но с ником (1)NICK. Как решить эту проблему? OnClientDisconnect_Post не помогает.Нужна задержка перед CreateFakeClient(fake_name); как я понял. Как ее сделать?)
 
Последнее редактирование:

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
CreateTimer, а лучше CreateDataTimer(тоже самое, чтои CreateTimer ps. riko) (дабы передать имя клиента). Чтобы "привязать" можно использовать Trie, соответственно, где ключ - это SteamID игрока, а значение - UserID бота
 
Последнее редактирование:
  • Мне нравится
Реакции: denj

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Хотя бы функцию, которая привяжет только что созданного бота к STEAMID64 игрока)

Добавлено через 11 минут
Я изучаю язык несколько дней, и пока мало что понимаю.
Давай тогда по порядку.
PHP:
public OnClientDisconnect(client)
{
    if (!IsFakeClient(client) && GetClientTeam(client)) //если отключился не бот, а игрок, ранее выбиравший комманду
    {
        decl String:auth[MAX_NAME_LENGTH];
        GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth));
        decl String:fake_name[MAX_NAME_LENGTH];
        GetClientName(client, fake_name, sizeof(fake_name));
        CreateFakeClient(fake_name);
    }
}
Когда игрок отключатеся, создается бот но с ником (1)NICK. Как решить эту проблему? OnClientDisconnect_Post не помогает.Нужна задержка перед CreateFakeClient(fake_name); как я понял. Как ее сделать?)

Создай таймер в 1 секунду.
Фраги можно взять посредством просмотра исходника плагина который меняет значение фрагов и смертей.
 
  • Мне нравится
Реакции: denj

denj

Участник
Сообщения
23
Реакции
0
Разобрался как сделать таймер.
PHP:
public OnClientDisconnect(client)
{
    if (!IsFakeClient(client) &&  GetClientTeam(client)) //если отключился не бот, а игрок, ранее выбиравший комманду Т или КТ
    {
        decl String:auth[MAX_NAME_LENGTH];
        GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth));
        GetClientName(client, fake_name, sizeof(fake_name));
        CreateTimer(3.0, CreateBotOfPlayer);
    }
}
public Action:CreateBotOfPlayer(Handle:timer)
{
    CreateFakeClient(fake_name);
}
Если есть более правильно решение - поправьте.
Главный вопрос - как задать этому боту STEAMID64?

Это может показаться глупо, но нужно закрепить этого бота за игроком именно по STEAMID64
 

Danyas

Участник
Сообщения
2,173
Реакции
1,072
Разобрался как сделать таймер.
PHP:
public OnClientDisconnect(client)
{
    if (!IsFakeClient(client) &&  GetClientTeam(client)) //если отключился не бот, а игрок, ранее выбиравший комманду Т или КТ
    {
        decl String:auth[MAX_NAME_LENGTH];
        GetClientAuthId(client, AuthId_SteamID64, auth, sizeof(auth));
        GetClientName(client, fake_name, sizeof(fake_name));
        CreateTimer(3.0, CreateBotOfPlayer);
    }
}
public Action:CreateBotOfPlayer(Handle:timer)
{
    CreateFakeClient(fake_name);
}
Если есть более правильно решение - поправьте.
Главный вопрос - как задать этому боту STEAMID64?

Это может показаться глупо, но нужно закрепить этого бота за игроком именно по STEAMID64

Что-то в роде принудительной смены SteamID?
Не думаю что это можно сделать с помощью SourceMod'a.
 

denj

Участник
Сообщения
23
Реакции
0
Что-то в роде принудительной смены SteamID?
Не думаю что это можно сделать с помощью SourceMod'a.
Задача состоит в том, чтобы БОТ полностью заменял игрока, например если он сделал фраг, то эта инфа должна отправиться в БД в которой игрок идентифицируется по STEAMID64.
 

Primo

типа серьёзный тип
Сообщения
1,532
Реакции
759
Бот же имеет свой индекс, верно?

Просто сделать массив со steamid игроков.
При убийстве и т.д. проверять IsFakeClient, брать из массива стимид по индексу, ну и дальше делать то, что пожелаешь...
 

denj

Участник
Сообщения
23
Реакции
0
Бот же имеет свой индекс, верно?

Просто сделать массив со steamid игроков.
При убийстве и т.д. проверять IsFakeClient, брать из массива стимид по индексу, ну и дальше делать то, что пожелаешь...
Как-то интуитивно я это понимаю, но вот написать не получается(
Кто-то может привести пример, как линкануть бота со стимид отключившегося игрока?
 

SourceSamil

Мошенник
Сообщения
121
Реакции
28
Т.к. создатель сайта нарушает лицензию языка
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Hejter
Барыга? Он больше пользы принес, чем бОльшая часть людей, тут сидящих, глупо как-то, ну да ладно.
 

The End Is Near...

Russian Roulette
Сообщения
874
Реакции
691
Hejter
Умник, хочешь что-то объяснить? Пиши в скайп тогда уж: dok_1997
 
Сверху Снизу