Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной

Рекомендованные сообщения

добавил в исключения cMenu "#USER:TFV_BACKPACK_MENU","#USER:TFV_VEHICLE_MENU" но всё равно банит игроков с такой

22:47:44 "infiSTAR.de Log: Zombieman (76561198033590605) | ЗАПРЕЩЕННОЕ КОМАНДНОЕ МЕНЮ: #USER:TFV_BACKPACK_MENU"

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах



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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Все работает на ура! Но..... Есть 1н оч большой минус. Не работает с торговцем черного рынка, меню просто не появляется - у других все идеально.

Вопрос: может ли это зависеть от перемещения торгаша  в другое место? :mad:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так и не решили этот вопрос ? :huh1:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

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

А зачем он для банковской системы? Не лучше ли поставить Advanced Trading?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А зачем он для банковской системы? Не лучше ли поставить Advanced Trading?

жаль нету  Advanced Trading   для обычной системы (( 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

жаль нету  Advanced Trading   для обычной системы (( 

да, полезная вещь)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А зачем он для банковской системы? Не лучше ли поставить Advanced Trading?

Продажа из рюкзака = Дюпы

Advanced Trading находиться в альфа тесте и разработку скрипта забросили, скрипт не полностью работает еще.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вписал команду в разрешенные в AH_config. Все равно банит игроков, ссылаясь на
 

ЗАПРЕЩЕННОЕ КОМАНДНОЕ МЕНЮ: #USER:TFV_VEHICLE_MENU" 

 

(которое я и добавил) Может еще что-то добавить нужно? Подскажите пожалуйста, кто знает.

Изменено пользователем Bush (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Вписал команду в разрешенные в AH_config. Все равно банит игроков, ссылаясь на

 

ЗАПРЕЩЕННОЕ КОМАНДНОЕ МЕНЮ: #USER:TFV_VEHICLE_MENU" 

 

(которое я и добавил) Может еще что-то добавить нужно? Подскажите пожалуйста, кто знает.

мм как бы надо добавить лишь 

TFV_VEHICLE_MENU

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

мм как бы надо добавить лишь 

Спасибо за подсказку, но все равно банит...

 

/*  РАЗРЕШЕННЫЕ КОМАНДНЫЕ МЕНЮ (CMD Menu)      */ _cMenu =
[
	"","RscMainMenu","RscMoveHigh","#WATCH","#WATCH0",
	"RscWatchDir","RscDisplayClassSelecter","RscDisplayGenderSelect",
	"RscDisplaySpawnSelecter","RscWatchMoreDir","#GETIN","RscStatus",
	"RscCombatMode","RscFormations","RscTeam","RscSelectTeam","RscReply",
	"RscCallSupport","#ACTION","#CUSTOM_RADIO","RscRadio","RscGroupRootMenu",
	"BTC_Hud","PlotManagement","TFV_VEHICLE_MENU" 
];

здесь вписал. А в рпт то же:

 

Line 24384:  3:22:05 "infiSTAR.de Log: Brodyaga (15901193) | ЗАПРЕЩЕННОЕ КОМАНДНОЕ МЕНЮ: #USER:TFV_VEHICLE_MENU"
	Line 24385:  3:22:05 "["PVAHR_0_cifuelq_355089",["Brodyaga","15901193","BAN",[1047,1040,1055,1056,1045,1065,1045,1053,1053,1054,1045,32,1050,1054,1052,1040,1053,1044,1053,1054,1045,32,1052,1045,1053,1070,58,32,35,85,83,69,82,58,84,70,86,95,86,69,72,73,67,76,69,95,77,69,78,85]]]"

Отключать проверку командных меню ради этой торговли как бы не хочется, все же... А тема очень пригодилась бы, ибо сервер оверпоч и пушек очень много, народ мучается списки листать) Может есть еще вариант какой? Буду рад помощи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за подсказку, но все равно банит...

 

/*  РАЗРЕШЕННЫЕ КОМАНДНЫЕ МЕНЮ (CMD Menu)      */ _cMenu =
[
	"","RscMainMenu","RscMoveHigh","#WATCH","#WATCH0",
	"RscWatchDir","RscDisplayClassSelecter","RscDisplayGenderSelect",
	"RscDisplaySpawnSelecter","RscWatchMoreDir","#GETIN","RscStatus",
	"RscCombatMode","RscFormations","RscTeam","RscSelectTeam","RscReply",
	"RscCallSupport","#ACTION","#CUSTOM_RADIO","RscRadio","RscGroupRootMenu",
	"BTC_Hud","PlotManagement","TFV_VEHICLE_MENU" 
];

здесь вписал. А в рпт то же:

 

Line 24384:  3:22:05 "infiSTAR.de Log: Brodyaga (15901193) | ЗАПРЕЩЕННОЕ КОМАНДНОЕ МЕНЮ: #USER:TFV_VEHICLE_MENU"
	Line 24385:  3:22:05 "["PVAHR_0_cifuelq_355089",["Brodyaga","15901193","BAN",[1047,1040,1055,1056,1045,1065,1045,1053,1053,1054,1045,32,1050,1054,1052,1040,1053,1044,1053,1054,1045,32,1052,1045,1053,1070,58,32,35,85,83,69,82,58,84,70,86,95,86,69,72,73,67,76,69,95,77,69,78,85]]]"

Отключать проверку командных меню ради этой торговли как бы не хочется, все же... А тема очень пригодилась бы, ибо сервер оверпоч и пушек очень много, народ мучается списки листать) Может есть еще вариант какой? Буду рад помощи.

Попробуйте вписать в точности так:

#USER:TFV_VEHICLE_MENU

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Попробуйте вписать в точности так:

#USER:TFV_VEHICLE_MENU

изначально так и вписывал, так же банило :bad:

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

изначально так и вписывал, так же банило :bad:

хм... а кроме этого скрипта подобных трудностей не возникало?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

хм... а кроме этого скрипта подобных трудностей не возникало?

нет, впервые столкнулся с такой проблемой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кто нибудь сталкивался с тем, что при продаже из закрытой тачки она после окончания продажи открывается? Не понимаю куда закралась ошибка.

 

Вот сам файл trade.sqf: 

 

 

if (TFV_TRADER == objNull) exitWith {};
if ((player distance TFV_TRADER) > 6) exitWith {systemChat "Ты слишком далеко от торговца.";};

TFV_INWORK = true;

private ["_object","_cat","_validWeapons","_validMagazines","_vehicleDisplayName","_canTrade","_tradeCount","_tradeWeapons","_tradeMagazines","_tradeStages","_currentStage","_keys","_returnWeapons","_returnMagazines","_tradeLoop","_stageStarted","_tradeValueInt","_itemPrice","_tradedWeapons","_tradedMagazines","_payment","_startingCargoCount","_success","_currentCargoCount","_startingPos"];

_object = _this select 0;
_cat = _this select 1;
_vehicleDisplayName = if (TFV_VEHICLE != objNull) then {[TFV_VEHICLE] call TFV_vehicleGetDisplayName} else {""};
_canTrade = true;
_startingPos = if (TFV_VEHICLE != objNull) then {getPos TFV_VEHICLE} else {0};
_validWeapons = [];
_validMagazines = [];

_tooFar=false;
if (TFV_VEHICLE != objNull) then {
	if (_object == "vehicle") then {
		if ((player distance TFV_VEHICLE) > 50) exitWith {_toofar=true;};
	};
};

if(_tooFar) exitWith {
	TFV_INWORK = false; systemChat "Ты слишком далеко от своей техники.";
};

switch (_object) do {
    case "vehicle": {
	    _startingCargoCount = ((count([TFV_VEHICLE] call TFV_vehicleGetWeaponCargo)) + (count([TFV_VEHICLE] call TFV_vehicleGetMagazineCargo)));
	    TFV_VEHICLE setVehicleLock "LOCKED";
	    _keys = [TFV_VEHICLE] call TFV_findKeys;
		switch (_cat) do {
		    case "weapons": {
				if ((count([TFV_VEHICLE] call TFV_vehicleGetWeaponCargo)) <= 0) then {
					systemChat format ["В твоем %1 нет оружия на продажу.",_vehicleDisplayName];
					_canTrade = false;
			    } else {
					_tradeCount = (count([TFV_VEHICLE] call TFV_vehicleGetWeaponCargo));
					_tradeCount = (_tradeCount - (count _keys));
					_tradeWeapons = [TFV_VEHICLE] call TFV_vehicleGetWeaponCargo;
//					diag_log format["[OGHF] _tradeWeapons %1", _tradeWeapons];
					_tradeMagazines = [];
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validWeapons set [(count _validWeapons),_x];
						};
					} forEach _tradeWeapons;
					_tradeStages = [_validWeapons,TFV_WIPS] call TFV_tradingGetStages;
				};
			};
			case "magazines": {
			    if ((count([TFV_VEHICLE] call TFV_vehicleGetMagazineCargo)) <= 0) then {
					systemChat format ["В твоем %1 нет магазинов на продажу.",_vehicleDisplayName];
					_canTrade = false;
				} else {
					_tradeCount = (count([TFV_VEHICLE] call TFV_vehicleGetMagazineCargo));
					_tradeWeapons = [];
					_tradeMagazines = [TFV_VEHICLE] call TFV_vehicleGetMagazineCargo;
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validMagazines set [(count _validMagazines),_x];
						};
					} forEach _tradeMagazines;
					_tradeStages = [_validMagazines,TFV_MIPS] call TFV_tradingGetStages;
				};
			};
			case "all": {
				if (((count([TFV_VEHICLE] call TFV_vehicleGetWeaponCargo)) <= 0) && ((count([TFV_VEHICLE] call TFV_vehicleGetMagazineCargo)) <= 0)) then {
					systemChat format ["В твоем %1 нет предметов на продажу.",_vehicleDisplayName];
					_canTrade = false;
				} else {
					_tradeCount = ((count([TFV_VEHICLE] call TFV_vehicleGetWeaponCargo)) + (count([TFV_VEHICLE] call TFV_vehicleGetMagazineCargo)));
					_tradeCount = (_tradeCount - (count _keys));
					_tradeWeapons = [TFV_VEHICLE] call TFV_vehicleGetWeaponCargo;
					_tradeMagazines = [TFV_VEHICLE] call TFV_vehicleGetMagazineCargo;
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validWeapons set [(count _validWeapons),_x];
						};
					} forEach _tradeWeapons;
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validMagazines set [(count _validMagazines),_x];
						};
					} forEach _tradeMagazines;
					_tradeStages = [(_validWeapons + _validMagazines),TFV_MWIPS] call TFV_tradingGetStages;
				};
			};
		};
	};
	case "backpack": {
	    _startingCargoCount = ((count([(unitBackpack player)] call TFV_vehicleGetWeaponCargo)) + (count([(unitBackpack player)] call TFV_vehicleGetMagazineCargo)));
	    _keys = [(unitBackpack player)] call TFV_findKeys;
		switch (_cat) do {
		    case "weapons": {
				if ((count([(unitBackpack player)] call TFV_vehicleGetWeaponCargo)) <= 0) then {
					systemChat "В твоем рюкзаке нет оружия на продажу.";
					_canTrade = false;
			    } else {
					_tradeCount = (count([(unitBackpack player)] call TFV_vehicleGetWeaponCargo));
					_tradeCount = (_tradeCount - (count _keys));
					_tradeWeapons = [(unitBackpack player)] call TFV_vehicleGetWeaponCargo;
					_tradeMagazines = [];
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validWeapons set [(count _validWeapons),_x];
						};
					} forEach _tradeWeapons;
					_tradeStages = [_validWeapons,TFV_WIPS] call TFV_tradingGetStages;
				};
			};
			case "magazines": {
			    if ((count([(unitBackpack player)] call TFV_vehicleGetMagazineCargo)) <= 0) then {
					systemChat "В твоем рюкзаке нет магазинов на продажу.";
					_canTrade = false;
				} else {
					_tradeCount = (count([(unitBackpack player)] call TFV_vehicleGetMagazineCargo));
					_tradeWeapons = [];
					_tradeMagazines = [(unitBackpack player)] call TFV_vehicleGetMagazineCargo;
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validMagazines set [(count _validMagazines),_x];
						};
					} forEach _tradeMagazines;
					_tradeStages = [_validMagazines,TFV_MIPS] call TFV_tradingGetStages;
				};
			};
			case "all": {
				if (((count([(unitBackpack player)] call TFV_vehicleGetWeaponCargo)) <= 0) && ((count([(unitBackpack player)] call TFV_vehicleGetMagazineCargo)) <= 0)) then {
					systemChat "В твоем %1 нет предметов на продажу.";
					_canTrade = false;
				} else {
					_tradeCount = ((count([(unitBackpack player)] call TFV_vehicleGetWeaponCargo)) + (count([(unitBackpack player)] call TFV_vehicleGetMagazineCargo)));
					_tradeCount = (_tradeCount - (count _keys));
					_tradeWeapons = [(unitBackpack player)] call TFV_vehicleGetWeaponCargo;
					_tradeMagazines = [(unitBackpack player)] call TFV_vehicleGetMagazineCargo;
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validWeapons set [(count _validWeapons),_x];
						};
					} forEach _tradeWeapons;
					{
					    if (([TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice) > 0) then {
						    _validMagazines set [(count _validMagazines),_x];
						};
					} forEach _tradeMagazines;
					_tradeStages = [(_validWeapons + _validMagazines),TFV_MWIPS] call TFV_tradingGetStages;
				};
			};
		};	
	};
};

if (!_canTrade) exitWith {
	TFV_INWORK = false;
 	if (_object == "vehicle") then {TFV_VEHICLE setVehicleLock "UNLOCKED";}; 
};

r_interrupt = false;
_currentStage = 1;
_returnWeapons = if ((count _keys) > 0) then {_keys} else {[]};
_returnMagazines = [];
_tradeLoop = true;
_stageStarted = false;
_tradeValueInt = 0;
_itemPrice = -1;
_tradedWeapons = 0;
_tradedMagazines = 0;
_success = true;

titleText [(format [TFV_STR_TRADING,_currentStage,_tradeStages,(if (_object == "vehicle") then {_vehicleDisplayName} else {"backpack"})]),"PLAIN DOWN"];
while {_tradeLoop} do {
    _currentCargoCount = ((count([TFV_VEHICLE] call TFV_vehicleGetWeaponCargo)) + (count([TFV_VEHICLE] call TFV_vehicleGetMagazineCargo)));
	
	if (["medic",(animationState player)] call TFV_inString) then {
		_stageStarted = true;
	};
	if ((_stageStarted) && !(["medic",(animationState player)] call TFV_inString)) then {
		_currentStage = (_currentStage + 1);
		titleText [(format [TFV_STR_TRADING,_currentStage,_tradeStages,(if (_object == "vehicle") then {_vehicleDisplayName} else {"backpack"})]),"PLAIN DOWN"];
		_stageStarted = false;
	};
	if ((!_stageStarted) && !(["medic",(animationState player)] call TFV_inString)) then {
		if (_currentStage > _tradeStages) then {
			_success = true;
			_tradeLoop = false;
		} else {
			player playActionNow "Medic";
		};
	};
    
	if (r_interrupt) exitWith {
		[objNull,player,rSwitchMove,""] call RE;
		player playActionNow "stop";
		_tradeLoop = false;
		_success = false;
		titleText [TFV_STR_TRADECANCELLED,"PLAIN DOWN"];
	};
	
	if (_object == "vehicle") then {
		if ((count(crew TFV_VEHICLE)) > 0) exitWith {
			r_interrupt = true;
			_tradeLoop = false;
			_success = false;
			[objNull,player,rSwitchMove,""] call RE;
			player playActionNow "stop";
			titleText [(format ["Другой игрок залез в твой %1, торговля отменена.",_vehicleDisplayName]),"PLAIN DOWN"];
		};
		if (_startingCargoCount != _currentCargoCount) exitWith {
			r_interrupt = true;
			_tradeLoop = false;
			_success = false;
			[objNull,player,rSwitchMove,""] call RE;
			player playActionNow "stop";
			titleText [(format ["Другой игрок открыл инвентарь твоего %1, торговля отменена.",_vehicleDisplayName]),"PLAIN DOWN"];	    
		};
		if (((getPos TFV_VEHICLE) distance _startingPos) > 1) exitWith {
			r_interrupt = true;
			_tradeLoop = false;
			_success = false;
			[objNull,player,rSwitchMove,""] call RE;
			player playActionNow "stop";
			titleText [(format ["Твой %1 движется, торговля отменена.",_vehicleDisplayName]),"PLAIN DOWN"];		
		};
	};
	if (_object == "backpack") then {
	    if (_startingCargoCount != (count([(unitBackpack player)] call TFV_vehicleGetWeaponCargo)) + (count([(unitBackpack player)] call TFV_vehicleGetMagazineCargo))) exitWith {
			r_interrupt = true;
			_tradeLoop = false;
			_success = false;
			[objNull,player,rSwitchMove,""] call RE;
			player playActionNow "stop";
			titleText ["Другой игрок залез в твой рюкзак, торговля отменена.","PLAIN DOWN"];	
		};
	};
};

if (_success) then {
	if ((_cat == "weapons") || (_cat == "all")) then {
		if ((count(_tradeWeapons)) != 0) then {
			{
				_itemPrice = [TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice;
				if (_itemPrice > 0) then {
					_tradeValueInt = (_tradeValueInt + _itemPrice);
					_tradedWeapons = (_tradedWeapons + 1);
				} else {
					if (!(_x in _keys)) then {
						_returnWeapons set [(count _returnWeapons),_x];
					};
				};
			} forEach _tradeWeapons;
		};
	};
	if ((_cat == "magazines") || (_cat == "all")) then {
		if ((count(_tradeMagazines)) != 0) then {
			{
				_itemPrice = [TFV_TRADERDATA,TFV_TRADER,_x] call TFV_weaponMagazineGetPrice;
				if (_itemPrice > 0) then {
					_tradeValueInt = (_tradeValueInt + _itemPrice);
					_tradedMagazines = (_tradedMagazines + 1);
				} else {
					_returnMagazines set [(count _returnMagazines),_x];
				};
			} forEach _tradeMagazines;
		};
    };
	
    if (_object == "vehicle") then {
	    if ((_cat == "magazines") || (_cat == "all")) then {
			clearMagazineCargoGlobal TFV_VEHICLE;
		};
		if ((_cat == "weapons") || (_cat == "all")) then {
	        clearWeaponCargoGlobal TFV_VEHICLE;
		};
    } else {
	    if ((_cat == "magazines") || (_cat == "all")) then {
			clearMagazineCargoGlobal (unitBackpack player);
		};
		if ((_cat == "weapons") || (_cat == "all")) then {
	        clearWeaponCargoGlobal (unitBackpack player);
		};
    };
  
    if ((_cat == "weapons") || (_cat == "all")) then {
		{
			if (_object == "vehicle") then {
				TFV_VEHICLE addWeaponCargoGlobal [_x,1];
			} else {
				(unitBackpack player) addWeaponCargoGlobal [_x,1];
			};
		} forEach _returnWeapons;
	};
    {
		if (_object == "vehicle") then {
			TFV_VEHICLE addMagazineCargoGlobal [_x,1];
		} else {
			(unitBackpack player) addMagazineCargoGlobal [_x,1];
		};
    } forEach _returnMagazines;
  
    if (_object == "vehicle") then {
	    switch (_cat) do {
		    case "weapons": {
				titleText [(format [TFV_STR_TRADECOMPLETE,_tradedWeapons,"weapons",_vehicleDisplayName]),"PLAIN DOWN"];
			};
			case "magazines": {
				titleText [(format [TFV_STR_TRADECOMPLETE,_tradedMagazines,"magazines",_vehicleDisplayName]),"PLAIN DOWN"];
			};
			case "all": {
				titleText [(format [TFV_STR_TRADECOMPLETE,(_tradedWeapons + _tradedMagazines),"items",_vehicleDisplayName]),"PLAIN DOWN"];
			};
		};
	} else {
	    switch (_cat) do {
		    case "weapons": {
				titleText [(format [TFV_STR_TRADECOMPLETE,_tradedWeapons,"weapons","backpack"]),"PLAIN DOWN"];
			};
			case "magazines": {
				titleText [(format [TFV_STR_TRADECOMPLETE,_tradedMagazines,"magazines","backpack"]),"PLAIN DOWN"];
			};
			case "all": {
				titleText [(format [TFV_STR_TRADECOMPLETE,(_tradedWeapons + _tradedMagazines),"items","backpack"]),"PLAIN DOWN"];
			};
		};	
	};
	
	if(TFV_COINS) then {
		_payment = [_tradeValueInt,_object] call TFV_returnChangeCoins;
	}else{
		_payment = [_tradeValueInt,_object] call TFV_returnChange;
	};
	

};

 if (_object == "vehicle") then {TFV_VEHICLE setVehicleLock "UNLOCKED";};
 TFV_INWORK = false;


 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

Спасибо за подсказку, но все равно банит...

 

Попробуй поставить

 

_BCM = false;

 

У меня также было, когда добавлял свое скролл меню, поставил false и перестало банить игроков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Добавил TradeFromVehicle Version 2.0 все без проблем работате, кроме одного момента золото не появляется в рюкзаке...В чем проблема?

Изменено пользователем Zvepb (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Обнови пж ссылку

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Будет ли работать если не переносить торговцев в миссию?

На гитхабе в описании:

If you have DZE_ConfigTrader enabled this will automaticlaly work. hopefully

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Перезалить можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Гайдоделам бы добавить обязательный пункт, что бы ссылку давали на оригинал скрипта на гитхабе, и это исбавит форум от спама в топиках про перезалив ссылки. Не полностью, конечно, но частично.

Вот линк на гитхабе для этого мода: https://github.com/Dwarfer/TradeFromVehicle

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: BR0wi
      Подскажите где найти людей, которые делаю моды на заказ. К кому вообще обращаться? Или что бы реализовать свои идеи нужно самому "год" сидеть и изучать все механики модинга?
    • Автор: CubeIn
      Приветствую господа, хочу создать новый проект, уникальный, но для этого нужен маппер.
      Я оставлю здесь свой дискрод, напишите в лс, кто готов взяться за крупный проект.
      4me#4542
    • Автор: 6agu
      Поставил
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • Автор: 123new
      Много вопросов на данную тему наблюдаю от новичков, попробую прояснить немного сей вопрос.
       
      Предположим. что вы уже знаете на каких координатах вам надо спавнить определенное здание или объект\животное\бота, с каким углом поворота. И так. эта тема для вас.
       
      Сразу делаю пометку, метод, который добавили нам разработчики игры в патче 1.15, очень хорошо описал наш товарищ в сообщении форума:
      Рекоммендую вам использовать именно его!
      Ниже опубликованы старые методы.
       
      Если вы с расставили их с модифицированной версии Offline (Offline by Arksenor это называется), то вы получили и нашли код вида:
      GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13260.040039 0.0 3670.984131").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13262.756836 0.0 3645.180176").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13265.441406 0.0 3619.531982").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13268.124023 0.0 3593.995361").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13270.844727 0.0 3568.186523").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13273.514648 0.0 3542.561279").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13276.195313 0.0 3517.048828").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13278.399414 0.0 3496.097900").SetOrientation("-96.000000 0.000000 0.000000"); Здесь (по примеру первой строки) 1 значение в скобках - id постройки/объекта, 2 значение - координаты в формате X Y Z, разделенные пробелом, 3 - значение поворота примерно в том же формате.
      Как это делать в Offline - статья от автора Offine:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Add-custom-objects-to-your-server-or-mission
       
      И так, инструкция:
      1. Добавляем в начало init.c файла в вашей mpmissions следующий код:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\spawn_buildings.c" 2. Создаем в папке вашей активной mpmissions файлик spawn_buildings.c и заполняем его следующей информацией.
      void SpawnObject( string type, vector position, vector orientation ) { private string NameBlockLog = "[CreateObject] "; private string InfoLog = ""; if(type != "") { auto obj = GetGame().CreateObject( type, "0 0 0" ); if(obj) { if ((position[0] != 0) && (position[1] != 0) && (position[2] != 0)) { obj.SetPosition( position ); obj.SetOrientation( orientation ); obj.Update(); if (obj.CanAffectPathgraph()) { obj.SetAffectPathgraph(true, false); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GetGame().UpdatePathgraphRegionByObject, 100, false, obj); } InfoLog = "[Type: '" + obj.GetType() + "' Position: '" + obj.GetPosition().ToString() + "' Orientation: '" + obj.GetOrientation().ToString() + "']"; Write_Log(NameBlockLog + " Object has been created successfully! Info " + InfoLog); } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed position. Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed type. Info " + InfoLog); } } void Write_Log(string message) { Print(String(message)); } 3. Открываем созданный нами файл,  и в конце файла дописываем следующее:
      void SpawnAirfeeldBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } void SpawnKrasnoBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } Где после void - название функции идет, а между открытыми скобками вызов спавна самих зданий на указанных координатах.
      На примере 1 строки:
      Land_CementWorks_ExpeditionB - id постройки (type)
      13251.875000 0.0 3748.525879 - координаты в формате X Y Z
      -96.000000 0.000000 0.000000 - значение поворота в формате X Y Z
      Внимание: id постройки и координаты в примере указаны не верные и требуют подключения дополнительной модификации для корректной работы!!! Координаты не соответствуют названию функции!!!
      4. открываем в MpMissions в папке с вашей активной миссией init.c и перед ЗАКРЫВАЮЩЕЙ скобкой '}' дописываем нужную нам функцию (это будет активация спавна на карте):
      SpawnAirfeeldBuildings(); 5. Готово, Запускайте сервер, и в scripts.log вы увидите процедуру спавна ваших зданий и увидите, спавнятся ли они на карте или нет.
      Можно написать конечно и более готовую, универсальную систему спавна на карте со считыванием конфигурации из файла, но я считаю это лишним.
       
      Как заполнить добавленные здания лутом на карте:
      вариант 1:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Enable-loot-for-custom-placed-objects
      вариант 2: вручную заполнить xml-файл  mapgrouppos.xml в mpmssions данными о местоположении зданий, где rpy - значение поворота здания в формате Z Y X
       
      С помощью данной статьи вы можете разместить любой элемент игры(постройку, животное, зомби, бота), доступный к спавну через любую модификацию-админ. панель. Очень полезный мод в этом смысле BuilderItems, с его помощью можно творить поистину интересные локации!
    • Автор: Venom21
      Появилась такая проблема, нужно закрыть некоторые слоты под одежду, когда на определённый слот одет предмет…
      пример: возьмём экзоскелет от Фидова, там есть две версии которая одеваеться как на тело и ноги, и есть которая одеваться на разгрузку и пояс, так вот, нужно например чтобы при одетом экзаче на тело и ноги слоты под пояс и разгрузку блокировались, либо только под определенные предметы, если есть интерес то цену можем в личке обсудить…
      P.S. Разрешение от Фидова на переделку и переупаковку есть)
  • Наш выбор

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.