Wie bist du auf dem Server? Als Civ oder als Cop?
Hast du die Startoption "ShowScriptErrors" aktiv? Wenn nein, dann bitte die Logs
Wie bist du auf dem Server? Als Civ oder als Cop?
Hast du die Startoption "ShowScriptErrors" aktiv? Wenn nein, dann bitte die Logs
Öffne die Debugconsole auf dem Server und gebe die Zeile ein, dann auf "Local ausführen" klicken und dann steht in der kleinen Zeile unter der großen Eingabemaske das Ergebnis, entweder true oder false.
Realtime bekommt man doch auch ohne DB:
Huch, die Funktion kannte ich noch nicht.
Ja, würde mit der dann auch gehen.
Schau mal nach, welchen Wert _copsLevel2AndHigher hat.
Wenn der > 0, dann teste mal den Block vor dem Count mit deinem Player. Solange du Civ bist, sollte die Abfrage false ergeben:
(alive player) && (isPlayer player) && (side player isEqualTo west) && (player getVariable ["rank",0] > 1)
Du kannst über die Datenbank das aktuelle Datum (und Uhrzeit) beim Starten abfragen und dann entsprechend verarbeiten.
Die Abfrage für extdb 3:
realTime = EXTDB "9:LOCAL_TIME";
realtime = [Jahr,Monat,Tag,Stunde,Minute,Sekunde];
Das kann natürlich auch ein Grund sein, ich hab ein eigenes Bankraubsystem und kenne das standardmäßige daher nicht mehr ;D
Dein Code hat allerdings einen kleinen Fehler drin:
Du kannst einer Variable in einer IF - Funktion keinen Wert zuweisen (soweit ich weiß gibt das immer true zurück). Du solltest deswegen die Variable entweder vor der schleife initalisieren oder du schreibst den count direkt in die IF-Bedingung, dann allerdings ohne Variable.
private _copsLevel2AndHigher = { (alive _x) && (isPlayer _x) && (side _x isEqualTo west) && (_x getVariable ["rank",0] > 1) } count allPlayers;
if(((nearestObject [_pos,"Land_Dome_Big_F"]) == _building || (nearestObject [_pos,_vaultHouse]) == _building) &&
_copsLevel2AndHigher < (LIFE_SETTINGS(getNumber,"minimum_cops"))) exitWith {
hint format [localize "STR_Civ_NotEnoughCops",(LIFE_SETTINGS(getNumber,"minimum_cops"))];
};
ODER
if(((nearestObject [_pos,"Land_Dome_Big_F"]) == _building || (nearestObject [_pos,_vaultHouse]) == _building) &&
({ (alive _x) && (isPlayer _x) && (side _x isEqualTo west) && (_x getVariable ["rank",0] > 1) } count allPlayers) < (LIFE_SETTINGS(getNumber,"minimum_cops"))) exitWith {
hint format [localize "STR_Civ_NotEnoughCops",(LIFE_SETTINGS(getNumber,"minimum_cops"))];
};
Alles anzeigen
Hast du die Entsprechenden Scripte in die functions.h eingetragen und auch im richtigen Ordner?
Laut dem Log - Nein!
7:08:45 Warning Message: Script \life_server\Functions\vAH not found
7:08:45 Warning Message: Script \life_server\Functions\Systems\fn_logIt.sqf not found
Am besten du gehst das Tutorial noch mal ein zu eins durch (und versuchst zu verstehen, was da eigentlich gemacht wird). Den Fehler kannst du sicherlich alleine beheben, wenn du dich ein wenig mit der Materie beschäftigst und die Fehlernmeldungen richtig liest. Arma gibt dir schon in der Error Ausgabe den Hinweis, dass die Funktion ton_fnc_vah_initnicht definiert ist -> Was auf eine unfertige Implementation der Scripte hinweist.
Du kannst theoretisch über die Hauptklasse (Ich meine die Unterwäsche wäre in der Klasse Man definiert) die Texturen ändern. Allerdings verstehe ich den Teil mit den T-Shirts nicht. Die T-Shirts sind eigene Kleidungsstücke (zusammen mit den Hosen) die du in der CfgWeapon definieren kannst. Um diese zu ändern benötigst du die Unterwäsche nicht, oder habe ich da jetzt was falsch verstanden?
Hm, so auf anhieb kann sieht alles richtig aus.
Ich würde an deiner Stelle jetzt einfach mal ein paar Debug Meldungen einbauen, z.B. so:
systemChat format["fn_safeOpener: _copsLevel2AndHigher=%1 | _minimum_cops = %2",_copsLevel2AndHigher, (LIFE_SETTINGS(getNumber,"minimum_cops"))];das ganze nach der count Abfrage.
Wenn _CopsLevel2AndHigher größer ist als du erwartest, dann prüfe die Variable "rank" mal manuell über die Debug Console.
Ja, das ist auch möglich. Wäre dann 5 oder mehr aktiven Cops
a > b bedeutet, dass A größer als B sein muss, damit die Bedingung erfüllt ist.
a >= b bedeutet, dass A größer oder gleich B sein muss, damit die Bedingung erfüllt ist.
Mit kleiner als genau umgekehrt.
Die Variable wird im Normalfall in der core/configuration.sqf erzeugt und der Wert false zugeweisen.
Schau mal nach ob das bei dir ebenfalls gemacht wird. Wenn nein, füge das hinzu, wenn ja prüfe mal, ob der Variable eventuell irgendwo mit einem ungültigen (nil) Wert belegt wird.
[TUTORIAL] Fernbedienung Schranken und Rolltore
Musst du halt nur die entsprechende Lizenz im Tor hinterlegen (z.B. setVariable) und dann im Script abfragen ob der Spieler diese Lizenz besitzt. Wenn nicht -> mach nichts, sonst öffne / schließe das Tor.
Du musst schon ein wenig selber Suchen und vor allem Denken - Das waren jetzt keine 2 Minuten Suche um die Anleitung zu finden. Niemand wird dir das Script vorkauen.
["handleDamage",
{
_this spawn {
params[["_player",objNull,[objNull]],"","","",["_ball","",[""]],"",""];
if (_ball isEqualTo "Taser_Caseless") then {
addCamShake [3, 60, 30];H
_effect = ppEffectCreate ["DynamicBlur", 1];
_effect ppEffectEnable true;
_effect ppEffectAdjust [10];
_effect ppEffectCommit 6;
sleep 1;
player setUnconscious true;
sleep 10;
player setUnconscious false;
_player setfatigue 1;
_effect ppEffectEnable false;
ppEffectDestroy _effect;
};
};
0;
}
];
Alles anzeigen
Der "HandelDamage" EVH erwartet als letzten Output eine Zahl, welchen er dem Spieler als Damage dazurechnet.
Wenn du für die Waffe einen eigenen EVH Handler erstellst, dann musst du in der Datei /mission/core/funktions/fn_handleDamage.sqf die Waffe mit _damage=0; eintragen, sonst gibt dieser Eventhandler den Schaden.
Wenn du in Zeile 182 keine entsprechenden Objekte findet, wird ein leeres Array zurück gegeben.
Da du aber den ersten Eintrag eines leeren Arrays haben möchtest, ist deine Variable _pump = nil
Ändere deine Abfrage mal so um:
private _pump = nearestObjects [_x,["Land_FuelStation_01_pump_malevil_F","Land_fs_feed_F","Land_FuelStation_01_pump_F","Land_FuelStation_02_pump_F"],5] select 0;
if(!isNil _pump) then {
_pump setFuelCargo 0;
_pump addAction [localize "STR_Action_Pump", life_fnc_fuelStatOpen, 1, 3, true, true, "", '_this distance _target < 5 && cursorObject isEqualTo _target'];
} else {diag_log format["fn_setUpStations: _pump not defined on _x=%1",_x];}
Soweit ich das sehe, tritt der Fehler nur bei 3 Positionen auf, mit der Debugmeldunge kannst du somit recht einfach eingrenzen, was genau der Fehler ist (z.B. anderer Classname, Zahlendreher der Position, etc).
Schau mal in der Life_server\init.sqf,
ob bei dir das Object life_attachment_point
erstellt wird. Bei mir sieht das so aus:
// We create the attachment point to be used for objects to attachTo load virtually in vehicles.
life_attachment_point = "Land_HelipadEmpty_F" createVehicle [0,0,0];
life_attachment_point setPosASL [0,0,0];
life_attachment_point setVectorDirAndUp [[0,1,0], [0,0,1]];
// Sharing the point of attachment with all players.
publicVariable "life_attachment_point";
In der Datei core\shops\fn_vehicleShop3DPreview.sqf wird dieses Object dann wieder genutzt:
_object attachTo [life_attachment_point, life_pos_attach];
Dann hast du anscheinend zwei Life_server Mods geladen:
18:00:50 Conflicting addon life_server in 'life_server_new_old\', previous definition in 'life_server_old\'
18:00:50 Conflicting addon life_server in 'life_server\', previous definition in 'life_server_old\'
Hau da mal alle raus, außer dem aktuellen.
Daneben hast du anscheinend auf der Map diverse Syntax Fehler in den Init-Feldern, solltest du auch beheben:
Wenn du nach dem Spawnmenu auf der Insel spawnst, kannst du dich dann ganz normal bewegen? Wenn ja, poste bitte nochmal deine aktuelle Client Log.
Im Editor kannst du unter den Missionseinstellungen die KI deaktivieren. Die Missionseinstellungen findest du oben in einem der Menüs
Wie setzt ihr die Settings? Eigentlich reicht es, wenn ihr im Eden Editor die Addon Options im Tab Mission editiert. Diese werden dann direkt in der Missionsdatei gespeichert und eigentlich direkt geladen beim start.
Dein Ansatz, den du versuchst funktioniert so nicht.
Du speicherst die isDLC Zahl in der Datei fn_clothingFilter.sqf mit lbSetValue, überschreibst dabei aber den Preis, der auf die selbe Art und Weise zwei Zeilen weiter oben gesetzt wird.
Ich würde dir raten, ein Array über lbSetData zu speichern, welches den Preis und die isDLC Variable beinhaltet. Außerdem stimmen die parameter in der clothingFilter nicht:
_x params [
["_className", "NONE", [""]],
["_displayName", "", [""]],
["_price", 1000, [0]],
["_condition", "", [""]], //Siehe Config_Clothing
["_isDLC", 0, [0]]
];
_list lbSetData [(lbSize _list)-1,_className];
_list lbSetValue [(lbSize _list)-1,[_price,_isDLC]]; //Hier Array speichern
_list lbSetPicture [(lbSize _list)-1,_pic];
_list lbSetValue [(lbSize _list)-1,_isDLC]; //Das löschen
Abfragen kannst du das dann in der fn_changeClothes.sqf per
_dataRaw = _control lbData _selection;
_data = _dataRaw select 0; //Preis
_DLC = _dataRaw select 1; //IsDCL
if (_data isEqualTo "NONE") then {
_item = switch (life_clothing_filter) do {
case 0: {uniform player};
case 1: {headGear player};
case 2: {goggles player};
case 3: {vest player};
case 4: {backpack player};
};
[_item,false] call life_fnc_handleItem;
} else {
[_data,true,nil,nil,nil,nil,nil,true] call life_fnc_handleItem;
};
life_cMenu_lock = false;
_price ctrlSetStructuredText parseText format [(localize "STR_GNOTF_Price")+ " <t color='#8cff9b'>$%1</t>",[(_control lbValue _selection)] call life_fnc_numberText];
_isDLC ctrlSetStructuredText parseText format [" <t color='white'>DLC: %1</t>",[_DLC] call life_fnc_numberText];
Alles anzeigen
Du darfst keine Leerzeichen in der Bezeichnung der Clasnames haben (Los Santos zu Los_Santos ändern)