Jump to content

Recommended Posts

This is a major glitch in giving players money. When both players have equal amount of money, and they give money to each other at the same time. The money duplicates. Then Use the duplicated money to dupe again, then it double duplicates. Keep going to be a millionaire in seconds

 

Lets say i got 500, you got 500. We both give our 500 coins to each other at the same time. It duplicates

 

There is an easy fix:

 

In your Gold/init.sqf

 

Find:

GivePlayerAmount = {
..
..
..
..
};

Replace the whole block with this:

GivePlayerAmount = {
private ["_amount","_target","_wealth"];
_amount = parseNumber (_this select 0);
_target = cursorTarget;
_wealth = player getVariable["cashMoney",0];
_twealth = _target getVariable["cashMoney",0];
_InTrd = _target getVariable ["TrBsy",false];
_isMan = _target isKindOf "Man";
if (_amount < 1 or _amount > _wealth) exitWith {
cutText ["You can not give more than you currently have.", "PLAIN DOWN"];
};
if (!_isMan) exitWith {
cutText ["You are not facing anyone.", "PLAIN DOWN"];
};
if (_InTrd) exitWith {
cutText ["Other Player is busy, please wait.", "PLAIN DOWN"];
};
PVDZE_account_Doublecheck = [player];
publicVariableServer "PVDZE_account_Doublecheck";
player setVariable["cashMoney",_wealth - _amount, true];
_target setVariable["cashMoney",_twealth + _amount, true];


PVDZE_plr_Save = [player,(magazines player),true,true] ;
publicVariableServer "PVDZE_plr_Save";
PVDZE_plr_Save = [_target,(magazines _target),true,true] ;
publicVariableServer "PVDZE_plr_Save";


cutText [format["You gave %1 %2.", _amount, CurrencyName], "PLAIN DOWN"];
};

Now Replace your bank_dialog.sqf and give_player_dialog.sqf with these: 

 

bank_dialog.sqf

private ["_dialog"];
player setVariable["TrBsy",true,0];
_dialog = createdialog "BankDialog";
call BankDialogUpdateAmounts;
waitUntil { !dialog };
uiSleep 3;
player setVariable ["TrBsy",false,0];

give_player_dialog.sqf

private ["_dialog"];player setVariable["TrBsy",true,0];
_dialog = createdialog "GivePlayerDialog";
call GivePlayerDialogAmounts;
waitUntil { !dialog };
uiSleep 3;
player setVariable ["TrBsy",false,0];

Share this post


Link to post
Share on other sites

So this only works if both sides have the exact same amount of money? I don't get it.. Where's the logic behind this?

 

Lets say i got 500, you got 500. We both give our 500 coins to each other at the same time. It duplicates

Share this post


Link to post
Share on other sites

Lets say i got 500, you got 500. We both give our 500 coins to each other at the same time. It duplicates

 

No yeah I understand that but what's the logic behind this glitch? I mean why the same amount. If this really works it should work with any number amount of coins, wouldn't it?

Share this post


Link to post
Share on other sites

No yeah I understand that but what's the logic behind this glitch? I mean why the same amount. If this really works it should work with any number amount of coins, wouldn't it?

 

Dunno the logic, maybe it works with different numbers too 0.o

Share this post


Link to post
Share on other sites

it seems at least on my test server if both players trade at the same time the money is added together and given to both people.  Example is if I have 200 coins and my friend has 500 coins.  We both select give coins to each other and give our full amount.  If we both select the Give option we both end up with 700 coins.  Waiting to test this on my live server to see if the behavior is the same.  I could have sworn I tested this earlier and it did not do this.  The same amount however is fixed using the above.

Share this post


Link to post
Share on other sites

it seems at least on my test server if both players trade at the same time the money is added together and given to both people.  Example is if I have 200 coins and my friend has 500 coins.  We both select give coins to each other and give our full amount.  If we both select the Give option we both end up with 700 coins.  Waiting to test this on my live server to see if the behavior is the same.  I could have sworn I tested this earlier and it did not do this.  The same amount however is fixed using the above.

 

I have yet to find out how we can possibly fix that issue. 

Share this post


Link to post
Share on other sites

What if you tried....

GivePlayerAmount = {

    private ["_amount","_target","_wealth"];

    player setVariable ["TrBsy",true,0];

    _InTrd = _target getVariable ["TrBsy",0];

    _amount = parseNumber (_this select 0);

    _target = cursorTarget;

    _wealth = player getVariable["cashMoney",0];

    _twealth = _target getVariable["cashMoney",0];

    _isMan = _target isKindOf "Man";

    if (_amount < 1 or _amount > _wealth) exitWith {

        cutText ["You can not give more than you currently have.", "PLAIN DOWN"];

    };

    if (!_isMan) exitWith {

        cutText ["You are not facing anyone.", "PLAIN DOWN"];

    };

    if (_wealth == _twealth) exitWith {

        cutText ["FAILED : Both Targets have same amount of money.", "PLAIN DOWN"];

    };

    if (_InTrd) exitWith {

        cutText ["Player is busy, please wait.", "PLAIN DOWN"];

    };

    PVDZE_account_Doublecheck = [player];

    publicVariableServer "PVDZE_account_Doublecheck";

    player setVariable["cashMoney",_wealth - _amount, true];
   
    _target setVariable["cashMoney",_twealth + _amount, true];



    PVDZE_plr_Save = [player,(magazines player),true,true] ;

    publicVariableServer "PVDZE_plr_Save";

    PVDZE_plr_Save = [_target,(magazines _target),true,true] ;

    publicVariableServer "PVDZE_plr_Save";



    cutText [format["You gave %1 %2.", _amount, CurrencyName], "PLAIN DOWN"];

    uiSleep 3;

    player setVariable ["TrBsy",false,0];

};

 

Haven't tested it yet.

 

-edit-

Most likely wont work, but what I was thinking was, setting a variable to the player when they open the give money dialog, and remove it a few seconds after it closes. If the variable is true, then it prevents the other person from trading with them until the dialog is closed.

 

-edit 2-

You might try changing... give_player_dialog.sqf to look like...

 

 
private ["_dialog"];
 
player setVariable ["TrBsy",true,0];
_dialog = createdialog "GivePlayerDialog";

call GivePlayerDialogAmounts;
waitUntil { !dialog };
uiSleep3;
player setVariable ["TrBsy",false,0];

 

then remove... both >>player setVariable ["TrBsy",true,0];<< and >>player setVariable ["TrBsy",false,0];<< from the previous script in this reply

 

Will try testing it when I can.

Share this post


Link to post
Share on other sites

Thanks for the idea, 

 

I have fixed the code, tested

 

Init.sqf

GivePlayerAmount = {
private ["_amount","_target","_wealth"];
_amount = parseNumber (_this select 0);
_target = cursorTarget;
_wealth = player getVariable["cashMoney",0];
_twealth = _target getVariable["cashMoney",0];
_InTrd = _target getVariable ["TrBsy",false];
_isMan = _target isKindOf "Man";
if (_amount < 1 or _amount > _wealth) exitWith {
cutText ["You can not give more than you currently have.", "PLAIN DOWN"];
};
if (!_isMan) exitWith {
cutText ["You are not facing anyone.", "PLAIN DOWN"];
};
if (_wealth == _twealth) exitWith {
cutText ["FAILED : Both Targets have same amount of money.", "PLAIN DOWN"];
};
if (_InTrd) exitWith {
        cutText ["Other Player is busy, please wait.", "PLAIN DOWN"];
    };
PVDZE_account_Doublecheck = [player];
publicVariableServer "PVDZE_account_Doublecheck";
player setVariable["cashMoney",_wealth - _amount, true];
_target setVariable["cashMoney",_twealth + _amount, true];


PVDZE_plr_Save = [player,(magazines player),true,true] ;
publicVariableServer "PVDZE_plr_Save";
PVDZE_plr_Save = [_target,(magazines _target),true,true] ;
publicVariableServer "PVDZE_plr_Save";


cutText [format["You gave %1 %2.", _amount, CurrencyName], "PLAIN DOWN"];
};

bank_dialog.sqf

private ["_dialog"];
player setVariable["TrBsy",true,0];
_dialog = createdialog "BankDialog";
call BankDialogUpdateAmounts;
waitUntil { !dialog };
uiSleep 3;
player setVariable ["TrBsy",false,0];

give_player_dialog.sqf

private ["_dialog"];player setVariable["TrBsy",true,0];
_dialog = createdialog "GivePlayerDialog";
call GivePlayerDialogAmounts;
waitUntil { !dialog };
uiSleep 3;
player setVariable ["TrBsy",false,0];

Share this post


Link to post
Share on other sites

Awesome Gr8 (Also, thanks for fixing up my typos)! but why do you attach it to the bank dialog too?

 

Also, you could remove the...

if (_wealth == _twealth) exitWith {
cutText ["FAILED : Both Targets have same amount of money.", "PLAIN DOWN"];
};

 

Since it's already covered with the variable.

Share this post


Link to post
Share on other sites

Very nice :)

 

Do I have to replace all code for bank_dialog.sqf and give_player_dialog.sqf?

Or do I have to insert this code between the existing somehow?

 

Yes, replace this code with your bank_dialog.sqf and give_player_dialog.sqf

Share this post


Link to post
Share on other sites

When I do so, the amount of money is not displayed anymore in any items which can hold coins.

 

Thats shouldnt be happening. Are you using 3.0 ZSC ?

Share this post


Link to post
Share on other sites

If you can...revert to original  bank_dialog.sqf and give_player_dialog.sqf

Then please post the contents of both files.

 

Here we go:

 

bank_dialog.sqf

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_10") , "PLAIN DOWN"]; };
DZE_ActionInProgress = true;

private ["_dialog"];
ZSC_CurrentStorage = _this select 3;
_dialog = createDialog "BankDialog";
call BankDialogUpdateAmounts;

DZE_ActionInProgress = false;

 

give_player_dialog.sqf

private ["_dialog"];
ZSC_GiveMoneyTarget = cursorTarget;
if( isPlayer ZSC_GiveMoneyTarget)then{
_dialog = createdialog "GivePlayerDialog";
call GivePlayerDialogAmounts;
}else{
systemChat format["You are not looking correctly at a player"];
};

Share this post


Link to post
Share on other sites

Untested.

 

Change Bank Dialog to....

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_10") , "PLAIN DOWN"]; };
DZE_ActionInProgress = true;
player setVariable["TrBsy",true,0];

private ["_dialog"];
ZSC_CurrentStorage = _this select 3;
_dialog = createDialog "BankDialog";
call BankDialogUpdateAmounts;

DZE_ActionInProgress = false;
uiSleep 3;
player setVariable["TrBsy",false,0];

and give_Player to....

private ["_dialog"];
player setVariable["TrBsy",true,0];
uiSleep 1;
ZSC_GiveMoneyTarget = cursorTarget;
if( isPlayer ZSC_GiveMoneyTarget)then{
_dialog = createdialog "GivePlayerDialog";
call GivePlayerDialogAmounts;
}else{
systemChat format["You are not looking correctly at a player"];
};
uiSleep 3;
player setVariable["TrBsy",false,0];

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By JakeQue
      Hi, me again.
       
      For some reason when i spawn in and collect coins or loadout the next time i disconnect and come back it puts me back into spawn and money is all disappeared. 

      There's no hive errors.
      The only error in the Server RPT is :
      And I have 2 errors in my client RPT. Looks like they relate to zsc but I have reinstalled it from scratch and still the same.
      and 
       
      Sorry to be such a noob with this one!!
    • By xTimeToShine
      Hey guys,
      i'm proud to present our new "Epic Illusion Gaming - DayZ Overpoch server".
       
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
      [EIG] DayZ Overpoch | Chernarus | 1.0.6.2 | Coins | Lift | Groups | Missions | Events | Deploy Bike |
      IP: 94.250.209.139:2302
       
      We are searching for some Players and also for some Admins. Please visit our Server or come to our Teamspeak or Discrod.
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       
      Visit us on ...
      ...Teamspeak:  94.250.223.10:15111
      ...Discord:  https://discord.gg/MTQuUHP
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Our new special features:
      Global Coins System Deploy a bike (Toolbox) Lift & Tow Selfbloodbagging Groupsystem Virtual Garage AI Missions Special PVP Events Custom Loadout ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      Upcoming features:
      Weaponswitch Enhanced Spawn Selection and much more...  
    • By Vladick
      BSBS Server IP: 207.244.146.179
      Website: https://bsbsepoch.000webhostapp.com/
      Discord: https://discord.gg/PVn8PvG
      Server Features:
      PvPvE Database wiped 1/5/18 ESS V3 spawn selection Coins and Global Banking WAI missions and Roaming DZAI Bandits Customized map additions Skalisky Bridge Skalisky Island Bandit Camp with high loot (fun mission!) Garage Door Opener Virtual Garage Deploy bike Refuel, Repair, Rearm Take clothes Bury Body Butcher Body Locate vehicle with keys and GPS One plot poll per player Indestructible bases Trader Safe Zones Day/Night Schedule 4-hour restarts
    • By iben
      Hello guys,
      do you remember old "Paint vehicles" script? Let's look back to idea fathers:
      ===
      CREDITS:
      All credits goes to its original authors:
      DayZ Epoch developers, collaborators and contributors (thank you guys for your excellent work!) (visit them on github)
      Maca134 for orginal color vehicle script.
      @Zupa for the idea of painting vehicles in two different colors.
      @0verHeaT for script public release - this version we are updating for 1.0.6.1+ (see original thread)
      @raymix for list of paintable vehicles for this script (see original thread)
      ---
      Special Thank you goes to @DAmNRelentless for taking care of Github repo.
       ===
      This script was updated for Epoch 1.0.6.2 and upgraded.
      ===
      FEATURES:
      Vehicles can be painted in two different colors Only vehicles which you own can be painted (vehicles with key) Only vehicles in ColourVehicles array can be painted Script is designed to be used along with Single currency. Player will pay for painting vehicles. UPDATED: Color values are saved in the worldspace field in database NEW: Vehicles can be unpainted to default state (default textures are loaded) UPDATED: Vehicles can be painted using GUI with visual enhancements. Use PaintVehicles defines.hpp for defining custom GUI color scheme UPDATED: Script is now fully compatible with Virtual Garage and Vehicle Key Changer (VKC) script thanks to @salival (2017-08-22).
      All scripts by @salival and this one prior update date should be upgraded to get much better player experience! UPDATED: for Epoch 1.0.6.2 ===
      Changelog:
      [2017-05-22], v1.0 | Initial release [2017-05-25], v1.1 | Optimized compiles: 5 files reduced to 1. See changes: [commit  ae29c13] [2017-08-20], v1.2 | Regular code maintenance. See changes: [commit 682f99a] and [commit 7cd8fce] [2017-10-23], v1.3 | Roll back to full version of player_forceSave (uniCoins fix: Issue not related to script itself). [2017-12-04], v1.4 | Safer manipulation with data sending to server. Basic defines fix - from sqf to hpp.  See changes: [commit 2735dea] [2017-29-04], v1.5 | Update for Epoch 1.0.6.2 [2017-29-04], v1.5.1 | FIX: fn_selfAction path (thx @hooty): [commit 38fe105] ===
      How it looks like:

      === database screenshot

      ===
      MiniShowcase
      ===
      How to install:
      We are not using common way how is script included to current folder structure (like grab whole folder and put it to the root of mission folder) - 
      that's why read carefully, use repo folder structure (or similar) and compare tool like diffmerge! If you have troubles, just ask here or send me PM.
      Source files are available at Github repo. You can download them from here.
      For client side we need these folders in the root of your 'MPMissions\Dayz_Epoch_11.Chernarus' folder:
      actions: we will store file with scroll action menu command Paint vehicle here compile: we will store core script client files here Configs: we will store defines && dialog config files for script GUI here gui:  we will store your "Money" or "Coins" picture here (Change path inside: `dayz_code\compile\player_paintVehicle.sqf`) init: we will load all compiles and variables from here ... and finaly files:
      description.ext: we will load your defines and dialogs from here via master.hpp init.sqf: we will load your custom compiles and variables from here For server side (dayz_server) we need to touch these files:
      compiles\paintVehicles  (copy whole folder to compiles) compiles\server_updateObject.sqf system\server_monitor.sqf init\server_functions.sqf (compile init.sqf) ===
      Battleye
      // Add an exception to publicvariable.txt !="PVDZE_veh_Color" ===
      infiSTAR
      // Add an exception to allowed dialogs 571113 ===
      ...that's all, Have Fun!!
      Cheers...
      ===
  • Advertisement
  • Advertisement
  • Supporters
  • Advertisement
  • Discord

×