ViktorReznov Posted June 25, 2017 Report Share Posted June 25, 2017 This here is a modification to Zupas Advanced Trading. It did not sit well with me that on a Post-Zombie Apocalyptic that there were traders that would never run out of stock and with enough cash, you would want for nothing. No bueno, this is my first attempt to remedy this crisis. With every server startup, the economy will be set with a random variable that will modify the buy sell prices simultaneously. On startup you could be selling your gear for up to 2x its normal price and buying for half of the cost! The prices now change every 30 minutes (configurable) and with a more balanced range. This is release one, designed to put the idea out there with an example of the code. THIS IS NOT BALANCED IN ANY WAY SHAPE OR FORM AND IS HIGHLY EXPLOITABLE. Code is currently sound and not exploitable as is.BUT STILL COULD BE IF YOU CONFIGURE WRONG! This is only compatible with Zupa's single currency, although it could be modified i suppose to fit old currency system thanks to zupas built in function Still ToDo: Rebalance Trader Prices Completed, now with stock config you cant exploit the system Prices change over time Completed, thanks to this amazing community! Actual trader stock determines per trader/per item prices Additional variables that modify prices further (but in smaller and more dynamic ways (ie trader boons for expert zombie hunting) STILL THINKING Install Instructions Download https://github.com/Arstan13/AdvancedTradingEconomy Spoiler Install This all assumes you already have custom compiles.sqf and fn_selfActions.sqf. Especially considering you should have installed zupas single currency to even make use of this script! copy Advanced trading folder to dayz_code\actions\ in your mission folder (or be sure to change the paths with wherever you install it!) open your fn_selfActions.sqf and find // All Traders block of code around line 1044 for me youll see if (DZE_ConfigTrader) then { _buyV = player addAction [localize "STR_EPOCH_PLAYER_289", "\z\addons\dayz_code\actions\AdvancedTrading\init.sqf",(_traderMenu select 0), 999, true, false]; s_player_parts set [count s_player_parts,_buyV]; and change to if (DZE_ConfigTrader) then { _buyV = player addAction [localize "STR_EPOCH_PLAYER_289", "dayz_code\actions\AdvancedTrading\init.sqf",(_traderMenu select 0), 999, true, false]; s_player_parts set [count s_player_parts,_buyV]; Open your init.sqf and insert [] execVM "dayz_code\actions\AdvancedTrading\functions\adv_econFlucArray.sqf"; at the bottom open your Description.ext and insert #include "dayz_code\actions\AdvancedTrading\functions\defines.hpp" somewhere near the top, my file is heavily customized but I have it just underneath CfgSounds and working flawless. Config Options in dayz_code\actions\advancedTrading\functions\adv_econFluc.sqf youll find the code block that actually modifies the trader prices, currently working and posting this to engage the community on the idea! For Right now this is usable and not exploatable as is and just adds a little bit of flavor to traders. Open to suggestions and teaching! This was the first script I attempted to modify that was a bit more indepth than some of the other things ive tried. ALL SOURCE CODE IS NOT MY WORK, ADVANCED TRADING IS THE GENIUS OF ZUPA AND THE TRADER CONFIGS ARE ALSO COURTESY OF ZUPA! IVE MERELY MODIFIED THEM TO ENJOY A NEW FUNCTION! Straight from epoch 106 updates thread. https://epochmod.com/forum/topic/42887-arma-2-dayz-epoch-106/ [NEW] Optional variable to prevent stealing from backpacks by non-friendlies at traders. Set DZE_BackpackAntiTheft = true; in init.sqf @ebayShopper 29 [NEW] A much improved version of Zupa's Advanced Trading 2.1+ is now the default config trader menu, NOT COMPATIBLE WITH DATABASE TRADERS @icomrade @Windmolders … 37 [NEW] Door Management v3.0+ by Zupa is now included and enabled by default with variable DZE_doorManagement, see configVariables.sqf @DevZupa @Bruce-LXXVI @ebayShopper juandayz 1 Link to comment Share on other sites More sharing options...
juandayz Posted June 26, 2017 Report Share Posted June 26, 2017 @ViktorReznov awesome!! really like it. do you think you can made fluctuating prize over the server up time? I dont know how is defined DZE_ecoMult but basically something like this? DZE_ecoMult call BIS_fnc_selectRandom; waituntil {(round(time)) > 300}; if (time > 300) then { [nil,nil,rTitleText,"Prices has changes", "PLAIN",10] call RE; DZE_ecoMult call BIS_fnc_selectRandom; }; waituntil {(round(time)) > 1700}; if (time > 1700) then { [nil,nil,rTitleText,"Prices has changes", "PLAIN",10] call RE; DZE_ecoMult call BIS_fnc_selectRandom; }; ViktorReznov 1 Link to comment Share on other sites More sharing options...
ViktorReznov Posted June 26, 2017 Author Report Share Posted June 26, 2017 On 6/25/2017 at 9:31 PM, juandayz said: @ViktorReznov awesome!! really like it. do you think you can made fluctuating prize over the server up time? I dont know how is defined DZE_ecoMult but basically something like this? DZE_ecoMult call BIS_fnc_selectRandom; waituntil {(round(time)) > 300}; if (time > 300) then { [nil,nil,rTitleText,"Prices has changes", "PLAIN",10] call RE; DZE_ecoMult call BIS_fnc_selectRandom; }; waituntil {(round(time)) > 1700}; if (time > 1700) then { [nil,nil,rTitleText,"Prices has changes", "PLAIN",10] call RE; DZE_ecoMult call BIS_fnc_selectRandom; }; I was considering doing a per hour change of prices but decided to first release a static per server restart version to keep things simple, thanks for the suggestion! I will look into it! Well, that was one hell of a process with no success but ALOT learned! Much obliged for your time! @juandayz Great new things to come, stick around ladies and gents! juandayz 1 Link to comment Share on other sites More sharing options...
ViktorReznov Posted July 7, 2017 Author Report Share Posted July 7, 2017 updated juandayz 1 Link to comment Share on other sites More sharing options...
juandayz Posted July 7, 2017 Report Share Posted July 7, 2017 Just now, ViktorReznov said: updated At least Viktor you did it!!! Congratulations my friend! i read a lot of post since 2013 -2014 about peoples trying to make it. and you did it! KEEP WORKING!!! waiting for youre next mod! ViktorReznov 1 Link to comment Share on other sites More sharing options...
sjd6795 Posted November 3, 2018 Report Share Posted November 3, 2018 Seems to be working pretty good, but something I don't like is that the sell price on attachments seem to be way higher then the buy price. Players could literally just buy and sell to make huge profits. Maybe I just catch it at a bad time and always see the sell higher then the buy. I just noticed it the exact opposite just now, so maybe false alarm. Would there be a way to set it so the sell price always matches the last buy price? Link to comment Share on other sites More sharing options...
ViktorReznov Posted November 3, 2018 Author Report Share Posted November 3, 2018 6 hours ago, sjd6795 said: Seems to be working pretty good, but something I don't like is that the sell price on attachments seem to be way higher then the buy price. Players could literally just buy and sell to make huge profits. Maybe I just catch it at a bad time and always see the sell higher then the buy. I just noticed it the exact opposite just now, so maybe false alarm. Would there be a way to set it so the sell price always matches the last buy price? Yes, yes it would. I designed this to be pretty fairly balanced and had hoped i had eliminated any possibility for cheating the system. There are 2 places you could make the modifications. 1. inside the AdvancedTrading\functions\adv_econFlucArray.sqf _multArray = [ //array to hold values and keep the scaling of the market [2.0,0.5], //select 0 [BuyMult,SellMult] = select 0, select 1 [1.9,0.6], //select 1 [1.8,0.7], //select 2 [1.6,0.8], //select 3 [1.5,0.9], //select 4 [1.4,1.1], //select 5 [1.2,1.2], //select 6 [0.9,1.3], //select 7 [0.8,1.4], //select 8 [0.7,1.5], //select 9 [2.5,1.0], //select 10 [0.8,2.0] //select 11 the numbers inside the smaller arrays handle the changing of prices. The first number modifies the buy multiplier and the second handles the sell multiplier 2. This method is A LOT more drawn out and it is modifing the cfgs that handle the items that are even sold by the traders. Here is where I made the price changes. I built it against the highest sell array and tried to make it so there was never a time when selling netted more gain than buying took away. Also, I havent technically updated this yet although it still works. There were changes to Zupas advanced trading and the cfg traders that I need to update to Link to comment Share on other sites More sharing options...
sjd6795 Posted November 4, 2018 Report Share Posted November 4, 2018 Ok I will mess around with it, I've noticed selling gold 10oz sometimes sells for double the price you can buy it for. Link to comment Share on other sites More sharing options...
sjd6795 Posted November 4, 2018 Report Share Posted November 4, 2018 Found another problem, when purchasing a vehicle it does not spawn, something with publishvehicle2 in the RPT. I removed the script and vehicles seem to be spawning again. Link to comment Share on other sites More sharing options...
ViktorReznov Posted November 9, 2018 Author Report Share Posted November 9, 2018 On 11/4/2018 at 2:24 AM, sjd6795 said: Found another problem, when purchasing a vehicle it does not spawn, something with publishvehicle2 in the RPT. I removed the script and vehicles seem to be spawning again. Ah yes, i need to push a fix to my script since epoch updated. in z_at_buyItems.sqf (mpmissions, dayz_code\AdvancedTrading\functions\z_at_buyItems.sqf) if (_buyingType in DZE_tradeVehicleKeyless) then { PVDZE_veh_Publish2 = [[_dir,_location],_part_out,true,"0",_activatingPlayer,dayz_authKey]; } else { PVDZE_veh_Publish2 = [[_dir,_location],_part_out,false,_keySelected,_activatingPlayer,dayz_authKey]; }; the change is the dayz_authKey Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now