[TUTORIAL][Altis Life 4.4r3] RyanTTs Dynamic Market System
-
- Altis Life
-
blackfisch -
27. Juli 2016 um 01:04
-
-
An sich gute Idee, geht blos leider nicht noch ein paar infos:
Die Items werden alle richtig angezeigt
wenn ich die notification in der config auf true stelle wird auch alle 5 minuten (wurde auch so eingestellt) im Spiel gesagt das er die Preise updated
Die Datenbank macht einträge
Wenn ich selbst einen wert in der Datenbank ändere (zb: ["heroin_processed",5000,0], würde 5000 bringen und wird zu ["heroin_processed",5500,0],)
dann aktualisiert das Marksystem dies auch nach den eingestellen 5 Minuten und bringt den Preis ins Spiel
hier sonst nocheinmal die einträge die die Datenbank AUTOMATISCH gesetzt hat:
[["apple",25,0],["peach",50,0],["goldbar",95000,0],["oil_processed",1200,0],["copper_refined",1700,0],["iron_refined",1650,0],["salt_refined",1850,0],["glass",1450,0],["diamond_cut",2530,0],["cement",2350,0],["heroin_processed",5000,0],["marijuana",5250,0],["cocaine_processed",5300,0],["baumwolle_p",9050,0],["tabak_p",2542,0],["oliven_p",1950,0],["reis_p",2678,0],["holz_p",2271,0],["bier_p",2925,0],["erde",1150,0],["wein_p",2260,0],["goldkrone_p",4050,0],["vodka_p",3850,0],["oldesloer_p",3650,0],["whisky_p",3350,0],["salsa_p",2350,0],["titan_p",5150,0],["carbon_p",3350,0]]
vielleicht erkennt ja jemand ein Problem
-
wenn ich den multiplikator von 0,5 auf eins stellen möchte
schreib ich da 1.0 oder nur eine 1
-
Was ich mich noch frage was die Minus 1 bedeutet ["glass",-1, 570, 1450]
-
Das -1 sollst du einfach ignorieren
-
Hey Leute ich nutze die 5.0 und habe da zwei Fehler in den Rpt´s
Spoiler anzeigen
11:28:06 Error in expression <ray select 2;
_curITEMmax = _ITEMSarray select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error position: <select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error Zero divisor
11:28:06 File \life_server\Functions\DynMarket\fn_calculatePrices.sqf [TON_fnc_calculatePrices], line 36
11:28:06 Error in expression <ray select 2;
_curITEMmax = _ITEMSarray select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error position: <select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error Zero divisor
11:28:06 File \life_server\Functions\DynMarket\fn_calculatePrices.sqf [TON_fnc_calculatePrices], line 60
Und hier ist meine fn_calculatePrices.sqf
Code: fn_calculatePrices.sqf
Alles anzeigen/* ##################### DYNAMIC MARKET SCRIPT ##################### ### AUTHOR: RYAN TT. ### ### STEAM: www.steamcommunity.com/id/ryanthett ### ### ### ### DISCLAIMER: THIS SCRIPT CAN BE USED ON EVERY SERVER ONLY ### ### WITH THIS HEADER / NOTIFICATION ### ################################################################# */ _tempArrayHolder = DYNMARKET_Items_CurrentPriceArr; { _itemName = _x select 0; _itemLastPrice = _x select 1; _itemAmountSold = _x select 2; _itemPricePerUnit = 0; _itemPriceMin = 0; _itemPriceMax = 0; _itemGroupName = ""; _itemFactorOfGroup = 0; _exit = false; if (_itemAmountSold>0) then { { if (!_exit) then { _GROUParray = _x; _itemGroupName = _GROUParray select 0; _GROUPITEMSarray = _GROUParray select 1; _itemFactorOfGroup = _GROUParray select 2; { _ITEMSarray = _x; _curITEMname = _ITEMSarray select 0; _curITEMpriceperunit = _ITEMSarray select 1; _curITEMmin = _ITEMSarray select 2; _curITEMmax = _ITEMSarray select 3; if (_curITEMname==_itemName) then { _exit = true; _itemPricePerUnit = _curITEMpriceperunit; _itemPriceMin = _curITEMmin; _itemPriceMax = _curITEMmax; }; } forEach _GROUPITEMSarray; }; } forEach DYNMARKET_Items_Groups; //ADJUST THE PRICES { _GROUParray = _x; _GROUPNAME = _GROUParray select 0; _GROUPITEMSarray = _GROUParray select 1; if (_itemGroupName==_GROUPNAME) then { { _ITEMSarray = _x; _curITEMname = _ITEMSarray select 0; _curITEMpriceperunit = _ITEMSarray select 1; _curITEMmin = _ITEMSarray select 2; _curITEMmax = _ITEMSarray select 3; if (_curITEMname==_itemName) then { // Find old price _curItemOldPrice = 0; { _curItemName2 = _x select 0; _curItemPrice2 = _x select 1; _curItemAmountSold2 = _x select 2; if (_curItemName2==_curITEMname) then { _curItemOldPrice = _curItemPrice2; }; } forEach DYNMARKET_Items_CurrentPriceArr; // Calculate new own price _NEWPRICE = _curItemOldPrice-(_itemAmountSold*(_curItemOldPrice/2000)*_itemFactorOfGroup); if (_NEWPRICE<_curITEMmin) then {_NEWPRICE=_curITEMmin}; if (_NEWPRICE>_curITEMmax) then {_NEWPRICE=_curITEMmax}; _index = -1; { _index = _index + 1; _curItemName3 = _x select 0; _curItemPrice3 = _x select 1; _curItemAmountSold3 = _x select 2; if (_curItemName3==_curITEMname) then { DYNMARKET_Items_CurrentPriceArr set [_index,[_curITEMname,_NEWPRICE,0]]; }; } forEach DYNMARKET_Items_CurrentPriceArr; } else { // Calculate new price _index = -1; { _index = _index + 1; _curItemName3 = _x select 0; _curItemPrice3 = _x select 1; _curItemAmountSold3 = _x select 2; if (_curItemName3==_curITEMname) then { _NEWPRICE = _curItemPrice3+(_itemAmountSold*(_curItemPrice3/1000)*_itemFactorOfGroup); if (_NEWPRICE<_curITEMmin) then {_NEWPRICE=_curITEMmin}; if (_NEWPRICE>_curITEMmax) then {_NEWPRICE=_curITEMmax}; DYNMARKET_Items_CurrentPriceArr set [_index,[_curITEMname,_NEWPRICE,_curItemAmountSold3]]; }; } forEach DYNMARKET_Items_CurrentPriceArr; }; } forEach _GROUPITEMSarray; }; } forEach DYNMARKET_Items_Groups; }; } forEach DYNMARKET_Items_CurrentPriceArr; DYNMARKET_Items_CurrentPriceArr = _tempArrayHolder; //[1,DYNMARKET_Items_CurrentPriceArr] remoteExecCall ["life_fnc_update",-2]; // Translate to sell_array { _itemName = _x select 0; _itemNewPrice = _x select 1; _index = -1; { _index = _index + 1; _curItemName = _x select 0; if (_curItemName==_itemName) then { DYNMARKET_sellarraycopy set [_index,[_itemName,_itemNewPrice]]; }; } forEach DYNMARKET_sellarraycopy; } forEach DYNMARKET_Items_CurrentPriceArr; [1,DYNMARKET_sellarraycopy] remoteExecCall ["life_fnc_update",-2];
Hoffe mir kann evtl jemand bei helfen.
-
-
it's the factor of how they influence each other - higher = higher influence
-
Hey Leute ich nutze die 5.0 und habe da zwei Fehler in den Rpt´s
Spoiler anzeigen
11:28:06 Error in expression <ray select 2;
_curITEMmax = _ITEMSarray select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error position: <select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error Zero divisor
11:28:06 File \life_server\Functions\DynMarket\fn_calculatePrices.sqf [TON_fnc_calculatePrices], line 36
11:28:06 Error in expression <ray select 2;
_curITEMmax = _ITEMSarray select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error position: <select 3;
if (_curITEMname==_itemName) t>
11:28:06 Error Zero divisor
11:28:06 File \life_server\Functions\DynMarket\fn_calculatePrices.sqf [TON_fnc_calculatePrices], line 60
Und hier ist meine fn_calculatePrices.sqf
Code: fn_calculatePrices.sqf
Alles anzeigen/* ##################### DYNAMIC MARKET SCRIPT ##################### ### AUTHOR: RYAN TT. ### ### STEAM: www.steamcommunity.com/id/ryanthett ### ### ### ### DISCLAIMER: THIS SCRIPT CAN BE USED ON EVERY SERVER ONLY ### ### WITH THIS HEADER / NOTIFICATION ### ################################################################# */ _tempArrayHolder = DYNMARKET_Items_CurrentPriceArr; { _itemName = _x select 0; _itemLastPrice = _x select 1; _itemAmountSold = _x select 2; _itemPricePerUnit = 0; _itemPriceMin = 0; _itemPriceMax = 0; _itemGroupName = ""; _itemFactorOfGroup = 0; _exit = false; if (_itemAmountSold>0) then { { if (!_exit) then { _GROUParray = _x; _itemGroupName = _GROUParray select 0; _GROUPITEMSarray = _GROUParray select 1; _itemFactorOfGroup = _GROUParray select 2; { _ITEMSarray = _x; _curITEMname = _ITEMSarray select 0; _curITEMpriceperunit = _ITEMSarray select 1; _curITEMmin = _ITEMSarray select 2; _curITEMmax = _ITEMSarray select 3; if (_curITEMname==_itemName) then { _exit = true; _itemPricePerUnit = _curITEMpriceperunit; _itemPriceMin = _curITEMmin; _itemPriceMax = _curITEMmax; }; } forEach _GROUPITEMSarray; }; } forEach DYNMARKET_Items_Groups; //ADJUST THE PRICES { _GROUParray = _x; _GROUPNAME = _GROUParray select 0; _GROUPITEMSarray = _GROUParray select 1; if (_itemGroupName==_GROUPNAME) then { { _ITEMSarray = _x; _curITEMname = _ITEMSarray select 0; _curITEMpriceperunit = _ITEMSarray select 1; _curITEMmin = _ITEMSarray select 2; _curITEMmax = _ITEMSarray select 3; if (_curITEMname==_itemName) then { // Find old price _curItemOldPrice = 0; { _curItemName2 = _x select 0; _curItemPrice2 = _x select 1; _curItemAmountSold2 = _x select 2; if (_curItemName2==_curITEMname) then { _curItemOldPrice = _curItemPrice2; }; } forEach DYNMARKET_Items_CurrentPriceArr; // Calculate new own price _NEWPRICE = _curItemOldPrice-(_itemAmountSold*(_curItemOldPrice/2000)*_itemFactorOfGroup); if (_NEWPRICE<_curITEMmin) then {_NEWPRICE=_curITEMmin}; if (_NEWPRICE>_curITEMmax) then {_NEWPRICE=_curITEMmax}; _index = -1; { _index = _index + 1; _curItemName3 = _x select 0; _curItemPrice3 = _x select 1; _curItemAmountSold3 = _x select 2; if (_curItemName3==_curITEMname) then { DYNMARKET_Items_CurrentPriceArr set [_index,[_curITEMname,_NEWPRICE,0]]; }; } forEach DYNMARKET_Items_CurrentPriceArr; } else { // Calculate new price _index = -1; { _index = _index + 1; _curItemName3 = _x select 0; _curItemPrice3 = _x select 1; _curItemAmountSold3 = _x select 2; if (_curItemName3==_curITEMname) then { _NEWPRICE = _curItemPrice3+(_itemAmountSold*(_curItemPrice3/1000)*_itemFactorOfGroup); if (_NEWPRICE<_curITEMmin) then {_NEWPRICE=_curITEMmin}; if (_NEWPRICE>_curITEMmax) then {_NEWPRICE=_curITEMmax}; DYNMARKET_Items_CurrentPriceArr set [_index,[_curITEMname,_NEWPRICE,_curItemAmountSold3]]; }; } forEach DYNMARKET_Items_CurrentPriceArr; }; } forEach _GROUPITEMSarray; }; } forEach DYNMARKET_Items_Groups; }; } forEach DYNMARKET_Items_CurrentPriceArr; DYNMARKET_Items_CurrentPriceArr = _tempArrayHolder; //[1,DYNMARKET_Items_CurrentPriceArr] remoteExecCall ["life_fnc_update",-2]; // Translate to sell_array { _itemName = _x select 0; _itemNewPrice = _x select 1; _index = -1; { _index = _index + 1; _curItemName = _x select 0; if (_curItemName==_itemName) then { DYNMARKET_sellarraycopy set [_index,[_itemName,_itemNewPrice]]; }; } forEach DYNMARKET_sellarraycopy; } forEach DYNMARKET_Items_CurrentPriceArr; [1,DYNMARKET_sellarraycopy] remoteExecCall ["life_fnc_update",-2];
Hoffe mir kann evtl jemand bei helfen.
und welchen fehler haste in den logs ?
-
und welchen fehler haste in den logs ?
Spoiler öffnen und lesen.
-
naja ich habe auch 5.0 und die selbe datei kann dir gerne mal meine hier rein posten
-
Moin, Bei mir ändern sich die Preise nicht könnte mir da jemand helfen ich schreibe mal die config von dem marksystem und im Anhang den rpt log ich hoffe jemand kann mir helfen
-
Moin, Bei mir ändern sich die Preise nicht könnte mir da jemand helfen ich schreibe mal die config von dem marksystem und im Anhang den rpt log ich hoffe jemand kann mir helfen
probier mal diese
-
Ne geht leider nicht die Preise ändern sich nicht.
-
stell mal so ein:
DYNMARKET_PriceUpdateInterval = 15; // After how many minutes should the price be updated?
DYNMARKET_CreateBackupInterval = 3; // After how many updates (PriceUpdateIntervals) should the prices be saved into the Database?
-
Jetzt ändern sich nur die Preise von Pfirsichen und Äpfel von den Rest nicht.
-
Hey Blackfish
Funktioniert dieses Marktsystem auch auf der Version 5.0?
Danke für eine Antwort
-
das marktsystem funct in jeder version selbst wenn du selber eine schreibst kannst du es bearbeiten das es funct es gehen alle scripts in alle versionen wenn du sie bearbeitest.
-
ja das läuft so 1 zu 1 auf der 5.0
-
ja das läuft so 1 zu 1 auf der 5.0
Danke für die Info
-