Dieses Script ändert die Ansicht in dem Vehicle Shop.
Der Spieler wird an den Strand von Altis geportet, und das ausgewähle Fahrzeug erscheint rotierend im Hintergrund des Menü´s.
Vorschau:
Vorab:
Ich werde dies nicht für die 4.0 machen!
Wer möchte, kann dies gerne tun!
Auch bin ich oder Native-Gamer in keinster Weise dafür Verantwortlich, wenn ihr eure Life-Version zerschießt.
MACHT VORHER EIN BACKUP!
____________________________________________________________________
HINWEIS
Dieses Script funktioniert derzeit nicht mit eigenen Skins!
Es ist im Grunde nur für ModCars geeignet. - bis jetzt -
Weitere Änderungen können folgen!
____________________________________________________________________
Öffnet die functions.h und legt unter Shops eine neue Class an.
Erstellt in core\shops eine neue Datei namens fn_vehicleRotate.sqf mit folgendem Inhalt:
private "_oldDir";
params["_vehicle"];
while {!isNull _vehicle} do
{
_oldDir = getDir _vehicle;
_vehicle setDir (_oldDir + 0.5);
uiSleep 0.01;
};
Erstellt in der core\configuration.sqf unter den Backend_Variables eine neue Variable:
Ersetzt nun unter core\shops diese 2 Dateien:
fn_vehicleShopMenu.sqf und fn_vehicleShopLBCange.sqf mit den Inhalten:
fn_vehicleShopMenu.sqf
Spoiler anzeigen
/*
File: fn_vehicleShopMenu.sqf
Author: Bryan "Tonic" Boardwine
Description:
Blah
*/
private["_shop","_sideCheck","_spawnPoints","_shopFlag","_disableBuy"];
_shop = [(_this select 3),0,"",[""]] call BIS_fnc_param;
_sideCheck = [(_this select 3),1,sideUnknown,[civilian]] call BIS_fnc_param;
_spawnPoints = [(_this select 3),2,"",["",[]]] call BIS_fnc_param;
_shopFlag = [(_this select 3),3,"",[""]] call BIS_fnc_param;
_disableBuy = [(_this select 3),5,false,[true]] call BIS_fnc_param;
disableSerialization;
//Long boring series of checks
if(dialog) exitWith {};
if(_shop == "") exitWith {};
if(_sideCheck != sideUnknown && {playerSide != _sideCheck}) exitWith {hint localize "STR_Shop_Veh_NotAllowed"};
if(!createDialog "Life_Vehicle_Shop_v2") exitWith {};
life_veh_shop = [_shop,_spawnpoints,_shopFlag,_disableBuy]; //Store it so so other parts of the system can access it.
ctrlSetText [2301,((_this select 3) select 4)];
if(_disableBuy) then {
//Disable the buy button.
ctrlEnable [2309,false];
};
//Fetch the shop config.
_vehicleList = [_shop] call life_fnc_vehicleListCfg;
_control = ((findDisplay 2300) displayCtrl 2302);
lbClear _control; //Flush the list.
ctrlShow [2330,false];
ctrlShow [2304,false];
// ::: NEW SHOP CAM ::: \\
_pos = [24262,18053,0];
_oldDir = getDir player;
_oldPos = visiblePositionASL player;
_light = "#lightpoint" createVehicleLocal [24262,18053,0];
_light setLightBrightness 1;
_light setLightAmbient [1.0, 1.0, 1.0];
player setPosASL _pos;
player setDir 90;
{if(_x != player) then {_x hideObject true;};} foreach playableUnits;
player switchMove "";
life_CarPreview = "Sign_Arrow_Yellow_F" createVehicleLocal (getPosATL player);
life_CarPreview setPos (player modelToWorld [3,9,0]);
life_CarPreview setDir ([life_CarPreview,player] call BIS_fnc_dirTo);
life_CarPreview enableSimulation false;
life_CarCAMPreview = "CAMERA" camCreate getPos player;
showCinemaBorder false;
life_CarCAMPreview cameraEffect ["Internal","Back"];
life_CarCAMPreview camSetTarget (life_CarPreview modelToWorld [3,0,0]);
life_CarCAMPreview camSetPos (player modelToWorld [1,0,5]);
life_CarCAMPreview camSetFovRange [0.1,0.7];
life_CarCAMPreview camSetFocus [50,0];
life_CarCAMPreview camCommit 0;
//Loop through
{
_className = _x select 0;
_basePrice = _x select 1;
_vehicleInfo = [_className] call life_fnc_fetchVehInfo;
_control lbAdd (_vehicleInfo select 3);
_control lbSetPicture [(lbSize _control)-1,(_vehicleInfo select 2)];
_control lbSetData [(lbSize _control)-1,_className];
_control lbSetValue [(lbSize _control)-1,_ForEachIndex];
} foreach _vehicleList;
waitUntil {isNull (findDisplay 2300)};
{if(_x != player) then {_x hideObject false;};} foreach playableUnits;
player setPosASL _oldPos;
player setDir _oldDir;
{deleteVehicle _x;} foreach [_light];
life_CarCAMPreview cameraEffect ["TERMINATE","BACK"];
camDestroy life_CarCAMPreview;
if((!isNil "life_CarPreview") AND (!isNull life_CarPreview)) then{
deleteVehicle life_CarPreview;
};
Alles anzeigen
fn_vehicleShopLBCange.sqf
Spoiler anzeigen
#include <macro.h>
/*
File: fn_vehicleShopLBChange.sqf
Author: Bryan "Tonic" Boardwine
Description:
Called when a new selection is made in the list box and
displays various bits of information about the vehicle.
*/
disableSerialization;
private["_control","_index","_className","_basePrice","_vehicleInfo","_colorArray","_ctrl"];
_control = _this select 0;
_index = _this select 1;
//Fetch some information.
_className = _control lbData _index;
_vIndex = _control lbValue _index;
_vehicleList = [life_veh_shop select 0] call life_fnc_vehicleListCfg; _basePrice = (_vehicleList select _vIndex) select 1;
_vehicleInfo = [_className] call life_fnc_fetchVehInfo;
_trunkSpace = [_className] call life_fnc_vehicleWeightCfg;
ctrlShow [2330,true];
(getControl(2300,2303)) ctrlSetStructuredText parseText format[
(localize
"STR_Shop_Veh_UI_Rental")+ " <t
color='#8cff9b'>$%1</t><br/>" +(localize
"STR_Shop_Veh_UI_Ownership")+ " <t
color='#8cff9b'>$%2</t><br/>" +(localize
"STR_Shop_Veh_UI_MaxSpeed")+ " %3 km/h<br/>" +(localize
"STR_Shop_Veh_UI_HPower")+ " %4<br/>" +(localize
"STR_Shop_Veh_UI_PSeats")+ " %5<br/>" +(localize
"STR_Shop_Veh_UI_Trunk")+ " %6<br/>" +(localize
"STR_Shop_Veh_UI_Fuel")+ " %7<br/>" +(localize
"STR_Shop_Veh_UI_Armor")+ " %8",
[_basePrice] call life_fnc_numberText,
[round(_basePrice * 2)] call life_fnc_numberText,
_vehicleInfo select 8,
_vehicleInfo select 11,
_vehicleInfo select 10,
if(_trunkSpace == -1) then {"None"} else {_trunkSpace},
_vehicleInfo select 12,
_vehicleInfo select 9
];
if((!isNil "life_CarPreview") AND (!isNull life_CarPreview)) then{
deleteVehicle life_CarPreview;
};
life_CarPreview = _className createVehicleLocal (getPosATL player);
life_CarPreview setPos (player modelToWorld [3,9,0]);
life_CarPreview setDir ([life_CarPreview,player] call BIS_fnc_dirTo);
life_CarPreview enableSimulation false;
[life_CarPreview] spawn life_fnc_vehicleRotate;
life_CarCAMPreview = "CAMERA" camCreate getPos player;
showCinemaBorder false;
life_CarCAMPreview cameraEffect ["Internal","Back"];
life_CarCAMPreview camSetTarget (life_CarPreview modelToWorld [3,0,0]);
life_CarCAMPreview camSetPos (player modelToWorld [1,0,5]);
life_CarCAMPreview camSetFovRange [0.1,0.7];
life_CarCAMPreview camSetFocus [50,0];
life_CarCAMPreview camCommit 0;
_ctrl = getControl(2300,2304);
lbClear _ctrl;
_colorArray = [_className] call life_fnc_vehicleColorCfg;
for "_i" from 0 to count(_colorArray)-1 do {
if((_colorArray select _i) select 1 == (life_veh_shop select 2)) then {
_temp = [_className,_i] call life_fnc_vehicleColorStr;
_ctrl lbAdd format["%1",_temp];
_ctrl lbSetValue [(lbSize _ctrl)-1,_i];
};
};
if(_className in (__GETC__(life_vShop_rentalOnly))) then {
ctrlEnable [2309,false];
} else {
if(!(life_veh_shop select 3)) then {
ctrlEnable [2309,true];
};
};
lbSetCurSel[2304,0];
if((lbSize _ctrl)-1 != -1) then {
ctrlShow[2304,true];
} else {
ctrlShow[2304,false];
};
true;
Alles anzeigen
ACHTUNG:
Wenn ihr eine andere Vorschau Location haben wollt, müsst ihr in der fn_vehicleShopMenu.sqf diese Zeilen ändern!
EBENSO, WENN IHR NICHT AUF ALTIS SPIELT!!
_pos = [24262,18053,0];
_light = "#lightpoint" createVehicleLocal [24262,18053,0];