|
|
|
Канал X3: Reunion »
Модовый и скриптовый отсек X3: Reunion: «Скрипт-школа (Задачи для начинающих скриптописателей)» |
|
Нужна ли школа скриптописателей |
Да. чем нас больше, тем игра веселее |
|
95% |
[ 65 ] |
Нет, развелось вас. |
|
4% |
[ 3 ] |
|
Всего проголосовало : 68 |
|
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32753
Зарегистрирован: 26.10.2003
 |
|
Andrei [<>Ace] : |
А вот что получилось при проверке на Титане.
0 - главная
1 - передняя
2 - правая
3 - задняя
4 - левая
5 - верхняя
6 - нижняя
|
Ну я мог и подзабыть Так тоже вроде правдоподобно
Главное принцип тот, как у меня написано (сперва по кругу по часовой стрелке, потом верх и низ).
WhiteWolf : |
Дык может и не быть этих турелей, зато первая и единственная может оказаться кормовой
|
Не важно - одна турель или десять, всё равно её ИД-номер будет один (турели нумеруются не по порядку, а по соответствию сторонам). Если на корабле одна кормовая турель - значит её номер 3.
Соот-но если турели номер 3 нет (пушки не ставятся туда), значит вполне логичен вывод, что задней турели корабль не имеет.
|
|
|
WhiteWolf
55 EGP
 Рейтинг канала: 2(13) Репутация: 0 Сообщения: 53
Зарегистрирован: 24.10.2007
 |
|
Написать скрипт обработчик сигнала/команды в котором в качестве аргумента будет присутствовать переменная таймер и этот скрипт будет выбирать турель и запускать в ее стеке скрипт периодически проверяющий не установил ли игрок пушку в эту турель . В результате при выборе через консоль нужной команды игроком, игра его вежливо попросит установить таймер (аргумент для скрипта). Скрипт для хоткея, который проверяет исполняется ли в стеке турели скрипт проверки пушки и соответственно сбрасывает мину. Ну и скрипт для мины, который ее подорвет по истечению таймера
Согласен, не совсем удобно таймер устанавливать единожды при выборе команды установки миносбрасывателя, но пока других идей нет
|
|
|
бухой джедай
183 EGP
  Рейтинг канала: 5(141) Репутация: 70 Сообщения: 7906 Предупреждений: 1 Откуда: Одесса:) Зарегистрирован: 08.09.2007
 |
|
Насчет таймера предлагаю сделать его самонастройку
то есть пишем скрипт который по скорости сближения с противником определяет через сколько он может оказатся в зоне поражения мины
_________________ Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист... |
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
AlexYar : |
Не важно - одна турель или десять, всё равно её ИД-номер будет один (турели нумеруются не по порядку, а по соответствию сторонам). Если на корабле одна кормовая турель - значит её номер 3.
Соот-но если турели номер 3 нет (пушки не ставятся туда), значит вполне логичен вывод, что задней турели корабль не имеет.
|
Хотелось бы чтобы было так . Ты к примеру на кентавре проверь:
1 - задняя
2 - правая
3 - левая
или на любом М3:
1 - задняя турель
WhiteWolf : |
Согласен, не совсем удобно таймер устанавливать единожды при выборе команды установки миносбрасывателя, но пока других идей нет
|
Будет нормально. Так как прицелевшись и пристрелявшись к расстоянию, уже никто таймер менять не будет.
бухой джедай : |
Насчет таймера предлагаю сделать его самонастройку
то есть пишем скрипт который по скорости сближения с противником определяет через сколько он может оказатся в зоне поражения мины
|
А какой тогда смысл в таймере, если сенсор сработает как раз, когда корабли будут в зоне поражения.
|
|
|
бухой джедай
183 EGP
  Рейтинг канала: 5(141) Репутация: 70 Сообщения: 7906 Предупреждений: 1 Откуда: Одесса:) Зарегистрирован: 08.09.2007
 |
|
Andrei [<>Ace] : |
А какой тогда смысл в таймере, если сенсор сработает как раз, когда корабли будут в зоне поражения.
|
рр стоп так мы сенсорную делаем или таймерную ??
если таймерную то тогда только взвести надо или создать уже взведенную
_________________ Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист... |
|
|
AlexYar
1916 EGP
               Рейтинг канала: 13(2096) Репутация: 325 Сообщения: 32753
Зарегистрирован: 26.10.2003
 |
|
Andrei [<>Ace] : |
Хотелось бы чтобы было так . Ты к примеру на кентавре проверь:
1 - задняя
2 - правая
3 - левая
или на любом М3:
1 - задняя турель
|
На кентавре бардак - это да. Но в общем я здесь описал
Проверять нужно не только ИД турели, но и субтайп корабля так же (и каждый корабль с конфигом турелей вписать в спец.библиотечку скриптовую).
|
|
|
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) | 0 | 1 | 0 | sin(alpha) | 0 | cos(alpha) |
Аналогично найдёте преобразования Бета и Гама.
Потом переумножаем матрицы Альфа, Бета и Гама и получим полую матрицу преобразования координат при вращении осей. Далее останется лишь сделать последнее пребразование, перенос осей координат. Но это уже проще простого.
Практичекски, всю теорию выдал.
Со статистикой никто не разобрался. Видимо задачи нужно давать попроще. Или не давать теорию к задачам. А то кто-то теряет интерес к задаче, если рассказано, как её делать. Хотя я не гоорил "КАК" я предлагал один из вариантов. А сама задача на творчество. Причем это творчество можно расширить. Если использовать правильное форматирование лог файлов, то можно создать такой лог, чтоб его достаточно было переименовать в htm и можно было просмотреть статистику в удобно читаемом виде. Но для этого нужно не только уметь скрипты писать, но и знать HTML теги.
_________________ Новое ещё не значит лучшее |
|
|
бухой джедай
183 EGP
  Рейтинг канала: 5(141) Репутация: 70 Сообщения: 7906 Предупреждений: 1 Откуда: Одесса:) Зарегистрирован: 08.09.2007
 |
|
ULiX : |
Со статистикой никто не разобрался. Видимо задачи нужно давать попроще. Или не давать теорию к задачам. А то кто-то теряет интерес к задаче, если рассказано, как её делать. Хотя я не гоорил "КАК" я предлагал один из вариантов. А сама задача на творчество. Причем это творчество можно расширить. Если использовать правильное форматирование лог файлов, то можно создать такой лог, чтоб его достаточно было переименовать в htm и можно было просмотреть статистику в удобно читаемом виде. Но для этого нужно не только уметь скрипты писать, но и знать HTML теги.
|
задача ясна и понятна, но я не могу писать скрипт до тех пор пока не разберусь в языке скриптов в обшем и целом так сказать,
я себя пока в скрипт эдиторе неуютно чувствую
_________________ Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист...
Последний раз редактировалось: бухой джедай (19:47 14-12-2007), всего редактировалось 1 раз |
|
|
WhiteWolf
55 EGP
 Рейтинг канала: 2(13) Репутация: 0 Сообщения: 53
Зарегистрирован: 24.10.2007
 |
|
ULiX : |
Со статистикой никто не разобрался.
|
Ну зачем же так категорично? Статистику сделать не сложно, и в любом "юзабилити" формате вот только саму статистику полученную в лог файл потом с помощью скриптов как достать? Т.е. зачем создавать с помощью скрипта какую-то базу данных, если потом из других скриптов эти данные не доступны? Предложил бы задачу создать скрипт регулирующий количество NPC торговцев, патрулей, агрессоров и т.д. тогда это было бы понятно (хотя и в этом случае я думаю исполнимо, но не реализуемо аппаратно), а так...
|
|
|
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"
Приступаем.
_________________ Новое ещё не значит лучшее |
|
|
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]
Это уже, кому как нравится.
|
Это не как нравится, а следует использовать первую комаду. Вторая медленная и нужна для других целей.
|
|
|
бухой джедай
183 EGP
  Рейтинг канала: 5(141) Репутация: 70 Сообщения: 7906 Предупреждений: 1 Откуда: Одесса:) Зарегистрирован: 08.09.2007
 |
|
Ok попробую
_________________ Так Добрый вечер...Превед с большого Бодуна...
Магистр Непросыхаемость...
Злобный Рецедивист... |
|
|
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 |
Скачано: |
665 раз(а) |
Последний раз редактировалось: Andrei [<>Ace] (12:23 16-12-2007), всего редактировалось 2 раз(а) |
|
|
бухой джедай
183 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 раз(а) |
|
|
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
|
|
|
бухой джедай
183 EGP
  Рейтинг канала: 5(141) Репутация: 70 Сообщения: 7906 Предупреждений: 1 Откуда: Одесса:) Зарегистрирован: 08.09.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 |
Скачано: |
645 раз(а) |
|
|
|
Andrei [<>Ace]
303 EGP
   Рейтинг канала: 6(416) Репутация: 108 Сообщения: 766 Откуда: Беларусь, Салiгорск Зарегистрирован: 29.03.2006
 |
|
Ну вот...
Andrei [<>Ace] : |
Предложу свое задание. Если желающих сделать не будет, а идея понравится, буду сам делать.
|
... приходится делать самому .
Есть конечно и незаконченное решение WhiteWolf (замудрёное ), но заканчивать он не спешит.
Вот пример решения некоторых моментов задания.
Можно даже немного попробовать, что получается .
Прикольно и странно ведут себя неписи если вдруг у них на пути мина появляется.
С турелями конечно не хорошо получилось , все чаще посещает мысль от них вообще отказаться.
Ace_mortar.rar |
Описание: |
|
Имя файла: |
Ace_mortar.rar |
Размер файла: |
27.9 KB |
Скачано: |
638 раз(а) |
|
|
|
WhiteWolf
55 EGP
 Рейтинг канала: 2(13) Репутация: 0 Сообщения: 53
Зарегистрирован: 24.10.2007
 |
|
Andrei [<>Ace] : |
Есть конечно и незаконченное решение WhiteWolf (замудрёное ), но заканчивать он не спешит.
|
Ну я вроде предупреждал, что примерно с неделю работать над заданием не смогу Да, я конечно посещаю форум, но со смартфона... Решу проблемы, все и выложу (вот только когда не знаю точно, тут уже и праздники на носу)
_________________ Лучший способ в чем-то разобраться до конца — это попробовать научить этому компьютер © Дональд Кнут |
|
|
ULiX
320 EGP
      Рейтинг канала: 7(691) Репутация: 146 Сообщения: 573 Откуда: Комсомольск на-Амуре Зарегистрирован: 12.07.2005
 |
|
бухой джедай
Считаю задание выполненным.
WhiteWolf
Переквалифицировался с учеников в учителя? Похвально. Все замечания одобряю.
Теперь у вас есть возможность выполнения первоначального задания со статистикой.
Мы расмотрели алгоритмы для конкретных рас. Теперь расширьте эти алгоритмы, чтоб они перебрали все расы самостоятельно. Чтоб не пришлось несколько раз запускать эти скрипты для каждой расы отдельно.
Для этого можно использовать команды:
gosub
и
end sub
для организации подпрограмм.
Подпрограммы уже у вас готовы после выполнени предыдущих заданий.
В этом задании результаты оформить выводом не в журнал а в лог файл.
Таким образоом два ваших скрипта будут расширены и выводить в лог информацию по каждой расе и всем видам товара:
Раса: %s
Товар: %s, средняя цена: %s
Общее количество товара у расы: %s
Товара по цене ниже средней: %s
Товара по цене выше средней: %s
Можете приступать.
Не задавайтесь вопросом, для чего это нужно, просто выполняйте задание. Сделать их не сложно. Считаем это уроком обучения подпрограммам и циклам с перебором объектов.
В задании нужно будет получить список всех товаров. Пусть это будет вашим заданием. Разберитесь, как и какими командами это можно сделать. Умение пользоваться справочником - это ключ к успешному обучению скриптописанию.
_________________ Новое ещё не значит лучшее |
|
|
|
|
|
Канал X3: Reunion ->
Модовый и скриптовый отсек X3: Reunion: «Скрипт-школа (Задачи для начинающих скриптописателей)» |
|