|
|
Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты МР скрипт с балловой системой победы |
МР скрипт с балловой системой победы |
› Пятница
› 14.03.2014
› 13:47
› Сообщение #
Требуется скрипт для мультиплеерной миссии. Что примерно должен делать: есть некий "пул Сторон", в который добавляются очки\баллы за выполнение той или иной задачи. Т.е. выполнила сторана какой-нибудь триггер-уничтожения какого-нибудь грузовика. Ей бах и добавилось в пул 5 очков. А другая команда захватила зону - выполнила триггер больше или меньше своих\чужих бойцов в зоне, триггер сработал, ей бах - 10 очков.
Спустя час игры, подводятся итоги, срабатывает триггер таймера, система считает очки, выдает победу той команде, кто больше набрала очков. Как я это вижу своим нубским взглядом. На серваке в начале миссии создается "пул сторон"...а далее активация триггеров, заставляет эти переменные меняться. Добавлять очки или наооборот минусовать их. Буду благодарен если кто-нибудь хотя бы ткнет в какой направлении нужно думать для создания данной балловой системы оценки действий сторон. |
› Пятница
› 14.03.2014
› 15:25
› Сообщение #
переменные общего доступа создаются на базе объекта (лучше логику, имя (например) LK)
создание в файле init.sqf начальное значение 0 if isServer then { LK setVariable ["Score_East", 0, true]; LK setVariable ["Score_West", 0, true]; }; добавить в активации триггера _as = [] Spawn { if ! isServer exitWith {}; _n = LK getVariable "Score_East"; _n = _n + 5; LK setVariable ["Score_East", _n, true]; } точно также для другой стороны. |
› Пятница
› 14.03.2014
› 15:48
› Сообщение #
|
› Пятница
› 14.03.2014
› 15:57
› Сообщение #
if isServer then { - тут не нужно, ты ведь игрокам хочеш счёт показать а не только серверу
_n = LK getVariable "Score_East"; _m = LK getVariable "Score_West"; if (_n > _m) |
› Пятница
› 14.03.2014
› 17:43
› Сообщение #
А еще подсказка, я запили вот такой скрипт:
Код _n = LK getVariable "Score_East"; _m = LK getVariable "Score_West"; _finish = if (_n > _m) then hintsilent composeText [parsetext format["<t size='2' align='center' color='#ff0000'>Конец мисии!</t>"]]; if (side player == EAST) then { ["End5", true, true] call BIS_fnc_endMission; } else { ["End5", false, true] call BIS_fnc_endMission; }; }; }; Вообще туплю и не могу докумекать, как вместо hintsilent composeText [parsetext format["<t size='2' align='center' color='#ff0000'>Конец мисии!</t>"]]; запилить чтобы показывало счет, с каким красные победили синих. Типа: 5:0 |
› Пятница
› 14.03.2014
› 18:11
› Сообщение #
вставка переменных в текст методом подстановки
_a = 5; _b = 10; _c = "aa"; hint format ["%1 %2 %3", _a, _b, _c]; вместо %1 будет подставлено значение из переменной _а соответственно %2 -> _b %3 -> _c Код _n = LK getVariable "Score_East"; _m = LK getVariable "Score_West"; _finish = if (_n > _m) then {"выиграли Красные"} else {"выиграли Синие"}; hintsilent composeText [ parsetext format["<t size='2' align='center' color='#ff0000'>Конец мисии!</t>"], parsetext format["<t size='2' align='center' color='#ff0000'>%1</t>", _finish], parsetext format["<t size='2' align='center' color='#ff0000'>East %1 West %2</t>", _n, _m] ]; sleep 10; (if (side player == EAST) then { ["End5", true, true] } else { ["End5", false, true] } ) call BIS_fnc_endMission; |
› Пятница
› 14.03.2014
› 18:27
› Сообщение #
Спасибо огромное.
Добавлено (14.03.2014, 18:27) Код _finish = if (_n > _m) then {"выиграли Красные"} else {"выиграли Синие"}; [b](if (side player == EAST) then { ["End5", true, true] } else { ["End5", false, true] } ) call BIS_fnc_endMission; а как сделать чтобы еще else, который (_n < _m) выполнялся и выигрывали синие? |
› Пятница
› 14.03.2014
› 18:31
› Сообщение #
проверь значения _n _m
как начисляются очки. |
› Пятница
› 14.03.2014
› 18:36
› Сообщение #
Показывает все правильно...
я сделал другой триггер: Код _as = [] Spawn { if ! isServer exitWith {}; _m = LK getVariable "Score_West"; _m = _m + 5; LK setVariable ["Score_West", _m, true]; } и при срабатывании у меня все пишет правильно: EAST 0 WEST 5 НО миссию заканчивает проигрышем для синих все равно. |
› Пятница
› 14.03.2014
› 18:48
› Сообщение #
непойму, в чём это выражается? может в этих строках дело (if (side player == EAST) then { ["End5", true, true] } else { ["End5", false, true] } ) call BIS_fnc_endMission; Добавлено (14.03.2014, 18:48) --------------------------------------------- наверно надо сделать так _end = true; _finish = if (_n > _m) then { "выиграли Красные"} else {_end = false; "выиграли Синие"}; ......... (if (side player == EAST) then { ["End5", _end, true] } else { ["End5", ! _end, true] } ) call BIS_fnc_endMission; |
› Пятница
› 14.03.2014
› 19:23
› Сообщение #
|
› Пятница
› 11.07.2014
› 08:38
› Сообщение #
Не пробовал стороны заставить воевать друг с другом? Те что в живых останутся - выиграли)
|
› Среда
› 21.01.2015
› 14:09
› Сообщение #
Народ, снова нужна помощь.
Все выше перечисленное сделал и оно работало, но как-то раз через раз. У разных игроков на финале всегда показывало разные результаты миссий. Хочется допилить уже до финального конца и сделать чуть удобнее для использования. НО я понимаю, что работать просто так никто особо желания не имеет. Поэтому готов оплатить труд, вещь очень нужна и хочется чтобы работала. Если у скриптмейкеров есть желание подзаработать на досуге, готов к оплате любым вам удобным способом, коли в цене сойдемся. Что нужно. Нужен пример миссии, где есть необходимый набор скриптов + небольшой мануал где разжевано кто за что отвечает. Ну и хотелось бы рассчитывать на поддержку в дальнейшем, если будут какие-то вопросы. (оплата за поддержку отдельно) Что должно быть в миссии: -Три стороны (синие\красные\зеленые) -"Пул очков" трех этих сторон(не видимый для игроков). -Триггер на захват зоны, который проверяет например для захвата требуется чтобы было больше 3 зеленых и меньше 2 синих. По срабатыванию триггера, зона меняет цвет. И захватившей команде начисляется сколько-то балов и отнимает какое-то количество очков у другой стороны. -Триггер на убийство юнита, например при убийстве юнита одной из сторон начисляется сколько-то очков одной стороне и отнимает какое-то количество очков у другой стороны. -Триггер на проведения конвоя, например если объект довезти до определенного маркера, одна из сторон получает какое-то количество очков и отнимает какое-то количество очков у другой стороны. -Триггер который считает все Пулы сторон и при достижении одной из сторон определенного количества очков, миссия завершается победой этой стороны и табличкой, кто сколько очков получил (очень желательно с расписыванием за что именно получил) P.S. очень бы хотелось сделать систему чуть более понятной для создателей карт, чтобы какие-то вещи допустим прописывались сразу в init.sqf. Типа: as = [название жертвы, сторона получившая очки, кол-во очков, сторона теряющая очки, кол-во очков] execVM "killvip.sqf" Что-то вроде такого. Кто готов взяться и сколько бы вы за это хотели получить? |
| |||
| |||
Чат сайта |