Перейти к содержанию

Скрипты. С+. Объясните.


martefi

Рекомендуемые сообщения

Народ! Мне очень-очень сильно нужна помощь со скриптами. Я буду просто ОЧЕНЬ сильно признателен, если кто-нибудь, кто поинмает скрипты и С+ мне объяснит некоторые вещи. При этом не обязательно иметь БоБ.

 

Я понимаю, как записать команду - там открываются всякие скобочки, { } пишутся всякие замечания, типа public class Mission : AMission и т.п. Дальше пишется условие, например public override void OnTickGame() или OnPlaceLeave(Player player, AiActor actor, int placeIndex)

 

Дальше - что надо сделать, например: {

 

GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/СубМиссия.mis");

}

 

Но я совершенно не понимаю, где можно взять список всех возможных событий и действий, и какой где синтаксис. Можно было бы скопипастить с имеющихся скриптов, но они порой очень сложные и длинные - я умру там выискивать нужные события и догадываться, как они обозначены, и что каждый значок означает.

 

На данный момент мне нужно написать 2 очень простых вещи:

 

1. On - достижение группой последнего вейпоинта - группу убрать нафиг. (Или можно взамен этого заставить группу повторять одни и тот же маршрут много раз)

2. On - вход вражеского самолета в такую-то зону (близость меньше чем Х) км - сделать {

 

GamePlay.gpPostMissionLoad("missions/Multi/Dogfight/Запустить миссию "Перехват".mis");

}

 

 

Буду очень-очень признателен. Желательно поскорее, и через скайп, чтобы не писать много букафф.. И у меня свобода только до среды! В среду обратно на галеры!

Ссылка на комментарий
Поделиться на другие сайты

1. Не С+, а С# (си-шарп). Разница существенная.

2. Ищи документацию.

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

1. Не С+, а С# (си-шарп). Разница существенная.

2. Ищи документацию.

 

Большое спасибо, Крус, но ссылка на гугл это не совсем то, на что я рассчитывал.

Ссылка на комментарий
Поделиться на другие сайты

1. Не С+, а С# (си-шарп). Разница существенная.

2. Ищи документацию.

 

Большое спасибо, Крус, но ссылка на гугл это не совсем то, на что я рассчитывал.

Ты ж картодел (я редактор открывал только 1 раз). Могу псевдокод написать, это не сложно. Но найти в документации управляющие команды должен ты сам.

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Не, ну ему даже в поисковике в падлу запрос забить!!!

 

Это пойдет?

 

http://simple-cs.ru/

 

Программирование на Си-шарп с нуля.

1. "Военное дело просто и вполне доступно здравому уму человека. Но воевать сложно".

Карл фон Клаузевиц

 

2. НЕНАВИЖУ ФОКИ!!!

kzvezda_for.jpgkzvezda_for.jpgzazaslugi_for.jpg10years_for.jpg

Ссылка на комментарий
Поделиться на другие сайты

Мартефи, в первой же ссылке из гугла (куда я тебя отправлял):

http://www.sukhoi.ru/forum/showthread.php?t=68369

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Очевидно, чтобы писать скрипты, необходимо знать синтаксис Си-шарп.

С английским у тебя порядок. Вот бесплатное обучение Си-шарп (с нуля): http://thenewboston....list.php?cat=15

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

В мои ближайшие планы не входит изучение языка программирования Си. Я знаю, что на Сухом есть тема, где много скриптов. Их изучение мне так же не хотелось бы включать в мои ближайшие планы. Мне нужно 3-4 скрипта для построения миссий.

 

И мне нужна ПОМОЩЬ от человека, который в этом понимает больше меня. Например, от Круза, или кого-то вроде. Иначе я не смогу сделать карту для ОВ. Меня просто не хватит. Нужно, к примеру, написать пару вещей - см. головной пост.

 

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

Ссылка на комментарий
Поделиться на другие сайты

Вот по этой ссылке находится хулиганский скрипт, который после взлета вырубает элероны-руль высоты и направления.

http://www.sukhoi.ru...l=1#post1592454

У меня есть вот такой скрипт -

 

using System;

using maddox.game;

using maddox.game.world;

using System.Collections.Generic;

 

public class Mission : AMission

{

public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)

{

base.OnPlaceLeave(player, actor, placeIndex);

Timeout(1, () =>

{

AiAircraft CurAircraft = player.Place() as AiAircraft;

AiAircraft PrevAircraft = actor as AiAircraft;

if (CurAircraft != PrevAircraft)

{ (actor as AiAircraft).Destroy(); }

});

}

 

}

Он убивает самолет через секунду после того, как из него вышел игрок.

Задача: объединить одно с другим, чтобы покинутый самолет не исчезал из прицела, а терял управление. Это будет интересней. Я думаю, для знатоков программирования это на 3-4 мин. работы, а мне полдня разбираться, потом еще не факт, что будет работать. Примените свои знания на пользу обществу!

Ссылка на комментарий
Поделиться на другие сайты

Принимаю ставки.

Вопрос: "Как вы считаете, как скоро Мартефи предложит написать свой авиасимулятор?"

:-D

Встречный ветер - это не только сопротивление, но и подъемная сила..." (С) Kalter - 72АГ

---

kzvezda_for.jpg10years_for.jpg

 

72AG.gif

Общение в Газете:

72ag_comments.gif

Ссылка на комментарий
Поделиться на другие сайты

Принимаю ставки.

Вопрос: "Как вы считаете, как скоро Мартефи предложит написать свой авиасимулятор?"

:-D

 

Вот, Arrow, вот к чему эти неуместные шуточки? Что, карта тренировочная, свой сервер, ОВ - это никому, кроме меня не надо? Или тебя не беспокоит то, что твой противник вышел, едва у него пробой маслопровода, а ты либо с ботом крутись, либо зри, яко в прецеле цель твоя пропадает?

 

Два скрипта скомпоновать, просто тупо скопипастить, переписать условия и переменные, да скобки посчитать?! Трудно? Причем, если у тебя есть компернатор, то он тебе сам скобки посчитает.

 

Вот уйду я от вас к Веточке с Бубликом - будете знать!

Ссылка на комментарий
Поделиться на другие сайты

Компилятор, Эли, компилятор.

*сползает под стол*

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Если, как выражается Эли, я правильно сосчитал скобочки, это должно выглядеть так:

using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
public class Mission : AMission
{
public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceLeave(player, actor, placeIndex);
Timeout(1, () =>
{
AiAircraft CurAircraft = player.Place() as AiAircraft;
AiAircraft PrevAircraft = actor as AiAircraft;
if (CurAircraft != PrevAircraft)
{
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsElevatorDisabled); // ...вырубаем рули высоты...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsAileronsDisabled); // ... элероны ...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsRudderDisabled); // ... руль направления.
					// Приятного полета!
}
});
}
}

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

Но чем чёрт не шутит, вдруг заработает.

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Если, как выражается Эли, я правильно сосчитал скобочки, это должно выглядеть так:

using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
public class Mission : AMission
{
public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceLeave(player, actor, placeIndex);
Timeout(1, () =>
{
AiAircraft CurAircraft = player.Place() as AiAircraft;
AiAircraft PrevAircraft = actor as AiAircraft;
if (CurAircraft != PrevAircraft)
{
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsElevatorDisabled); // ...вырубаем рули высоты...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsAileronsDisabled); // ... элероны ...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsRudderDisabled); // ... руль направления.
					// Приятного полета!
}
});
}
}

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

Но чем чёрт не шутит, вдруг заработает.

 

Ура! Крус! Огромнейшее спасибо тебе! Не заработать не может, т.к. и то и другое - работающий скрипт к БоБу, их нужно просто ском - ты, кстати, уверен насчет компилятора? Я думал, он компернатор называется, потомучто периоды ском - что-то там... компарирует периоды... т.е. сравнивает... эти самые скобочки...

Вообщем - убежал тестировать...

Ссылка на комментарий
Поделиться на другие сайты

Эли, если бы ты хоть немного понимал ООП.

 

also

Компилятор и никак иначе. От глагола to compile (составлять/собирать)

 

Доложи, как затестишь, интересно ж знать, сработало ли ;)

Изменено пользователем Crus

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Эли, если бы ты хоть немного понимал ООП.

 

ООП - это я очень хорошо понимаю. ООП - это Организация Освобождения Палестины. Не говори при мне таких слов.

 

also

Компилятор и никак иначе. От глагола to compile (составлять/собирать)

 

Ну... тебе конечно виднее... Хотя, почему не от глагола to compare (сопостовлять, сравнивать)?

Ссылка на комментарий
Поделиться на другие сайты

Эли, если бы ты хоть немного понимал ООП.

 

ООП - это я очень хорошо понимаю. ООП - это Организация Освобождения Палестины. Не говори при мне таких слов.

 

also

Компилятор и никак иначе. От глагола to compile (составлять/собирать)

 

Ну... тебе конечно виднее... Хотя, почему не от глагола to compare (сопостовлять, сравнивать)?

1. Объектно-Ориентированное Программирование.

2. Ну допустим. С чем тогда сравнивать код программы ?

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Ура! Все работает! Только это не очень хорошей идеей оказалось - бот на одном движке минут 5 летал, тягой играл. Но рули не шолохнулись! Где-то на сухом был полный список повреждений... Надо там найти - "вырубить двигло", тогда он падать буедт. Но это я уже сам ском... скомпилирую.

 

С чем сравнивать код программы... Да хрен его знает, Крус. Я же говорю - тебе виднее... Буду знать, что он компилятор.

Ссылка на комментарий
Поделиться на другие сайты

using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
public class Mission : AMission
{
public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceLeave(player, actor, placeIndex);
Timeout(1, () =>
{
AiAircraft CurAircraft = player.Place() as AiAircraft;
AiAircraft PrevAircraft = actor as AiAircraft;
if (CurAircraft != PrevAircraft)
{
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsElevatorDisabled); // ...вырубаем рули высоты...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsAileronsDisabled); // ... элероны ...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsRudderDisabled); // ... руль направления.
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsThrottleDisabled); // тяга
					// Приятного полета!
}
});
}
}

Попробуй так, может тяга теперь тоже отключится.

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

 

(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsThrottleDisabled); // тяга

// Приятного полета!

}

[/code]

Попробуй так, может тяга теперь тоже отключится.

 

Кажется, не получается... Я тягу в ноль поставил, так он гад ее увеличил. Причем не немедленно, я вижу, там секунда должна пройти, так он позже тягу менял. Я в штопор повалил самолет перед выходом, так он успел дать рули на вывод, так у него их и заклинило. А тягу - нет...

Ссылка на комментарий
Поделиться на другие сайты

(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsThrottleDisabled); // тяга

// Приятного полета!

}

[/code]

Попробуй так, может тяга теперь тоже отключится.

 

Кажется, не получается... Я тягу в ноль поставил, так он гад ее увеличил. Причем не немедленно, я вижу, там секунда должна пройти, так он позже тягу менял. Я в штопор повалил самолет перед выходом, так он успел дать рули на вывод, так у него их и заклинило. А тягу - нет...

Эх, Эли.

Конечно, я не программер. Но по моему скромному опыту любительского занятия этим делом получается, что обычно написать-то не сложно, а вот отладить и выловить все баги.....

Так что, если для построения миссий нужно знание языка программирования, то лучше тебе все-таки заняться изучением этого языка.

Поверь - так дешевле будет.

kznameni_for.jpgzaotvagu_for.jpgzazaslugi_for.jpg10years_for.jpg
Ссылка на комментарий
Поделиться на другие сайты

Эли, как я с самого начала и писал, нужна документация. Наугад писать программы невозможно (что я попытался сделать для примера).

Откуда то другие писатели скриптов узнали, что есть класс AiAircraft, в котором определён метод hitNamed(...), а объект part отвечает за идентификацию частей самолётов.

Либо ты находишь документацию (хоть какое-то описание структуры классов), либо моя помощь на этом заканчивается.

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Встречный ветер - это не только сопротивление, но и подъемная сила..." (С) Kalter - 72АГ

---

kzvezda_for.jpg10years_for.jpg

 

72AG.gif

Общение в Газете:

72ag_comments.gif

Ссылка на комментарий
Поделиться на другие сайты

Такой скрипт, в текущей реализации, имеет один значительный минус, ситуация: я выезжал из ангара, неудачно выехал, поломал законцовку крыла. Вышел из самолёта -- у него заклинили рули и тяга двигла, ну и чем мне это поможет, когда я второй раз буду выезжать из ангара? :) Или тоже самое при вынужденной, из самолёта вышел, а он так лежать и остался. Надо добавить проверку на высоту над уровнем земли. Если высота 0 -- сразу убирать, ну, или с 5 секундной задержкой, чтобы взорваться успел..

С уважением, terror

Ссылка на комментарий
Поделиться на другие сайты

Мне хотелось, чтобы это нашёл мартефи.

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Эли, вот так двигатель выключится тоже.

using System;
using maddox.game;
using maddox.game.world;
using System.Collections.Generic;
public class Mission : AMission
{
private void destroyPlane(AiAircraft aircraft)
  {
      if (aircraft != null && isAiControlledPlane(aircraft))
          aircraft.Destroy();
  }
public override void OnPlaceLeave(Player player, AiActor actor, int placeIndex)
{
base.OnPlaceLeave(player, actor, placeIndex);
Timeout(1, () =>
{
AiAircraft CurAircraft = player.Place() as AiAircraft;
AiAircraft PrevAircraft = actor as AiAircraft;
if (CurAircraft != PrevAircraft)
{
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsElevatorDisabled); // ...вырубаем рули высоты...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsAileronsDisabled); // ... элероны ...
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.ControlsRudderDisabled); // ... руль направления.
(actor as AiAircraft).hitNamed(part.NamedDamageTypes.FuelPumpFailure); // ...двигатель...
					// Приятного полета!
AiAircraft tmp = (actor as AiAircraft);
Timeout(300, () =>
          { destroyPlane(tmp); }
              );
}
});
}
}

Сейчас поищу удаление не взлетевшего самолёта.

 

upd

Сделал автоматическое удаление самолёта через 300 секунд

Изменено пользователем Crus

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Мартефи, я ж тебе говорил, что такой скрипт не нужен! Зачем народ баламутишь! Самый лучший вариант, как на репке - покинуть самолет (альт+Ф2) можно только на земле или выпрыгнув с парашютом. При попытке выскочить в воздухе в чате надпись "Пилот .... пытался сбежать.." (или что-то вроде пообиднее;)) После покидания самолета он СРАЗУ исчезает. Так и сервак не грузится и объекты лишние не плодятся. Зачем мудрить, все уже придумали и обкатали...;)

Не беги от снайпера, умрешь уставшим.

—-

Сильный видит возможность в каждой опасности, слабый - опасность в каждой возможности (китайская поговорка).

---

Не имеет значения насколько медленно ты идешь, до тех пор пока ты не остановился (Конфуций).

Ссылка на комментарий
Поделиться на другие сайты

Так, народ, срочно прекращаем ко мне попусту придираться, а то у запасы моего энтузиазма тают на глазах. Трутень, тебе такой скрипт не нужен, а мне вот очень нужен. Народ не только дуэлью занимается. А чтобы сервак не перегружался, есть другой скрипт, называется "уборщица".

 

Задача заключается в том, чтобы получить то, что нам надо, затратив МИНИМУМ времени и сил. С Б-жьей (и Круса) помощью у меня это получиться, если всякий раз под руку толкать не будут. То, что сделал Крус, это очень мне помогло. А ошибки неизбежны.

 

Мне кажется, я нашел ошибочку, (прада, не проверял ыщо. Там надо было написать так: part.NamedDamageTypes.Eng0TotalFailure) которая, естественным образом возникла из-за недостатка документации (кто-бы сомневался, что она нужна! А то "тут курили, там курили"! Да курили! Уже все легкие в смоле!) Рекламировать табачные изделия - все мастера! Гугл рулит везде, и у меня тоже. Только все это надо читать, вникать и т.п.

 

Знаете анекдот про то, как выучить английский язык? Сперва надо выучить наизусть вебстеровский словарь, потом справочник по грамматике королевской академии, и т.д., далее по тексту. А у нас с вами завтра купец из Англицкого королевства приезжает, панталонами торговать! Вот с ним надо обЪясниться про цену, оптовую скидку, и бартер на соболя. А не обЪяснитесь, бояре, будут завтра ваши боярыни да боярышни без панталон. То-то они вам спасибо скажут! Вот будете им обЪяснять, что вы как положено "курили"!

 

Поэтому срочно - цветы и апплодисменты - мне, респект и уважуха Крусу, а вместо рекламы табачных изделий предлагаю принести всем готовую строчку скрипта. Желательно, проверенную.

Ссылка на комментарий
Поделиться на другие сайты

Кстати, Крус, я проверил, но у меня не работает. Т.е. ВООБЩЕ НИЧЕГО не работает, даже рули направления, которые раньше клинило, бот ими бодренько так шевелит. Я подозреваю, что я что-то не туда закомпилировал... или как там это слово правильно...

 

В общем, не будет ли так любезен многоуважаемый Джин, ... Нарисуй мне скриптик, плиз. с правильным скобочками, а, Крус?

 

Кстати, других это тоже касается, ведь

 

Не один же единственный Крус

Тут умеет Си Шарп и Си плюс?

Отчего ж здесь никто

Не рисует скриптов,

И не дует ни в нос и не в ус?

Ссылка на комментарий
Поделиться на другие сайты

Кстати, Крус, я проверил, но у меня не работает. Т.е. ВООБЩЕ НИЧЕГО не работает, даже рули направления, которые раньше клинило, бот ими бодренько так шевелит. Я подозреваю, что я что-то не туда закомпилировал... или как там это слово правильно...

 

В общем, не будет ли так любезен многоуважаемый Джин, ... Нарисуй мне скриптик, плиз. с правильным скобочками, а, Крус?

 

Кстати, других это тоже касается, ведь

 

Не один же единственный Крус

Тут умеет Си Шарп и Си плюс?

Отчего ж здесь никто

Не рисует скриптов,

И не дует ни в нос и не в ус?

 

 

UPD - ой, Крус, прости, не заметил, что ты уже все нарисовал... Убежал проверять.

Ссылка на комментарий
Поделиться на другие сайты

 

Либо ты находишь документацию (хоть какое-то описание структуры классов), либо моя помощь на этом заканчивается.

 

Крус, ну помилосердствуй! Я даже не знаю, на что эта документация похожа, и как ее искать! И почему это все классами называется, и откуда берется. Я сам все это читаю как обычный английский, благодаря этому понимаю.

Ссылка на комментарий
Поделиться на другие сайты

Тебе повторить ссылку на обучение Си-Шарп или сам найдёшь ? ;)

С уважением, Crusader(Макс) Б/Н 27.
"У прямолинейно и равномерно летящего самолета суммы всех сил и моментов равна нулю." (с) физика

Ссылка на комментарий
Поделиться на другие сайты

Тебе повторить ссылку на обучение Си-Шарп или сам найдёшь ? ;)

 

Ну вот, на колу мочало, начинай сначала... Крус, я не буду сейчас изучать Си Шарп. Если поможешь - спасибо скажу. А если нет, что ж, придется опять справляться как-нибудь,... собственными силами.

Ссылка на комментарий
Поделиться на другие сайты

Нашел еще две фигни

 

1. part.NamedDamageTypes.FuelTank0Exploded

 

2. part.NamedDamageTypes.FuelTank0Fire

 

Думаю, Трутень-сан будет доволен.

Ссылка на комментарий
Поделиться на другие сайты

Оба работают. Опять чуть до слез меня не довели - на этот раз точку с запятой забыл. Все-таки, Крус, ты нехороший человек.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...