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


Фотография

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


Лучший Ответ Ilias , 08 September 2015 - 18:26



 

Ilias,

scountwest <= 2 * scountingwestv

Спасибо, вот это запомню,

Schatten,

vlad333000,

Спасибо за помощь, всё работает)

Одна ещё вещь: не знаете какой нибудь способ сообщать игрокам что либо даже если они в зевсе? //Все стороны могут быть; , свои hint и commandChat они не видят.

Перейти к сообщению


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

#21 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 September 2015 - 16:08

Ilias, в точку!
  • 0

#22 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 05 September 2015 - 16:13

Ilias, в точку!

 

Зачем, что за бред такой?

 

В смысле я благодарен просто не понимаю почему это так (какой в этом смысл?).


Сообщение отредактировал Ilias: 05 September 2015 - 16:29

  • 0

#23 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 September 2015 - 16:17

Ilias, Не бред, а правила:
Вы не можете в качестве string (строки) использовать ничто (пусто)
И тут два выхода: либо вы этим переменным указываете значение до создания маркера:
countwestm = "marker1";counteastm = "marker2";
Либо в месте, где вы создаете маркер их заменить на string:
...createMarker ["marker1",...

Сообщение отредактировал vlad333000: 05 September 2015 - 16:18

  • 0

#24 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 05 September 2015 - 16:19

 

 

Зачем string нужны?


Сообщение отредактировал Ilias: 05 September 2015 - 16:29

  • 0

#25 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 September 2015 - 16:46

Зачем string нужны?

Для названия маркера нужна переменная типа string.


  • 0

#26 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 05 September 2015 - 16:50

 

Зачем string нужны?

Для названия маркера нужна переменная типа string.

 

Но я же всё равно указываю название после.


  • 0

#27 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 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

  • 0

#28 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 September 2015 - 17:42

Будут ли сейчас маркеры создаваться зависимо от стороны игрока?

Не будут, поскольку здесь:

countwestm = createMarkerlocal [countwestm, getMarkerPos "countmp"];
counteastm = createMarkerlocal [counteastm, getMarkerPos "countmp"];

переменные countwestm и counteastm не определены. Если они будут определены, то маркеры создадутся только у игроков, следовательно, код внутри цикла while работать не будет.


  • 0

#29 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 05 September 2015 - 17:52


переменные countwestm и counteastm не определены.
        string = "countwestm";

Не то?

 

Если создать маркеры глобально то они будут видны всем игрокам, разве нет?


Сообщение отредактировал Ilias: 05 September 2015 - 17:53

  • 0

#30 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 September 2015 - 18:05

string = "countwestm";
Не то?

 

Этой строчкой вы переменной string присвоили строку "countwestm" - так что не то.
 

Если создать маркеры глобально то они будут видны всем игрокам, разве нет?

Верно, только вы создаёте маркеры командой createMarkerLocal, а не createMarker.

Где расположен этот код?


  • 0

#31 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 05 September 2015 - 18:10

Код в папке с миссией, на сервере.

 

 

 


Ilias сказал(а) 05 Сен 2015 - 16:52: Если создать маркеры глобально то они будут видны всем игрокам, разве нет? Верно, только вы создаёте маркеры командой createMarkerLocal, а не createMarker.

Я и имею ввиду что команда createMarker создаст маркеры видимые всем игрокам, чего я не хочу (или это не так?).

 

 

 


переменные countwestm и counteastm не определены.

Как мне их определить?


Сообщение отредактировал Ilias: 05 September 2015 - 18:12

  • 0

#32 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 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

  • 0

#33 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 September 2015 - 18:28

Код в папке с миссией, на сервере.

Название файла?
 

Я и имею ввиду что команда createMarker создаст маркеры видимые всем игрокам, чего я не хочу (или это не так?).

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

 

переменные countwestm и counteastm не определены.

Как мне их определить?

 

Присвоить какое-нибудь значение.
 

class marker
{
     string = "countwestm";
     string = "counteastm";
};

В SQF нету и не может быть никаких классов.


Сообщение отредактировал Schatten: 05 September 2015 - 18:32

  • 0

#34 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 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

  • 0

#35 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 05 September 2015 - 19:04

Это не верно?

[rimg]https://yadi.sk/i/ucl8iru3itQrt[/rimg]


  • 0

#36 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 September 2015 - 19:13

Ilias, хватит пихать Си в sqf! Да он похож на Си, но это не значит, что он будет работать на консирукциях из Си! Все классы определяются в description.ext и тут вы вольны использовать Си, но не в sqf!

Сообщение отредактировал vlad333000: 05 September 2015 - 19:15

  • 0

#37 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 05 September 2015 - 19:14

 

Присвоить какое-нибудь значение.

Почему countwestm не значение?

 

Я уже писал почему.
 

Мне нужы отдельные маркеры для blufor and opfor.

Один для blufor и один для opfor? Или чтобы у каждого игрока было по два маркера?
 

Если создать маркер на сервере (createMarker) то все игроки его будут видеть.?

Да.


Сообщение отредактировал Schatten: 05 September 2015 - 19:20

  • 0

#38 OFFLINE   Ilias

Ilias

    Прапорщик

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

Отправлено 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";

    };
?

  • 0

#39 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 05 September 2015 - 19:25

Ilias, надеюсь ты хоть Си знаешь:
Короче тебе нужно 2 переменные типа string! Да да эта та хрень которая в памяти записана в виде массива символов и символом конца строки!
Но т к в sqf все переменные без явного типа, то тебе достаточно этим переменным присвоить значение string (текста по русски!) и выгляди это также как и на Си:
variable = "My text";
но для маркера нужно выполнить еще пару условий:
1. Первый символ обязательно должен быть буквой из латинского алфавита
2. Не должно быть спец символов: %$€&₽@ и т д
3. Не должно быть пробелов
4. Имя должно быть уникальным
  • 0

#40 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 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;
};

  • 0




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