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

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

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

MaGoth

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

Вложения

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

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Солве,
Если ты декомпилировал скрипты, ищи там, где у тебя лежат эти самые декомпилированные скрипты.
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
я там и ищу... у меня стоит Готика Возвращение... я ADDON_RETURNING.vdf разпоковал готик.дат декомпилировал, но там нету этго файла IT_Runen и скрипта Галлахард тоже нету
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Солве,
Тут смотрел?
GothicSourcer\Gothic Projects\SolXXX\PrjGothic\Items
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
да именно там
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.170
Благодарности
398
Баллы
285
Солве, сделай поиск в скриптах любого файла содержащего текст. К примеру "ItRu_PalLight"
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
Дело в том что меня интеречует руна "уничтожение нежити" но ее почемуто пишут по разному... что ж буду искать спасибо всем
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Солве,
ну в оригинале эта руна ItRu_HarmUndead
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
слушайте а как поменять расход маны на руну?
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.170
Благодарности
398
Баллы
285
Солве,
GothicSourcer V3.14\Gothic Projects\SolXXX\PrjGothic\AI\Magic\Spells\

первая переменная в файле заклинания, по типу:
const int SPL_Cost_Firerain = 150;
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
в этом то и дело... я тутор читал там написано как изменить расход маны но у меня в скрипте закла нет переменной по типу const int SPL_Cost_Firerain = 150 вот как выглядит скрипт который у меня
instance Spell_DestroyUndead(C_Spell_Proto)
{
time_per_mana = 0;
damage_per_level = SPL_Damage_DESTROYUNDEAD;
spellType = SPELL_NEUTRAL;
};

func int Spell_Logic_DestroyUndead(var int manaInvested)
{
if(Hlp_GetInstanceID(other) == Hlp_GetInstanceID(senyak_demon))
{
B_Say(self,self,"$DONTWORK");
return SPL_SENDSTOP;
};
if(other.guild == GIL_DEMON)
{
B_Say(self,self,"$DONTWORK");
return SPL_SENDSTOP;
};
if(!C_NpcIsUndead(other))
{
B_Say(self,self,"$DONTWORK");
return SPL_SENDSTOP;
};
if(Npc_GetActiveSpellIsScroll(self) && (self.attribute[ATR_MANA] >= SPL_COST_SCROLL2))
{
return SPL_SENDCAST;
}
else if(self.attribute[ATR_MANA] >= SPL_Cost_DESTROYUNDEAD)
{
return SPL_SENDCAST;
}
else
{
return SPL_SENDSTOP;
};
return SPL_SENDSTOP;
};
func void Spell_Cast_DestroyUndead()
{
if(Npc_IsPlayer(self) && (PLAYERISTRANSFER == TRUE) && (PLAYERISTRANSFERDONE == FALSE))
{
b_transferback(self);
};
if(Npc_GetActiveSpellIsScroll(self))
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_COST_SCROLL2;
}
else
{
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_DESTROYUNDEAD;
};
UNDEADCAST = 1;
if(Npc_IsPlayer(self) && (MIS_RUNEMAGICNOTWORK == LOG_Running) && (TESTRUNEME == FALSE) && !Npc_GetActiveSpellIsScroll(self))
{
if((FIREMAGERUNESNOT == TRUE) || (WATERMAGERUNESNOT == TRUE) || (GURUMAGERUNESNOT == TRUE) || (PALADINRUNESNOT == TRUE))
{
B_LogEntry(TOPIC_RUNEMAGICNOTWORK,"Как интересно! В отличие от Пирокара и других прочих магов, я могу использовать рунную магию. Что бы это значило?!");
}
else
{
B_LogEntry(TOPIC_RUNEMAGICNOTWORK,"Как интересно! В отличие от Пирокара, я могу использовать рунную магию. Что бы это значило?!");
};
TESTRUNEME = TRUE;
};
self.aivar[AIV_SelectSpell] += 1;
};
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.170
Благодарности
398
Баллы
285
Солве, ну дык возможно объявление этой константы перенесено в другой файл:
Здесь это SPL_Cost_DESTROYUNDEAD

ведь видишь строку:
self.attribute[ATR_MANA] = self.attribute[ATR_MANA] - SPL_Cost_DESTROYUNDEAD;
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
а все нашел!!! дамаг и расход маны пееписан в Constant.d

парни я вобщем изменил круг и расход маны на руну, все вступило в силу, но теперь как только заклинание поражает цель, у меня вылетает из игры!!! в чем дело?
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
Это может быть ошибка стека. Если так, то у тебя в скрипте где-то ошибка, причём не синтаксическая, т.е. ошибка не для соурсера(при условии, что произошла линковка...), а ошибка в самой логике написанного скрипта. Пробуй удалять по строчке в скрипте(где ошибка. Т.е. до этого же было всё норм., а потом при написании чего-то появилась ошибка. Удаляй не на прямую, а оставляй их в виде комментариев - //строчка.) или просто удаляй подозрительные строчки и всё тестируй. Найди то место, где ошибка...
так я же ничего толком не менял!!! я исправил только 2 цифры: э то круг магии и расход маны
Попробуй их убери, сделй как было раньше. Если будет всё норм, значит это из за них. Я подозреваю, что ты вообще чего-то где-то не дописал.
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
так я же ничего толком не менял!!! я исправил только 2 цифры: э то круг магии и расход маны
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.170
Благодарности
398
Баллы
285
Солве, а теперь попробуй поменять обратно круг магии.
 

Солве

Участник форума
Регистрация
2 Июл 2010
Сообщения
16
Благодарности
0
Баллы
150
не поверите))) я поменял все как было, таже проблема))) переустановил Готику ТАЖЕ ПРОБЛЕМА!!! дело было не в том что я там намудрил... ошибка идет изначально (играю в возвращение + патч 1.12)

А как поменять количество LP необходимое на обучение? Например я хочу что бы меня обучали "карманному воровству" не за 10 LP а за 15... напишите строку которую надо править


MaGothМне уже надоело ходить за тобой и объединять посты, увижу дабл пост еще раз отправлю в бан на недельку.

Что до твоего вопроса, то читаем Тутор Вама.
 

Наяд

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.050
Благодарности
0
Баллы
220
Солве, ты бы сначала как следует покопался в скриптах, в идеале - изучи каждый файл в проекте. И все туторы прочитай обязательно, и не один раз, методично сравнивая со скриптами. А потом уже задавай вопросы, что непонятно;).

Посту ниже:
Да нет, он хочет быстрый хелп по скриптам, чтобы не рыться самому...
От такого подхода ничего хорошего не выйдет. Товарищ постоянно будет спрашивать о всякой хрени, наподобие последнего вопроса, и о соответственно постоянно возникающих из-за неграммотности ошибок. Результат - всех задолбает или поймает бан.
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
Да нет, он хочет быстрый хелп по скриптам, чтобы не рыться самому...
Впринципе в программе для работы со скриптами есть функция поиска. Почему бы тебе не поискать самому? попробуй поискать по ключевым фразам, по диалогам...
Врят ли кто тебе здесь напишет нпс с диалогом обучения...
Возможно что разработчики-скриптеры писали все функции для своего продукта со своими константами и значениями, а не с переменными. Можно конечно поискать эти значения...
В скрипте Story\B_Story\b_getlearncosttalent.d есть строчки для навыков воровства и вскрытия замков:
if((talent == NPC_TALENT_PICKLOCK) || (talent == NPC_TALENT_PICKPOCKET))
{
kosten = 10;//вот это число и означает константу очков обучения для этих умений
};
А можно написать небольшую функцию для изучения воровства(так, ради развития мозга;)):
func void TEACH_TALENT_PICKPOCKET(var C_Npc npc, var int LpCost)
{
if (Npc_GetTalentSkill(npc,NPC_TALENT_PICKPOCKET) == 0)//если не обучен, то
{
if (npc.lp >= LpCost) //если НПС имеет требуемое кол-во очков обучения или больше, то
{
npc.lp = npc.lp - LpCost;//отнимаем очки обучения
Npc_SetTalentSkill(npc,NPC_TALENT_PICKPOCKET,1);//получаем навык воровства
PrintScreen(PRINT_LearnPickpocket,-1,-1,FONT_Screen,2);//сообщение о том, что изучили
}
else
{
PrintScreen(PRINT_NotEnoughLP,-1,-1,FONT_Screen,2);//не хватает очков обучения
};
}
else
{
PrintScreen("Я уже обучен воровским навыкам!",-1,-1,FONT_Screen,2);//NPC уже обучен
};
};
// Где npc - это тот, кто учится навыку,
// а LpCost - это кол-во очков обучения, требуемое для изучения навыка
//Вызвать можно хоть через пузырёк, хоть через диалог, вобщем обычная функция!

MaGoth, баном дело не поправишь... Дай понять человеку, что нужно экономить место на форуме и не дабл постить, т.к. можно просто исправить или дополнить своё выше изложенное сообщение.
Ну бывает так, что нечаянно создатся ещё один пост. Ну можно простить...
А что касается ссылки на турор Вама, то там не всё написано, там рассмотрены только базовые функции и процедуры... Не стоит всегда ссылаться на этот тутор, потому что разработчики понаписали множество своих функций и процедур.

Солве, прими во внимание выше сказанное, как администратором, так и мной(в какой-то степени), и мотай на ус.
Ну конечно твоё дело учиться и твоё дело решать что тебе делать, а что нет.
Знай, что есть кнопка "Правка" и с помощью неё можно править свои сообщения!

Посту ниже:
Jr13San,
пример, конечно, крутой, только нафиг не нужный - есть стандартная функция B_TeachThiefTalent

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