
Прошу помощи с написанием скипта

Лучший Ответ Ilias , 08 September 2015 - 18:26
Спасибо, вот это запомню,
Спасибо за помощь, всё работает)
Одна ещё вещь: не знаете какой нибудь способ сообщать игрокам что либо даже если они в зевсе? //Все стороны могут быть; , свои hint и commandChat они не видят.
Перейти к сообщению
#21
OFFLINE
Отправлено 05 September 2015 - 16:08
#22
OFFLINE
Отправлено 05 September 2015 - 16:13
Ilias , в точку!
Зачем, что за бред такой?
В смысле я благодарен просто не понимаю почему это так (какой в этом смысл?).
Сообщение отредактировал Ilias: 05 September 2015 - 16:29
#23
OFFLINE
Отправлено 05 September 2015 - 16:17
Вы не можете в качестве string (строки) использовать ничто (пусто)
И тут два выхода: либо вы этим переменным указываете значение до создания маркера:
countwestm = "marker1";counteastm = "marker2";Либо в месте, где вы создаете маркер их заменить на string:
...createMarker ["marker1",...
Сообщение отредактировал vlad333000: 05 September 2015 - 16:18
#24
OFFLINE
Отправлено 05 September 2015 - 16:19
Зачем string нужны?
Сообщение отредактировал Ilias: 05 September 2015 - 16:29
#25
OFFLINE
Отправлено 05 September 2015 - 16:46
Зачем string нужны?
Для названия маркера нужна переменная типа string.
#26
OFFLINE
Отправлено 05 September 2015 - 16:50
Зачем string нужны?
Для названия маркера нужна переменная типа string.
Но я же всё равно указываю название после.
#27
OFFLINE
Отправлено 05 September 2015 - 16:55
Зачем string нужны?
Для названия маркера нужна переменная типа string.
Я думаю, я понял.
Будут ли сейчас маркеры создаваться зависимо от стороны игрока?
countwest = 8; counteast = 8; if (side player == west) then { string = "countwestm"; countwestm = createMarkerlocal [countwestm, getMarkerPos "countmp"]; countwestm SetMarkerTypelocal "Dot"; countwestm setMarkerTextlocal (str countwest); }; if (side player == east) then { string = "counteastm"; counteastm = createMarkerlocal [counteastm, getMarkerPos "countmp"]; counteastm SetMarkerTypelocal "Dot"; counteastm setMarkerTextlocal (str counteast); }; countingwestv = 0; countingeastv = 0; while {isserver} do { sleep (60); countwest = countwest + countingwestv; counteast = counteast + countingeastv; countwestm setMarkerTextlocal (str countwest); counteastm setMarkerTextlocal (str counteast); };
Сообщение отредактировал Ilias: 05 September 2015 - 17:08
#28
OFFLINE
Отправлено 05 September 2015 - 17:42
Будут ли сейчас маркеры создаваться зависимо от стороны игрока?
Не будут, поскольку здесь:
countwestm = createMarkerlocal [countwestm, getMarkerPos "countmp"]; counteastm = createMarkerlocal [counteastm, getMarkerPos "countmp"];
переменные countwestm и counteastm не определены. Если они будут определены, то маркеры создадутся только у игроков, следовательно, код внутри цикла while работать не будет.
#29
OFFLINE
Отправлено 05 September 2015 - 17:52
переменные countwestm и counteastm не определены.
string = "countwestm";
Не то?
Если создать маркеры глобально то они будут видны всем игрокам, разве нет?
Сообщение отредактировал Ilias: 05 September 2015 - 17:53
#30
OFFLINE
Отправлено 05 September 2015 - 18:05
string = "countwestm";Не то?
Этой строчкой вы переменной string присвоили строку "countwestm" - так что не то.
Если создать маркеры глобально то они будут видны всем игрокам, разве нет?
Верно, только вы создаёте маркеры командой createMarkerLocal, а не createMarker.
Где расположен этот код?
#31
OFFLINE
Отправлено 05 September 2015 - 18:10
Код в папке с миссией, на сервере.
Ilias сказал(а) 05 Сен 2015 - 16:52: Если создать маркеры глобально то они будут видны всем игрокам, разве нет? Верно, только вы создаёте маркеры командой createMarkerLocal, а не createMarker.
Я и имею ввиду что команда createMarker создаст маркеры видимые всем игрокам, чего я не хочу (или это не так?).
переменные countwestm и counteastm не определены.
Как мне их определить?
Сообщение отредактировал Ilias: 05 September 2015 - 18:12
#32
OFFLINE
Отправлено 05 September 2015 - 18:24
class marker { string = "countwestm"; string = "counteastm"; }; if (side player == west) then { countwestm = createMarkerlocal [countwestmn, getMarkerPos "countmp"]; countwestm SetMarkerTypelocal "Dot"; countwestm setMarkerTextlocal "8"; }; if (side player == east) then { counteastm = createMarkerlocal [counteastmn, getMarkerPos "countmp"]; counteastm SetMarkerTypelocal "Dot"; counteastm setMarkerTextlocal "8"; }; countwest = 8; counteast = 8; countingwestv = 0; countingeastv = 0; while {1=1} do { sleep (60); countwest = countwest + countingwestv; counteast = counteast + countingeastv; countwestm setMarkerTextlocal (str countwest); counteastm setMarkerTextlocal (str counteast); };
Сообщение отредактировал Ilias: 05 September 2015 - 18:29
#33
OFFLINE
Отправлено 05 September 2015 - 18:28
Код в папке с миссией, на сервере.
Название файла?
Я и имею ввиду что команда createMarker создаст маркеры видимые всем игрокам, чего я не хочу (или это не так?).
А что же вам тогда нужно?
Судя по вашему коду, вы создаёте на клиентских компах маркеры, которые потом обновляете на сервере, а для этого маркеры должны быть глобальными.
Как мне их определить?переменные countwestm и counteastm не определены.
Присвоить какое-нибудь значение.
class marker { string = "countwestm"; string = "counteastm"; };
В SQF нету и не может быть никаких классов.
Сообщение отредактировал Schatten: 05 September 2015 - 18:32
#34
OFFLINE
Отправлено 05 September 2015 - 18:38
init.sqf
execVM "count.sqf";
Название файла?
count.sqf
Присвоить какое-нибудь значение.
Почему countwestm не значение?
А что же вам тогда нужно? Судя по вашему коду, вы создаёте на клиентских компах маркеры, которые потом обновляете на сервере, а для этого маркеры должны быть глобальными.
Мне нужы отдельные маркеры для blufor and opfor.
Если создать маркер на сервере (createMarker) то все игроки его будут видеть.?
string = "countwestm"; string = "countwestm"; if (side player == west) then { countwestm = createMarkerlocal [countwestmn, getMarkerPos "countmp"]; countwestm SetMarkerTypelocal "Dot"; countwestm setMarkerTextlocal "8"; }; if (side player == east) then { counteastm = createMarkerlocal [counteastmn, getMarkerPos "countmp"]; counteastm SetMarkerTypelocal "Dot"; counteastm setMarkerTextlocal "8"; }; countwest = 8; counteast = 8; countingwestv = 0; countingeastv = 0; while {1=1} do { sleep (60); countwest = countwest + countingwestv; counteast = counteast + countingeastv; countwestm setMarkerTextlocal (str countwest); counteastm setMarkerTextlocal (str counteast); };
Сообщение отредактировал Ilias: 05 September 2015 - 18:44
#35
OFFLINE
Отправлено 05 September 2015 - 19:04
Это не верно?
[rimg]https://yadi.sk/i/ucl8iru3itQrt[/rimg]
#36
OFFLINE
Отправлено 05 September 2015 - 19:13
Сообщение отредактировал vlad333000: 05 September 2015 - 19:15
#37
OFFLINE
Отправлено 05 September 2015 - 19:14
Почему countwestm не значение?Присвоить какое-нибудь значение.
Я уже писал почему.
Мне нужы отдельные маркеры для blufor and opfor.
Один для blufor и один для opfor? Или чтобы у каждого игрока было по два маркера?
Если создать маркер на сервере (createMarker) то все игроки его будут видеть.?
Да.
Сообщение отредактировал Schatten: 05 September 2015 - 19:20
#38
OFFLINE
Отправлено 05 September 2015 - 19:23
Один для blufor и один для opfor? Или чтобы у каждого игрока было по два меркера?
Один для blufor и один для opfor.
Я уже писал почему.
? string [countwestm] = "1"; string2 [counteastm] = "2"; if (side player == west) then { countwestm = createMarkerlocal [countwestmn, getMarkerPos "countmp"]; countwestm SetMarkerTypelocal "Dot"; countwestm setMarkerTextlocal "8"; }; if (side player == east) then { counteastm = createMarkerlocal [counteastmn, getMarkerPos "countmp"]; counteastm SetMarkerTypelocal "Dot"; counteastm setMarkerTextlocal "8"; }; ?
#39
OFFLINE
Отправлено 05 September 2015 - 19:25
Короче тебе нужно 2 переменные типа string! Да да эта та хрень которая в памяти записана в виде массива символов и символом конца строки!
Но т к в sqf все переменные без явного типа, то тебе достаточно этим переменным присвоить значение string (текста по русски!) и выгляди это также как и на Си:
variable = "My text";
но для маркера нужно выполнить еще пару условий:
1. Первый символ обязательно должен быть буквой из латинского алфавита
2. Не должно быть спец символов: %$€&₽@ и т д
3. Не должно быть пробелов
4. Имя должно быть уникальным
#40
OFFLINE
Отправлено 05 September 2015 - 19:38
init.sqf
if (!isDedicated) then {execVM "count.sqf"}; // count.sqf запустится только на клиентском компе
count.sqf
_marker = createMarkerLocal ["marker", getMarkerPos "countmp"]; _marker setMarkerTypeLocal "Dot"; while {true} do { _markerText = switch (playerSide) do { case blufor: {str (blufor countSide allPlayers)}; case opfor: {str (opfor countSide allPlayers)}; default {""}; }; _marker setMarkerTextLocal _markerText; sleep 60; };