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

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

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

MaGoth

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

Вложения

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

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
Залезть в состояние ZS_Dead и там уже мутить всевозможные условия.
 

Друид

Участник форума
Регистрация
21 Ноя 2009
Сообщения
1.170
Благодарности
398
Баллы
285
Проблему решил выставив условие в ZS_Attack.
А как поможет ZS_Dead? Ведь там условия для уже убиенных неписей?
 

DUSTinghoFFman

Участник форума
Регистрация
24 Май 2008
Сообщения
904
Благодарности
4
Баллы
185
Не совсем так. Как у любого состояния у него есть начало, есть цикл, и конец.
Поэтому там можно поставить условие, при котором НПС будет получать, допустим, 1 единицу жизни.

func void zs_dead_end()
{
if(пишем условие)
{
self.attribute[ATR_HITPOINTS] = 1;
Npc_ClearAIQueue(self);
AI_Standup(self);
Npc_PerceiveAll(self);
AI_PlayAniBS(self,"T_STAND_2_WOUNDED",BS_UNCONSCIOUS);
AI_StartState(self,ZS_Unconscious,0,"");
}
else
{}
};
 

HeDeDe

Участник форума
Регистрация
17 Авг 2009
Сообщения
203
Благодарности
79
Баллы
180
сделал шрифты и циклическую функцию, выводящую на экран «индикаторы»

Если выводить вот так:
PrintScreen("XYYYYYZ", 50, 10, "FONT_INDICATORS_10.TGA", 1);

то между сегментами есть зазор

Если так:
PrintScreen("X", 50, 10, "FONT_INDICATORS_10.TGA", 1);
PrintScreen("Y", 50 + x, 10, "FONT_INDICATORS_10.TGA", 1);
PrintScreen("Z", 50 + x * 2, 10, "FONT_INDICATORS_10.TGA", 1);


то смена разрешения «ломает» всю полоску

Собственно вопрос, можно ли этого избежать?
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
то смена разрешения «ломает» всю полоску
Собственно вопрос, можно ли этого избежать?
Конечно, нужно просто аккуратнее символы рисовать и правильно сохранять шрифт, а для этого нужно по меньшей мере уметь работать со слоями.
Можешь глянуть скрин с полосками на разрешении 1920:1200
там все индикаторы скриптовые.

Ну а здесь видеоролик с множеством этих же индикаторов, но на разрешении 1280:960.
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
У меня вопрос: как увеличить время использования предмета при срабатывании функции B_UseItem(нпс,итем);?
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
У меня вопрос: как увеличить время использования предмета при срабатывании функции B_UseItem(нпс,итем);?
Не понял, какое еще время использования?
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
У меня вопрос: как увеличить время использования предмета при срабатывании функции B_UseItem(нпс,итем);?
void AI_UseItemToState (c_npc self, int itemInstance, int state); - НПС self использует предмет itemInstance до указанного состояния state (-1 – используется полностью).

Много используется здесь ZS_Stand_Eating
Например self будет жевать сыр
AI_UseItemToState(self,ItFo_Cheese,0);
Пока не выполним
AI_UseItemToState(self,ItFo_Cheese,-1);

или здесь ZS_Smoke_Joint
курим косяк AI_UseItemToState(self,ItMi_Joint_01,0);
выбрасываем AI_UseItemToState(self,ItMi_Joint_01,-1);

Пример с чтением письма НПЦ
AI_UseItemToState(self,Fakescroll,1); Берем в руки письмо
AI_Wait(self,2); //Читаем 2 секунды
AI_UseItemToState(self,Fakescroll,-1); Убираем письмо
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
а в разговоре как это сделать? Я, к примеру, даю нпс предмет по квесту, который он должен тут же в, диалоге, заюзать. Я вставляю функцию B_UseItem(нпс,итем), нпс юзает предмет, но очень мало по времени.
 

Wallerstein

Участник форума
Регистрация
26 Апр 2009
Сообщения
965
Благодарности
24
Баллы
195
Такой пример для наглядности (действия происходят в диалоге). ГГ дает письмо прочесть другому нпс. Он достает и тут же прячет. А надо чтоб достал - некоторое время подержал, а потом спрятал, типо прочел.
 

MEG@VOLT

★★★★★★★★★
ТехАдмин
Регистрация
24 Мар 2006
Сообщения
9.860
Благодарности
6.740
Баллы
1.625
Ну укур правильно все расписал, создать такую же функцию как B_UseItem
ну и в ней расписать
AI_UseItemToState(self,Fakescroll,1); Берем в руки письмо
AI_Wait(self,2); //Читаем 2 секунды
AI_UseItemToState(self,Fakescroll,-1); Убираем письмо
 

Je00Ka

Участник форума
Регистрация
16 Авг 2008
Сообщения
65
Благодарности
0
Баллы
160
Re: Gothic Sourcer

У меня проблема с компиляцией в Соурсе 3.14,
при компиляции нового проекта выскакивают ошибки с неизвестными идентификаторами и компиляция обрывается.
В связи с этим возникает 2 вопроса:
1. Какие скрипты нужно пихать в проект, а какие не обязательно?
2. Как избежать таких ошибок?
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
Тоесть надо создать отдельную функцию для того чтобы использовать письмо?
Все нпс которые просят письмо стоят и читают его нормально, значит есть какая то отдельная функция , которая отвечает за это. Или каждому Нпс, который что то читает в диалоге прописана отдельная именная функция?
Просто в самих стандартных диалогах ни чего не нашел вот и спрашиваю.*flowers*
 

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
А какая разница? И кстати такая функция уже есть - B_UseFakeScroll()
 

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
Re: Gothic Sourcer

Нового в смысле "пустого"? Забудь об этом, тут надо хорошо скриптинг знать чтобы самому с нуля собрать Gothic.dat.
Если хочешь можешь заюзать всякого рода скриптовые болванки, но и там тоже есть что почистить и есть что вернуть.
 

Je00Ka

Участник форума
Регистрация
16 Авг 2008
Сообщения
65
Благодарности
0
Баллы
160
Re: Gothic Sourcer

Не...нового, в смысле наполненного моими и готическими скриптами(для мода с нуля)
Скрипты-то в принципе готовы... знать бы что кидать
 

Feuermagier


Модостроитель
Регистрация
13 Апр 2008
Сообщения
934
Благодарности
136
Баллы
225
Вот то что я спрашивал*flowers*
Почему посты нельзя удалять? не гут это
 

vmazz

Участник форума
Регистрация
18 Дек 2008
Сообщения
218
Благодарности
1
Баллы
165
Re: Gothic Sourcer

Кидать тот скрипт на котором выдает ошибку. А прочитай руководство по ошибкам и тебе понятно станет что такое "неизвестный идентификатор". И кстати сдается мне что данная ошибка связано с тем что ты объявил переменную/функцию/что там у тебя ПОСЛЕ того как вызываешь ее, вот оттуда и ошибка. Перепиши Gothic.src по всем правилам компиляции (если все-же в этом ошибка). И вообще надо было писать в тему про скриптинг или для чайников т.к. ГС тут не виноват.
 

Myxomop

Почетный форумчанин
Регистрация
28 Май 2005
Сообщения
3.239
Благодарности
2.581
Баллы
455
Jr13San
На а как ты сам думаешь, хотя бы из названия этой темы?
 

Jr13San


Модостроитель
Регистрация
1 Апр 2010
Сообщения
449
Благодарности
266
Баллы
230
Я думаю можно, но я спросил потому, что ... потому что было надо.
Итак. У меня возникла проблемка в создании кое какой скриптовой идеи. Какой именно? А вот какой:
Вобщем мне нужно сделать так, чтобы при блокировке ГГ удара(ближний бой) от врага(NPC, не животное, а человек или тот, от коророго можно защититься блоком), переменная BlockNPC = BlockNPC + 1.
Короче, если ГГ поставил блок и искры посыпались от меча, то BlockNPC = BlockNPC + 1.

Я не нашёл в туторе Vam'a нужных функций для создания этой идеи. И в Готике(1,2) тоже не наблюдаю таких идей. Остаётся слазить в функцию тактики боя...
Кто знает как сделать проще, пишите, буду очень рад.
 
Сверху Снизу