Жесткий скриптингРаздел для обсуждения готовых и тестируемых скриптов
Внимание! В разделе введена жесткая модерация, темы и сообщения публикуются только после проверки модераторами
//сюда вписываем ItemID предметов для автообмена
TradeMultiItem=[6908,6909,6910,6911,6912,6913,6914,6915,6916]; //нельзя изменять, собъется обмен!
//количество предметов в массиве TradeMultiItem
TradeMultiItemCount=9;//нельзя изменять, собъется обмен!
Но я не хочу продавать Fish Gem'ы и Shiny Fish Gem'ы.
Что нужно для этого сделать?
Почему нельзя изменять?
Если убрать 6913 и 6914, а TradeMultiItemCount поставить равным 7, не будет работать?
Поясни, пожалуйста.
Поставь вместо ID предметов, которые хочешь оставить, любое заведомо неподходящее под другие ID предметов число (например 999999 или 1) и оно просто будет пропущено. Причина в вычислении EntryId в пакете MultiSellChoose. ID предметов для обмена идут по порядку и пропускать их нельзя.
Совет: Добавьте строчку в скрипте, чтобы во время обмена у фишермена очищался контрол msg. Иначе через несколько часов происходит его переполнение и скрипт падает с ошибкой "List index out of bounds (4999)"
Код:
//***************************************************************
// Вся торговля здесь!!!
//***************************************************************
procedure OnTrade(Sender: TObject);
begin
msg.Lines.Clear();
case trade of
//-------------------------------------------------
//продаем фишерману из массива TradeSellItem
//-------------------------------------------------
200: begin
Последний раз редактировалось LiS, 23.08.2009 в 04:18.
Вот часть кода:
В версии 3.4.1.83 работает нормально, а в версии 3.5.13.122 падает на выделенной синим цветом строке.
Если комментирую эту строку, то падает в следующей.
В чем причина? Подскажите, плиз.
Компилирую скрипт. Ставлю галочку на запуск скрипта. Все отлично.
Снимаю галочку, форма исчезает. Еще раз ставлю галочку. Скрипт запускается, форма появляется, но в логах пишет:
Код:
ошибка в CreateItemBase->StringList.Add()
И еще ошибка такая (вернее не понятная мне вещь).
В версии 3.5.13.122 уже есть встроенный метод SendMsg(string).
В этом скрипте он почему-то не шлет сообщения в клиент.
Пришлось вставить такой метод в скрипт:
по русски: отключаем таймер, устанавливаем интервал = 0 (зачем?), высвобождаем таймер (что в принципе подразумевает его останов), пытаемся обнулить привязку процедуры к событию онтаймер.
последний шаг производиться на уже не существующем обьекте, что явно приведет к рантайм эррору.
в принципе, все эти 4 действия сводятся к банальному ShowInf.Free; больше ничего и не надо.
Цитата:
ошибка в CreateItemBase->StringList.Add()
что в статусбаре/еррорлоге написано, и код инит функции с подствеченой строкой на которой выбивает ошибку в студию.
Цитата:
В версии 3.5.13.122 уже есть встроенный метод SendMsg(string).
В этом скрипте он почему-то не шлет сообщения в клиент.
SendMsg встроенный в пх шлет сообщения в ЛОГ пх.
__________________
L2Ext - project closed.
Последний раз редактировалось alexteam, 23.08.2009 в 15:12.
alexteam, здесь лежит скрипт под грацию финал с указанными тобой исправлениями, плюс оптимизация кода покупки/продажи. LiS, попробуй этот скрипт править под себя, мне кажется он получше будет.