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

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

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

MaGoth

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

Вложения

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

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Спор практика с голым теоретиком. :D
Практик ищет решение проблем по мере их возникновения и видит реальную схему воплощения, а теоретик занимается обсасыванием теоретических проблем и причин невозможности использования по причине теории.
Можно сделать пушку как предлагает Myxomop, и она будет ездить, стрелять по всем враждебным целям (можно и без диалогов, по восприятию), заряжаться через диалог (с выбором снарядов - типов заклов) при дистанции до врагов более определенной, снаряды будут с разным визуалом и эффектом (хоть ядерной бомбы). Да, стены ломать в произвольном месте проблематично будет - но ворота вынести не особая проблема.
Может это местами и комично будет выглядеть - но будет работать.
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
Для скриптинга какой язык нужно знать?
 

Наяд

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.050
Благодарности
0
Баллы
220
Vitalik, если ты имеешь ввиду языки программирования, то их совсем необязательно знать, просто нужно научиться понимать что пишут в туторах. Можешь конечно выучить C++ (можно вообще любой, но этот более близок), тогда наверняка все поймешь (однако хрен знает, сколько ты его будешь учить). НО! Тот же результат будет (если ограничиваться модостроением), если ты просто вдумчиво прочитаешь "Уроки скриптологии" под авторством Вама на аг.ру, что есть в 100 раз проще, чем учить целый язык. Если не ошибаюсь, где-то ты уже задавал подобные вопросы, и раз задаешь снова, значит так и не прочитал, или недостаточно занимался. Главное - не лениться.
Гран пардон за нотацию)
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
Vitalik, если ты имеешь ввиду языки программирования, то их совсем необязательно знать, просто нужно научиться понимать что пишут в туторах. Можешь конечно выучить C++ (можно вообще любой, но этот более близок), тогда наверняка все поймешь (однако хрен знает, сколько ты его будешь учить). НО! Тот же результат будет (если ограничиваться модостроением), если ты просто вдумчиво прочитаешь "Уроки скриптологии" под авторством Вама на аг.ру, что есть в 100 раз проще, чем учить целый язык. Если не ошибаюсь, где-то ты уже задавал подобные вопросы, и раз задаешь снова, значит так и не прочитал, или недостаточно занимался. Главное - не лениться.
Гран пардон за нотацию)
Соглашусь, просто ответил так же как поставлен вопрос:)
Но язык с++ желательно знать просто для того, чтобы лучше понимать свою работу. Это избавит от многих проблем, сужу по своему опыту.:) Можно моддить и не зная языков программирования, это просто будет сложнее.
Vitalik Если не обладаешь знаниями языка - попробуй найти в помощь себе программиста.
 

xterm

Участник форума
Регистрация
25 Июн 2009
Сообщения
5.178
Благодарности
16
Баллы
400
Vitalik, еще одно мнение по вопросу.
Навыки программирования особо не нужны, по сути тут им не пахнет. Что нужно, это много времени, усидчивость и немного смекалки. + умение использовать функцию поиска в программе Gothic Sourcer, что очень просто*flowers* Смотришь как что сделано в оригинале игры, и делаешь по образу-подобию;)
 

Wallerstein

Участник форума
Регистрация
26 Апр 2009
Сообщения
965
Благодарности
24
Баллы
195
Feuermagier
Но язык с++ желательно знать просто для того, чтобы лучше понимать свою работу. Это избавит от многих проблем, сужу по своему опыту
Эх да, помню было время когда просиживали часами в универе с книгой по с++ :'(

А на самом деле, как правильно сказали выше, для скриптинга необязательно знать какой-либо язык программирования в принципе. Мало того, модостроение не ограничивается только одними скриптами.

Vitalik а теперь собственно по существу
http://mod.worldofgothic.ru/scripting
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
Помогите решить ошибку

func int Spell_ProcessMana(var int manaInvested)
{
var int activeSpell;
activeSpell = Npc_GetActiveSpell(self);
if(activeSpell == SPL_PalLight)
{
return Spell_Logic_PalLight(manaInvested);
};
if(activeSpell == SPL_PalLightHeal)
{
return Spell_Logic_PalLightHeal(manaInvested);
};
if(activeSpell == SPL_PalHolyBolt)
{
return Spell_Logic_PalHolyBolt(manaInvested);
};
if(activeSpell == SPL_PalMediumHeal)
{
return Spell_Logic_PalMediumHeal(manaInvested);
};
if(activeSpell == SPL_PalRepelEvil)
{
return Spell_Logic_PalRepelEvil(manaInvested);
};
if(activeSpell == SPL_PalFullHeal)
{
return Spell_Logic_PalFullHeal(manaInvested);
};
if(activeSpell == SPL_PalDestroyEvil)
{
return Spell_Logic_PalDestroyEvil(manaInvested);
};
if(activeSpell == SPL_PalTeleportSecret)
{
return Spell_Logic_PalTeleportSecret(manaInvested);
};
if(activeSpell == SPL_TeleportSeaport)
{
return Spell_Logic_TeleportSeaport(manaInvested);
};
if(activeSpell == SPL_TeleportMonastery)
{
return Spell_Logic_TeleportMonastery(manaInvested);
};
if(activeSpell == SPL_TeleportFarm)
{
return Spell_Logic_TeleportFarm(manaInvested);
};
if(activeSpell == SPL_TeleportXardas)
{
return Spell_Logic_TeleportXardas(manaInvested);
};
if(activeSpell == SPL_TeleportPassNW)
{
return Spell_Logic_TeleportPassNW(manaInvested);
};
if(activeSpell == SPL_TeleportPassOW)
{
return Spell_Logic_TeleportPassOW(manaInvested);
};
if(activeSpell == SPL_TeleportOC)
{
return Spell_Logic_TeleportOC(manaInvested);
};
if(activeSpell == SPL_TeleportOWDemonTower)
{
return Spell_Logic_TeleportOWDemonTower(manaInvested);
};
if(activeSpell == SPL_TeleportTaverne)
{
return Spell_Logic_TeleportTaverne(manaInvested);
};
if(activeSpell == SPL_Light)
{
return Spell_Logic_Light(manaInvested);
};
if(activeSpell == SPL_Firebolt)
{
return Spell_Logic_Firebolt(manaInvested);
};
if(activeSpell == SPL_Icebolt)
{
return Spell_Logic_IceBolt(manaInvested);
};
if(activeSpell == SPL_Zap)
{
return Spell_Logic_Zap(manaInvested);
};
if(activeSpell == SPL_LightHeal)
{
return Spell_Logic_LightHeal(manaInvested);
};
if(activeSpell == SPL_SummonGoblinSkeleton)
{
return Spell_Logic_SummonGoblinSkeleton(manaInvested);
};
if(activeSpell == SPL_InstantFireball)
{
return Spell_Logic_InstantFireball(manaInvested);
};
if(activeSpell == SPL_SummonWolf)
{
return Spell_Logic_SummonWolf(manaInvested);
};
if(activeSpell == SPL_WindFist)
{
return Spell_Logic_WindFist(manaInvested);
};
if(activeSpell == SPL_Sleep)
{
return Spell_Logic_Sleep(manaInvested);
};
if(activeSpell == SPL_MediumHeal)
{
return Spell_Logic_MediumHeal(manaInvested);
};
if(activeSpell == SPL_LightningFlash)
{
return Spell_Logic_LightningFlash(manaInvested);
};
if(activeSpell == SPL_ChargeFireball)
{
return Spell_Logic_ChargeFireball(manaInvested);
};
if(activeSpell == SPL_ChargeZap)
{
return Spell_Logic_ChargeZap(manaInvested);
};
if(activeSpell == SPL_SummonSkeleton)
{
return Spell_Logic_SummonSkeleton(manaInvested);
};
if(activeSpell == SPL_Fear)
{
return Spell_Logic_Fear(manaInvested);
};
if(activeSpell == SPL_IceCube)
{
return Spell_Logic_IceCube(manaInvested);
};
if(activeSpell == SPL_ChargeZap)
{
return Spell_Logic_ChargeZap(manaInvested);
};
if(activeSpell == SPL_SummonGolem)
{
return Spell_Logic_SummonGolem(manaInvested);
};
if(activeSpell == SPL_DestroyUndead)
{
return Spell_Logic_DestroyUndead(manaInvested);
};
if(activeSpell == SPL_Pyrokinesis)
{
return Spell_Logic_Pyrokinesis(manaInvested);
};
if(activeSpell == SPL_Firestorm)
{
return Spell_Logic_Firestorm(manaInvested);
};
if(activeSpell == SPL_IceWave)
{
return Spell_Logic_IceWave(manaInvested);
};
if(activeSpell == SPL_SummonDemon)
{
return Spell_Logic_SummonDemon(manaInvested);
};
if(activeSpell == SPL_FullHeal)
{
return Spell_Logic_FullHeal(manaInvested);
};
if(activeSpell == SPL_Firerain)
{
return Spell_Logic_Firerain(manaInvested);
};
if(activeSpell == SPL_BreathOfDeath)
{
return Spell_Logic_BreathOfDeath(manaInvested);
};
if(activeSpell == SPL_MassDeath)
{
return Spell_Logic_Massdeath(manaInvested);
};
if(activeSpell == SPL_ArmyOfDarkness)
{
return Spell_Logic_ArmyOfDarkness(manaInvested);
};
if(activeSpell == SPL_Shrink)
{
return Spell_Logic_Shrink(manaInvested);
};
if(activeSpell == SPL_TrfSheep)
{
return Spell_Logic_TrfSheep(manaInvested);
};
if(activeSpell == SPL_TrfScavenger)
{
return Spell_Logic_TrfScavenger(manaInvested);
};
if(activeSpell == SPL_TrfGiantRat)
{
return Spell_Logic_TrfGiantRat(manaInvested);
};
if(activeSpell == SPL_TrfGiantBug)
{
return Spell_Logic_TrfGiantBug(manaInvested);
};
if(activeSpell == SPL_TrfWolf)
{
return Spell_Logic_TrfWolf(manaInvested);
};
if(activeSpell == SPL_TrfWaran)
{
return Spell_Logic_TrfWaran(manaInvested);
};
if(activeSpell == SPL_TrfSnapper)
{
return Spell_Logic_TrfSnapper(manaInvested);
};
if(activeSpell == SPL_TrfWarg)
{
return Spell_Logic_TrfWarg(manaInvested);
};
if(activeSpell == SPL_TrfFireWaran)
{
return Spell_Logic_TrfFireWaran(manaInvested);
};
if(activeSpell == SPL_TrfLurker)
{
return Spell_Logic_TrfLurker(manaInvested);
};
if(activeSpell == SPL_TrfShadowbeast)
{
return Spell_Logic_TrfShadowbeast(manaInvested);
};
if(activeSpell == SPL_TrfDragonSnapper)
{
return Spell_Logic_TrfDragonSnapper(manaInvested);
};
if(activeSpell == SPL_Charm)
{
return Spell_Logic_Charm(manaInvested);
};
if(activeSpell == SPL_MasterOfDisaster)
{
return Spell_Logic_MasterOfDisaster(manaInvested);
};
if(activeSpell == SPL_ConcussionBolt)
{
return Spell_Logic_Concussionbolt(manaInvested);
};
if(activeSpell == SPL_Deathbolt)
{
return Spell_Logic_Deathbolt(manaInvested);
};
if(activeSpell == SPL_Deathball)
{
return Spell_Logic_Deathball(manaInvested);
};
if(activeSpell == SPL_Thunderstorm)
{
return Spell_Logic_Thunderstorm(manaInvested);
};
if(activeSpell == SPL_WaterFist)
{
return Spell_Logic_Waterfist(manaInvested);
};
if(activeSpell == SPL_Whirlwind)
{
return Spell_Logic_Whirlwind(manaInvested);
};
if(activeSpell == SPL_Geyser)
{
return Spell_Logic_Geyser(manaInvested);
};
if(activeSpell == SPL_Inflate)
{
return Spell_Logic_Inflate(manaInvested);
};
if(activeSpell == SPL_IceLance)
{
return Spell_Logic_Icelance(manaInvested);
};
if(activeSpell == SPL_Swarm)
{
return Spell_Logic_Swarm(manaInvested);
};
if(activeSpell == SPL_GreenTentacle)
{
return Spell_Logic_Greententacle(manaInvested);
};
if(activeSpell == SPL_SummonGuardian)
{
return Spell_Logic_SummonGuardian(manaInvested);
};
if(activeSpell == SPL_Energyball)
{
return Spell_Logic_EnergyBall(manaInvested);
};
if(activeSpell == SPL_SuckEnergy)
{
return Spell_Logic_SuckEnergy(manaInvested);
};
if(activeSpell == SPL_Skull)
{
return Spell_Logic_Skull(manaInvested);
};
if(activeSpell == SPL_SummonZombie)
{
return Spell_Logic_SummonZombie(manaInvested);
};
if(activeSpell == SPL_SummonMud)
{
return Spell_Logic_SummonMud(manaInvested);
};
}; <---указывает стрелка
Функция должна возвращать значение меняю на void таже фигня
 

HeDeDe

Участник форума
Регистрация
17 Авг 2009
Сообщения
203
Благодарности
79
Баллы
180
Vitalik,
Добавь перед строчкой, на которую указывает стрелка return 0;
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
func int DIA_Andre_CantharFalle_Info()
{
if(Andre_Steckbrief == FALSE)
{
B_Andre_Steckbrief();
};
if((Andre_CantharFalle == FALSE) && (MIS_Canthars_KomproBrief_Day <= (Wld_GetDay() - 2)))
{
B_Andre_CantharFalle();
};
};
Опять если void велетает ошибка галимая
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Vitalik, я не пойму ты что оригинальные скрипты декомпилируешь что ли?
Если в этом не силен, то лучше скачай уже декомпилированные скрипты от Г2а Акелла. В них поправлены все ошибки, но внимания не правились.
+ изменены и добавлены некоторые параметры в игре и рюкзаке Гг.
Скачать можешь здесь:
http://mod.worldofgothic.ru/
 

Vitalik

Участник форума
Регистрация
30 Май 2010
Сообщения
108
Благодарности
0
Баллы
165
Так и есть. Я уже их скачивал эти скрипты такая муть и всяких дополнений полно лучше по своему сделать:)
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Vitalik, Ну, в таком случае читай тутор Вама.
 

zauron

Участник форума
Регистрация
26 Янв 2010
Сообщения
36
Благодарности
0
Баллы
150
итем с эффектом невидимости

доброго времени суток, уважаемые.
а возможно на ГГ применить корректно флаг невидимости
(чтобы стал полупрозрачным)?

если возможно распишите скрипт одевания и снятия итема
 

Spielmann

Участник форума
Регистрация
22 Май 2010
Сообщения
106
Благодарности
7
Баллы
175
Как сделать так чтоб земля дрожала как у руинах древнего храма?
 

Wallerstein

Участник форума
Регистрация
26 Апр 2009
Сообщения
965
Благодарности
24
Баллы
195
Wld_PlayEffect("FX_EARTHQUAKE",self,self,0,0,0,FALSE);
Можно ставить в тело диалога и в триггер и в функцию
 

NIKO666

Участник форума
Регистрация
9 Авг 2010
Сообщения
13
Благодарности
0
Баллы
150
Народ, подскажите, как можно в мод добваить свою музыку? В какую папку нужно ее закидывать, в каком формате и где ее обьявлять?*???**???**???*
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
451
Благодарности
269
Баллы
230
zauron, используй полупрозрачные текстуры для тела героя, т.е. с альфа-каналом, либо думай как обновить тело с учётом флага невидимости. Учти, что тело героя не обновляется, если динамически, т.е. в ходе одевания предмета присвоить значение - флаг полупрозрачности героя. Установленный флаг работает только после загрузки игры.
А если использовать текстуры, то нужно будет писать дополнительные восприятия на такого нпс. Понимаешь о чём идёт речь? Просто пишу в общем плане... А зачем собственно тебе такие сказки про шапку-невидимку?:D

Можно попробовать через свиток превращения
Должно срабатывать моментально, также как и одевание доспехов. А в твоём случае нужно присутствие юзера и его нажатия.
 
Сверху Снизу