Okay das (oben gepostete) geht nicht, so spielt er mir beim Abbau jeden Sound einzeln durch^^
Zuerst Spitzhacke, dann Schaufel ud dann Sieb....das war ne Schnapsidee
Okay das (oben gepostete) geht nicht, so spielt er mir beim Abbau jeden Sound einzeln durch^^
Zuerst Spitzhacke, dann Schaufel ud dann Sieb....das war ne Schnapsidee
Ich versuche es mal so:
#include "..\..\script_macros.hpp"
/*
File: fn_mine.sqf
Author: Devilfloh
Editor: Dardo
Description:
Same as fn_gather,but it allows use of probabilities for mining.
*/
private ["_maxGather", "_resource", "_amount", "_requiredItem", "_mined"];
if (life_action_inUse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (player getVariable "restrained") exitWith {
hint localize "STR_NOTF_isrestrained";
};
_exit = false;
if (player getVariable "playerSurrender") exitWith {
hint localize "STR_NOTF_surrender";
};
life_action_inUse = true;
_zone = "";
_requiredItem = "";
_resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
_percent = (floor random 100) + 1; //Make sure it's not 0
for "_i" from 0 to count(_resourceCfg)-1 do {
_curConfig = _resourceCfg select _i;
_resources = getArray(_curConfig >> "mined");
_maxGather = getNumber(_curConfig >> "amount");
_zoneSize = getNumber(_curConfig >> "zoneSize");
_resourceZones = getArray(_curConfig >> "zones");
_requiredItem = getText(_curConfig >> "item");
_mined = "";
if (_resources isEqualTo []) exitWith {}; //Smart guy :O
for "_i" from 0 to count (_resources) do {
if (count _resources isEqualTo 1) exitWith {
if (!((_resources select 0) isEqualType [])) then {
_mined = _resources select 0;
} else {
_mined = (_resources select 0) select 0;
};
};
_resource = (_resources select _i) select 0;
_prob = (_resources select _i) select 1;
_probdiff = (_resources select _i) select 2;
if ((_percent >= _prob) && (_percent <= _probdiff)) exitWith {
_mined = _resource;
};
};
{
if ((player distance(getMarkerPos _x)) < _zoneSize) exitWith {
_zone = _x;
};
} forEach _resourceZones;
if (_zone != "") exitWith {};
};
if (_zone isEqualTo "") exitWith {
life_action_inUse = false;
};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "pickaxe": {
titleText[(localize "STR_NOTF_Pickaxe"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
player say3D "mining";
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "schaufel": {
titleText[(localize "STR_NOTF_schaufel"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
player say3D "Shovel";
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "Sieb": {
titleText[(localize "STR_NOTF_Sieb"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {
life_action_inUse = false;
};
//SCHLEIFE
while {true} do {
//ABFRAGE
if(life_interrupted) exitWith {life_interrupted = false;}; // Damit ist die Zeile hier gemeint
_amount = round(random(_maxGather)) + 1;
_diff = [_mined, _amount, life_carryWeight, life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
player say3D "Goldnuggets";
for "_i" from 0 to 4 do {
player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil {
animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
};
sleep 0.5;
};
if (([true, _mined, _diff] call life_fnc_handleInv)) then {
_itemName = M_CONFIG(getText, "VirtualItems", _mined, "displayName");
titleText[format [localize "STR_NOTF_Mine_Success", (localize _itemName), _diff], "PLAIN"];
};
};
sleep 2.5;
life_action_inUse = false;
Alles anzeigen
Nein moeck funktioniert leider nicht
Ich glaube das der Fehler in der fn_mining.sqf liegt den da ist ganz unten
definiert, nur wie kann ich das für jedes Item einzeln reinschreiben?
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "schaufel": {
titleText[(localize "STR_NOTF_schaufel"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "Sieb": {
titleText[(localize "STR_NOTF_Sieb"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {
life_action_inUse = false;
};
//SCHLEIFE
while {true} do {
//ABFRAGE
if(life_interrupted) exitWith {life_interrupted = false;}; // Damit ist die Zeile hier gemeint
_amount = round(random(_maxGather)) + 1;
_diff = [_mined, _amount, life_carryWeight, life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
player say3D "mining";
Alles anzeigen
#include "..\..\script_macros.hpp"
/*
File: fn_tazed.sqf
Author: Bryan "Tonic" Boardwine
Description:
Starts the tazed animation and broadcasts out what it needs to.
*/
private ["_curWep","_curMags","_attach"];
params [
["_unit",objNull,[objNull]],
["_shooter",objNull,[objNull]]
];
if (isNull _unit || isNull _shooter) exitWith {player allowDamage true; life_istazed = false;};
if (_shooter isKindOf "Man" && alive player) then {
if (!life_istazed) then {
life_istazed = true;
_curWep = currentWeapon player;
_curMags = magazines player;
_attach = if (!(primaryWeapon player isEqualTo "")) then {primaryWeaponItems player} else {[]};
{player removeMagazine _x} forEach _curMags;
player removeWeapon _curWep;
player addWeapon _curWep;
if (!(count _attach isEqualTo 0) && !(primaryWeapon player isEqualTo "")) then {
{
_unit addPrimaryWeaponItem _x;
} forEach _attach;
};
if (!(count _curMags isEqualTo 0)) then {
{player addMagazine _x;} forEach _curMags;
};
[_unit] remoteExecCall ["life_fnc_tazeSound",RCLIENT];
_obj = "Land_ClutterCutter_small_F" createVehicle ASLTOATL(visiblePositionASL player);
_obj setPosATL ASLTOATL(visiblePositionASL player);
[player,"AinjPfalMstpSnonWnonDf_carried_fallwc"] remoteExecCall ["life_fnc_animSync",RCLIENT];
[0,"STR_NOTF_Tazed",true,[profileName, _shooter getVariable ["realname",name _shooter]]] remoteExecCall ["life_fnc_broadcast",RCLIENT];
_unit attachTo [_obj,[0,0,0]];
disableUserInput true;
sleep 15;
[player,"AmovPpneMstpSrasWrflDnon"] remoteExecCall ["life_fnc_animSync",RCLIENT];
if (!(player getVariable ["Escorting",false])) then {
detach player;
};
life_istazed = false;
player allowDamage true;
disableUserInput false;
};
} else {
_unit allowDamage true;
life_istazed = false;
};
Alles anzeigen
Der Sound für Gather Items ist doch in der fn_Gather.sqf definiert!?
/*Original*/
switch (_requiredItem) do {
case "pickaxe": {player say3D "mining";};
default {player say3D "harvest";};
};
/*Schaufel*/
switch (_requiredItem) do {
case "schaufel": {player say3D "Shovel";};
default {player say3D "harvest";};
};
/*Sieb*/
switch (_requiredItem) do {
case "sieb": {player say3D "Goldnuggets";};
default {player say3D "harvest";};
};
Alles anzeigen
Bist du sicher das du auch in der Version 5.0 unterwegs bist?
LG
Da ich leider mit der SUFU nichts gefunden habe komme ich hier zur nächsten Frage.
Standart wird ja fast alles mit der Spitzhacke abgebaut, das schien mir aber ein wenig zu fade, daher habe ich einige Farming Items mit anderen Gegenständen versehen wie zb. Schaufel für Sand und Salz sowie ein Sieb zum Gold Sieben.
Nun wollte ich natürlich auch die dazu passenden Sounds denn die Spitzhacke is a bissl doof wenn man Sand schaufelt.
Ich habe mir also für Schaufel einen Sound und fürs Sieb einen Sound erstellt und diese in die Sounds gegeben, natürlich auch in die description.ext eingetragen unter class CfgSounds
Ich höre aber immer noch überall die Spitzhacke klopfen!?
disableChannels[] = {{0,true,true},{1,true,true},{2,true,true}}; // Disabled text and voice for global, side, and command channels. Syntax: disableChannels[] = {{channelID<number>, disableChat<bool>, disableVoice<bool>}};
overviewText = "$STR_MISC_overviewText"; // Text to be displayed below the overviewPicture on the mission selection screen when the mission is available to play.
#include "config\Config_SpyGlass.hpp"
#include "CfgRemoteExec.hpp"
#include "dialog\MasterHandler.hpp"
#include "config\Config_Master.hpp"
class CfgServer {
DatabaseName = "altislife"; //Config name that'll be grep in the extdb-conf.ini. Default: [altislife]
DebugMode = 0; //Enable many server/hc debugging logs. Default: 0 (1 = Enabled / 0 = Disabled)
HeadlessSupport = 0; //Enable/Disable Headless client support. Default: 1 (1 = Enabled / 0 = Disabled)
/*
Enabled: When HeadlessSupport is set to 1 (enabled), the server will run without fault when no Headless Client is connected. However, it will support the Headless Client if you choose to connect one.
Disabled: If HeadlessSupport is set to 0 (disabled), the connection of a Headless Client will make no difference. This option will increase server performance a TINY but negligible amount.
*/
};
class RscTitles {
#include "dialog\progress.hpp"
#include "dialog\hud_nameTags.hpp"
#include "dialog\hud_stats.hpp"
};
class CfgFunctions {
#include "Functions.hpp"
#include "cation\cation_functions.cpp"
};
class CfgSounds {
sounds[] = {};
class sirenLong {
name = "sirenLong";
sound[] = {"\sounds\sirenLong.ogg", 1.0, 1};
titles[] = {};
};
class wiggle {
name = "wiggle";
sound[] = {"\sounds\wiggle.ogg", 1.0, 1};
titles[] = {};
};
class bip {
name = "bip";
sound[] = {TV\TV logo & beep\Sounds\bip.ogg, 1, 1.0};
titles[] = {};
};
class bip2 {
name = "bip2";
sound[] = {TV\TV logo & beep\Sounds\bip2.ogg, 1, 1.0};
titles[] = {};
};
class speech {
name = "speech";
sound[] = {"\sounds\speech.ogg", 1.0, 1};
titles[] = {};
};
class medicSiren {
name = "medicSiren";
sound[] = {"\sounds\medicSiren.ogg", 1.0, 1};
titles[] = {};
};
class tazerSound {
name = "tazerSound";
sound[] = {"\sounds\tazer.ogg", 0.25, 1};
titles[] = {};
};
class flashbang {
name = "flashbang";
sound[] = {"\sounds\flashbang.ogg", 1.0, 1};
titles[] = {};
};
class mining {
name = "mining";
sound[] = {"\sounds\mining.ogg", 1.0, 1};
titles[] = {};
};
class Shovel { //Sound für Schaufel
name = "Shovel";
sound[] = {"\sounds\Shovel.ogg", 1.0, 1};
titles[] = {};
};
class Goldnuggets { /Sound für Goldschürfen - Sieb
name = "Goldnuggets";
sound[] = {"\sounds\Goldnuggets.ogg", 1.0, 1};
titles[] = {};
};
class harvest {
name = "harvest";
sound[] = {"\sounds\harvest.ogg", 1.0, 1};
titles[] = {};
};
class lockCarSound {
name = "lockCarSound";
sound[] = {"\sounds\carLock.ogg", 0.25, 1};
titles[] = {};
};
class unlockCarSound {
name = "unlockCarSound";
sound[] = {"\sounds\carUnlock.ogg", 0.25, 1};
titles[] = {};
};
};
class CfgDebriefing {
class NotWhitelisted {
title = "$STR_NotWhitelisted_Title";
subtitle = "$STR_NotWhitelisted_SubTitle";
description = "$STR_NotWhitelisted_Descript";
pictureBackground = "";
picture = "";
pictureColor[] = {0,0.3,0.6,1};
};
class Blacklisted {
title = "$STR_Blacklisted_Title";
subtitle = "$STR_Blacklisted_SubTitle";
description = "$STR_Blacklisted_Descript";
pictureBackground = "";
picture = "";
pictureColor[] = {0,0.3,0.6,1};
};
};
class CfgNotifications {
class MedicalRequestEmerg {
title = "$STR_MedicalRequestEmerg_Title";
iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcon_ca.paa";
description = "%1";
duration = 5;
priority = 7;
};
class DeliveryAssigned {
title = "$STR_DeliveryAssigned_Title";
iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcon_ca.paa";
description = "%1";
duration = 10;
priority = 7;
};
class DeliveryFailed {
title = "$STR_DeliveryFailed_Title";
iconPicture = "\A3\ui_f\data\map\mapcontrol\taskiconfailed_ca.paa";
description = "%1";
duration = 7;
priority = 7;
};
class DeliverySucceeded {
title = "$STR_DeliverySucceeded_Title";
iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcondone_ca.paa";
description = "%1";
duration = 6;
priority = 6;
};
class TextMessage {
title = "$STR_TextMessage_Title";
iconPicture = "icons\ico_messageNew.paa";
description = "%1";
duration = 10;
priority = 6;
};
class PoliceDispatch {
title = "$STR_PoliceDispatch_Title";
iconPicture = "icons\ico_messagePolice.paa";
description = "%1";
duration = 10;
priority = 6;
};
class AdminDispatch {
title = "$STR_AdminDispatch_Title";
iconPicture = "icons\ico_messageAdmin.paa";
description = "%1";
duration = 10;
priority = 6;
};
class AdminMessage {
title = "$STR_AdminMessage_Title";
iconPicture = "icons\ico_messageAdmin.paa";
description = "%1";
duration = 10;
priority = 5;
};
};
#include "cation\cation_master.cpp"
Alles anzeigen
In der fn_mine.sqf habe ich benötigten Items eingetragen
#include "..\..\script_macros.hpp"
/*
File: fn_mine.sqf
Author: Devilfloh
Editor: Dardo
Description:
Same as fn_gather,but it allows use of probabilities for mining.
*/
private ["_maxGather", "_resource", "_amount", "_requiredItem", "_mined"];
if (life_action_inUse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (player getVariable "restrained") exitWith {
hint localize "STR_NOTF_isrestrained";
};
_exit = false;
if (player getVariable "playerSurrender") exitWith {
hint localize "STR_NOTF_surrender";
};
life_action_inUse = true;
_zone = "";
_requiredItem = "";
_resourceCfg = missionConfigFile >> "CfgGather" >> "Minerals";
_percent = (floor random 100) + 1; //Make sure it's not 0
for "_i" from 0 to count(_resourceCfg)-1 do {
_curConfig = _resourceCfg select _i;
_resources = getArray(_curConfig >> "mined");
_maxGather = getNumber(_curConfig >> "amount");
_zoneSize = getNumber(_curConfig >> "zoneSize");
_resourceZones = getArray(_curConfig >> "zones");
_requiredItem = getText(_curConfig >> "item");
_mined = "";
if (_resources isEqualTo []) exitWith {}; //Smart guy :O
for "_i" from 0 to count (_resources) do {
if (count _resources isEqualTo 1) exitWith {
if (!((_resources select 0) isEqualType [])) then {
_mined = _resources select 0;
} else {
_mined = (_resources select 0) select 0;
};
};
_resource = (_resources select _i) select 0;
_prob = (_resources select _i) select 1;
_probdiff = (_resources select _i) select 2;
if ((_percent >= _prob) && (_percent <= _probdiff)) exitWith {
_mined = _resource;
};
};
{
if ((player distance(getMarkerPos _x)) < _zoneSize) exitWith {
_zone = _x;
};
} forEach _resourceZones;
if (_zone != "") exitWith {};
};
if (_zone isEqualTo "") exitWith {
life_action_inUse = false;
};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "pickaxe": {
titleText[(localize "STR_NOTF_Pickaxe"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "schaufel": {
titleText[(localize "STR_NOTF_schaufel"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
case "Sieb": {
titleText[(localize "STR_NOTF_Sieb"), "PLAIN"];
};
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {
life_action_inUse = false;
};
//SCHLEIFE
while {true} do {
//ABFRAGE
if(life_interrupted) exitWith {life_interrupted = false;}; // Damit ist die Zeile hier gemeint
_amount = round(random(_maxGather)) + 1;
_diff = [_mined, _amount, life_carryWeight, life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
player say3D "mining";
for "_i" from 0 to 4 do {
player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil {
animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
};
sleep 0.5;
};
if (([true, _mined, _diff] call life_fnc_handleInv)) then {
_itemName = M_CONFIG(getText, "VirtualItems", _mined, "displayName");
titleText[format [localize "STR_NOTF_Mine_Success", (localize _itemName), _diff], "PLAIN"];
};
};
sleep 2.5;
life_action_inUse = false;
Alles anzeigen
In der fn_gather.sqf habe ich die Sounds für die jeweiligen Abbau Gegenstände hinzugefügt
#include "..\..\script_macros.hpp"
/*
File: fn_gather.sqf
Author: Devilfloh
Description:
Main functionality for gathering.
*/
private ["_maxGather","_resource","_amount","_maxGather","_requiredItem"];
if (life_action_inUse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (player getVariable "restrained") exitWith {hint localize "STR_NOTF_isrestrained";};
if (player getVariable "playerSurrender") exitWith {hint localize "STR_NOTF_surrender";};
life_action_inUse = true;
_zone = "";
_requiredItem = "";
_exit = false;
_resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
for "_i" from 0 to count(_resourceCfg)-1 do {
_curConfig = _resourceCfg select _i;
_resource = configName _curConfig;
_maxGather = getNumber(_curConfig >> "amount");
_zoneSize = getNumber(_curConfig >> "zoneSize");
_resourceZones = getArray(_curConfig >> "zones");
_requiredItem = getText(_curConfig >> "item");
{
if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {_zone = _x;};
} forEach _resourceZones;
if (_zone != "") exitWith {};
};
if (_zone isEqualTo "") exitWith {life_action_inUse = false;};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
//Messages here
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {life_action_inUse = false;};
//HIER DIE SCHLEIFE
while{true} do {
//ABFRAGE
if(life_interrupted) exitWith {life_interrupted = false;}; // Diese Zeile ist damit gemeint
_amount = round(random(_maxGather)) + 1;
_diff = [_resource,_amount,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
switch (_requiredItem) do {
case "pickaxe": {player say3D "mining";};
default {player say3D "harvest";};
};
switch (_requiredItem) do {
case "schaufel": {player say3D "Shovel";};
default {player say3D "harvest";};
};
switch (_requiredItem) do {
case "sieb": {player say3D "Goldnuggets";};
default {player say3D "harvest";};
};
for "_i" from 0 to 4 do {
player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";};
sleep 0.5;
};
if ([true,_resource,_diff] call life_fnc_handleInv) then {
_itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
titleText[format [localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
};
};
sleep 1;
life_action_inUse = false;
Alles anzeigen
Natürlich wie oben schon erwähnt habe ich die Soundfiles im .ogg Format im sounds Ordner auch drinnen.
Warum geht das nicht?
Die zweite Frage dazu passend wäre nun, wenn ich bei einem Verarbeiter einen Sound wie zb. Fabrik haben möchte (ich erstelle mir eine fabriksound.ogg) wie kann ich diese einfügen sodass sie nur in der Umgebung des Verarbeiters zu hören ist und da auch nur während jemand dort ist (habe an einen Auslöser gedacht wenn der überschritten wird, wird Sound fabriksound.ogg abgespielt.
Wie kann ich das am besten umsetzen?
Dankeschön
Tagchen auch euch allen zusammen
Nun da ein Problem erledigt ist habe ich ein neues/altes wobei es Hilfe bedarf.
Und zwar geht es darum das ich mittels vieler Tipps hier im Forum aus einem TUT die Funktion des Massenabbaus eingefügt habe.
Das funktioniert zwar soweit prima, man stellt sich aufs Feld und drückt WINDOWS und es wird gefarmt bis das Inventar voll ist.
Leider hat die Sache aber auch einen Hacken und zwar das man es nicht beenden kann ausser man rennt von der FarmZone weg
Das Geräusch des Abbaus hört man noch 1 Minute dannach wenn mann schon weit weg ist.
Hier ist eine fn_gather.sqf mit dem derzeitigen Inhalt, meine Frage nun, wie und wo baue ich eine Möglichkeit ein das zum Beispiel während dem Abbau eine Meldung im Bild steht "Derzeit bist du am Dauerfarmen - Zum Beenden drücke P"
Und wenn ich dann P drücke das Farmen auch beendet wird!?
#include "..\..\script_macros.hpp"
/*
File: fn_gather.sqf
Author: Devilfloh
Description:
Main functionality for gathering.
*/
private ["_maxGather","_resource","_amount","_maxGather","_requiredItem"];
if (life_action_inUse) exitWith {};
if !(isNull objectParent player) exitWith {};
if (player getVariable "restrained") exitWith {hint localize "STR_NOTF_isrestrained";};
if (player getVariable "playerSurrender") exitWith {hint localize "STR_NOTF_surrender";};
life_action_inUse = true;
_zone = "";
_requiredItem = "";
_exit = false;
_resourceCfg = missionConfigFile >> "CfgGather" >> "Resources";
for "_i" from 0 to count(_resourceCfg)-1 do {
_curConfig = _resourceCfg select _i;
_resource = configName _curConfig;
_maxGather = getNumber(_curConfig >> "amount");
_zoneSize = getNumber(_curConfig >> "zoneSize");
_resourceZones = getArray(_curConfig >> "zones");
_requiredItem = getText(_curConfig >> "item");
{
if ((player distance (getMarkerPos _x)) < _zoneSize) exitWith {_zone = _x;};
} forEach _resourceZones;
if (_zone != "") exitWith {};
};
if (_zone isEqualTo "") exitWith {life_action_inUse = false;};
if (_requiredItem != "") then {
_valItem = missionNamespace getVariable "life_inv_" + _requiredItem;
if (_valItem < 1) exitWith {
switch (_requiredItem) do {
//Messages here
};
life_action_inUse = false;
_exit = true;
};
};
if (_exit) exitWith {life_action_inUse = false;};
while{true} do {
if(life_interrupted) exitWith {life_interrupted = false;};
_amount = round(random(_maxGather)) + 1;
_diff = [_resource,_amount,life_carryWeight,life_maxWeight] call life_fnc_calWeightDiff;
if (_diff isEqualTo 0) exitWith {
hint localize "STR_NOTF_InvFull";
life_action_inUse = false;
};
switch (_requiredItem) do {
case "pickaxe": {player say3D "mining";};
default {player say3D "harvest";};
};
switch (_requiredItem) do {
case "schaufel": {player say3D "Shovel";};
default {player say3D "harvest";};
};
switch (_requiredItem) do {
case "sieb": {player say3D "Goldnuggets";};
default {player say3D "harvest";};
};
for "_i" from 0 to 4 do {
player playMoveNow "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";
waitUntil{animationState player != "AinvPercMstpSnonWnonDnon_Putdown_AmovPercMstpSnonWnonDnon";};
sleep 0.5;
};
if ([true,_resource,_diff] call life_fnc_handleInv) then {
_itemName = M_CONFIG(getText,"VirtualItems",_resource,"displayName");
titleText[format [localize "STR_NOTF_Gather_Success",(localize _itemName),_diff],"PLAIN"];
};
};
sleep 1;
life_action_inUse = false;
Alles anzeigen
Danke vielmals im Voraus für die Hilfe, LG
Wie kannst du diese Fehler so schnell finden? Und wo bzw wie erkennst du das?
Er schrieb was fon einem fehlenden ; in einer Zeile die es gar nicht gibt!?
Ist mir echt Rätselhaft, ich würde hier Stundenlang Zeile für Zeile durchlesen und wahrscheinlich keinen Fehler finden
Hast du da ein Program dafür oder wie?
Wie auch immer, ich habe nun die Korregierte Version drinnnen und habe den Container aufgeladen
Habe den Container abgeladen und dort versucht mit T zu zugreifen (Auf und Abschliessen auch versucht)
Es wird aber beim Aufladen das Gesamtgewicht des LKW mit Container angezeigt
Hier habe ich noch eine fn_openInventory für die V.3.1.4.8 gefunden, wird wahrscheinlich nicht helfen aber vielleicht kannst du daraus ja was erkennen
Ps: mit dem Code zum Erstellen des Siebes gehts auch nicht, du hast mir das gschrieben für die NPC Init:
this enableSimulation false;
this allowDamage false;
this addAction[localize"STR_Process_Sieb",life_fnc_processAction,"Sieb",0,false,false,"",' life_inv_Holz > 0 && life_inv_iron_refined > 0 && !life_is_processing && !life_action_inUse && vehicle player isEqualTo player'];
this addAction[format ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "Bau" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "Bau" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"Bau",0,false,false,"",' !license_civ_Bau && playerSide isEqualTo civilian '];
Wenn ich nun davor steht tut er gar nichts, kann nichts auswählen ausser das ich die Lizenz BAU kaufen konnte.
Die benötigten Materialien wie Holz und Eisenbarren habe ich zu Genüge im Inventar.
Ich habe nun den von dir eingestellten Code in die openInventory eingegeben
#include "..\..\script_macros.hpp"
private ["_vehicle","_veh_data"];
if (dialog) exitWith {};
_vehicle = [_this,0,objNull,[objNull]] call BIS_fnc_param;
if (isNull _vehicle || !(_vehicle isKindOf "Car" || _vehicle isKindOf "Air" || _vehicle isKindOf "Ship" || _vehicle isKindOf "Box_IND_Grenades_F" || _vehicle isKindOf "B_supplyCrate_F")) exitWith {};
if ((_vehicle getVariable ["trunk_in_use",false])) exitWith {hint localize "STR_MISC_VehInvUse"};
_vehicle setVariable ["trunk_in_use",true,true];
_vehicle setVariable ["trunk_in_use_by",player,true];
if (!createDialog "TrunkMenu") exitWith {hint localize "STR_MISC_DialogError";};
disableSerialization;
if (_vehicle isKindOf "Box_IND_Grenades_F" || _vehicle isKindOf "B_supplyCrate_F") then {
ctrlSetText[3501,format [(localize "STR_MISC_HouseStorage")+ " - %1",getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName")]];
} else {
ctrlSetText[3501,format [(localize "STR_MISC_VehStorage")+ " - %1",getText(configFile >> "CfgVehicles" >> (typeOf _vehicle) >> "displayName")]];
};
_veh_data = [_vehicle] call life_fnc_vehicleWeight;
_anzahl = 0;
{
_anzahl = _anzahl+1
hint format ["Anzahl: %1, Container: %2",_anzahl,(typeOf _x)];
diag_log format ["Anzahl: %1, Container: %2",_anzahl,(typeOf _x)];
_veh_data = _veh_data + ([_x] call life_fnc_vehicleWeight);
} count (attachedObjects _vehicle);
if (_veh_data select 0 isEqualTo -1) exitWith {closeDialog 0; _vehicle setVariable ["trunk_in_use",false,true]; hint localize "STR_MISC_NoStorageVeh";};
ctrlSetText[3504,format [(localize "STR_MISC_Weight")+ " %1/%2",_veh_data select 1,_veh_data select 0]];
[_vehicle] call life_fnc_vehInventory;
life_trunk_vehicle = _vehicle;
_vehicle spawn {
waitUntil {isNull (findDisplay 3500)};
_this setVariable ["trunk_in_use",false,true];
if (_this isKindOf "Box_IND_Grenades_F" || _this isKindOf "B_supplyCrate_F") then {
if (life_HC_isActive) then {
[_this] remoteExecCall ["HC_fnc_updateHouseTrunk",HC_Life];
} else {
[_this] remoteExecCall ["TON_fnc_updateHouseTrunk",2];
};
};
};
if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
_vehicle spawn {
waitUntil {isNull (findDisplay 3500)};
_this setVariable ["trunk_in_use",false,true];
if ((_this isKindOf "Car") || (_this isKindOf "Air") || (_this isKindOf "Ship")) then {
[] call SOCK_fnc_updateRequest;
if (life_HC_isActive) then {
[_this,2] remoteExecCall ["HC_fnc_vehicleUpdate",HC_Life];
} else {
[_this,2] remoteExecCall ["TON_fnc_vehicleUpdate",2];
};
};
};
};
Alles anzeigen
und kann nun auf den Kofferraum gar nicht mehr zugreifen, weder mit noch ohne Container
Hier die Bilder:
bitte keine externen Links verwenden
Die Logfile von Server hänge ich wie gewünscht dazu.
Danke dir
So mein lieber moeck...
habe nun deine openInventory eingefügt und mir einen Container geholt aber leider habe ich immer noch nur die Lagerplatzmenge vom LKW!?
Also 200, normalerweise hat der LKW 200 Platz und der kleine Container dazu 250, also sollte man ja 450 Platz haben!?
Container in der Vehicle_config
//Kleiner Container
class Land_CargoBox_V1_F {
vItemSpace = 250;
conditions = "";
price = 50000;
textures[] = {};
};
Fahrzeug in der Vehicle Config
class I_Truck_02_transport_F {
vItemSpace = 200;
conditions = "license_civ_trucking {!(playerSide isEqualTo civilian)}";
price = 75000;
textures[] = {
{ "Orange", "civ", {
"\A3\Soft_F_Beta\Truck_02\data\truck_02_kab_co.paa",
"\a3\soft_f_beta\Truck_02\data\truck_02_kuz_co.paa"
} },
{ "Schwarz", "civ", {
"#(argb,8,8,3)color(0.05,0.05,0.05,1)"
} }
};
};
Hier wieder ein Screen dazu:
Administrativ Entfernt --- Bitte keine externen Links verwenden
PS: Die Description ging wieder nicht, warf nen Fehler in angeblich Zeile 404 aus, konnte keinen finden und habe Sie nun durch die Originale Englische ersetzt, werde diese beizeiten nochmal umschreiben
LG
Danke moeck, ich glaube unsere Einträge haben sich um ein paar Sekunden Überschnitten, habs letztendlich gefunden, jedoch was ich nicht gefunden habe ist der Eintrag in der Init des NPC!
Ich habe folgendes drinnen stehen:
this enableSimulation false;
this allowDamage false;
this addAction[localize"STR_Process_Sieb",life_fnc_processAction,"Sieb",0,false,false,"",' life_inv_Holz > 0 && !life_is_processing && !life_action_inUse'];
this addAction[format ["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "Bau" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "Bau" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"Bau",0,false,false,"",' !license_civ_Bau && playerSide isEqualTo civilian '];
Also der STR_Process_Sieb ist in der Stinrgtable.xml als Sieb wird hergestellt eingetragen.
Der Eintrag life_fnc_processAction,"Sieb" bedeutet das ein SIEB hergestellt wird. (Menge wird in der Config_Process.hpp definiert wieviele man bekommt)
Der Eintrag life_inv_Holz bedeutet das Holz gebraucht wird. (Menge wird in der Config_Process.hpp definiert wieviele man benötigt)
Der Eintrag license_civ_Bau bedeutet das ich die Lizenz Bau dafür benötige und wenn ich sie nicht habe da kaufen kann usw...
In der Stringtable ist alles eingetragen, in der config_VItems.hpp natürlich auch, Icons sind ebenso erstellt und im Icons Ordner..Pfade natürlich angegben.
Meine Frage nun dazu lautet was muss ich nun in der INIT des NPC hinzuschreiben das auch Eisenbarren iron_refined ebenso benötigt werden?
Oder wird das automatisch aus der Config_Process.hpp bezogen weil es da eingetragen ist?
Dankeschön
@moeck....weisst du zufällig auch wie man beim Verarbeiten mehr als nur einen Rohstoff braucht bzw reinschreibt?
Ich möchte aus Holz und Eisen ein SIEB herstellen lassen und habe in der Config:Process dies reingeschrieben:
class Sieb {
MaterialsReq[] = {{"Holz",5}}; //Man bringt 5 Holz
MaterialsGive[] = {{"Sieb",1}}; // Man bekommt ein Sieb
Text = "STR_Process_SiebHerstellen";
//ScrollText = "Sieb wird hergestellt";
NoLicenseCost = 250;
Funktioniert zwar aber ich möchte auch das man neben dem Holz auch noch Eisen braucht MaterialsReq[] =
Ich weiss das es nicht zu diesem Thema passt aber dafür einen eigenen Thread zu öffnen wäre eher sinnlos oder?
Danke dir!
Moin moeck
Also im Briefing habe ich nichts verändert, dieser Fehler wurde durch das bearbeiten der FIles die für die Container sind mit ausgegeben...why? I don´t know!
Meine Frage nun was sind das für Fehler und vor allem wie schon öfter mal gefragt....WELCHE Variable fehlt im und wohin muss diese?
Ich habe keinen Plan davon, darum würde es mich freuen wenn ein Lösungsvorschlag kommen würde, das die Fehler da sind ist mir klar, kann ich ja auch lesen, aber ich habe keinen Plan zur Lösung des Problemes bzw der Probleme.
Danke
Hier die CliebtLogs, Serverlogs weiss ich ned wo die genau sind.
Arma3_x64_2018-03-26_22-55-26.rpt
Und ja ich habs gelesen das in den Logs der Fehler mit Undefinierte Variablen lautet