[AGFC: Valley of Gothic] М: Скриптинг в Готике

Страница 45 из 65 « Первая 353839404142434445 4647484950515255 Последняя »
Поиск в этой теме:

Расширенный поиск
Старый 29.07.2007, 13:01   #1761
halogene

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2s@m: а у НПЦ, случайно не задан атрибут attribute[ATR_REGENERATEHP]=1 или любое другео число ?
Ответить с цитированием
Старый 29.07.2007, 17:43   #1762
s@m

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Опа! Как я не заметил.
360 Спасибо! Проблема решена!

У меня есть замысел улучшить бой на кулаках
1. И пока последнее:
По умолчанию мы не можем добивать людей в кулачном бою, а что если
это осуществить, допустим - Присесть и свернуть шею.
(Поправте если не прав)
Нужна Анимация, и скрипт. Верно?
у меня 3ds max 7 можно ли сделать с его помошью такого рода анимку?
А вот в скриптах я не селён, вот вопрос- Где находится скрипт добивания.
Подскажите как можно это осуществить.


Ответить с цитированием
Старый 29.07.2007, 18:03   #1763
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2s@m:

В файле HUMANS.MSB, в скрипте одного из asc-файлов,  анимации 3Ds-max. ;D
Отправить личное сообщение для Ответить с цитированием
Старый 29.07.2007, 19:54   #1764
Mager

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

задавал вопрос, но повторюсь, как сделать так, чтобы в 4й главе Г1 ворота старого лагеря не опускались?
Ответить с цитированием
Старый 06.08.2007, 13:11   #1765
halogene

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2Mager: если обратить внимание на то как это реализуется то можно увидеть что с каждой стороны лагеря есть 2 лебедки управляющие воротами. К примеру у северных ворот стоит бессмертный стражник - GRD_230_Gardist.
Сравните его расписание до захвата шахты:
func void Rtn_start_230()
{
     TA_GuardWheelOpen(7,55,19,55,"OCC_MAINGATE_VWHEEL ");
     TA_GuardWheelOpen(19,55,7,55,"OCC_MAINGATE_VWHEEL ");
};

и после:
func void Rtn_FMTaken_230()
{
     TA_GuardWheelClosed(7,0,20,0,"OCC_MAINGATE_VWHEEL ");
     TA_GuardWheelClosed(20,0,7,0,"OCC_MAINGATE_VWHEEL ");
};

Измените в расписании Rtn_FMTaken_230 closed на open и будем вам счастье :)

Если копать глубже в сторону самих ZS, можно убедиться, что основная их часть -взаимодействие с мобом (т.е. воротам)
Ответить с цитированием
Старый 06.08.2007, 17:25   #1766
Trazege2005

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Вопрос такой - кто нибудь знает как изменить время отображения текста в режиме диалога? Желательно скриптово....
Ответить с цитированием
Старый 07.08.2007, 11:27   #1767
halogene

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

И еще вопрос. Известная конструкция:
instance ItFoMuttonRaw(C_Item)
{
     name = "Сырое мясо";
     mainflag = ITEM_KAT_FOOD;
     flags = ITEM_MULTI;
     value = Value_FleischRoh;
     visual = "ItFo_RawMutton_01.3ds";
     scemeName = "MEAT";
     on_state[0] = UseMuttonRaw;
     description = name;
     text[1] = NAME_Bonus_HP;
     count[1] = HP_FleischRoh;
     text[5] = NAME_Value;
     count[5] = Value_FleischRoh;
};
А теперь собственно сам вопрос - scemeName = "MEAT":
- где прописан (экзешник?)
- как получить полны список всех scemeName?
- реально ли изменить\добавить свою scemeName?
Ответить с цитированием
Старый 07.08.2007, 23:09   #1768
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2Trazege2005:

Вопрос такой - кто нибудь знает как изменить время отображения текста в режиме диалога? Желательно скриптово....
А по точнее можно, и что подразумевается под временем?


2360:

А теперь собственно сам вопрос - scemeName = "MEAT":
- где прописан (экзешник?)
От части да, но не совсем.
Это в основном функции - описывающие реакцию Нпс Гг с предметом, а также анимация движений при реакции с ним, пример косяк болотника.
Как Гг закурит косяк, включается подобная scemeName, но для косяка она своя, в итоге имеем, дым от болотной травы, анимация движений Гг, и эффекты визуализации.
Выводы:
- Частичная реализация в движке,
- Специфика анимации в Numan.MDS - файле,
- Эффекты визуализации, связанные с определенной scemeName, а также последовательность воспроизведения анимации, в VisualFX.dat
- А также в скриптах Готики. :)

- как получить полны список всех scemeName?
- смотреть все предметы и выписывать себе в листочек где в теле описании инстанции есть такая строка, после чего искать Zc - функцию с таким именем, или именем этого предмета, вещи и т.д.

- реально ли изменить\добавить свою scemeName?
- В принципе да. :)
Отправить личное сообщение для Ответить с цитированием
Старый 08.08.2007, 01:44   #1769
halogene

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2MaGoth: спасибо, значит идея не безнадежна. Будем искать :)
Ответить с цитированием
Старый 09.08.2007, 11:44   #1770
Trazege2005

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Цитата:
Сообщение от MaGoth link=board=gothic&t=1105030050&start=3664750#36647 67 date=08/07/07, в 23:09:58
2Trazege2005:

А по точнее можно, и что подразумевается под временем?
Длительность отображения текста диалога при разговоре ГГ с кем нибыло...
Ответить с цитированием
Старый 09.08.2007, 20:23   #1771
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2Trazege2005:

Нет это изменить нельзя, отслеживается только движком.
Отправить личное сообщение для Ответить с цитированием
Старый 13.08.2007, 15:14   #1772
halogene

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2Trazege2005: ну только если записать звуковой файл "тишины" необходимой длинны и вставить его в диалог. Тогда субтитр будет висеть, пока файл не закончится. А в остальном - движок высчитывет время в зависимости от количества символов :)
Ответить с цитированием
Старый 20.08.2007, 22:35   #1773
deadma3au

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

а что такое скриптин???????????????
Ответить с цитированием
Старый 11.09.2007, 02:19   #1774
Artem-modder

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Я извиняюсь если такой вопрос уже звучал, но кувы, читать все посты времени нет.

Как сделать чтобы GS v.3.13  компилировал "чистые" скрипты??
А то у мня после замены оригинальных скриптов на чистые, при создании нового решения GS пишет мол "невозможно скопировать файлы" или "нет доступа, не удаётся произвести чтение с диска" что-то вродь этого...
А мне очень надо компилить с "чистыми" скриптами т.к. я создаю локации в 3дс максе и в скриптинге практически не шарю, а оригинальные скрипты полны багов,  и править их у меня не хватит знаний.
Ответить с цитированием
Старый 11.09.2007, 02:59   #1775
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2SMErtNIK:

Севет, используй версию 3.14. :))
Не совсем понял что подразумевается под чистыми ?
Декомпиллированые скрипты от Акеллы, или же полностью вычещинные скрипты от Нпс и прочего сюжетного соответствующего Готике2 и Готике2-НВ ?
Если так то это разные вещи..
Отправить личное сообщение для Ответить с цитированием
Старый 11.09.2007, 03:33   #1776
Artem-modder

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

полностью вычещинные скрипты от Нпс и прочего сюжетного соответствующего Готике2 и Готике2-НВ
Именно это, помойму я использовал скрипты от WSA, качал с ВоГ.ру.
Ответить с цитированием
Старый 11.09.2007, 08:21   #1777
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2SMErtNIK:

Скажем так тебе рано этим заниматься...
Там все работает просто прописывать Новый мир и Гг в нем нужно правильно.
Отсюда и идут твои ошибки.
Отправить личное сообщение для Ответить с цитированием
Старый 16.09.2007, 21:28   #1778
Artem-modder

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

1.Хотелось бы узнать, как сделать чтоб после разговора ГГ с одним Нпс,  у другого Нпс появлялась новая ветка диалога, если лень писать и обьяснять укажите хотяб диалог из оригинальной игры, где есть пример такой функции.

2.И ещё... как сделать чтоб после диалога у ГГ в дневнике появляласт новая запись?..
Я пытался сделать сам, но не вышло... вот кусок этого "нерабочего" кода:

B_LogEntry(TOPIC_V_NACHALE,"Текст записи");

B_GivePlayerXP(XP_VNACHALE);
При таком коде скрипты не компилятся.


B_LogEntry(TOPIC_RescueGorn,"Текст записи");

     B_GivePlayerXP(XP_VNACHALE);
А при таком компилятся, опыт выдаётся, но записи в дневнике нет.

Может для того чтоб создать свою (новую) запись в дневник, надо прописывать её инстанцию (к примеру RescueGorn) где-нибудь ещё?
Я нигде не прописывал...

Примечание:
Использую почти "чистые" скрипты от акеллы, вычищал сам.
Ответить с цитированием
Старый 16.09.2007, 22:22   #1779
DEDROIT

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2SMErtNIK:
1 . Используй в условие диалога НПС: Npc_KnowsInfo(other,Разговор НПС,после которого должен появиться диалог у этого НПС)
2. Чтобы появилась запись в твоём новом квесте нужно прописать к примеру:
Log_CreateTopic(TOPIC_KillWarg,LOG_MISSION);
Log_SetTopicStatus(TOPIC_KillWarg,LOG_Running);
B_LogEntry(TOPIC_KillWarg,"Текст");
И после этого зайти в Story\Log_Entries,например в файл LOG_Constants_Yoly и пропиши там
const string TOPIC_KillWarg = "Название Квеста";
Ответить с цитированием
Старый 17.09.2007, 05:02   #1780
Artem-modder

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

DEDROIT

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


У меня такая пробема - я создал мага-бандита, но когда я к нему подхожу, то он только кричит что щас убьёт меня, но не атакует, более того, если его атаковать, он не отвечает на атаки, меч я ему не давал, мне надо чтоб он применял магию в бою. Вот его код:

instance bdt_2003_Storius (C_npc)
{
     
     name = "Сториус" ;
     guild = GIL_BDT ;
     id = 2003 ;
     voice = 7 ;
     level = 20 ;
     npctype = NPCTYPE_AMBIENT ;
     aivar[AIV_MagicUser] = MAGIC_ALWAYS;
     B_SetAttributesToChapter(self,6);
   fight_tactic = FAI_HUMAN_MASTER;
     
     EquipItem(self,ItRu_ArmyOfDarkness);
     EquipItem(self,ItRu_Deathball);
     
     B_SetNpcVisual(self,MALE,"Hum_Head_Bald",Face_L_T oughBald01,BodyTex_L,ITAR_Xardas);
   B_GiveNpcTalents(self);
   B_SetFightSkills(self,500);
     Npc_SetTalentSkill(self,NPC_TALENT_MAGE,6);
     
     daily_routine = Rtn_Start_2003;
     
};
Ответить с цитированием
Старый 18.09.2007, 00:20   #1781
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2SMErtNIK:
он только кричит что щас убьёт меня, но не атакует
Для компьютерного НПЦ, выбор заклинания осуществляеться в функции AI\Magic\B_SelectSpell.d

Для каждой гильдии и некоторых магических существ расписаны используемые заклы... Так вот гильдии бандита там нет :)
guild = GIL_BDT ;
Соответственно нужно добавить в вышеописанную функцию нужную гильдию в нужный набор заклинаний.
Ответить с цитированием
Старый 24.09.2007, 02:10   #1782
HikeR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

пытаюсь скомпилировать предварительно разобранный gothic.dat от немки. имеется почти 60 ошибок "ф-ия должна возвращать значение". подскажите, как корректно поправить следущие скрипты:
1. два return в if-else
Cпойлер(щелкните, чтобы прочесть):
func int B_SetDayTolerance()
{
* * *if (Wld_IsTime (22, 0, 23, 59))
* * *{
* * * * * *return Wld_GetDay () + 1;
* * *}
* * *else
* * *{
* * * * * *return Wld_GetDay ();
* * *};
};

2. ни одного return-а
Cпойлер(щелкните, чтобы прочесть):
func int C_CanNewsBeSpread()
{
* * *PrintDebugNpc (PD_ZS_Check, "C_CanNewsBeSpread");
};

3. return в if
Cпойлер(щелкните, чтобы прочесть):
func int ZS_AssessQuietSound()
{
* * *PrintDebugNpc (PD_ZS_FRAME, "ZS_AssessQuietSound");
* * *C_ZSInit ();
* * *if (self.guild == GIL_MEATBUG)
* * *{
* * * * * *AI_ContinueRoutine (self);
* * * * * *return 0;
* * *};
* * *...
* * *тра-ля-ля
* * *...
};

4. вообще пусто
Cпойлер(щелкните, чтобы прочесть):
func int Info_Bartholo_PERM_Condition()
{
};


вот вроде все встречающиеся ситуации. как я понимаю, return обязательно должен присутствовать, иначе скрипт не будет допущен до компилирования.
если явно не задано значение можно ли возвращать что-то типа null?

Добавление от 09/24/07, в 02:14:22
такс. первый тип поборол примерно также, как в случае портирования кода на дельфи под FPC:
Cпойлер(щелкните, чтобы прочесть):
func int B_SetDayTolerance()
{
* * *var int i;
* * *i = 0;
* * *
* * *if (Wld_IsTime (22, 0, 23, 59))
* * *{
* * * * * *i = Wld_GetDay () + 1;
* * *}
* * *else
* * *{
* * * * * *i = Wld_GetDay ();
* * *};
* * *return i;
};

насколько это правильно?

Добавление от 09/24/07, в 02:30:55
второй как я понял лечится заменой типа int на void.
Ответить с цитированием
Старый 24.09.2007, 02:32   #1783
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2HikeR:
если явно не задано значение можно ли возвращать что-то типа null?
Угу, НУЛЬ можно возвращать, но этот НУЛЬ должен быть прописан в константах, для этих целей уже есть FALSE - равная нулю,

const int FALSE = 0;
но никто не запрещает вписывать и саму циферку 0.
В противовес FALSE, есть TRUE
const int TRUE = 1;

return FALSE; она же return 0;
return TRUE; она же return 1;

В условных функциях-проверках обычно используется FALSE - как ЛОЖЬ, TRUE - как ИСТИНА, другие int функции могут возвращать конкретные значения.

2HikeR:
func int B_SetDayTolerance()
{
    var int i;
    i = 0;
   
    if (Wld_IsTime (22, 0, 23, 59))
    {
          i = Wld_GetDay () + 1;
    }
    else
    {
          i = Wld_GetDay ();
    };
    return i;
};
Че за извращение? :)

func int B_SetDayTolerance()
{
     if(Wld_IsTime(22,0,23,59))
     {
           return Wld_GetDay() + 1;
     };
     return Wld_GetDay();
};

Более оптимальный вариант.

Ответить с цитированием
Старый 24.09.2007, 05:12   #1784
HikeR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Че за извращение? :)
упс... как-то не учел, что по ретурну идет мгновенный выход из проверки или ф-ии.

а вот по 3-ему варианту пока никак не догнать. если внутри ф-ии сработает условие - то выход происходит с заданным значением. а если не сработает, то что возвращать? любое взятое от балды значение, которое никогда не будет равно предположительному значению из условия?


Добавление от 09/24/07, в 05:32:11
почти все поправил, кроме таких случаев:
func int return_value()
{
* * if (i = 1)
* * {
* * * * * return 1;
* * };
};

что вернет ф-ия, если i <> 1? если игра нормально переваривает такие конструкции, то может она просто подставляет какое-то заранее определенное значение, типа return false?

да, и поправленные скрипты для второй готики я видел в нескольких местах, а нет ли такого же для первой? сравнить, так сказать, свои правки с правильными.

ну и последний вопрос. если удалить dat файл, и вместо него положить декомпилированные скрипты, готика будте работать с ними? и куда в таком случае их класть?
и нужно ли обязательно начинать новую игру, если произошло редактирование скриптов?
Ответить с цитированием
Старый 24.09.2007, 09:19   #1785
marazmus
A.G.F.C.
 
Регистрация: 02.09.2005
Сообщений: 6
marazmus вне форума

По умолчанию Re: М: Скриптинг в Готике

С декомпилированными скриптами Готика работать не будет. После любых изменений в скриптах их нужно компилировать/собирать в датники.
Отправить личное сообщение для Ответить с цитированием
Старый 24.09.2007, 14:41   #1786
DimonKDF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Как на основе имеющегося глорха сделать глорха другого цвета, притом чтобы оригинал остался.
Пробовал создавать нового НПС (монстра) на основе старого, заменяя название код и пр. но в игре вечно ошибка вы скакивает по поводу ASC модели или монстр остается старый.
Ответить с цитированием
Старый 24.09.2007, 15:14   #1787
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2HikeR:

ну и последний вопрос. если удалить dat файл, и вместо него положить декомпилированные скрипты, готика будте работать с ними? и куда в таком случае их класть?
и нужно ли обязательно начинать новую игру, если произошло редактирование скриптов?
В опциях настройки декомпилятора Вама, есть параметр "Безопасная вставка скриптов в игру". Пропиши путь до игры Г2.. как нужно, остальное программа сделает сама, оно верно как для Г2, так и для Г2-НВ.


2DimonKDF:

Как на основе имеющегося глорха сделать глорха другого цвета, притом чтобы оригинал остался.
Пробовал создавать нового НПС (монстра) на основе старого, заменяя название код и пр. но в игре вечно ошибка вы скакивает по поводу ASC модели или монстр остается старый.
По твоему варианту ни как, игра не позволяет генерить разно текстуренных монстров, по одной инстанции... Для каждого вида нужно, прописывать свою инстанцию с нуля..
Также нужно, декомпилировать файлы монстрика и в его Асц файле изменить текстуруна новую... Именно из-за этого у тебя идет ошибка Асц.
После того как в Асц файле пропишешь новую(ые) текстуры, у твоей новой инстанции монстрика будет новая шкура. :)
Отправить личное сообщение для Ответить с цитированием
Старый 24.09.2007, 16:09   #1788
DimonKDF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2MaGoth:
Для каждого вида нужно, прописывать свою инстанцию с нуля.
Я вообще-то этого и хотел.
Напишу попобробнее. Вот скрипт глорха:
Код:
prototype Mst_Default_Snapper(C_Npc){ * * *name[0] = "Глорх"; * * *guild = GIL_SNAPPER; * * *aivar[AIV_MM_REAL_ID] = ID_SNAPPER; * * *level = 12; * * *attribute[ATR_STRENGTH] = 60; * * *attribute[ATR_DEXTERITY] = 60; * * *attribute[ATR_HITPOINTS_MAX] = 120; * * *attribute[ATR_HITPOINTS] = 120; * * *attribute[ATR_MANA_MAX] = 0; * * *attribute[ATR_MANA] = 0; * * *protection[PROT_BLUNT] = 60; * * *protection[PROT_EDGE] = 60; * * *protection[PROT_POINT] = 60; * * *protection[PROT_FIRE] = 60; * * *protection[PROT_FLY] = 60; * * *protection[PROT_MAGIC] = 0; * * *damagetype = DAM_EDGE; * * *fight_tactic = FAI_SNAPPER; * * *senses = SENSE_HEAR | SENSE_SEE | SENSE_SMELL; * * *senses_range = PERC_DIST_MONSTER_ACTIVE_MAX; * * *aivar[AIV_MM_ThreatenBeforeAttack] = TRUE; * * *aivar[AIV_MM_FollowTime] = FOLLOWTIME_MEDIUM; * * *aivar[AIV_MM_FollowInWater] = TRUE; * * *aivar[AIV_MM_Packhunter] = TRUE; * * *start_aistate = ZS_MM_AllScheduler; * * *aivar[AIV_MM_RestStart] = OnlyRoutine;};func void B_SetVisuals_Snapper(){ * * *Mdl_SetVisual(self,"Snapper.mds"); * * *Mdl_SetVisualBody(self,"Sna_Body",DEFAULT,DEFAULT,"",DEFAULT,DEFAULT,-1);};instance Snapper(Mst_Default_Snapper){      B_SetVisuals_Snapper();      Npc_SetToFistMode(self);};
Я хочу на основе него сделать такого же глорха, но другого цвета. Что мне нужно изменить и на что?
И нужно ли создавать новую модель?
Ответить с цитированием
Старый 24.09.2007, 18:27   #1789
DEDROIT

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2DimonKDF:
А что если сделать так:
1)Изменить цвет в текстуре и назвавть её другим именем.(потом положить её куда надо)
2)Изменить название ASC и прописать в нём свою текстуру(открыть прямо этот ASC блокнотом и прописать название текстуры).
3)Создать новый скрипт Глорха и в этой строчке изменяешь название ASC
Mdl_SetVisualBody(self,"Тут ставишь свой ASC",DEFAULT,DEFAULT,"",DEFAULT,DEFAULT,-1);
Ответить с цитированием
Старый 24.09.2007, 19:36   #1790
DimonKDF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2DEDROIT:
Как я понял ASC в протом виде нету и его нужно получить. Если не секрет, то как?
Ответить с цитированием
Старый 24.09.2007, 20:28   #1791
HikeR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

вопрос по оптимизации.
насколько я помню, частое употребление вызовов ф-ий не ведет к увеличению быстродействия. скажем, нашел я ф-ию
[pre]func int C_IsChapter(var int chapter)
{if (Kapitel == chapter) {return TRUE;};
*return FALSE; };[/pre]
она вызывается только один раз в условии
[pre]if ( C_IsChapter (2)) {return 1;};[/pre]
так как больше вызовов я не обнаружил, то сделал так:
[pre]if ( Kapitel == 2) {return 1;};[/pre]
теоретически все должно работать. а вот практически, можно ли считать, что если в скриптах нет вызова этой ф-ии, то она не нужна совсем? ну скажем из экзешника жестко прописанные вызовы могут идти?

Добавление от 09/24/07, в 20:48:33
вот еще нашел. громадная [pre]func int Spell_ProcessMana(var int manaInvested)[/pre], которая вообще ниоткуда не вызывается.
Ответить с цитированием
Старый 24.09.2007, 21:56   #1792
DEDROIT

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2DimonKDF:
Ага.Нужен компилятор Vam'a и Snapper.mds(найти моно в Gothic II\_work\Data\Anims)
Ответить с цитированием
Старый 24.09.2007, 23:45   #1793
HikeR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

вот еще:
Cпойлер(щелкните, чтобы прочесть):
[pre]instance DIA_Ricelord_TRADE(C_Info)
{
* * *npc = Bau_900_Ricelord;
* * *nr = 800;
* * *condition = DIA_Ricelord_TRADE_Condition;
* * *information = DIA_Ricelord_TRADE_Info;
* * *permanent = 1;
* * *description = "Мы могли бы заключить сделку...";
* * *trade = 1;
};

func int DIA_Ricelord_TRADE_Condition()
{
};[/pre]

чему будет равно condition, и как исправить?

и как можно проэмулировать работу скриптов?
Ответить с цитированием
Старый 25.09.2007, 00:39   #1794
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2HikeR:
func int return_value()
{
   if (i = 1)
   {
         return 1;
   };
};
func int return_value()
{
   if (i = 1)
   {
         return 1;
   };
return 0;
};

2HikeR:
вот еще нашел. громадная
func int Spell_ProcessMana(var int manaInvested)
, которая вообще ниоткуда не вызывается.
Вообще-то нкоторые функции могут быть зашиты в движке, а вызываться в скриптах, изменение или удаление которых в скриптах, может привести к полной неработоспособности игры в дальнейшем :)

2HikeR:
чему будет равно condition, и как исправить?
Элементарно! Поставить в INT функцию ИСТИНУ, или ЛОЖЬ. В случае ИСТИНЫ - condition СРАБОТАЕТ, иначе диалога НЕ БУДЕТ.

Пример 1: Сработает всегда
func int DIA_Ricelord_TRADE_Condition()
{
return TRUE;
};

Пример 2: Срабтает при условии бла-бла-бла
func int DIA_Ricelord_TRADE_Condition()
{
if(бла-бла-бла)
{
return TRUE;
};
return FALSE.
};

Пример 3: Не сработает НИКОГДА
func int DIA_Ricelord_TRADE_Condition()
{
return FALSE;
};

2DimonKDF:
Я хочу на основе него сделать такого же глорха, но другого цвета. Что мне нужно изменить и на что?
Можно на основе стандартной текстуры глорха Sna_Body_V0.tga, создать свою и изменять порядковый номер на 1, Sna_Body_V1.tga, затем перегнать ГоМаноv в TEX формат Sna_Body_V1-C.TEX, т.к. игра САМА может УВИДЕТЬ и автоматически КОНВЕРТИРОВАТЬ только 0 версию текстуры.

Далее создать новую Инстанцию для глорха и Новую визуальную функцию, изменив в ней...

func void B_SetVisuals_MySnapper()
{
    Mdl_SetVisual(self,"Snapper.mds");
    Mdl_SetVisualBody(self,"Sna_Body",1,DEFAULT,"",DEFAULT,DEFAULT,-1);
};

instance MySnapper(Mst_Default_Snapper)
{
    B_SetVisuals_MySnapper();
    Npc_SetToFistMode(self);
};
Ответить с цитированием
Старый 25.09.2007, 01:20   #1795
HikeR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2Ukur:
HikeR: чему будет равно condition, и как исправить?
Элементарно! Поставить в INT функцию ИСТИНУ, или ЛОЖЬ.
согласен, что элементарно. только вот что ставить в таких случаях, когда ф-ия пуста, но объявлена как int? или это какая-то нереализованная задумка?
сама игра-то как рассматривает такие ситуации? может она просто возвращает FALSE, если не указано обратное?
Ответить с цитированием
Старый 25.09.2007, 01:29   #1796
B_Wolf

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2HikeR:
согласен, что элементарно. только вот что ставить в таких случаях, когда ф-ия пуста, но объявлена как int? или это какая-то нереализованная задумка?
Ну так в чем проблема? Если сам ничиго не хочешь придумать, ставь retuern FALSE. Функция как не работала, так и не будет работать, но компилятор уже не будет на нее ругаться..

2HikeR:
сама игра-то как рассматривает такие ситуации? может она просто возвращает FALSE, если не указано обратное?
Тебе же ясно было не раз сказано в теме декомпилятора - ВОЗМОЖНЫ потенциальные ошибки.

P.S. Прекращай зафлуждать скриптовыми вопросами тему Декомпилятора.
Ответить с цитированием
Старый 25.09.2007, 03:43   #1797
HikeR

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

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

Если сам ничиго не хочешь придумать, ставь retuern FALSE.
я не хочу ничего придумывать. есть желание довести скрипты до состояния безошибочной компиляции текущим инструментарием :)
так как ответа на вопрос, "что возвращает func int имя_функции() {}; я не нашел, то решил просто проверить.
в Menu.DAT есть ф-ия показа титров (ну или авторов)
[pre]func int showcredits()
{PlayVideo("credits.bik");
return 1; };[/pre]
я ее немного видоизменил:
Cпойлер(щелкните, чтобы прочесть):
[pre]func int test()
{
* * *if (1 == 0) {return 10;}; //заведомо ложно
};

func int showcredits()
{
* * *if (test () == -1) {PlayVideo("logo1.bik");};
* * *if (test () == 0) {PlayVideo("logo2.bik");};
* * *if (test () == 1) {PlayVideo("extro.bik");}; * * *
* * *if (test () == 2) {PlayVideo("intro.bik");}; * * *
* * *return 1;
};[/pre]

компилятор на это дело поругался, но откомпилировать дал. предполагая, что в случае отсутствия явного указания значения возврата игровой движок вставляет что-то вроде return TRUE или return FALSE, то есть возвращает либо 0 либо 1, я рассчитывал по запущенному ролику определить, какая проверка сработала.
запустил, и еще больше запутался. проигрались ролики logo2.bik и extro.bik, то есть сработали ДВЕ проверки.
получается, что нечто, возвращаемое ф-ий test() не равно -1 и 2, но одновременно равно и нулю и еденице. ну и как это понимать?

Добавление от 09/25/07, в 03:51:07
вроде немного въехал. если предварительно заюзать переменную, то страбатывает только условие проверки на ноль, то есть в нижеприведенном скрипте покажется только ролик intro.bik:
Cпойлер(щелкните, чтобы прочесть):
[pre]var int i;
i = test();
if ( i == -1) {PlayVideo("logo1.bik");};
if ( i == 1) {PlayVideo("logo2.bik");};
if ( i == 2) {PlayVideo("extro.bik");}; * * *
if ( i == 0) {PlayVideo("intro.bik");}; * * *
return 1;[/pre]

а если сделать так:
Cпойлер(щелкните, чтобы прочесть):
[pre] * * *if ( test() == 0) {PlayVideo("logo1.bik");};
* * *if ( test() == 1) {PlayVideo("logo2.bik");};
* * *if ( test() == 1) {PlayVideo("extro.bik");};
* * *if ( test() == 0) {PlayVideo("intro.bik");};[/pre]

то есть при каждой проверке вызывать ф-ию, то проиграются первые три ролика, а четвертый - нет.

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

Добавление от 09/25/07, в 04:03:50
дополнение:
если вызовы происходят в пределах одной ф-ии, то ситуация описана выше. а если из разных ф-ий - то все повторяется, сначала ноль, потом еденица.
вобщем, остановился на том, что везде вставляю return 0, к чему это приведет - видимо узнаю не сразу ;)
Ответить с цитированием
Старый 25.09.2007, 16:15   #1798
DimonKDF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

Как на основе обычного человеского НПС сделать орка? Какие строки надо менять?
Ответить с цитированием
Старый 25.09.2007, 16:39   #1799
MaGoth
A.G.F.C.
  Аватар для MaGoth
 
Регистрация: 04.09.2006
Сообщений: 20
MaGoth вне форума

По умолчанию Re: М: Скриптинг в Готике

2DimonKDF [FC]:

Смотри пример срипта Ур-шака Г2.., а там разберешься.. ;)
Отправить личное сообщение для Ответить с цитированием
Старый 25.09.2007, 16:49   #1800
DimonKDF

AGFC
Гость
 
Сообщений: n/a

По умолчанию Re: М: Скриптинг в Готике

2MaGoth:
Получилось. Спасибо. :)
А где находится стартовая точка Гг?
Ответить с цитированием
Страница 45 из 65 « Первая 353839404142434445 4647484950515255 Последняя »


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе

Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.


Текущее время: 01:21. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot

AGFC: Valley of Gothic © 2004-2022

Яндекс.Метрика