RedLink

Single Currency v3.0 для 1.0.6

67 сообщений в этой теме

png&fsize=142797&hid=83501f71a7d6e67c428

 

Представляю вам адаптированную систему единой валюты для Epoch 1.0.6.x для карты Чернарусь.

В принципе переделать торговцев для другой карты не сложно и есть куча гайдов как это сделать.

 

Для работоспособности данной системы вам понадобятся кастомные файлы, а именно:

fn_selfActions.sqf

compiles.sqf

publicEH.sqf

variables.sqf

configVariables.sqf

 

Так же вам понадобится полный файл description.ext, а не урезанный стоковый.

Тут я писал как это сделать - http://s-platoon.ru/index.php?/topic/5944-rsctitles-i-epoch-106/?p=51120

 

Тем кто не знает где их взять и как подключить, дальше читать смысла нет.

 

Прежде чем начать, хочу отметить, что выше указанные файлы у меня находятся по таким путям:

\MPMissions\DayZ_Epoch_11.Chernarus\compile\fn_selfActions.sqf

\MPMissions\DayZ_Epoch_11.Chernarus\init\compiles.sqf

\MPMissions\DayZ_Epoch_11.Chernarus\init\publicEH.sqf

\MPMissions\DayZ_Epoch_11.Chernarus\init\variables.sqf

\MPMissions\DayZ_Epoch_11.Chernarus\configVariables.sqf

Соответственно пути в данном гайде я буду указывать свои.

 

И так, начнем.

 

Работа с файлами Миссии

1. Качаем архив https://yadi.sk/d/jJUH65Ih3DqATS и распаковываем в папку с миссией.

 

2. Открываем description.ext и находим строку

class RscTitles {

и вставляем под ней

#include "ZSC\config\ZSChud.hpp"

В этом же файле в самом низу вставляем

#include "Configs\CfgServerTrader\cfgServerTrader.hpp"
#include "ZSC\config\ZSCdefines.hpp"
#include "ZSC\config\ZSCdialogs.hpp"

 

3. Работа в файле init.sqf

3.1.Ищем строку

call compile preprocessFileLineNumbers "init\compiles.sqf";

и под ней вставляем

call compile preprocessFileLineNumbers "ZSC\gold\ZSCinit.sqf";

3.2. Ищем строку

execFSM "\z\addons\dayz_code\system\player_monitor.fsm";

и под ней вставляем

execVM "ZSC\compiles\playerHud.sqf";

3.3. Ищем строку

call compile preprocessFileLineNumbers "server_traders.sqf";

и заменяем ее на

call compile preprocessFileLineNumbers "server_traders2.sqf";

 

4. Открываем файл configVariables.sqf

4.1. Строку

Z_SingleCurrency = false;

заменяем на 

Z_SingleCurrency = true;

4.2. Строку

DZE_MoneyStorageClasses = [];

заменяем на

DZE_MoneyStorageClasses = ["VaultStorage","LockboxStorage","StorageShed_DZ","OutHouse_DZ","Wooden_shed_DZ","WoodShack_DZ","GunRack_DZ","WoodCrate_DZ","TentStorage","DesertTentStorage1","DomeTentStorage1"];

Это стандартные объекты, в которых можно хранить бабло в стоковой версии SC 3.0. По желанию можно добавить и другие, но только те, которые записываются в б.д. Переменные здесь уже изменены под 1.0.6

 

5. Работа с файлом fn_selfActions.sqf

5.1. В строке, где переменные

private ["_canPickLight",

в самом конце перед скобкой ] добавить

,"_player_studybody"

5.2. Ищем строку

_isDestructable = _cursorTarget isKindOf "BuiltItems";

и над ней вставляем

_isZombie = _cursorTarget isKindOf "zZombie_base";

5.3. Находим строку

// gear access on surrendered player

и над ней вставляем

	_player_studybody = false;
	if (!_isAlive) then {

		if (_isMan && !_isZombie) then {
			_player_studybody = true;
		}
	};
	
	if (_player_studybody) then {
		if (s_player_studybody < 0) then {
				s_player_studybody = player addAction [("<t color=""#FF0000"">"+("Снять бабло") + "</t>"), "ZSC\actions\check_wallet.sqf",_cursorTarget, 0, false, true, "",""];
		};
	} else {
		player removeAction s_player_studybody;
		s_player_studybody = -1;
	};

5.4. Находим строку

//Allow owner to pack vault

и над ней вставляем

	if(_typeOfCursorTarget in DZE_MoneyStorageClasses && (player distance _cursorTarget < 5)) then {
		if (s_bank_dialog < 0) then {
				s_bank_dialog = player addAction ["Хранилище бабла", "ZSC\actions\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];	
		};
	} else {
     	player removeAction s_bank_dialog;
		s_bank_dialog = -1;
	};

	// cars 
	if( _isVehicle && !_isMan &&_isAlive && !_isMan && !locked _cursorTarget && !(_cursorTarget isKindOf "Bicycle") && (player distance _cursorTarget < 5)) then {		
		if (s_bank_dialog2 < 0) then {
			s_bank_dialog2 = player addAction ["Хранилище бабла", "ZSC\actions\bank_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
		};			
	} else {		
		player removeAction s_bank_dialog2;
		s_bank_dialog2 = -1;
	};	

5.5. Находим строку

//Fuel Pump

не перепутайте со строкой //Fuel Pump on truck, и над ней вставляем

	if (_isMan and _isAlive and !_isZombie and !(_typeOfCursorTarget in serverTraders)) then {
		if (s_givemoney_dialog < 0) then {
			s_givemoney_dialog = player addAction [format["Дать денег to %1", (name _cursorTarget)], "ZSC\actions\give_player_dialog.sqf",_cursorTarget, 3, true, true, "", ""];
		};
	} else {
		player removeAction s_givemoney_dialog;
		s_givemoney_dialog = -1;
	};

5.6. находим строку (почти в самом низу, не перепутайте с той, которая в середине файла)

s_player_manageDoor = -1;

и под ней вставляем

	player removeAction s_player_studybody;
	s_player_studybody = -1;
	player removeAction s_givemoney_dialog;
	s_givemoney_dialog = -1;
	player removeAction s_bank_dialog;
	s_bank_dialog = -1;
	player removeAction s_bank_dialog2;
	s_bank_dialog2 = -1;

 

6. Работа с файлом publicEH.sqf

6.1. Находим строку

"PVDZE_maintainArea" 	addPublicVariableEventHandler {(_this select 1) spawn server_maintainArea};

и под ней вставляем

	"PVDZE_atp" addPublicVariableEventHandler {
		_x = _this select 1;
		if (typeName _x == "STRING") then {
			diag_log _x;
		};
	};

 

7. Работа с файлом variables.sqf

7.1. Находим строку

s_player_pzombiesfeed = -1;

и под ней вставляем

	s_player_studybody = -1;
	s_givemoney_dialog = -1;
	s_bank_dialog = -1;
	s_bank_dialog2 = -1;

 

Работа с Фильтрами

1. Открываем фильтр publicvariable.txt и ищем 

!=(remExField|remExFP)

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

!="PVDZE_atp"

Для примера привожу свой файл

//new
5 !"PVDZE_log_lockUnlock" !=PVDZE_log_lockUnlock !"redHunter" !=redHunter !"redDiagLog" !=redDiagLog !="PVDZE_atp" !=(remExField|remExFP) !=(PVCDZ_obj_GutBody|drn_AskServerDynamicWeatherEventArgs|BIS_effects_gepv|achievement|dayzFlies) !=PVDZ_(drg_(RaDrag|RaLW|RLact)|getTickTime|hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove)|Server(_Simulation|StoreVar)|sec_atp) !=PVDZ_(playerMedicalSync|object_replace|groupInvite) !=PVDZ_(send(|Unconscious)) !=PVDZ_Server_(buildLock|LogIt|UpdateGroup) !=PVDZ_Server_process(Code|SetAccessCode) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Delete|Publish|Swap|Trade)|fullobj_Publish|maintainArea|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ|TradeMenu)) !=PVAH_AdminReq !=PVAH_WriteLogReq !=PVAHR_0_[a-zA-Z0-9]{20,40} !"PVAHR_" !="PVAH_AdminReq" !="PVAH_WriteLogReq" !=PVAHR_0_[a-zA-Z0-9]{20,40}
1=BIS_effects_gepv|PVDZ_(drg_RaDrag|hlt_Bleed|obj_Delete|obj_Destroy|obj_Publish|plr_Death|plr_LoginRecord|sec_atp|send|veh_SF)
//5 "PVAHR_" !"PVAHR_0_"

 

Работа с серверными файлами.

1. Распаковываем dayz_server.pbo (после всех произведенных работ не забудьте все запаковать обратно).

 

2. Открываем файл server_handleSafeGear (в папке compiles)

 

2.1. в первой строке с переменными в конце перед скобкой ] добавляем

,"_objMoney"

2.2. Ищем строку

_ownerID = _obj getVariable ["ownerPUID","0"];

и под ней вставляем

_objMoney	= _obj getVariable["bankMoney",0]; //zsc

2.3. Ищем строку

_holder setVariable ["OEMPos",_pos,true];

Она встречается два раза в этом файле. В обоих найденных случаях под ней вставляем

		_holder setVariable ["bankMoney", _objMoney, true]; //zsc

 

3. Открываем файл server_playerSync.sqf (в папке compiles) и ищем строку

_charPosLen = count _charPos;

Под ней комментируем кусок кода как показано у меня

/*
if (!isNil "_magazines") then {
	if (typeName _magazines == "ARRAY") then {
		_playerGear = [weapons _character,_magazines select 0,_magazines select 1];
		_character setVariable["ServerMagArray",_magazines, false];
	};
} else {
	//check Magazines everytime they aren't sent by player_forceSave
	_magTemp = (_lastMagazines select 0);
	if (count _magTemp > 0) then {
		_magazines = [(magazines _character),20] call array_reduceSize;
		{
			_class = _x;
			if (typeName _x == "ARRAY") then {
				_class = _x select 0;
			};
			if (_class in _magazines) then {
				_MatchedCount = {_compare = if (typeName _x == "ARRAY") then {_x select 0;} else {_x}; _compare == _class} count _magTemp;
				_CountedActual = {_x == _class} count _magazines;
				if (_MatchedCount > _CountedActual) then {
					_magTemp set [_forEachIndex, "0"];
				};
			} else {
				_magTemp set [_forEachIndex, "0"];
			};
		} forEach (_lastMagazines select 0);
		_magazines = _magTemp - ["0"];
		_magazines = [_magazines, (_lastMagazines select 1)];
		_character setVariable["ServerMagArray",_magazines, false];
		_playerGear = [weapons _character,_magazines select 0,_magazines select 1]]; 
	};
};
*/

 

4. Открываем файл server_updateObject.sqf (в папке compiles) и ищем строку

_inventory = [getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object];

и заменяем ее на

_inventory = [getWeaponCargo _object, getMagazineCargo _object, getBackpackCargo _object, _object getVariable["bankMoney",0]];

 

5. Открываем файл server_monitor.sqf (в папке system) и ищем строку

if( (count _inventory > 0) && !_isPlot && !_doorLocked) then {

и под ней вставляем

				/*ZSC*/
			if( count (_inventory) > 3)then{
					_object setVariable ["bankMoney", _inventory select 3, true];
				}else{
					_object setVariable ["bankMoney", 0, true];
			};
				/*ZSC*/

 

Установка Завершена.

Вроде ничего не упустил.

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


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


Сори тупанул в старом Init шарился)

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

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


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

Цитирую еще раз!

 

Для работоспособности данной системы вам понадобятся кастомные файлы, а именно:
fn_selfActions.sqf
compiles.sqf
publicEH.sqf
variables.sqf
configVariables.sqf

Так же вам понадобится полный файл description.ext, а не урезанный стоковый.
Тут я писал как это сделать - http://s-platoon.ru/...ch-106/?p=51120

Тем кто не знает где их взять и как подключить, дальше читать смысла нет.

Прежде чем начать, хочу отметить, что выше указанные файлы у меня находятся по таким путям:
\MPMissions\DayZ_Epoch_11.Chernarus\compile\fn_selfActions.sqf
\MPMissions\DayZ_Epoch_11.Chernarus\init\compiles.sqf
\MPMissions\DayZ_Epoch_11.Chernarus\init\publicEH.sqf
\MPMissions\DayZ_Epoch_11.Chernarus\init\variables.sqf
\MPMissions\DayZ_Epoch_11.Chernarus\configVariables.sqf
Соответственно пути в данном гайде я буду указывать свои.

 

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

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


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

Цитирую еще раз!

Для работоспособности данной системы вам понадобятся кастомные файлы, а именно:

fn_selfActions.sqf

compiles.sqf

publicEH.sqf

variables.sqf

configVariables.sqf

 

Так же вам понадобится полный файл description.ext, а не урезанный стоковый.

Тут я писал как это сделать - http://s-platoon.ru/...ch-106/?p=51120

 

Тем кто не знает где их взять и как подключить, дальше читать смысла нет.

Да я затупил , старый init открыл и в нем искал))

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


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

В этом же скрипте валюта хранится в сейфах и автомобилях , но в скролл меню нету таких вкладок и с трупа тоже нельзя взять деньги, как исправить ?

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

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


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

В этом же скрипте валюта хранится в сейфах и автомобилях , но в скролл меню нету таких вкладок и с трупа тоже нельзя взять деньги, как исправить ?

Инфистар может блокировать скрол меню, поробуй отключить и проверить. 

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


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

Пока из видимых ошибок: не смог подключить !="PVDZE_atp" почему то, инфик кикал. Решил полностью копированием твоего примера. И да... скролл меню нету, проверял на трупах, сейфах и локбоксах. UP Со скроллом разобрался, кривые ручки не правильно файл fn_selfActions.sqf подцепили :)

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

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


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

В общем тут такое дело... Все работает нормально, НО продал вещи и в админке клацнул force disconnect, зешел обратно инвентарь откатился до того, который был на момент продажи, а деньги остались)

 

Попробовал еще раз и результат не поменялся. Релогом откатывает инвентарь и не забирает валюту...

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

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


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

RedLink сказал(а) 11 Фев 2017 - 04:23:
3. Открываем файл server_playerSync.sqf (в папке compiles) и ищем строку
_charPosLen = count _charPos;
Под ней комментируем кусок кода как показано у меня
/*
if (!isNil "_magazines") then {
	if (typeName _magazines == "ARRAY") then {
		_playerGear = [weapons _character,_magazines select 0,_magazines select 1];
		_character setVariable["ServerMagArray",_magazines, false];
	};
} else {
	//check Magazines everytime they aren't sent by player_forceSave
	_magTemp = (_lastMagazines select 0);
	if (count _magTemp > 0) then {
		_magazines = [(magazines _character),20] call array_reduceSize;
		{
			_class = _x;
			if (typeName _x == "ARRAY") then {
				_class = _x select 0;
			};
			if (_class in _magazines) then {
				_MatchedCount = {_compare = if (typeName _x == "ARRAY") then {_x select 0;} else {_x}; _compare == _class} count _magTemp;
				_CountedActual = {_x == _class} count _magazines;
				if (_MatchedCount > _CountedActual) then {
					_magTemp set [_forEachIndex, "0"];
				};
			} else {
				_magTemp set [_forEachIndex, "0"];
			};
		} forEach (_lastMagazines select 0);
		_magazines = _magTemp - ["0"];
		_magazines = [_magazines, (_lastMagazines select 1)];
		_character setVariable["ServerMagArray",_magazines, false];
		_playerGear = [weapons _character,_magazines select 0,_magazines select 1]]; 
	};
};
*/ 

 

Не из-за этого происходит откат? Для чего это комментируется?

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

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


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

 

Не из-за этого происходит откат случайно? Для чего это коментируется?

 

Может и из-за этого.

Но этот кусок сыпет кучу ошибок, т.к. он неправильно разработчиками написан реализован.

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


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

Может и из-за этого.

Но этот кусок сыпет кучу ошибок, т.к. он неправильно разработчиками написан реализован.

хз коммент не ставил и все вроде норм

вот rpt

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


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

ты с сейфом или тачками по взаимодействуй, тогда ошибка и вылезет.

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


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

В этом же скрипте валюта хранится в сейфах и автомобилях , но в скролл меню нету таких вкладок и с трупа тоже нельзя взять деньги, как исправить ?

не правильно подключен fn_selfactions скорее всего.

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


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

 

Инфистар может блокировать скрол меню, поробуй отключить и проверить.


CSA = false отключена. Копаем дальше... Со скроллом разобрался, кривые ручки не правильно добавили файл fn_selfActions.sqf подцепили :) Изменено пользователем Plut (история изменений)

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


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

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

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

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

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


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

Войти

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


Войти сейчас