Полная Версия: (sfall) дополнения
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25
Crafty
Хочу поделиться с общественностью :)

Улучшений и исправлений багов движка намного больше чем перечислено в этом посте!

- Расширение функциональности [пере]назначения книг в Books.ini: добавлена возможность повышения и других скиллов при чтении книги.
- Автоматическая перезарядка оружия в обеих руках после окончания боя.
- Перезарядка оружия или использование предмета (не оружия) в активной руке по хоткею.
- Включение отображения свободного веса/объёма в окне обмена.
- Автоматическое одевание сопартийцем лучшей брони после закрытия окна обмена.
- Движковый "NPC Armor" мод.
- Русский язык при вводе имени игрока и описания к сохраняемой игре.
- Отключение абуза отрицательных эффектов от наркотиков при чтении книг, получении перков и повышении скиллов.
- Складывание вместе одинакового оружия без патронов.
- Изменение дистанции штрафа для перка Weapon Scope Range|Оптический прицел.
- В окне настроек сопартийца в поле "Здоровье" в скобках показывается его текущий уровень, а в поле "ОД" класс брони.
- Расширена функциональность кнопок "Лучшее оружие" и "Лучшая броня" в настройках сопартийца — если оружие/броня одеты, то нажатие на кнопку их снимает.
- Переработан и расширен функционал кнопок прокрутки квестов (UseScrollingQuestsList) и добавлены клавиши для навигации (1-4) в пипбое.
- Добавлена переменная ReloadReserve, с помощью которой можно менять механизм перезарядки оружия перетаскиванием патронов на это оружие: -1 = оригинал с навязчивым окном для ввода количества пачек; 0 = использовать все имеющиеся патроны. 1 и больше = резервные пачки патронов, если имеющееся количество пачек патронов больше заданного резерва, то будут использованы все патроны за вычетом резерва; если меньше или равно резерву, то будет использована только одна пачка патронов.
- Исправление читеринга с кнопкой "A".
- Можно отключить хоткеи для перехода по неоткрытым зонам при выборе зоны на карте города.
- Возможность использования больше одного слота для быстрого сохранения (F6).
- Доработан контроль персонажей в бою (ControlCombat).
- Можно продавать ранее использованный счётчик Гейгера.
- При выводе в окне монитора количества полученных очков опыта после убийства врагов/воровства/случайных встреч на карте учитывается бонус от взятого перка 'Прилежный ученик'.

Исправлен баг подсчёта веса вещей у цели во время обмена/воровства (не учитывается вес одетой на цели брони и оружия). Исправлен баг с множественным снятием брони сопартийца через диалог, если у него в сумке есть такая же броня, а также потери класса брони равного получаемому от этой брони при получении сопартийцем уровня. Исправлено два бага с кликабельностью в пипбое. Исправлен "Too Many Items Bug". Исправлено два бага при использовании инвентаря игрока, что теперь позволяет заряжать оружие в инвентаре перетаскивая патроны на это оружие. Также можно перетаскивать стимпаки и прочую химию из инвентаря на картинку игрока с эффектом использования. Неиспользованный перк теперь не "пропадает" после получения следующего перкового уровня (можно "копить" перки). Исправлено несколько багов связанных с наркотиками, привыканием к ним и получением уровней у сопартийцев когда они под наркотическими эффектами. Исправлен баг "NPC turns into a container", "Unlimited Ammo bug" и ещё куча других менее известных багов.

Версия для Fallout 2.

Версия для Fallout 1.

Версия для BIS Mapper.

Также архивы доступны в Fallout Database камрада Drobovik'а.
Drobovik
Merci Beaucoup, Crafty

Чего еще у тебя есть интересного? :)
Crafty
Потихоньку заканчиваю обрабатывать в IDA fallout2.exe для более читабельного вида, ну чтобы имена процедур соответствовали именам аналогичных процедур из mapper2.exe (sub_blabla -> obj_use_book_ и тому подобное) — странно что за столько лет никто из разбиравших движок этого не сделал :( Но это к игре/sfall особенного отношения не имеет ;)

А так ещё повесил перезарядку оружия в активной руке на хоткей (r|R) также без смены режима стрельбы, но как и подозревал (RP не установлен был) возникнет конфликт с Party Orders add-on (в нём клавиша R = Regroup), поэтому сейчас нужно решить какую клавишу использовать для перезарядки.

Edit: Перевесил на w|W :-p
Crafty
Теперь после окончания боя перезаряжается оружие в обеих руках :)
Crafty
Добавил возможность отображения свободного веса вместо веса перекладываемых вещей при обмене. Заодно исправил "фичу" движка, при которой во время обмена (и только здесь и во время воровства) подсчёт веса вещей у цели не учитывает вес брони и оружия одетой на цели. Из-за чего можно передать цели больше вещей на +(вес одетой брони и оружия), но после закрытия обмена получать сообщения о перегрузке ("%s несет на себе слишком много").

Косметическое, да к тому же не очень информативное, дополнение — в окне настроек сопартийца в поле "Здоровье" в скобках показывается его текущий уровень.

PS. Когда разбирался с "фичей", так возникла забавная идея — при открытии окна обмена разоружать и снимать броню с сопартийца, чтобы они были доступны в его инвентаре, а при закрытии окна обмена одевать броню и оружие, но уже с вызовом движковых функций выбора лучшего оружия и брони. Такое себе повышение "ИИ" сопартийца ;)
Drobovik
Отличная работа, Crafty.

Рад видеть, что не перевелись еще умельцы в русских селеньях:)

Не забудь потом выставить результы своих нововведений.
Crafty
Спасибо :)

В первом посте по ссылкам версия с последними изменениями :-p

Относительно идеи с снятием/одеванием экипировки при обмене — сразу не сделал из-за подводного камня: к примеру Маркус может использовать пулемёты и энергетическое оружие, которые вcё равно попадают в категорию "стрелковое" — если я опасаюсь его умения использовать пулемёты, то забираю у него пулемёт и даю в руки турбоплазменную винтовку, но в варианте автоматической экипировке после обмена он всяко будет хватать (это теория, под рукой его нет :)) в руки пулемёт если он у него в сумке. Поэтому идея и забавная, хотя можно без проблем сделать её только для брони.
The Master
Господа, ваше появление всегда неожиданно и всегда приятно.

Ждём новых интересных штук!)
Phobos
А нет желания сделать пулл реквест с фичами которые подошли бы к "официальному" sfall?

Такие вещи как 1, 2 и 3 лучше реализовывать с помощью скриптов. Так это просто нагромождение и без того перегруженного хаками кода sfall. Но можно было бы добавить функцию скриптовую для перезарядки (хотя опять же это реализуется скриптами).

Раз есть желание ковырять движок и писать хаки, может стоит посмотреть в сторону более нужных вещей которые сейчас никак не сделать, например нормальные элементы интерфейса? (одна из проблем это невозможность сделать полноценный "модальный" режим и блокировать клик на карту если игрок кликнул на окне)

По поводу IDA, могу скинуть IDC файл в котором я переименовал множество функций в их реальные имена, в процессе ковыряния движка за последние несколько месяцев.

PS: я планирую переключиться полностью на falltergeist, поток новых фич от меня прекратится
Crafty
Вау, вау :) Что есть "пулл реквест с фичами которые подошли бы к "официальному" sfall?"?

Про реализацию с помощью скриптов ты мне писал, когда я просил расширить функционал Books.ini, да беда только что я скриптовый язык не знаю, а поскольку идеи создания аддона/сюжета у меня нет, то и не вижу смысла изучать его просто ради изучения. Тоже самое относится и к "более нужным вещам" — я не в теме и просто могу не понять о чём речь и в какую сторону копать :(

В третьем посте есть ссылка на архив (иногда обновляю) с fallout2.idb для версии 6.5 и fallout2.idc подправленный для более ранних версий (проверял на 5.0 и 6.1) — из 4363 процедур "безымянными" остались 36. Кроме того описаны структуры, приличное количество констант и названий переменных :-p
Phobos
ОГО, где ты столько инфы нарыл? Сколько лет ты составлял эту базу?) Имена функциям вручную назначал?

Ну я тебе подсказал чем можно заняться. Над интерфейсом нужно поработать. Плюс у меня были идеи по поводу расширения AI, но опять же в плане вынести часть логики в скрипты. Хотел сделать систему укрытий и заставить врагов использовать групповую тактику.

А вообще ковырять движок на мой взгляд не слишком перспективно сейчас, ввиду того что активные мододелы практически вымерли как динозавры. Вот новый движок разжег бы огонь творчества, ИМХО. Любые фичи запиливать можно будет без адских хаков, а скрипты писать на современном языке. Не желаешь помочь проекту falltergeist? (C++, SDL)
Crafty
Сначала в два окна переименование процедур/переменных (Ctrl-Ins/Shift-Ins) с анализом содержимого, ну чтобы быть уверенным что переименовываемое в fallout2 действительно соответствует аналогу из mapper2 (который обработан idc от Abel). Потом анализ и добавление имён из MacOS списка функций от Kanhef (main_*, MVE_* и что-то ещё). Потом ещё совсем немного из fallout2.idc от Abel. Потом добавление комментариев из EngineDocs от Ray, ещё комментарии из архивов форума и сайта TeamX и других мест. Ну и своего чутка — структуры, константы и комменты. В общем с миру по нитке, за пару недель управился ;)

А вот с falltergeist я, к сожалению, не помощник — даже то, что раньше знал уже забыл.
Я себе мозг сломал вспоминая паскаль пока делал простенькую программку для форматирования idc из 6.5, чтобы этот idc подхватывался предыдущими версиями иды (ну там "SegRegEx" поменять на "SegReg" и отрезать последний параметр или заменить все "SetType" в теле которых есть "__usercall" на "SetFunctionCmt" и тому подобное. И от результата рыдаю ;(
Phobos
Не совсем понял почему ты не можешь помочь с falltergeist, если ковыряешь sfall значит тянет на С++, или тебя именно хардкорные хаки привлекают?) Чтож, каждому свое я полагаю.

Твоя работа по этой базе похвальна, а с какой целью ты все это делал, если не секрет?
Было бы круто конечно еслиб ты комментарии писал только на английском языке. Думай о потомках так сказать. А то TeamX за годы накопили столько знаний а потом свалили в небытие не успев должным образом эти знания применить. И никакого толку от них нет на непонятном русском :)

ЗЫ: В моей базе есть некоторые структуры которых нет у тебя.
Crafty
"хотя мои познания в C[++] очень поверхностны, да и не писал я ничего больше 10 лет" © :-p

Цель простенькая — удобства ради, себе и людям. Ну или время так убивал :-p

А свою базу (или idc) конечно покажи ;)

Отправлено: 14 фев 15 20:19
Всё же решил добавить идею с бронёй — при открытии окна обмена снимается броня с сопартийца и появляется в инвентаре, а после закрытия окна обмена одевается лучшая броня из доступных. Также исправил забавный некритичный баг — если в инвентаре сопартийца количество штук одеваемой брони больше одного, то снимать через диалог ("поговорим об оружии и снаряжении -> Сними броню") приходится это количество штук брони.

Ещё расширил функциональность кнопок "Лучшее оружие" и "Лучшая броня" в настройках сопартийца — теперь если оружие/броня одеты, то нажатие на кнопку их снимает :-p
Phobos
QUOTE
Ещё расширил функциональность кнопок "Лучшее оружие" и "Лучшая броня" в настройках сопартийца — теперь если оружие/броня одеты, то нажатие на кнопку их снимает :-p


А вот это полезная фича. Ты используешь систему контроля версий при разработке? Стоило бы все-таки форкнуть проект на Sourceforge или создать на github. Ты же не из этих, которые считают свой код невероятной ценностью и отказываются выкладывать в общий доступ? ;)
Crafty
Так в первом посте ссылка на исходники :-p (перезалил их, а также dll — поправив уже свой баг после вчерашнего добавления).

А контроль версий, SF и github — слишком уж масштабно для простеньких ассемблерных вставок.
Вообще если считаешь что какая-то идея заслуживает внимания и есть желание, то добавь в официальный sfall ;)
Fakeman
Помогите со сборкой и кодом sfall.
Хочу реализовать и добавить секцию в ini файл с возможностью прописать размер exe файла(fallout2) по аналогии как реализовано с ExtraCRC в модерской версии сфала.
В общем код типа вставил не знаю правильно ли, и будет ли оно работать... :) теперь необходимо это собрать, подскажите чем и как правильно это все собрать.
ниже я пометил где вставил новый код.
CODE
void CRC(const char* filepath) {
char buf[512];
HANDLE h=CreateFileA(filepath, GENERIC_READ, FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
if(h==INVALID_HANDLE_VALUE) Fail("Cannot open fallout2.exe for CRC check");
DWORD size=GetFileSize(h, 0), crc;
if(size!=ExpectedSize) {

////////// ВСТАВИЛ КОД ////////////
#ifdef TRACE
DWORD extraSize=GetPrivateProfileIntA("Debugging", "ExtraSize", 0, ".\\ddraw.ini");
if(size!=extraSize) {
#endif
///////////////////////////////////////
 sprintf_s(buf, "You're trying to use sfall with an incompatible version of fallout\nWas expecting '" TARGETVERSION "'\n\nfallout2.exe was an unexpected size. Expected 0x%x but got 0x%x", ExpectedSize, size);
  Fail(buf);

/////////// ВСТАВИЛ КОД //////////////
#ifdef TRACE
 }
#endif
//////////////////////////////////////////
}
BYTE* bytes=new BYTE[size];
ReadFile(h, bytes, size, &crc, 0);
crc=crcInternal(bytes, size);

bool matchedCRC=false;
#ifdef TRACE
DWORD extraCRC=GetPrivateProfileIntA("Debugging", "ExtraCRC", 0, ".\\ddraw.ini");
if(crc==extraCRC) matchedCRC=true;
#endif
for(int i=0;i<sizeof(ExpectedCRC)/4;i++) {
 if(crc==ExpectedCRC[i]) matchedCRC=true;
}
if(!matchedCRC) {
 sprintf_s(buf, "You're trying to use sfall with an incompatible version of fallout\nWas expecting '" TARGETVERSION "'\n\nfallout2.exe had an unexpected crc. Expected 0x%x but got 0x%x", ExpectedCRC[0], crc);
 Fail(buf);
}

CloseHandle(h);
delete[] bytes;
}
Crafty
Взять что-то вроде VS2010ExpressRUS.iso и установить Visual C++ 2010, запустить и загрузить (Файл->Открыть->Решение или проект...) ddraw.vcxproj. После загрузки в конфигурации решения (выпадающее меню наверху) поменять "Release" на "Trace" и нажать F7. Получить на выходе (предварительно создав "C:\Games\Fallout2\") готовый dll :-p Ещё придётся сначала поставить DirectX SDK и подбрасывать из него нужные файлы (не помню детали).
Fakeman
QUOTE
Взять что-то вроде и установить Visual C++

а есть ли программы компиляторы отдельно от пакета? а то весь пакет не хочется что-то устанавливать, да и полностью оно мне не нужно будет т.к. толком не умею писать на С.
Crafty
В промежутке между реализацией идеи с одеванием брони и расширением функциональности кнопок я задумался — при нажатии в окне настроек сопартийца на кнопку выбора лучшего оружия, если оно одевается, то меняется анимация в картинке внизу, а почему для брони это не работает?
Сделал изменение анимации для брони и получил аналог скриптового "NPC Armor" мода, который дополнительно умеет менять внешний вид сопартийца ещё и в картинке. Начал тестировать и, опаньки, неожиданный побочный эффект — после одевания брони и изменения анимации сопартийцы "учились" пользоваться разными видами оружия. Поглядел подробнее и понял, что возможности сопартийцев определяются не какой-то хитрой таблицей с заданными параметрами для разрешённого оружия, а простым наличием анимации: есть анимация — умеет пользоваться оружием, нет — значит нет. Поэтому если после одевания брони я меняю анимацию на ту, которая указана в fid брони, то меняю и правила, а это провал и я отказался от идеи (также как и желания устанавливать разновидности скриптового "NPC Armor" мода).

Однако, спустя какое-то время я вспомнил что в RP (Restoration Project) для некоторых сопартийцев была сделана своя анимация с одетой бронёй и решил взглянуть. Действительно — анимация своя, а правила не менялись (к слову, стоит отметить что для Advanced Power Armor [MKII] и [Bridgekeeper's] Robes анимацию не сделали :( — Сулик одевает Мантию Стража моста и может использовать пулемёт). И я решил вернуться к идее движкового "NPC Armor" мода, но уже с использованием дополнительного ini-файла, в котором описаны сопартийцы и FID'ы для разной брони.
Результат доступен по ссылке из первого поста. В качестве примера в Armor.ini используются FID'ы из RP, а потому практическую пользу можно увидеть только при установленном RP.

И продолжая тему [бес]полезных косметических дополнений — теперь в окне настроек сопартийца в поле "ОД" в скобках показывается его класс брони (использовал для отладки, но решил оставить). Второе дополнение не совсем косметическое — как известно, неиспользованный перк "пропадает" после получения следующего перкового уровня. Теперь можно придержать, к примеру, перк с 9 уровня, чтобы на 12 уровне взять 2 перка.

Отправлено: 19 фев 15 23:20
2Fakeman: Тут я не помогу, сам не в восторге что пришлось ставить целый пакет. Ну и не забывай что с Trace-компиляцией ты получишь моддерскую aka отладочную версию.
Шутки ради можешь вместо компиляции просто патчить уже готовую dll'ку на предмет отключения проверки размера exe-файла или просто менять проверяемый размер exe-файла (то что ExpectedSize=0x00122800).
Fakeman
QUOTE
Поглядел подробнее и понял, что возможности сопартийцев определяются не какой-то хитрой таблицей с заданными параметрами для разрешённого оружия, а простым наличием анимации: есть анимация — умеет пользоваться оружием, нет — значит нет.

Ну так это давно известно, еще со времен "NPC Armor" мода ;)
Твой вариант реализации намного лучше чем громоздкий скриптовый, так что как альтернатива нужная вещь.

QUOTE
Шутки ради можешь вместо компиляции просто патчить уже готовую dll'ку на предмет отключения проверки размера exe-файла или просто менять проверяемый размер exe-файла (то что ExpectedSize=0x00122800).

так после каждой новой версии сфала меняются же смещения, или нет.
и НЕХедитором константу(00122800) в dllке чет не находит, но есть там пять адресов со значением 00281200, попробую потом похимичить.

----------
Еще вопрос возможно ли через sfall переопределить PIDы итемов для заправки автомобиля, т.е. не патронами заряжать а чем-то другим к примеру, это можно конечно и без сфала замутить но тогда к описанию итемов будет приписаны характеристики патронов, что не айс....
Crafty
QUOTE
так после каждой новой версии сфала меняются же смещения, или нет.
Да всяко быстрее будет пропатчить новую версию, чем её же самому пересобирать :-p

QUOTE
НЕХедитором константу(00122800) в dllке чет не находит, но есть там пять адресов со значением 00281200, попробую потом похимичить.
Угу, расположение байт меняется, и искать нужно 00281200, и хорошо если hex-редактор видит код и понимает библиотечные функции (я hiew по-старинке люблю), тогда сразу понятно что перед первой проверкой нужной константы был вызов функции получения размера файла и это то место.

QUOTE
Для sfall версии 3.5.7, размер файла 407.040 байт:
Отключение проверки на размер файла:
459BC:  74  заменить на  EB
Отключение проверки crc:
45A15:  74  заменить на  EB

Или можно сразу убить двух зайцев, отключив вызов функции проверки размера файла и crc:
369DF: E8 9C  заменить на  EB 03


Отправлено: 20 фев 15 02:50
QUOTE
Еще вопрос возможно ли через sfall переопределить PIDы итемов для заправки автомобиля, т.е. не патронами заряжать а чем-то другим к примеру, это можно конечно и без сфала замутить но тогда к описанию итемов будет приписаны характеристики патронов, что не айс....
В движке "зашито" использование PID_SMALL_ENERGY_CELL и PID_MICRO_FUSION_CELL (в obj_use_power_on_car_) для зарядки машины, поэтому нужно хакать.

Через скрипты (car_give_gas()???), а тем более скриптовые возможности sfall, лучше Phobos расскажет.
Phobos
Движковый Armor MOD полезная штука. Ты сделал в виде отдельного модуля?
Все таки, будь человеком, выложи исходники своего форка на github или sourceforge. Каждый раз качать архив чтобы посмотреть что ты там добавил — жутко неудобно.

И еще народ, настоятельно прошу использовать нормальный стиль программирования, юзайте отступы как в остальном коде и ставьте пробелы до/после скобок, вокруг операторов и т.п.

QUOTE
Еще вопрос возможно ли через sfall переопределить PIDы итемов для заправки автомобиля, т.е. не патронами заряжать а чем-то другим к примеру, это можно конечно и без сфала замутить но тогда к описанию итемов будет приписаны характеристики патронов, что не айс....

Посмотри скрипт машины. Там щас на use_obj_p_proc висит починка и апгрейд, можешь попробовать добавить если используется нужный предмет, делать script_overrides и заправлять вручную — в скриптах есть команда car_give_gas.
Если не получится, тогда юзай хук скрипт useobjon из последней версии sfall (смотри hookscripts.txt в modderspack — какие там параметры и что возвращать), возможно он на более высоком уровне работает.

PS: если нужно изменить CRC проверку, это можно сделать в debug версии sfall, смотри настройку ExtraCRC в секции Debugging.

На самом деле немного обидно когда интересные вещи мутят втихаря на каком-то левом форуме (из разряда пилить свой движок с нуля, когда уже есть несколько аналогичных проектов...). Думаю стоит создать тему на nma, там многим будет интересно (заодно узнаете от других насколько полезны ваши дополнения).
Fakeman
QUOTE
в скриптах есть команда car_give_gas.
Если не получится, тогда юзай хук скрипт useobjon

вай, вай моя склероз совсем забыла про give gas :)
а в паре с хуком вообще и проблема решается.

QUOTE
если нужно изменить CRC проверку, это можно сделать в debug версии sfall, смотри настройку ExtraCRC в секции Debugging.

Почему бы в debug версии официально не добавить и отключение проверки на размер? вот ты же там делаешь какие-то правки кода. вот такой небольшой намек :)
Phobos
Правки кода по идее должны делаться в исходниках sfall, после чего тот компилится. А ЕХЕшник остается всегда оригинальным, только так можно гарантировать хоть какую-то стабильность работы.
Crafty
QUOTE
Думаю стоит создать тему на nma, там многим будет интересно (заодно узнаете от других насколько полезны ваши дополнения).
Если бы мой английский был лучше чем "читаю и перевожу со словарём, с людьми пока стесняюсь" ©, то я бы сразу туда и пошёл :-p

Началось всё с того, что вышла Olympus 2207, в которой добавили особенность "Механическая память", но поскольку реализовали это через скрипты, то и вышло это криво — создавая нового персонажа с взятой "памятью" нельзя было в игре получить нужные значения основных характеристик (S.P.E.C.I.A.L.).
Настраивая ddraw.ini под себя я видел Perks.ini, а потому скачал modderspack и убедился что "память" лучше сделать через новую версию sfall, о чём и поделился в комментариях.

Изучая остальные ini-файлы из modderspack, в частности Books.ini, мне пришла в голову идея: "При чтении книги в игре увеличивается только один скилл и на мой взгляд это не всегда справедливо. Почему, к примеру, в журнале Guns & Bullets не может быть статьи о пулемётах, описание взрывчатки или курса рукопашного боя? :)" ©.
Я обрадовался когда узнал что смогу изложить свою идею, потому что phobos2077 — наш человек ;) Зарегистрировался на nuclear-city.com, но письмо с активацией аккаунта не получил (прошли сутки), поменял почту и всё равно не получил письмо (+сутки). Ещё раз сменил почту и ожидая письмо начал воплощать в жизнь идею с расширением функциональности Books.ini. Понятно, что и третье письмо с активацией не пришло, но я догадался написать личное письмо через Sourceforge уже даже с готовым вариантом. Идея не прошла.

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

Отправлено: 20 фев 15 23:45
PS. Fakeman просит добавить в официальный sfall возможность переопределения размера exe-файла при проверке, аналогично как с ExtraCRC.
Legend
QUOTE
Зарегистрировался на nuclear-city.com, но письмо с активацией аккаунта не получил (прошли сутки), поменял почту и всё равно не получил письмо (+сутки). Ещё раз сменил почту и ожидая письмо начал воплощать в жизнь идею с расширением функциональности Books.ini. Понятно, что и третье письмо с активацией не пришло, но я догадался написать личное письмо через Sourceforge уже даже с готовым вариантом. Идея не прошла.

Подтвердила активацию в админке. Должно прийти письмо.
P.S. Если будут какие-то вопросы по форуму, а до Vault_13 не достучаться, то смело пишите мне. Разберёмся. ;)
Phobos
На мой взгляд хороший повод изучить как работают системы контроля версий и open-source разработка ;-)
Fakeman
QUOTE
Правки кода по идее должны делаться в исходниках sfall, после чего тот компилится.

Так я тебе и предлагаю добавить кусок кода в исходники Sfall'a, чтобы была возможность в модерской версии обойти проверку на размер ехе файла.
или на sourceforge.net с ником Phobos2077 это не ты)
Phobos
Я не вижу смысла в этом изменении. В Sfall все завязано на смещениях в определенной версии ЕХЕшники. Подсовывать другой ЕХЕшник или править прямо в нем это напрашиваться на неприятности.

Если ты хочешь хаков без перекомпиляции sfall, для этого есть скриптовые команды write_byte, write_short, write_int...

Изучайте, товарищи, скрипты.
Fakeman
QUOTE
Я не вижу смысла в этом изменении.

Ну нет так нет, что-ж будет пользоваться патченным сфалом. :)
Phobos
Использовать скрипты религия не позволяет? Я могу дать ссылку на удобный редактор со встроенным компилятором, там все в один клик делается, сложного ВООБЩЕ ничего нет.
Могу даже подсказать что да как.

В принципе можно добавить вариант чтобы sfall проверял только размер файла, но только в дебаг-режиме.

@Crafty: а можешь вынести клавишу перезарядки в ddraw.ini (dx scancode)?
Думаю тоже кандидат на добавление в основную версию. Правда все юзают Party Orders addon и он уже почти всю клавиатуру занял ))
Fakeman
QUOTE
Использовать скрипты религия не позволяет? Я могу дать ссылку на удобный редактор со встроенным компилятором, там все в один клик делается, сложного ВООБЩЕ ничего нет.

Да какие еще скрипты, я говорю о том что если размер exe'шника(fallout2) отличный от оригинала то Sfall(игра) не запускается и выскакивает ошибка...
*уже начинаю биться головой об стол* :)

Пользуюсь F-Geck'ом от Технократа, хватает за глаза.
Но ссылку давай посмотрим, что там.

QUOTE
В принципе можно добавить вариант чтобы sfall проверял только размер файла, но только в дебаг-режиме.

так надо наоборот чтобы не проверял!
Т.е. добавить в sfall возможность переопределения размера exe-файла при проверке, аналогично как реализовано с ExtraCRC в модерской(дебаг) версии.
Посмотри код который я выкладывал на 2й странице там пару строчек кода добавлено в исходный код Sfall и ты поймешь о чем я тебе толкую.
Crafty
QUOTE
@Crafty: а можешь вынести клавишу перезарядки в ddraw.ini (dx scancode)?
Если честно хз как это совместить ;(
Изначально так и задумывалось — в ReloadWeaponHotKey указывать сканкод для клавиши перезарядки, но из-за того что хук в game_handle_input_ (который получает готовую клавишу), пришлось в коде делать проверку на клавишу, а ReloadWeaponHotKey стал переключателем.
Phobos
QUOTE
Если честно хз как это совместить ;(

Просто посмотри как аналогичные функции реализованы в sfall (подсветка предметов на земле).

@Fakeman: лови https://yadi.sk/d/KN5yiEFbeo6cW
Ты можешь по человечески объяснить что за ЕХЕшник у тебя который другого размера и зачем тебе тогда нужен sfall если в нем смещения все заточены только под 1.02d US. Максимум может быть если твой ЕХЕшник уже пропачтен например какими-то патчами старыми то есть смысл только на размер проверку оставить, но опять же все патчи о которых я знаю уже внедрены в sfall. Вся суть проекта в том чтобы не трогать ЕХЕшник на диске...

Fakeman
QUOTE
Ты можешь по человечески объяснить что за ЕХЕшник у тебя который другого размера

скачай олимп/неваду и посмотри какие там exe'шники.
ладно не парься, как сказал Crafty быстрее будет нех-редактором sfall'овскую dll'ку крякнуть, чем дождаться пока появится возможность в sfall'е отключать эту проверку через ini файл. :)

QUOTE
Вся суть проекта в том чтобы не трогать ЕХЕшник на диске...

Я это прекрасно понимаю, но я то тут причем, если авторы своих модов изменяют оригинальные екзешники.

----------
Все же имхо редактор F-Geck технократа на порядок удобнее чем Sfall'овский, благодаря древовидной левой панели куда можно вносить все команды включая сфаловские или же свои макросы, так же parser легко настраивается.
Phobos
Да уж.. таких мододелов к стенке ставить нужно :) Хардкодят какуюто магию в ЕХЕшник, поди и исходников никаких нет. Авторские права, самолюбие, все дела...

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


https://yadi.sk/d/nnid4MPOesDxZ — билд без проверки размера ехешника, на основе последних исходников с репы. (юзай ExtraCRC)

По поводу редактора — ну в sfall-овском зато есть автозавершение кода, он уже знает все скриптовые команды и все макросы. И парсер тоже есть с переходам к местам использования/определения и т.п.
Fakeman
QUOTE
Да уж.. таких мододелов к стенке ставить нужно :) Хардкодят какуюто магию в ЕХЕшник, поди и исходников никаких нет.

)))

QUOTE
ну в sfall-овском зато есть автозавершение кода. И парсер тоже есть с переходам к местам использования/определения и т.п.

вот сделают такую-же панельку, тогда будет супер. :)


Crafty
QUOTE
Просто посмотри как аналогичные функции реализованы в sfall (подсветка предметов на земле).
Твоя правда ;) Перенёс ещё ReloadWeaponHotKey из блока Misc в блок Input в ini-файле.

QUOTE
Вопрос в том в каком месте у них отличается ЕХЕшник. Если чтот дописано в конец то по идее теоретически можно юзать sfall но без каких-либо гарантий от непонятных вылетов.
Неваду ещё не глядел (жду релиз), а экзешник Олимпа — это 1.02d US с добавленными (чем-то вроде Resource Hacker) в конце ресурсами и последний sfall (с отключённой проверкой размера) отлично с ним работает.
The Master
QUOTE
Да уж.. таких мододелов к стенке ставить нужно :) Хардкодят какуюто магию в ЕХЕшник, поди и исходников никаких нет. Авторские права, самолюбие, все дела...

Хэй хэй! Нет исходников, люди занимались реверсом, да затихло это всё. Через sfall можно не всё, а даже если бы и можно было — не так много среди моддеров кодеров на плюсах.
На тот момент (да и сейчас) редактировать псевдокод лично мне гораздо проще, чем костылить через sfall. Данные для необходимых изменений у меня есть, остальное вообще по боку — авторские права у авторов, самолюбие не позволяет пилить гвозди топором.

Phobos
QUOTE
с добавленными (чем-то вроде Resource Hacker) в конце ресурсами

Тогда я знаю как можно проверять целостность ЕХЕшника (альтернативный вариант), смотреть какую-нибудь известную строковую константу по определенному смещению. Если она есть значит вероятно ЕХЕшник тот.

QUOTE
Через sfall можно не всё, а даже если бы и можно было — не так много среди моддеров кодеров на плюсах.


Через sfall можно все, ИМХО. Уметь кодить на плюсах не нужно, смотришь как сделаны другие хаки и просто копипастишь хук, а дальше пиши на своем любимом ассемблере (хотя мне сложно представить модеров которые боятся плюсов но не боятся ASM.. это чтото странное).

PS: немного не в тему но к слову о движке, есть ли какой-нибудь форум где еще тусят русскоговорящие мододелы?
jordan
QUOTE

PS: немного не в тему но к слову о движке, есть ли какой-нибудь форум где еще тусят русскоговорящие мододелы?


Приветствую. Последний оплот так сказать, это фол ру Заинтересовался вашим двигом изучаю. Вещь перспективная.

Отправлено: 26 фев 15 11:58
Сокрытие исходников, это ребятки моветон. От того на теам иксе, для половины программ для моддинга, нет исходников. Открытые исходники большой плюс для обучения и понимания формата, доки есть, но когда видишь как оно в коде, материал закрепляется.
Phobos
QUOTE
Сокрытие исходников, это ребятки моветон. От того на теам иксе, для половины программ для моддинга, нет исходников. Открытые исходники большой плюс для обучения и понимания формата, доки есть, но когда видишь как оно в коде, материал закрепляется.


Это ты щас кому?) Я всецело согласен с твоим утверждением :) Давай, подключайся. Нам нужна свежая кровь :) Кстати возможно скоро потребуются скриптеры (без знания С++, компиляторов).
Mad Scientist
@All
Ребят, а Night Person для F2 на sfall кто-нибудь реализовал уже? В примере трейто-модов от Timeslip заявлен, но глубоко заремлен.

@jordan
QUOTE
От того на теам иксе, для половины программ для моддинга, нет исходников.

Ты не поверишь, у авторов их зачастую тоже нет. :/
jordan
Phobos

QUOTE

Это ты щас кому?) Я всецело согласен с твоим утверждением :) Давай, подключайся. Нам нужна свежая кровь :) Кстати возможно скоро потребуются скриптеры (без знания С++, компиляторов).


Я говорю вообще о ситуации.

Да я говорил о твоём движке. Сейчас изучаю. Просто скриптин уже не интересен. Опыт С++ есть. Всякие поделки на sdl писал. Меня привлекает идея писать скрипты на С++, скрипты ввиде плагинов dll. Вот это мощно будет. Изменяй, что хочешь и как хочешь. В скриптовом языке фола, даже нельзя функии использовать самописные, только процедуры, только хардкод.

Я как понял вы пишите не под windows? Каким коплятором под win собираете? Из набора mingw?


Mad Scientist

QUOTE

Ты не поверишь, у авторов их зачастую тоже нет. :/


Бывает. Но главное основные исходники есть. Компилятор, упаковщик, конвертер. Не всё так плохо.
Phobos
Хм..

Ну скрипты ориентированы на дизайнеров и мододелов, среди которых людей со знанием С++ практически нет (и вообще программистов каких-либо). Компилировать скрипты в DLL это вообще какой-то ужас :) Смысл скриптов в том что их можно быстро поменять в текстовом редакторе: легко добавить новый квест, новый элемент интерфейса, изменить высокоуровневую игровую механику без необходимости разбираться с компиляцией, качать всякие зависимости и т.п.

QUOTE
В скриптовом языке фола, даже нельзя функии использовать самописные, только процедуры, только хардкод.

Не совсем понял тебя. Какой хардкод? Там можно писать процедуры сколько влезет (они могут возвращать значения и принимать параметры — по сути те же функции), также можно дергать процедуры между разными скриптами (import/export), ничем в этом плане не хуже любых других скриптовых языков. Главных минусов в скриптах два — отсутствие составных структур данных (решается массивами sfall) и необходимость каждый раз компилить скрипт самому (никак не решается), в то время как нормальные скриптовые языки либо интерпретируются на ходу, либо компилируются автоматом самим движком (в любом случае скриптер не парится по поводу компиляции).

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

QUOTE
Я как понял вы пишите не под windows? Каким коплятором под win собираете? Из набора mingw?

Что ты имеешь ввиду? Проект на все платформы сразу. Один парень регулярно билдит версию для своего андройд-смартфона (правда играть там особо не получится пока). В основном все юзают линукс, но я упоротый виндузятник, пишу код в Netbeans и компилю через Mingw.


QUOTE
Ребят, а Night Person для F2 на sfall кто-нибудь реализовал уже? В примере трейто-модов от Timeslip заявлен, но глубоко заремлен.

"Заремлен"? Я как-то пробовал менять трейт при помощи ini, но не уверен насчет добавления нового. В F2 вроде какой-то перк добавили заместо Night Person?
Чтобы трейт чтото делал можно написать простенький глобальный скрипт sfall который будет менять нужную характеристику в зависимости от времени суток. Ничего сложного нет.
jordan
QUOTE

Ну скрипты ориентированы на дизайнеров и мододелов, среди которых людей со знанием С++ практически нет (и вообще программистов каких-либо). Компилировать скрипты в DLL это вообще какой-то ужас :) Смысл скриптов в том что их можно быстро поменять в текстовом редакторе: легко добавить новый квест, новый элемент интерфейса, изменить высокоуровневую игровую механику без необходимости разбираться с компиляцией, качать всякие зависимости и т.п.


Согласен. Даже ангел скрипт в ФО. Диковато смотрится на фоне простых скриптов фола.

QUOTE

Не совсем понял тебя. Какой хардкод? Там можно писать процедуры сколько влезет (они могут возвращать значения и принимать параметры — по сути те же функции), также можно дергать процедуры между разными скриптами (import/export), ничем в этом плане не хуже любых других скриптовых языков. Главных минусов в скриптах два — отсутствие составных структур данных (решается массивами sfall) и необходимость каждый раз компилить скрипт самому (никак не решается), в то время как нормальные скриптовые языки либо интерпретируются на ходу, либо компилируются автоматом самим движком (в любом случае скриптер не парится по поводу компиляции).


Я давно скрипты не писал, и о всех фичах добавляемых sfall'ом не знал. Глобальные массивы поддерживает? Не локальные в процедуре. Нужно почитать документацию по сфалу.

QUOTE

Что ты имеешь ввиду? Проект на все платформы сразу. Один парень регулярно билдит версию для своего андройд-смартфона (правда играть там особо не получится пока). В основном все юзают линукс, но я упоротый виндузятник, пишу код в Netbeans и компилю через Mingw.


Посмотрел CrossPlatform.cpp.in. Вижу проект кроссплатформеннен.
Phobos
QUOTE
Я давно скрипты не писал, и о всех фичах добавляемых sfall'ом не знал. Глобальные массивы поддерживает? Не локальные в процедуре.


То что я написал про процедуры — это не sfall а стандартный функционал, т.е. все это было возможно и в 2000м ) Просто кто-то может не знал. Плюс такой момент был что в ресурсах TeamX где-то писали что якобы вызовы пользовательских процедур могут происходить не в том порядке как ты их описал. Доказательств тому я не нашел ни в ЕХЕшнике, ни по результатом тестов.

Массивы да, это фишка sfall. Есть временные массивы (живут в течении одного кадра), есть постоянные которые можно использовать глобально, в т.ч. передавать в другие скрипты через export/import variable. И еще их можно сохранять в сейвки одной командой.
Плюс в компилятор добавлен сахар для удобной работы с массивами — можно их создавать при помощи выражений (как в JavaScript), есть синтаксис обращения к элементам через скобки и через точку (как в Lua), есть foreach.

Компилятор дополнительно расширен такими фичами как break/continue, условные выражения (тернарный оператор из python), short-circuit evaluation для логических операторов и многое другое — все то что не связано с массивами работает без sfall, с ванильной игрой. Достаточно просто использовать новый компилятор.
Crafty
Добавил поддержку русского языка при вводе имени игрока и описания к сохраняемой игре. По умолчанию переключатель на русский — Scroll Lock (горит лампочка), но можно переназначить на Num Lock или Caps Lock. Разные локализации используют разные кодировки (Fargus/LevCorp — 866, 1C -1251), а потому включайте подходящую (подробнее в примере ini-файла).
Phobos
@Crafty: у тебя есть какой-нибудь генеральный план твоих изменений?
Пора уже выпускать версию 3.6 но я хотел некоторые твои изменения попытаться интегрировать. Какие еще плюшки в планах или ты просто делаешь первое что придет в голову?)
Ваш ответ: