Jump to content
  • 0

Custom trader cities


BetterDeadThanZed

Question

This post started as a request for information on how add traders. The question was answered, so I thought I'd update my original post with instructions on how to do this:

 

It is easier to add traders if you don't want them to have their own inventory. This tutorial will start with explaining how to add traders and have them use the same database data/inventory as other traders.

 

Using the 3D editor, create a trader city. Place units at the locations where you want to have the traders standing. I am not going to explain how to use the 3D editor. You should already know how to do that.

Open server_traders.sqf for reference and keep it open.

Open mission.sqf and add an entry for your first new trader:

_unit_13001 = objNull;
if (true) then
{
  _this = createAgent ["GUE_Soldier_1", [2550.658, 8326.5928, 2.3534577], [], 0, "CAN_COLLIDE"];
  _unit_13001 = _this;
  _this setDir 114.59087;
  _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0;  ";
  _this setUnitAbility 0.60000002;
_this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0;_this enableSimulation false;};

_unit_#### can be a unique number not being used anywhere else in mission.sqf

 

"createAgent" should match one of the traders in the server_traders.sqf file. For example:

// Ammunition Neutral P
menu_BAF_Soldier_AMG_W = [
[["Assault Rifle Ammo",480],["Light Machine Gun Ammo",481],["Pistol Ammo",484],["Shotguns and Single-shot Ammo",573],["Sniper Rifle Ammo",482],["Submachine Gun Ammo",483]],
[],
"neutral"
];

This is a neutral ammunition trader. You can select "BAF_Soldier_AMG_W" and put it in the above mission.sqf file:

_this = createAgent ["BAF_Soldier_AMG_W", [2550.658, 8326.5928, 2.3534577], [], 0, "CAN_COLLIDE"];

Change the coordinates above with the coordinates from the new trader city you created. Also change these lines:

_unit_13001 = _this;
_this setDir 114.59087;

_unit matches the _unit number you chose above and setDir is in the mission file from the trader city you created.

 

What this does is spawns a trader with the classname "BAF_Soldier_AMG_W"", which the server recognizes is the neutral ammo trader as defined in the server_traders.sqf file. Please note that I pulled this from a Panthera server_traders.sqf so yours might be different.

 

After you've added all the traders this way, feel free to copy over the other items, such as tents, boxes, etc that you created in the mission you created in the 3D editor. Place all of this above the "processInitCommands;" commands at the bottom of the server's mission.sqf.

 

Creating traders with their own inventory

 

If you want to create unique traders that do not use the inventory of an existing trader, you need to do a little more.

 

After adding the tents, boxes, etc that make up your new trader city, and adding the traders as above, you perform the following steps.

 

In server_traders.sqf, you have to add the trader. It has to use a unique classname not being used by any other trader and it can not be used by any AI that you have on the server. If, for example, you use the same classname for this new trader as that of a bandit AI in your mission system, when you come across a dead bandit, you will get a trader prompt on your scroll menu!

 

For my example, I will use "Fiona". She is a trader I added to my Napf and Panthera servers that sells and buys rare food and drinks. This is what I added to server_traders.sqf:

// Rare Food and Drinks
menu_RU_Damsel5 = [
[["Rare Food/Drinks",700]],
[],
"neutral"
];

I used the model "RU_Damsel5". When you bring up the menu, it says "Rare Food/Drinks" and it uses trader ID 700. Whatever model you use, it needs to be added to the top of server_traders.sqf:

serverTraders = ["Tanny_PMC","BAF_Soldier_AMG_W","BAF_Soldier_AAA_DDPM","CZ_Special_Forces_MG_DES_EP1","Damsel5","GUE_Commander","GUE_Woodlander1","GUE_Woodlander3","GUE_Soldier_Sab","GUE_Soldier_Pilot","GUE_Soldier_2","Soldier_PMC","Citizen2_EP1","Rita_Ensler_EP1","RU_Farmwife1","US_Soldier_Medic_EP1","USMC_Soldier_TL","USMC_SoldierS_Engineer","UN_CDF_Soldier_AAT_EP1","ValentinaVictim","UN_CDF_Soldier_MG_EP1","GUE_Soldier_1","FR_Corpsman","GUE_Soldier_AR","Dr_Hladik_EP1","RU_Villager1","Reynolds_PMC","RU_Damsel5"];

In your database, you have to add the trader:

REPLACE INTO `server_traders` (`id`, `classname`, `instance`, `status`, `static`, `desc`) VALUES (700, 'RU_Damsel5', 24, 'friendly', NULL, 'Fionas Pub');

Then you have add the items the new trader will stock:

REPLACE INTO `traders_data` (`id`, `item`, `qty`, `buy`, `sell`, `order`, `tid`, `afile`) VALUES (7589, '["ItemSodaRabbit",1]', 1000, '[6,"ItemGoldBar",1]', '[3,"ItemGoldBar",1]', 0, 700, 'trade_items');

This adds the item "ItemSodaRabbit" with a quantity of 1000, selling for 6oz gold, buying for 3oz gold, to trader ID #700.

 

I hope that helps everyone! Let me know if you have questions. Thank you for everyone that answered the original post I made which led me to making this new post!

Link to comment
Share on other sites

Recommended Posts

  • 0

I am just at a complete loss here...I have tried just about everything I can think of just to get a trader spawned in the map.

I edit my stuff just like the tut says (I have tried 3 times from scratch) yet every time I get this error:

 

23:54:12 Error in expression <ll;

if (true) then

{

_this = createUnit ["Graves_Light_DZ", [7047.814, 2821.4624>

23:54:12 Error position: <["Graves_Light_DZ", [7047.814, 2821.4624>

23:54:12 Error Missing ;

23:54:12 File z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf, line 3235

23:54:12 Error in expression <ll;

if (true) then

{

_this = createUnit ["Graves_Light_DZ", [7047.814, 2821.4624>

23:54:12 Error position: <["Graves_Light_DZ", [7047.814, 2821.4624>

23:54:12 Error Missing ;

23:54:12 File z\addons\dayz_server\missions\DayZ_Epoch_11.Chernarus\mission.sqf, line 3235

 

It says im missing a ";" but how is that ? I have just copied the other traders and changed a few things to this:

 

_unit_17002 = objNull;
if (true) then
{
  _this = createUnit ["Graves_Light_DZ", [7047.814, 2821.4624, -9.5367432e-007], [], 0, "CAN_COLLIDE"];
  _unit_17002 = _this;
  _this setDir 99.524971;
  _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0; this disableAI 'ANIM';";
  _this setUnitAbility 0.60000002;
  _this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0;_this enableSimulation false;
};

What do I have wrong here???

 

Compare it to the trader entries that are working and maybe you'll find the difference. I'm not at my computer so I can't look at my mission.sqf to help more.

Link to comment
Share on other sites

  • 0

Compare it to the trader entries that are working and maybe you'll find the difference. I'm not at my computer so I can't look at my mission.sqf to help more.

The only thing I can think of is maybe it doesn't want to use the skins I try. I have followed your tut and 3 others on youtube and you all have the same basic way of doing it but its just not working out. It must be something on my end that just isn't allowing it. 

Link to comment
Share on other sites

  • 0

If you want to send me a drop box link to your mission.sqf and server trader sqf, i could take a look but i won't be able to look into it until Sunday. I've got the rest of today and all day tomorrow working. Sometimes a second set of eyes is all you need.

I will take you up on that offer. I'll get you the files Saturday and whenever you get the free time just take a look. As much as I hate when I overlook something small, I hope I am just overlooking something small ;)

Link to comment
Share on other sites

  • 0

Hey sorry to dig up an old thread but I can't really find the answer to this anywhere.

I've got the traders working fine except for one problem, they can still be killed. I've got a trader on their own and not in a safe zone so anyone can walk up and just kill them.

Strangely enough you can still trade off their corpse so it still works but I would very much like to have the trader invincible anyway.

_unit_778 = objNull;
if (true) then
{
  __this = createAgent ["INS_Lopotev", [18236.268, 2187.2019, 0.080145337], [], 0, "CAN_COLLIDE"];
  _unit_778 = _this;
  _this setDir 50;
  _this setcaptive true; //make frendly for AI
  _this switchMove 'AmovPercMstpSlowWrflDnon'; //lower weapon (only if unit have weapon)
  _this setVehicleInit "this allowDammage false; this disableAI 'FSM'; this disableAI 'MOVE'; this disableAI 'AUTOTARGET'; this disableAI 'TARGET'; this setBehaviour 'CARELESS'; this forceSpeed 0;";
  _this setUnitAbility 0.60000002;
  _this allowDammage false; _this disableAI 'FSM'; _this disableAI 'MOVE'; _this disableAI 'AUTOTARGET'; _this disableAI 'TARGET'; _this setBehaviour 'CARELESS'; _this forceSpeed 0; _this enableSimulation false;  
};

There's the unit declaration in my mission.sqf, I was under the impression that the 'allowDammage' function controlled the AI's invincibility? As you can see both times it has been declared false yet they can still die.

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
  • Advertisement
×
×
  • Create New...