![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#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 |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 22:35 |