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

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

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

MaGoth

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

Вложения

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

Dimmell

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

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Если у тебя пиратка, то что ты тогда пишешь о багах скриптов, если у тебя ехе-шник кривой? ::)
 

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
MaGoth написал(а):
Если у тебя пиратка, то что ты тогда пишешь о багах скриптов, если у тебя ехе-шник кривой? ::)
Я не писал о багах, а спросил о функции.
На моем кривом ехе я не словил и десятой доли всех описаных в темах багов.
 
Последнее редактирование модератором:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Какая разница что ты там словил, а чего нет?! Модостроение будет нормальным только при условии не взломаного ехешника. А то что у тебя функция не работает, мало кого волнует, у других она идет. Это в нем грабли. ибо я много багов замечал при модинге на пиратках. Так что, покупай лиценз, и не парься. ;)
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
Dimmell написал(а):
MaGoth написал(а):
Если у тебя пиратка, то что ты тогда пишешь о багах скриптов, если у тебя ехе-шник кривой? ::)
Я не писал о багах, а спросил о функции.
На моем кривом ехе я не словил и десятой доли всех описаных в темах багов.
Если хочеш знать в чем именно дело, то попробуй заюзать ЭТОТ патчь он должен исправить это дело если оно Действительно в двиге, в чем я лично сомневаюсь...
 
Последнее редактирование модератором:

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
@Saturas
Кому нужен офф ехешник без защиты может скачать его с вог.де или ру.
http://dl.worldofgothic.ru/
Варез толкаешь, линк снес. :D
 

Saturas


Модостроитель
Регистрация
11 Фев 2009
Сообщения
2.512
Благодарности
1.334
Баллы
315
MaGoth написал(а):
@Saturas
Кому нужен офф ехешник без защиты может скачать его с вог.де или ру.
http://dl.worldofgothic.ru/
Варез толкаешь, линк снес. :D
Какой еще в гроб Варез?? С вогде тогда не качало хз почему, вот и взял у себя с харда и залил на рапиду.

MaGoth
А что мешает на вог.ру скачать(вопрос риторический)?!
По остальному ответил в РМ.
 
Последнее редактирование модератором:

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Последнее редактирование модератором:

Myxomop

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

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
1. ЕХЕ здесь не при чем. Проверял. Кстати, интересное различие в размере ЕХЕ: разница более чем в 2 Мб (UPX не ужаты оба) И что же в это входит? :eek:
2. Все вызванные существа в состоянии покоя живут 5 мин. 16 сек (+- погрешность каста и нажатия кнопки секундомера) не зависимо от значения, указанного в Wld_SpawnNpcRange(self,gobbo_skeleton_noneexp,1,500)
3. В случае атаки включается скрипт в ZS_MM_Attack.d
if(self.level == 0)
{
if(Npc_GetStateTime(self) >self.aivar[AIV_StateTime])
{
self.aivar[AIV_SummonTime] = self.aivar[AIV_SummonTime] + 1;
self.aivar[AIV_StateTime] = Npc_GetStateTime(self);
};
if(self.aivar[AIV_SummonTime] >= MONSTER_SUMMON_TIME)
{
Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);
};
};
const int MONSTER_SUMMON_TIME = 60; в AI_Constants.d
И едет "расчет"времени жизни до рассыпания существа.
Проверено на скелетах-гоблинах - вызов отдельно"моего"(5м16с) и вызов 2-х - "моего"и обычного. Мой рассыпался через 1 мин 17 сек, противник прожил 1 мин 19 сек (мечом, наверное, меньше махал :) )
В случае вызова"моего"гоблина и простого волка - гоблин жил 5 мин. 15 сек (убив волка).
Выводы:
1. Функция не работает как описано. Расчет ведется общим для всех счетчиком только в случае атаки.
2. Прописывать в Wld_SpawnNpcRange(self,gobbo_skeleton_noneexp,1,500) можете любые значения, на фактическом времени жизни они никак не сказываются.
3.если есть желание - можно поэкспериментировать с const int MONSTER_SUMMON_TIME = 60 ,переведя ее в переменную и изменяя значения для разных существ. Лично у меня желания нет.
Благодарю всех, кто помог разобраться.
PS. Поразмышляв немного, можно попробовать сделать так:
в функции Wld_SpawnNpcRange(self,gobbo_skeleton_noneexp,1,ХХХ) использовать переменную, которую вставить вместо MONSTER_SUMMON_TIME в ZS_MM_Attack.d. Переменную изменять в зависимости от вызываемого существа - будет различное время жизни существ при атаке. :)
 
Последнее редактирование модератором:

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Dimmell
А не обязательно вообще использовать MONSTER_SUMMON_TIME и как-то над ней извращаться, ведь обработка времени идет именно в этом скрипте:

if(self.level == 0)
{
if(Npc_GetStateTime(self) >self.aivar[AIV_StateTime])
{
self.aivar[AIV_SummonTime] = self.aivar[AIV_SummonTime] + 1;
self.aivar[AIV_StateTime] = Npc_GetStateTime(self);
};
if(self.aivar[AIV_SummonTime] >= MONSTER_SUMMON_TIME)
{
Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);
};
};

Сравнивается счетчик времени self.aivar[AIV_SummonTime] с MONSTER_SUMMON_TIME, после чего монстер убивается Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);

Но ведь с self.aivar[AIV_SummonTime] можно сравнивать любое значение... например:

MONSTER_SKELETON_TIME = 120;

if(self.aivar[AIV_SummonTime] >= MONSTER_SKELETON_TIME)
{
Npc_ChangeAttribute(self,ATR_HITPOINTS,-self.attribute[ATR_HITPOINTS_MAX]);
};
 
Последнее редактирование модератором:

Dimmell

Участник форума
Регистрация
23 Ноя 2008
Сообщения
2.899
Благодарности
111
Баллы
285
Dimmell
А не обязательно вообще использовать MONSTER_SUMMON_TIME и как-то над ней извращаться, ведь обработка времени идет именно в этом скрипте:
Я написал для примера (замудрено правда) что можно просто использовать блок из ZS_MM_Attack.d если хочешь хоть как-то контролировать время жизни вызванных существ во время боя.
 

redleha


Модостроитель
Регистрация
26 Фев 2008
Сообщения
735
Благодарности
665
Баллы
245
Dimmell написал(а):
Dimmell
А не обязательно вообще использовать MONSTER_SUMMON_TIME и как-то над ней извращаться, ведь обработка времени идет именно в этом скрипте:
Я написал для примера (замудрено правда) что можно просто использовать блок из ZS_MM_Attack.d если хочешь хоть как-то контролировать время жизни вызванных существ во время боя.
Блин, повесить всё на циклический триггер-скрипт, да и фиг с ним. Контролируй жизнь существ сам как только душе будет угодно.
 
Последнее редактирование модератором:

Sabertooth

Участник форума
Регистрация
10 Авг 2009
Сообщения
51
Благодарности
0
Баллы
155
Может кто нибудь подсказать мне необразованному, какая переменная за защиту от чего отвечает и почему их пять, от чего пятая защищает? protection[PROT_EDGE] = 0; protection[PROT_BLUNT] = 0; protection[PROT_POINT] = 0; protection[PROT_FIRE] = 0; protection[PROT_MAGIC] = 0; последние две ещё ясно, огонь и магия, а вот три первых меня и интересуют
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
Sabertooth написал(а):
Может кто нибудь подсказать мне необразованному, какая переменная за защиту от чего отвечает и почему их пять, от чего пятая защищает? protection[PROT_EDGE] = 0; protection[PROT_BLUNT] = 0; protection[PROT_POINT] = 0; protection[PROT_FIRE] = 0; protection[PROT_MAGIC] = 0; последние две ещё ясно, огонь и магия, а вот три первых меня и интересуют
Скачай тутор Вама по скриптингу и его изучай, большая часть подобных вопросов отпадет...
Где скачать?!
Юзай поиск по форуму - Vam_tutor.chm или Vam_tutor.html.
 
Последнее редактирование модератором:

s@m


Модостроитель
Регистрация
2 Мар 2007
Сообщения
315
Благодарности
56
Баллы
195
Друзья, нужен мудрый совет относительно скриптов, но тут не совсем по скриптам а касаемо их редактирования 2мя людьми...
Описываю ситуацию, у нас с другом по команде сейчас идёт работа над скриптами, и нам очень не удобно их редактировать в том плане что у него свои скрипты на мод а у меня свои. И получается эдакое недоразумение, как потом их обьеденить если у нас совершенно разные скрипты получаются, то есть он вносит изменени в скрипты а у меня ведь не появатся эти изменеия, файлик старым останется(( Помогите :(
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
s@m написал(а):
Друзья, нужен мудрый совет относительно скриптов, но тут не совсем по скриптам а касаемо их редактирования 2мя людьми...
Описываю ситуацию, у нас с другом по команде сейчас идёт работа над скриптами, и нам очень не удобно их редактировать в том плане что у него свои скрипты на мод а у меня свои. И получается эдакое недоразумение, как потом их обьеденить если у нас совершенно разные скрипты получаются, то есть он вносит изменени в скрипты а у меня ведь не появатся эти изменеия, файлик старым останется(( Помогите :(
Для этого нужно юзась svn с репозиторием файлов. Сейчас силами одного человека это все добро настраивается, как полностью разберемся со всеми подводными камнями, дадим полную справку как и что делать при одновременной работе над проектом, разными людьми участниками проекта.
На данный момент, могу посоветовать использовать программу WinMerge, для сравнения файлов (она показывает все отличия файлов и в тексте внутри этих файлов, сводит текст файлов из двух в один и делает бекапы). Подробне о ней прочтешь в хелпе программы когда скачаешь, русский поддерживается.
 
Последнее редактирование модератором:

kraw


Модостроитель
Регистрация
11 Окт 2005
Сообщения
2.095
Благодарности
871
Баллы
295
По поводу совместного редактирования. Если вы нажодитесь рядом, то ставьте на одном из компов subversion (он же называется svn), ищите в инете руководства по использованию (есть много русскоязычных документов). И используете.

Сам сейчас решаю подобную задачу, но с использованием стороннего хостинга.

здесь на сервере, на форуме, где советы по работе со скриптами, есть ссылка на хорошую документацию.
 

s@m


Модостроитель
Регистрация
2 Мар 2007
Сообщения
315
Благодарности
56
Баллы
195
Есть ещё один способ... но от него могут взорваться мозги :D - Юзать ftp и с помошью программы Cuteftp смотреть файлы .d но без какой либо подсветки. :eek: И проблема с компиляцией... настоящий ад!
 

MaGoth

★★★★★★★★★★★
Администратор
Регистрация
7 Янв 2003
Сообщения
19.367
Благодарности
7.815
Баллы
995
1. ВинМерге - самый простой способ, но чем больше изменений тем труднее и больше будет работы.
2. СВН - лучший способ для работы, но с его настройкой придется очень серьезно повозится чтобы весь проект отрабатывался нормально. Зато когда поднимешь СВН и компиляция и все что угодно будет идти без проблем.

Все остальное - мазохизм какой-то, имхо. ;)
 
Сверху Снизу