stell mal deine difficulty ein da kannste alles einstellen. Am besten auf custom.
Beiträge von Risk
-
-
Niemand ne Idee? Suche mich blöde..
-
du kannst auch einfach ein komplettes Video abspielen.. nimmt nur viel Platz ein.
-
Also habe jetzt mehrmals mit der db.ini rumgespielt..
Liegt nicht daran sondern irgendwo am Life_server..
Auch die Files die ich geändert habe, habe ich 10 mal nach kontrolliert.. waren alle richtig..
Kann mich aber auch vertun..
-
Das git habe ich von unten bis oben durch gesucht
-
hab gestern ganzen Tag gesucht... habe auch die ganzen Zeilen nachgeguckt die ich verändert habe..
-
Moin Leute!!
Ich habe auf dem Server jetzt SQL Custom drauf.
Soweit klappte auch alles...
Habe jetzt aber einen Kleinen Fehler den ich nicht weg bekomme...
Vielleicht kennt sich ja einer von euch damit aus und kann mir dabei helfen diesen Fehler zu lösen.
Suche schon den ganzen Tag
[17:33:04:027188 +02:00] [Thread 9568] extDB3: SQL_CUSTOM Config Error: C:\A3Server\Life\Altis\@extDB3\sql_custom\TheLastGamer_DB.ini(1): '=' character not found in line
[17:33:04:027522 +02:00] [Thread 9568] extDB3: Failed to Load Protocol: SQL_CUSTOM
mfg Risk
-
Kann ich gerade nicht testen.. Stehe noch im Zwiespalt mit der custom sql
-
private _gangTag = ctrlText (CONTROL(2520,2523));
ne du bist nicht blind..
Ich dafür aber blöd
Kein Problem
habe es ja schon selbst geändert
-
Nun müsst ihr nur noch in eurem Dialog noch ein weiteres Eingabefeld hinzufügen mit der IDC = 2523 hat
Bin ich blind oder wird das nirgends definiert?
-
Ich habe nochmal was gefunden wo ich sogar ein Level up hinzugefügt habe mit automatischer Level erkennung.
Das Level habe ich im oberen Post schon hinzugefügt.
-------------------------NEU----------------------------
Fügt eine Config hinzu.
Config_LEVEL
Code
Alles anzeigen/* author: Risk description: none returns: nothing */ class Risk_LevelUP { //How much xp for each Level //you can define here as much level as u want class level_Config { class 1 { xpNeeded = 30; }; class 2 { xpNeeded = 40; }; class 3 { xpNeeded = 50; }; class 4 { xpNeeded = 60; }; class 5 { xpNeeded = 70; }; class 6 { xpNeeded = 80; }; class 7 { xpNeeded = 90; }; class 8 { xpNeeded = 100; }; class 9 { xpNeeded = 110; }; class 10 { xpNeeded = 120; }; class 11 { xpNeeded = 130; }; class 12 { xpNeeded = 140; }; class 13 { xpNeeded = 150; }; class 14 { xpNeeded = 160; }; class 15 { xpNeeded = 170; }; class 16 { xpNeeded = 180; }; class 17 { xpNeeded = 190; }; class 18 { xpNeeded = 200; }; class 19 { xpNeeded = 210; }; class 20 { xpNeeded = 220; }; }; //Extra EXP on action. //define here what u want. But stay on that shematic. //class name { extraXP = amount; }; //You also got an example // [0,true,"createGang",true] call life_fnc_handleEXP; class extra_config { class createGang { extraXP = 10; }; }; };
Und noch eine neue Datei erstellen. fn_handleEXP.sqf
Code
Alles anzeigen/* author: Risk description: levelsup the player returns: nothing */ private _level = getNumber(missionConfigFile >> "Risk_LevelUP" >> "level_Config" >> str(life_Level + 1) >> "xpNeeded"); diag_log format["xpNeeded %1",_level]; if(life_EXP >= _level)then { //playSound "LevelUP"; //--------- Message on Lvl Up titleText ["<t size='5'>LEVEL UP!</t><br/><t size='2'>GLÜCKWUNSCH</t>", "PLAIN", 0.3, true, true]; //--------- Save the old exp in case u need it. private _oldEXP = Life_EXP; private _newEXP = Life_EXP - _level; life_EXP = _newEXP; //--------- Handling your Level life_Level = Life_Level +1; //life_talent_point = life_talent_point +1; call SOCK_fnc_updateRequest; };
Ob das ganze funktioniert kann ich euch nicht sagen. Hab es halt nur gefunden. Ist demnach auch bisschen älter
-
schau einfach wie es bei exile gemacht ist. Da sollte das glaub ich auch sein.
-
[true,itemvar,amount] call life_fnc_handleInv;
Sollte helfen.
-
Code
Alles anzeigenprivate _action = [ format [localize "STR_GNOTF_AlreadyControlled",_gangName], localize "STR_GNOTF_CurrentCapture", localize "STR_Global_Yes", localize "STR_Global_No" ] call BIS_fnc_guiMessage; if (_action) then { //hier alles für Fleisch } else { //hier sachen für feder };
denke den Inhalt kannst du ausfüllen ect. Ansonsten mach ich dir das später am pc.
Edit: die guiMessage musst du noch anpassen. Hatte ich aus dem Standard framework kopiert.
-
Ich guck nachher Zuhause.
-
case "Hen_random_F": {_displayName = localize "STR_ANIM_chicken"; _item = "hen_raw";
_item_2 = "chicken_feather";
_amount = 2;
};
Und dann noch
[true,_item,_amount] call life_fnc_handleInv
-
[true,_item,1] call life_fnc_handleInv
Glaube nur da wennich es richtig im Kopf habe.
-
-
wieso?
Es ist ja nichts an der eigentlichen progressbar verändert worden. Es wurde lediglich das erstellen einer progressbar erleichtert.
Und dafür habe ich ja Beispiele mit rein getan.
-
Moin liebe Leute!
Ich habe für euch mal eben den Progressbar Aufruf von Schmittys life umgeschrieben. Hiermit könnt ihr ganz einfach eine Progressbar aufrufen.
-> ["Titel","Animation",Zeit] spawn life_fnc_starteProgressbar;
Beispiel
-> ["Verarbeite Kupfer","AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon",5] spawn life_fnc_starteProgressbar;
Bitte beachtet, das ihr in den Checks der files wo ihr es einfügt folgendes eintragt das es bei Abbruch dennoch Erfolgreich ist.
Beispiel: fn_repairTruck.sqf
Spoiler anzeigen
Code
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_repairTruck.sqf Author: Bryan "Tonic" Boardwine Description: Main functionality for toolkits, to be revised in later version. */ private ["_veh","_upp","_ui","_progress","_pgText","_cP","_displayName","_test","_sideRepairArray"]; _veh = cursorObject; if (isNull _veh) exitWith {}; if ((_veh isKindOf "Car") || (_veh isKindOf "Ship") || (_veh isKindOf "Air")) then { if (life_inv_toolkit > 0) then { ["Repariere Fahrzeug","AinvPknlMstpSnonWnonDnon_medic_1",5] spawn life_fnc_starteProgressbar; _sideRepairArray = LIFE_SETTINGS(getArray,"vehicle_infiniteRepair"); //Check if playerSide has infinite repair enabled if (playerSide isEqualTo civilian && (_sideRepairArray select 0) isEqualTo 0) then { [false,"toolkit",1] call life_fnc_handleInv; }; if (playerSide isEqualTo west && (_sideRepairArray select 1) isEqualTo 0) then { [false,"toolkit",1] call life_fnc_handleInv; }; if (playerSide isEqualTo independent && (_sideRepairArray select 2) isEqualTo 0) then { [false,"toolkit",1] call life_fnc_handleInv; }; if (playerSide isEqualTo east && (_sideRepairArray select 3) isEqualTo 0) then { [false,"toolkit",1] call life_fnc_handleInv; }; if (schmitt_fortschrittStatus != 1) exitWith { hint "Error!"; }; _veh setDamage 0; titleText[localize "STR_NOTF_RepairedVehicle","PLAIN"]; }; };
Neuen Eintrag in der Functions.hpp unter der class Functions
Neue Datei erstellen -> fn_startProgressbar.sqf
Spoiler anzeigen
Code
Alles anzeigen/* File: fn_starteProgressbar.sqf Autor: Thomas 'smallfly' Ludwig aka 'Schmitt' Edit; Risk */ disableSerialization; params[ ["_titel","",[""]], ["_animation","",[""]], ["_dauerInSek",0 ,[0] ] ]; schmitt_fortschrittStatus = 0; private _idcFortschrittBalken = 38201; private _idcFortschrittTitel = 38202; bildschirmEbeneFortschrittAnzeige cutRsc ["life_progress","PLAIN"]; private _display = uiNamespace getVariable "life_progress"; private _fortschrittBalken = _display displayCtrl _idcFortschrittBalken; private _fortschrittTitel = _display displayCtrl _idcFortschrittTitel; private _spielerPositionStart = getPos player; private _initialFortschritt = 0.01; private _maxAbstand = 2; private _pauseProIntervallInSek = 0.1; private _anzahlPausen = _dauerInSek / _pauseProIntervallInSek; private _fortschrittProIntervall = 1.10 / _anzahlPausen; private _fortschritt = _initialFortschritt; _fortschrittTitel ctrlSetText format["%2 (1%1)...", "%", _titel]; _fortschrittBalken progressSetPosition _fortschritt; for "_i" from 0 to 1 step 0 do { if (_animation != "" && {animationState player != _animation}) then { player playMoveNow _animation; //_unit switchMove _anim; }; sleep _pauseProIntervallInSek; _fortschritt = _fortschritt + _fortschrittProIntervall; _fortschrittBalken progressSetPosition _fortschritt; _fortschrittTitel ctrlSetText format["%3 (%1%2) ...", round(_fortschritt * 100), "%", _titel]; private _spielerPositionAktuell = getPos player; private _abstand = _spielerPositionStart distance _spielerPositionAktuell; if (_abstand > _maxAbstand) exitWith { hint format["Entfernung zu groß! Aktuell: %1 Meter Erlaubt: %2 Meter",_abstand,_maxAbstand]; schmitt_fortschrittStatus = -1; }; if !(isNull objectParent player) exitWith { hint "Das Aus- bzw. Einsteigen führt zum Abbruch der Aktion!"; schmitt_fortschrittStatus = -1; }; if (!alive player) exitWith { schmitt_fortschrittStatus = -1; }; if (_fortschritt >= 1) exitWith {}; if (life_istazed) exitWith { schmitt_fortschrittStatus = -1; }; if (life_isknocked) exitWith { schmitt_fortschrittStatus = -1; }; //Knocked }; bildschirmEbeneFortschrittAnzeige cutText ["","PLAIN"]; if (_animation != "" ) then { player playActionNow "stop"; }; schmitt_fortschrittStatus = 1;
Als letztes noch 2 Einträge in der configuration.sqf
CodebildschirmEbeneFortschrittAnzeige = 5;schmitt_fortschrittStatus = 0; // -1 := Fehler; 0 := Läuft noch; 1 := erfolgreich abgeschlossen
Viel Spaß!