leonardos1978

Система перезарядки и ремонта для Авиа и наземной техники

7 posts in this topic

Эта Тема - репост для уточнения нюансов изменения скрипта всвязи с обновлением Exile  на 0.9.8

Spoiler

Как устанавливать:

 

Шаг № 1. Распаковываем вашу миссию, путем применения pbo manager.

Шаг № 2. В папке Exile.Altis создаем файл devs_air.sqf  (скрипт применялся так же для реализации фишек для донаторов, для Exile я эти строки закомментировал.



private ["_user", "_veh", "_title", "_htext"];
    
_user = (_this select 1);
_veh = vehicle _user;
_title  = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";
 
// if (getPlayerUID player in SET_DONATOR) then {
		if (ExileClientPlayerMoney >= 500) then {
 
            //--> text: welcome-messages    
 
			_htext   = " Вам доступно обслуживание коптера. Внимание до завершение обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги.";
			hint parseText ( _title + _htext);
                        uisleep 5;
            //--> action: remove crypto
                        ExileClientPlayerMoney = ExileClientPlayerMoney - 500 ;
			_htext   = "Списание 500 Crypto со счета.";
			hint parseText ( _title + _htext);
                        uisleep 3;        
			_htext   = "Оперативный ремонт техники.";
			hint parseText ( _title + _htext);
                        _veh setDamage 0;
                        uisleep 3;
			_htext   = "Заливаем керосин. Не двигайтесь";
			hint parseText ( _title + _htext);
                        _veh setFuel 1;
                        uisleep 3;
			_htext   = "Еще немного.....";
			hint parseText ( _title + _htext);
                        uisleep 5;
			_htext   = "Перезаряжаем турели";
			hint parseText ( _title + _htext);
                        _veh setVehicleAmmo 1;
                        uisleep 0.1;
                        _veh setAmmoCargo 1;
                        uisleep 7;
			_htext   = "Ваша птичка готова лететь дальше.";
			hint parseText ( _title + _htext);
 
} else {    
			_htext   = "Недостаточно денег на вашем счете";
			hint parseText ( _title + _htext);
};
 
/* } else {    
            //--> text: only driver can do this
			_htext   = "Услуга доступна только премиум аккаунту";
			hint parseText ( _title + _htext);
};*/

Шаг № 3.

Создаем файл devs_land.sqf починка машин..


/*
Скрипт для донаторов. Обслуживание техники.
*/
 
private ["_user", "_veh", "_title", "_htext"];
    
_user = (_this select 1);
_veh = vehicle _user;
_title  = "<t color='#ff0000' size='1.2' shadow='1' shadowColor='#000000' align='center'>ЦЕНТР ТЕХ.ОБСЛУЖИВАНИЯ:</t><br/><t color='#ffffff'>¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯<br/>";
 
 
if (! isnull (driver _veh))    then {                            
//	if (getPlayerUID player in SET_DONATOR) then {
		if (ExileClientPlayerMoney >= 500) then {
 
 
            //--> text: welcome-messages    
 
			_htext   = "Вам доступно обслуживание техники. Внимание! До завершения обслуживания не двигайтесь с места и не покидайте транспорт иначе деньги спишутся без оказания услуги.";
			hint parseText ( _title + _htext);
                        uisleep 10;
                        
            //--> action: remove crypto
                        ExileClientPlayerMoney = ExileClientPlayerMoney - 500 ;            
			_htext   = "Удерживается оплата да тех.обслуживание.";
			hint parseText ( _title + _htext);
                        uisleep 3;
            //--> action: repair vehicle                
                        _veh setDamage 0;
			_htext   = "Ремонт произведен в полном объеме.";
			hint parseText ( _title + _htext);
                        uisleep 3;
			_htext   = "Заливаем первоклассный бензин.";
			hint parseText ( _title + _htext);
                        uisleep 3;
            //--> action: refuel Vehicle
                        _veh setFuel 1;
			_htext   = "До полного.....";
			hint parseText ( _title + _htext);
            //--> action: ReAmmo Guns
			_htext   = "Смазываем пушки.";
			hint parseText ( _title + _htext);
            //--> action: move player to gunnerposition to rearm ALL magazines, otherwise only the actual magazine will be reloaded
                        player action ["moveToGunner", _veh];
                        uisleep 5;
			_htext   = "Перезарядка...";
			hint parseText ( _title + _htext);
                        _veh setVehicleAmmo 1;
                        uisleep 0.1;
                        _veh setAmmoCargo 1;
                        uisleep 0.1;
            //--> action: bring player back to driverposition
                        uisleep 0.1;
                        player action ["moveToDriver", _veh];
                        uisleep 5;
			_htext   = "Ваша машина, как новенькая. Можно ехать!!!";
			hint parseText ( _title + _htext);
} else {
            //--> text: not enough crypto    
			_htext   = "Недостаточно средств на счете..";
			hint parseText ( _title + _htext);
};
/*} else {    
            //--> text: only driver can do this
			_htext   = "Услуга доступна только премиум аккаунту";
			hint parseText ( _title + _htext);
};*/
} else {    
			_htext   = "Вы должны находиться за рулем и без пассажиров...";
			hint parseText ( _title + _htext);
};

Теперь заходим в ваш mission.sqf и добавляем там между маркерами и последней закладкой под персонажа следующий код.


	//TODO Реализация возможностей для донаторов (начальный лут и станция тех обслуживания)
	class Vehicles
	{
		items=3;
		class Item0
		{
			position[]={13279.555,2.4851172,14563.375};
			azimut=330;
			id=103;
			side="EMPTY";
			vehicle = "Land_CarService_F";
			skill = 0.6;
			init = "this addAction [""Тех.обслуживание"", ""addons\devs_land.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'LandVehicle'""];";
		};
		class Item1
		{
			position[]={13292.752,2.3035169,14549.961};
			azimut=140;
			id=104;
			side="EMPTY";
			vehicle="Land_MobileLandingPlatform_01_F";
			skill=0.60000002;
		};
		class Item2
		{
			position[]={13286.655,2.2886071,14545.61};
			azimut=140;
			id=105;
			side="EMPTY";
			vehicle="Land_JetEngineStarter_01_F";
			init = "this addAction [""Авиа-точка"", ""addons\devs_air.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'Air'""];";
			skill=0.60000002;
		};
	};

Шаг 4 пакуем обратно: Профит.

 

Недалеко от места центрального респавна выше Неахори (на Алтисе) появится точка техобслуживания и аэропит под вертолет, как понятно из строчек init

 

init = "this addAction [""Тех.обслуживание"", ""addons\devs_land.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'LandVehicle'""];"; 

init = "this addAction [""Авиа-точка"", ""addons\devs_air.sqf"", [5,1], 50, true, true, """", ""vehicle _this isKindOf 'Air'""];";

 

при соблюдении вышеуказанных условий появится одноименная строчка в меню по колесику. Вы можете поставить любой свой объект в любых координатах по той же схеме. Просто добавьте туда init

 

в скриптах devs в строчке  -> ExileClientPlayerMoney = ExileClientPlayerMoney - 500 ;  можно установить сумму которая будет вычитаться с игрока за ремонт. В случае если вы хотите делать сервер с донатом просто уберите // в соответствующей строке. 

 

Если кто-то вместо спасибо подскажет , как выставить с увеличением радиус срабатывания меню буду благодарен.  вариант подсмотренный мной на сайте бисов "(_target distance _this) < 4" не проканал :(

Просто для починки приходится достаточно близко подлетать вертолетом к точке обслуживания, не все после этого выживают :)))) 

 

Для тех кто не в танке. Русский язык в скрипте надо делать в кодировке UTF8 иначе вы увидите кракозябры.

Вопрос - 

Господа, возник вопрос с обновой Exile на 0,9,8 счисление денег изменилось и скрипт перестал работать, будет ли работать с этими изменениями

 
Было //--> action: remove crypto

ExileClientPlayerMoney = ExileClientPlayerMoney - 5000 ;
            _htext = "Списание 500 Crypto со счета.";

 
стало //--> action: remove crypto
                        ExileMoney = ExileMoney - 5000 ;            
_htext   = "Удерживается оплата да тех.обслуживание.";

Share this post


Link to post
Share on other sites
Advertisement

AVS устаревшая система (скрипт) . Ставь этот скрипт работает нормально и без проблем

 

Share this post


Link to post
Share on other sites

Posted (edited)

Не забудь изменить файл takegive_poptab.sqf на новый .

 /*
    Original HALV_takegive_crypto.sqf by Halv
    Copyright (C) 2015  Halvhjearne > README.md
    Edit to takegive_poptab.sqf for Exile by Dodo
*/

 _player = _this select 0;
_costs = _this select 1;

_playerMoney = _player getVariable ["ExileMoney", 0];
diag_log format["[HALV_takegive] Event player is %1 money before is %2 costs is %3",_player, _playerMoney, _costs];
_playerMoney = _playerMoney - _costs;
_player setVariable ["ExileMoney", _playerMoney, true];
diag_log format["[HALV_takegive] Event player is %1 money after is %2 costs is %3",_player, _playerMoney, _costs];
format["setPlayerMoney:%1:%2", _playerMoney, _player getVariable ["ExileDatabaseID", 0]] call ExileServer_system_database_query_fireAndForget;
[_player, "purchaseVehicleSkinResponse", [0, str _playerMoney]] call ExileServer_system_network_send_to;
true 

 

Edited by Irkutsk38
1 person likes this

Share this post


Link to post
Share on other sites

нормально работает, только немного странно))

например:

у  UH-1H   (class Exile_Chopper_Huey_Armed_Green)

заряжает и кладет запасные обоймы только по левому борту

:DO.o

Share this post


Link to post
Share on other sites

AVS после доработки напильником отлично работает. Плюс есть черный список боеприпасов.

Функция спавна техники в AVS отключена у меня.

Edited by xface

Share this post


Link to post
Share on other sites
Advertisement

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.