Я задал себе вопрос. Почему нет магазина в игре, в котором игрок мог бы продавать ресурсы, которые в избытке и покупать которые необходимы? Ответ оказался прост. Потому что продавца нету.
Вот я и предлагаю сделать такой, чтоб если в одиночке играешь, то можно было бы поторговать. Представьте себе что в игре есть наемники, которые купят у вас и продадут вам некоторые ресурсы.
Как это реализовано? Наемников вы не увидите потому, что они постоянно где то, что то добывают на продажу. Но можно увидеть их магазин, если хотите называйте его дом наемников. В котором отдать ресурсы и через некоторое время забрать оплату или же заказать их. Рассмотрим пример покупки 5 ingotIron за 10 casinoCoin: Подходим к блоку BlockBuyingIngotIron. Код: <block id="1451" name="BlockBuyingIngotIron"> <property name="Material" value="metal_thin" /> <property name="Shape" value="Ext3dModel" /> <property name="Mesh" value="models" /> <property name="Model" value="LootContainers/cash_register" param1="main_mesh" /> <property name="CustomIcon" value="cashRegister" /> <property class="UpgradeBlock"> <property name="ToBlock" value="BuyingBlockIngotIron" /> <property name="Item" value="casinoCoin" /> <property name="ItemCount" value="10" /> <property name="UpgradeHitCount" value="2" /> </property> <drop event="Destroy" name="scrapIron" count="1" /> </block>
В руках держим 10 casinoCoin. Код: <item id="736" name="casinoCoin">
<property name="Meshfile" value="Items/Misc/casino_coin" /> <property name="Material" value="metal" /> <property name="HoldType" value="21" />
<property name="Weight" value="4" />
<property name="Stacknumber" value="5000" />
<property class="Action1"> <property name="Class" value="Repair" /> <property name="Delay" value="0.4" /> <property name="Repair_amount" value="2" /> <property name="Upgrade_hit_offset" value="-1" /> <property name="Sound_start" value="UseActions/open_cash_register" /> <property name="Allowed_upgrade_items" value="casinoCoin" /> <property name="Restricted_upgrade_items" value="concreteMix,woodPlank,scrapIron,forgedIron,ingotSteel" /> </property>
<property class="Preview"> <property name="Zoom" value="35" /> <property name="Pos" value="0,-0.05" /> <property name="Rot" value="90,45,0" /> </property> </item>
ПКМ и 10 casinoCoin ушли в оплату, а на месте BlockBuyingIngotIron блока появился BuyingBlockIngotIron. Код: <block id="1452" name="BuyingBlockIngotIron"> <property name="Class" value="PlantGrowing" /> <property name="Material" value="metal_thin" /> <property name="Shape" value="Ext3dModel" /> <property name="Mesh" value="models" /> <property name="Model" value="LootContainers/cash_register" param1="main_mesh" /> <property name="CustomIcon" value="cashRegister" /> <property name="PlantGrowing.FertileLevel" value="0" /> <property name="PlantGrowing.Next" value="BlockBuyingIngotIron" /> <property name="PlantGrowing.GrowOnTop" value="BuyingIngotIron" /> <property name="PlantGrowing.GrowthRate" value="0.1" /> <property name="PlantGrowing.IsRandom" value="false" /> <property name="PlantGrowing.IsGrowOnTopEnabled" value="true" /> </block>
После этого ждем то время которое указано вот здесь <property name="PlantGrowing.GrowthRate" value="0.1" /> и сверху над блоком BuyingBlockIngotIron появляется BuyingIngotIron блок. Код: <block id="1450" name="BuyingIngotIron"> <property name="Class" value="Loot" /> <property name="Material" value="metal" /> <property name="Shape" value="Ext3dModel" /> <property name="Mesh" value="models" /> <property name="Model" value="LootContainers/shopping_basket" param1="main_mesh" /> <property name="Place" value="TowardsPlacer" /> <property name="CustomIcon" value="shoppingBasketEmpty" /> <property name="LootList" value="150" /> <drop event="Destroy" count="0" /> </block>
Где за содержимое отвечает вот этот код: <lootcontainer id="150" count="1" size="3,2" destroy_on_close="true" sound_open="UseActions/open_chest" sound_close="UseActions/close_chest" open_time="5" > <item name="ingotIron" count="5" /> </lootcontainer>
Вот так происходит покупка 5 ingotIron за 10 casinoCoin.
Теперь рассмотрим продажу 10 ingotIron за 20 casinoCoin. В принципе все тоже самое, только вместо BlockBuyingIngotIron блока будет BlocksaleIngotIron блок. Код: <block id="1454" name="BlocksaleIngotIron"> <property name="Material" value="metal_thin" /> <property name="Shape" value="Ext3dModel" /> <property name="Mesh" value="models" /> <property name="Model" value="LootContainers/cash_register" param1="main_mesh" /> <property name="CustomIcon" value="cashRegister" /> <property class="UpgradeBlock"> <property name="ToBlock" value="saleBlockIngotIron" /> <property name="Item" value="ingotIron" /> <property name="ItemCount" value="10" /> <property name="UpgradeHitCount" value="2" /> </property> <drop event="Destroy" name="scrapIron" count="1" /> </block>
В руках держим 10 ingotIron. Код: <item id="102" name="ingotIron">
<property name="Meshfile" value="Items/Crafting/ingotIron" /> <property name="Material" value="metal" /> <property name="HoldType" value="21" /> <property name="Weight" value="48" /> <property name="Group" value="Resources" />
<property class="Action1"> <property name="Class" value="Repair" /> <property name="Delay" value="1" /> <property name="Repair_amount" value="2" /> <property name="Upgrade_hit_offset" value="-1" /> <property name="Sound_start" value="UseActions/open_cash_register" /> <property name="Allowed_upgrade_items" value="ingotIron" /> <property name="Restricted_upgrade_items" value="concreteMix,woodPlank,scrapIron,forgedIron,ingotSteel" /> </property>
<property class="Preview"> <property name="Zoom" value="10" /> <property name="Pos" value="0,-0.2" /> <property name="Rot" value="90,45,0" /> </property> </item>
Так же ПКМ по BlocksaleIngotIron блоку и 10 ingotIron уходят за оплату, а в место BlocksaleIngotIron блока появляется saleBlockIngotIron блок. Код: <block id="1455" name="saleBlockIngotIron"> <property name="Class" value="PlantGrowing" /> <property name="Material" value="metal_thin" /> <property name="Shape" value="Ext3dModel" /> <property name="Mesh" value="models" /> <property name="Model" value="LootContainers/cash_register" param1="main_mesh" /> <property name="CustomIcon" value="cashRegister" /> <property name="PlantGrowing.FertileLevel" value="0" /> <property name="PlantGrowing.Next" value="BlocksaleIngotIron" /> <property name="PlantGrowing.GrowOnTop" value="saleIngotIron" /> <property name="PlantGrowing.GrowthRate" value="0.1" /> <property name="PlantGrowing.IsRandom" value="false" /> <property name="PlantGrowing.IsGrowOnTopEnabled" value="true" /> </block>
Ждем некоторое время и сверху saleBlockIngotIron блока появится saleIngotIron блок. Код: <block id="1453" name="saleIngotIron"> <property name="Class" value="Loot" /> <property name="Material" value="metal" /> <property name="Shape" value="Ext3dModel" /> <property name="Mesh" value="models" /> <property name="Model" value="LootContainers/shopping_basket" param1="main_mesh" /> <property name="Place" value="TowardsPlacer" /> <property name="CustomIcon" value="shoppingBasketEmpty" /> <property name="LootList" value="151" /> <drop event="Destroy" count="0" /> </block>
Где за содержимое отвечает уже вот этот код: <lootcontainer id="151" count="1" size="3,2" destroy_on_close="true" sound_open="UseActions/open_chest" sound_close="UseActions/close_chest" open_time="5" > <item name="casinoCoin" count="20" /> </lootcontainer>
Вот так происходит продажа 10 ingotIron за 20 casinoCoin.
Это что касается ресурсов, а вот если обменивать цветные вещи (оружие, бур, движок и т.д.), то там полный рандом. Продадите вы фиолетовый движок за 2500, а купите серый за те же 2500.