Hat hier jemand was von MasterHandler.hpp gesagt?
Schöne Woche
Hat hier jemand was von MasterHandler.hpp gesagt?
Schöne Woche
Hallo,
ich habe ein neues Menü gebaut, welches ich in das Spiel integrieren möchte und über das Z-Menü öffnen möchte.
Dieses habe ich versucht mit dem Befehl onButtonClick = "createDialog ""Medicmenu"";"; aufzurufen.
Die Class in meiner .hpp habe ich mit dem selben Namen benannt.
Die Menüs, welche ich für jede Fraktion gebaut habe sind in der Description.ext eingetragen und werden von Spiel auch erkannt (das weiß ich, weil ich eine Klammer in dem Menü vergessen hatte und das Spiel dann rumgejault hat ).
Mein Menüdialog:
/*
Author: BioniC
Version: V1.01; #Qodiso
*/
class Medicmenu {
idd = 988721;
name = "medicmenu";
movingEnable = 0;
enableSimulation = 1;
class controlsBackground {
class bg: Life_RscText
{
idc = -1;
x = 0.396875 * safezoneW + safezoneX;
y = 0.302 * safezoneH + safezoneY;
w = 0.185625 * safezoneW;
h = 0.374 * safezoneH;
colorBackground[] = {-1,-1,-1,0.7};
};
class redtop: Life_RscText
{
idc = -1;
x = 0.396875 * safezoneW + safezoneX;
y = 0.302 * safezoneH + safezoneY;
w = 0.185625 * safezoneW;
h = 0.0055 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
class RedTextHeader: Life_RscText
{
idc = -1;
text = "Sanitätermenü"; //--- ToDo: Localize;
x = 0.396875 * safezoneW + safezoneX;
y = 0.313 * safezoneH + safezoneY;
w = 0.185625 * safezoneW;
h = 0.022 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
class redbelow: Life_RscText
{
idc = -1;
x = 0.396875 * safezoneW + safezoneX;
y = 0.676 * safezoneH + safezoneY;
w = 0.185625 * safezoneW;
h = 0.0055 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
};
class controls {
class Button1: Life_RscButtonMenu
{
idc = 2012;
text = "Barriere errichten"; //--- ToDo: Localize;
onButtonClick = "closeDialog 0; [] call life_fnc_placeablesMenu";
x = 0.4175 * safezoneW + safezoneX;
y = 0.357 * safezoneH + safezoneY;
w = 0.144375 * safezoneW;
h = 0.022 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
class Button2: Life_RscButtonMenu
{
idc = -1;
text = "Navigationssystem"; //--- ToDo: Localize;
onButtonClick = "closeDialog 0; createDialog ""MAV_guiNavigation"";";
x = 0.4175 * safezoneW + safezoneX;
y = 0.401 * safezoneH + safezoneY;
w = 0.144375 * safezoneW;
h = 0.022 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
/*
class Button3: Life_RscButtonMenu
{
idc = -1;
text = "Navigationssystem"; //--- ToDo: Localize;
onButtonClick = "closeDialog 0; createDialog ""MAV_guiNavigation"";";
x = 0.4175 * safezoneW + safezoneX;
y = 0.445 * safezoneH + safezoneY;
w = 0.144375 * safezoneW;
h = 0.022 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
class Button4: Life_RscButtonMenu
{
idc = 2403;
text = "In Börse einsehen"; //--- ToDo: Localize;
onButtonClick = "closeDialog 0; createDialog ""life_dynmarket_prices"";";
x = 0.4175 * safezoneW + safezoneX;
y = 0.489 * safezoneH + safezoneY;
w = 0.144375 * safezoneW;
h = 0.022 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
*/
class ButtonClose: Life_RscButtonMenu
{
text = "Schliessen"; //--- ToDo: Localize;
onButtonClick = "closeDialog 0;";
x = 0.448438 * safezoneW + safezoneX;
y = 0.621 * safezoneH + safezoneY;
w = 0.0825 * safezoneW;
h = 0.033 * safezoneH;
colorBackground[] = {0.569,0.086,0.086,1};
};
};
};
Alles anzeigen
Vielen Dank im Voraus!
Gruß BioniC
Moin,
ich hatte genau das selbe Problem, dieses habe ich gelöst, indem ich es einem neuen Key zugewiesen habe.
Ich musste die einzelnen Fahrzeuge nicht in der spawnVehicle eintragen.
Ich lade dir trotzdem mal meine spawnVehicle.sqf hoch, du könntest versuchen, die einmal zu testen, da ich da auch was dran gemacht habe, allerdings ist es schon ein wenig her, weshalb ich dir nicht mehr genau sagen kann, was ich da gemacht habe
#include "\life_server\script_macros.hpp"
/*
File: fn_spawnVehicle.sqf
Author: Bryan "Tonic" Boardwine
Description:
Sends the query request to the database, if an array is returned then it creates
the vehicle if it's not in use or dead.
*/
params [
["_vid", -1, [0]],
["_pid", "", [""]],
["_sp", [], [[],""]],
["_unit", objNull, [objNull]],
["_price", 0, [0]],
["_dir", 0, [0]],
"_spawntext"
];
private _unit_return = _unit;
private _name = name _unit;
private _side = side _unit;
_unit = owner _unit;
if (_vid isEqualTo -1 || {_pid isEqualTo ""}) exitWith {};
if (_vid in serv_sv_use) exitWith {};
serv_sv_use pushBack _vid;
private _servIndex = serv_sv_use find _vid;
private _query = format ["SELECT id, side, classname, type, pid, alive, active, plate, color, inventory, gear, fuel, damage, blacklist FROM vehicles WHERE id='%1' AND pid='%2'",_vid,_pid];
private _tickTime = diag_tickTime;
private _queryResult = [_query,2] call DB_fnc_asyncCall;
if (EXTDB_SETTING(getNumber,"DebugMode") isEqualTo 1) then {
diag_log "------------- Client Query Request -------------";
diag_log format ["QUERY: %1",_query];
diag_log format ["Time to complete: %1 (in seconds)",(diag_tickTime - _tickTime)];
diag_log format ["Result: %1",_queryResult];
diag_log "------------------------------------------------";
};
if (_queryResult isEqualType "") exitWith {};
private _vInfo = _queryResult;
if (isNil "_vInfo") exitWith {serv_sv_use deleteAt _servIndex;};
if (count _vInfo isEqualTo 0) exitWith {serv_sv_use deleteAt _servIndex;};
if ((_vInfo select 5) isEqualTo 0) exitWith {
serv_sv_use deleteAt _servIndex;
[1,"STR_Garage_SQLError_Destroyed",true,[_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
if ((_vInfo select 6) isEqualTo 1) exitWith {
serv_sv_use deleteAt _servIndex;
[1,"STR_Garage_SQLError_Active",true,[_vInfo select 2]] remoteExecCall ["life_fnc_broadcast",_unit];
};
private "_nearVehicles";
if !(_sp isEqualType "") then {
_nearVehicles = nearestObjects[_sp,["Car","Air","Ship"],10];
} else {
_nearVehicles = [];
};
if (count _nearVehicles > 0) exitWith {
serv_sv_use deleteAt _servIndex;
[_price,_unit_return] remoteExecCall ["life_fnc_garageRefund",_unit];
[1,"STR_Garage_SpawnPointError",true] remoteExecCall ["life_fnc_broadcast",_unit];
};
_query = format ["UPDATE vehicles SET active='1', damage='""[]""' WHERE pid='%1' AND id='%2'",_pid,_vid];
private _trunk = [(_vInfo select 9)] call DB_fnc_mresToArray;
private _gear = [(_vInfo select 10)] call DB_fnc_mresToArray;
private _damage = [call compile (_vInfo select 12)] call DB_fnc_mresToArray;
private _wasIllegal = _vInfo select 13;
_wasIllegal = if (_wasIllegal isEqualTo 1) then { true } else { false };
[_query,1] call DB_fnc_asyncCall;
private "_vehicle";
if (_sp isEqualType "") then {
_vehicle = createVehicle[(_vInfo select 2),[0,0,999],[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_hs = nearestObjects[getMarkerPos _sp,["Land_Hospital_side2_F"],50] select 0;
_vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]);
uiSleep 0.6;
} else {
_vehicle = createVehicle [(_vInfo select 2),_sp,[],0,"NONE"];
waitUntil {!isNil "_vehicle" && {!isNull _vehicle}};
_vehicle allowDamage false;
_vehicle setPos _sp;
_vehicle setVectorUp (surfaceNormal _sp);
_vehicle setDir _dir;
};
_vehicle allowDamage true;
//Send keys over the network.
[_vehicle] remoteExecCall ["life_fnc_addVehicle2Chain",_unit];
[_pid,_side,_vehicle,1] call TON_fnc_keyManagement;
_vehicle lock 2;
//Reskin the vehicle
[_vehicle,(_vInfo select 8)] remoteExecCall ["life_fnc_colorVehicle",_unit];
_vehicle setVariable ["vehicle_info_owners",[[_pid,_name]],true];
_vehicle setVariable ["dbInfo",[(_vInfo select 4),(_vInfo select 7)],true];
_vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive.
_vehicle setVariable ["lights",false,true];
[_vehicle] call life_fnc_clearVehicleAmmo;
if (LIFE_SETTINGS(getNumber,"save_vehicle_virtualItems") isEqualTo 1) then {
_vehicle setVariable ["Trunk",_trunk,true];
if (_wasIllegal) then {
private _refPoint = if (_sp isEqualType "") then {getMarkerPos _sp;} else {_sp;};
private _distance = 100000;
private "_location";
{
private _tempLocation = nearestLocation [_refPoint, _x];
private _tempDistance = _refPoint distance _tempLocation;
if (_tempDistance < _distance) then {
_location = _tempLocation;
_distance = _tempDistance;
};
false
} count ["NameCityCapital", "NameCity", "NameVillage"];
_location = text _location;
[1,"STR_NOTF_BlackListedVehicle",true,[_location,_name]] remoteExecCall ["life_fnc_broadcast",west];
_query = format ["UPDATE vehicles SET blacklist='0' WHERE id='%1' AND pid='%2'",_vid,_pid];
[_query,1] call DB_fnc_asyncCall;
};
} else {
_vehicle setVariable ["Trunk",[[],0],true];
};
if (LIFE_SETTINGS(getNumber,"save_vehicle_fuel") isEqualTo 1) then {
_vehicle setFuel (_vInfo select 11);
}else{
_vehicle setFuel 1;
};
if (count _gear > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_inventory") isEqualTo 1)) then {
_items = _gear select 0;
_mags = _gear select 1;
_weapons = _gear select 2;
_backpacks = _gear select 3;
for "_i" from 0 to ((count (_items select 0)) - 1) do {
_vehicle addItemCargoGlobal [((_items select 0) select _i), ((_items select 1) select _i)];
};
for "_i" from 0 to ((count (_mags select 0)) - 1) do {
_vehicle addMagazineCargoGlobal [((_mags select 0) select _i), ((_mags select 1) select _i)];
};
for "_i" from 0 to ((count (_weapons select 0)) - 1) do {
_vehicle addWeaponCargoGlobal [((_weapons select 0) select _i), ((_weapons select 1) select _i)];
};
for "_i" from 0 to ((count (_backpacks select 0)) - 1) do {
_vehicle addBackpackCargoGlobal [((_backpacks select 0) select _i), ((_backpacks select 1) select _i)];
};
};
if (count _damage > 0 && (LIFE_SETTINGS(getNumber,"save_vehicle_damage") isEqualTo 1)) then {
_parts = getAllHitPointsDamage _vehicle;
for "_i" from 0 to ((count _damage) - 1) do {
_vehicle setHitPointDamage [format ["%1",((_parts select 0) select _i)],_damage select _i];
};
};
//Sets of animations
if ((_vInfo select 1) isEqualTo "civ" && (_vInfo select 2) isEqualTo "B_Heli_Light_01_F" && !((_vInfo select 8) isEqualTo 13)) then {
[_vehicle,"civ_littlebird",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if ((_vInfo select 1) isEqualTo "cop" && ((_vInfo select 2)) in ["C_Offroad_01_F","B_MRAP_01_F","C_SUV_01_F","C_Hatchback_01_sport_F","B_Heli_Light_01_F","B_Heli_Transport_01_F"]) then {
[_vehicle,"cop_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
if ((_vInfo select 1) isEqualTo "med" && (_vInfo select 2) isEqualTo "C_Offroad_01_F") then {
[_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
[1,_spawntext] remoteExecCall ["life_fnc_broadcast",_unit];
serv_sv_use deleteAt _servIndex;
Alles anzeigen
Desweiteren gebe ich dir noch den Auszug aus meiner KeyHandler, die Case kannst du ja beliebig umändern, solange der nicht belegt ist.
//F9 + Shift Medicblaulicht
case 67:
{
//If medic run checks for turning lights on.
if (_shift && playerSide in [independent]) then
{
if (!(isNull objectParent player) && (typeOf vehicle player) in ["C_Van_01_box_F","C_SUV_01_F","B_Heli_Light_01_F"]) then
{
if (!isNil {vehicle player getVariable "lights"}) then
{
if (playerSide isEqualTo independent) then
{
[vehicle player] call life_fnc_medicSirenLights;
};
_handled = true;
};
};
};
};
Alles anzeigen
Schönen guten Tag,
ich bin derzeit dabei, ein externes Rcon Tool einzubinden, um den Spielfluss besser zu überwachen.
Nun stoße ich auf folgendes Problem:
Wenn ich keine RconIp angebe, kann ich von meinem Privatcomputer nicht darauf zugreifen.
Wenn ich allerdings eine RconIp hinterlege, kann ich mit dem Tool auch problemlos connecten, allerdings wird mir ingame der Server nicht mehr angezeigt.
Woran könnte das liegen?
Verwendetes Tool: EPM Rcon
Mit freundlichen Grüßen
wurde in der remoteExec umgeändert in
Hatte das in meiner functions.hpp erst in eine andere class mit reingeschmissen und vergessen zu ändern.
Hallo, ich habe bezüglich diesen Scripts Probleme mit der remoteExec. Folgende Einträge habe ich bereits probiert:
F(fvs_fnc_lizenzzeigen,ANYONE)
F(fvs_fnc_lizenzzeigen,CLIENT)
F(fvs_fnc_lizenzsehen,ANYONE)
F(fvs_fnc_lizenzsehen,CLIENT)
Diese habe ich unabhängig voneinander getestet, teils auch zusammen.
Folgende Fehlermeldung erhalte ich im Client.RPT, wenn ich den Ausweis vorzeigen möchte:
Im Server.RPT ist davon nichts zu finden.
Wer sich vergewissern möchte, findet beide RPT's im Anhang.
Mit freundlichen Grüßen und ein schönes Restwochenende
Werden Perx und ich bald mal in die Hand nehmen
Vielen Dank Ray , wir haben jetzt den Dialog in der description.ext als rscTitle definiert und den per titleRsc in der core\init aufgerufen.
Ich bedanke mich für die Hilfe und wünsche einen angenehmen Sonntag!
Mit freundlichen Grüßen
Ray danke, das habe ich unter anderem gesucht.
Wie könnte man das Clientseitig callen?
Was ich noch probiert habe:
Ich habe in der initPlayerLocal eine Abfrage mit hasInterface gemacht und habe den dialog nach execVM core\Init nach einem waituntil geschlossen. Das hat den Dialog garnicht erst einblenden lassen.
Wenn ich das in der core\init aufrufe, wird es immer nur bei dem Ersten, der auf den Server joined aufgerufen.
Gruß
Moin SilentF0x , erst einmal danke für deinen Beitrag.
So ähnlich habe ich den Dialog auch gestaltet, nur in Universell und nicht Fraktionsgebunden.
Da wir allerdings keinen Modserver haben, können wir das nicht ebenfalls über einen Mod aufrufen.
Die Frage ist jetzt, wie man den Dialog in der core\init am besten called.
Ein weiteres Problem ist da natürlich, dass du, wenn ich mich nicht komplett irre, den Dialog per Escape wieder schließen kannst.
Weshalb ich mir denke, dass der Command createDialog nicht zum gewünschten Ziel führt.
Folgendes haben wir probiert:
createDialog "onLoadScreen";
diag_log "::ROAI Client:: Lade Map.";
0 cutText ["Wir bereiten die Map vor, bitte warte einen Augenblick","BLACK FADED"];
0 cutFadeOut 9999999;
if (hasInterface) then {
diag_log "YES";
wir lassen mal den ganzen bums laden......
closeDialog "onLoadScreen"
Alles anzeigen
den cutText blenden wir am Ende aus, dieses wird durch Bilder ersetzt.
Mit freundlichen Grüßen
Kay
Tass ich habe mich bisher nicht viel damit beschäftigt, allerdings habe ich da ebenfalls nur den offroader drin stehen und funktionieren tun meine blaulichter an allen medicfahrzeugen.
Zip wenn das allerdings den fehler beheben sollte, solltest du die restlichen fahrzeuge in einer auflistung in diesen teil hinzufügen, wie es in diversen beispielen im selben script schon getan wurde.
funktioniert denn das blaulicht beim offroader?
Tass meinte den auszug in der spawnVehicle:
if ((_vInfo select 1) isEqualTo "med" && (_vInfo select 2) isEqualTo "C_Offroad_01_F") then {
[_vehicle,"med_offroad",true] remoteExecCall ["life_fnc_vehicleAnimate",_unit];
};
an sich hat die animation meines wissens nach nichts mit dem blaulicht zu tun. ich habe das 1:1 so drin stehen, bei mir geht mein blaulicht auch. sind medicLights in der functions.hpp eingetragen?
hast du in die fn_spawnVehicle.sqf im lifeserver das blaulicht hinzugefügt? dort sollte unter _vehicle disableTIEquipment true; folgendes eingetragen werden: _vehicle setVariable ["lights",false,true];
wenn es nicht funktioniert, schau ich noch mal nach
versuch mal, den classname, sowie die variable der lizenz mit der gesuchten variable in der processaction gleichzusetzen.
ausschnitt fn_processaction.sqf:
ausschnitt config_licenses.hpp:
class papier
{
variable = "papier";
displayName = "STR_License_Papier";
price = 70000;
illegal = false;
side = "civ";
};
danach sollte alles funktionieren, nicht vergessen die initialisierung in den schildern zu ändern!
Alles anzeigenFunktioniert soweit ganz gut,
allerdings kann ich, wenn ich den Marker auf der Map platziere (beispiel weizen_1)
fn_gather.sqf:
case (_zone in ["weizen_1"]): {_gather = ["weizen",2];};
Kann ich nichts abbauen, er startet nicht einmal die Animation oder ähnliches.
Habe es schon mit etlichen Variablen versucht, nichts half.Vielen dank im vorraus.
Hast du im Editor wirklich Marker gesetzt oder andere Sachen wie z.B. Ellipsen?
Hatte auch das Problem, weil ich da erst mit Ellipsen arbeiten wollte, welche gleich die Größe angeben. Naja danach hab ich mir die gather.sqf mal angeschaut und durfte dann alles wieder ändern
this enableSimulation false; this allowDamage false;
this addAction[localize "STR_MAR_Process_Meth",life_fnc_processAction,"meth",0,false,false,"",' life_inv_methu > 0 && !life_is_processing'];
this addAction[format["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "meth" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "meth" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"meth",0,false,false,"",' !license_civ_meth && playerSide == civilian '
fehlt in der Init nicht einiges?
bei mir sieht der ganze spaß folgendermaßen aus:
this enableSimulation false; this allowDamage false;
this addAction[localize "STR_Process_Perlen",life_fnc_processAction,"perlen",0,false,false,"muscheln",' life_inv_muscheln > 0 && !life_is_processing'];
this addAction[format["%1 ($%2)",localize (getText(missionConfigFile >> "Licenses" >> "perlen" >> "displayName")), [(getNumber(missionConfigFile >> "Licenses" >> "perlen" >> "price"))] call life_fnc_numberText],life_fnc_buyLicense,"perlen",0,false,false,"perlen",' !license_civ_perlen && playerSide == civilian '];
an sich hat die processaction ja auch nichts mit dem farmen selbst zu tun.
wichtig ist in der gather.sqf, dass du die farmmarker nicht nur unten bei den cases einträgst, sondern auch weiter oben angibst.
Bei mir sieht das dann folgendermaßen aus:
if(isNil "life_action_gathering") then {life_action_gathering = false;};
private["_gather","_itemWeight","_diff","_itemName","_resourceZones","_zone"];
_resourceZones = ["apple_1","apple_2","apple_3","apple_4","peaches_1","peaches_2","peaches_3","peaches_4","heroin_1","cocaine_1","birne_1","birne_3","ora_1","ora_2","gur_1","kar_1","kar_2","kup_1","hol_1","dia_1","weed_1","musch_1","art_1","fos_1","kok_1"];
_zone = "";
if(life_action_inUse) exitWith {}; //Action is in use, exit to prevent spamming.
life_action_inUse = true;
//Find out what zone we're near
{
if(player distance (getMarkerPos _x) < 30) exitWith {_zone = _x;};
} foreach _resourceZones;
if(EQUAL(_zone,"")) exitWith {life_action_inUse = false;};
//Get the resource that will be gathered from the zone name...
switch(true) do {
case (_zone in ["apple_1","apple_2","apple_3","apple_4"]): {_gather = ["apple",3];};
case (_zone in ["peaches_1","peaches_2","peaches_3","peaches_4"]): {_gather = ["peach",3];};
case (_zone in ["heroin_1"]): {_gather = ["heroin_unprocessed",1];};
case (_zone in ["cocaine_1"]): {_gather = ["cocaine_unprocessed",1];};
case (_zone in ["birne_1"]): {_gather = ["birne",3];};
case (_zone in ["birne_3"]): {_gather = ["birne",3];};
case (_zone in ["ora_1"]): {_gather = ["orange",3];};
case (_zone in ["ora_2"]): {_gather = ["orange",3];};
case (_zone in ["gur_1"]): {_gather = ["gurke",3];};
case (_zone in ["kar_1"]): {_gather = ["kartoffelroh",2];};
case (_zone in ["kar_2"]): {_gather = ["kartoffelroh",2];};
case (_zone in ["kup_1"]): {_gather = ["kupfererz",2];};
case (_zone in ["hol_1"]): {_gather = ["holz",3];};
case (_zone in ["dia_1"]): {_gather = ["rohdiamant",3];};
case (_zone in ["weed_1"]): {_gather = ["kannabis",3];};
case (_zone in ["musch_1"]): {_gather = ["muscheln",3];};
case (_zone in ["art_1"]): {_gather = ["artefakteun",3];};
case (_zone in ["fos_1"]): {_gather = ["fossilienun",3];};
case (_zone in ["kok_1"]): {_gather = ["kokainun",3];};
default {""};
};
Alles anzeigen
ich hoffe, dass bei meinen lösungsansätzen auch was für dich dabei war.
gruß bionic
Xeon-Hosting und ClickServer kann ich empfehlen, wenn es um vServer und Webspace geht. Netter Support, gute Anbindung und jederzeit bei Fragen und Problemen erreichbar.