Зміст
В цій статті, ми розглянемо, як можна комбінувати джерела цінності та логічні функції, щоби створити дуже потужні джерела ціноутворення.
Опис функцій рядка цін
Спочатку ми коротко розглянемо функціональні можливості, які ви можете використовувати. Рядки ціноутворення підтримують посилання на джерело значення для певного елемента, прості математичні функції та логічні функції, такі як ifgte() та round(). Ми розберемо все це трохи докладніше, а потім покажемо кілька цікавих прикладів корисних і добре відомих рядків та пояснимо, чому вони такі, якими вони є.
Основи математики
Всі ваші операції ціноутворення можуть використовувати просту арифметику, як-от додавання, віднімання, множення та ділення. Очевидно, ви знайомі з відсотками, оскільки більшість моїх операцій використовують різні відсотки, наприклад 120% крафта, що оцінюється як 1,2*крафта.
Ви можете використовувати арифметику, щоби об’єднати різні джерела цін або змінити джерело вартості іншим джерелом вартості. Найпоширеніший спосіб використання цього – це, звичайно, просто додати вартість двох різних джерел ціноутворення. Ви також зазвичай бажаєте використовувати це, щоб отримати різні кратні того самого рядка ціни для мінімальної, звичайної та максимальної ціни. Наприклад, 120% крафта як мінімум, 200% крафта як звичайного та 500% крафта як максимуму.
Посилаючись на вартість конкретного товару
Я показав це трохи раніше в своїй останній публікації в цьому посібнику. Я використовую це в джерелі цін Expulsom. Для цього просто додайте дужку після назви джерела значення, а потім напишіть «i:», а потім itemID елемента, на який ви хочете посилатися. ItemIDs можна знайти, знайшовши елемент на wowhead, і це буде номер у веб-адресі.
Це дуже корисно, зокрема для створення рядків ціноутворення для матеріалів BoE, а також для створення рядків, які оцінюють очікувану вартість процесів із випадковими результатами, такими як розчарування та пошук.
Щоби використати його для цього, ви повинні просто створити просту формулу для очікуваної вартості, помноживши ймовірність одного з результатів на врожайність. Тож для пошуку ми б помножили ймовірність кожного дорогоцінного каменю на руду для кожного з дорогоцінних каменів, а потім додали їх усі разом.
Використання логічних функцій
TSM також має гарну кількість логічних функцій. Їх можна використовувати для визначення мінімального з двох значень, а максимальне, щоби округлити число або порівняти числа. Саме завдяки цьому можна побачити, яке більше число та просто перерахувати декілька.
Нижче наведено список усіх логічних функцій, задокументованих на веб-сайті TSM.
- min()
- max()
- first()
- check()
- convert()
- ifgt()
- ifgte()
- iflt()
- iflte()
- ifeq()
- round()
- roundup()
- rounddown()
Як бачите, список досить довгий, але, на щастя, ми можемо згрупувати їх, оскільки багато з них мають схожу функціональність.
Min() and max()
Min і max повертають мінімальне або максимальне значення. Щоби скористатися ним, просто введіть, наприклад, min(crafting,dbmarket). Це поверне мінімальне значення crafting або dbmarket. Min і max корисні в рядках ціноутворення, де потрібно порівняти два джерела. Прості приклади i 120%max(avgbuy,dbmarket). Це поверне найбільше з двох джерел + корисно в операціях перегортання, щоби гарантувати, що ви ніколи не опублікуєте свої елементи дешевше, ніж ви їх купили.
First()
First просто поверне перше дійсне джерело ціни. Ви можете використовувати це, щоби перевірити dbmarket на рідкісний елемент, а потім повернутися до regionmarketavg, якщо він не може знайти dbmarket.
Check()
Перевірка була старим способом використання логіки в стилі if, вона фактично втратила сенс через додавання явних функцій if, тому ми не будемо вдаватися в це.
Convert()
Convert візьме джерело ціни та перевірить чи можна конвертувати предмет. Це актуально для вічних із Гніву (eternals from Wrath), які можна перетворити на кристалізований вогонь або землю.
Варіації if
TSM4 має 5 різних функцій if. Усі вони оцінюються однаково. Вони приймають 3 або 4 аргументи, наприклад ifgte(a,b,c,d). Функція порівнюватиме a та b на основі логіки, яку має на увазі назва функції, а потім повертатиме значення в C, якщо оцінка є істинною, або d у будь-яких інших випадках. Для тих, хто знайомий із програмуванням, це буде звичайною справою.
Варіації if:
ifgt = Якщо більше
ifgte = Якщо більше або дорівнює
Iflt = якщо менше
iflte = Якщо менше або дорівнює
ifeq = якщо дорівнює
Ось простий приклад:
ifgt(dbmarket,2g,70%dbmarket,1c)
Ця формула порівнює dbmarket з 2 золотими. Якщо dbmarket предмета перевищує 2 золота, це буде оцінено як 70% dbmarket, інакше це буде 1 мідь. Це можна використовувати як максимальну ціну для закупівельних матеріалів, якщо ви, наприклад, хочете уникнути найдешевших.
Округлення
Круглі функції також дуже схожі. Імена майже точно говорять про те, що вони роблять. round() використовуватиме стандартні правила округлення, а roundup() та rounddown() округлятимуть в більшу або меншу сторону. Функція має два аргументи round(a,b), де a — це значення, яке потрібно округлити, а b — значення, яке потрібно округлити.
round(crafting,10s) округлить, наприклад, вартість виготовлення до найближчих 10 срібних. Округлення може бути корисним, щоби переконатися, що ваші звичайні ціни кращі, що може допомогти вам збільшити продажі.
Деякі наочні приклади
Ми вже показали вам пару прикладів вище, але тут ми розглянемо ще декілька, щоби показати вам, як це можна використовувати.
Рівень розщеплення BfA крафтових наручів
Створюємо це джерело, щоби визначити значення розщеплення при роботі з незвичайними наручами. Це буде виміряти значення величини матеріалів, які ви отримуєте з цього та включає в себе зміну для конкретних procs. Щоби зробити це, ви просто берете середнє значення пилу незвичайної наручі та множите це на шанс отримати незвичайні наручі. Потім ви помножуєте вартість матеріалів, які отримуєте з рідкісних наручів на ймовірність отримання рідкісних наручів. Потім ви додаєте їх разом.
0.85*(dbmarket(i:152875)*5.64)+0.15*1.5*(dbmarket(i:152875)+dbmarket(i:152876))
Снайперська нитка BilisOnyxia
Це дуже популярна струна, яку, ми впевнені, багато хто з вас використовують для снайперської стрілянини.
Вона дуже довга та містить багато вкладених функцій ifgt(). Що вона робить, так це те, що кожна функція ifgt() порівнює вартість предмета із встановленою кількістю золота, а потім дає відсоток, за який ви готові купити предмет. Ідея полягає в тому, що ви готові платити більше за дорогі товари щодо їхньої вартості, ніж за дешеві.
Якщо значення вище 250 000 золотих, перший ifgt буде оцінюватися як 80% від мінімальної ціни та використовуватися, якщо він нижче, він перейде до наступного ifgt та продовжиться до кінця, де будь-які значення нижче 1000g будуть проігноровані. Це дозволяє використовувати рядок для безлічі різних елементів лише з одним рядком.
Ми використовуємо аналогічну логіку в своєму рядку бойових вихованців.
ifgte(ItemQuality, 1, ifgt(minprice, 250000g, 80% minprice, ifgt(minprice, 100000g, 70% minprice, ifgt(minprice, 50000g, 60% minprice, ifgt(minprice, 10000g, 50% minprice, ifgt(minprice, 5000g, 30% мінімальна ціна, ifgt(minprice, 1000g, 10% мінімальна ціна, 0c)))))), 0c)
Висновок
Логічні функції та математика можуть використовуватись для створення дуже складних рядків ціноутворення, що допоможе вам випередити конкурентів. Вони також можуть спростити налаштування TSM, оскільки ви можете використовувати єдиний набір рядків та операцій для багатьох ринків.