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


Фотография

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


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



 

Ilias,

scountwest <= 2 * scountingwestv

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

Schatten,

vlad333000,

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

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

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


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

#1 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

Вот что у меня есть и оно не работает.
 
Init.sqf
execVM "count.sqf";
count.sqf
#define countwest;
#define counteast;
#define countingwestv;
#define countingeastv;

_countwest = 8;
_counteast = 8;

if (side player == blufor)
then {
_countwestm = createMarkerLocal ["%1" _countwest, getMarkerPos "countmp"];
_counteastm SetMarkerTypeLocal "Point";
};

if (side player == opfor)
then {
_counteastm = createMarkerLocal ["%1" _counteast, getMarkerPos "countmp"];
_counteastm SetMarkerTypeLocal "Point";
};

_countingwestv = 0;
_countingeastv = 0;

public ("_countwest", "_counteast", "_countingwestv", "_countingeastv");

while (isserver)
do [
sleep (60);

_countwest= _countwest + _countingwestv;
_counteast= _counteast + _countingeastv;

_countwestm setMarkerTextLocal "%1" _countwest;
_counteastm setMarkerTextLocal "%1" _counteast;
];

mission.sqm

		class Item212
		{
			position[]={0.84528255,0,30699.197};
			name="countmp";
			type="Empty";
		};

Заранее спасибо за помощь.


  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

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

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

Извиняюсь за вопрос вы откуда такой синтаксис sqf взяли? Я впервые вижу такой Синтаксис

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

  • 0

#3 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

Что не так?

 

Извиняюсь за вопрос вы откуда такой синтаксис sqf взяли? Я впервые вижу такой Синтаксис


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

  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

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

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

Ilias, ну хотя бы:
while () do [] вместо while {} do {}
"%1" _var вместо fotmatText ["%1", _var]
Тип маркера point
  • 0

#5 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

vlad333000

#define countwest;
#define counteast;
#define countingwestv;
#define countingeastv;

_countwest = 8;
_counteast = 8;

if (side player == west)
	then {
		_countwestm = createMarkerLocal [fotmatText ["%1", _countwest], getMarkerPos "countmp"];
		_counteastm SetMarkerTypeLocal "Dot";
	};

if (side player == east)
	then {
		_counteastm = createMarkerLocal [fotmatText ["%1", _counteast], getMarkerPos "countmp"];
		_counteastm SetMarkerTypeLocal "Dot";
	};

_countingwestv = 0;
_countingeastv = 0;

public ("_countwest", "_counteast", "_countingwestv", "_countingeastv");

while {isserver}
	do {
		sleep (60);

		_countwest= _countwest + _countingwestv;
		_counteast= _counteast + _countingeastv;

		_countwestm setMarkerTextLocal "%1" _countwest;
		_counteastm setMarkerTextLocal "%1" _counteast;
	};

Что ещё?


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

  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

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

При использовании define точка с запятой в конце не ставится.
В SQF нет ключевого слова public.
Вы создаёте маркеры на месте существующего. Не лучше ли изменить существующий?
Лучше так:

_countwestm setMarkerTextLocal (str _countwest);

Кроме этого, у игрока будет создан или маркер _countwestm, или _counteastm, а ниже вы пытаетесь изменить сразу два несуществующих на сервере маркера.
Здесь:

_countwest= _countwest + _countingwestv;
_counteast= _counteast + _countingeastv;

_countingwestv и _countingeastv всегда будут равны нулю. Так и должно быть?


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

  • 2

#7 OFFLINE   vlad333000

vlad333000

    Полковник

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

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

Ilias, formatText так же и для последних строчек
Что вы имели ввиду под public ("_localVar1,","_localVar2..)?
Имя маркера не может начинаться с цифры - нужна латинска буква в нача
  • 0

#8 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

Я не хотел менять существующий потому что там |2 маркера для разных сторон|-(то, что я пытаюсь сделать).

public -я хотел быть уверен что на countwest, counteast, countingwestv, countingeastv можно будет влиять другими скриптами и командами от тригеров и с debug console (здесь и ответ на вопрос "_countingwestv всегда будет равна нулю. Так и должно быть?").

Где имя маркера начинается с цифры?

//int ("_countwest", "_counteast", "_countingwestv", "_countingeastv");
#define countwest
#define counteast
#define countingwestv
#define countingeastv

_countwest = 8;
_counteast = 8;

if (side player == west)
	then {
		_countwestm = createMarkerLocal (str _countwest), getMarkerPos "countmp"];
		_counteastm SetMarkerTypeLocal "Dot";
	};

if (side player == east)
	then {
		_counteastm = createMarkerLocal (str _counteast), getMarkerPos "countmp"];
		_counteastm SetMarkerTypeLocal "Dot";
	};

_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 - 15:00

  • 0

#9 OFFLINE   vlad333000

vlad333000

    Полковник

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

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

Ilias, вот тут у вас имя маркера равно числу ... createMarkerLocal [ formatText ["%1", значения целочисленный переменной]...

тогда и используйте глобальные а не локальные переменные (вам достаточно убрать "_", а define в таком случае не нужен)
  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

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

Я не хотел менять существующий потому что там |2 маркера для разных сторон|-(то, что я пытаюсь сделать).

Условия "side player == west" и "side player == east" не могут быть верными одновременно.
 

public -я хотел быть уверен что на countwest, counteast, countingwestv, countingeastv можно будет влиять другими скриптами и командами от тригеров и с debug console

В SQF это глобальные переменные, которые не начинаются со знака подчёркивания.
 

Где имя маркера начинается с цифры?

Здесь:
_countwestm setMarkerTextLocal fotmatText ["%1", _countwest];
_countwest ведь цифра, поэтому заменяем на это:
_countwestm setMarkerTextLocal fotmatText ["marker%1", _countwest];

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

  • 0

#11 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

vlad333000, Schatten,  Я думал это не имя маркера а текст на нём, а имя: _countwestm , _counteastm .


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

  • 0

#12 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

countwest = 8;
counteast = 8;

!
countwestm = createMarkerLocal [countwestm, getMarkerPos "countmp"];
counteastm SetMarkerTypeLocal "Dot";
countwestm setMarkerTextLocal (str countwest);

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);
     };
Условия "side player == west" и "side player == east" не могут быть верными одновременно.

Как сделать чтобы каждая из сторон видела только свой маркер?


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

  • 0

#13 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

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

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

Создавать их глобально у каждого игрока или на сервере.


  • 0

#14 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

 

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

Создавать их глобально у каждого игрока или на сервере.

 

Как?


  • 0

#15 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

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

 

 

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

Создавать их глобально у каждого игрока или на сервере.

 

Как?

 

С помощью команды createMarker.


  • 0

#16 OFFLINE   Ilias

Ilias

    Прапорщик

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

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


С помощью команды createMarker

countwest = 8;
counteast = 8;

createMarker [countwestm, getMarkerPos "countmp"];
countwestm SetMarkerType "Dot";
countwestm setMarkerText (str countwest);

createMarker [counteastm, getMarkerPos "countmp"];
counteastm SetMarkerType "Dot";
counteastm setMarkerText (str counteast);

countingwestv = 0;
countingeastv = 0;

while {isserver}
     do {

          sleep (60);

          countwest = countwest + countingwestv;
          counteast = counteast + countingeastv;

          countwestm setMarkerText (str countwest);
          counteastm setMarkerText (str counteast);
     };

Сейчас как я понимаю оба маркера создадутся у всех игроков, что добавить я не знаю.


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

  • 0

#17 OFFLINE   vlad333000

vlad333000

    Полковник

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

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

Ilias,значение countwestm и counteastm до создания соответствующих маркеров?
+ следующая строчка после создания маркера west (думаю поймете, вначале строки)
  • 0

#18 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

Ilias,значение countwestm и counteastm до создания соответствующих маркеров?

 

Синтаксис:

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

 = createMarker [name, position]

 

Параметры:

name: 

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

 - имя маркера

position: 

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

 - местоположение маркера в формате 

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

Возвращаемое значение:

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

 

Пример 1:

_marker = createMarker ["Marker1",

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

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

];
_marker setMarkerShape "ICON";
_marker setMarkerType "DOT";

// Или как равнозначный вариант

"Marker1" setMarkerType "DOT";

 

Что это тогда значит?


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

  • 0

#19 OFFLINE   vlad333000

vlad333000

    Полковник

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

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

Ilias, либо я слепой, либо вы не то дали:
Этих переменных тут нет, а после (если это перед тем, что выше)
Вы используете эти переменные для создания маркера, но первым аргументом в массиве (при создании маркера), должна быть string а ни как не nil (ничего), т к вы не определили до эти переменные, то и соответственно они ничто, а не string!
  • 0

#20 OFFLINE   Ilias

Ilias

    Прапорщик

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

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

Ilias, либо я слепой, либо вы не то дали:
Этих переменных тут нет, а после (если это перед тем, что выше)
Вы используете эти переменные для создания маркера, но первым аргументом в массиве (при создании маркера), должна быть string а ни как не nil (ничего), т к вы не определили до эти переменные, то и соответственно они ничто, а не string!

 

To eсть мне нужно назначить любую string просто так и потом использовать для маркеров?

countwest = 8;
counteast = 8;

string = "countwestm";
counteastm = createMarker [countwestm, getMarkerPos "countmp"];
countwestm SetMarkerType "Dot";
countwestm setMarkerText (str countwest);

string = "counteastm";
counteastm = createMarker [counteastm, getMarkerPos "countmp"];
counteastm SetMarkerType "Dot";
counteastm setMarkerText (str counteast);

countingwestv = 0;
countingeastv = 0;

while {isserver}
     do {

          sleep (60);

          countwest = countwest + countingwestv;
          counteast = counteast + countingeastv;

          countwestm setMarkerText (str countwest);
          counteastm setMarkerText (str counteast);
     };

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

  • 0




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