Jump to content

Recommended Posts

What does this script do?

  • Title says it all - transfer currency from your bank to any other online player's bank
  • Takes in account player's bank limit and 'donatorlist' that Zupa made in variables.sqf
  • You can activate this script anywhere you want, just call out it's main file transfer_dialog.sqf

 

 

 

What do I need for this addon?

  • Zupa's + Soul's

 

 

 

Download

 

Download available here! [GitHub]

 

Mirror link available here! [upload.ee]

 

 

 

Screenshots

 

money_transfer_screencap.jpg

 

 

 

Installation

 

  1. Download and extract the files from link provided above
     
  2. UnPbo/extract your mission's .pbo file
     
  3. Copy the transfer folder to: \YourMission\gold\
    So the path should look something like this: \Arma 2 Operation Arrowhead\MPMissions\DayZ_Epoch_11.Chernarus\gold\transfer\

     
  4. Open file description.ext from your mission's root folder

    Add to the bottom of the file:

    // Single Currency money transfer addon by Rocu
    #include "gold\transfer\transfer_dialog.hpp"
    Save & close description.ext
     
  5. Open your custom fn_selfActions.sqf (you should have a custom one because Single Currency's installation requires it)

    Find:

    if (s_bank_dialog2 < 0) then {
    	s_bank_dialog2 = player addAction ["Bank ATM", "gold\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
    };
    Add below:
    if (s_bank_dialog3 < 0) then {
    	s_bank_dialog3 = player addAction ["Transfer Money", "gold\transfer\transfer_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
    };
    
    Find:
    } else {
    	player removeAction s_bank_dialog2;
    	s_bank_dialog2 = -1;
    

    Add below:

    player removeAction s_bank_dialog3;
    s_bank_dialog3 = -1;
    

    Find:

    player removeAction s_bank_dialog;
    s_bank_dialog = -1;
    player removeAction s_bank_dialog2;
    s_bank_dialog2 = -1;
    

    Add below:

    player removeAction s_bank_dialog3;
    s_bank_dialog3 = -1;
    
  6. Re-pack your mission folder

 

Note! When making a transition the script asks for confirmation (see screenshots). If you want to disable that second confirmation window follow these steps:

 

Open transfer_dialog.sqf and change this:

ConfirmTransfer = true;

to this:

ConfirmTransfer = false;

That's it!

 

 

For Infistar's Anti-Hack users, you might need to add this as well:

 

 
Open AHconfig.sqf
 
Find:
_ALLOWED_Dialogs = [-1,106,2200,6900,6901,6902,6903,420420,41144,711194];
 
Add ",8101" at the end so it looks like this:
 
_ALLOWED_Dialogs = [-1,106,2200,6900,6901,6902,6903,420420,41144,711194,8101];

Thanks to Jutka for this!

 

 

 

 

 

Additional notes

 

Technically the transition window can be called from anywhere, as mentioned above. You just need to call the main script transfer_dialog.sqf. For example for those who have 'Online banking' enabled at their safes you can add this there as well. Admins can just activate it from their admin tools, etc etc.

 

And as usual, make back-ups of everything when you apply new scripts. 

Share this post


Link to post
Share on other sites

Good job with the script man, but I don't think I'll be using this scripts since it reduces the danger of holding money. But It would be a great concept if you could get it in the Donator section for Single Currency.

 

Yep this would be perfect for PvE servers.  Not so much for PvP haha.  Gotta make people scared to carry lots of coins!

Share this post


Link to post
Share on other sites

Good job with the script man, but I don't think I'll be using this scripts since it reduces the danger of holding money. But It would be a great concept if you could get it in the Donator section for Single Currency.

 

U have a chernarus central bank ^^

 

So all money stays in that safezone? ^^ 

 

Besides, if you link this script to only certain places/objects. It's the same danger level as give money.

Share this post


Link to post
Share on other sites

I dont see the fuzz about this dange level thing.

 

It's clearly linked to the atm stands. Since these are probably in a safezone as your servers anyways. Then it's acactually the same as give money. 

Share this post


Link to post
Share on other sites

I dont see the fuzz about this no danger level 

 

It's clearly linked to the atm stands. Since these are probably in a safezone as your servers anyways. Then it's acactually the same as give money. 

 

Damn, wanted to edit instead of quote

Share this post


Link to post
Share on other sites

I dont see the fuzz about this dange level thing.

 

It's clearly linked to the atm stands. Since these are probably in a safezone as your servers anyways. Then it's acactually the same as give money. 

 

Well yeah pretty much. Depends how your server is set up.

 

If one were to use the default bank locations (which aren't in trader cities) and if you were to make a trade with someone you'd first have to travel to the ATM, get the money out, and then meet them in trader city. Meanwhile you're carrying large amounts of currency on the way. But then again you could just meet up in the ATM's safe zone so yeah...

 

I don't think the 'decrease of danger' is too major for this addon to be insufficient. Most players care about the comfort and accessibility more than making the game slightly harder. (Ironically enough, my personal gameplay is the exact opposite)

Share this post


Link to post
Share on other sites

I dont see the fuzz about this dange level thing.

 

It's clearly linked to the atm stands. Since these are probably in a safezone as your servers anyways. Then it's acactually the same as give money. 

Oh I thought of something different. I see what you've done with the script now.

A little confused on my end.. :S

Share this post


Link to post
Share on other sites

I've solved this issue by making banking only do-able at a safe.

Then set up No-Build zones using the safezone sensors.

This essentually gives people that 50 meter safe zone, then another 500 meters around that is a non building zone.

Share this post


Link to post
Share on other sites

This is removing the current bank money from the bank account and replacing it with the amount tranfered

 

EX: I gave my 10k to my friend that had 20k, now he only has 10k

Share this post


Link to post
Share on other sites

This is removing the current bank money from the bank account and replacing it with the amount tranfered

 

EX: I gave my 10k to my friend that had 20k, now he only has 10k

 

The script works fine. Has been on my public server for about 3 weeks now.

At first glance, the problem you described seems like it's trying to set money instead of add, am I right? The part of the code that transfers money looks like this:

_target setVariable["bankMoney",_targetBankBalance + _targetMoney, true];

As you can see there's not much that can go wrong here (bankmoney = bank balance + the amount). So the script is working fine, must be a problem @ your end.

 

My first thoughts are that it can't get the player's current bank balance so it's adding the amount to a number 0. That can be caused by several things:

  • Are you sure your bank's variable name is "bankMoney"?
  • Are you sure you have Soul's V1 HiveExt.dll + all the updated files he included?
  • What happens in the database during all this?

    Try this: check the player's bank balance in DB, then transfer the money, during the transfer check it again and a minute after the transfer check it again. See if the numbers add up.

Share this post


Link to post
Share on other sites

Hey man getting this error:

 

ErrorMessage: File mpmissions\DayZ_Epoch_16.Panthera2\gold\transfer\transfer_dialog.hpp, line 8: /BankTransferDialog/controlsBackground.BankTransferTitleBackground: Undefined base class 'Life_RscText'

 

Any ideas?

Thanks

Share this post


Link to post
Share on other sites

Hey man getting this error:

 

ErrorMessage: File mpmissions\DayZ_Epoch_16.Panthera2\gold\transfer\transfer_dialog.hpp, line 8: /BankTransferDialog/controlsBackground.BankTransferTitleBackground: Undefined base class 'Life_RscText'

 

Any ideas?

Thanks

 

I think you're missing some GUI classes. This script was made to work with Zupa's original GUI files, if you don't have those it won't work. But you can just copy the missing classes over if you want.

Share this post


Link to post
Share on other sites

Finally got back around to workin on this. Turned out the issue wasn't that I was missing classes, but that the classes from your transfer_dialog.hpp were looking for gui items that didnt exsist in my build of SC.

to fix just download the SC files from Zupa and copy the gui folder to your server root.

 

Thanks again mate!

Share this post


Link to post
Share on other sites

Finally got back around to workin on this. Turned out the issue wasn't that I was missing classes, but that the classes from your transfer_dialog.hpp were looking for gui items that didnt exsist in my build of SC.

to fix just download the SC files from Zupa and copy the gui folder to your server root.

 

Thanks again mate!

 

Aah okay, good to know. Good thing you got it fixed.

Share this post


Link to post
Share on other sites

Having another issue now, the transfer dialog works fine for me, but when any NON admin tries to use it, the dialog pops up and instantly disappears.

 

EDIT: Seems to be an issue related to InfiSTAR... now to figure out how to make them play nice.

 

EDIT FIXED: In the infiSTAR AHconfig.sqf the dialog needs to be added to the _ALLOWED_Dialogs list

 

Thanks again!

Share this post


Link to post
Share on other sites

Having another issue now, the transfer dialog works fine for me, but when any NON admin tries to use it, the dialog pops up and instantly disappears.

 

If you're using Infistar AH I belive you have to add the dialog ID to the exceptions or something like that. Not sure but I believe it's something like that. I don't have Infistar's AH myself so I couldn't test it out.

Share this post


Link to post
Share on other sites

If you're using Infistar AH I belive you have to add the dialog ID to the exceptions or something like that. Not sure but I believe it's something like that. I don't have Infistar's AH myself so I couldn't test it out.

 

Just to confirm that that is indeed what solves the issue with the blinking menu.

To be precise:

 

Open AHconfig.sqf

 

Find:

_ALLOWED_Dialogs = [-1,106,2200,6900,6901,6902,6903,420420,41144,711194];

Add ",8101" at the end so it looks like this:

 

_ALLOWED_Dialogs = [-1,106,2200,6900,6901,6902,6903,420420,41144,711194,8101];

Share this post


Link to post
Share on other sites

Hi,

 

i use Single Currency+Bank and the Banker Npc.The Dialog for transfer shows up, but he shows me 0 Zupa Coins to my bank account, but i have some coins to my account !

 

This is my fn_selAction at the bottom :

	_banker = _cursorTarget getVariable["BankerBot",0];

if((_banker == 1) and (player distance _cursorTarget < 3)) then {		
		if (s_bank_dialog9 < 0) then {
			s_bank_dialog9 = player addAction ["Bank Menu", "gold\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
		};
if (s_bank_dialog3 < 0) then {
	s_bank_dialog3 = player addAction ["Transfer Money", "gold\transfer\transfer_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
};		
	} else {		
		player removeAction s_bank_dialog9;
		s_bank_dialog9 = -1;
	};

Any Ideas ?

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By MessiGamer
      Alright!
      i tried to instal this five times. clean installation without other scripts. I see this work without battleye, but with it I get three restrictions. I tried to fix this with bfe.marma.io because I'm noob. but I get another constraint that I can not fix.
      this log are pure clean install without my modifications: i have edited for not showing my useless data.     .  
      RPT.log 
      script.log
      server.log
      script.txt
      //new2 5 addAction !raddAction !"\"addAction\", " !", \"\\z\\addons\\dayz_code\\" !"],DZE_build_vector_file,[vectorActionState," 5 addBackpack !"addBackpackCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n} count _objWpnTypes;" !"addBackpack _item;\n};\n};\nformat[localize \"str_c" !"case 3: {_holder addBackpackCargoGlobal [_item,_amount];};\n};\n\n\n" !"}) then {\n_newUnit addBackpack _newBackpackType;\n\nd" !"(_this select 0)) then\n{\n(_this select 0) addBackpack (_x select 1);\n};\n};" !"(_this select 0) addBackpackCargoGlobal [_x select 1, 1];\n};\n};\n} cou" !"addBackpack _backpackType; \ndayz_myBackpack = unitBackpack player;\n\n\n\n_backpackWpnT" !"};\n} count _wpns;\n\nif (_bcpk != \"\") then {\nplayer addBackpack" !"1 == \"trade_backpacks\") then {\nDZE_myVehicle addBackpack" !"7 addBackpackCargoGlobal [_create,_qty];\n};\nif (surfaceIsWater" !"case 5: {_item addBackpackCargoGlobal [_itemOut,_countOut]};\n};\n} else" 5 addMagazine !raddMagazine !"\"addMagazine\", " !"if (isClass (configfile >> \"cfgmagazines\" >> (_item))) then {_unit addMagazine _item;};\n};\n};\n};\n};" !"_vehicle addMagazineTurret [_ammo,_turret];\nplayer removeMagazine" !"if (dayz_actionInProgress) exitWith {" !"addMagazine _x;\n};\n} foreach _items;\nformat[loc" !"addMagazine 'Hatchet_Swing'" !"addMagazine \"ItemAntibiotic\" + str(_remain" !"sumeDrop\") == 0) then\n{\nplayer addMagazine" !"ion) do {\ncase \"CfgWeapons\":\n{\nplayer addWeapon _item;\n};\ncase \"CfgMagazines\":\n{\nplayer addMagazine" !"addMagazine [\"12Rnd_Quiver_Wood\",_qty_quiv" !" >> \"containerEmpty\")" !"plant) select 1;\n{\n_item addMagazine" !"addMagazineCargoGlobal [_itemtodrop,1];\n\nformat[localize \"str_f" !"addMagazine _attachment;\n\n\n(findDisplay 10" !"addMagazine getText (configFile >> \"CfgMagazines\" >> _x >> _water" !"};\n};\n\n\nswitch _type do {\ncase 1: {_holder addMagazine" !"do {\n_animalbody addMagazine _rawfoodtype" !"addMagazine _item;\n};\n};\n_idc = _idc" !"_newUnit addMagazine [_x select 0,_x select 1]" !"addMagazine _x } count MeleeMagazines;\n} e" !"_meleeNum < 1) then {\nplayer addMagazine" !"addMagazine _qtyRemaining;\n};\n};\ntrue" !"bag\";\n};\n};\n(_this select 0) addMagazine" !"addMagazineCargoGlobal [_item, 1];\nif (surfaceIsWater (_this s" !"addMagazine \"wholeBloodBagBNEG\";\n};\n};" !"_qty > 0) then {\n_firePlace addMagazine" !"ONEG\" }; \n};\ndayz_myBackpack addMagazine" !"addMagazine _x;\n_countmags = _countmags +1;\n};\n} count _gmag" !"E\"];\n_lootpile addMagazineCargoGlobal [\"TrapBear\", 1]" !"With\n{\nplayer addMagazine (_this select 1" !"lder addMagazineCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n};\n} co" !"soldItem\"];\n{\n_object addMagazine" !"systemChat localize \"STR_EPOCH_TRADE_" !"if (_silver_1oz > 0) then {\nif (_silver_1oz == 1) then {\nplayer addMagazine" 5 addWeapon !raddWeapon !"\"addWeapon\", " !"if (isClass (configfile >> \"cfgweapons\" >> (_item))) then {_unit addWeapon _item;}\nelse" !",0]] call dayz_NutritionSystem;\n" !"Remove) == 1}) then {\nplayer addWeapon _create;" !"Display 0;\n\n\nif (_weaponInUse) then\n{\n_muz" !"failChance) then {\nswitch (_selection) do {\ncase \"CfgWeapons\":\n{\nplayer addWeapon" !"addWeapon _fixedItem;\nformat[localize \"str_f" !"_wepcounts = (getWeaponCargo _plant) select 1;\n{\n_item addWeapon" !"addWeapon _repair;\n} else {\n\n[_repair" !"player addWeapon dayz_onBack\n] select 0;\n};\n\n" !"player addWeapon _addWeapon;\n\nif (vehicle player != player) then {\n_display = find" !"};\n};\n\n\nswitch _type do {\ncase 1: {_holder addMagazineCargoGlobal [_item,_amount];};\ncase 2: {_holder addWeapon" !"l fn_chance) then {\nplayer removeWeapon _x;\nplayer addWeapon _rem" !"else {\n_body addWeapon dayz_onBack;\n};\n};\n\n\n_infect" !"\" >> _x)) then {\nplayer addWeapon _x;\n};\n} count _wpns;\n};" !"lder addWeaponCargoGlobal [_x,(_objWpnQty select _counter)];\n_counter = _counter + 1;\n} co" !"WpnQtys = [];\nif (count _backpackWpn > 0) then {\n_backpackWpnTypes = _backpackWpn sel" !"addWeapon (\"Item\"+str(_remain)+\"Matchbox" !"{\nswitch (_x select 0) do\n{\ncase 2:\n{\n(_this select 0) addWeapon" !"E\"];\n_vehicle addWeaponCargoGlobal [_lootInfo select 1, 1" !"addWeaponCargoGlobal [_bcpkWpn, 1];\n};\n};\n};\n};" !"s;\n};\n\n\nplayer addWeapon \"Loot" !"With\n{\nplayer addWeapon (_this select 1" !"\") then {\n_newUnit addWeapon _secweapon;\n};\n\n" !"soldItem\"];\n{\n_object addWeapon" !"then {\nsystemChat format[localize \"STR_EPOCH_" !"DuplicateTool;\n} else {\nplayer addWeapon" 5 allDead !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" 5 allGroups !"publicVariableServer \"PVDZ_Server_UpdateGroup\";\n};\n} count allGroups;" 5 allMissionObjects !"[_x,2,0,false,false] spawn BIS_Effects_Burn;\n};\n} count allMissionObjects \"SpawnableWreck\";" 5 allowDammage 5 allUnits !"} count allUnits;\nlbSort _playerList;" !"if (getPlayerUID _x == _this) exitWith {\n_player = _x;\n};\n} count allUnits;" !"owner _x publicVariableClient \"PVDZ_groupInvite\";\n};\n} count allUnits;" 5 attachTo !"(_variation * 2)) - _variation)];\n_bolt attachTo [_hitObject,_val,_hitMemoryPt];" !"player playActionNow \"PutDown\";\nuiSleep 2;\n_flare attachTo [player,[0,0,0],\"granat2\"];" !"tchmove \"ainjpfalmstpsnonwrfldnon_carried_still\";\n_dragee attachto [_unit,[-0.2, 0.2, 0]];" !"_source setDropInterval 0.02;\n_point attachTo [_unit,_modelPos,_wound];" !" attachto [_v,[0,0,0],\"destructionEffect" !"publicVariable \"PVDZ_drg_RaDrag\";\n\n_dragee attachto [_unit,[0.1, 1.01, 0]];" !="_l1 attachTo [_lh,[0,0,0],\"light\"];" !"_objectHelper attachTo [player,_offset];" !"_object attachTo [player,_offset];\n\n_position = getPosATL _object;" !="_vehicle attachTo [_liftHeli,[0,0,-7]];" !="_obj attachTo [_axis];" !"_objectSnapGizmo attachTo [_object,[_x select 0,_x select 1,_x select 2]];" !="_vehicle attachTo [_towTruck,[1.3,-2,2.3]];" !"localize \"STR_EPOCH_ACTIONS_ATTACHTOHELI\"," 5 buttonSetAction 5 callExtension 5 camCreate !"camCreate (player modeltoWorld [0,0,2]);\n0.2 fadeSound 0.1;\nDayz_" !"_body;\n_playerID = getPlayerUID player;\n\n\n_camera = \"camera\" camCreate _death" !="_camera = \"camera\" camCreate [12222.323, 3415.7791, -0.059190542]" 5 cameraEffect !"0.2 fadeSound 0.1;\nDayz_BuildCamera cameraeffect [\"External\", \"TOP\"];" !"cameraEffect [\"Internal\",\"TOP\"];\n_camera camSetTarget _deathPos;\n_camera camSetPos [_deathPos select" !"r_Simulation\";\n\n_camera cameraEffect [\"Terminate" !"cameraEffect [\"internal\",\"back\"]\n\n_camera camPrepareTarget [6433.5" 5 closeDisplay !"'closeDisplay'" !"closeDisplay 0" !"closeDisplay 2" !"if (!isNil \"closeDisplay\") then {" 1 compile !"ca\\communityconfiguration" !"ca\\Data\\" !"ca\\missions" !"ca\\modules" !"ca\\ui\\" !"ca\\Warfare2\\" !"scriptName \"Functions\\systems\\fn_inv" !"scriptName \"MP\\data\\script" !"code = compile preprocessFileLineNumbers (BIS_PathMPscriptCommands" !"t = missionConfigFile >> \"onMinimapScript" !="_this call (call compile GetText (configFile >> \"CfgAmmo\" >> _amm >> \"muzzleEffect\"));" !"z\\addons\\dayz_code\\" !"_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};\n_pos set [3" !"{ _x set [1, compile (_x select 1)]; }" !"silver_1oz_b);\n\n{ \nif (!isNil {call compile" !"Var = compile format[\"epoch_death_board_record_" 5 createAgent !="_agent = createAgent [_type, _position, [], _radius, \"CAN_COLLIDE\"];" !="_agent = if (_type == \"Pastor\") then {createAgent [_type, _Pos, [], 0, \"NONE\"]} else {createAgent [_type, _Pos, [], 0, \"FORM\"]};" !="_dog = createAgent [_type, _Pos, [], 0, \"NONE\"];" 5 createDialog !="_region = createDialog \"RscDisplaySpawnSelecter\";" !="_gender = createDialog 'RscDisplayGenderSelect';" !="_dialog = createDialog \"bloodTest\";" !="createDialog 'RscDisplayCraftingMenu';" !="createDialog \"DAYZ_PADLOCK\";" !"createDialog 'horde_journal_" !"Z_ResetContainer = true;\ncreateDialog \"AdvancedTrading\";" !"createDialog \"DoorManagement\";\ncall DoorNearbyHumans;" !="createDialog \"ComboLockUI\";" !"createdialog \"PlotManagement\";\ncall PlotNearbyHumans;" !"_trader_data = (_this select 3);\n\n_dialog = createdialog \"TraderDialog\";" !"_ok = createdialog \"KeypadUI\";" !"EpochDeathBoardLoad = {\ncreatedialog \"EpochDeathBoardDialog\";" !="if(DZE_doorManagement) then {createdialog \"DoorAccess\";} else {createdialog \"ComboLockUI\";};" !"\ndisableSerialization;\ncreateDialog \"DZ_GroupDialog\";"!"createDialog \"atmDialog\";"!="createDialog \"BankDialog\";" !="createDialog \"GivePlayerDialog\";" 5 createDisplay 5 createMarker !"\"createMarkerLocal\"," !"rcreateMarkerLocal" !"if (isnil 'BIS_GITA_fnc_createMarkers' || false) then {" !"_marker = createMarkerLocal [format[\"groupMember" 5 createUnit !="_newUnit = _group createUnit [_class,respawn_west_original,[],0,\"NONE\"];" !="BIS_MPF_logic = BIS_MPF_dummygroup createUnit [\"Logic\", [1000,10,0], [], 0, \"NONE\"];" 5 createVehicleLocal !="_object = (_x select 1) createVehicleLocal [0,0,0];" !="_plant = _x createVehicleLocal (getMarkerPos \"center\");" !="_point = \"Logic\" createVehicleLocal getPosATL _unit;" !"_object = _type createVehicleLocal [0,0,0];" !="_obj = _class createVehicleLocal (getMarkerpos \"respawn_west\");" !" = \"#lightpoint\" createVehicleLocal " !" = \"#particlesource\" createVehicleLocal " !="_object = _ghost createVehicleLocal getMarkerpos \"respawn_west\";" !="_cursorTarget = _upgrade createVehicleLocal getMarkerpos \"respawn_west\";" !="_para = \"ParachuteWest\" createVehicleLocal [0,0,0];" !="_sign = \"Sign_arrow_down_large_EP1\" createVehicleLocal [0,0,0];" !"_obj = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" !="_objectSnapGizmo = \"Sign_sphere10cm_EP1\" createVehicleLocal [0,0,0];" !"_object2 = _ghost2 createVehicleLocal [0,0,0];\nhideObject _object;" 5 ctrlAddEventHandler 5 ctrlSetPosition !="_control ctrlSetPosition [_posX, _posY];" !"3,_h]};\n_control ctrlsetposition _pos;" !="_control ctrlSetPosition [0, (_y + _deltaY)];" !="_disp_ctrl ctrlSetPosition [_posX, _posY];" !="_control ctrlSetPosition _grpPos;" !="_group ctrlSetPosition _pos;" !="_control ctrlSetPosition [_controlPos select 0, _controlPos select 1, _controlPos select 2, 0.03921 * _lines];" !="((uiNamespace getVariable 'DAYZ_GUI_waiting') displayCtrl 1400) ctrlSetPosition _sandLevel;" !="_delayControl ctrlSetPosition [0, _pos];" !="_icon ctrlSetPosition [(_screen select 0),(_screen select 1),.99,.65];" 5 cutText !"_layer cuttext [\"\",\"plain\"];\n};\nmissionnamespace" !"\n\n\n3100 cuttext [\"\",\"plain\"];" !"} else {\n16 cutText [\"\",\"PLAIN\"];" !"exitWith {\n1 cutText [localize \"" !"progress_monitor.sqf\";\n0 cutText ['','BLACK',0]" !="8 cutText [\"\",\"PLAIN\"];" 5 deleteMarker !"} count allDead;\n\n\nif (dayz_oldBodyCount > _bodyCount) then {" 5 displayAddEventHandler !"bis_fnc_halo_keydown_eh = (finddisplay 46) displayaddeventhandler [\"keydown\",\"_this call bis_fnc_halo_keydown;\"];" 5 displaySetEventHandler 5 enableEnvironment 5 endMission !rendMission !"clearWeaponCargo\",\n\"endMission\"," !"enablesimulation\", \"endMission\"," !"lize \"str_player_login_timeout\", \"PLAIN DOWN\"];\nuiSleep 5;\nendMission" !"\npublicVariableServer \"PVDZ_sec_atp\";\nendMission \"LOSER\";\n};\n" !"Terminate\",\"BACK\"];\ncamDestroy _camera;\n\nendMission" !"endMission \"END1\";\n\n\ndayz_authed = true" 1 execVM !rexecVM !"\"execVM\", " !="[] execVM \"initJIPcompatible.sqf\";" !="_script = [] execVM (BIS_MP_Path + BIS_PATH_SQF + \"JIPWaitFor.sqf\");" !"execVM \"\\ca\\Data\\" !"execVM '\\ca\\Data\\" !"execVM \"\\ca\\missions" !"execVM 'ca\\modules\\" !"execVM \"ca\\modules\\" !"'\\ca\\ui\\" !"\"\\ca\\ui\\" !"scriptName \"MP\\data\\script" !"_handle\"];\n_handle = [_display] execVM _script;\n}" !"execVM '\\z\\addons\\dayz_code\\" !"execVM 'z\\addons\\dayz_code\\" !"execVM \"z\\addons\\dayz_code\\" !"execVM \"\\z\\addons\\dayz_code\\" !"execVM (\"\\z\\addons\\dayz_code\\" !="dayz_rulesHandle = execVM \"rules.sqf\";" !"execvm '\\ASC\\" !"\\usec_ch53\\scripts\\" !"execVM (_actionDir + \"warn.sqf" 5 failMission !rfailMission !"failMission\",\n\"titleCut\"," !"fadeSound\", \"failMission\"," !"if (_debug == 1) then {\ndiag_log (\"End Mission\");\n};\n\nfailMission" 5 forceEnd 5 groupIcon 5 HelicopterExplo !"(isNull _who) then {\nif (_ammo != \"\" && _ammo isKindOf \"HelicopterExplo" !"_v = thisTrigger getVariable [\"obj\", objNull];\n" !"_v = thisTrigger getVariable [\"\"obj\"\", objNull];\n" !"\n\n\nremoveallweapons _v;\n\nif (local _v) then {_expl=\"HelicopterExplo" 5 hideObject !rhideObject !"\"hideObject\"" !"(_x select 0) nearestObject (_x select 1);\n_object hideObject" !"_object2 = _ghost2 createVehicleLocal [0,0,0];\nhideObject _object;" 5 hint !", \"_postFix\"" !rhint !rtaskHint !"\"hint\", " !"\"hintC\", " !"\"taskHint\"," !"_controlHintButton ctrlSettext \"Objectives\";" !"hint (localize \"strwf" !"'BIS_fnc_hints'" !sched_planthint !"call ui_initDisplay;\nhintSilent \"\"" !"hintSilent localize \"str_player_low" 5 lbCurSel !"_selectedUserIndex = lbCurSel _lbUsersControl;" !="profileNamespace setVariable ['statusUI',(lbCurSel (_this select 0))];" !="profileNamespace setVariable ['streamerMode',(lbCurSel (_this select 0))];" !"_index = lbCurSel _lbcontrol;\n_selectedItem" !"_selected = lbCurSel _list;\n_classname = _list lnbData [_selected, 2];" !="_friendName = _userList lbText (lbCurSel _userList);" !")] call Z_" !"(lbCurSel 7421) call Z_fillCategoryList" !"] call Door" !"] call Plot" !"[(lbCurSel 12001)] " !="[(lbCurSel 21000), ((ctrlParent (_this select 0)) displayCtrl 21001)] spawn EpochDeathBoardClick;" !"((ctrlParent (_this select 0)) closeDisplay 2);" !="_uid = _playerList lbData (lbCurSel _playerList);" !"_myGroup lbData (lbCurSel _myGroup);" 5 lbSet !"_lbUsersControl lbSetColor [_x, [1,0,0,1]];" !"\n_control lbSetColor [_x, _color];\n};" !"_weaponsLBSetFocus" !="(_this select 0) displayCtrl _idc lbSetCurSel (profileNamespace getVariable [_var,_default]);" !="(_display displayCtrl 105) lbSetColor [_i, [0.06, 0.05, 0.03, 1]];" !" [7421," !"lbSetPicture [7422, _index" !"lbSetPicture [7402, _index" !"lbSetPicture [7401, _index" !="_userList lbSetData [(lbSize _userList) -1,_friendUID];" !" [TraderDialogItemList, _index, " !"_myGroup lbSetData [_index,getPlayerUID _x];" 5 loadFile 5 menu !",\"MenuSelected\",\"Draw\",\"VideoStop" !"_menu = _parent displayCtrl (1600 + _i);\n_menu ctrlShow " !="createDialog 'RscDisplayCraftingMenu';" !"BIS_fnc_commsMenu" !"BIS_fnc_kbMenu" !"call gear_ui_offMenu;" !"dayz_inflame_showMenu" !"\"showCommandingMenu\", " !"rshowCommandingMenu" !"menu_" !"use action menu to " !"\"_menu\",\"_menu1\"" !"PVDZE_plr_TradeMenu" !"fn_gearMenuChecks" !"fn_pauseMenuChecks" 5 onMapSingleClick 5 player_humanityMorph !"fn_surfaceNoise.sqf\";\nplayer_humanityMorph = compile preprocessFileLineNumbers \"\\z" !"addMagazine _itemNew;\n_morphHandle = [dayz_playerUID,dayz_characterID,_model] spawn player_humanityMorph;\n}" !"<= -2000) then {\nif (_isMen || _isMenH) then {\n[dayz_playerUID,dayz_characterID,\"Bandit1_DZ\"] spawn player_humanityMorph" !"#line 1 \"z\\addons\\dayz_code\\compile\\player_humanityMorph.sqf" 5 playableUnits !"for [{_y=0},{_y < count(playableUnits)},{_y=_y+1}] do {" !"typeName player == \"OBJECT\" && {(player in playableUnits" !"AND {((alive _x) AND {((vehicle _x) distance _obj < 150)})}} count playableUnits)}) then {" !="_local = { _unit distance _x < _dis; } count playableUnits <= 1;" !"if (!_isOk) exitWith {false};\nuiSleep 0.001;\n} forEach playableUnits;" !"ManagementMustBeClose) then { player nearEntities [\"CAManBase\", 10] } else { playableUnits };" 5 positionCameraToWorld 5 removeAllEventHandlers !"_WarnFuel = false;\n};\n\n};\n\n_vehicle removeAllEventHandlers \"IncomingMissile" !"leep _wait;} else {sleep (_wait * 4);};\n};\n\n_vehicle removeAllEventHandlers \"Dammaged" !"lse\"];\n{\n(findDisplay 12) displayCtrl 51 ctrlRemoveAllEventHandlers" !"select 1,0] nearestObject (_x select 2);\n_building removeAllEventHandlers" !"\n\n\n\nif (_this isKindOf \"AllVehicles\") then {\n\n_this removeAllEventHandlers" !"With {};\n\n_old = player;\n_old removeAllEventHandlers \"FiredN" !"\npublicVariableServer \"PVDZ_veh_Save\";\n};\n};\n\n\n_unit removeAllEventHandlers" 5 selectPlayer !"addSwitchableUnit dayz_originalPlayer;\nsetPlayable dayz_originalPlayer;\nselectPlayer dayz_originalPlayer;" !"addSwitchableUnit _newUnit;\nsetPlayable _newUnit;\nselectPlayer _newUnit;" 5 serverCommand !="_character = if (serverCommandAvailable \"#kick\") then { call sched_tg_follow } else { player };" !"serverCommand (\"#vote kick \" + _selectedName);" 5 setAperture !"select 1);\n\nif(_NVOn == \"ON\") exitwith\n{\nsetaperture -1" !"+_inc;\n\n_NVOn = (_NV select 0);\n\nif(_NVOn == \"ON\") then {\n\nsetAperture" 5 setCamUseTI 5 setDamage !"if (_entity isKindOf \"Animal\") then {\n_entity setDamage 1;" !"player setDamage 1;\n};\n\nif (dayz_onBack != \"\") then {\nif (dayz_onBack in w" !"if (_ent isKindOf \"Animal\" || _ent isKindOf \"zZombie_base\") then {\n_ent setDamage 1;" 5 setDammage 5 setDate !rsetDate !"\"setDate\", " !"\n\n\nif (!isDedicated) then {\n\"dayzSetDate\" addPublicVariableEventHandler {" !"if (_x != _newdate select _forEachIndex) exitWith {\nsetDate _newdate" !"plr_Login1]; \nPVDZ_send = [player,\"dayzSetDate\",[player]];\npublicVariableServer" !="!isNil \"dayzSetDate\"" !"diag_log ['Date & time received:', dayzSetDate];\nsetDate dayzSetDate;\ndiag" 5 SetEventHandler !"\n_menu ctrlSetEventHandler [\"ButtonClick\",_compile];\n};" !"inGameUISetEventHandler [\"Action\",\"false\"];" 5 setMarkerAlpha 5 setMarkerBrush 5 setMarkerColor !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" 5 setMarkerDir 5 setMarkerPos !"\"setMarkerPosLocal\"," !"rsetMarkerPosLocal" 5 setMarkerShape 5 setMarkerSize 5 setMarkerText !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" 5 setMarkerType !",if (_vehicle == _x) then {name _x} else {_vehicle call dayz_getCrew}];\n_marker setMarkerColorLocal \"ColorGreen\";" 5 setPosASL !="_unit setPosAsl [(_position select 0), (_position select 1), (LHA_height+1)];" !="_flame setPosASL [_pos select 0,_pos select 1,(_pos select 2)+0.2];" !="_fire setPosASL _location;" !"_objectHelper setPosASL _position;\n} else {" !"_b0x1337 setPosASL (getPosASL player);\n} else {" !"_obj setPosASL [_center select 0, _a, _b];" !"_objectSnapGizmo setPosASL " !"_para setposasl [\n" !"_thingy setPosASL (ATLToASL _pos);\n} else {" 5 setTerrainGrid !"if (dayz_REsec == 1) then {call compile preprocessFileLineNumbers \"" 5 setUnitRecoilCoefficient 5 setVehicle !"if(_status) then {\n_vehicle setVehicleLock \"LOCKED\";\n} else {\n_vehicle setVehicleLock \"UNLOCKED\";\n};" 5 setViewDistance 5 sideLogic !"publicVariable \"BIS_MPF_logic\";" 5 switchCamera !"\"switchCamera\", " !"rswitchCamera" !="player switchCamera (Dayz_constructionContext select 2);" !"player switchCamera _currentCamera;\nif (_currentWpn !=" 5 systemChat !="systemChat format[localize \"str_missing_to_do_this\", _x];" !"systemChat (localize " !"systemChat format[localize \"STR_EPOCH_" !"systemChat localize \"STR_EPOCH_" !"case \"system\": {systemChat _message;};" 5 title !"titleCut [\"\", \"BLACK " !"\"titleCut\", " !"\"titleText\"" !="rtitleCut = 'titleCut'" !"rtitleCutc" !="rtitleText = 'titleText'" !"rtitleTextc" !"(_missionTextListPath >> \"titles\")" !"(_display displayCtrl _titleIDC) ctrlShow false;" !"titleText [format[localize \"str_return_lobby\", _x" !",\"_titleText\"" !"localize 'STR_UI_GENDER_TITLE';\n_timeNem" !="scriptName \"MP\\data\\scriptCommands\\titleText.sqf\";" !_fillTradeTitle !_bldTxtStringTitle !"localize \"str_halo_altitude_speed" 5 toString !"_animCheck = toString ([(_animStateArray select 0),(_animStateArray select 1)" !="_skinToModel = toString (_finalArray);" !="{_textArrayTemp = _textArrayTemp + [tostring [_x]]} foreach _line;" !="_cmpt = toString _cmpt;" !="_objName = toLower(toString(_objName));" !"if (toString _hayArr != _needle) then {" !="_type = toString _typeA;" !="_anim4 = toString _anim4;" !"{(count _stance>17)}) then {toString [_stance select 17]}" !"BIS_fnc_timeToString" !"02, if (typeName _name == \"ARRAY\") then {toString _name} else {_name}];"!"_input = parseNumber (toString (_input));" 5 worldTo !="_relPos = _building worldToModel _point;" !"if (_isPlayer) then {\n_x = _pos worldToModel _new;" !"_w2m = _x worldToModel (getPosATL player);\n_bb = (boundingbox _x) select 1;" !="_h = _offset + ((_o worldToModel (getPosATL _o)) select 2);" !"_pos set [2,(_pos select 2) + 1.5];\n_screen = worldToScreen _pos;\n_text = composeText [image" //The best use of this file is filtering commonly used scripting commands, because they are always the same when compiled and executed. See: https://community.bistudio.com/wiki/Category:Scripting_Commands_ArmA2 //Filtering strings, variable names and code snippets is less effective because they can easily be changed or obfuscated in a near infinite number of ways //Always test after modifying by executing code on yourself. Ensure you are kicked or logged appropriately. One error in this file can break functionality of all filters and exceptions beyond that point. //Note ! and != currently behave identically in scripts.txt, there is no advantage to using one over the other //Note currently scripts.txt does not support regex, so the only characters that need to be escaped are literal double quotes " and literal backslash \ //Note tabs and spaces used as indents are stripped out automatically and do not need to be included in exceptions //Note code is filtered as it appears when it is executed. Macros in scripts and % in formats will be replaced with their real values. Double quotes ""x"" or ''x'' nested in strings will appear as single quotes. Formatting characters will be stripped from FSMs.  
    • By iben
      Hello guys,
      because I was couple times asked for updated and unified dev function for single currency (originally posted in ZSC thread),
      I've decided release it here so you can have all info in one place.
      So here it is with specific example (with detailed comments) you can try for fun...
      ===
      First thing first - let's start with giving credits for these great guys:
      DayZ Epoch developers, collaborators and contributors (thank you guys for your excellent work!) (visit them on github) @Zupa : original SC concept creator and author of Universal Dev functions for 1.0.5 version. (see original thread) @salival : for adapting @Zupa's concept to 1.0.6+ version and great community support. (see original thread) All great guys from Epoch comunity participating on SC and banking concept (see original thread) ===
      This function was reworked and updated for Epoch 1.0.6.1+
      ===
      Changelog:
      [2017-05-08], v1.0 | Initial release, published at Epoch forum [2017-05-28], v1.1 | Added: debug (parameters check, exec time to analyze code performace in game) [2017-05-31], v1.2 | Improved: removed unnecessary checks during player sync ===
      Read "Goodbye". Wish you the best guys!
      ===
      How it looks like:
      Check source code (Github)
      ===
      FEATURES:
      Function is able to manage money processing with single line code (see bellow) and can be easily integrated into your code You can use debug option to check your fnc parameters + exec time (code performance) showed on screen (global chat):
      just uncoment line: '#define: __ DEBUG__' is src code; It's pretty fast but remember: use it only if you're developing some addon or you know exactly what to do.
      Otherwise, you can stil use common methods used by addons authors - mostly it's even faster their way, because of scoped approach; It's a function - you can easily maintain your "money" code... ===
      How to install:
      It's actually very easy: practical example is the best way to explain, what needs to be done - see repo structure and files.
      Source files are available at Github repo (specific usage example included!). You can download them from here.
      ===
      How to use it:
      = General usage:
      // [_player,_amount,_action,_target] call fnc_SC_uniCoins; // '_player' : object : player, _killer...etc // '_amount' : number : 1000 // '_action' : string : 'add' / 'remove' // '_target' : string : 'cache' / 'bank' // ========================================================== // @example 01: Remove 5.000 Coins from player's wallet: [player,5000,'remove','cache'] call fnc_SC_uniCoins; // @example 02: Add 1.000 Coins to player's wallet: [player,1000,'add','cache'] call fnc_SC_uniCoins; // @example 03: Remove 7.000 Coins from player's bank account: [player,7000,'remove','bank'] call fnc_SC_uniCoins; // @example 04: Add 15.000 Coins to player's bank account: [player,15000,'add','bank'] call fnc_SC_uniCoins; ===
      ...easy enough, isn't it?
      ===
      = Specific usage (with detailed description):
      // === Scenario: // Award player for killing local zombies. // If player kills zombie, he will receive random amount of money from 0 to 250 Coins for kill. // Let's make it interesting - player receive money only in case he used the gun defined by you: // === What to do: // Save file "local_eventKill.sqf" to your custom compiles folder, load it in your custom compiles file // outside (!isDedicated) and (isServer) - we need this file for both client and server. // (it's in 'dayz_code' folder: you can download file from: // https://github.com/EpochModTeam/DayZ-Epoch/blob/master/SQF/dayz_code/compile/local_eventKill.sqf) // Open your custom variables file (or add bellow code to your init.sqf file) and add: playerZedKillAward = true; // ... so you can quickly turn ON/OFF your script // Now, let's create some code in 'local_eventKill.sqf' file: if (local _zed) then { private["_killer","_fnc_uniCoinsTest","_allowedWps"]; // code // ...find last line of code: _killer setVariable["humanity",_humanity,true]; // Bellow we define local function "_fnc_killZedsAward" so we can call it easily: // === _fnc_killZedsAward = { private ["_action","_target","_money","_curWep"]; _action = _this select 0; // @info: we take parameter from call in main code bellow this fnc and assign value to local var _target = _this select 1; // @info: we take parameter from call in main code bellow this fnc and assign value to local var _money = (round(random 5) * 50); // @info: now from 0 to 250 Coins, define to your liking _curWep = getText (configFile >> 'CfgWeapons' >> currentWeapon _killer >> 'displayName'); // @info: What's the name of player current weapon? We need this for info in hint or dayz_rollingMessages call { // Player has 20% chance to get 0 coins from random (if you will use round(random 5) - meaning staying with 5, scale from 0 to 4) // So let's check it first and prevent display msg on screen in such a case if (_money == 0) exitWith { //@info: You can pick 'dayz_rollingMessages' and comment 'hintSilent' if your hint layer is occupied by your debug monitor ["Sorry, our bank is low on money!"] call dayz_rollingMessages; hintSilent "Sorry, our bank is low on money!"; }; // If random money are above zero, let's call dev fnc_SC_uniCoins. // First parameter '_killer' is defined by original code; _money param was defined above, // _action and _target parameters we defined in main code bellow... if ([_killer,_money,_action,_target] call fnc_SC_uniCoins) exitWith { //@info: You can pick 'dayz_rollingMessages' and comment 'hintSilent' if your hint layer is occupied by your debug monitor hintSilent format ["Zed kill award!\nweapon: [%1]\nReceived: [%2 %3]",_curWep,_money,CurrencyName]; [format["Zed kill award! Weapon: [%1] Received: [%2 %3]",_curWep,_money,CurrencyName]] call dayz_rollingMessages; }; // Do not put any default code for call here - if you do, you will trigger code action in cases, // like zombie is killed close to you by some accident (from experience) }; }; // Now let's create main procedure: if (playerZedKillAward) then { // @info: define your custom array of weapons here: _allowedWps = [ 'M110_NVG_EP1', 'M9_SD_DZ','DMR_DZ', 'M9_DZ' ]; if ((currentWeapon _killer) in _allowedWps) exitWith { // @info: if player used allowed weapon, tell '_fnc_killZedsAward', what to do with money. // You can be creative here :)) ["add","cache"] call _fnc_killZedsAward; }; }; }; // === Done! ===
      ...that's all, you can use it wherever money are... Have Fun!!
      Cheers...
      ===
    • By JohnnyBravo666
      My question is for when I switched over to single currency from the default currency, that when I went to the traders, it was showing costs like "5 Coins" to buy and "3 Coins to sell". I understand that it's pulling the value quantities from the trader files from the default currency. But is there a way to set it so it calculates what the gold bars and silver bars and whatnot are equal to in single currency ?
      I'd really prefer not to have to change up all the files.
    • By salival
      Hi,
       
      With Axe Cops permission I am releasing my updated version of his amazing Service Points script. 
      This includes support for original briefcases, gems (from epoch 1.0.6.1) and coins.
          (original github url: https://github.com/vos/dayz/tree/master/service_point)
          (original install/discussion url: https://epochmod.com/forum/topic/3935-release-vehicle-service-point-refuel-repair-rearm-script/)
          
      **** *REQUIRES DAYZ EPOCH 1.0.6.1* ****
          
      Major Changes:
          This version adds support for both single currency and gems (from the epoch 1.0.6 update) as well as the original epoch briefcase currency system. 
          Instead of pricing things like the original way, prices are now done on a "worth" similar to how coins are done. The price value of items are below.
          If you are using coins, I would recommend using the _currencyModifier variable since coins typically are 10x the value of briefcase based currency (1 brief == 100,000 coins)
          (You can either set this _currencyModifier variable to 1 then set the proper value or use the modifier, the modifier is mainly for dual currency servers)
          1 silver = 1 worth
          1 10oz silver = 10 worth
          1 gold = 100 worth
          1 10oz gold = 1,000 worth
          1 briefcase = 10,000 worth
          Please see dayz_code\configVariables.sqf for the value of gems (DZE_GemWorthArray) and their relevant worth if they are enabled.
          Example config settings for _refuel_costs, _repair_costs and _rearm_costs:
          All 3 sections can either be made free, disabled or a specifc price with the following examples:
          ["Air","free"] will make the vehicle config class of "Air" free for the specific action.
          ["Air","disabled"] will make the vehicle config class of "Air" disabled for the specific action.
          ["Air",2000] will make the vehicle config class of "Air" have a worth of 2000 for the specific action.
          ["Armored_SUV_PMC",2000] will make the specific vehicle have a worth of 2000 for the specific action.
          ["Armored_SUV_PMC","free"] will make the specific vehicle be free for the specific action.
          ["Armored_SUV_PMC","disabled"] will make the specific vehicle be disabled for the specific action.
          Valid vehicle config classes as an example: "Air", "AllVehicles", "All", "APC", "Bicycle", "Car", "Helicopter", "Land", "Motorcycle", "Plane", "Ship", "Tank"
      Visit my Github page to download and read the README.MD : https://github.com/oiad/service_points
    • By Dayzguy
      Hi all,
       
      really happy to see such an abundance of information for scripting Day Epoch.
      Just got into playing DayZ Epoch a few weeks ago and now had to rent my own server :-)
      I´m running Epoch 1.0.5.1 and have so far managed to get tow and lift, money storage, WAI, admin menu, fun menu, (advance trading), (single currency) and a debug monitor showing blood, weapon, fps etc. working.
      Well, sort of working.
      The problem I´m facing right now with Zupa´s advance trading 2.1 and Zupa´s  single currency is this:
      If I want to buy a weapon from the same trader, I can choose it and when I hit "buy", I get a message saying it cost xxxx coins, even though I have enough coins. I don´t get the weapon.
      With the black market trader in Stary I don´t even get a trader menu. Not the advanced one nor the normal one.
      Basically, all the item/vehicle/weapon/ammo lists are messed up somehow and I can´t buy or sell stuff except my trusty old makarov. I even get the money when I sell it, hey!
       
      I have searched the forum for "item list", "price list" "setup+standard+trader+single+currency" , "setup trader", "price list setup" and that kinda stuff but could`t find anything that would help me.
      I don`t understand where all the bits and pieces are that make this work correctly.
       
      Any help is appreciated.
      Cheers
       
  • Advertisement
  • Supporters
  • Discord

×
×
  • Create New...