Hast Du die Sounds in der Description.ext auch definiert? Kannst Du bitte mal die Logs einfügen?
Beiträge von moeck
-
-
Guten Morgen zusammen,
da wir aktuell immer noch die 3.1.4.8 nutzen und auch Fahrzeuge wie den Xian, Blackfisch und Tempest Gerät skinnen möchten, mussten wir die Funktion fn_colorVehicle.sqf überarbeiten. In der orginalen Version können maximal 3 Dateien genutzt werden.
Wie immer untersage ich die Verbreitung des von mir verfassten Tutorials in anderen Foren ohne vorher mein Einverständnis dazu einzuholen.
Um das umzusetzen müsst ihr nur die Datei fn_colorVehicle.sqf durch den Code hier unten ersetzen.
C: fn_colorVehicle.sqf
Alles anzeigen/* File: fn_colorVehicle.sqf Author: Bryan "Tonic" Boardwine modified by moeck (LoP) Description: Reskins the vehicle */ private["_vehicle","_index","_texture","_textures"]; _vehicle = [_this,0,Objnull,[Objnull]] call BIS_fnc_param; _index = [_this,1,-1,[0]] call BIS_fnc_param; if(isNull _vehicle OR !alive _vehicle OR _index == -1) exitWith {}; //Does the vehicle already have random styles? Halt till it's set. if(local _vehicle) then { switch (typeOf _vehicle) do { case "C_Offroad_01_F": {[[_vehicle,"color",3,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Hatchback_01_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Hatchback_01_sport_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_SUV_01_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Van_01_box_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Van_01_transport_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; }; }; //Fetch texture from our present array. _textures = [(typeOf _vehicle)] call life_fnc_vehicleColorCfg; _texture=(_textures select _index); if(isNil "_texture") exitWith {}; if(count _texture == 0) exitWith {}; { if (_forEachIndex == 0) then {_vehicle setObjectTextureGlobal [_forEachIndex,_x];} else { if (_forEachIndex !=1) then {_vehicle setObjectTextureGlobal [_forEachIndex-1,_x];} //Index 1 ist die Definition }; } forEach _texture;
und fertig. Nun ist es egal wieviele Skindateien ein Fahrzeug verwendet es werden alle Skindateien korrekt zugewiesen.
Gruß,
moeck
-
Moin zusammen,
ich hatte mal wieder etwas Zeit und habe für alle, die die 3.1.4.8 noch nutzen an der Funktion fn_colorVehicle.sqf ein paar Änderungen vorgenommen, damit man auch Fahrzeuge mit beliebig vielen Skin nutzen kann.
C: fn_colorVehicle.sqf
Alles anzeigen/* File: fn_colorVehicle.sqf Author: Bryan "Tonic" Boardwine modified by moeck (LoP) Description: Reskins the vehicle */ private["_vehicle","_index","_texture","_textures"]; _vehicle = [_this,0,Objnull,[Objnull]] call BIS_fnc_param; _index = [_this,1,-1,[0]] call BIS_fnc_param; if(isNull _vehicle OR !alive _vehicle OR _index == -1) exitWith {}; //Does the vehicle already have random styles? Halt till it's set. if(local _vehicle) then { switch (typeOf _vehicle) do { case "C_Offroad_01_F": {[[_vehicle,"color",3,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Hatchback_01_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Hatchback_01_sport_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_SUV_01_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Van_01_box_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; case "C_Van_01_transport_F": {[[_vehicle,"color",1,true],"TON_fnc_setObjVar",false,false] spawn life_fnc_MP;}; }; }; //Fetch texture from our present array. _textures = [(typeOf _vehicle)] call life_fnc_vehicleColorCfg; _texture=(_textures select _index); if(isNil "_texture") exitWith {}; if(count _texture == 0) exitWith {}; { if (_forEachIndex == 0) then {_vehicle setObjectTextureGlobal [_forEachIndex,_x];} else { if (_forEachIndex !=1) then {_vehicle setObjectTextureGlobal [_forEachIndex-1,_x];} }; } forEach _texture;
Gruß,
moeck
-
Moin moin,
ich habe das jetzt mal für die 3.1.4.8 umgesetzt. Das Ganze läßt sich sehr einfach auch in die 4.x bzw. 5.0 übernehmen. Da ich keine Lust hate mir die korrekten Positionen heraus zu suchen nutze ich weiterhin die Marke und verstelle nur die Höhe.
Garage:
C: unimpound.sqf
Alles anzeigen#include <macro.h> /* File: fn_unimpound.sqf Author: Bryan "Tonic" Boardwine modified by moeck (LoP) Description: Yeah... Gets the vehicle from the garage. */ private["_vehicle","_vid","_pid","_unit","_price","_texture"]; disableSerialization; if(lbCurSel 2802 == -1) exitWith {hint localize "STR_Global_NoSelection"}; _vehicle = lbData[2802,(lbCurSel 2802)]; _vehicle = (call compile format["%1",_vehicle]) select 0; _vid = lbValue[2802,(lbCurSel 2802)]; _pid = getPlayerUID player; _unit = player; _texture = [_vehicle] call life_fnc_vehicleColorCfg; if(isNil "_vehicle") exitWith {hint localize "STR_Garage_Selection_Error"}; _price = [_vehicle,__GETC__(life_garage_prices)] call TON_fnc_index; if(_price == -1) then {_price = 1000;} else {_price = (__GETC__(life_garage_prices) select _price) select 1;}; if(life_atm5cash < _price) exitWith {hint format[(localize "STR_Garage_CashError"),[_price] call life_fnc_numberText];}; if(typeName life_garage_sp == "ARRAY") then { [[_vid,_pid,life_garage_sp select 0,_unit,_price,life_garage_sp select 1],"TON_fnc_spawnVehicle",false,false] spawn life_fnc_MP; } else { if(life_garage_sp in ["medic_spawn_1","medic_spawn_2","medic_spawn_3"]) then { [[_vid,_pid,life_garage_sp,_unit,_price,_texture],"TON_fnc_spawnVehicle",false,false] spawn life_fnc_MP; } else { _pos = getMarkerPos life_garage_sp; //neuer Spawnpunkt Höhe auf 6 Meter gelegt if (life_garage_sp == "air_g_144") then { _pos = [_pos select 0,_pos select 1,6.0]; }; [[_vid,_pid,_pos,_unit,_price,markerDir life_garage_sp,_texture],"TON_fnc_spawnVehicle",false,false] spawn life_fnc_MP; }; }; hint localize "STR_Garage_SpawningVeh"; life_atmcash = life_atmcash - _price;
Shop:
C: fn_vehicleShopBuy.sqf
Alles anzeigen/* File: fn_vehicleShopBuy.sqf Author: Bryan "Tonic" Boardwine modified by moeck (LoP) Description: Does something with vehicle purchasing. */ private["_mode","_spawnPoints","_className","_basePrice","_colorIndex","_spawnPoint","_vehicle","_texture"]; _mode = _this select 0; if((lbCurSel 2302) == -1) exitWith {hint 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_6cash < _basePrice) exitWith {hint format[localize "STR_Shop_Veh_NotEnough",[_basePrice - life_6cash] call life_fnc_numberText];}; if(!([_className] call life_fnc_vehShopLicenses) && _className != "") exitWith {hint 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 {hint localize "STR_Shop_Veh_Block";}; life_6cash = life_6cash - _basePrice; hint 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 false; //No Thermals.. They're cheap but addictive. _texture = [(typeOf _vehicle)] call life_fnc_vehicleColorCfg; } else { _pos = getMarkerPos _spawnPoint; //Neuer Spawnpunkt +6m Höhe if (_spawnPoint == "air_g_144") then { _pos = [_pos select 0,_pos select 1,6.0]; }; _vehicle = createVehicle [_className, _pos, [], 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); _vehicle setPos _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 false; //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_2vehicles set[count life_2vehicles,_vehicle]; //Add err to the chain. life_2vehicles 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; }; }; [0] call SOCK_fnc_updatePartial; closeDialog 0; //Exit the menu. true;
So das war es auch schon.
-
-
ok hab das releases vergessen
-
guckst du hier https://github.com/AsYetUntitled/Framework musst Dich dort mal umschauen
-
Moin,
Du hast zwar den life_server und die extDB in den Startparametern angegeben aber er kann beide nicht finden
Code15:52:42 name | modDir | default | origin | hash | hashShort | fullPath 15:52:42 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 15:52:42 @life_server | @life_server | false | NOT FOUND | | | 15:52:42 @extDB2 | @extDB2 | false | NOT FOUND | | |
Schau Dir mal deine Startparameter nochmal an.
Gruß,
moeck
-
Eventuell solltest Du ein Spawnpunkt setzen, falls das so vorgesehen ist
-
-
Hi,
Navi ist nicht die DB Software sondern nur ein Tool um auf die DB zu zugreifen. Was hast Du für einen Server? Ist das ein eigener Rootserver oder ein gemieteter Gameserver (z.B Nitrado)?
Wenn er von Nitrado und Co ist kannst Du die DB wahrscheinlich nur über den Support upgraden lassen. Wenn es ein eigener ist musst Du MySQL 5.7 selber installieren.
Gruß,
moeck
-
Hi,
ich nehme mal an Du hast keine MySQL 5.7 Datenbank? Dieser Fehler tritt nämlich in früheren Versionen auf, da in einer Tabelle nur einmal der aktuelle Zeitstempel verwendet werden durft.
Gruß,
moeck
-
ja bitte hier anhängen
-
Ähm handelt es sich bei G4S vielleicht um einen Servermod? extDb und life_server sind nämlich reine Servermods.
-
Wäre ja schön wenn Du die Lösung hier mal reingeschrieben hättest
-
-
wenn Du das ohne die Klammern machst sollte es funktionieren.
-
Moin,
also die beschriebenen Probleme von
ob es das Housing ist, bei dem Kisten verschwinden, Häuser von verschiedenen Spielern doppelt gekauft werden können usw.
sind kein reines Sealdrop Problem sondern finden sich auch in der Vanilla 3.1.4.8 wieder. Ich würde Dir trotzdem empfehlen auf eine Vanilla 4.4r4 zugehen, da hier viele Sachen deutlich vereinfacht wurden und auch der Aspekt Sicherheit deutlich ausgeprägter ist. Zum Beispiel muss man in der 4.4 nicht mehr für jeden Cop Rang einen eigenen Shop anlegen sondern kann auf das Coplevel zugreifen was das Ganz deutlich übersichtlicher macht.
Natürlich bekommst Du hier auch Hilfe, wenn Du bei deiner aktuellen Version bleibst. Wichtig sind immer die Logfiles mitzuliefern, da man ohne Logs auch keine Fehler analysieren kann.
Spoiler anzeigen
Wolfskin mein beiden Glaskugeln sind auch defekt, deshalb kannst Du sie auch nicht habenGruß,
moeck
-
Alles klar also geht es um eine Art Skillsystem mit dem man bestimmte Sachen verbessern bzw. erlernen kann. Aber jetzt zurück zum Thema. Erstmal zur Grundlage von SQL es ist völlig irrelevant wo Du das Feld in deiner Tabelle einfügst. Wichtig ist der Select, Update oder Insert wenn du auf die Werte zugreifst. In deinem Fall würde ich die Queries bzw. Statements in folgender Form aufbereiten um mir so wenig Arbeit wie möglich zu machen.
ob nun das Feld in der DB an erster oder letzter Stelle steht spielt keine Rolle, da es auf die Abfrage ankommt. Heißt bei der Rückgabe wäre deine "neue Währung" im letzten Feld des Arrays. Ich hatte bislang leider noch nicht die Zeit mir die Sachen genauer anzuschauen aber vielleicht hilft Dir das auch schon weiter.
Gruß,
moeck
-
Hi,
wenn ich jetzt nicht komplett daneben liege müsstest Du ein kleines Script schreiben mit einer While Schleife zum Schalten der Lichter. Des weiteren müsste wahrscheinlich in die init der "PortableHelipadLight_01_green_F" dann zum einen der Lichtpunkt und zum anderem der Scriptaufruf.
Ich bin mir da gerade nicht 100%ig sicher, daher schon mal ein Sorry falls ich daneben liege.
Gruß,
moeck