Перейти к содержимому


Фотография

Сохранение инвентаря у игроков


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 12

#1 OFFLINE   Mr.shadow9II

Mr.shadow9II

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 12 February 2017 - 20:34

Друзья, знаю что проблема стара как сам мир, перелопатил весь форум, нашел все топики по этой теме когда-либо созданные, сделал все как там сказано (вроде), но игроки все равно спавнятся голыми. Пытался решить проблему сам, но понял, что безнадежен, прошу вашей помощи. 

 

Задача проста, есть игроки с заранее выбранным инвентарем. После смерти они должны оставаться с ним же, а не со стандартным инвентарем. 

Первый код в файле qwe.sqf

if  (isNil "EQUIP_PLAYER") then {EQUIP_PLAYER = ""} ;
 
if !(EQUIP_PLAYER == "") then {
comment "Remove existing items";
removeAllWeapons _this;
removeAllItems _this;
removeAllAssignedItems _this;
removeUniform _this;
removeVest _this;
removeBackpack _this;
removeHeadgear _this;
removeGoggles _this;
};
 
switch (EQUIP_PLAYER) do {
default {
};
 
case "Player1": {
 
comment "Add containers"; 
_this forceAddUniform "rhs_uniform_vdv_emr"; 
_this addItemToUniform "FirstAidKit"; 
_this addItemToUniform "rhs_1PN138"; 
_this addVest "rhs_6b23_digi_6sh92_headset_mapcase"; 
for "_i" from 1 to 3 do {_this addItemToVest "ACE_morphine";}; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_packingBandage";}; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_elasticBandage";}; 
for "_i" from 1 to 3 do {_this addItemToVest "ACE_fieldDressing";}; 
_this addItemToVest "ACE_tourniquet"; 
_this addItemToVest "ACE_EarPlugs"; 
for "_i" from 1 to 6 do {_this addItemToVest "rhs_30Rnd_545x39_7N10_AK";}; 
_this addItemToVest "rhs_mag_9x18_8_57N181S"; 
for "_i" from 1 to 2 do {_this addItemToVest "rhs_mag_rdg2_white";}; 
for "_i" from 1 to 2 do {_this addItemToVest "rhs_mag_rgd5";}; 
_this addHeadgear "rhs_6b28_ess"; 
 
comment "Add weapons"; 
_this addWeapon "rhs_weap_ak74m"; 
_this addPrimaryWeaponItem "rhs_acc_dtk"; 
_this addPrimaryWeaponItem "rhs_acc_pkas"; 
_this addWeapon "rhs_weap_rpg26"; 
_this addWeapon "rhs_weap_makarov_pm"; 
_this addWeapon "Binocular"; 
 
comment "Add items"; 
_this linkItem "ItemMap"; 
_this linkItem "ItemCompass"; 
_this linkItem "ItemWatch"; 
_this linkItem "tf_fadak"; 
 
comment "Set identity"; 
_this setFace "AsianHead_A3_02"; 
_this setSpeaker "RHS_Male03RUS";
};
 
case "Player2": { 
 
comment "Add containers"; 
_this forceAddUniform "rhs_uniform_vdv_emr"; 
_this addItemToUniform "FirstAidKit"; 
for "_i" from 1 to 2 do {_this addItemToUniform "rhs_30Rnd_545x39_7N10_AK";}; 
_this addVest "rhs_6b23_digi_medic"; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_epinephrine";}; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_atropine";}; 
_this addItemToVest "ACE_EarPlugs"; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_tourniquet";}; 
for "_i" from 1 to 5 do {_this addItemToVest "ACE_morphine";}; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_packingBandage";}; 
_this addItemToVest "ACE_surgicalKit"; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_quikclot";}; 
for "_i" from 1 to 2 do {_this addItemToVest "ACE_elasticBandage";}; 
for "_i" from 1 to 4 do {_this addItemToVest "ACE_fieldDressing";}; 
for "_i" from 1 to 2 do {_this addItemToVest "rhs_mag_rgd5";}; 
for "_i" from 1 to 2 do {_this addItemToVest "rhs_mag_rdg2_white";}; 
for "_i" from 1 to 5 do {_this addItemToVest "rhs_30Rnd_545x39_7N10_AK";}; 
_this addBackpack "rhs_assault_umbts"; 
for "_i" from 1 to 3 do {_this addItemToBackpack "ACE_epinephrine";}; 
for "_i" from 1 to 3 do {_this addItemToBackpack "ACE_personalAidKit";}; 
for "_i" from 1 to 3 do {_this addItemToBackpack "ACE_atropine";}; 
_this addItemToBackpack "ACE_bloodIV"; 
for "_i" from 1 to 5 do {_this addItemToBackpack "ACE_bloodIV_250";}; 
for "_i" from 1 to 3 do {_this addItemToBackpack "ACE_bloodIV_500";}; 
for "_i" from 1 to 3 do {_this addItemToBackpack "ACE_morphine";}; 
for "_i" from 1 to 5 do {_this addItemToBackpack "ACE_packingBandage";}; 
for "_i" from 1 to 5 do {_this addItemToBackpack "ACE_quikclot";}; 
_this addItemToBackpack "ACE_plasmaIV"; 
for "_i" from 1 to 3 do {_this addItemToBackpack "ACE_plasmaIV_250";}; 
for "_i" from 1 to 2 do {_this addItemToBackpack "ACE_plasmaIV_500";}; 
for "_i" from 1 to 5 do {_this addItemToBackpack "ACE_elasticBandage";}; 
for "_i" from 1 to 8 do {_this addItemToBackpack "ACE_fieldDressing";}; 
_this addHeadgear "rhs_6b28_ess"; 
 
comment "Add weapons"; 
_this addWeapon "rhs_weap_ak74m"; 
_this addPrimaryWeaponItem "rhs_acc_dtk"; 
 
comment "Add items"; 
_this linkItem "ItemMap"; 
_this linkItem "ItemCompass"; 
_this linkItem "ItemWatch"; 
_this linkItem "tf_fadak"; 
 
comment "Set identity"; 
_this setFace "Default"; 
_this setSpeaker "RHS_Male03RUS";
};
};
 
Второй код в файле onPlayerRespawn.sqf
(_this select 1) call compile preprocessFileLineNumbers "qwe.sqf";
(_this select 0) execVM "qwe.sqf";

 

Прикрепленные файлы

  • Прикрепленный файл  Proba.rar   57.34К   2 Количество загрузок:

  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 12 February 2017 - 21:08

Mr.shadow9II, 1. Переместите блок default в конец блока switch-do (После всех блоков case)
2. Где задаються значения для EQUIP_PLAYER? Switch-do для строк чувствителен к регистру
3. Зачем вы меняете одежду трупу?
  • 0

#3 OFFLINE   Mr.shadow9II

Mr.shadow9II

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 12 February 2017 - 21:28

1. Сделал

2. Я 100% профан, поэтому не знаю где задаются эти значения, где бы мне про них узнать? 

3. Признаться вопрос поставил меня в тупик. А в какой части кода именно происходит данное событие? (_this select 0) execVM "qwe.sqf"; это? Если да, то я думал, что так я обозначаю игроку возрождение с той же экипировкой.  


  • 0

#4 OFFLINE   Mr.shadow9II

Mr.shadow9II

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 12 February 2017 - 21:47

Видимо Вы имели ввиду вот это
 

В ините у игроков у меня прописано
 EQUIP_PLAYER = "player1"; 0 = this execVM "qwe.sqf"


Сообщение отредактировал Mr.shadow9II: 12 February 2017 - 21:47

  • 0

#5 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 12 February 2017 - 21:53

Mr.shadow9II, ну вот у вас сразу в ините ошибка:
Переменной EQUIP_PLAYER вы присвоили значение "player1", в switch-do - "Player1" - я же писал выше: switch-do (Да и вообще почти все) чувствительно к регистру символов!
В onPlayerRespawn в _this передается массив:
[<newUnit>, <oldUnit>, <respawn>, <respawnDelay>]
Вы в своем скрипте сначала выполняете скрипт снаряги сначала для трупа, а потом для отреспивавшегося юнита

PS Учите скриптописнаие, а лучше любой высокоуровневый язык программирования
  • 0

#6 OFFLINE   Mr.shadow9II

Mr.shadow9II

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 12 February 2017 - 22:14

Я ценю Ваш совет и обязательно уделю время этим наукам. Спасибо за помощь, все заработало! 


  • 0

#7 OFFLINE   Mr.shadow9II

Mr.shadow9II

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 12 February 2017 - 23:43

Появилась другая проблема. У каждого из двух игроков одинаковое снаряжение. Можно ли это как то поправить? 


  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 13 February 2017 - 00:03

Появилась другая проблема. У каждого из двух игроков одинаковое снаряжение. Можно ли это как то поправить?

Это потому, что используется глобальная переменная EQUIP_PLAYER, которой будет присвоено какое-то одно значение.
 

Можно ли это как то поправить?

Можно. Например, определять, какое у юнита будет снаряжение по переменной, присвоенной юниту.


Сообщение отредактировал Schatten: 13 February 2017 - 00:04

  • 0

#9 OFFLINE   Mr.shadow9II

Mr.shadow9II

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 13 February 2017 - 17:41

 

Появилась другая проблема. У каждого из двух игроков одинаковое снаряжение. Можно ли это как то поправить?

Это потому, что используется глобальная переменная EQUIP_PLAYER, которой будет присвоено какое-то одно значение.
 

Можно ли это как то поправить?

Можно. Например, определять, какое у юнита будет снаряжение по переменной, присвоенной юниту.

 

Так, а можно в этом месте поподробней про последнее? 


  • 0

#10 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 13 February 2017 - 17:45

Mr.shadow9II,
unit setVariable ["name", value];
unit getVariable "name";
unit getVariable ["name", defaultValue];

  • 0

#11 OFFLINE   Mr.shadow9II

Mr.shadow9II

    Рядовой

  • Пользователи
  • 7 сообщений

Отправлено 13 February 2017 - 17:54

Mr.shadow9II,

unit setVariable ["name", value];
unit getVariable "name";
unit getVariable ["name", defaultValue];

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


  • 0

#12 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1844 сообщений

Отправлено 13 February 2017 - 17:59

Думаю, лучше будет указать текст в поле инициализации юнита, а в сценарии извлекать его с помощью

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

.
 

 

Mr.shadow9II,

unit setVariable ["name", value];
unit getVariable "name";
unit getVariable ["name", defaultValue];
А что это? Куда это? Я со вчерашнего дня все еще не изучил скриптописание. Друзья, я понимаю, что нубу не объяснить за один час всю суть программирования, но если Вы помогаете, то хоть поясните что это, а то вроде вы ответили, время потратили, а получается зря.

 

Всё просто: открываем описания этих команд, изучаем, смотрим примеры... и думаем как их применить.


Сообщение отредактировал Schatten: 13 February 2017 - 18:01

  • 0

#13 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 13 February 2017 - 18:04

Mr.shadow9II, вы сами в эту область зашли, и без нее при "изменнии" игры никуда, будьте добры изучить хотябы азы
  • 0




Яндекс.Метрика