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

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

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

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

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

Меняем скин если если позволит хуманити.

Всем привет!

Как дать запрет на смену скина(скинов), если не достаточно хуманити?

 

Возможно я примерно представляю процедуру, как можно понять кто игрок:

 

private ["_isHero","_isBandit","_isSurvivor",];

 

_isHero = (player getVariable ["humanity",0] > 5000);
_isHero = (player getVariable ["humanity",0] > 5000);
__isSurvivor = ((player getVariable ["humanity",0] < 5000) && (player getVariable ["humanity",0] > -5000));
 

if (_isHero) then {

 

};

 

if (_isBandit) then {

 

};

 

if (_isSurvivor) then {

 

};

Но список скинов не маленький и где процедуру вписывать, пока не представляю.

Я не стремлюсь за всем готовым но вдруг кто то встречал такой скрипт или есть совет, буду признателен!

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

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


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

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

  • 0

Тема не в том разделе.

А если посмотреть так код правильнее будет выглядеть
 

private ["_isHero","_isBandit","_isSurvivor",];

 
_isHero = (player getVariable ["humanity",0] > 5000);      //Герой
_isBandit = (player getVariable ["humanity",0] > -5000));  //Бандит
_isSurvivor = (player getVariable ["humanity",0] < 5000); //Выживший
 

if (_isHero) then {

 

};

 

if (_isBandit) then {

 

};

 

if (_isSurvivor) then {

 

};

 

То есть 

> 5000);  // Означает что для героя надо набрать больше 5000 хуманити
> -5000);  //Это означает что нужно набрать меньше 5000 хуманити для бандита
< 5000);  // А этот код обозначает что выживший он будет пока не набрал 5000 хуманити или отрицательной или положительной

 

Количество хуманити можно изменить по своим нуждам и классы,я указал в коде где какой.
 

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


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





  • 0

извиняюсь если тема не в том разделе, я новенький, исправлюсь)), надеюсь простительно.

*********************************************************************************************

 

Когда я писал для Pawn там было все проще, событие например Игрок умер,подключился, жив, не жив и т.п.. они были уже внутри движка, тебе только приходилось их вызывать а тут надо как я понимаю модифицировать само событие но для этого надо опыт и знать где находятся файлы отвечающие за это событие, подскажите где же они спрятались?)))

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

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


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

Это значит что пока ты не наберёшь -5000 хуманити ты будешь кепкой.

 


_isSurvivor = (player getVariable ["humanity",0] < 5000); //Выживший 
 

 

 

 

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

Приведу пример:

Если ты допустим захочешь сделать для героя 20 к хуманити,ты пишешь

 

 

_isHero = (player getVariable ["humanity",0] > 20000); //Герой  
 

 

 

 

А если допустим бандита  -20 к хуманити,ты пишешь

 

_isBandit = (player getVariable ["humanity",0] > -20000));         //Бандит

 

Собственно у кепки выставляем :

 

_isSurvivor = (player getVariable ["humanity",0] < 20000); //Выживший

 

То есть персонаж будет кепкой пока не пересечёт отметку в хуманити или 20к или  - 20к

 

 

Надеюсь правильно понял твой вопрос

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


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

что то я не пойму, то ли при сохранении что то происходит но я писал так когда создавал тему так:

 

_isHero = (player getVariable ["humanity",0] > 5000);
_isBandit = (player getVariable ["humanity",0] < -5000); // ТУт я думал что отрицательное значение вопринимается как меньшее.
_isSurvivor = ((player getVariable ["humanity",0] < 5000) && (player getVariable ["humanity",0] > -5000));
 

 

теперь понятно но тогда думаю вот так будет лучше:

 

_isHero = (player getVariable ["humanity",0] > 5000);
_isBandit = (player getVariable ["humanity",0] > -5000);
_isSurvivor = ((player getVariable ["humanity",0] < -5000) && (player getVariable ["humanity",0] > 5000));

Да! Спасибо за подробный ответ и я извиняюсь, корректировал и не ожидал что вы так быстро ответите! Немного каламбура навел удоляя свои сообщения...

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

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


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

_isSurvivor = ((player getVariable ["humanity",0] < 5000) && (player getVariable ["humanity",0] > -5000));  
 

 

вот именно это.

 

то есть персонаж будет кепкой пока не пересечёт отметку в хуманити или 20к или  - 20к

 

Если так посмотреть то

 

можно для героя выставить к примеру 15 к хуманити а для бандита -20 ,приведу пример:

 

 

 

 

_isSurvivor = ((player getVariable ["humanity",0] < 15000) && (player getVariable ["humanity",0] > 20000));
 

 

 

 

Собственно выше этого кода выставляется  для героя и бандита кол-во хуманити нужное для каждого из персонажа,за них отвечают 1 и 2 строка а 3 определяет сколько нужно кепке набрать что-бы перейти к какому то одному классу.

 

 

 

_isHero = (player getVariable ["humanity",0] > 20000); _isBandit = (player getVariable ["humanity",0] > -15000); _isSurvivor = ((player getVariable ["humanity",0] < 20000) && (player getVariable ["humanity",0] > -15000));
 

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


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

Теперь мне понятно благодаря Вам Esquire, большое спасибо!

Остался один вопрос, событие когда игрок наводит мышкой на одежду, перед тем как нажать для смены, осталось найти...

 

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

 

Еще вопрос, если кто знает, как проверить что одето на игроке?

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

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


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

Проверить можно через БД и через InfiSTAR.

Нарушение правил форума.

Правило 3.7

"Создание темы в несоответствующем разделе"

Тема перенесена.
Предупреждение выдано.

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


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

Теперь мне понятно благодаря Вам Esquire, большое спасибо!

Остался один вопрос, событие когда игрок наводит мышкой на одежду, перед тем как нажать для смены, осталось найти...

 

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

 

Еще вопрос, если кто знает, как проверить что одето на игроке?

проверку вставлять в фаил ui_selectSlot.sqf после строки _item = gearSlotData _control;

 

 

_skinList= ["скин1","скин2"];

if ((_item in _skinList)&&_isBandit) exitWith {}; // бандит не сможет использовать дынные скины.

 

 

Проверить можно через БД и через InfiSTAR.

 

жуть...

 

проверить можно 

_PlayerSkin = typeOf Player;

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


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

проверку вставлять в фаил ui_selectSlot.sqf после строки _item = gearSlotData _control;

 

 

_skinList= ["скин1","скин2"];

if ((_item in _skinList)&&_isBandit) exitWith {}; // бандит не сможет использовать дынные скины.

 

 

 

жуть...

 

проверить можно 

_PlayerSkin = typeOf Player;

а, я просто вопроса не допонял. Прочел в основном последний и написал.

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


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

проверку вставлять в фаил ui_selectSlot.sqf после строки _item = gearSlotData _control;

 

 

_skinList= ["скин1","скин2"];

if ((_item in _skinList)&&_isBandit) exitWith {}; // бандит не сможет использовать дынные скины.

 

 

жуть...

 

проверить можно

_PlayerSkin = typeOf Player;

Зачем там проверять? Можно в player_ChangeClothes.sqf все нормально ограничить, не засорять слоты.

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


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

 

Зачем там проверять? Можно в player_ChangeClothes.sqf все нормально ограничить, не засорять слоты.

ты сначала мне расскажи где ты такой файл нашел в дейзкоде?

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


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

 

ты сначала мне расскажи где ты такой файл нашел в дейзкоде?

Ну сорян, на память писал. Называется player_WearClothes.sqf

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


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

Ну сорян, на память писал. Называется player_WearClothes.sqf

можно и там. даже лучше будет. 

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


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

файл player_wearClothes.sqf
 

 

Сделал так: добавил глобальную переменную _status, герой, бандит или виживальщий, я так понимаю в нее будут записываться параметры хуманити?

записал в нее собственно эти значения:

_status = (player getVariable ["humanity",0]);

добавил:

_skinHero = ["Soldier_Sniper_PMC_DZ"];

_skinBandit = ["Bandit1_DZ"];

это для сравнения и собственно две проверки:
 
if ((_item in _skinBandit) && _status > 5000) exitWith {}; // Hero

if ((_item in _skinHero) && _status > -5000) exitWith {}; // Bandit

 
но по моему это как то тупо у меня. Думаю что я делаю что то не правельно и сравнивать лучше через "case" но в этом языке я не в курсе как записывать диалоги, две недели всего вожусь, не судите строго, начинашка я :)))
private ["_status","_item","_onLadder","_hasclothesitem","_config","_text","_myModel","_itemNew","_currentSex","_newSex","_model","_playerNear"];


if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_83") , "PLAIN DOWN"] };
DZE_ActionInProgress = true;


_item = _this;
call gear_ui_init;


_onLadder =        (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_player_21") , "PLAIN DOWN"]};


_hasclothesitem = _this in magazines player;
_config = configFile >> "CfgMagazines";
_text = getText (_config >> _item >> "displayName");


if (!_hasclothesitem) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"wear"] , "PLAIN DOWN"]};


if (vehicle player != player) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_85"), "PLAIN DOWN"]};


//if (!isNull (unitBackpack player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_9"), "PLAIN DOWN"] };


if ("CSGAS" in (magazines player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_10"), "PLAIN DOWN"] };


_myModel = (typeOf player);
_itemNew = "Skin_" + _myModel;


_skinHero = ["Soldier_Sniper_PMC_DZ"];
_skinBandit = ["Bandit1_DZ"];


if ( (isClass(_config >> _itemNew)) ) then
{
    if ( (isClass(_config >> _item)) ) then
    {
        // Current sex of player skin
        _currentSex = getText (configFile >> "CfgSurvival" >> "Skins" >> _itemNew >> "sex");


        // Sex of new skin
        _newSex = getText (configFile >> "CfgSurvival" >> "Skins" >> _item >> "sex");


        if(_currentSex == _newSex) then
        {
            _status = (player getVariable ["humanity",0]);
            
            // Get model name from config
            _model = getText (configFile >> "CfgSurvival" >> "Skins" >> _item >> "playerModel");
            if (_model != _myModel) then
            {
                if ((_item in _skinBandit) && _status > 5000) exitWith {}; // Hero
                if ((_item in _skinHero) && _status > -5000) exitWith {}; // Bandit


                if(([player,_item] call BIS_fnc_invRemove) == 1) then
                {
                    player addMagazine _itemNew;
                    [dayz_playerUID,dayz_characterID,_model] spawn player_humanityMorph;
                };
            };


        } else
        {
            cutText [(localize "str_epoch_player_86"), "PLAIN DOWN"];
        };
    };
};


DZE_ActionInProgress = false;
 

 

двигаюсь хоть в верном частично направлении?

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

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


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

я полагаю что само условие о смене нужно блокировать но не уверен как это работает:

 

if ((_item in _skinBandit) && _status > 5000) exitWith {}; // Hero
 

 

толи оно останавливает весь код что идет ниже, толи продолжает, я еще не знаю эти нюансы... если продолжает то надо добавить переменную что то типо trigge = false; и сравнивать тогда ну как то так, подскажите парни.

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


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

я полагаю что само условие о смене нужно блокировать но не уверен как это работает:

 

if ((_item in _skinBandit) && _status > 5000) exitWith {}; // Hero
 

 

толи оно останавливает весь код что идет ниже, толи продолжает, я еще не знаю эти нюансы... если продолжает то надо добавить переменную что то типо trigge = false; и сравнивать тогда ну как то так, подскажите парни.

private ["_isHero","_isSurvivor","_isBandit","_item","_onLadder","_hasclothesitem","_config","_text","_myModel","_itemNew","_currentSex","_newSex","_model","_playerNear"];

if(DZE_ActionInProgress) exitWith { cutText [(localize "str_epoch_player_83") , "PLAIN DOWN"] };
DZE_ActionInProgress = true;

_isHero = (player getVariable ["humanity",0] > 5000); // <-------      
_isBandit = (player getVariable ["humanity",0] < -5000)); // <------- 
_item = _this;
call gear_ui_init;

_onLadder =		(getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
if (_onLadder) exitWith {DZE_ActionInProgress = false; cutText [(localize "str_player_21") , "PLAIN DOWN"]};

_hasclothesitem = _this in magazines player;
_config = configFile >> "CfgMagazines";
_text = getText (_config >> _item >> "displayName");

if (!_hasclothesitem) exitWith { DZE_ActionInProgress = false; cutText [format[(localize "str_player_31"),_text,"wear"] , "PLAIN DOWN"]};

if (_isHero) exitWith { hint "Слишком большое хуманити" }; // <--------
if (_isBandit) exitWith { hint "Слишком маленькое Хуманити" }; // <-------

if (vehicle player != player) exitWith { DZE_ActionInProgress = false; cutText [(localize "str_epoch_player_85"), "PLAIN DOWN"]};

//if (!isNull (unitBackpack player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_9"), "PLAIN DOWN"] };

if ("CSGAS" in (magazines player)) exitWith { DZE_ActionInProgress = false; cutText [(localize "STR_EPOCH_ACTIONS_10"), "PLAIN DOWN"] };

_myModel = (typeOf player);
_itemNew = "Skin_" + _myModel;

//diag_log ("Debug Clothes: model In: " + str(_itemNew) + " Out: " + str(_item));

if ( (isClass(_config >> _itemNew)) ) then {
	if ( (isClass(_config >> _item)) ) then {
		// Current sex of player skin
		
		_currentSex = getText (configFile >> "CfgSurvival" >> "Skins" >> _itemNew >> "sex");
		// Sex of new skin
		_newSex = getText (configFile >> "CfgSurvival" >> "Skins" >> _item >> "sex");
		//diag_log ("Debug Clothes: sex In: " + str(_currentSex) + " Out: " + str(_newSex));

		if(_currentSex == _newSex) then {
			// Get model name from config
			_model = getText (configFile >> "CfgSurvival" >> "Skins" >> _item >> "playerModel");
			if (_model != _myModel) then {
				if(([player,_item] call BIS_fnc_invRemove) == 1) then {
					player addMagazine _itemNew;
					[dayz_playerUID,dayz_characterID,_model] spawn player_humanityMorph;
				};
			};

		} else {
			cutText [(localize "str_epoch_player_86"), "PLAIN DOWN"];
		};
	};
};
DZE_ActionInProgress = false;

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


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

 

толи оно останавливает весь код что идет ниже, толи продолжает, я еще не знаю эти нюансы... если продолжает то надо добавить переменную что то типо trigge = false; и сравнивать тогда ну как то так, подскажите парни.

 

https://community.bistudio.com/wiki/exitWith

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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