Форум TeamX
   Home   Members  
Pages: [1] 2 3 |   Go Down
 
Author Topic: Скрипты FO3  (Read 6860 times)
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Скрипты FO3
« on: 19 November 2008, 22:27:33 »

-- upd --

FOMM теперь умеет компилировать скрипты. Пока не все, но начало положено.

-- upd end --

Итак, настал тот час, когда мы можем работать со скриптами FO3. Подмигивающий

1. Опкоды. Они же FuncCode в документе №2.
2. Формат записи SCPT. Интересен всем, особенно наличием Output Codes.
3. Примитивная утилита для облегчения жизни кодерам в прямом смысле этого слова. Улыбка

А вот как на данный момент выглядит скриптинг:

    1D 00 00 00 ; start
   
    10 00 06 00 [00 00] [11 00] [00 00] ; begin GameMode
   
    1C 00 [01 00] 9E 10 [ [05 00] [ [01 00] [72 02 00] ] ] ; DogmeatREF.MoveTo player

    11 00 00 00 ; end

;    References
;      SCRO - Global Reference: ACRE - Placed Creature [0006A775] <DogmeatREF>
;      SCRO - Global Reference: Player [00000014]


Присоединяйтесь. Улыбка

Да. Совсем небольшой апдейт по Output Codes:
19 00 00 00 -- endif
« Last Edit: 23 November 2008, 13:47:10 by Wasteland Ghost »
Jordan
Пользователь
Posts: 416

476228895
Re: Скрипты FO3
« Reply #1 on: 19 November 2008, 22:57:39 »

Quote
    1D 00 00 00 ; start
   
    10 00 06 00 [00 00] [11 00] [00 00] ; begin GameMode
   
    1C 00 [01 00] 9E 10 [ [05 00] [ [01 00] [72 02 00] ] ] ; DogmeatREF.PlaceAtMe player

    11 00 00 00 ; end

;    References
;      SCRO - Global Reference: ACRE - Placed Creature [0006A775] <DogmeatREF>
;      SCRO - Global Reference: Player [00000014]


Шокирован Шокирован Шокирован  Непонимающий Непонимающий Непонимающий

Это чего такое то? Скрипт?

Исходник скрипта выглядил бы так?

start
begin GameMode
DogmeatREF.PlaceAtMe player
end

Что то я все равно не могу понять как скрипты то писать. В нулях и единицах?

Можешь подробнее прокоментировать скрипт? И еще сделать пару примеров и тоже их плдробно прокоментировать.

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Fakels
Пользователь
Posts: 337

Модный геймер


Re: Скрипты FO3
« Reply #2 on: 20 November 2008, 00:19:32 »

Quote from: Jordan on 19 November 2008, 22:57:39
как скрипты то писать. В нулях и единицах?
А как ты хотел! Улыбка
Что не помнишь когда начали ковырять старый фол тоже были нули и единицы (то есть коды), погоди щас кулибины че нибудь придумают.

"Необходимо учесть все условия и тогда - нет проблем"
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Скрипты FO3
« Reply #3 on: 20 November 2008, 00:52:30 »

Это скрипт в опкодах. Улыбка Нормального компилера в ближайшее время не ждите. Если, конечно, гуру не купят Ф3. Улыбка

По поводу комментариев -- прошу по ссылкам. Подмигивающий
Jordan
Пользователь
Posts: 416

476228895
Re: Скрипты FO3
« Reply #4 on: 20 November 2008, 16:47:18 »

Пара вопросов.

Чтал документацию по ссылкам выше. Так вот.

1C 00 [01 00] 9E 10 [ [05 00] [ [01 00] [72 02 00] ] ] ; DogmeatREF.PlaceAtMe player

Искал опкод PlaceAtMe он 1025 а его в строке нет. Или я не понял. Что такое в скобочках?

Покажите хоть один пример с подробными коментариями, что бы хоть суть понять как скрипты писать. Кто разобрался?

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Скрипты FO3
« Reply #5 on: 20 November 2008, 18:47:09 »

Потому что там не placeatme, а moveto. Улыбка

Исправлено. Везде.

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

PS Если реально хочешь разобраться -- сначала почитай про программирование в машинных кодах.
« Last Edit: 20 November 2008, 18:52:13 by Wasteland Ghost »
Jordan
Пользователь
Posts: 416

476228895
Re: Скрипты FO3
« Reply #6 on: 20 November 2008, 20:16:03 »

Почитал я о машинных кодах. Посмотрел на эти мошинные коды. Там 1001100011000 а потом увидел двойку и понял что нужно отдохнуть. Улыбка

Так вот вопрос

1C 00 [01 00] 9E 10 [ [05 00] [ [01 00] [72 02 00] ] ] ; DogmeatREF.MoveTo player

Получается MoveTo это  9E 10 но в опкодах написано 109E, а это [ [05 00] [ [01 00] [72 02 00] ] ] аргументы. Я правильно понял или нет?

А что в этой строке player и DogmeatREF.?

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Jordan
Пользователь
Posts: 416

476228895
Re: Скрипты FO3
« Reply #7 on: 20 November 2008, 22:11:59 »

Так чуть разобрался

1D 00 00 00 это номер скрипта получается номер скрипта 29
В документации написано
ScriptName    1D 00 00 00    Length of a scriptname is always 00 00

10 00 06 00 [00 00] [11 00] [00 00] ; begin GameMode
Begin GameMode    10 00 06 00 00 00 [BlkLen(4)]    06 00 is the [ModeLen].
Но я так и не понял что за скобки и для чего они, и что такое вот это [11 00] [00 00]

1C 00 [01 00] 9E 10 [ [05 00] [ [01 00] [72 02 00] ] ] ; DogmeatREF.PlaceAtMe player
9E 10 это MoveTo, а [72 02 00] это player, но это что [05 00] [ [01 00]

11 00 00 00 это end

1C 00 [01 00] это call
В документации написано
[reference].    1C 00 [Index(2)]    For a reference call (eg: player.[Function]) the index is a 1-based value into a SCRO subrecord in the script which holds the formid of the reference. For example, 1C 00 01 00 is the first SCRO subrecord.

Если неправильно поправьте.
« Last Edit: 20 November 2008, 22:14:10 by Jordan »

Воспрянет Россия, из праха отцов
Расправятся крылья, миллионов сердец
Поднимут все головы и грудью вздохнут
И громка скажут, что пришли
Мы пришли, со столетней войны
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Скрипты FO3
« Reply #8 on: 21 November 2008, 13:33:20 »

Скобки -- для меня. Улыбка Можно и без них.

Порядок записи чисел. Здесь применяется [L][H] -- сначала пишется младший байт, потом старший.

1D 00 00 00 -- это общий для всех скриптов заголовок. Потом идут обработчики: код + размер данных в байтах. Аналогично работает любая операци внутри обработчика: код операции + размер данных в байтах. Коды операций можно найти по ссылкам п.1 и п.2.

Дальнейший ликбез по программированию -- в соответствующем разделе. ОК?
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Скрипты FO3
« Reply #9 on: 23 November 2008, 11:45:04 »

Отличная новость: FOMM теперь умеет компилировать скрипты! Правда, пока только небольшие и простенькие, но уже стало легче дышать. Улыбка
Oleg
Модератор
Posts: 547


Re: Скрипты FO3
« Reply #10 on: 23 November 2008, 11:54:14 »

эээ он с 1С версией дружит? Глупый наверное вопрос... Улыбка

За сим прощаюсь, Олег.
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Скрипты FO3
« Reply #11 on: 23 November 2008, 13:45:51 »

Дружит-дружит. Улыбка Он же движок и перевод не трогает.
Oleg
Модератор
Posts: 547


Re: Скрипты FO3
« Reply #12 on: 24 November 2008, 11:41:41 »

Еще вопрос, а есть вот это на русском?
Quote
1. Опкоды. Они же FuncCode в документе №2.
2. Формат записи SCPT. Интересен всем, особенно наличием Output Codes.

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

За сим прощаюсь, Олег.
Wasteland Ghost
Администратор
Posts: 869

Маленькое Злое Привидение


Re: Скрипты FO3
« Reply #13 on: 24 November 2008, 11:46:07 »

Нету.
Oleg
Модератор
Posts: 547


Re: Скрипты FO3
« Reply #14 on: 24 November 2008, 20:59:06 »

а чем dds смотреть?
стоп вопрос снят...
если кому нуно то http://www.tesnexus.com/downloads/file.php?id=8698
« Last Edit: 25 November 2008, 23:55:55 by Wasteland Ghost »

За сим прощаюсь, Олег.
Pages: [1] 2 3 |   Go Up