Модератор форума: Slon |
Форум » РЕДАКТОР - ArmA 2 » Скрипты » Улучшения для базы |
Улучшения для базы |
› Четверг
› 24.06.2010
› 20:12
› Сообщение #
Вот придумал кое-что для игры по сети. На накопленные очки можно улучшать свою базу.
Я сделал всего два улучшения. Для убежища и транспорта. Может кому пригодится такая система. Может быть кто-нибудь уже и выкладывал такое. Я просто не видел. Простите если что.. Добавлено (24.06.2010, 20:12) Прикрепления:
Upgrade.utes.rar
(6.7 Kb)
Сообщение отредактировал SAN444EZ - Четверг, 24.06.2010, 18:46
Si vis pacem para bellum
|
› Четверг
› 24.06.2010
› 20:51
› Сообщение #
Для того чтобы отличить бота от игрока не сервере есть спец оператор
http://community.bistudio.com/wiki/isPlayer Нужно играющим ботам дать имена, например Pl_1, Pl_2 итд. IsPlayer Pl_1 истинно до первого респа (для сервера если Pl_1 клиент) поэтому используется такой вариант, for "_a" from 0 to 29 do { 2 если боты играют for "_a" from 0 to 30 do { определив игрока , можно узнать сколько у него очков, а также добавить или отнять. |
› Четверг
› 24.06.2010
› 21:43
› Сообщение #
for "_a" from 0 to 7 do {
_nm = call compile format ["Pl_%1",_a]; /// тут содержится сжатые переменные (от Pl_1 до Pl_8),которые вызываются командой call? if (typeName _nm == "OBJECT") then { /// и если эти самые переменные окажутся OBJECT'ами , тогда можно им прописывать действия? OBJECT это игровой объект? Ну там человек или техника,да? Просто остальные возвращаемые typeName значения коды, массивы, скрипты. Сообщение отредактировал SAN444EZ - Четверг, 24.06.2010, 21:48
Si vis pacem para bellum
|
› Четверг
› 24.06.2010
› 21:56
› Сообщение #
_nm = call compile format ["Pl_%1",_a]
http://community.bistudio.com/wiki/format вместо %1 подставляется _а строка определяет что такое Pl_%1 и чаловек и техника это объекты, строка определяет тип переменной |
› Суббота
› 28.08.2010
› 14:08
› Сообщение #
Спасибо. Если что не получится-отпишусь.
Добавлено (24.06.2010, 22:58) Добавлено (21.08.2010, 17:19) А что дальше нужно? if (_nm score<10) exitWith {hint "Очков маловато. Иди стреляй."}; Так пойдет или нет? Добавлено (28.08.2010, 14:08) Сообщение отредактировал SAN444EZ - Суббота, 21.08.2010, 17:34
Si vis pacem para bellum
|
› Суббота
› 28.08.2010
› 15:30
› Сообщение #
может потому что строка записана неправильно
(_nm score<10) (score _nm <10) |
› Суббота
› 28.08.2010
› 16:29
› Сообщение #
А так всё верно, да? Сейчас попробую.
Добавлено (28.08.2010, 16:29)
Si vis pacem para bellum
|
› Суббота
› 28.08.2010
› 16:39
› Сообщение #
exitWith - не прерывает файл а только блок в катором находится
if (_nm score<10) exitWith {hint "Очков маловато. Иди стреляй."}; scopeName "main"; выйти if (score _nm <10) then {hint "Очков маловато. Иди стреляй."; breakTo "main"}; Сообщение отредактировал Slon - Суббота, 28.08.2010, 16:39
|
› Суббота
› 28.08.2010
› 21:31
› Сообщение #
scopeName-это вроде как метка блока. А чем различаются breakTo и breakOut? Как я понял из справочника- breakTo прекращает текущий блок и возвращается на тот, который указан.
А что делает breakOut? Тоже прекращает работу указанного блока, но как то по другому.. Это я так, любопытствую. Сейчас посмотрю что к чему. Добавлено (28.08.2010, 21:14) Все, получилось. Нужно было breakOut, а не breakTo. Добавлено (28.08.2010, 21:31) Опять двадцать пять! Теперь очки не хотя вычитаться. _nm addScore -5; -- не желает работать. Или может как нибудь по другому пишется? В sqf нет специфики для данной строки? Сообщение отредактировал SAN444EZ - Суббота, 28.08.2010, 21:32
Si vis pacem para bellum
|
› Суббота
› 28.08.2010
› 21:41
› Сообщение #
Quote (SAN444EZ) Все, получилось. Нужно было breakOut, а не breakTo. А в чём разница, разобрался?
Quote (SAN444EZ) _nm addScore -5; -- не желает работать. начислением очей занимается исключительно сервер. если клиент желает добавить или уменьшить колво очей, нужно отправить запрос серверу |
› Суббота
› 28.08.2010
› 22:05
› Сообщение #
Нет, тут что то другое.
scopeName "main"; Добавлено (28.08.2010, 22:05) ....if (score _nm <3) exitWith {_nm sideChat "Блин! Очков не хватает."; breakOut "main"}; Я так полагаю переменная _nm работала только в цикле. Сообщение отредактировал SAN444EZ - Суббота, 28.08.2010, 21:56
Si vis pacem para bellum
|
› Суббота
› 28.08.2010
› 22:36
› Сообщение #
Quote (SAN444EZ) Я так полагаю переменная _nm работала только в цикле. это называется зона видимости, локальная переменная недоступна вне того блока в котором объявлена (первое упомининие) _nm - появилась внутри цикла и за ним её нет. есть спецальное обявление переменных без присвоения значений private ["_nm","_ещё"]; но можно и проще |
› Воскресенье
› 24.10.2010
› 15:32
› Сообщение #
Slon, полная версия одного из апгрейдов.
Это файл респавна нашей техники.
Code While {true} do { While {alive veh} do { sleep 1; "vehrus" setMarkerpos getPos veh; }; radistrus vehicleChat "Уничтожен личный транспорт отряда ВС РФ"; sleep 10; deleteVehicle veh; sleep 5; veh=Vehicle_type createVehicle getMarkerPos "respupveh"; uins=veh addAction ["Взорвать транспорт","Respveh\uins.sqf",[""],1,false]; veh setDir 180; }; А это 9 апгрейд (они все одинаковые, меняется количество очков и тип техники).
Code scopeName "main"; for "_a" from 0 to 11 do { _nm = call compile format ["Pl%1",_a]; if (typeName _nm == "OBJECT") then { if (score _nm <75) exitWith {_nm sideChat "Не хватает очков на улучшение"; breakOut "main"}; if (score _nm >75) then {_nm sideChat "Улучшение--транспорт--БМП3";_nm addScore -75}; }; }; sleep 0.05; upfl removeAction up8; Vehicle_type = "BMP3"; up9=upfl AddAction ["Транспорт: улучшить до Т-72 (85 очков)","Upgrade\veh\up9.sqf"]; upfl --это флаг на базе.
Si vis pacem para bellum
|
› Воскресенье
› 24.10.2010
› 15:55
› Сообщение #
SAN444EZ,
Игра сетевая, надо ещё показать как файл запущен. У новичков как раз в этом 90% ошибок. в одиночной всё работает а в сетевой - бардак.
Quote (SAN444EZ) А это 9 апгрейд должен запускатся только у одного игрока, и выглядит проще
Code if (score Player <75) exitWith {_nm sideChat "Не хватает очков на улучшение"}; Player sideChat "Улучшение--транспорт--БМП3"; sleep 0.05; upfl removeAction up8; Vehicle_type = "BMP3"; up9=upfl AddAction ["Транспорт: улучшить до Т-72 (85 очков)","Upgrade\veh\up9.sqf"]; дальше. Сообщение отредактировал Slon - Воскресенье, 24.10.2010, 16:01
|
› Воскресенье
› 24.10.2010
› 16:12
› Сообщение #
Quote (Slon) изменить колво очков может только сервер, потому, у сервера должен запустися файл с параметрами кому и сколько очков дать-забрать Как это должно выглядеть? Как дать серверу файл, который активируется при действии любого игрока?
Si vis pacem para bellum
|
| |||
Чат сайта |