UoKit.com Форумы > Ultima Online : Dev > Sphere Server > Архив готовых скриптов
d`ArcZeal
Данный скрипт создает новый файл каждый день, в котором записываются все сообщения игроков в игре.



Версия:
Скрипт для Sphere server 56b-56c

Установка:
1 - Устанавливаем в Sphere.ini:
// OF_FileCommands = 00000080 // This enables all FILE commands, information about this command is here
OptionFlags=080
2 - Добавляем функцию в скрипты:
Код
[FUNCTION WRITEFILE]
IF !(<FILE.INUSE>)
FILE.MODE.CREATE=1
FILE.MODE.APPEND=1
FILE.MODE.WRITEFLAG=1
IF (<FILE.OPEN <STRARG <ARGS>>>)
FILE.WRITELINE <STREAT <ARGS>>
FILE.CLOSE
ENDIF
ENDIF


3 - В файле Sphere speech.scp ищем [SPEECH SPK_PLAYER] и дополняем:
Код
[SPEECH SPK_PLAYER]
ON=*
WRITEFILE Logs\<SERV.RTIME.FORMAT %d>.<SERV.RTIME.FORMAT %m>_PLAYERS_SPK.scp,<NAME> <UID> <P> [<SERV.RTIME>]: <ARGV0>




ГМы не следят за игроками.

Вверх
Nickname
Добавь переменную даты (день, месяц, год) в название файла.
Вверх
d`ArcZeal
v 0.2
Изменение в скрипте:
WRITEFILE Logs\<SERV.RTIME.FORMAT %d>.<SERV.RTIME.FORMAT %m>_PLAYERS_SPK.scp,<NAME> <UID> <P> [<SERV.RTIME>]: <ARGV0>
Что позволяет создавать отдельные файлы под каждый день реального времени.
Вверх
Aimed
У тебя сервер не будет лагать, если будет стоять парочка ботов на инже/стелсе/стиме и спамить речь?
Вверх
d`ArcZeal
Цитата(Aimed @ 3.3.2017, 15:43)

У тебя сервер не будет лагать, если будет стоять парочка ботов на инже/стелсе/стиме и спамить речь?

Для этого необходимо перед записью вставить антифлуд:
https://forum.uokit.com/index.php?showtopic=30094
Вверх
Frog
А почему бы не открывать файл при коннекте и не закрывать при дисконнекте?
Если файл разрастется до больших размеров - может быть постоянное переоткрытие и дозапись не будет проходить безболезненно.
Вверх
Aimed
Цитата(d`ArcZeal @ 3.3.2017, 14:42)

Для этого необходимо перед записью вставить антифлуд:
https://forum.uokit.com/index.php?showtopic=30094


1)Не только вставить, надо ещё переменную с антифлуда(SPEECHTIMER) сравнивать с текущим временем. Потому что эти оба скрипта ты цепляешь к эвенту SPEECH SPK_PLAYER, то что у тебя антифлуд ретурн даст, не означает что не будет вызова от эвент хендлера этого скрипта для записи в файл.

2)<SERV.TIME> + 10
Получается что можно обойти задержкой на флуд в 11, несколько(десятков) аккаунтов будут все равно создавать проблемы.
А делать гораздо выше такую задержку может уже стать неудобством для игроков.
+ ты тратишь ресурсы сети посылая обратно сообщение об антифлуде.

Возможно стоит подумать над алгоритмом, который пропустит н сообщений, сравнивая их интервалы и если там будут мега короткие инртервалы х раз подряд - кикать с сервера за флуд или лучше даже забанить.
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.