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

> Русский Revision для Sphere Server 0.55(R1-R4.0.1)
DihlofozzZ
сообщение 14.11.2005, 18:41
Сообщение #1


***********

Администратор форума
Сообщений: 5.602
Регистрация: 8.3.2003
Группа: Администраторы
Наличность: 0
Из: Москва Россия
Пользователь №: 237



(с) http://rbg.al.ru/spherehelp/

Sphere Server 0.55 R1
Код

11-11-2003, Zorm
- Исправлен баг с покраской всего. Теперь красится только dye tub
- Добавлены проверки на недопустимые символы во входящих текстовых пакетах
- Исправлен баг с дюпом факелов и свечек
- Игроки больше не могут поднимать айтемы из слоя layer_horse
- Игроки больше не могут поднимать айтемы-сообщения из доски объявлений
- Максимальная сумма статсов при создании персонажа изменена с 66 на 80 для поддержки новых prof.txt
- Теперь проверяется цвет одежды при создании чара
- Добавлено несколько проверок для имён персонажей при создании
- Эффект от телепорта (ГМов?) больше не наносит повреждений игрокам
- При смене хозяина животные "забывают" всех старых владельцев
- Исправлен экплоит, когда при помощи программ, аналогичных UO Injection,
 игроки моги видеть реальное количество хитпоинтов других игроков
- Аккаунт Administrator не получает автоматически привилегий администратора
- Если игрок не может использовать команду, она расценивается как обычный спич (появляется над головой)
- Меню воскрешения больше не посылается
- Убийство согильдийцев не меняет кармы/фэйма/киллов
- Расширена поддержка Юникода в спиче. Текст в Юникоде обрабатывается как текст в Юникоде :)
- Текст в формате не Юникод посылается как текст в Юникоде

12-11-2003, Kell
- Добавлен триггер @CallGuards, "return 1" отменяет вызов стражников
- Изменён @Logout так, что "return 1" отменяет инсталогаут (моментальный логаут)
- Добавлена поддержка следующих тэгов на чарах:
 TAG.NAME.ALT - альтернативное имя
 TAG.NAME.PREFIX - альтернативный префикс, если не установлен - используется префикс по-умолчанию
 (Lord/Lady)
 TAG.NAME.SUFFIX - суффикс (после имени)
 Между префиксом, именем и суффиксом автоматически пробелов не добавляется. Чтобы, к примеру,
 префикс был оттделён от имени, пробел должен быть включен в тэг, для чего текст тэга можно
 заключить в кавычки: TAG.NAME.PREFIX="text "
- Макрос "open door" теперь вызывает @DClick (@ItemDClick).
- @DClick вызывается на НПС ДО попытки на него сесть, открытия paperdoll'а или бэкпака
 ("return 1" запрещает действие)
- Если REAPAMOUNT отсутствует в описании добываемых ресурсов, по-умолчанию используется AMOUNT/3

13-11-2003, Kell
- Чары игроков с установленным флагом statf_conjured при смерти "падают с лошади" :) и флаг
 снимается. Полезно, если надо сделать, чтоб при смерти не оставалось трупа
 ( в ON=@Death : flags = <flags> | statf_conjured ).
- Исправлен баг, когда паутина и spider silk оставались лежать на полу сутками

14-11-2003, Zorm
- Исправлена поддержка клиента версии 1.26.x, теперь он может заходить на 55i сервер

Sphere Server 0.55 R2
Код

14-11-2003, Kell
- Исправлена обработка <<args>>. Также исправлена обработка численных команд
 (скиллов), так что <7> используется для доступа к скиллу №7
- Убран лог-файл, создаваемый при запуске в директории со сферой вместо папки с логами.
 Но всё равно будет появляться, когда сфера запускается как NT сервис.

15-11-2003, Zorm
- Добавлена проверка на видимость цели для таминга
- Армор изменён с BYTE на WORD, исправляет баг с AR > 255
- Исправлен CanSeeLOS, проверяет, если z координата цели выше z координаты источника + 14
 и блокирует, если так.
- Исправлен баг с киллами на логауте.
- Запещён стилинг из окна обмена и игровых досок
- Айтемы с аттрибутом ATTR_OWNED не могут быть залочены магией?
- Добавлен триггер @DeathCorpse, argn1 = UID трупа?
- Айтемы из окна обмена падают в пак перед смертью
- Проверка аккаунта при первом подключении (раньше была после выбора сервера)
- Добавлен триггер @start в секции описания скиллов [SKILL x]
- Отключена провокация игроков

16-11-2003, Kell
- Отменённые (сбитые) скиллы не дают прироста скилла/статсов на фэйле. (Исправляет кучу
 всяких багов на скиллы и статсы :)
- Добавлена поддержка тэга TAG.NAME.HUE (цевет отображения имени)
- Добавлен триггер @SkillSelect для чаров и @Select в секции описания скиллов (Срабатывает
 при нажатии кнопки в списке скиллов у тех из них, у которых она есть, "return 1" запрещает
 использование скилла).
- Добавлена поддержка FORCHARS/FORITEMS/FOROBJS: SRC - источник события, объект по-умолчанию
 внутри FOR блока - найденный объект (при этом теряется связь с объектом, на котором цикл
 вызван, так что внтри блока он не доступен)
- Добавлен триггер @SkillSuccess для чаров и @Success в секции описания скиллов
 ("return 1" отменяет действия по-умолчанию).
- Изменён триггер @SkillStart, так что "return 1" отменяет дальнейшую работу скилла
 (то же самое для @Start в [SKILL x]).
- Изменён триггер @Login, так что "return 1" запрещает вход в игру
- Добавлен триггер @UserSkills - срабатывает, когда игроку посылаются апдэйты скиллов
 ("return 1" запрещает открытие списка скиллов).
- Добавлен триггер @UserStats - срабатывает, когда клиент запрашивает апдэйт статсов
- Добавлен триггер @SkillMakeItem для чаров, срабатывает после создания айтема в крафтовых скиллах:
 "return 1" - удаляет созданный айтем
 "return 0" - кладёт айтем в пак, как обычно, но без дополнительных сообщений
              ("The item of superior quality" и т.д.)
 "return"   - действия по-умолчанию

17-11-2003, Kell
- Исправлен баг с ресинком секций [SPELL x].
- Добавлены триггеры в секции описания магии ([SPELL x]):
 @Select ( "return 1" отменяет каст, "return 0" пропускает внутренние проверки, "return" -
         действия по-умолчанию )
 @Start  ( "return 1" отменяет каст )
 @Fail   ( "return 1" отменяет эффекты на фэйле - звук и анимацию ).
 @Success
- Изменён формат SERV.LOG, теперь позволяет писать сообщения в логи. Новый синтаксис:
 serv.log @enable   - Включает лог
 serv.log @disable  - Выключает лог
 serv.log @toggle   - Переключает лог
 serv.log text      - Пишет текст в консоли и в лог-файл

18-11-2003, DarkStorm
- Добавлены цвета в косоли под Linux

18-11-2003, Kell
- Тэги теперь доступны на всех типах объектов.
- Исправлен баг с ресинком секций [SKILL x] (spheretables.scp), когда скиллы теряли дефнэймы.
 Смерть функции FIXACTION! :)

18-11-2003, Zorm
- Исправлен баг с ГМ-скими командами, которые "слышат" НПС. Не работает поддержка Юникода в спиче.
- Исправлено получение fame

19-11-2003, Kell
- Добавлена команда .DBG - исключительно для отладочных целей :)
 Всё, что умеет - генерить исключения (Critical exceptions) :)

19-11-2003, DarkStorm
- Добавлена поддержка MD5-хэширования паролей в аккаунтах. Включается при помощи
 параметра MD5PASSWORDS=1 в sphere.ini. После включения аккаунты сохраняются
 с закодированными паролями. ВНИМАНИЕ: Дальнейшее выключение хэширования не приведёт
 к раскодированию паролей обратно и игроки не смогут войти под своими аккаунтами.
 Однажды включенная, эта опция не должна в последствии быть изменена (если только
 вы не хотите проставить все пароли обратно вручную :)
- Добавлена проверка для предотвращения создания аккаунтов с именем "eof"
- Исправлена помощь, выводимая .serv.accounts

20-11-2003, Kell
- Добавлен параметр INTERRUPT=X,Y в секции описания магии [SPELL x]. Регулирует
 шанс сбить каст магии ударом в бою при разных значениях скилла магии.
 Значения по умолчанию - INTERRUPT=100.0,100.0 (сбивать всегда, как на сферах, начиная с 53).
 При INTERRUPT=100.0,50.0 касты у ГМ-мага сбиваются только в половине случаев.
 (INTERRUPT=100.0,50.0 означает 100.0% фэйлов при скилле 0, 50.0% при скилле 100.0)
- НПС, пытающиеся одеть айтемы, которые для них слишком тяжелы, на @NPCRestock, больше
 не будут вызывать сотни ошибок в консоли и логах.
- Добавлен параметр LOSTNPCTELEPORT=X в sphere.ini. Когда X > 0, НПС с установленной точкой
 HOME будут телепортироваться домой (в эту точку), если расстояние от дома до их текущего
 местоположения больше, чем X. Фиксит "заблудившихся" НПС, зашедших в портал и идущих потом
 домой через всю карту.
- Наконец добился устойчивой работы сферы под Linux - она теперь ловит большинство сигналов
 и нормально вызывает исключения. Проверено в single-thread режиме
 (FREEZERESTARTTIME=0 в sphere.ini) и без бэкграунд сэйва.
- Изменена процедура загрузки, так что sphere.ini грузится до каких-либо сообщений в логи.
 Это позволяет обработать LOG= строку в sphere.ini до создания лог-файла, так что он
 создаётся в указанном месте, поэтому убедитесь, что строчка LOG=%путь к лог-файлу%
 одна из первых в sphere.ini
- "return 1" в триггерах @Start и @Success скиллов не вызывает триггера @Fail. Если нужно,
 чтоб вызывало - можно использовать старый способ ACTION=-1. Это совместимо со скриптами
 .55i, потому что т.к. "return 1" никогда в ней и не работал, там, где нужен @Fail,
 уже итак должно стоять ACTION=-1 :)

21-11-2003, Kell
- Добавлен переключатель в sphere.ini, "EXPERIMENTAL", для установки флагов,
 которые активизируют некоторые эксперементальные возможности (далее EF 0x????)
- EF 0x0001 включает фикс пакетов для серверов под Linux, для XCMD_Spy.
 Следует установить этот флаг, если игроки не могут зайти на сервер.
- EF 0x0002 включает новые исправления для Юникода.
- EF 0x0004 включает фикс CanSeeLOS zorm'а. Это необходимо, т.к. данный фикс не
 позволяет кастовать на горках - проблема, конечно, не большая, но пускай в общем будет
 флаг, чтоб это выключить :))
- EF 0x0008 - боевые скиллы не прерываются при смене ACT. Фикс для скриптов -
 переписанных комбатов, когда при драке с несколькими противниками сбиваются удары.
- EF 0x0010 активизирует параметр INTERRUPT в секциях [SPELL x]
- Рекомендованное значение для параметра EXPERIMENTAL:
 EXPERIMENTAL=013

22-11-2003, Kell
- Попытка исправить баг, когда смена ACT в триггере @Hit сбивает удар,
 путём восставновления ACT после триггера
- Добавлен параметр SKIPDIFFICULTY (0 по-умолчанию или 1) в секции [SKILL x].
 При установке его равным 1 сфера пропускает хардкодовую проверку сложности и
 позволяет вставлять свои проверки в @Success и использовать "return 1" при неудаче.
- Исправлен триггер @Select, когда return 1 оставлял чара ожидать действия.

22-11-2003, Zorm
- Добавлины ключи для клиентов вплоть до 3.0.3
- Думаю, я наконец исправил Юникод спич :))

22-11-2003, Kell
- LOSTNPCTELEPORT теперь проверяет homedist и не НПС не будет телепортироваться, если находится
 в пределах homedist. Это позволяет устанавливать небольшие значения LOSTNPCTELEPORT.
- Ещё фиксы версии для Linux, теперь она должна работать с бэкграунд сэйвами.

23-11-2003, Zorm
- Эксперементальная поддержка прекастинга, включается флагом EF_Precast (020),
 до конца не протестировано - работа в процессе.

24-11-2003, Kell
- Добавлен SERV.SPELL(x).yyy, где x - номер спэлла, а yyy - любой параметр из секции
 [SPELL x], типа MANAUSE или RESOURCES. Также можно использовать RESCAST для описания
 необходимых ресурсов (выводятся их имена и кол-во, как в RESMAKE у айтемов)
- Добавлен SERV.SKILL(x).yyy, где x - номер скилла, а yyy - любой параметр из секции
 [SKILL x], типа KEY или TITLE.

25-11-2003, Kell
- НПС со скиллом SPIRITSPEAK >= 100.0 могут видеть мёртвых игроков, как хилеры.
 Позволяет использовать ON = @NPCSeeNewPlayer и "человеческие мозги" :) для
 взаимодействия НПС с гостами, без использования у НПС "мозгов" хилера.
- Добавлен флаг NORESROBE в sphere.ini. Если равен 1, игрокам не выдаётся роба при воскрешении

26-11-2003, Kell
- Изменены SERV.SPELL и SERV.SKILL, так что позволяют теперь использовать не только номера,
 но и дефнэймы скиллов или спэллов.
 (SERV.SKILL также понимает названия скиллов, как например <SERV.SKILL(Magery).TITLE>)
- SERV.ITEMDEF(x).yyy для доступа к полям секций [ITEMDEF x]
- SERV.CHARDEF(x).yyy для доступа к полям секций [CHARDEF x]

27-11-2003, Kell
- Прямо перед самым релизом исправлен баг, унаследованный от .55j, когда неизвестные слова
 при обработке оставались нетронутыми. Например, '<SERV.NONEXISTANT>' после
 обработки оставалось '<SERV.NONEXISTANT>', а не заменялось на '', как было в 55i.
 Теперь сфера возвращает '', и также выводит сообщение об ошибке в консоли (и в логах).
- Версия под Linux теперь деклалрирована, как стабильная. Незначительные проблемы всё ещё
 существуют, как например нажатие CTRL-C в консоли не есть хороший способ завершить сервер,
 и скорее всего приведёт к зацикливанию. Однако это незначительная проблема, всё ещё пытаюсь
 её решить.
- Добавлена функция CANMAKESKILL для проверки только скиллов, необходимых, чтобы сделать айтем
 (проверяет только поле SKILLMAKE, не обращая внимание на RESOURCES)
- Добавлена функция "fval", работает точно так же, как "eval", но возвращает число в формате x.x
 (с одним знаком после запятой)
- Похоже существует проблема с использованием триггера @Success для прекращения работы скилла -
 иногда скилл нормально не завершается и использование его (или другого скилла) снова
 выводит сообщение "you must wait to perform another action". Игроки могут просто сбить скилл,
 2 раза нажав TAB, или можно использовать ACTION=-1 для принудительного завершения скилла.

Sphere Server 0.55 R2a
Код

30-11-2003, Zorm
- Исправлен текст, иногда идущий целиком в верхнем регистре и команды с body=c_man_gm

01-12-2003, Kell
- Добавлены триггеры @EquipTest (для айтемов) и @ItemEquipTest (для чаров).
 "return 1" запрещает одевать айтем.
- Изменения в @SkillItemMake - "return 1" удаляет айтем только если в триггере не был
 назначен контэйнер для айтема (например через bounce)
- Исправлен баг с незавершающимися скиллами (также исправлена картография)
- Исправлен баг с суммоном (Linux only)
- Удалены все спецефические обработчики для SERV.xxx(y).zzz, теперь используется стандартные.
 Можно использовать как SERV.xxx(y).zzz, так и SERV.xxx.y.zzz формат
- Изменены настройки компилятора для опртимизации по скорости.

02-12-2003, Kell
- Исправлены REAPAMOUNT / AMOUNT. Формат идентичен формату ADVANCE для скиллов
 (например в руде REAPAMOUNT=2,4,8,16,32 означает, что при скилле 0 выкапывается максимум 2
 еденицы руды, при скилле 25.0 - 4, при 50.0 - 8, при 75.0 - 16, при 100.0 - 32).
- Добавлен параметр SPEECHSELF= в sphere.ini для установки дефнэйма спич-блока,
 который будет вызываться для перехвата спича игрока. Рекомендовано: SPEECHSELF=spk_player
 "return 1" "глушит" спич - запрещает игроку говорить.
- Удалён "home home home" - кому надо, может засунуть его в spk_player
- Добавлен параметр SPEECHPET= в sphere.ini - спич-блок для всех НПС, имеющих хозяев.


--------------------
С уважением Администратор Форума.
Контактный Email: dihlofozzz@uokit.com


Topic Closed
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Тема закрытаОткрыть новую тему
Ответов
DihlofozzZ
сообщение 14.11.2005, 18:43
Сообщение #2


***********

Администратор форума
Сообщений: 5.602
Регистрация: 8.3.2003
Группа: Администраторы
Наличность: 0
Из: Москва Россия
Пользователь №: 237



(с) http://rbg.al.ru/spherehelp/

Sphere Server 0.55 R3rc1
[code]
09-12-2003
- Добавлены тэги в секции CHARDEF/ITEMDEF. Если аналогичный тэг присутствует на
 экземпляре объекта, он перекрывает тэг в описании объекта (т.е. определённый в указанных
 секциях)

10-12-2003, Kell
- Добавлен параметр OptionFlags в sphere.ini для установки различных опций. (далее OF_????)
- Добавлен OF_Magic_IgnoreAR = 0001 - армор класс не влияет на урон (для переписанных комбатов).
- Добавлен параметр ACTDIFF для чаров - "сложность" текущего действия (используется в расчётах
 fail/success и шанса прироста скилла)
 Рекомендации: ACTDIFF можно использовать, чтобы менять (задавать) сложность в триггере
 @Start скиллов.
- Добавлен триггер @Effect в секции описания спэллов [SPELL x], вызывается после @SpellEffect
- <TAG0.xxx> - возвращает "0" в качестве значения по-умолчанию для тэгов (вместо "",
 когда тэг не определён - смерть "0<tag.xz>" :).
- TAG0.xxx = yyy также может использоваться, если yyy = 0, то тэг не сохраняется (то же самое,
 что "TAG.xxx=" )
 Использование TAG0 позволяет иметь тэги, которые сохраняются только когда отличны от 0.
 Удобно для тэгов, значение которых обычно 0, но которые часто используются
 (например тэги, которые должны существовать на всех чарах).
- Добавлен VAR0 (то же, что и TAG0, но для глобальных переменных VAR).

11-12-2003, Kell
- Добавлен OF_Magic_CanHarmSelf = 0002 спэллы с флагом SPELLFLAG_HARM действуют на себя
- Изменена функция rand(x), теперь позволяет использовать 2-ой параметр, задавая тем самым
 область, в пределах которой должно браться случайное число (от x до y-1)

12-12-2003, Kell
- Новый формат @color,font text для SYSMESSAGE и MESSAGE. Значения шрифтов от 0 до 9:
     FONT_BOLD, // 0 - Жирный текст = большие буквы, как надпись "Server PAUSED..." :)
     FONT_SHAD, // 1 - Текст с тенью = маленький, серый
     FONT_BOLD_SHAD, // 2 - Жирный с тенью = что-то среднее между 2-мя предыдущими :)
     FONT_NORMAL, // 3 - Нормальный (шрифт по-умолчанию)
     FONT_GOTH, // 4 - Готический
     FONT_ITAL, // 5 - Наклонный
     FONT_SM_DARK, // 6 - Мелкий
     FONT_COLOR, // 7 - Полноцветный шрифт (глючный?)
     FONT_RUNE, // 8 - Символы рун (Только буквы в верхнем регистре!)
     FONT_SM_LITE, // 9 - Мелкий
- Изменён SKILLMAKE, теперь позволяет выделять отдельные ресурсы (скиллы) из списка.
 SKILLMAKE.1 возвращает 1-ый скилл, SKILLMAKE.1.VAL возвращает необходимое значение
 и SKILLMAKE.1.KEY - имя скилла.

13-12-2003, Kell
- Добавлена функция RELEASE для НПС, то же самое, что команда "release", сказанная животному.
- Добавлен триггер @NPCFollow, вызывается, когда НПС следует за кем-то.

14-12-2003, Kell
- Изменена функция ATTACK - теперь понимает UID чара, которого следует атаковать, в качестве параметра
- Изменена функция TRY - убрана проверка на плэвел и достягаемость (CanTouch())
 Кому нужны эти проверки - может использовать TRYP
 (TRYP 0 проверяет только на достягаемость).
- Добавлено полезное ключевое слово в скрипты - "OBJ", используется как указатель на айтем.
 Что-то вроде ACT, но может использоваться где угодно.
 Например:
    OBJ = <UID>
    SAY You are <OBJ.NAME>, with uid <OBJ.UID>.
- Изменена функция MEMORY, понимает UID в качестве параметра, позволяет найти память для данного UID.
 Если вызывается без аргументов, используется UID источника (SRC) как обычно.
 Также может теперь использоваться для чтения/записи.
 Пример:
    MEMORY <SRC.UID> 0200 // set memory
    SAY Memory flag regarding <UID> is <MEMORY.<SRC.UID>>.

15-12-2003, Kell
- Изменён @UserSkills, <argn1> теперь номер скилла, -1 - список всех скиллов
 Позволяет запретить посылку ихменений скиллов клиенту.
- НПС не будут говорить "Yes Master", если задан SPEECHPET в sphere.ini (кому надо -
 может сам прописать :) Если SPEECHPET не задан, они всё равно ничего не будут говорить до тех пор
 пока не увидят своего хозяина (Удобно для ГМов). Игроки больше не будут отвечать "Sorry" на комадны ГМа.
- Добыча ресурсов изменена так, что проверяется SKILLMAKE добываемого айтема. Ресурсы, не прошедшие
 проверку canmake игнорируются и в процессе выбора ресурса не учасвтвуют. Если вдруг почему-то
 кому-нибудь захочется вернуться к старому стилю - просто закомментируйте строку со SKILLMAKE
 в секции описания руды.
- return 1 в триггере @Step на айтеме теперь блокирует движение в том направлении (ой ли? :)
 @Step на всех остальных айтемах в той же локации всё равно срабатывает.
- Добавлен OF_Skill_DiffFirst = 0008. Когда флаг установлен, сложность для скилла расчитывается
 до вызоыва триггеров @Start/@SkillStart. Преимущество этого, что сложность может быть изменена внутри
 этих триггеров через ACTDIFF. Чтобы "зафэйлить" скилл, ACTDIFF должен быть установлен больше текущего
 (изменённого) скилла. Отрицательное значение ACTDIFF означает, что скилл будет отменён, т.е. не будет
 вызываться @Fail и не будет расти скилл.
 Пример установки сложности для скилла arms lore как минимум равному скиллу, необходимому для
 изготовления вещи (первичному скиллу). У чара со скиллом больше ACTDIFF попытки будут всегда удачны.
 ON = @Start
  if ( <SRC.ACTDIFF> < <SRC.ACT.SKILLMAKE.1.VAL> )
     SRC.ACTDIFF = <SRC.ACT.SKILLMAKE.1.VAL>
  endif

16-12-2003, Kell
- Теперь можно использовать NEWITEM, NEWNPC и NEWDUPE на айтемах, указатель на созданный
 объект - ключевое слово NEW. При использовании этих функций на чарах укзатели будут оба -
 NEW и ACT. Если надо создать айтем или чара на другом чаре, не меняя его ACT, можно
 использовать SERV.NEWITEM и т.д.
 Пример:
   NEWITEM i_gold
   NEW.AMOUNT 100
   NEW.P = <TOPOBJ.P>
 NEW также может использоваться в качестве временного указателя на объект, как OBJ (или ACT)

17-12-2003, Kell
- Функциям, возвращающим значения, теперь могут передаваться текстовые аргументы в процессе
 вызова, как например IF <SRC.myfunction Say hello> == 1
- Добавлен параметр RANGE=min,max или RANGE=max (min по-умолчанию 0) для описаний айтемов и чаров
 (секции ITEMDEF и CHARDEF). Значение по-умолчанию для оружия и чаров - 1.
 Суммарная дальность считается как RANGE чара + RANGE оружия - 1.
 Например: Допустим у всех чаров RANGE=1 (как на самом деле и есть), установка RANGE=2 для алебадры
 означает, что чар будет бить на 1 клетку дальше.

18-12-2003, Kell
- Основная секция диалогов [DIALOG x] теперь интерпретируется целиком как любой другой скрипт,
 это позволяет добавлять логику в диалоги, использовать условия, и т.д.
 Единственное ограничение на данный момент - это что команды гампов разрешены только в секции
 диалогов, но не внутри функций, ну да пока и так сойдёт :)
- Диалоги больше не конфликтуют друг с другом. INPDLG тоже работает, т.к. только один INPDLG
 одновременно может присутствровать на экране .
- Добавлен RESOURCES.n, RESOURCES.n.KEY и RESOURCES.n.VAL для айтемов/чаров.

19-12-2003, Kell
- Для более удобного написания диалогов добавлен "курсор" и относительные координаты:
    dorigin 50 50 // установить кусор в позицию x=50, y=50
 Использование символа "*" перед координатой обозначает, что координата считается относительно
 положения курсора, и смещает курсор в новое положение:
    dtext     *0    *10    0    // курсор теперь в точке x=50, y=60
 Использование символа "+" перед координатой обозначает, что координата считается относительно
 положения курсора, сам же курсор при этом остаётся на месте:
    dtext     +10     -    0    // добавляет 10 к X
 Как пример, представьте написание списка из 3-х столбцов на расстоянии 200 пикселей друг от друга
 и расстояние между строками 20 пикселей:

 dorigin 10 10
 // первая строка
 dtext     *0   -    5   1:
   dtext  +10   -    0   the text for row1, col1
 dtext   *200   -    5   2:  // x курсора = 200
   dtext  +10   -    0   the text for row1, col2
 dtext   *200   -    5   3:  // x курсора = 400
   dtext  +10   -    0   the text for row1, col2
 
 получится что-то вроде
 1:the text for row1, col1     2:the text for row1, col2     3:the text for row1, col2
 
 Для второй строки надо только сместить Y курсора на 20 вниз: "dorigin 10 *20",
 остальной текст абсолютно идентичен (можно даже организовать цикл, операторы для которого
 которого добавлены позже :)
- Исправлен баг с FORCHARS/ITEMS/OBJS и ключевыми словами, начинающимись с "FOR" (типа FORensics).
- Изменены textadd и gumptext для объединения эквивалентных строк под одним индексом.
 Так что для записи
   gumptext 10 20  This is an example.
   gumptext 10 40  This is an example.
   gumptext 10 60  This is an example.
 сфера создаст только 1 текстовый ID. Это делает ненужным существование отдельной секции
 [DIALOG ... TEXT]. Хотя, подобная секция удобна для хранения всех строк в одном месте.
 В общем кому как больше нравится :)

20-12-2003, Kell
- Одинаковые плэвелы должны видеть друг друга, собственно что они теперь и делают :)
- Теперь можно открывать дилоги на определённой странице, формат DIALOG d_dialog_name pagenumber.
- Добавлена новая команда DTEXT в диалоги, которая заботится об обработке текста сама:
    dtext x y color  Actual text comes here.
 Текст, добавленный подобным образом, на самом деле автоматически добавляется в секцию
 [DIALOG ... TEXT]. Если приведённый текст используется только 1 раз, то это обрабатывается быстрей,
 чем использование обычного "text" и добавление текста в секцию [DIALOG ... TEXT].
 Также добавлены аналогичные комманды DCROPPEDTEXT и DTEXTENTRY, где вместо индэкса строки также
 напрямую используется текст. Также добавлена команда DHTMLGUMP, синтаксис такой же, как HTMLGUMP,
 за исключением того, что индэкс строки текста убран, а сам текст следует последним.
- Команды гампов (диалогов) теперь можно использовать в теле функций! Т.е. теперь по сути возможно
 создавать собственные команды для диалогов! Смерть copy&paste диалогам! :)

21-12-2003, Kell
- Аргументы в функциях теперь изменяемые. Некоторые из триггеров читают изменённые значения
 аргументов и используют их там, где это может на что-то повлиять. На данный момент это триггеры:
    @GetHit, ARGN1 - наносимый урон, ARGN2 - тип урона (как обычно, но теперь их можно менять).
    @Hit, ARGN1 - базовый урон, без учёта армора (изменяемый). ARGO - оружие (если есть).
    @PersonalSpace, ARGN1 - стамина, необходимая для движения (изменяемый).
 "return 1" запрещает движение, "return 0" разрешает движение и не пишет никаких хардкодовых
 сообщений, "return" или вообще отсутсвие return'а - действия по-умолчанию.
 ARGO в @Hit, @HitTry и @HitMiss также указывает на оружие (так что не нужно искать его по слоям :)
 Также хочется заметить, что ACTDIFF тоже доступен и может использоваться для изменения сложности
 скилла, даже заставить скилл сработать тогда, когда он должен бы сфэйлить (присвоив ACTDIFF=0).
 Также теперь он может быть доступен в @HitTry, и если присвоено любое неотрицательное значение,
 вместо попадания будет промах.
- Добавлена функция StrEat, удаляет из строки слово до пробела (<streat("hello there friend")>
 или <streat hello there friend> возвращает "there friend")
- Доавлен <SERV.LOOKUPSKILL skill name>,  возвращает номер скилла по имени или -1,
 если скилл не найден.
- Пара фиксов в диалогах.
- LOCAL.xxx в теле функций для локальных переменных. Они чуть более эффективны нежели куча глобальных
 переменных из-за более быстрого поиска в меньших массивах строк. Локальные переменные всегда
 инициалихзируются со значением "0".
- ARGN1, ARGN2 и ARGN3 определены для функций с численными аргументами. Так что когда возможно, лучше
 использовать их вместо argv. Например: "myfunction  123 50 89" - эти 3 значения будут
 находиться в ARGN1, ARGN2 и ARGN3.

22-12-2003, Kell
- Функции теперь могут возвращать строки, используя "return". При этом они ведут себя как тэги -
 т.е.
    return 2+2
 возвращает строку "2+2", а не "4". Для того, чтоб возврщало "4" придётся принудительно вызывать
 "eval":
    return <eval (2+2)>
 С этим могут возникнуть проблемы, если где-то используется "return rand" или что-нибудь вроде того,
 вместо "return <eval rand..."
 ДЕВЕЛОПЕР! УБЕДИСЬ, что используешь "EVAL" в строках с "return", если хочешь, чтоб они обсчитывались
 перед тем, как возвращаются! :D В следующей версии, видимо, не будет флага EF_ReturnString.

- Изменены функции профайла для слежения за средними показателями. Среднее время считается каждую
 секунду как 90% от предыдущего показателя среднего времени + 10% текущего времени.
- Добавлено новое ключевой слово в триггеры @Create / @NPCRestock и скрипты темплэйтов:
 FULLINTERP. FULLINTERP=1 позволяет использовать там функции, условия и т.д.
 Например:
 ON = @NPCRestock
    ITEM=i_cape
    FULLINTERP
       ITEM=i_robe
       MY_FUNCTION_CALL
 FULLINTERP 0 отключает эту возможность после того, как она была включена, но это обычно
 нафиг не нужно :), т.к. FULLINTERP затьрагивает только оставшуюся часть текущего скрипта.
 Необходимо помнить, что при этом накладываются определённые ограничения, т.к. NPC ещё не
 находится в мире.

23-12-2003, Kell
- Добавлен доступ к параметрам TERRAIN и STATICS либо через P.key, MOREP.key, либо через
 SERV.MAP(x,y).key, где key один из следующих:
   TERRAIN ID тайла карты
   ISDIRT проверяет ID на предмет приндалежности оного к грязи :)
   ISGRASS трава?
   ISROCK камень (скала)?
   ISWATER вода?
   STATICS количество статических айтемов в данной точке
   STATICS(n) ID энного статического айтема (Например: <SERV.MAP(200,300).STATICS(0)>.
Не вызывает ошибок в консоли, если айтем не существует, просто возвращает 0 - удобно для
проверки на статику без пересчитывания и циклов)
   STATICS.n  то же самое
   STATICS(n).key доступ к полям соответствующего ITEMDEF.
Например: <SERV.MAP(200,300).STATICS(0).NAME>

- Добавлены базовые циклы, WHILE, ситаксис:
    WHILE ( выражение )
// тело цикла, текущий номер повторения в <LOCAL._WHILE>
    END // или ENDWHILE

 также добавлен оператор FOR, заканчивается оператором END или ENDFOR, синтаксис:

     FOR 5 // повторяться от 0 до 5, текущий номер повторения в LOCAL._FOR
 или FOR 3 5 // повторяться от 3 до 5, текущий номер повторения в LOCAL._FOR
 или FOR K 5 // повторяться от 0 до 5, текущий номер повторения в LOCAL.K
 или FOR K 3 5 // повторяться от 3 до 5, текущий номер повторения в LOCAL.K
// бла бла бла
     END  // или ENDFOR

 Изменение данных локальных переменных не оказывает влияния на цикл.
- Изменён шрифт в консоли Windows на Courier, у него буквы одинаковой ширины, так что строки в
 консоли выглядят выровнеными.
- Теперь можно добавлять свои секции [SKILL x], до 70. SERV.MAXSKILLS - сколько скиллов загружено.
 Однако они не будут посылаться клиенту, т.к. клиент их не поддерживает (hint: @UserSkills).
 Также добавлен параметр FLAGS в секции [SKILL x], значения флагов следующие:
    [DEFNAME skill_defs]
    SKF_SCRIPTED 01 // Нет хардокодовых действий, только триггеры срабатывают.
    // можете добавлять свои флаги сколько угодно, но желательно после 01000, дабы оставить место
 для будущего расширения.
 Ну это всё, как обычно, очень эксперементальное, так что используйте, естественно,
 на свой страх и риск :)
- SKILLSELECT skill - "нажать" кнопку соответствующего скилла (если скилл с кнопкой)

24-12-2003, Kell
- Исправлен баг, когда типы в секции [TYPEDEFS] теряли свои значения при ресинке.
- Добавлена функция <CANMOVE dir>, аргумент - направление (как для WALK),
 возвращает ID рагиона, в который "идём" или 0, если проход блокирован.
- Добавлена функция <MOVE dir>, аргумент - направление (как для WALK), возвращает флаги
 для тайла в указанной точке. Флаг 04 - можно ходить. Полный список флагов кто-то потёр :)
 Данне ключевое слово может быть изменено в будущем.


27-12-2003, Kell
- добавлена поддержка цвета и режима проприсовки для EFFECT. Если не указаны - используются старые
 пакеты, иначе новые. Проверено и работает на клиентах, начиная с 2.0.3 (вообще должно работать
 на всех клиентах 2.0.* серии).
- Поддержка клиентов 3.0.*, должны нормально работать, вплоть до LBR (Они в общем-то итак работали,
 просто флудили ошибками в консоли).
- Добавлен оператор (%) для численных выражений (например: 12 % 3 == 0).
- Добавлена команда SENDPACKET для клиентов. Для более удобной посылки слов (WORD, 2 байта) и
 двойных слов (DWORD, 4 байта) можно использовать префиксы 'W' и 'D' соответственно (также
 поддерживается префикс 'B' для байтов, но он обычно не нужен). Как пример - установка уровня
 освещённости для клиента:
    SRC.SENDPACKET   04e  D<SRC.UID>  20
 04e и 20 могут использовать префикс 'B', заметьте как <SRC.UID> использует префикс 'D',
 чтобы указать, что оно занимает 4 байта (двойное слово).
 Также необходимо заметить, что каждый параметр сначала обсчитывается и обрезается, и только
 потом используется. Так что если, например, использовать 0fffffffe (который в общем-то далеко
 не байт :) на месте, где предполагается использование байта, то оно превратится в 0fe.
 Если поставить туда (2+2), оно посчитается и станет "4" перед использованием.

28-12-2003, Kell
- Добавлены параметры OSTR, ODEX, OINT для чаров.
- Добавлены параметры MODSTR, MODDEX, MODINT - модифицированные статсы, спэллы теперь меняют их.
 Статсы начинают падать только если сумма O-статсов больше статкапа, модифицированыые статсы в
 статкапе не учитываются.
- STR, DEX и INT теперь всегда равны O + MOD. Если у чара OSTR=50, MODSTR=0 и потом ему меняется
 STR=60, то его MODSTR становится равным 10 (а OSTR не меняется).
 *** ИЗМЕНЕНО! *** См. запись от 19-01-2004
- Добавлены MAXHITS/MAXMANA/MAXSTAM. Если 0, используется максимальное значение по-умолчанию
 (например, MAXSTR по умолчанию равно STR). (Для значения по-умолчанию надо присваивать пустую
 строку, а не 0, например:
   MAXHITS=
 т.к. там учитываются модифицированные статсы.
 MAX всегда содержит MOD для соответствующего статса. Т.е. если у чара MAXHITS=100 и MODSTR=10,
 на самом деле MAXHITS записано, как 90, и при изменении MODSTR меняется и MAXHITS. Это для
 совместимости со спэллами, меняющими статсы, т.к. те меняют не только статсы, но и максимальные
 значения hits/stam/mana.
- Теперь можно использовать тэги на аккаунтах. Оба TAG и TAG0 доступны.
- Исправлен LOCAL._WHILE внтури циклов WHILE.
- Изменена секция BUTTON диалогов, теперь монимает формат
    ON = min max
 для похожих действий на нескольких конпках - используется, если ID конпоки попадает между min и
 max (включительно). ARGN1 - ID кнопки, которая на самом деле нажата (даже если указан не диапазон,
 а всего одна конопка, как обычно).

29-12-2003, Kell
- Исправлен баг, когда некоторые скилл не завершались корректно, если другой скилл использоволся до
 того, как они завершились. Например спэллы не физлились, если использовать какой-то скилл до
 окончания каста.
- Для скиллов триггер @Fail теперь вызывается, когда неудача произошла в результате нормальной
 работы скилла (например, фэйл из-за высокой сложности). Триггер @Abort вызывается, когда скилл
 "сбивается" каким-либо образом, например использованим другого скилла, или в результате каких-то
 ошибок (выбросили реги после начала каста).
 Если @Fail взывается, это означает, что скилл будет расти, хоть и медленней, но при использовании
 "return 1" в теле триггера скилл расти не будет (см. MANUAL.TXT).
- Начал реализовывать нормальную работу для EF_CanSeeLOS. На данный момент она проверяет высоту
 статических айтемов на пути к цели.
- Использование слова "SECTOR" для доступа к параметрам сектора теперь обязательно. Так что для
 доступа к параметрам "light" или "rainchance" надо использовать SRC.SECTOR.RAINCHANCE, в то
 время как раньше можно было просто SRC.RAINCHANCE. У этого есть несколько преимуществ -
 люди итак уже обычно используют SECTOR, так что это позволяет быстрей обрабатывать команды
 на чарах, т.к. меньше строк для проверки.

30-12-2003, Kell
- Исправлен небольшой баг с кармой/фэймом.
- Добавлен параметр FEATURES= в sphere.ini, для задания возможностей, которые сервер включит
 в клиенте в процессе соединения:
  0001 - (T2A) включить кнопку чата
  0002 - (LBR) включить звук из LBR (играет MP3'шки вместо MIDI)
  0004 - (T2A) включить T2A апдэйт
  0008 - (LBR) включить LBR апдэйт (показывать монстров)
 Стандартная .55i автоматически включает 0001, но теперь его можно выключить :)
- Добавлена команда DIALOGCLOSE. Первый аргумент - имя диалога для закрытия, 2-ой аргумент -
 кнопка, нажатием которой закрывается диалог (по-умолчанию 0)
 пример:
   DIALOGCLOSE d_my_dialog
 Можно вставить эту команду одной из 1-ых в секцию диалога, чтобы быть увереным, что только
 один диалог данного типа одновременно открыт у клиента.

02-01-2004, Kell
- Добавлены ключевые слова для управления соединением в sphere.ini, значение 0 отключает
 любую из этих установок.
 Убедитесь, что знаете, что вы делаете, при установке этого:
 * ConnectingMax=x, где x - максимальное количество клиентов, которые могут одновременно
     быть подключёнными к серверу, но не находиться в игре (http, логин и т.д.).
     Самые старые клиенты, которые до сих пор не в игре, отключаются при коннекте новых.
     Значение по-умолчанию: 24
 * ConnectingMaxIP=x, То же самое, но с одного IP. Т.е. максимальное количество клиентов с
     одного IP, которые могут одновременно быть подключёнными к серверу, но не находиться в игре.
     "not in game" connections will be allowed per IP. Notice that HTTP
     Значение по-умолчанию: 8
 * ClientMaxIP=x, максимальное количество соединений с одного IP. ЗНАЧЕНИЕНЕ СЛЕДУЕТ УСТАНАВЛИВАТЬ
     СЛИШКОМ МАЛЕНЬКИМ, или вы рискуете выглядеть глупо :) Куча ситуаций, когда соединения могут
     исходить с одного IP, компьютерные клубы - самая распространённая из них.
     Значение по-умолчанию: 0
- Исправлена серьёзная проблема, когда ошибки при логине могли оставлять висящими сокеты.
- В сообщениях о коннекте/дисконнекте теперь 2 номера после IP-адреса.
 1-ый - количество соединений с данного адреса, которые не в игре, 2-ой - общее число соединений
 с данного адреса.
- В файлы мира OSTR и MODSTR теперь сохраняются вместо STR. Если встречается "STR",
 она интерпретируется как OSTR. Это неплохо работает для конвертирования старых сэйвов,
 даже если чар под воздействием спэллов, меняющих статсы, т.к. они "просто"
 делают MODSTR отрицательным (ага, с таким "просто" мы потом статкапа фиг когда достигнем :)
 ЗЫ: это работает применительно ко всем статсам, STR - это просто как пример.
- Если в перывй раз устанавливается какая-либо характеристика для НПС, когда Ostat = 0,
 сфера установит Ostat, а не MODstat. Другими словами, если в триггере @Create стоит
 STR=20, у НПС будет OSTR=20 и MODSTR=0. Если потом написать STR=30 на том-же НПС,
 OSTR останется 20, а MODSTR станет равна 10.
 *** ИЗМЕНЕНО! *** См. запись от 19-01-2004
- Исправлен небольшой баг, когда спеллы, меняющие статсы, не проставляли правильно MODstat.

03-01-2004, Kell
- Добавлены унарные операторы "*=", "+=", "-=", "/=", "%=", "|=", "&=" and "!=" (стиль C).
 На самом деле сфера просто заменяет строки формата
   XXX += YYY
 на
   XXX = <eval (<XXX> + (YYY))>
 Так что теперь можно писать
   MANA += 10/2  // то же, что и MANA = <eval (<MANA> + (10/2))>
   ATTR &= ~attr_magic  // то же, что и ATTR = <eval (<ATTR> & (~attr_magic))>
- Добавлен оператор ".=", соединяет строки.
 На самом деле сфера просто заменяет строки формата
   XXX .= YYY
 на
   XXX = <XXX>YYY
 Тут подразумеваются параметры, поддерживающие текстовые значения (NAME, TITLE, VAR, LOCAL и т.д.)
- Первая попытка реализовать нормальную проверку линии видимости (LOS) с учётом z координаты.
 Чтобы цель была видна, мы должны быть в состоянии дойти напрямую до неё (здесь ничего нового),
 и заончить путь на допустимой высоте. Так что можно увидеть объект на возвышенности, но нельзя,
 если вы на этаж ниже его. Всё это особо на производительность не влияет, так что можете включить
 эту возможность установкой флага EF_CanSeeLos (04).
- Хотьба по диагонали (например NW) возможна только если чар может пройти в оба из ортогональных
 направлений (NW -> N и W). Это исправляет несколько эксплоитов со стороны клиента, а также
 НПСей, ходящих через углы, Yew tree и т.д. Включается установкой флага EF_DiagonalWalkCheck (010)
- Для определения высоты, находясь на которой над айтемом чар будет вызывать триггер @Step, теперь
 используется высота самого айтема, а не хардкодовое значение "3". Это позволяет иметь триггеры @Step
 на столах, которые будут срабатывать, когда чар стоит на нём.
- Если в триггере @SpellEffect не опрпеделён источник (SRC), то источником принимается сам чар,
 на котором сработал триггер. Исправляет баг с исключениями (Critical exceptions) при вызове функции
 SPELLEFFECT на таймере и т.д.
- Добавлены триггеры @NPCLookAtChar и @NPCLookAtItem (см. manual.txt). Не следует ими злоупотр<вырезано анти-матом>ть,
 т.к. они могут повлиять на производительность.

04-01-2004, Kell
- Добавлена функция ISNEARTYPE, первый аргумент - тип, 2-ой - максимальная дистанция для поиска
 (по-умолчанию 4). Также формат ISNEARTYPE.P, возвращает "0", если ничего не найдено, или
 координаты найденного объекта.
- Изменена функция DISTANCE, теперь понимает UID объекта, до которого надо измерить расстояние,
 в качетсве параметра, либо координаты точки. Так что теперь можно использовать запись типа
    <DISTANCE <MOREP>>  <DISTANCE trinsic>  <DISTANCE <SRC.ACT.UID>>
 Если аргументов не указано, считает расстояние до источника (SRC), как обычно.
 Если передаются неверные координаты или несуществующий UID - пишет ошибку в консоли.
- TIMERD теперь читаемый (десятые доли от TIMER).
- Убрана проверка на видимость из USEITEM. Ибо весь смысл данной команды - активизирование айтема
 из скриптов, без проверки на достягаемость. Тогда, собственно, нафига там нужна проверка на
 видимость? :) Все эи тесты выполняет DCLICK. Ключевое слово "USE" итак позволяло использовать
 формат "USE 0", чтобы не проверять на достягаемость, но также проверяло на видимость.
 Больше не проверяет;)
- Биты спавнов меняют свой вид сразу после изменения MORE1.
- Даблклик по уже сброшенному (more2=0) спавну чаров устанавливает ему таймер 1, так что он
 респавнится через секунду.
- Добавлена команда MOVENEAR для объектов (айтемов/чаров). 1-ый аргумент - UID айтема, рядом
 с который двигать, 2-ой аргумент - дистанция. 3-ий аргумент, если присутсвтует и
 равен "0", то айтем не посылает апдэйт пакетов.
 Пример:
    ON = @DClick
       MOVENEAR <SRC.UID> 5 // подвинуть на 5 шагов от SRC
 При этом подобное передвижение учитывает стены и т.д. (возможность попасть отсюда в ту точку,
 удобно для переписывания спавнов).
- Установка ARGN1=1 в @Login запрещает показывать скролл MOTD.

05-01-2004, Kell
- Исправлен эксплоит с '\n' в textentry и inpdlg.
- Секции AREA и ROOM в формате
    [AREA name here]
 Теперь лучше использовать в формате
    [AREADEF a_some_def] // ROOMDEF для комнат
    NAME=name here
 Так оно ресинкается без конфликтов регионов.
 Совет: Держите регионы в разных форматах в разных файлах. Или найдите скрипт для
 конвертирования из старого формата в новый, или ручками :)
 Секции [Teleporters] и [Moongates] уберите в отдельные файлы (т.к. они не ресинкаются).
 Замечание: Не обязательно использовать новый формат. Однако ж это рекомендуется, т.к.
 позволяет изменять регионы без перезапуска сервера.
 Все последующие возможности сохранения всяких тэгов и т.д. в регионах будут доступны
 только для регионов в новом формате (или для регионов ,у которых определён DEFNAME).
- Добавлна инструкция CALL для вызова функции, но разделяя локальные переменные с вызвавшей функцией.
 Очень удобно для разбиения функции на мелкие куски, не функционирующие по-отдельности.
 Другими словами, если вызвать функцию при помощи CALL, все локальные переменные вызывающей из
 текущей функции будут доступны в вызываемой функции и наоборот (переменные, объявленные внутри
 вызываемой функции будут доступны в вызывающей после окончания работы вызываемой %)
 [FUNCTION myfunction1]
      LOCAL.VAL1 = 12
      CALL myfunction2 1, 2  // LOCAL.VAL1 будет доступна в myfunction2
      // если LOCAL.VAL1 изменится в myfunction2, она также изменится и здесь.
 Если вызываемой функции не передавать аргументов, то аргументы вызывающей (args/argn/argv)
 также будут разделены, и весь процесс быстрей, нежели вызов функций без CALL. Если передавать
 аргументы в функцию, то разделяются только локальные переменные, и сам процесс немного медленней.
 Незаметно, но в принципе.
 Это также может использоваться, как <CALL Function ...>, быстрей без аргументов, медленней с.
- Вдруг осознал, что ВСЕ DEFNAME'ы доступны через VAR. Это означает, что все itemdef'ы, chardef'ы,
 и т.д. имеют записи в списке глобальных переменных VAR (можете попробовать <VAR.i_dagger>).
 Это есть потенциальная причина многих проблем.
    1) Когда сфера пытается получить доступ к глобальной переменной VAR, она ищет её среди ВСЕХ
    существующих дефнэймов (на разных серверах от 2-3 до 5-10 тысяч :).
    2) Вы можете нечаянно создать переменную с именем, таким же, как у какого-нибудь айтема, и...
    ну в общем понятно :)
 Теперь VAR/VAR0 содержат только глобальные переменные, которые могут изменяться, а доступ к
 дефнэймам осуществляется через DEF/DEF0 и они не изменяемые. Разница в скорости заметна
 невооружённым глазом :) Раньше каждый раз, когда использовался VAR, сфера искала его имя во всём
 списке дефнэймов из несколькоих тысяч элементов. Теперь же каждое обращение ищет имя только в
 списке из переменных, созданных вашими скриптами (количество которых даже на шардах-экстремалах
 по-идее не должно превышать сотни :).
 Это также позволяет сохранять глобальные переменные в мире.
 Хотя это довольно здоровое изменение во внутренностях сферы, оно почти не влияет на скрипты, за
 исключением ситуаций, когда:
    1) Вы создали DEFNAME флаг в скриптах и меняете его во время работы сервера. Это очень
       нетипичная ситуация, но если вам это надо - вы можете просто один раз создать VAR в скриптах,
       она сохранится в spherevers.scp (Почему? Очень даже типичная - временные флаги, действующие до
       ручного отключения и сбрасывающиеся при перезапуске сервера - такая удобная вещь была для
       квестов :)
    2) Вы используете дефнэймы через VAR. Однако повода для этого я не вижу, т.к. DEF'ы / VAR'ы
       могут использоваться без префикса "VAR." (Не всегда, есть пара ситуаций, когда не могут :)
 Если не использовать префиксы DEF или VAR to для доступа к переменным, то сначала берётся VAR,
 если существует, если же нет, то DEF, т.е. старый формат сохранён.
- VAR'ы теперь сохраняются в spheredata.scp. Если при загрузке сфера не обнаружит данного файла,
 она выдаст предупреждение, но продолжит загружаться и создаст файл при следующем сохранении мира.
- GM пэйджи также сохраняются в spheredata.scp. Слишком много людей заинтересованы в обработке оных
 для создания всяких вэб интерфэйсов или скриптов для Mirc, Так что теперь им не надо читать весь
 мир для этого.

06-01-2004, Kell
- Добавлен флаг "S" для SENDPACKET, позволяет посылать строки напрямую. Если строка не в кавычках,
 она заканчивается после первого пробела. Пример:
    SENDPACKET 00 S"This is the string to send" 0
    SENDPACKET 00 SUpToTheSpace 0
 Если строка должна заканчиваться нулевым символом, просто поставьте там 0 как показано выше.
 Иначе скорее всего придётся указать длину строки (функция strlen) - в зависимости от пакета.
- Добавлен новый код огранечителя скорости передвижения: существует максимальная скорость, с
 которой чар может двигаться. Если чар передвигается быстрей заданой скорости, каждую десятую
 долю секунды он теряет "единицу хотьбы", каждую десятую долю секунды, в которую чар
 передвигается медленней ожидаемой скорости, он получает дополнительную единицу.
 Количество единиц, с которыми чар начинает и максимальное количество единиц задаются параметром
 WALKBUFFER в sphere.ini. Я тестировал это со значениями около 40 для хороших соединений и 70 для
 лагающих. Если игрок на спидхаке, его буффер скоро окажется < 0 и он не сможет двигаться
 и ему придётся компенсировать это периодами медленной хотьбы, как в лаге.
 WALKREGEN - скорость регенерации единиц хотьбы, в процентах (от чего? :).
 Значения по-умолчанию: WALKBUFFER=50   WALKREGEN=25
 Hints:
WALKBUFFER чем меньше - тем строже контроль. Однако, слишком низкие значения могут "поймать"
   кого-то, кто просто сильно лагает. Следует увеличить это значение при уменьшении
 WALKREGEN.
WALKREGEN чем меньше - тем дольше "лагает" потом чаров. Имеет смысл уменьшить значение при
 увеличении WALKBUFFER.
- Удалены некоторые EF_ флаги, которые более не нужны, т.к. ничего страшного от них, судя по всему,
 не случается. Убедитесь, что прочитали MANUAL.TXT.
- Изменён триггер @DropOn_Item и @ItemDropOn_Item, теперь вызывается при бросании айтемав контэйнер.
 Вызывается, когда айтем с триггером брошен на другой айтем.
- добавлен триггер @DropOn_Self и @ItemDropOn_Self, вызываются, когда на айтем с триггером брошен
 другой айтем.
- Введены триггеры @DropOn_Char и @ItemDropOn_Char.
- при выходе из этих триггеров по "return 1", айтем упадёт обратно в пак только тогда, когда всё ещё
 "перетаскивается" (в слое layer_dragging). Это позволяет задавать новое место для айтема в теле
 триггера.
- Клиенты могут класть вещи в банк только если стоят на том же месте, где его открыли.
 Это также теперь может проверяться в скриптах.
- Исправлен Injection эксплоит, позволявший получать доступ к банку в любой точке мира.
- Добавлены триггеры @SkillGain и @Gain (см. MANUAL.TXT).

07-01-2004, Kell
- Автоматическое присваивание дефнэймов для регионов, объявленных в старом формате
 (AREA / ROOM). Этот дефнэйм строится из имени и делается уникальным путём добавления
 к имени номера.
- В консоли сервера можно набрать "d a" - сфера сохранит все регионы в новом формате в
 файле "map_all.scp". Я настоятельно рекомендую заменить старый файл карты этим файлом,
 т.к. это позволит окончательно уйти от старого формата.
 Замечение: Телепортеры и мунгейты не сохраняются в данном файле, так что их лучше заранее
 засунуть в отдельные файлы, чтобы регионы могли нормально ресинкаться.
- Ещё раз не менее настоятельно рекомендовано выполнить все операции, описаные выше, т.к.
 это даёт следующие преимущества:
 * Загрузка будет осуществляться быстрей, т.к. сервер не будет генерить дефнэ


--------------------
С уважением Администратор Форума.
Контактный Email: dihlofozzz@uokit.com


Topic Closed
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Тема закрытаОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.6.2024, 19:34
Designed by Nickostyle