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

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

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

MaGoth

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

Вложения

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

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
Val Der Marix
Ты достаточно много моментов затрагиваешь, говоря про восприятия убийств, драк. Но по делу - тебе смотреть файлы B_AssessMurder, B_AssessFightSound, ZS_WatchFight, B_AssessDefeat
 

Val Der Marix

Участник форума
Регистрация
1 Июн 2007
Сообщения
1.227
Благодарности
32
Баллы
245
redleha
Как я понял, в эти списки можно добавить доп. команды, позволяющие делать исключения в виде определенных неписей? К примеру, добавить в AssessMurder:
(когда уже поступенчато, как я понял, во всех этих записях, сделали исключения, гильдиям, друзьям-врагам, и овцеубийцам, и с прочим, в самом конце приписать, перед последним B_Attack

If (NPCID(self)
&&(NPCID(victim)
{
return
};

А в, скажем, C_Human добавить, к примеру, этот самый NPCID, куда вписать всех персонажей, которым это исключение делается. То же самое и с остальным, и с реакцией на драку, и с первым ударом, этот if приписать - получится ли или совсем ересь? :)
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Вопрос таков: где находятся описания всех spellFX' ов. И еще один вопрос: где в скриптах Когтя Белиара написано, что при ударе по противнику бьет молния?

а в самом когте белиара нет удара молнии?
Хмм,нашел зацепку на счет BeliarDamageChance.Осталось узнать,что это за шанс.Как вариант попробуй в своем мече просто вставить строку BeliarDamageChance и укажи число вручную,либо из значений в Tuning_Addon_beliarweapons
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Возможно ли сделать небольшое условие для доспехов? Типа "нужно 50 ловкости чтобы носить эти доспехи"
Я так понял это оно:
Код:
cond_atr[2] = ATR_перк;
cond_value[2] = значение;
А для чего тогда
Код:
var int change_atr[3];
var int change_value[3];
в классах у C_ITEM?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Так же как и для других предметов. Смотри описание класса c_item в соурсе.
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Ошбика: Индекс 6 выходит за предели массива TEXT и COUNT.и что делать? Проблему решил,но что за change_atr? Изменение характеристик?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Я же сказал смотри в соурсе
Код:
class c_item
{
...
    var int cond_atr[3]; //[B]Массив[/B] атрибутов, требуемых для применения
    var int cond_value[3]; //[B]Массив[/B] значений атрибутов, требуемых для применения
... 
};
Запись [3] означает массив из трех элементов. Ссылаться к ним нужно так:
cond_atr[0];
cond_atr[1];
cond_atr[2];
Аналогично для массива значений.

Код:
     var int change_atr[3]; //(не используется)
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Я же сказал смотри в соурсе
Код:
class c_item
{
...
    var int cond_atr[3]; //[B]Массив[/B] атрибутов, требуемых для применения
    var int cond_value[3]; //[B]Массив[/B] значений атрибутов, требуемых для применения
...
};
Запись [3] означает массив из трех элементов. Ссылаться к ним нужно так:
cond_atr[0];
cond_atr[1];
cond_atr[2];
Аналогично для массива значений.

Код:
    var int change_atr[3]; //(не используется)

а можно ли добавить новую переменную,по типу ATR_STRENGH,например ATR_INTELEKT?
Плохо.Придется использовать штатные средства :(
А если сделать переменную const int NEWATR = 50 а в объекте прописать
Код:
cond_atr[2] = NEWATR;
cond_value[2] = 98;
может ли из этого выйти что-либо?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Строго говоря нет.
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
А можно ли сделать так,если допустим числовое значение отличается от заданного и из-за этого надеть броню нельзя?
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Можно машку за ляшку. Либо выкладывай скрипт, либо ставь конкретный вопрос о том что тебе требуется сделать люди сделают. Вопросы из категории "А можно...?" - сам попробуй. Здесь всетаки вопросы по скриптингу, а не собрание философских трактатов.
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Можно машку за ляшку. Либо выкладывай скрипт, либо ставь конкретный вопрос о том что тебе требуется сделать люди сделают. Вопросы из категории "А можно...?" - сам попробуй. Здесь всетаки вопросы по скриптингу, а не собрание философских трактатов.

Требуется,чтобы если значение переменной NEWATR было больше 25,то можно надеть броньку.
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Требуется,чтобы если значение переменной NEWATR было больше 25,то можно надеть броньку.
все атрибуты обрабатываются движком. Если сила - значит на броне требование силы, у ГГ - наличие этой силы.
ЗЫ. Попытки "наиобмануть" движок чреваты сломом мозгов и излишней головной болью.

А если сделать переменную const int NEWATR = 50 а в объекте прописать Код:

cond_atr[2] = NEWATR;
Написано же русским языком:
cond_atr[2] = ATR_перк;
а не переменная int
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
все атрибуты обрабатываются движком. Если сила - значит на броне требование силы, у ГГ - наличие этой силы.
ЗЫ. Попытки "наиобмануть" движок чреваты сломом мозгов и излишней головной болью.


Написано же русским языком:

а не переменная int

Вообщем,на эту хрень можно забить и все я так понял? Движок не позволяет такого сделать :(
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Вообщем,на эту хрень можно забить и все я так понял?
научитесь вначале находить свои ошибки, а потом в случае полного поражения - можно и забить.
cond_atr[2] = ATR_STRENGTH;
это - описание атрибута, а не значение атрибута
Значение этого атрибута в строке
cond_value[2] = Condition_VLKDolch; - и вот это int
 

hell9999

Участник форума
Регистрация
12 Апр 2008
Сообщения
2.049
Благодарности
1.169
Баллы
340
Вообщем,на эту хрень можно забить и все я так понял? Движок не позволяет такого сделать :(
Учимся думать нестандартно.
Создаем переменную, нужное значение которой позволит доспех одевать.
При нужном значении этой переменной присваиваем определенный флаг. При экипировке брони производится проверка данного флага. Тру - доспех экипируется. Нет - автоматическая дезэкипировка с выводом текстового сообщения на экран.
Что сложного?
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Учимся думать нестандартно.
Создаем переменную, нужное значение которой позволит доспех одевать.
При нужном значении этой переменной присваиваем определенный флаг. При экипировке брони производится проверка данного флага. Тру - доспех экипируется. Нет - автоматическая дезэкипировка с выводом текстового сообщения на экран.
Что сложного?

Да ты генератор идей,спасибо за подсказку! Попытаюсь это реализовать.Подскажи пожалуйста,как можно присвоить флаг к переменной.Знаю что присвоение выглядит так: a=b

Движок много чего позволяет. Главное знать с какой стороны к нему подойти. Например, почему бы не воспользовоться ф-й : Код: // одетые доспехи НПС npc убираются в инвентарь. func void AI_UnequipArmor(var C_NPC npc);
Я видел эту функцию,но забыл как она записывается,спасибо что напомнил. Эта функция имеет обратное значение? Т.е. Надеть броню,а не снять.
 

Ilot

Участник форума
Регистрация
17 Сен 2010
Сообщения
798
Благодарности
297
Баллы
245
Вообщем,на эту хрень можно забить и все я так понял? Движок не позволяет такого сделать
Движок много чего позволяет. Главное знать с какой стороны к нему подойти. Например, почему бы не воспользовоться ф-й :
Код:
// одетые доспехи НПС npc убираются в инвентарь.
func void AI_UnequipArmor(var C_NPC npc);
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Пока напишу скрипт тестовый:
Код:
int a = 1
flags = 0
if (a = 2)
{
flags = 1
  if (flags == 1)
{
AI_equipArmor(hero,instanse)
}
else if (flags != 1)
{
AI_UnequipArmor(hero,instanse)
}
}
Язык программирования я изучал очень мало,по этому если есть ошибки - подправьте.
 
Сверху Снизу