Перейти к содержимому


Фотография

(sfall) дополнения


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 1246

#41 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 25 Февраль 2015 - 17:47

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

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

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


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

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

Это сообщение отредактировано Phobos - 25 февраля 2015 | 18:25


#42 jordan

jordan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 142 сообщений

Отправлено 26 Февраль 2015 - 11:52

QUOTE

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


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

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

Это сообщение отредактировано jordan - 26 февраля 2015 | 11:59


#43 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 26 Февраль 2015 - 19:51

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


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


#44 Mad Scientist

Mad Scientist

    Ночной Механик

  • Пользователи
  • PipPipPip
  • 594 сообщений

Отправлено 26 Февраль 2015 - 23:12

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

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

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


#45 jordan

jordan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 142 сообщений

Отправлено 27 Февраль 2015 - 06:55

Phobos

QUOTE

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


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

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

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


Mad Scientist

QUOTE

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


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


#46 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 27 Февраль 2015 - 07:10

Хм..

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

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

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

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

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

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


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

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

Это сообщение отредактировано Phobos - 27 февраля 2015 | 07:21


#47 jordan

jordan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 142 сообщений

Отправлено 27 Февраль 2015 - 07:25

QUOTE

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


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

QUOTE

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


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

QUOTE

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


Посмотрел CrossPlatform.cpp.in. Вижу проект кроссплатформеннен.

Это сообщение отредактировано jordan - 27 февраля 2015 | 08:02


#48 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 27 Февраль 2015 - 12:32

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


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

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

Компилятор дополнительно расширен такими фичами как break/continue, условные выражения (тернарный оператор из python), short-circuit evaluation для логических операторов и многое другое — все то что не связано с массивами работает без sfall, с ванильной игрой. Достаточно просто использовать новый компилятор.

Это сообщение отредактировано Phobos - 27 февраля 2015 | 12:36


#49 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 28 Февраль 2015 - 02:41

Добавил поддержку русского языка при вводе имени игрока и описания к сохраняемой игре. По умолчанию переключатель на русский — Scroll Lock (горит лампочка), но можно переназначить на Num Lock или Caps Lock. Разные локализации используют разные кодировки (Fargus/LevCorp — 866, 1C -1251), а потому включайте подходящую (подробнее в примере ini-файла).

Это сообщение отредактировано Crafty - 28 февраля 2015 | 02:49


#50 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 28 Февраль 2015 - 10:40

@Crafty: у тебя есть какой-нибудь генеральный план твоих изменений?
Пора уже выпускать версию 3.6 но я хотел некоторые твои изменения попытаться интегрировать. Какие еще плюшки в планах или ты просто делаешь первое что придет в голову?)


#51 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 28 Февраль 2015 - 14:24

QUOTE
@Crafty: у тебя есть какой-нибудь генеральный план твоих изменений?
Не, плана нет ;) Был todo файлик, но сейчас он уже пустой (только что ещё добавил в код с FreeWeight изменение цвета текста на красный при перегрузке).


#52 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 28 Февраль 2015 - 14:52

Crafty почему у тебя все комментарии в файлах в dos кодировке?


#53 Crafty

Crafty

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 423 сообщений

Отправлено 28 Февраль 2015 - 15:11

QUOTE
Crafty почему у тебя все комментарии в файлах в dos кодировке?
В Far'е всё делаю, какую он определил — в той и пишу , даже не обратил внимание :-p
Поменял на win.


#54 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 01 Март 2015 - 07:16

Посмотрел твой код. Блин, что принципиально мешало соблюдать стиль существующего исходного кода? Это же базовые вещи, когда дописываешь в чужой код не нужно все ломать.

1) Вместо табуляций — один пробел, в итоге код нечитаем.
2) Я так понял ты добавил все в один файл Inventory.cpp? Даже вещи не связанные с инвентарем?
3) Комментарии на русском языке, проект англоязычный, придется их переводить.
4) Пишешь на асме то что можно (и нужно) писать на С++, например вызовы функций, определенных в sfall.
5) Ты проверял свои новые хуки на конфликты с уже существующими? (достаточно сделать поиск смещения на которое ты делаешь HookCall в исходниках всего проекта). Если есть конфликт — поздравляю, ты сломал какуюто другую фичу.
6) В ChangeArmorFid идет проверка конкретных PID, это неверно (суть sfall в том чтобы "расхардкодить" как можно больше), нужно смотреть прототип предмета и в нем FID.
7) Стиль кода. Если ставить пробелы до/после операторов (присваивания, сложения и т.п.), читаемость сразу возрастет. Хотя Timeslip писала в точно таком же стиле, он все равно ужасен :)

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

Это сообщение отредактировано Phobos - 1 марта 2015 | 07:29


#55 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 01 Март 2015 - 17:48

QUOTE
3) Комментарии на русском языке, проект англоязычный, придется их переводить.

пусть учат русский)))

QUOTE
одна из проблем это невозможность сделать полноценный "модальный" режим и блокировать клик на карту если игрок кликнул на окне

Как бы и без Sfall'a модальность окон частично решается скриптово.
CODE
game_ui_disable;
MouseShape("mouse.pcx", 0, 0);

Теоретически с помощью имеющихся команд AddRegion и AddRegionProc сделать скрипт и использовать reg_anim_clear(dude_obj) то выходит оно никуда не побежит. хз не проверял надобности не было

Это сообщение отредактировано Fakeman - 1 марта 2015 | 18:07


#56 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 01 Март 2015 - 19:23

QUOTE
Как бы и без Sfall'a модальность окон частично решается скриптово.

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

А что дает отключение интерфейса и курсора?

Добавил в sfall параметр SkipSizeCheck (в секцию Debugging), последний билд: https://yadi.sk/d/mTRKFKsMexSa2

Если интересно, прошу проверить будет ли работать с модами меняющими ЕХЕшник. Нужно будет еще добавить CRC измененного файла в ExtraCRC.

Это сообщение отредактировано Phobos - 1 марта 2015 | 19:25


#57 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 01 Март 2015 - 19:45

QUOTE
А что дает отключение интерфейса и курсора?

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

QUOTE
Добавил в sfall параметр SkipSizeCheck (в секцию Debugging)
Нужно будет еще добавить CRC измененного файла в ExtraCRC.

я так понял надо дописать в ini SkipSizeCheck=1 ?
тогда правильнее было бы сразу и crc отрубать, если стоит SkipSizeCheck=1
Проверил все работает.

Это сообщение отредактировано Fakeman - 1 марта 2015 | 20:30


#58 jordan

jordan

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 142 сообщений

Отправлено 01 Март 2015 - 20:51

Кошерные изменения, хорошо бы интегрировать в стандартный билд.:)

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


#59 Phobos

Phobos

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 49 сообщений

Отправлено 01 Март 2015 - 21:59

Добавил перезарядку по хоткею в официалку, но мне пришлось делать это полностью с нуля, с другим подходом.

QUOTE
курсор не выключатся а наоборот включатся) что и дает возможность как раз таки с заблокированным интерфейсом игры и кликами по карте, управлять пользовательскими окнами. т.е. получается пока не закроешь окно игрок управлять игрой не сможет. я бы даже тут слово "частично" исключил. :)

О, ну это круто тогда.. Но только для модальных окон которые как бы блочат весь интерфейс. Для панелек типа как в некоторых модах это не проканает же? (они всегда доступны, когда доступна обычная панель) Плюс насколько знаю game_ui_disable Отрубает клавиатуру, то есть ты не сможешь закрыть свое окно клавишей Escape или прикрутить к нему другие клавиши.

QUOTE
тогда правильнее было бы сразу и crc отрубать, если стоит SkipSizeCheck=1

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

Это сообщение отредактировано Phobos - 1 марта 2015 | 22:08


#60 Fakeman

Fakeman

    Продвинутый пользователь

  • Пользователи
  • PipPipPip
  • 557 сообщений

Отправлено 01 Март 2015 - 23:54

QUOTE
Для панелек типа как в некоторых модах это не проканает же? (они всегда доступны, когда доступна обычная панель)
Плюс насколько знаю game_ui_disable Отрубает клавиатуру, то есть ты не сможешь закрыть свое окно клавишей Escape или прикрутить к нему другие клавиши.

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

QUOTE
CRC все равно нужен. ... То есть моддер (или игрок) должен убедится что ЕХЕшник совместим и сознательно вбить его CRC.

а ну да. все правильно)

Отправлено: 2 мар 15 01:46
Phobos
В общем с AddRegion в связке с game_ui_disable и MouseShape решается вся проблема и нет никакого "дерганья" героя. Так что решение полностью рабочее, даже работает если регион пересекается с кнопкой окна т.е. срабатывает и событие кнопки, правда не совсем разобрался как правильно размер региона задавать оно там как то по хитрому сделано. ладно суть скрипта получается такая(подумаю поймешь)
AddRegionProc("window_reg", none, none, game_ui_disable, game_ui_enable)
а MouseShape нужен для того чтобы вовремя нажатия по окну не пропадал указатель мыши.

Это сообщение отредактировано Fakeman - 2 марта 2015 | 02:24




Похожие темы Свернуть

  Название темы Форум Автор Статистика Последнее сообщение


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных

Рейтинг@Mail.ru