![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Level 9 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [PW] ![]() |
В этой теме предлагаю постить "странности" скриптов, различные тонкости эвентов, функций и т.п.
Локальные переменные на итемах из инвентаря игрока сохраняются в файле Для меня это было откровением и нашел я это случайно. Если выставить локальную переменную на итем - она сохраняется в .bic файле игрока, что иногда очень удобно (особенно вместе с настоящими nodrop-итемами, многие вещи так делать гораздо проще, чем юзать БД) Событие модуля OnAcquireItem вызывается при _входе_ игрока на шард для _каждой_ вещи из его инвентаря Тоже самое и с событием OnPlayerEquipItem - оно вызывается при входе игрока на шард для каждой одетой на персонажа вещи В событие OnClientLeave не работают некоторые функции для работы с объектом игрока GetPlayername, GetPCIPAddress и некоторые другие. Но локальные переменные читать можно, так что если вам нужны эти данные - занесите их в переменные при входе игрока на шард Событие OnUnAcquireItem вызывается при _попытке_ продажи итема в магазин, даже если эта вещь не покупается Если нет денег у НПС-покупателся, возможно и на plot\stolen то же самое будет. Вероятно что и OnAcquireItem будет вызываться. Бага функции TakeGoldFromCreature() Надо дополнительно проверять текущее действие, if (GetCurrentAction(oPC) == ACTION_DROPITEM) {чит} Т.е. можно задать действие "выложить деньги на землю", некоторое время сервер будет считать, что все деньги по прежнему у вас. если сервер в это время отнимает деньги у игрока функцией TakeGoldFromCreature() - при небольшом навыке на землю упадет _вся_ сумма, не учитывая те, что забрали функцией. Баг особо опасен для банков (IMG:style_emoticons/kolobok_light/smile.gif) (так делались первые миллионы на Эксизе, когда только появился первый банк) Сообщение отредактировал _kaa_ - Jun 24 2004, 17:51 |
![]() |
![]()
Сообщение
#2
|
|||
Level 5 ![]() Класс: Клерик Характер: Lawful Good Раса: Человек NWN: Контент ![]() |
Еще интереснее, если открыть в какой-нибудь программе файл игрока, например, в nwn explorer. Там есть поля ScriptHeartbeat, ScriptOnNotice, ScriptSpellAt, ..Attacked, ..Damaged, ..Disturbed, ..EndRound, ..Dialogue, ..Spawn, ..Rested, ..Death, ..UserDefine, ..OnBlocked. И напротив всех них стоит (что бы вы думали?) - default ! Учитывая наличия разных плагинов к nwnx типа leto и подобных, а так же возможности редактировать эти поля вручную .. :yes: На неделе обязательно проверю, будут ли функционировать скрипты, прикрепленные к этим событиям. Очень хотелось бы :yahoo: Возможно, конечно, что эти значения ни на что не влияют, и нвн все равно будет привязывать только скрипт с именем default Добавлено Проверил, эти поля появляются только если зайти в модуль (т.е. не сразу после создания), и перезаписываются нвн, так что их подредактировать не удастся. А скрипт default исполняется еще как минимум при смерти игрока. Сообщение отредактировал rdx - May 11 2005, 12:34 |
||
![]() ![]() |
Текстовая версия | Сейчас: 27th April 2025 - 05:30 |