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

Тема в разделе "Программирование / Скриптинг", создана пользователем denj, 8 июн 2015.

  1. denj

    denj

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

    FrozDark Команда сайта HLMod Модератор

    Сообщения:
    1.761
    Симпатии:
    1.915
    это уже будет не функция а плагин!
     
  3. denj

    denj

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

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

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    CreateTimer, а лучше CreateDataTimer(тоже самое, чтои CreateTimer ps. riko) (дабы передать имя клиента). Чтобы "привязать" можно использовать Trie, соответственно, где ключ - это SteamID игрока, а значение - UserID бота
     
    Последнее редактирование: 9 июн 2015
    denj нравится это.
  5. Danyas

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.714
    Симпатии:
    451
    Создай таймер в 1 секунду.
    Фраги можно взять посредством просмотра исходника плагина который меняет значение фрагов и смертей.
     
    denj нравится это.
  6. denj

    denj

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

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

    Danyas Спасибо, браток © yand3xmail Модератор

    Сообщения:
    1.714
    Симпатии:
    451
    Что-то в роде принудительной смены SteamID?
    Не думаю что это можно сделать с помощью SourceMod'a.
     
  8. denj

    denj

    Сообщения:
    30
    Симпатии:
    0
    Задача состоит в том, чтобы БОТ полностью заменял игрока, например если он сделал фраг, то эта инфа должна отправиться в БД в которой игрок идентифицируется по STEAMID64.
     
  9. Primo

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

    Сообщения:
    1.190
    Симпатии:
    306
    Бот же имеет свой индекс, верно?

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

    denj

    Сообщения:
    30
    Симпатии:
    0
    Как-то интуитивно я это понимаю, но вот написать не получается(
    Кто-то может привести пример, как линкануть бота со стимид отключившегося игрока?
     
  11. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    В какую бд? Trie массив: world(дефис)source(точка)ru/forum/100-2536-1 (почему этот сайт тут нельзя публиковать?)
     
    denj нравится это.
  12. SourceSamil

    SourceSamil

    Сообщения:
    121
    Симпатии:
    24
    Т.к. создатель сайта нарушает лицензию языка
     
  13. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    SourceSamil
    А как это относится к этому сайту?
     
  14. denj

    denj

    Сообщения:
    30
    Симпатии:
    0
    mysql
     
  15. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    _wS_, не любят на hlmod. Типо барыга и т.д
     
  16. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Hejter
    Барыга? Он больше пользы принес, чем бОльшая часть людей, тут сидящих, глупо как-то, ну да ладно.
     
  17. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Оффтоп
     
  18. san911

    san911 Вообще короче нечего

    Сообщения:
    177
    Симпатии:
    37
    Оффтоп
     
  19. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Hejter
    Умник, хочешь что-то объяснить? Пиши в скайп тогда уж: dok_1997
     
  20. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Оффтоп