• Уважаемые гости и новички, приветствуем Вас на нашем форуме
    Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».

    Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
    Удачи!

Вопросы по скриптингу

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
  • Первое сообщение
  • #1
Прежде чем задавать вопросы, ознакомьтесь с документацией..
1) Читать онлайн
2) Архив с офлайн-версией(chm) во вложении
 

Вложения

  • Vam_tutor.rar
    171,6 KB · Просмотры: 560
Последнее редактирование модератором:

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
разве что хоткеивские
А B_RefreshArmor()?

Комментарий, я так понимаю от VAM:

Код:
// *******************************************************************
// Функция обновления доспехов НПС
// -------------------------------------------------------------------
// Вызывается только экзешником (пока пуста)
// *******************************************************************

func void B_RefreshArmor()
{
};

Тоже касается функции: C_CanNpcCollideWithSpell.

func int B_GetGreatestPetzCrime - Возвращает значение.
func int B_SelectSpell - Возвращает значение.
func string B_BuildLearnString - Возвращает значение.
func int B_GetLearnCostTalent - Возвращает значение и т.д.

Имена функций начинающихся с С_ действительно используются если функция возвращает значение, также как и G-функции в общем вызываются движком.

B_InitGuildAttitudes - согласен. После первого ознакомления со всеми скриптами, почему-то отложилось в памяти, как движковая функция. Ну как говорится, не ошибается тот кто ничего не делает.
 
Последнее редактирование:

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
С_ это функции сравнения, а не возвращающие значения. (Compare)

B_RefreshArmor - не чем не вызывается.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
Гм, а мне кажется, что это разделение на B и C введено всего лишь для удобства ориентирования скриптера. C-функции обрабатываются компилятором раньше, чем B-функции, поэтому из B-функции можно вызывать C-функцию, а наоборот нельзя. *sorry*
 

Dimus

★★★★★★★★★
Супермодератор
Регистрация
19 Июл 2010
Сообщения
5.574
Благодарности
4.167
Баллы
915
В чём именно ошибся? Вот комментарий к этой функции из G2MDK:
Код:
//////////////////////////////////////////////////////////////////////////
// B_RefreshArmor
// ==============
// Wird einmal pro Spieltag um 0 Uhr vom Code aufgerufen!
// Wurde früher genutzt, um NSCs die ihrer Rüstung beraubt wurden, wieder
// eine passende Rüstung dazuzuschummeln. Da der Spieler nun den NSCs
// nicht mehr die Rüstung abnehmen kann, ist diese Funktion leer.
//
// WICHTIG: Könnte aber zum Respawnen von irgendwelchen anderen Dingen
// benutzt werden!
//////////////////////////////////////////////////////////////////////////
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
В чём именно ошибся?
Я так понял лучше работать с немецкими комментариями. Там подробнее описано. Все таки вызывается один раз за игровые сутки и может применяться для каких-либо своих целей. Вспомнил, что я на своем сайте переводил информацию по этой функции :)
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
В том что этого в двиге уже лет как 90 нету.
Хотя плохо искал, вопросы закрыт, я ошипся
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Подскажите пожалуйста, кроме этих функций, движок вызывает еще какие-нибудь? Или возможно я указал какую-то лишнюю функцию?
Код:
B_MM_AssessBody()
B_MM_AssessDamage()
B_MM_AssessEnemy()
B_MM_AssessPlayer()
B_RefreshArmor()
B_RefreshAtInsert()
G_CanNotCast()
G_CanNotUse()
G_CanSteal()
G_PickLock()
init_global()
Player_Hotkey_Lame_Heal()
Player_Hotkey_Lame_Potion()
Player_Hotkey_Screen_Map()
Player_MOB_Another_Is_Using()
Player_MOB_Missing_Item()
Player_MOB_Missing_Key()
Player_MOB_Missing_Key_Or_Lockpick()
Player_MOB_Wrong_Side()
Player_MOB_Never_Open()
Player_MOB_Too_Far_Away()
Player_Plunder_Is_Empty()
Player_Trade_Not_Enough_Gold()
Spell_ProcessMana()
Spell_ProcessMana_Release()
startup_global()
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
B_MM_AssessBody()
B_MM_AssessDamage()
B_MM_AssessEnemy()
B_MM_AssessPlayer()
А разве их вызывает движок? Не, ну движок в их вызове участвует, конечно. Но тогда нужно перечислять ВСЕ функции-обработчики восприятий ИИ.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Просто в комментарии написано
Код:
Вызывается ядром системы в качестве реакции на пассивное восприятие PERC_ASSESSBODY
я и подумал :)
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
Как я понял, тебя интересуют функции, вызываемые движком по заранее определённому названию. Попробуй заглянуть в экзешник с помощью HEX-редактора. Я так случайно в Г1 обнаружил среди известных мне названий функций одно неизвестное (G_NoKey), не задействованную, почему-то, в оригинальных скриптах функцию.
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
Да мне бы разобраться с тем что есть :). Тем более что из языков программирования знаю только JavaScript и немного C#. HEX-редакторы пока для меня темный лес.
 
Последнее редактирование:

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
HEX-редакторы пока для меня темный лес.
Не знаю по поводу других редакторов, а WinHEX, например, позволяет использовать, помимо шестнадцатиричного поиска, ещё и поиск фрагмента текста. Некоторые вещи в экзешнике могут быть найдены в текстовом виде. Когда-то качал редактор отсюда.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.832
Благодарности
6.719
Баллы
1.625
Не знаю по поводу других редакторов, а WinHEX, например, позволяет использовать, помимо шестнадцатиричного поиска, ещё и поиск фрагмента текста. Некоторые вещи в экзешнике могут быть найдены в текстовом виде. Когда-то качал редактор отсюда.
Можно нотпадом++ попробовать... тоже видит не мало текста. Я так в спейсере некоторые функции новые нашел. Но так и не понял как они работают))
 

cool_er

Участник форума
Регистрация
23 Мар 2015
Сообщения
118
Благодарности
42
Баллы
190
А также можно IDA Pro использовать. Функции показывает, даже дизассемблирует и HEX редактор тоже есть, можно даже патчить, и есть Hex-Rays, который делает что-то вроде псевдокода и легче понять что делает функция.:)
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Сложно у вас все, зачем вам новые функции?
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
HEX редакторы это конечно хорошо, но пока я пытаюсь разобраться с тем что есть. Когда буду хорошо ориентироваться в коде Gothic, тогда может быть и можно будет перейти к чему-то более серьезному. :)
 

Gratt


Модостроитель
Регистрация
14 Ноя 2014
Сообщения
3.300
Благодарности
4.633
Баллы
625
Когда буду хорошо ориентироваться в коде Gothic
ты не научишься ориентироваться в коде дальше возможностей скрипта играясь только с ними. тебе бы движок показать с твоим энтузиазмом.. если сообразишь как там что работает, отпадет процентов 90 накопившихся вопросов
 

neromont


Модостроитель
Регистрация
12 Мар 2011
Сообщения
675
Благодарности
662
Баллы
245
По этим функциям толковых описаний нет. Попробовал перевести с немецкого. Если где ошибся подскажите.
G_CanNotCast() - Вызывается когда ГГ пытается активировать руну при этом не имея нужного магического круга. Выводит сообщение "Слишком низкий магический круг для использования этой руны".

G_CanNotUse() - Вызывается когда ГГ пытается экипировать предмет, но его атрибуты (сила, ловкость, мана) не соответствуют требованиям предмета.

G_CanSteal() - Функция использовалась в G1 при осуществлении карманных краж.

G_PickLock() - Так понимаю функция вызываемая при взломе замков.
 

ElderGamer


Модостроитель
Регистрация
16 Апр 2008
Сообщения
4.407
Благодарности
3.231
Баллы
525
Если функция возвращает 1, то непися можно обворовать. Впрочем, движок сам по себе имеет ряд блокировок. Нельзя, например, обворовать непися, взаимодействующего с интерактивным объектом.

Вызывается с аргументами, в зависимости от значения которых в скриптах обрабатываются события: неправильная попытка + отмычка не сломалась, неправильная попытка + отмычка сломалась, правильная попытка + замок не открыт, правильная попытка + замок открыт.
 
Сверху Снизу