Введение в механику и логику торговли
В мире MMORPG Wild World торговля крафтовыми предметами играет ключевую роль. Здесь каждый игрок может продавать свои произведенные товары или приобретать предметы, созданные другими игроками. В данной статье мы подробно рассмотрим механику торговли, введенную систему кармы и ее влияние на ценообразование.
Основные принципы торговли
Торговля крафтовыми предметами в Wild World уникальна тем, что все доступные товары для покупки были предварительно проданы другими игроками. Это создает живую и динамичную экономическую среду, в которой каждый игрок играет свою роль.
Преимущества торговли
- Реальные игроки как продавцы и покупатели: Все предметы на рынке – это товары, созданные и проданные другими игроками.
- Введение Кармы Торговли: Эта система стимулирует игроков продавать больше и покупать с умом, обеспечивая стабильный товарооборот.
Карма торговли
Начальное значение кармы
Каждый игрок начинает с базовым показателем кармы торговли, равным 100. Этот показатель может изменяться в зависимости от действий игрока на рынке.
Изменение кармы
- Продажа крафтовых предметов: +0,02 за каждый проданный предмет.
- Покупка крафтовых предметов: -0,01 за каждый купленный предмет.
Таким образом, игроки, активно продающие свои товары, будут иметь более высокую карму, чем те, кто преимущественно покупает.
Влияние кармы на ценообразование
Карма торговли напрямую влияет на цены покупки и продажи предметов.
Формулы для ценообразования
Цена продажи:
Цена продажи = базовая цена * (1 + (карма - 100) / 200)
Цена покупки:
Цена покупки = базовая цена * (1 + (100 - карма) / 50)
Пример расчета
Карма 110:
- Цена продажи = базовая цена * 1.05 (немного выше базовой)
- Цена покупки = базовая цена * 0.8 (немного ниже базовой)
Карма 90:
- Цена продажи = базовая цена * 0.95 (немного ниже базовой)
- Цена покупки = базовая цена * 1.2 (значительно выше базовой)
Таблица примеров ценообразования
Карма | Цена продажи (Базовая цена 100) | Цена покупки (Базовая цена 100) |
---|
110 | 105 | 80 |
100 | 100 | 100 |
90 | 95 | 120 |
80 | 90 | 140 |
70 | 85 | 160 |
Реализация «кармы торговли» в коде
Миграция для добавления поля кармы в таблицу characters
<?php namespace App\Database\Migrations; use CodeIgniter\Database\Migration; class AddTradingKarmaToCharacters extends Migration { public function up() { $this->forge->addColumn('characters', [ 'trading_karma' => [ 'type' => 'FLOAT', 'default' => 100, 'null' => false ], ]); } public function down() { $this->forge->dropColumn('characters', 'trading_karma'); } }
Обновление модели Characters
<?php namespace App\Models; use CodeIgniter\Model; class CharacterModel extends Model { protected $table = 'characters'; protected $primaryKey = 'id'; protected $allowedFields = [ 'telegram_user_id', 'name', 'level', 'experience', 'health', 'tired', 'strength', 'agility', 'intellect', 'gold', 'cell_number', 'biome_id', 'trading_karma' // Добавляем новое поле ]; // Методы для работы с кармой торговли public function increaseTradingKarma(int $characterId, float $amount): bool { $character = $this->find($characterId); if (!$character) { return false; } $newKarma = $character['trading_karma'] + $amount; return $this->update($characterId, ['trading_karma' => $newKarma]); } public function decreaseTradingKarma(int $characterId, float $amount): bool { $character = $this->find($characterId); if (!$character) { return false; } $newKarma = $character['trading_karma'] - $amount; return $this->update($characterId, ['trading_karma' => $newKarma]); } }
Логика изменения кармы в торговых операциях
При продажах
<?php namespace App\Controllers\Telegram\Commands\Actions\Sell; use Longman\TelegramBot\Request; use Longman\TelegramBot\Entities\ServerResponse; use App\Models\CharacterModel; use App\Models\SalesModel; use App\Models\CraftedItemsModel; use App\Controllers\Telegram\Commands\Actions\BaseAction; class SellCraftConfirmAction extends BaseAction { protected $characterModel; protected $salesModel; protected $craftedItemsModel; public function handle(): ServerResponse { // Логика проверки и обновления кармы при продаже $chatId = $this->callbackQuery->getMessage()->getChat()->getId(); [$user, $character] = $this->getUserAndCharacter(); if (!$character) { return Request::sendMessage([ 'chat_id' => $chatId, 'text' => 'Персонаж не найден.', ]); } // Извлечение данных из колбека $callbackData = $this->callbackQuery->getData(); list($action, $quantity, $craftedItemId) = explode('_', $callbackData); // Логика продажи предметов... // Увеличение кармы $this->characterModel->increaseTradingKarma($character['id'], 0.02 * $quantity); // Отправка сообщения игроку $text = "Поздравляем с продажей! Ваша карма торговли увеличилась."; return Request::sendMessage([ 'chat_id' => $chatId, 'text' => $text, 'parse_mode' => 'Markdown', ]); } }
При покупках
<?php namespace App\Controllers\Telegram\Commands\Actions\Buy; use Longman\TelegramBot\Request; use Longman\TelegramBot\Entities\ServerResponse; use App\Models\CharacterModel; use App\Models\SalesModel; use App\Models\CraftedItemsModel; use App\Controllers\Telegram\Commands\Actions\BaseAction; class BuyCraftConfirmAction extends BaseAction { protected $characterModel; protected $salesModel; protected $craftedItemsModel; public function handle(): ServerResponse { // Логика проверки и обновления кармы при покупке $chatId = $this->callbackQuery->getMessage()->getChat()->getId(); [$user, $character] = $this->getUserAndCharacter(); if (!$character) { return Request::sendMessage([ 'chat_id' => $chatId, 'text' => 'Персонаж не найден.', ]); } // Извлечение данных из колбека $callbackData = $this->callbackQuery->getData(); list($action, $quantity, $craftedItemId) = explode('_', $callbackData); // Логика покупки предметов... // Уменьшение кармы $this->characterModel->decreaseTradingKarma($character['id'], 0.01 * $quantity); // Отправка сообщения игроку $text = "Поздравляем с покупкой! Ваша карма торговли уменьшилась."; return Request::sendMessage([ 'chat_id' => $chatId, 'text' => $text, 'parse_mode' => 'Markdown', ]); } }
Заключение
Система торговли крафтовыми предметами в Wild World – это увлекательная и динамичная часть игры, которая позволяет игрокам взаимодействовать друг с другом, улучшая свои навыки торговли и стратегии. Введение кармы торговли стимулирует игроков продавать больше и покупать осознанно, что обеспечивает стабильный и живой рынок. Применяя предложенные механики и формулы ценообразования, игроки смогут получить максимум выгоды и наслаждения от процесса торговли в Wild World.