WORLD OF WARCRAFT

Тема: В помощь начинающим торговцам: логические функции в TradeSkillMaster  (Прочитано 4668 раз)

0 Пользователей и 1 Гость просматривают эту тему.

noob-club.ru

  • noob-club.ru
  • Завсегдатай
  • *
  • Сообщений: 793
  • Параноид



TradeSkillMaster – это модификация, которая может здорово облегчить вашу торговлю на аукционе. Модификация обладает внушительным инструментарием и позволяет индивидуально настроить вашу стратегию по продажам и покупкам. В этой статье мы разберём некоторые логические функции, благодаря которым вы сможете сделать использование TSM максимально удобным.:cut:

Этот материал потребует базового понимания функций TSM; если вы совсем не знакомы с этой модификацией, то сперва ознакомьтесь с гайдом для начинающих.

Для начала поговорим о переменных.
  • Dbmarket – одна из основных переменных, которая будет использоваться в функциях. Алгоритм, стоящий за подсчётом этой переменной довольно сложен, однако, в общем и целом можно сказать, что это средняя цена по рынку за последние 14 дней.
  • Dbhistorical – эта переменная очень близка к предыдущей, только в отличиее от неё подсчитывает цену, опираясь на данные за 90 дней, а не за 14.
  • Dbregionmarketavg – эта переменная представляет собой среднее значение Dbmarket по всему вашему региону. Это может быть полезно при продаже BoE-предметов или же питомцев.
  • avgbuy – эта переменная показывает среднюю цену успешных продаж лота.
Теперь перейдёт к функциям.

Min()

Как можно догадаться из названия, функция сравнивает параметры и возвращает наименьший из них.

Стандартный шаблон этой в функции для выявления цены на материалы выглядит следующим образом:

min(dbmarket, crafting, vendorbuy, convert(dbmarket))

Давайте разберём функцию на конкретном примере, оценив Зачарованный сумрачный шёлк.


  • Dbmarket – первый параметр функции, средняя цена по рынку за 14 дней – 167 золотых.
  • Crafting – второй параметр; цена создания материала с помощью профессии – 23 золотых.
  • Vendorbuy – третий параметр; цена покупки предмета у торговца, в данном случае прочерк, т.к. этот предмет у торговцев не продаётся.
  • Convert – четвёртый параметр; показывает стоимость предмета при его переработке: измельчении, просеивании. В данном случае предмет переработать нельзя, поэтому здесь тоже будет прочерк.
Итого, после подстановки чисел функция будет выглядеть следующим образом: min(167, 23, –, –).
Это значит, что при подсчёте стоимости затрат при создании каких-либо предметов в Портняжном деле, цена Зачарованного сумрачного шёлка будет считаться равной 23 золотым.


Max()

Эта функция, как несложно догадаться, является противоположностью предыдущей и подсчитывает максимальную цену, сравнивая введённые параметры.

Пример: max(130% avgbuy, 70% dbmarket)

В данном примере функция сравнивает среднюю цену успешных продаж (с 30% наценкой) и среднюю цену выставленных на аукционе лотов (с 30% скидкой).

На первый взгляд может показаться, что это примерно одно и то же, однако, функция не лишена пользы. Основной смысл такой проверки – защититься от резких ценовых скачков, когда товар, бывший в относительно свободном доступе, резко стал дефицитным. Такое бывает при выходе нового дополнения, когда игроки начинают заниматься новым контентом, и различные предметы из предыдущего дополнения начинают резко набирать в цене.


First()

First (A, B, C, D) – Эта функция по очереди проверяет параметры до тех пор, пока не найдёт параметр, являющийся валидным. Для чего это нужно? Помимо базовых параметров (например, dbmarket) вы можете использовать довольно специфичные переменные, которые помогут вам более гибко подходить к ценообразованию.

Например, параметр 'smartavgbuy' показывает цену последних продаж предмета, при условии, если он есть у вас в инвентаре. Это полезно для каких-либо редких и дорогих материалов, таких как Сущность Прародителей.

Функция вида first(smartavgbuy, dbmarket) сперва проверит параметр smartavgbuy, и если в вашем инвентаре есть Сущность Прародителей, то функция возвратит значение параметра smartavgbuy. Если же в вашем инвентаре нет Сущности, то этот параметр будет пустым и функция перейдёт к следующему параметру – dbmarket; и в этом случае цена на Сущность будет считаться в соответствии со средней ценой на рынке за последние 14 дней.

Другой пример параметра, значение которого не всегда будет валидным: dbminbuyout – это цена самого дешёвого лота, доступного для выкупа. В данном примере функция first(dbminbuyout, dbmarket) сперва проверит есть ли в наличии товары, доступные для выкупа; и если да, то цена будет равна этому значению. Если же товаров, доступных для выкупа нет, то цена будет установена в соответствии с параметром dbmarket.


Avg()

Это функция довольно простая и является вычислением среднего арифметического между параметрами: avg(5, 200, 11) = 72


Эта функция может быть полезна, если вы занимаетесь торговлей сразу на нескольких игровых мирах. Например, функция вида avg(dbmarket, dbregionmarketavg) покажет вам усреднённое значение между ценой вашего аукциона (2373 золотых) и ценой по всем аукционам вашего региона (5812 золотых). Это может быть полезно для понимания истинной ценности той или иной вещи, цена на которую может значительно отличаться от сервера к серверу. В этом примере, среднее арифметиеское будет равно 4092 золотых.


Round()

Эта функция округления, доступная в трёх видах:
  • Базовый: обычное округление.
    • Round(6.4) = 6.
    • Round(6.6) = 7.
  • Округление вверх – Roundup.
    • Roundup(6.5) = 7.
    • Roundup(6.1) = 7.
  • Округление вниз – Rounddown.
    • Rounddown(6.9) = 6.
    • Rounddown(6.5) = 6.
Эта функция может быть полезна при установке настроек количества товаров, которые вы будете выставлять на продажу. Например, алхимические зелья/эликсиры. В TSM есть параметр dbregionsoldperday, значение которого равно показателю продаж за сутки. Это значение зачастую бывает дробным, и в этом случае будет не лишним воспользоваться функцией округления, чтобы избежать потенциальных ошибок в работе TSM: roundup(dbregionsoldperday).



Функция сравнения

Функцию сравнения можно разделить на 4 категории:
  • ifgt() – больше чем (greater than).
  • ifgte() – больше или равно (greater than or equal to).
  • iflt() – меньше чем (less than).
  • iflte() – меньше или равно (less than or equal to).
У функций одинаковый формат вида ifgt( A, B, X, Y): если А больше чем B, то берём значение Х, в противном случае берём значение Y.

Обратимся к примеру. В предыдущем пункте мы задавали количества зелий, которые мы будем создавать на продажу.


TSM составит список зелий, которые нужно создать. При наведении на каждое зелье обратим внимание на параметр Region Sale Rate – соотношение выставленных зелий к проданным. В зависимости от этого соотношения мы будем решать, стоит ли вообще создавать и выкладывать зелья или нет, т.е. если этот параметр слишком низок, то лучше не тратить время и ресурсы на эти конкретные зелья.


Удалять строчку из этого списка можно вручную, просматриваться параметр Region Sale Rate; либо можно написать функцию, которая будет оценивать упомянутый параметр, и если он больше, чем 0.15, то такие зелья мы создавать будем; если же он меньше, то от создания этих зелий мы воздержимся.

У нас получится функция вида ifgte(dbregionsalerate, 0.15, 200, 0)

Рассмотрим её чуть подробнее.
  • Функция сравнивает первые два параметра.
  • Наш первый параметр – переменная dbregionsalerate – соотношение выставленных товаров к проданным.
  • Наш второй параметр – число, заданное вручную – 0.15.
  • Т.к. мы использовали второй подвид функции (больше или равно), то если значение dbregionsalerate больше или равно 0.15, то TSM поставит в очередь на создание 200 зелий.
  • Если dbregionsalerate меньше, чем 0.15, то TSM поставит в очередь на создание 0 зелий, т.е. удалит эту позицию списка зелий, которые мы хотим создать.
Применив функцию и обновив список, мы получим перечень зелий, показатель продаж которых больше или равен 0.15; TSM в соответствии с функцией предлагает нам создать по 200 штук каждого зелья.

Теперь округлим количество зелий, которые мы хотим создать, а именно, подставим в наш пример формулу из прошлого пункта: вместо "200" впишем в формулу "roundup(dbregionsoldperday)". Таким образом финальный вариант нашей функции будет выглядеть следующим образом: ifgte(dbregionsalerate, 0.15, roundup(dbregionsoldperday), 0)


Как видно, список зелий к созданию обновился, и теперь для каждой позиции предлагается не фиксированное количество, а число, соответствующее показателю продаж за день.

Надеемся, с помощью этого материала вы сможете увеличить свои продажи, или хотя бы сделать использование аукциона более удобным. Но не забывайте, в случае, если вам по-прежнему не хватает золота, вы всегда можете обратиться к услугам FunPay. FunPay – совмещайте приятное с полезным.


 

rogomet1

  • Завсегдатай
  • **
  • Сообщений: 495

  • Варкрафт: +
    • Имя: Паладин
    • Класс: Paladin
    • Сервер: Paladin
  • Рейтинг:1 (+1 | 0)
чётко, спасибо фанпей!

DD

  • Завсегдатай
  • **
  • Сообщений: 325
  • Рейтинг:0 (+0 | 0)
С удовольствием пользовался TCM до перехода его на 4-ю версию, тогда это был удобный и гибкий инструмент, сейчас же это слишком громоздкая настройка с кучей лишних блоков которые невозможно отключить. Ну после ввода близами новой формы аука вполне аукционатора хватает.

 

закрыть