hänge mal deinen actionKeyhandler an
Beiträge von moeck
-
-
Wie so blendest Du nicht einfach bei dem Laden den Kaufen Button aus
, ich denke das wäre die einfachste Lösung
-
So hier mal die fertige Datei
C: fn_vehicleShopBuy.sqf
Alles anzeigen/* File: fn_vehicleShopBuy.sqf Author: Bryan "Tonic" Boardwine Description: Does something with vehicle purchasing. */ private["_mode","_spawnPoints","_className","_basePrice","_colorIndex","_spawnPoint","_vehicle"]; _mode = _this select 0; if((lbCurSel 2302) == -1) exitWith {hintSilent localize "STR_Shop_Veh_DidntPick"}; _className = lbData[2302,(lbCurSel 2302)]; _vIndex = lbValue[2302,(lbCurSel 2302)]; _vehicleList = [life_veh_shop select 0] call life_fnc_vehicleListCfg; _basePrice = (_vehicleList select _vIndex) select 1; if(_mode) then {_basePrice = round(_basePrice * 1.5)}; _colorIndex = lbValue[2304,(lbCurSel 2304)]; //Series of checks (YAY!) if(_basePrice < 0) exitWith {}; //Bad price entry if(life_cash < _basePrice) exitWith {hintSilent format[localize "STR_Shop_Veh_NotEnough",[_basePrice - life_cash] call life_fnc_numberText];}; if(!([_className] call life_fnc_vehShopLicenses) && _className != "B_MRAP_01_hmg_F") exitWith {hintSilent localize "STR_Shop_Veh_NoLicense"}; _spawnPoints = life_veh_shop select 1; _spawnPoint = ""; if((life_veh_shop select 0) == "med_air_hs") then { if(count(nearestObjects[(getMarkerPos _spawnPoints),["Air"],35]) == 0) exitWith {_spawnPoint = _spawnPoints}; } else { //Check if there is multiple spawn points and find a suitable spawnpoint. if(typeName _spawnPoints == typeName []) then { //Find an available spawn point. {if(count(nearestObjects[(getMarkerPos _x),["Car","Ship","Air"],5]) == 0) exitWith {_spawnPoint = _x};} foreach _spawnPoints; } else { if(count(nearestObjects[(getMarkerPos _spawnPoints),["Car","Ship","Air"],5]) == 0) exitWith {_spawnPoint = _spawnPoints}; }; }; if(_spawnPoint == "") exitWith {hintSilent localize "STR_Shop_Veh_Block";}; life_cash = life_cash - _basePrice; hintSilent format[localize "STR_Shop_Veh_Bought",getText(configFile >> "CfgVehicles" >> _className >> "displayName"),[_basePrice] call life_fnc_numberText]; //Spawn the vehicle and prep it. if((life_veh_shop select 0) == "med_air_hs") then { _vehicle = createVehicle [_className,[0,0,999],[], 0, "NONE"]; waitUntil {!isNil "_vehicle"}; //Wait? _vehicle allowDamage false; _hs = nearestObjects[getMarkerPos _spawnPoint,["Land_Hospital_side2_F"],50] select 0; _vehicle setPosATL (_hs modelToWorld [-0.4,-4,12.65]); _vehicle lock 2; [[_vehicle,_colorIndex],"life_fnc_colorVehicle",true,false] spawn life_fnc_MP; [_vehicle] call life_fnc_clearVehicleAmmo; [[_vehicle,"trunk_in_use",false,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP; [[_vehicle,"vehicle_info_owners",[[getPlayerUID player,profileName]],true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP; _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive. } else { _pos = getMarkerPos _spawnPoint; if (_spawnPoint isEqualTo "civ_air_2") then { _pos = [_pos select 0,_pos select 1,209.513]; }; _vehicle = createVehicle [_className, (getMarkerPos _spawnPoint), [], 0, "NONE"]; waitUntil {!isNil "_vehicle"}; //Wait? _vehicle allowDamage false; //Temp disable damage handling.. _vehicle lock 2; _vehicle setVectorUp (surfaceNormal (getMarkerPos _spawnPoint)); _vehicle setDir (markerDir _spawnPoint); if !( _vehicle isKindOf "Ship") then {_vehicle setPosATL _pos;} else {_vehicle setPosASL _pos;}; [[_vehicle,_colorIndex],"life_fnc_colorVehicle",true,false] spawn life_fnc_MP; [_vehicle] call life_fnc_clearVehicleAmmo; [[_vehicle,"trunk_in_use",false,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP; [[_vehicle,"vehicle_info_owners",[[getPlayerUID player,profileName]],true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP; _vehicle disableTIEquipment true; //No Thermals.. They're cheap but addictive. }; //Side Specific actions. switch(playerSide) do { case west: { [_vehicle,"cop_offroad",true] spawn life_fnc_vehicleAnimate; }; case civilian: { if((life_veh_shop select 2) == "civ" && {_className == "B_Heli_Light_01_F"}) then { [_vehicle,"civ_littlebird",true] spawn life_fnc_vehicleAnimate; }; }; case independent: { [_vehicle,"med_offroad",true] spawn life_fnc_vehicleAnimate; }; }; _vehicle allowDamage true; //life_vehicles set[count life_vehicles,_vehicle]; //Add err to the chain. life_vehicles pushBack _vehicle; [[getPlayerUID player,playerSide,_vehicle,1],"TON_fnc_keyManagement",false,false] spawn life_fnc_MP; if(_mode) then { if(!(_className in ["B_G_Offroad_01_armed_F","B_MRAP_01_hmg_F"])) then { [[(getPlayerUID player),playerSide,_vehicle,_colorIndex],"TON_fnc_vehicleCreate",false,false] spawn life_fnc_MP; }; }; _box = boundingBox _vehicle; _offset = _box select 1; //Gets an array with the maximum bounding values _offset = _offset select 2; //Gets the Maxmimum Z height _offset = _offset + 0.8; //Just a few inches more... _sp = visiblePosition _vehicle; _sp = _sp vectorAdd [0,0,_offset]; _vh = createVehicle ["Sign_Arrow_Large_F", _sp ,[],0,"NONE"]; _vh setPos _sp; [0] call SOCK_fnc_updatePartial; closeDialog 0; //Exit the menu. true; sleep 10; deleteVehicle _vh;
so hier noch die Erklärung was ich gemacht habe.
In Zeile 56 habe ich das folgende eingefügt
Code_pos = getMarkerPos _spawnPoint; if (_spawnPoint isEqualTo "civ_air_2") then { _pos = [_pos select 0,_pos select 1,209.513]; };
In _pos wird die orginale Position des Markers gespeichert (auf dem Boden). Anschliessend wird geprüft ob der Marker "civ_air_2" ist und wenn dies zutrifft verlegen wir die Höhe des Markers auf den gemessenen Wert von 209.512
heisst wir nehmen die Position x und y vom Marker und ersetzen die z Position mit dem ermittelten Wert von 209.512
_pos = [_pos select 0,_pos select 1,209.513]; Ist der 3, Wert im Array.
Anschliessend ersetzen wir noch Zeile 66 damit auch die Position richtig übernommen wird und nicht die Position auf dem Grund
if !( _vehicle isKindOf "Ship") then {_vehicle setPosATL _pos;} else {_vehicle setPosASL _pos;};
Da ich ein paar kleinere Probleme mit den Booten hatte habe ich das setPos mal mit einer If Anweisung versehen, damit Boote auf der Wasserobfläche spawnen
So einfach ersetzen und Spass haben
Gruß,
moeck
-
so eine Frage wie heisst der Marker, den namen brauche ich dazu
-
Lucky1302 dort wo du den Shop haben willst setzt du z.b. ein schild oder einen Jet im Editor. Anschliessend doppelklicken und nimmst den z-wert. Das ist dann die Höhe, die Du benötigst. Bitte beachte auf dem Träger kannst Du nur mit Helis oder dem Black Wasp starten. Andere Jets werden dort nicht richtig starten.
-
-
-
Moin,
hier mal das medicInteractionMenu.sqf
C: fn_medicInteractionMenu.sqf
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_copInteractionMenu.sqf Author: Bryan "Tonic" Boardwine Description: Replaces the mass addactions for various cop actions towards another player. */ #define Btn1 37450 #define Btn2 37451 #define Btn3 37452 #define Btn4 37453 #define Btn5 37454 #define Btn6 37455 #define Btn7 37456 #define Btn8 37457 #define Title 37401 private["_display","_curTarget","_seizeRank","_Btn1","_Btn2","_Btn3","_Btn4","_Btn5","_Btn6","_Btn7","_Btn8"]; disableSerialization; _curTarget = param [0,objNull,[objNull]]; //_seizeRank = LIFE_SETTINGS(getNumber,"seize_minimum_rank"); if (player getVariable ["Escorting", false]) then { if (isNull _curTarget) exitWith {closeDialog 0;}; //Bad target if (!isPlayer _curTarget && side _curTarget isEqualTo civilian) exitWith {closeDialog 0;}; //Bad side check? if (player distance _curTarget > 4 ) exitWith {closeDialog 0;}; // Prevents menu accessing from far distances. }; if (!dialog) then { createDialog "pInteraction_Menu"; }; _display = findDisplay 37400; _Btn1 = _display displayCtrl Btn1; _Btn2 = _display displayCtrl Btn2; _Btn3 = _display displayCtrl Btn3; _Btn4 = _display displayCtrl Btn4; _Btn5 = _display displayCtrl Btn5; _Btn6 = _display displayCtrl Btn6; _Btn7 = _display displayCtrl Btn7; _Btn8 = _display displayCtrl Btn8; life_pInact_curTarget = _curTarget; if (player getVariable["isEscorting",false]) then { { _x ctrlShow false; } forEach [_Btn1,_Btn2,_Btn3,_Btn5,_Btn6,_Btn7,_Btn8]; }; //Set Unrestrain Button _Btn1 ctrlSetText localize "STR_pInAct_Unrestrain"; _Btn1 buttonSetAction "[life_pInact_curTarget] call life_fnc_unrestrain; closeDialog 0;"; //Set Escort Button if (player getVariable["isEscorting",false]) then { _Btn2 ctrlSetText localize "STR_pInAct_StopEscort"; _Btn2 buttonSetAction "[] call life_fnc_stopEscorting; closeDialog 0;"; } else { _Btn2 ctrlSetText localize "STR_pInAct_Escort"; _Btn2 buttonSetAction "[life_pInact_curTarget] call life_fnc_escortAction; closeDialog 0;"; }; _Btn3 ctrlSetText localize "STR_pInAct_PutInCar"; _Btn3 buttonSetAction "[life_pInact_curTarget] call life_fnc_putInCar; closeDialog 0;"; _Btn4 ctrlShow false; _Btn5 ctrlShow false; _Btn6 ctrlShow false; _Btn7 ctrlShow false; _Btn8 ctrlShow false;
So die Datei packst Du in den Ordner medical anschliessend musst Du das Ganze noch in der Functions.hpp bekannt machen
und natürlich auch im actionKeyHandler integrieren. Ich habe Dir unten mal die Stelle raus gesucht. Solltest Du noch nichts im actionKeyHandler gemacht haben musst nur das
C: fn_actionKeyHandler.sqfif (isPlayer _curObject && _curObject isKindOf "Man") then { if ((_curObject getVariable ["restrained",false]) && !dialog && playerSide isEqualTo west) then { [_curObject] call life_fnc_copInteractionMenu; }; } else {
durch das ersetzen.
C: fn_actionKeyHandler.sqfif (isPlayer _curObject && _curObject isKindOf "Man") then { if ((_curObject getVariable ["restrained",false]) && !dialog && playerSide isEqualTo west) then { [_curObject] call life_fnc_copInteractionMenu; }; if ((_curObject getVariable ["restrained",false]) &&!dialog && playerSide isEqualTo independent) then { [_curObject] call life_fnc_medicInteractionMenu; }; } else {
Gruß,
moeck
-
Moin zusammen,
ich habe mal ein wenig im Forum gesucht und folgendes Tut gefunden.
[TUTORIAL] Auto und Garagen Spawn erhöhen.
Meine eigene Lösung sieht ebenfalls so aus allerdings ohne dass ich mir das Tutorial angeschaut habe. Lucky1302 gib mir mal den Marker, die Höhe und am Besten gleich noch die fn_unimpound.sqf sofern Du es nur als Garage nutzen willst. Solltest Du auch einen Shop dort haben brauche ich die fn_vehicleShopBuy.sqf
Gruß,
moeck
-
naja ich mache das trotzdem mal fertig, ist eigentlich total simple
-
ja klar, poste mal seien queryreceive
-
tja dann poste mal die datei core\gangs\fn_initGang.sqf
-
Ich werde morgen mal ein kleines Tut dafür schreiben
-
nein das funktioniert nicht wirklich, da das Fahrzeug durch die Gegend fliegt.
-
ich würde es ja so einbauen wie bereits gepostet, das funzt 1a
-
Autos weiter übern Boden Spawnen?
bitte schön, hiermit kann man die höhe einstellen
-
Oder aber du stellst ein Schild an die Stelle und verlegst die Höhe des Spawn
-
dann hänge bitte mal die von den Cops hier an. Ich baue da morgen mal was zusammen.
-
sorry habe mich vertan, es muss ja die medicInterAction datei sein, sofern die schon existiert
\core\medical\
zur handleDamage musst Du folgendes ändern, dann kann man auch medics tazern
Code
Alles anzeigen#include "..\..\script_macros.hpp" /* File: fn_handleDamage.sqf Author: Bryan "Tonic" Boardwine Description: Handles damage, specifically for handling the 'tazer' pistol and nothing else. */ private["_unit","_damage","_source","_projectile","_part","_curWep"]; _unit = _this select 0; _part = _this select 1; _damage = _this select 2; _source = _this select 3; _projectile = _this select 4; //Handle the tazer first (Top-Priority). if (!isNull _source) then { if (_source != _unit) then { if (_unit getVariable["Revive",false]) exitWith {}; _curWep = currentWeapon _source; if (_projectile in ["B_9x21_Ball","B_556x45_dual"] && _curWep in ["hgun_P07_snds_F","arifle_SDAR_F"]) then { if (side _source isEqualTo west && (playerSide in [civilian,independent])) then { private["_distance"]; _distance = if (_projectile == "B_556x45_dual") then {100} else {35}; _damage = false; if (_unit distance _source < _distance) then { if (!life_istazed && !life_isknocked && !(_unit getVariable ["restrained",false])) then { if (vehicle player != player) then { if (typeOf (vehicle player) == "B_Quadbike_01_F") then { player action ["Eject",vehicle player]; [_unit,_source] spawn life_fnc_tazed; }; } else { [_unit,_source] spawn life_fnc_tazed; }; }; }; }; //Temp fix for super tasers on cops. if (side _source isEqualTo west && playerSide isEqualTo west) then { _damage = false; }; }; }; }; [] spawn life_fnc_hudUpdate; _damage;
-
na zum beispiel wäre es gut wenn du mal im server ausgibst ob der server ready ist. Dazu wäre es gut zu wissen was beim client ankommt ob er die Sachen sauber aus der DB lädt. dazu müsste man mal eine LogAusgabe in der quryreceive einbauen was er an daten bekommt