Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Скрипт-школа (Задачи для начинающих скриптописателей) | страница 9
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 9 из 10
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  След. | Все страницы
Поиск в этой теме:
Канал X3: Reunion » Модовый и скриптовый отсек X3: Reunion: «Скрипт-школа (Задачи для начинающих скриптописателей)»
Нужна ли школа скриптописателей
Да. чем нас больше, тем игра веселее
95%
 95%  [ 65 ]
Нет, развелось вас.
4%
 4%  [ 3 ]
Всего проголосовало : 68
AlexYar
 1850 EGP


Рейтинг канала: 13(2096)
Репутация: 328
Сообщения: 31618

Зарегистрирован: 26.10.2003
Andrei [<>Ace] :
А вот что получилось при проверке на Титане.
0 - главная
1 - передняя
2 - правая
3 - задняя
4 - левая
5 - верхняя
6 - нижняя


Ну я мог и подзабыть Улыбка Так тоже вроде правдоподобно Гы-гы
Главное принцип тот, как у меня написано (сперва по кругу по часовой стрелке, потом верх и низ).

WhiteWolf :
Дык может и не быть этих турелей, зато первая и единственная может оказаться кормовой


Не важно - одна турель или десять, всё равно её ИД-номер будет один (турели нумеруются не по порядку, а по соответствию сторонам). Если на корабле одна кормовая турель - значит её номер 3.
Соот-но если турели номер 3 нет (пушки не ставятся туда), значит вполне логичен вывод, что задней турели корабль не имеет.
    Добавлено: 18:16 12-12-2007   
WhiteWolf
 55 EGP


Рейтинг канала: 2(13)
Репутация: 0
Сообщения: 53

Зарегистрирован: 24.10.2007
Написать скрипт обработчик сигнала/команды в котором в качестве аргумента будет присутствовать переменная таймер и этот скрипт будет выбирать турель и запускать в ее стеке скрипт периодически проверяющий не установил ли игрок пушку в эту турель Улыбка. В результате при выборе через консоль нужной команды игроком, игра его вежливо попросит установить таймер (аргумент для скрипта). Скрипт для хоткея, который проверяет исполняется ли в стеке турели скрипт проверки пушки и соответственно сбрасывает мину. Ну и скрипт для мины, который ее подорвет по истечению таймера Улыбка
Согласен, не совсем удобно таймер устанавливать единожды при выборе команды установки миносбрасывателя, но пока других идей нет Расстроен
    Добавлено: 18:36 12-12-2007   
бухой джедай
 182 EGP


Рейтинг канала: 5(141)
Репутация: 70
Сообщения: 7906 Предупреждений: 1
Откуда: Одесса:)
Зарегистрирован: 08.09.2007
Насчет таймера предлагаю сделать его самонастройку
то есть пишем скрипт который по скорости сближения с противником определяет через сколько он может оказатся в зоне поражения мины
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
    Добавлено: 21:05 12-12-2007   
Andrei [<>Ace]
 303 EGP


Рейтинг канала: 6(416)
Репутация: 108
Сообщения: 766
Откуда: Беларусь, Салiгорск
Зарегистрирован: 29.03.2006
AlexYar :
Не важно - одна турель или десять, всё равно её ИД-номер будет один (турели нумеруются не по порядку, а по соответствию сторонам). Если на корабле одна кормовая турель - значит её номер 3.
Соот-но если турели номер 3 нет (пушки не ставятся туда), значит вполне логичен вывод, что задней турели корабль не имеет.

Хотелось бы чтобы было так Улыбка . Ты к примеру на кентавре проверь:
1 - задняя
2 - правая
3 - левая
или на любом М3:
1 - задняя турель

WhiteWolf :
Согласен, не совсем удобно таймер устанавливать единожды при выборе команды установки миносбрасывателя, но пока других идей нет

Будет нормально. Так как прицелевшись и пристрелявшись к расстоянию, уже никто таймер менять не будет.

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

А какой тогда смысл в таймере, если сенсор сработает как раз, когда корабли будут в зоне поражения.
    Добавлено: 01:54 13-12-2007   
бухой джедай
 182 EGP


Рейтинг канала: 5(141)
Репутация: 70
Сообщения: 7906 Предупреждений: 1
Откуда: Одесса:)
Зарегистрирован: 08.09.2007
Andrei [<>Ace] :
А какой тогда смысл в таймере, если сенсор сработает как раз, когда корабли будут в зоне поражения.




рр стоп так мы сенсорную делаем или таймерную ??

если таймерную то тогда только взвести надо или создать уже взведенную
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
    Добавлено: 03:12 13-12-2007   
AlexYar
 1850 EGP


Рейтинг канала: 13(2096)
Репутация: 328
Сообщения: 31618

Зарегистрирован: 26.10.2003
Andrei [<>Ace] :
Хотелось бы чтобы было так . Ты к примеру на кентавре проверь:
1 - задняя
2 - правая
3 - левая
или на любом М3:
1 - задняя турель


На кентавре бардак - это да. Но в общем я здесь описал Улыбка

Проверять нужно не только ИД турели, но и субтайп корабля так же (и каждый корабль с конфигом турелей вписать в спец.библиотечку скриптовую).
    Добавлено: 01:49 14-12-2007   
ULiX
 320 EGP


Рейтинг канала: 7(691)
Репутация: 146
Сообщения: 573
Откуда: Комсомольск на-Амуре
Зарегистрирован: 12.07.2005
AlexYar :
Без разницы, где будет стоять break, всё равно выход будет только из ближайшего цикла. Даже если за ним будет десяток end-ов

Я про Ex-SCE говорил. У него есть разница. Поверь мне. Частенько на этом прокалывался.

бухой джедай :
скрипт пишется так чтоб лог был с метками по типу тегов
ну а далее данному програмисту не шибко стоит усилий написать
просмотровшик к своему логу (кстати чем и является на 60% карта скорпа)

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

WhiteWolf :
Так всетаки таблица верна при отсутствии некоторых турелей (например носовой - 1)

Нуменрация турелей ведётся согласно их позициям в описани турелей для кораблей в TShip.txt Нет никакой гарантии абсолютно одинаковой последовательности видов турелей.

WhiteWolf :
А вот теперь вопрос для всех: Как определить где корма у корабля когда он не двигается? А когда корабль движется назад?

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

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

Принимайте во внимание, что любое сложное преобразование, есть векторное произведение более простых. Простым преобразованием является преобразование в плоскости. Плоскостей у нас три. Значит будет произведение трёз простых преобразований.

Преобразование поворота осей:
Для плоскости XOZ: (альфа - преобразование)

x' = x * cos(alpha) - z * sin(alpha)
z' = x * sin(alpha) + z * sin(alpha)

Матрица для трехмерного пространства, учитывая присутствие неизменных координат y имеет вид:

cos(alpha)0-sin(alpha)
010
sin(alpha)0cos(alpha)

Аналогично найдёте преобразования Бета и Гама.
Потом переумножаем матрицы Альфа, Бета и Гама и получим полую матрицу преобразования координат при вращении осей. Далее останется лишь сделать последнее пребразование, перенос осей координат. Но это уже проще простого.

Практичекски, всю теорию выдал.

Со статистикой никто не разобрался. Видимо задачи нужно давать попроще. Или не давать теорию к задачам. А то кто-то теряет интерес к задаче, если рассказано, как её делать. Хотя я не гоорил "КАК" я предлагал один из вариантов. А сама задача на творчество. Причем это творчество можно расширить. Если использовать правильное форматирование лог файлов, то можно создать такой лог, чтоб его достаточно было переименовать в htm и можно было просмотреть статистику в удобно читаемом виде. Но для этого нужно не только уметь скрипты писать, но и знать HTML теги.
_________________
Новое ещё не значит лучшее
    Добавлено: 13:59 14-12-2007   
бухой джедай
 182 EGP


Рейтинг канала: 5(141)
Репутация: 70
Сообщения: 7906 Предупреждений: 1
Откуда: Одесса:)
Зарегистрирован: 08.09.2007
ULiX :
Со статистикой никто не разобрался. Видимо задачи нужно давать попроще. Или не давать теорию к задачам. А то кто-то теряет интерес к задаче, если рассказано, как её делать. Хотя я не гоорил "КАК" я предлагал один из вариантов. А сама задача на творчество. Причем это творчество можно расширить. Если использовать правильное форматирование лог файлов, то можно создать такой лог, чтоб его достаточно было переименовать в htm и можно было просмотреть статистику в удобно читаемом виде. Но для этого нужно не только уметь скрипты писать, но и знать HTML теги.

задача ясна и понятна, но я не могу писать скрипт до тех пор пока не разберусь в языке скриптов в обшем и целом так сказать,
я себя пока в скрипт эдиторе неуютно чувствую Совсем запутался...
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...

Последний раз редактировалось: бухой джедай (19:47 14-12-2007), всего редактировалось 1 раз
    Добавлено: 19:45 14-12-2007   
WhiteWolf
 55 EGP


Рейтинг канала: 2(13)
Репутация: 0
Сообщения: 53

Зарегистрирован: 24.10.2007
ULiX :
Со статистикой никто не разобрался.
Ну зачем же так категорично? Статистику сделать не сложно, и в любом "юзабилити" формате Улыбка вот только саму статистику полученную в лог файл потом с помощью скриптов как достать? Т.е. зачем создавать с помощью скрипта какую-то базу данных, если потом из других скриптов эти данные не доступны? Предложил бы задачу создать скрипт регулирующий количество NPC торговцев, патрулей, агрессоров и т.д. тогда это было бы понятно (хотя и в этом случае я думаю исполнимо, но не реализуемо аппаратно), а так...
    Добавлено: 20:29 14-12-2007   
ULiX
 320 EGP


Рейтинг канала: 7(691)
Репутация: 146
Сообщения: 573
Откуда: Комсомольск на-Амуре
Зарегистрирован: 12.07.2005
Ясно. Задача всё таки не до конца понята.
Попробуем упростить задачу разбив на части.
Обойдёмся без логов.
Ученики не должны ставить вопрос о целесообразности решения, а просто выполнять задания.
В школе ты разве спрашивал зачем мне решать задачу про велосипедистов выехавших из пункта А в пункт Б.

ЗАДАЧА - 1
Определить потребности в определеном товаре определенной расы.

Входные аргументы: Раса, Товар.

Выходные данные:
1. Сколько товара может приобрести данная раса всего.
2. Сколько товара может приобрести данная раса по цене ниже средней.
3. Сколько товара может приобрести заданная раса по минимальной цене.


ЗАДАЧА - 2
Определить предложение конкретного товара определённой расой.

Входные аргументы: Раса, Товар.

Выходные данные:
1. Сколько товара может продать данная раса всего.
2. Сколько товара может продать данная раса по цене выше средней.
3. Сколько товара может продать заданная раса по максимальной цене.


При решении этих задач также подсчитать максимальную загрузку данным товаром на всех станциях выбраной расы. Т.е. подсчитать на сколько можно по максимуму запастись данным видом товара. Это достигается путём сумирования вместимости всех станций конкретным товаром, которые могут покупать (для первой задачи) или продавать (для второй задачи) данный вид товара.

Теперь задача понятна?

Теоретические данные
Для получения массива станций конкретной расы можно использовать команду:

<RetVar> = get station array: of race <Var/Race> class/type=<Value>

Хотя можно и использовать команду:
<RetVar/IF> find station in galaxy: startsector=<Var/Sector> class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> serial=<Var/Stations Serial> max.jumps=<Var/Number>
С флагом [Find.Multiple]

Это уже, кому как нравится.

Для определения является ли заданный товар продуктом (Задача-2) используем команду:
<RetVar/IF><RefObj> can sell ware <Var/Ware>
Или же
<RetVar/IF><RefObj> uses ware <Var/Ware> as product

Первая команда отличается от второй тем, что может определить что станция торгует не чистым продуктом а промежуточным продуктом. Но это в основном касается станций игрока.

Для определения, является ли товар ресурсом для станции используем две команды:
<RetVar/IF><RefObj> uses ware <Var/Ware> as primary resource
<RetVar/IF><RefObj> uses ware <Var/Ware> as secondary resource

С логической связкой "ИЛИ".
либо
<RetVar/IF><RefObj> can buy ware <Var/Ware>

Вторая команда может выдать значение истина скажем для верфей, котрые при указании любого типа корабля, либо для доков оборудования, которые могут купить любой вид лазеров, ракет, щитов. Так что целесообразно использовать пару команд, если ваш скрипт будет учитывать ещё и верфи доки оборудования и торговые станции.


Для определения текущей цены на станции
<RetVar/IF><RefObj> get price of ware <Var/Ware>

Для определения средней цены
<RetVar/IF><RefObj> get average price of ware <Var/Ware>
но лучше, для чистоты статистики:
<RetVar> = get average price of ware <Var/Ware>
Для вторичных ресурсов значения этих команд могут отличаться. Но для нас важно узнать статистику по абсолютному значению цен а не как вторичного сырья. Так как автоторговцам не важно вторичное это сырьё или первичное, они не будут продавать товар по цене ниже средней и не важно, что средняя цена на втор сырьё меньше.

Минимальную цену на товар можно поулучить командой:
<RetVar> = get min price of ware <Var/Ware>

Для определения числа товара на станции:
<RetVar/IF><RefObj> get amount of ware <Var/Ware> in cargo bay

Для определения максимального числа товара, которое может поместить станция:
<RetVar/IF><RefObj> get max amount of ware <Var/Ware> that can be stored in cargo bay
или
<RetVar/IF><RefObj> get max. store amount of ware <Var/Ware>

Для определения свободного места для закупки товара:
<RetVar/IF><RefObj> get free amount of ware <Var/Ware> in cargo bay

Вот собственно и всё что нужно знать из теории для решения этой задачи.

Результаты можно вывести в бортовой журнал командой:

write to player logbook: printf: fmt=<Var/String>, <Value>, <Value>, <Value>, <Value>, <Value>

Где формат можно сразу указать к примеру для первой задачи :

"All ware: %s, on Average Price: %s, on Min Price %s, Max Amount %s"

Приступаем.
_________________
Новое ещё не значит лучшее
    Добавлено: 11:49 15-12-2007   
Andrei [<>Ace]
 303 EGP


Рейтинг канала: 6(416)
Репутация: 108
Сообщения: 766
Откуда: Беларусь, Салiгорск
Зарегистрирован: 29.03.2006
ULiX :
Для получения массива станций конкретной расы можно использовать команду:

<RetVar> = get station array: of race <Var/Race> class/type=<Value>

Хотя можно и использовать команду:
<RetVar/IF> find station in galaxy: startsector=<Var/Sector> class or type=<Value> race=<Var/Race> flags=<Var/Number> refobj=<Value> serial=<Var/Stations Serial> max.jumps=<Var/Number>
С флагом [Find.Multiple]

Это уже, кому как нравится.

Это не как нравится, а следует использовать первую комаду. Вторая медленная и нужна для других целей.
    Добавлено: 12:43 15-12-2007   
бухой джедай
 182 EGP


Рейтинг канала: 5(141)
Репутация: 70
Сообщения: 7906 Предупреждений: 1
Откуда: Одесса:)
Зарегистрирован: 08.09.2007
Ok попробуюУлыбка
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
    Добавлено: 14:31 15-12-2007   
Andrei [<>Ace]
 303 EGP


Рейтинг канала: 6(416)
Репутация: 108
Сообщения: 766
Откуда: Беларусь, Салiгорск
Зарегистрирован: 29.03.2006
WhiteWolf :
Блин, еще вопрос, каким образом сбросить мину именно с кормы корабля? не нравится мне вставлять лишнюю паузу, да и корабль за время паузы может не покинуть данных координат

Вот служебный скрипт - сбрасывает мину позади корабля:
 ace.service.dump.mine.behind.ship   (кликните здесь для просмотра)
Код:
Script ace.service.dump.mine.behind.ship
Version: 1
for Script Engine Version: 32

Description
Dump of a mine behind ship.
Arguments
1: ship , Var/Ship , 'ship'
Source Text

001   $sector = $ship -> get sector
002   $size = $ship -> get size of object
003   $size = $size + 10
004   $a = $ship -> get rot alpha
005   $a = $a - 16384
006   $b = $ship -> get rot beta
007   $x = $ship -> get x position
008   $y = $ship -> get y position
009   $z = $ship -> get z position
010   
011   $sin.b =  = fixed sin $b
012   $sin.b = $sin.b * 1000 / 655355
013   $cos.b =  = fixed cos $b
014   $cos.b = $cos.b * 1000 / 655355
015   $size.y = $size * $sin.b / 100
016   $size.x.z = $size * $cos.b / 100
017   $sin.a =  = fixed sin $a
018   $sin.a = $sin.a * 1000 / 655355
019   $cos.a =  = fixed cos $a
020   $cos.a = $cos.a * 1000 / 655355
021   $size.x = $size.x.z * $cos.a / 100
022   $size.z = $size.x.z * $sin.a / 100
023   $x = $x + $size.x
024   $y = $y + $size.y * -1
025   $z = $z + $size.z
026   
027   $mine =  create ship: type=Мина СКВОШ owner=Player addto=$sector x=$x y=$y z=$z
028   
029   return null

1000 / 655355 - эта непонятная зипись означает, что расчеты проведены с точностью до сотых.

Прикольно смотриться работа скрипта с кормовой турели. Улыбка
Но помните! Сброс мины с кормы под обстрелом врага череват литальным исходом.
В связи с этим можно немного сместить мину всторону.

ниже скрипт в архиве.

Ace_service.rar
 Описание:
Служебный скрипт - сбрасывает мину позади корабля.
 Имя файла:  Ace_service.rar
 Размер файла:  1.35 KB
 Скачано:  652 раз(а)


Последний раз редактировалось: Andrei [<>Ace] (12:23 16-12-2007), всего редактировалось 2 раз(а)
    Добавлено: 02:25 16-12-2007   
бухой джедай
 182 EGP


Рейтинг канала: 5(141)
Репутация: 70
Сообщения: 7906 Предупреждений: 1
Откуда: Одесса:)
Зарегистрирован: 08.09.2007
задача номер 1 от уликса
 Cкрытый текст   (кликните здесь для просмотра)

$i = 1
$arrst = get station array: of race $Arg0 class/type= null
$count = size of array $arrst
$arrnst = array alloc: size= $count
$t1 = [TRUE]
$tovr = 0
$tovrmin = 0
$tovrmax = 0
while $i < $count
$s = $arrst [ $i ]

$y = $s -> uses ware $Arg1 as primary resource
$y1 = $s -> uses ware $Arg1 as secondary resource
if $y == [TRUE] OR $y1 == [TRUE]
$kolvot = 0
$cena = $s -> get price of ware $Arg1
$srcena = get average price of ware $Arg1
$mincena = get min price of ware $Arg1
$kolvot = $s -> get free amount of ware $Arg1 in cargo bay
$kolvomt = $s -> get max. store amount of ware $Arg1
$tovr = $tovr + $kolvot
if $cena < $srcena
$tovrmin = $tovrmin + $kolvot
end
if $cena > $srcena
$tovrmax = $tovrmax + $kolvot
end
end
inc $i =
end
write to player logbook: printf: fmt= "%sОбщее количество товара %s,средняя цена %s,товару по цене ниже средней %s,товару по цене выше средней %s " , "" , $tovr , $srcena , $tovrmin , $tovrmax

return null




задача номер 2 от уликса
 скрыпт   (кликните здесь для просмотра)


$i = 1
$arrst = get station array: of race $Arg0 class/type= null
$count = size of array $arrst
$arrnst = array alloc: size= $count
$t1 = [TRUE]
$tovr = 0
$tovrmin = 0
$tovrmax = 0
while $i < $count
$s = $arrst [ $i ]
$t = $s -> can sell ware $Arg1
if $t == $t1
$kolvot=0
$cena = $s -> get price of ware $Arg1
$srcena = get average price of ware $Arg1
$mincena = get min price of ware $Arg1
$kolvot = $s -> get amount of ware $Arg1 in cargo bay
$kolvomt = $s -> get max. store amount of ware $Arg1
$tovr = $tovr + $kolvot
if $cena < $srcena
$tovrmin = $tovrmin + $kolvot
end
if $cena > $srcena
$tovrmax = $tovrmax + $kolvot
end
end
inc $i =
end
write to player logbook: printf: fmt= "%sОбщее количество товара %s,средняя цена %s,товару по цене ниже средней %s,товару по цене выше средней %s ","", $tovr , $srcena , $tovrmin , $tovrmax

return null

_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...

Последний раз редактировалось: бухой джедай (09:57 16-12-2007), всего редактировалось 2 раз(а)
    Добавлено: 08:56 16-12-2007   
WhiteWolf
 55 EGP


Рейтинг канала: 2(13)
Репутация: 0
Сообщения: 53

Зарегистрирован: 24.10.2007
бухой джедай :
$s = $arrst [ $i ]
индексы массива начинаются с 0, а у тебя $i=1, в итоге первый элемент пропущен Улыбка
И вместо вот этого
бухой джедай :

$i = 1
...
while $i < $count
$s = $arrst [ $i ]
...
inc $i =
end
лучше вот так
Код:
while $count
dec $count
$s = $arrst [ $count ]
...
end
обработка массива пойдет с последнего элемента к первому и совсем не нужна будет переменная $i
    Добавлено: 12:02 16-12-2007   
бухой джедай
 182 EGP


Рейтинг канала: 5(141)
Репутация: 70
Сообщения: 7906 Предупреждений: 1
Откуда: Одесса:)
Зарегистрирован: 08.09.2007
Это уже дело опытаУлыбка
_________________
Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
    Добавлено: 12:18 16-12-2007   
Andrei [<>Ace]
 303 EGP


Рейтинг канала: 6(416)
Репутация: 108
Сообщения: 766
Откуда: Беларусь, Салiгорск
Зарегистрирован: 29.03.2006
Andrei [<>Ace] :
WhiteWolf :

Блин, еще вопрос, каким образом сбросить мину именно с кормы корабля? не нравится мне вставлять лишнюю паузу, да и корабль за время паузы может не покинуть данных координат


Помните! Сброс мины с кормы под обстрелом врага череват литальным исходом.
В связи с этим можно немного сместить мину всторону.

Вот служебный скрипт - сбрасывает мину позади корабля и под днищем:
 ace.service.dump.mine.behind.ship   (кликните здесь для просмотра)
Код:
Script ace.service.dump.mine.behind.ship
Version: 1
for Script Engine Version: 32

Description
Dump of a mine behind ship.
Arguments
1: ship , Var/Ship , 'ship'
Source Text

001   $sector = $ship -> get sector
002   
003   $size = $ship -> get size of object
004   $a = $ship -> get rot alpha
005   $b = $ship -> get rot beta
006   $g = $ship -> get rot gamma
007   $g.1 = $g - 16384
008   $e = $a + 16384
009   
010   $fix =  = fixed sin $a
011   $sin.a = $fix * 100 / 65535
012   $fix =  = fixed cos $a
013   $cos.a = $fix * 100 / 65535
014   $fix =  = fixed sin $b
015   $sin.b = $fix * 100 / 65535
016   $fix =  = fixed cos $b
017   $cos.b = $fix * 100 / 65535
018   $fix =  = fixed sin $g.1
019   $sin.g = $fix * 100 / 65535
020   $fix =  = fixed cos $g.1
021   $cos.g = $fix * 100 / 65535
022   $fix =  = fixed sin $e
023   $sin.e = $fix * 100 / 65535
024   $fix =  = fixed cos $e
025   $cos.e = $fix * 100 / 65535
026   
027   $x = $ship -> get x position
028   $y = $ship -> get y position
029   $z = $ship -> get z position
030   
031   $x = $x + ( $size + 5 ) * $cos.b * $sin.a / 10000 + ( $size / 2 + 15 ) * $cos.g * $sin.e / 10000
032   $y = $y + ( $size + 5 ) * $sin.b / 100 * -1 + ( $size / 2 + 15 ) * $sin.g / 100
033   $z = $z + ( $size + 5 ) * $cos.b * $cos.a / 10000 * -1 + ( $size / 2 + 15 ) * $cos.g * $cos.e / 10000 * -1
034   
035   $mine =  create ship: type=Мина СКВОШ owner=Player addto=$sector x=$x y=$y z=$z
036   $mine -> set rotation: alpha=$a beta=$b gamma=$g
037   
038   return null


ace_service.rar
 Описание:
Служебный скрипт - сбрасывает мину позади корабля и под днищем.
 Имя файла:  ace_service.rar
 Размер файла:  1.65 KB
 Скачано:  629 раз(а)
    Добавлено: 02:02 21-12-2007   
Andrei [<>Ace]
 303 EGP


Рейтинг канала: 6(416)
Репутация: 108
Сообщения: 766
Откуда: Беларусь, Салiгорск
Зарегистрирован: 29.03.2006
Ну вот...
Andrei [<>Ace] :
Предложу свое задание. Если желающих сделать не будет, а идея понравится, буду сам делать.

... приходится делать самому Улыбка .
Есть конечно и незаконченное решение WhiteWolf (замудрёное Улыбка ), но заканчивать он не спешит.

Вот пример решения некоторых моментов задания.
Можно даже немного попробовать, что получается Улыбка .
Прикольно и странно ведут себя неписи если вдруг у них на пути мина появляется.

С турелями конечно не хорошо получилось Расстроен , все чаще посещает мысль от них вообще отказаться.

Ace_mortar.rar
 Описание:
Учебный скрипт
 Имя файла:  Ace_mortar.rar
 Размер файла:  27.9 KB
 Скачано:  611 раз(а)
    Добавлено: 22:31 21-12-2007   
WhiteWolf
 55 EGP


Рейтинг канала: 2(13)
Репутация: 0
Сообщения: 53

Зарегистрирован: 24.10.2007
Andrei [<>Ace] :
Есть конечно и незаконченное решение WhiteWolf (замудрёное ), но заканчивать он не спешит.
Ну я вроде предупреждал, что примерно с неделю работать над заданием не смогу Расстроен Да, я конечно посещаю форум, но со смартфона... Решу проблемы, все и выложу (вот только когда не знаю точно, тут уже и праздники на носу)
_________________
Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер © Дональд Кнут
    Добавлено: 20:58 24-12-2007   
ULiX
 320 EGP


Рейтинг канала: 7(691)
Репутация: 146
Сообщения: 573
Откуда: Комсомольск на-Амуре
Зарегистрирован: 12.07.2005
бухой джедай
Считаю задание выполненным.

WhiteWolf
Переквалифицировался с учеников в учителя? Похвально. Все замечания одобряю.

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

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

Для этого можно использовать команды:

gosub
и
end sub
для организации подпрограмм.
Подпрограммы уже у вас готовы после выполнени предыдущих заданий.

В этом задании результаты оформить выводом не в журнал а в лог файл.

Таким образоом два ваших скрипта будут расширены и выводить в лог информацию по каждой расе и всем видам товара:

Раса: %s
Товар: %s, средняя цена: %s
Общее количество товара у расы: %s
Товара по цене ниже средней: %s
Товара по цене выше средней: %s


Можете приступать.
Не задавайтесь вопросом, для чего это нужно, просто выполняйте задание. Сделать их не сложно. Считаем это уроком обучения подпрограммам и циклам с перебором объектов.

В задании нужно будет получить список всех товаров. Пусть это будет вашим заданием. Разберитесь, как и какими командами это можно сделать. Умение пользоваться справочником - это ключ к успешному обучению скриптописанию.
_________________
Новое ещё не значит лучшее
    Добавлено: 11:28 27-12-2007   
Канал X3: Reunion -> Модовый и скриптовый отсек X3: Reunion: «Скрипт-школа (Задачи для начинающих скриптописателей)»
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9, 10  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Английская речь в сочетании с космосом особенно приятна. (заметил VooDoo)

  » Скрипт-школа (Задачи для начинающих скриптописателей) | страница 9
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18