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

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

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

MaGoth

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

Вложения

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

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
ММ, ты криво добавляешь=)
Нада примерно вот так

Код:
int Convert_Spell(int#);
где int - тип функции
Convert_Spell - имя функции
int# - переопределяемое значение.
Да и не в ту сторону ты вообще по моему копаешь:-\
Тебе по идеи нужно в файл RedefinedLocalVariable.dsc
и там чтот мудрить.

Bump: А может быть... это я тут бред несу...
по пробуй int Convert_Spell(instance#);
Но по моему опять бред....
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
Saturas, переопределять можно только int, так что instance# не прокатит, и мне нужно переопределить именно тип, возвращаемый функцией.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
Тогда вали в в файл RedefinedLocalVariable.dsc
Там можно задавать это все, вродебы...
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
Saturas, тут ты не прав - тип функций в RedefinedFunc.dsc, а в RedefinedLocalVariable.dsc только локальные переменные.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
Ты сказал " Переопределить Тип Возращаемый функцией"
Под типом, подразумевается на соклько я понял, тип переменной возращаемой функцией, по этому тебе нужно переопределить ТИП этой переменной!

Bump: Хотя итак не выйдет, ибо готик сорсер не скомпилит такое.
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
Не подскажете, существует в первой Готике нормальный и гарантированный метод отлавливания момента вытаскивания оружия неписем или ГГ, чтобы в этот момент запустить отработку функции?
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
George_M,
Действие в игре -> Восприятие -> Обработка в скриптовой функции


const int PERC_DRAWWEAPON = 24; //Восприятие вытаскивания оружия
Восприятие одинаково как в Г1, так и в Г2а, но в Г2а скрипты более адекватно написаны.

Смотришь файл AI\AI_Intern\perception.d, там для различных состояний НПЦ прописаны активные восприятия:
Npc_PercEnable(self,PERC_DRAWWEAPON,B_AssessFighter);
нужное из которых передается на обработку в функцию B_AssessFighter
Некоторые другие "опасные" восприятия также передаются в эту функцию для последующей обработки.

Далее смотришь AI\B_Human\B_AssessFighter.d в которой в зависимости от различных обстоятельств запускается та или иная реакция или функция перехода в другое состояние.

В Г2 эти функции переписаны по другому, но также можно проследить с perception.d
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
Делал я себе спокойно реализацию спелла телекинез на двиге г2(через г2екст, но это не столь важно) и столкнулся скажем так с "проблемой"...
А именно КАК настроить спелл, чтобы в таргет брались не только нпс, но и предметы?
Тоесть достал я заклинание, и могу брать в таргет любых нпс, а вот предметы чтото не хочет, ставил TARGET_TYPE_ITEMS, но результатов не было, в этом случае в таргет ни нпс, ни предметы не брались, кто то знает как правильно делать?

Код:
 instance Spell_FrostBolt(C_Spell_Proto)
{

	time_per_mana							= 250;
	damage_per_level 				= SPL_Damage_FrostBolt;
	damageType							= DAM_MAGIC;		// Тип повреждения - магия
	spelltype								= SPELL_NEUTRAL;
	targetCollectAlgo				= TARGET_COLLECT_FOCUS;
	canTurnDuringInvest			= FALSE;
	canChangeTargetDuringInvest = FALSE;
	targetCollectType				= TARGET_TYPE_ITEMS;
	
};
Решено
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
Saturas, в первой Готике у меня именно в таком варианте все и работает - я думал, что во второй тоже должно... Если нет, то будет грустно... Я ближе к вечеру начну тестить свой код во второй и отпишусь, если пойму что не так.

Ага, проверь, плиз, параметр в Focus_Magic: там во второй item_prio = -1, а в первой - 0.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
Все, проверил, все Оке пашет кароче) вопрос снят.
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
438
Благодарности
261
Баллы
230
Print(IntToString(Hlp_StrCmp("к","Р")));//=True. Неужели это правда :-\ ?
А также:
н = м, е = д, З = Ж.
Я и не думал, что всё настолько криво.
Если так подумать, то как их различать то? :D
Это конечно прикол...

Эм, что тут удивительного? Это готика, этим все сказано.
Я удивляюсь почему до сих пор на этом кривом движке столько много народу работает...
Разработчики явно не старались для кого-то, если уж даже нормальную работу со строками не могли написать. Уж про парадоксы вообще промолчу...
И грустно=( и смешно:D
 

Saturas


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

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
Jr13San, на немецком воге удивлялись, что эта функция регистр не отлавливает, но чтобы так... Может она с кириллицей просто не дружит? Хотя нет - что-то у тебя не то.
В МТ отлично отрабатывает код if (Hlp_StrCmp(attacker.name,"Ядовитый ползун")==True) - отравляют только те, кто должен, а не все подряд.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
На счет регистра - все верно, игра переводит оба слова в верхний регистр, так что так.

Jr13San а мне нравица) Г2екст дает много новых возможностей) не былобы экста - хрен бы я модил щас)

Bump: А по поводу того для кого разрабы старались.... тут вопрос открыт....
если даже координаты Z Y первернуты, что тут еще сказать?
И куча пустых классов....
 

George_M

Участник форума
Регистрация
17 Дек 2010
Сообщения
692
Благодарности
18
Баллы
255
Saturas, ну у немцев и на клавиатуре Z с Y местами поменяны, а как у них с осями принято не знаю - в бундесе математики не учил;)
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
438
Благодарности
261
Баллы
230
Jr13San, на немецком воге удивлялись, что эта функция регистр не отлавливает, но чтобы так...
На счёт регистра я не сравнивал, поэтому хз.
Может она с кириллицей просто не дружит? Хотя нет - что-то у тебя не то.
У меня всё то, просто кривая обработка. Если бы делали на совесть, то было бы норм, а у них наверное как протестировали, ничего никто не сказал, что плохо, значит сойдёт и так. Тем более у них в проекте не было посимвольного сравнения.
В МТ отлично отрабатывает код if (Hlp_StrCmp(attacker.name,"Ядовитый ползун")==True) - отравляют только те, кто должен, а не все подряд.
Здесь всё понятно и так, потому что тут не та комбинация символов.

А вот возьми, например, так:
Print(IntToString(Hlp_StrCmp("Зенкен", "ЖдмРдм")));//=True.
//к = Р, н = м, е = д, З = Ж.

Другое дело, что:
Print(IntToString(Hlp_StrCmp("Тенкен", "ЖдмРдм")));//=False.
//одна буква "Т" сбивает весь прикол.

Jr13San а мне нравица) Г2екст дает много новых возможностей) не былобы экста - хрен бы я модил щас)
Сейчас только и остаётся рыться в памяти и изменять её из внешних программ...

Bump: А по поводу того для кого разрабы старались.... тут вопрос открыт....
если даже координаты Z Y первернуты, что тут еще сказать?
И куча пустых классов....
Ихи программисты делали всё как нужно их же "разработчикам", а не для будущих фанатов и модостроителей...
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
Сейчас только и остаётся рыться в памяти и изменять её из внешних программ...
Что мешает?)

Bump: Стандартными средствами winapi можно сравнивать любы строки.. а функцию для этого писать пару минут)

Bump: Не понимаю я вас народ, когда есть такие вещи как г2екст, и икарус и не пользоватся ими...
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
438
Благодарности
261
Баллы
230
Мешает мысль о том, а стоит ли начинать улучшать такой чермет?

Bump: Стандартными средствами winapi можно сравнивать любы строки.. а функцию для этого писать пару минут)
Ага, ещё бы оболочку взаимодействия и увязки скриптовой системы с внешней прогой и памятью процесса написать...
И это можно сделать! Только надо знать хотя бы немного c++ и некоторые API функции для работы с памятью, а дальше дело техники...
И никакие Г2ексты и икарусы не нужны. Только проблем от этого ещё больше будет:D

Смысл тогда вообще модить?
Вот и именно то. Наверное каждый, кто долго занимается этим увлечением, и когда у него что-то не получалось, задавал себе вопрос: "А стоит ли продолжать, если на каждом шагу одни косяки?". Обойти их конечно можно, но через леса и горы. Вот такие вот дела.
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.333
Баллы
315
Кому что.....
Мешает мысль о том, а стоит ли начинать улучшать такой чермет?
Смысл тогда вообще модить?
 

Vicont45

Участник форума
Регистрация
22 Авг 2011
Сообщения
248
Благодарности
70
Баллы
190
А нужно ли прописывать порталы в скриптах? а то я в 3DsMAX'е назначил материал p: на дверь в хижину, а при компиляции меша, спейсер заругался на этот материал и вылетел...
(пробовал после p: писать свое имя, пробовал вставлять материал из Готики, типа P:_FISCH).

И еше, косвенно касаемо портала: Я пытаюсь создать indoor помещение для определения владельца. Нужно ли для этого, чтобы внутренне помещение было цельным замкнутым мешем или состояло из отдельных элементов одного меша (стены, пол, потолок)?
 
Сверху Снизу