Библиотека. SetNick (смена ника)

:warning: Внимание! :warning:
Этот код не добавляет команду!!
Он добавляет функцию которую нужно добавить в свой код!

Сам код изменяет функции SH:

И добавляет в SV:

Служебки

Используются внутри, но доступны везде.
WriteNickSQL(Steam,name) – запишет в базу новый ник

ReadNickSQL(Steam) – вернёт ник по стим айди

:interrobang: Возможные проблемы

дублируются сообщения

Если дублируются сообщения то на 28 строчке, замените Add на Remove

За место нового ника, пишет старый (steam)

функции такие как
chat.AddText
Выдают C+ значения.

По этому если использовать
chat.AddText (player,‘:’,text)
то выдаст ник со стима!

Фикс:

chat.AddText (team.GetColor(player:Team()),player:Nick(),‘:’,text)

:information_source: Информация

  • Все ники игроков сохраняются в sv.db в таблице player_Name
  • При подключении игрока, все игроки получают его новый ник или ник со стима, если новый ник никогда не был установлен!
  • Код не записывает историю ников игрока
  • Player:RNick() - ищет в таблице если он находит игрока то вернёт true, если игрок никогда не менял ник, то его не будет в этой таблице.

sh_setNick.lua (Установка GarrysMod\garrysmod\lua\autorun)

Как создать команду?

Пример создания
--Только SV! 
--в CL будут ошибки
concommand.Add('SetNick', function(pl, _, _, str)
    pl.RefreshNick = pl.RefreshNick or 0
    if pl.RefreshNick > CurTime() then return end
    pl:SetNick(str)
    pl.RefreshNick = CurTime() + 30
end)

сменит игроку ник на тот что напишет сам,
тут нет проверок на доступные символы, длинны ника.
игрко сможет менять ник раз в 30 секунд