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


Фотография

маленький бизнес на большом острове)


Лучший Ответ vlad333000 , 17 June 2014 - 16:36



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

Извиняюсь за вопрос: Уроки по скриптописанию - дочитали до главы "Переменные. 2 часть" ? Называется "публичная переменная"

Как прибавлять и вычитать? Это то что должен знать каждый скриптер (Обязательно к просмотру)

sum1 = a + b; sum2 = a - b;
Перейти к сообщению


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

#21 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 17 June 2014 - 19:47

 

 

А на счет разборки Армы, так я ее ж не соберу потом))) 

Копируете аддоны армы в отдельную папку, распаковываете, и изучаете, самое интерестное и увлекательное, находится в аддонах содержащих в себе название functions


 

 

Спасибо огромное))) Мне пока что для сингла и надо) А в MP я так понял просто другой тип переменных нужно задавать? Или по другому к ним обращаться)

// при инициализации игрока
_bablo = 1000000;
player setVariable ["Bablo", _bablo, true];

// в инит бота
unit_1 addEventHandler ["Killed", {
    _bablo = (_this select 1) getVariable ["Bablo", 0];
    (_this select 1) setVariable ["Bablo", (_bablo + 100), true];
}];

// получение суммы бабла, которой распологает игрок
// "Bablo" - имя переменной присвоенной юниту, в данном случае игрок
// 0       - если переменная не определена, присвоить переменной _bablo значение 0 
_bablo = player getVariable ["Bablo", 0];

Ухты, очень удобный способ. Автор забудь мой способ бери этот!

 

Это на вскидку, вполне вероятно здесь

// в инит бота
unit_1 addEventHandler ["Killed", {
    _bablo = (_this select 1) getVariable ["Bablo", 0];
    (_this select 1) setVariable ["Bablo", (_bablo + 100), true];
}];

мог ошибиться, но это 

setVariable
и
getVariable

будет удобно, это точно


  • 0

#22 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 17 June 2014 - 19:54

 

 

 

А на счет разборки Армы, так я ее ж не соберу потом))) 

Копируете аддоны армы в отдельную папку, распаковываете, и изучаете, самое интерестное и увлекательное, находится в аддонах содержащих в себе название functions


 

 

Спасибо огромное))) Мне пока что для сингла и надо) А в MP я так понял просто другой тип переменных нужно задавать? Или по другому к ним обращаться)

// при инициализации игрока
_bablo = 1000000;
player setVariable ["Bablo", _bablo, true];

// в инит бота
unit_1 addEventHandler ["Killed", {
    _bablo = (_this select 1) getVariable ["Bablo", 0];
    (_this select 1) setVariable ["Bablo", (_bablo + 100), true];
}];

// получение суммы бабла, которой распологает игрок
// "Bablo" - имя переменной присвоенной юниту, в данном случае игрок
// 0       - если переменная не определена, присвоить переменной _bablo значение 0 
_bablo = player getVariable ["Bablo", 0];

Ухты, очень удобный способ. Автор забудь мой способ бери этот!

 

Это на вскидку, вполне вероятно здесь

// в инит бота
unit_1 addEventHandler ["Killed", {
    _bablo = (_this select 1) getVariable ["Bablo", 0];
    (_this select 1) setVariable ["Bablo", (_bablo + 100), true];
}];

мог ошибиться, но это 

setVariable
и
getVariable

будет удобно, это точно

 

Неплохо было бы еще хинтик написать,что б игрок знал сколько бабла у него


  • 0

#23 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 17 June 2014 - 20:04

 

 

Неплохо было бы еще хинтик написать,что б игрок знал сколько бабла у него

Как говорится , по вкусу)

 

Так же можно добавить изюма)

// при инициализации игрока
_bablo = 1000000;
player setVariable ["Bablo", _bablo, true];

// в инит бота

// для конкретного бота можно определить персональное вознаграждение
unit_1 setVariable ["KillPrice", 1000, true];

unit_1 addEventHandler ["Killed", {
    _bablo = (_this select 1) getVariable ["Bablo", 0];
    _price = (_this select 0) getVariable ["KillPrice", 0];
    (_this select 1) setVariable ["Bablo", (_bablo + _price), true];
}];

// получение суммы бабла, которой распологает игрок
// "Bablo" - имя переменной присвоенной юниту, в данном случае игрок
// 0       - если переменная не определена, присвоить переменной _bablo значение 0 
_bablo = player getVariable ["Bablo", 0];

Сообщение отредактировал SteelRat: 17 June 2014 - 20:08

  • 0

#24 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 17 June 2014 - 21:51

 

 

 

Неплохо было бы еще хинтик написать,что б игрок знал сколько бабла у него

Как говорится , по вкусу)

 

Так же можно добавить изюма)

// при инициализации игрока
_bablo = 1000000;
player setVariable ["Bablo", _bablo, true];

// в инит бота

// для конкретного бота можно определить персональное вознаграждение
unit_1 setVariable ["KillPrice", 1000, true];

unit_1 addEventHandler ["Killed", {
    _bablo = (_this select 1) getVariable ["Bablo", 0];
    _price = (_this select 0) getVariable ["KillPrice", 0];
    (_this select 1) setVariable ["Bablo", (_bablo + _price), true];
}];

// получение суммы бабла, которой распологает игрок
// "Bablo" - имя переменной присвоенной юниту, в данном случае игрок
// 0       - если переменная не определена, присвоить переменной _bablo значение 0 
_bablo = player getVariable ["Bablo", 0];

Круто получилось) А на счет остатка на счете нельзя так сделать?

menu = Player addAction ["Запросить баланс зарплатной карты", {hint format ["bablo = %1",остаток на счете]}]; 


Сообщение отредактировал Djon: 17 June 2014 - 21:59

  • 0

#25 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 17 June 2014 - 22:35

А можно в SP миссии сделать чтоб в случае смерти игрока миссия автоматически началась заново, чтоб не выскакивали варианты загрузить сохранения? То есть пока игрок жив можно сохраняться, выходить из игры и снова загружать сохранения, но если игрок убит хотелось бы сделать не возможным начинать с сохранений. Будет больше напряжения потерять купленное и игра будет интересней.


  • 0

#26 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 17 June 2014 - 23:58

 

 

 

 

Неплохо было бы еще хинтик написать,что б игрок знал сколько бабла у него

Как говорится , по вкусу)

 

Так же можно добавить изюма)

// при инициализации игрока
_bablo = 1000000;
player setVariable ["Bablo", _bablo, true];

// в инит бота

// для конкретного бота можно определить персональное вознаграждение
unit_1 setVariable ["KillPrice", 1000, true];

unit_1 addEventHandler ["Killed", {
    _bablo = (_this select 1) getVariable ["Bablo", 0];
    _price = (_this select 0) getVariable ["KillPrice", 0];
    (_this select 1) setVariable ["Bablo", (_bablo + _price), true];
}];

// получение суммы бабла, которой распологает игрок
// "Bablo" - имя переменной присвоенной юниту, в данном случае игрок
// 0       - если переменная не определена, присвоить переменной _bablo значение 0 
_bablo = player getVariable ["Bablo", 0];

Круто получилось) А на счет остатка на счете нельзя так сделать?

menu = Player addAction ["Запросить баланс зарплатной карты", {hint format ["bablo = %1",остаток на счете]}]; 

 

menu = Player addAction ["Запросить баланс зарплатной карты", {hint format ["bablo = %1",(player getVariable ["Bablo", 0])]}]; 

  • 1

#27 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 June 2014 - 00:20

Понял)


  • 0

#28 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 June 2014 - 11:07

С автоматическим перезапуском игры так и не разобрался, вот допустим loadGame работает исправно во всех случаях кроме смерти игрока.

Пробовал и так: Player addeventHandler["Killed",{_hndl = "" execVM "zapusk.sqf"}]; в скрипте zapusk.sqf команда loadGame, работает само собой только на убийство кем то игрока, на несчастный случай не срабатывает.

И так if (Player alive) then (loadGame). 

Успех рестарта при несчастном случае == nil

 

Сейчас нашел выход, но он сужает круг возможности по спавну игрока в случайном маркере и вообще спавну игрока скриптом, если только триггер скриптом не прописывать. В итоге вот что получилось триггер срабатывает на отсутствие игрока и активирует команду handle = this execVM "zapusk.sqf", в таком случае миссия перезапускается с задержкой sleep 3 указанной в скрипте чтобы игрок понял что убит, меню с вариантом загрузить сохранения не успело выйти, при перезапуске само собой загрузить прошлые сохранения уже нельзя (это +) 

 

Есть возможность в первом случае задать условие вместо "Killed" допустим не существует или не живой?


Сообщение отредактировал Djon: 18 June 2014 - 11:54

  • 0

#29 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 June 2014 - 14:24

Парни что тут еще не так написано?

 

if ((player getVariable ["Bablo", 0])>99) then {_position = getMarkerPos "mark"; 
_holder = "WeaponHolderSimulated" createVehicle _position;
_holder addWeaponCargo ["hgun_Rook40_F",1];
_holder addMagazineCargo ["16Rnd_9x21_Mag",1];
_position set [2,0]; 
_holder setPosATL _position;
_bablo = (_this select 1) getVariable ["Bablo", 0];
(_this select 1) setVariable ["Bablo", (_bablo - 100), true];
} else {(hint "мало денег")};
 
Вначале проверка Bablo>99 проходит нормально а вот там где вычитание выдает ошибку(

Сообщение отредактировал Djon: 18 June 2014 - 15:40

  • 0

#30 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 18 June 2014 - 19:44

_bablo = (_this select 1) getVariable ["Bablo", 0];
(_this select 1) setVariable ["Bablo", (_bablo - 100), true];

Для данного места, написание не корректно

_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo - 100), true];

А так правильно


С автоматическим перезапуском игры так и не разобрался, вот допустим loadGame работает исправно во всех случаях кроме смерти игрока.

Пробовал и так: Player addeventHandler["Killed",{_hndl = "" execVM "zapusk.sqf"}]; в скрипте zapusk.sqf команда loadGame, работает само собой только на убийство кем то игрока, на несчастный случай не срабатывает.

И так if (Player alive) then (loadGame). 

Успех рестарта при несчастном случае == nil

 

Сейчас нашел выход, но он сужает круг возможности по спавну игрока в случайном маркере и вообще спавну игрока скриптом, если только триггер скриптом не прописывать. В итоге вот что получилось триггер срабатывает на отсутствие игрока и активирует команду handle = this execVM "zapusk.sqf", в таком случае миссия перезапускается с задержкой sleep 3 указанной в скрипте чтобы игрок понял что убит, меню с вариантом загрузить сохранения не успело выйти, при перезапуске само собой загрузить прошлые сохранения уже нельзя (это +) 

 

Есть возможность в первом случае задать условие вместо "Killed" допустим не существует или не живой?

 

К чему вообще такие запарки, напиши в init.sqf миссии это

enableSaving [false, false];

в самое начало


  • 0

#31 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 18 June 2014 - 19:50

_bablo = (_this select 1) getVariable ["Bablo", 0];
(_this select 1) setVariable ["Bablo", (_bablo - 100), true];

Для данного места, написание не корректно

_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo - 100), true];

А так правильно

А мы тут расчатились уже в лс искали проблему, почему не робит скрипт, а вот оно оказывается как xD


Сообщение отредактировал vlad333000: 18 June 2014 - 19:55

  • 0

#32 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 June 2014 - 20:59

 

К чему вообще такие запарки, напиши в init.sqf миссии это

enableSaving [false, false];

в самое начало

 

Тут получается сохранения ведь вообще работать не будут? Мне просто для сингла нужно чтоб они работали пока игрок жив, миссия обещает быть долгой. Ну решение на%:5u0448ли проще не куда: в триггере условие !alive unit активация скрипт с loadGame. 


  • 0

#33 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 18 June 2014 - 21:09

А да и кстати если при убийстве бота и начислении +100 мы не планируем ни чего менять при помощи select то тоже можно использовать этот способ?

_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo + 100), true];


И еще раз благодарю участников этой темы за огромную помощь! :good:  


  • 0

#34 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 June 2014 - 01:14

А да и кстати если при убийстве бота и начислении +100 мы не планируем ни чего менять при помощи select то тоже можно использовать этот способ?

_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo + 100), true];


И еще раз благодарю участников этой темы за огромную помощь! :good:  

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

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


  • 0

#35 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 21 June 2014 - 11:45

Наткнулся на проблемку по этой теме

 

unit_1 addEventHandler ["Killed", {

_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo + 100), true];}];
 
В данном случае команда срабатывает на убийство unit_1 но как бы добавить чтоб она срабатывала на убийство того же unit_1 но именно игроком. А то бегают пацаны красные и пацаны синие, метелятся там между собой а мне баблишко капает, даже не удобно как то перед ними)))))

  • 0

#36 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 21 June 2014 - 16:59

 

Наткнулся на проблемку по этой теме

 

unit_1 addEventHandler ["Killed", {

_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo + 100), true];}];
 
В данном случае команда срабатывает на убийство unit_1 но как бы добавить чтоб она срабатывала на убийство того же unit_1 но именно игроком. А то бегают пацаны красные и пацаны синие, метелятся там между собой а мне баблишко капает, даже не удобно как то перед ними)))))

 

После собственного теста смогу подкоректировать, а пока пвот это попробуй

unit_1 addEventHandler ["Killed", {
if ((_this select 1)== player) then {
_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo + 100), true];};
}];

Сообщение отредактировал vlad333000: 21 June 2014 - 16:59

  • 0

#37 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 21 June 2014 - 17:10

Работает! 

unit_1 addEventHandler ["Killed", {
if ((_this select 1)== player) then {
_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo + 100), true];};
}];

  • 0

#38 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 21 June 2014 - 17:40

 

 

Наткнулся на проблемку по этой т$25u0435ме

 

unit_1 addEventHandler ["Killed", {

_bablo = player getVariable ["Bablo", 0];
player setVariable ["Bablo", (_bablo + 100), true];}];
 
В данном случае команда срабатывает на убийство unit_1 но как бы добавить чтоб она срабатывала на убийство того же unit_1 но именно игроком. А то бегают пацаны красные и пацаны синие, метелятся там между собой а мне баблишко капает, даже не удобно как то перед ними)))))

 

После собственного теста смогу подкоректировать, а пока пвот это попробуй

unit_1 addEventHandler ["Killed", {
if ((_this select 1)== player) then {
_bablo = player getVariable ["Bablo&quot%;B, 0];
player setVariable ["Bablo", (_bablo + 100), true];};
}];

Работает на ура))))


Осталось самое простое, но неведанное мне))) Поставить изображение на миссию в сценариях))) Куда сложнее решил проблемы. У тебя ссылочки не завалялось на эту тему?)


  • 0

#39 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 21 June 2014 - 17:41

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


  • 0

#40 OFFLINE   Djon

Djon

    Старшина

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

Отправлено 21 June 2014 - 18:05

В загрузочном экране все понятно loadScreen =  "images\img.jpg"; а вот именно когда в сценариях выбираешь миссию и там должно соответствующее изображение быть, перед запуском этой миссии. Как этикетка этой миссии. У меня же оно как телевизор без антенны) 


Сообщение отредактировал Djon: 21 June 2014 - 18:08

  • 0




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