![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Level 8 ![]() ![]() ![]() Класс: Фея Характер: Chaotic Evil Раса: Фея ![]() |
Дарова всем...
Возник трабл - через некоторое время товары вендоров забиваются всяким гэ и сервак начинает жутко лагать... Как можно очистить товары вендоров от вещей игроков ? Или может ... есть мысля создать вендора "Старьёвщик" - который бы покупал все вещи у игроков, а остальным вендорам запретить покупать вещи. Тогда какой скрипт нада написать, чтобы через некоторое время все товары этого старьёвщика очищались ? |
![]() |
![]()
Сообщение
#2
|
|||||
Великий хранитель фотоальбома ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Тварь МАСТЕР Кисти ![]() |
Я тут где-то на форуме видал такой .... он удоляет все повторные вещи ... по мне так даже лучше, а магазины делай шоб ничего не покупали, можешь какой нить ламбард сделать - шоб тока там скупалась всакая х***я :D ****************************************** Я конечно сам не проверял, сегодня вечерокм тэстить буду =) |
||||
![]()
Сообщение
#3
|
|
Level 8 ![]() ![]() ![]() Класс: Фея Характер: Chaotic Evil Раса: Фея ![]() |
Сделал немного проще - вещь сразу удаляется после продажи, но возникает мелкая проблемка.. Получается что игрок продает вещь, она оседает у вендора и удаляется - и получается, что между вещами, которые были у вендора появляется пустое место, которое раньше занимала удаленная вещь... можно ли как-то удалять вещь до попадания ее в инвентарь вендора или какой-то командой отсортировать вещи сразу после удаления ее из инвентаря вендора ?
|
![]()
Сообщение
#4
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
сделай просто скупщика, у него после закрытия вендора чистится все. А с тем, с чем сталкнулся ты я встречался раньше...хз как это правильно делать, у меня были дырки, но я на них забил.
|
![]()
Сообщение
#5
|
|||||
Level 9 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [PW] ![]() |
Это старый и не совсем правильный вариант. Приставка _SHOP - не обязательна, можно просто проверять тип объекта. Надо заменить первую проверку
на
Так же помогают новые возможности SoU, т.е. ограничение денег у продовца, перечисление типов покупаемых\непокупаемых товаров и т.д. |
||||
![]()
Сообщение
#6
|
|||
Level 8 ![]() ![]() ![]() Класс: Фея Характер: Chaotic Evil Раса: Фея ![]() |
Так и сделал :yes: Вопросец - мона ли сделать так, чтобы юзерские вещи у вендора очищались через некоторое время ? Можно в принципе на OnAcquireItem и на OnClientEnter дописать в скриптах, чтобы всем игроцким вещам давалась локальная переменная, чтобы отличить вещи вендоров от игроцких... Ну и потом на OnStoreClose DelayCommand , чтобы понаходить все вещи игроков и уничтожить... Вопрос вот в чем - возможно ли на OnStoreClose в скрипте DelayCommand прописать и не вызовет ли это лаги сервера ? |
||
![]()
Сообщение
#7
|
|
Level 9 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [PW] ![]() |
DB одно время говорил, что если очередь превышает 75 команд - начинаются траблы. Не знаю, как обстоит дело сейчас, но в любом случае перегружать очередь не нужно.
Можно повесить скрипт очистки на какое-нибудь переодическое событие (раз в час, в день и т.д.) По поводу "вешать переменную" - можешь делать это прямо в скрипте этом. Он как раз срабатывает в момент получения вещи магазином. Только одно "НО". Когда такой итем снова купит игрок - переменную надо удалять, иначе она останется на предмете и сохраниться в .bic файл игрока. Зачем тебе лишние несколько килобайт на каждом игроке? :) |
![]()
Сообщение
#8
|
|
Level 5 ![]() ![]() Класс: Некромант Характер: Neutral Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
У меня получилось решить проблему дырок от DestroyObject(). Если после этого мы делаем CreateItemOnObject() в инвентаре торговца, то эти дырки пропадают, происходит пересортировка ассортимента. Так вот, как теперь избавится от дырок, но и чтобы не оставалось предмета от CreateItemOnObject()? Довольно просто... Создает в синьке ОЧЕНЬ дорогой предмет, дороже любой вещи на шарде. И просто для убирания дырок влепливаем его в CreateItemOnObject(), а потом спокойно удаляем. Т.к. этот дорогой предмет будет в са-а-амом конце ассортимента, то и дырки после него уж точно не останется. Имхо. ;) :ww:
|
![]()
Сообщение
#9
|
|||||||||
Level 5 ![]() ![]() Класс: Некромант Характер: Neutral Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
Скриптик для шардов, где не хотят по простому удалять продаваемые игроком предметы и в тоже время очень не нужен спам одинаковых товаров на несколько страниц, который способствует лагам всего шарда. Сохраняем под именем "tw_inc_shoplist" следующее:
Нужно: в OnItemAcquire и в OnItemUnAcquire наверху дописать
в OnItemAcquire вниз дописать
в OnItemUnAcquire вниз дописать
На мерчанта в тулсете нужно вешать LocalInt "SPECIAL_SHOP_LIST" со значением 1. Также нужно соблюдать следующее условие: нельзя делать в магазине один и тот же предмет несколько раз. Можно сделать 5 бутылок в стеке, но не 5 раз по одной бутылке. Имеется в виду, нельзя этого делать во время создания модуля, т.е. через тулсет. Это вынужденная мера, из-за того что тулсет не даёт возможности определить бесконечен ли данный товар в магазине или нет. Всё! ;) Хотелось бы, чтобы кто-нибудь протестил работу в полевых условиях, т.е. непосредственно на каком-нибудь шарде... Хотя если у меня одного работало, то должно и на шарде нормально... Т.к. глючить нечему особо. :) Сообщение отредактировал Twin - Nov 24 2004, 10:57 |
||||||||
![]() ![]() |
Текстовая версия | Сейчас: 27th April 2025 - 01:42 |