рыночный ценовой класс ролевых игр

  • Автор темы Инесса1
  • 42
  • Обновлено
  • 15, May 2024
  • #1
Привет, Я работаю над игрой, над которой работал в прошлом году.

Я получаю в базе данных кое-какие материалы для алхимических ингредиентов.

Рыночный ценник дает мне завышенные цены.

Когда я оцениваю боевой мод, например +1 бой, он дает хорошую низкую цену, но мод восприятия увеличивает цену до тысяч. Вы увидите, что у меня есть все в одном файле для тестирования.

Пытаюсь увеличить цену в зависимости от количества модов и сопротивления элементам.

Если цена равна нулю, ставка зависит от редкости или бонуса к рейтингу брони. Спасибо за прочтение.
 case 1:

$marketPrice += mt_rand(35, 78);

echo $stat . ' : ' . $mod . '<br>';

break;
Код (разметка): Вывод бой : 0 магия : 0 жизненная сила: 0 восприятие : 1 рыночная цена моддинга до четной: 50 сила: 0 ловкость : 0 интеллект : 0 творчество : 0 харизма: 0 интервал (1600)

Результат неожиданный, потому что нет значений сопротивления стихиям, это должен быть только 1 модификатор статистики для добавляемого предмета. Цена должна быть меньше 100 золотых по следующим причинам:
 <?php include('php/classes/RandomHelper.php'); class MarketHelper{ // price alchemy modded item function price_alchemy_mod($stat, $mod, $marketPrice) { switch($mod) { case 0: $marketPrice += 0; echo $stat . ' : ' . $mod . '<br>'; break; case 1: $marketPrice += mt_rand(35, 78); echo $stat . ' : ' . $mod . '<br>'; break; case 2: $marketPrice += mt_rand(100, 212); echo $stat . ' : ' . $mod . '<br>'; break; case 3: $marketPrice += mt_rand(300, 1000); echo $stat . ' : ' . $mod . '<br>'; break; case 4: $marketPrice += mt_rand(1200, 5000); echo $stat . ' : ' . $mod . '<br>'; break; case 5: $marketPrice += mt_rand(6000, 10000); echo $stat . ' : ' . $mod . '<br>'; break; case 6: $marketPrice += mt_rand(30000, 100000); echo $stat . ' : ' . $mod . '<br>'; break; } if($mod >= 6) { $marketPrice += mt_rand(500000, 5000000); echo 'In above 6: ' . '<br>'; } if($marketPrice > 0) { while($marketPrice % 2 != 0) { $marketPrice++; echo 'modding market price to even: ' . $marketPrice . '<br>'; } } return $marketPrice; } // price resistance on alchemy item function price_alchemy_resistance($percent, $marketPrice) { $addedPrice = 0; switch($percent) { case 0: $addedPrice += 0; return $addedPrice; break; case 0.05: $addedPrice += 100; return $addedPrice; break; case 0.1: $addedPrice += 275; return $addedPrice; break; case 0.15: $addedPrice += 1000; return $addedPrice; break; case 0.20: $addedPrice += 2000; return $addedPrice; break; case 0.25: $addedPrice += 3000;; return $addedPrice; break; } echo 'Added Price: ' . $addedPrice . '<br>'; } function price_rarity($rarity, $marketPrice) { switch($rarity) { case 'common': $marketPrice += mt_rand(5, 10); while($marketPrice % 2 != 0) { $marketPrice++; } break; case 'uncommon': $marketPrice += mt_rand(50, 100); while($marketPrice % 2 != 0) { $marketPrice++; } break; case 'unique': $marketPrice += mt_rand(200, 400); while($marketPrice % 2 != 0) { $marketPrice++; } break; case 'rare': $marketPrice += mt_rand(500, 2000); while($marketPrice % 2 != 0) { $marketPrice++; } break; case 'extremely rare': $marketPrice += mt_rand(2000, 5000); while($marketPrice % 2 != 0) { $marketPrice++; } break; } return $marketPrice; } function price_armour_rating($rating, $marketPrice) { switch($rating) { case 0: return $marketPrice += 0; case 10: return $marketPrice += 15; break; case 20: return $marketPrice += 50; break; case 30: return $marketPrice += 250; break; case 40: return $marketPrice += 1000; break; case 50: return $marketPrice += 1250; break; } } } // // Class End Test Start // $marketHelper = new MarketHelper; $randomHelper = new RandomHelper; mt_srand($randomHelper->make_seed()); $marketPrice = 0; // Set values $_POST['combat'] = 0; $_POST['magic'] = 0; $_POST['vitality'] = 0; $_POST['perception'] = 1; $_POST['strength'] = 0; $_POST['dexterity'] = 0; $_POST['intelligence'] = 0; $_POST['creativity'] = 0; $_POST['charisma'] = 0; $_POST['holyResistance'] = 0; $_POST['fireResistance'] = 0; $_POST['waterResistance'] = 0; $_POST['iceResistance'] = 0; $_POST['earthResistance'] = 0; $_POST['airResistance'] = 0; $_POST['lightningResistance'] = 0; $_POST['darkResistance'] = 0; $_POST['rarity'] = 'common'; $_POST['armourRating'] = 0; // Price all stat mods.





$marketPrice += $marketHelper->price_alchemy_mod('combat',$_POST['combat'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('magic',$_POST['magic'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('vitality',$_POST['vitality'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('perception',$_POST['perception'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('strength',$_POST['strength'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('dexterity',$_POST['dexterity'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('intelligence',$_POST['intelligence'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('creativity',$_POST['creativity'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('charisma',$_POST['charisma'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['holyResistance'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['fireResistance'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['waterResistance'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['iceResistance'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['earthResistance'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['airResistance'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['lightningResistance'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_resistance($_POST['darkResistance'], $marketPrice); // If no mods: Price skill level as base.



if($marketPrice <= 0) { $marketPrice += $marketHelper->price_rarity($_POST['rarity'], $marketPrice); $marketPrice += $marketHelper->price_armour_rating($_POST['armourRating'], $marketPrice); } var_dump($marketPrice); ?>
Код (разметка):

Инесса1


Рег
24 Jan, 2011

Тем
1

Постов
4

Баллов
14
  • 19, May 2024
  • #2
Потому что вы используете += и не сбрасываете $marketPrice после вывода.

Т.е. — у вас есть marketPrice, который вы добавляете к следующему, следующему и так далее. Измените это:
 

$marketPrice = $marketHelper->price_alchemy_mod('combat',$_POST['combat'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('magic',$_POST['magic'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('vitality',$_POST['vitality'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('perception',$_POST['perception'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('strength',$_POST['strength'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('dexterity',$_POST['dexterity'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('intelligence',$_POST['intelligence'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('creativity',$_POST['creativity'], $marketPrice);

$marketPrice = $marketHelper->price_alchemy_mod('charisma',$_POST['charisma'], $marketPrice);

Код (разметка): к этому:
  $marketPrice += $marketHelper->price_alchemy_mod('combat',$_POST['combat'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('magic',$_POST['magic'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('vitality',$_POST['vitality'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('perception',$_POST['perception'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('strength',$_POST['strength'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('dexterity',$_POST['dexterity'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('intelligence',$_POST['intelligence'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('creativity',$_POST['creativity'], $marketPrice); $marketPrice += $marketHelper->price_alchemy_mod('charisma',$_POST['charisma'], $marketPrice); 
Код (разметка): который вернет то же значение, что и «моддинг на четность» — не совсем уверен, что это то, что вам нужно, если это так, хорошо, если нет, вам придется найти другой способ объединить значения в одно.
 

Рома Гладкий


Рег
22 Apr, 2013

Тем
0

Постов
2

Баллов
2
  • 19, May 2024
  • #3
Я думаю, что проблема МОЖЕТ заключаться в том, что вы повторяете результаты для каждого случая внутри функции alchemy_resistance(). Попробуйте присвоить это переменной, скажем, $result, и вместо этого вывести ее после переключения.

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

помогать).
 

Dantees


Рег
28 Feb, 2016

Тем
0

Постов
2

Баллов
2
  • 21, May 2024
  • #4
Я сузил ошибку, но не знаю, что ее вызывает.

Я буквально перешел к приведенному ниже коду, не комментируя все остальное.
 $marketHelper = new MarketHelper;

$randomHelper = new RandomHelper;

mt_srand($randomHelper->make_seed());

$marketPrice = 0;

// Set values

$_POST['combat'] = 0;

$_POST['magic'] = 0;

$_POST['vitality'] = 0;

$_POST['perception'] = 1;

$_POST['strength'] = 0;

$_POST['dexterity'] = 0;

$_POST['intelligence'] = 0;

$_POST['creativity'] = 0;

$_POST['charisma'] = 0;

$_POST['holyResistance'] = 0;

$_POST['fireResistance'] = 0;

$_POST['waterResistance'] = 0;

$_POST['iceResistance'] = 0;

$_POST['earthResistance'] = 0;

$_POST['airResistance'] = 0;

$_POST['lightningResistance'] = 0;

$_POST['darkResistance'] = 0;

$_POST['rarity'] = 'common';

$_POST['armourRating'] = 0;

// Price all stat mods.

$marketPrice += $marketHelper->price_alchemy_mod('combat',$_POST['combat'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('magic',$_POST['magic'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('vitality',$_POST['vitality'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('perception',$_POST['perception'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('strength',$_POST['strength'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('dexterity',$_POST['dexterity'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('intelligence',$_POST['intelligence'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('creativity',$_POST['creativity'], $marketPrice);

$marketPrice += $marketHelper->price_alchemy_mod('charisma',$_POST['charisma'], $marketPrice);

var_dump($marketPrice);

// Through the following function

function price_alchemy_mod($stat, $mod, $marketPrice)

{

switch($mod)

{

case 0:

$marketPrice += 0;

echo $stat . ' : ' . $mod . '<br>';

break;

case 1:

$marketPrice += mt_rand(35, 78);

echo $stat . ' : ' . $mod . '<br>';

break;

case 2:

$marketPrice += mt_rand(100, 212);

echo $stat . ' : ' . $mod . '<br>';

break;

case 3:

$marketPrice += mt_rand(300, 1000);

echo $stat . ' : ' . $mod . '<br>';

break;

case 4:

$marketPrice += mt_rand(1200, 5000);

echo $stat . ' : ' . $mod . '<br>';

break;

case 5:

$marketPrice += mt_rand(6000, 10000);

echo $stat . ' : ' . $mod . '<br>';

break;

case 6:

$marketPrice += mt_rand(30000, 100000);

echo $stat . ' : ' . $mod . '<br>';

break;

}

if($mod >= 6)

{

$marketPrice += mt_rand(500000, 5000000);

echo 'In above 6: ' . '<br>';

}

if($marketPrice > 0)

{

while($marketPrice % 2 != 0)

{

$marketPrice++;

echo 'modding market price to even: ' . $marketPrice . '<br>';

}

}

return $marketPrice;

}
Код (разметка): бой : 0 магия : 0 жизненная сила: 0 восприятие : 1 рыночная цена моддинга становится четной: 44 сила: 0 ловкость : 0 интеллект : 0 творчество : 0 харизма: 0 интервал (1408) Изменить: marketPrice добавляется каждый раз, когда вызывается Price_alchemy_mod(), но не знаю почему.
 

Spasichek


Рег
16 Oct, 2010

Тем
0

Постов
3

Баллов
3
Тем
49554
Комментарии
57426
Опыт
552966

Интересно