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

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

Не стесняюсь спросить....

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160
А зачем вы 3 раза вызываете триггер? Достаточно двух. И лучше бы занести не "sprint ()",а весь код.Для надежности.
И да,кода не достаточно.Спейсер еще нужен тут,точнее настройки триггера.Так же убедитесь,то что карта именна та,на которой зацикленный триггер.Запихните ее в мод файл вместе со своими скриптами.
Если хочешь,то можно в аську стукнуть мне.Я указал в профиле.

Все ровно не идет. Пере-создал триггер, дал название триггеру и проверил каждый параметр и записал название скрипта, сохранил и упаковал. Потом удалил .dmp файлы и запустил с помощью стартера и начал новую игру, держу шифт и удерживаю кнопку вперед, но после того как отпуская шифт герой бежит как раньше (не спринтом).
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Все ровно не идет. Пере-создал триггер, дал название триггеру и проверил каждый параметр и записал название скрипта, сохранил и упаковал. Потом удалил .dmp файлы и запустил с помощью стартера и начал новую игру, держу шифт и удерживаю кнопку вперед, но после того как отпуская шифт герой бежит как раньше (не спринтом).
а Мухомор ясно сказал,что это "кусок из скрипта",но не полный скрипт.Додумывать уже надо самому,что и как будет работать.Copy-Paste тут бесполезен.Попробуй просто создать цикл-триггер с другой функцией,например если у игрока есть ключ ксардаса,то ему выдается 55 золота.
 

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160
а Мухомор ясно сказал,что это "кусок из скрипта",но не полный скрипт.Додумывать уже надо самому,что и как будет работать.Copy-Paste тут бесполезен.Попробуй просто создать цикл-триггер с другой функцией,например если у игрока есть ключ ксардаса,то ему выдается 55 золота.

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

Defman

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

Myxomop

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

var int PC_Sprint_Mode; //Переменная режима быстрого бега.
var int PC_STAMINA_MAX; //Атрбут максимальной выносливости ГГ. - сейчас значние равно 0!
var int PC_STAMINA_CURRENT; //Атрибут текущей выносливости ГГ. - сейчас значние равно 0!

Простейшие ЧИТЕРСКИЕ дополнения для работы скрипта.

Установи где-нибудь:
PC_STAMINA_MAX = 1000;
PC_STAMINA_CURRENT = 1000;

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

func void B_GlobalInit()
{

if(C_BodyStateContains(hero,BS_STAND)) //Если ГГ стоит на месте.
{
if(PC_Sprint_Mode == TRUE) //Если ГГ в режиме спринтера.
{
//Переход в режим обычного бега.
Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000; //Выносливость будет автоматически восстановлена.
};
};
if(C_BodyStateContains(hero,BS_WALK)) //Если ГГ в режиме ходьбы (зажата клавиша SHIFT).
{
if(!Npc_IsInFightMode(hero,FMODE_FAR)) //Если ГГ не в режиме дальнего боя, например с луком или арбалетом (при остановке после бега с луком или арбалетом будут небольшие глюки, нужно спрятать и повторно вытащить оружие)
{
//Переключение в режим подготовки спринтера если остаток выносливости не менее одной четверти и ГГ уже не в режиме быстрого бега.
if(PC_Sprint_Mode == FALSE && PC_STAMINA_CURRENT > PC_STAMINA_MAX / 4 )
{
PC_Sprint_Mode = 2;
};
};
};
if(C_BodyStateContains(hero,BS_RUN)) //Если ГГ в режиме обычного бега.
{
//Переключение в режим спринтера.
if(PC_Sprint_Mode == 2) //Если ГГ в режиме подготовки к спринтеру.
{
//Переход в режим спринтера.
Mdl_ApplyOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = TRUE;
};
};
if(PC_Sprint_Mode == TRUE && PC_STAMINA_CURRENT < PC_STAMINA_MAX / 15) //Если выносливости менее 1/15 быстрый бег выключается
{
Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000; //Выносливость будет автоматически восстановлена.
};
if(PC_Sprint_Mode == TRUE) //Если ГГ в режиме быстрого бега.
{
PC_STAMINA_CURRENT -=1; //Расход выносливости!
};

Wld_SendTrigger("GLOBAL_INIT"); //Вызов триггера для зацикливания всей функции.

};
 

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160
viper_093, Просто мужик
Конечно в таком виде оно не будет работать, т.к. завязано на выносливости, которая равна 0. Уважаемые, вы хоть немного вникайте в скрипты, читайте комментарии к его работе.

var int PC_Sprint_Mode; //Переменная режима быстрого бега.
var int PC_STAMINA_MAX; //Атрбут максимальной выносливости ГГ. - сейчас значние равно 0!
var int PC_STAMINA_CURRENT; //Атрибут текущей выносливости ГГ. - сейчас значние равно 0!

Простейшие ЧИТЕРСКИЕ дополнения для работы скрипта.

Установи где-нибудь:
PC_STAMINA_MAX = 1000;
PC_STAMINA_CURRENT = 1000;

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

func void B_GlobalInit()
{

if(C_BodyStateContains(hero,BS_STAND)) //Если ГГ стоит на месте.
{
if(PC_Sprint_Mode == TRUE) //Если ГГ в режиме спринтера.
{
//Переход в режим обычного бега.
Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000; //Выносливость будет автоматически восстановлена.
};
};
if(C_BodyStateContains(hero,BS_WALK)) //Если ГГ в режиме ходьбы (зажата клавиша SHIFT).
{
if(!Npc_IsInFightMode(hero,FMODE_FAR)) //Если ГГ не в режиме дальнего боя, например с луком или арбалетом (при остановке после бега с луком или арбалетом будут небольшие глюки, нужно спрятать и повторно вытащить оружие)
{
//Переключение в режим подготовки спринтера если остаток выносливости не менее одной четверти и ГГ уже не в режиме быстрого бега.
if(PC_Sprint_Mode == FALSE && PC_STAMINA_CURRENT > PC_STAMINA_MAX / 4 &&
{
PC_Sprint_Mode = 2;
};
};
};
if(C_BodyStateContains(hero,BS_RUN)) //Если ГГ в режиме обычного бега.
{
//Переключение в режим спринтера.
if(PC_Sprint_Mode == 2) //Если ГГ в режиме подготовки к спринтеру.
{
//Переход в режим спринтера.
Mdl_ApplyOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = TRUE;
};
};
if(PC_Sprint_Mode == TRUE && PC_STAMINA_CURRENT < PC_STAMINA_MAX / 15) //Если выносливости менее 1/15 быстрый бег выключается
{
Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000; //Выносливость будет автоматически восстановлена.
};
if(PC_Sprint_Mode == TRUE) //Если ГГ в режиме быстрого бега.
{
PC_STAMINA_CURRENT -=1; //Расход выносливости!
};

Wld_SendTrigger("GLOBAL_INIT"); //Вызов триггера для зацикливания всей функции.

};
Не работает а вставлять выносливость на 1000 я и раньше пробовал. Попробую заново все пере-писать.
Позже: Попробовал пере-писать и не получается.
 

Defman

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

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Только что проверил сорсером и выдает такую ошибку: "Ошибка синтаксиса: PC_STAMINA_MAX".
Не помню точно,что это значит,но вроде отсутствует определение данной атрибуты.
 

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160

Defman

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

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160

Defman

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

НастасьСанна

Участник форума
Регистрация
6 Дек 2012
Сообщения
350
Благодарности
521
Баллы
325
C_BODYSTATECONTAINS - это функция из скриптов Готики. Чтобы твой скрипт мог ее использовать, она (файл C_BODYSTATECONTAINS.d) должена быть объявлена в Gothic.src ДО файла с твоей функцией B_GlobalInit.
 

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160
у меня такое было в B_GivePlayerXP,тоже не решил.Может,стоит поставить скрипт при загрузке в самый конец перед startup.d?

Ок спасибо, но теперь другая ошибка "ошибка синтаксиса: {", а именно в этой части:
if(PC_Sprint_Mode == FALSE && PC_STAMINA_CURRENT > PC_STAMINA_MAX / 4 &&
{
PC_Sprint_Mode = 2;
};
};
};
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Ок спасибо, но теперь другая ошибка "ошибка синтаксиса: {", а именно в этой части:
if(PC_Sprint_Mode == FALSE && PC_STAMINA_CURRENT > PC_STAMINA_MAX / 4 &&
{
PC_Sprint_Mode = 2;
};
};
};
давай ты не будешь резать код,а выкладывать полный.Может быть лишняя скобка.Коды помещай в спойлер,если что-то выделяешь.
 

viper_093

Участник форума
Регистрация
11 Апр 2013
Сообщения
59
Благодарности
2
Баллы
160
давай ты не будешь резать код,а выкладывать полный.Может быть лишняя скобка.Коды помещай в спойлер,если что-то выделяешь.

Воть:

var int PC_Sprint_Mode;
var int PC_STAMINA_MAX;
var int PC_STAMINA_CURRENT;
func void B_CYCLE_FUNCTION()
{
PC_STAMINA_MAX = 1000;
PC_STAMINA_CURRENT = 1000;
if(C_BodyStateContains(hero,BS_STAND))
{
if(PC_Sprint_Mode == TRUE)
{

Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000;
};
};
if(C_BodyStateContains(hero,BS_WALK))
{
if(!Npc_IsInFightMode(hero,FMODE_FAR))
{

if(PC_Sprint_Mode == FALSE && PC_STAMINA_CURRENT > PC_STAMINA_MAX / 4 &&
{
PC_Sprint_Mode = 2;
};
};
};
if(C_BodyStateContains(hero,BS_RUN))
{

if(PC_Sprint_Mode == 2)
{

Mdl_ApplyOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = TRUE;
};
};
if(PC_Sprint_Mode == TRUE && PC_STAMINA_CURRENT < PC_STAMINA_MAX / 15)
{
Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000;
if(PC_Sprint_Mode == TRUE)
{
PC_STAMINA_CURRENT -=1;
};

Wld_SendTrigger("CYCLE_TRIGGER");

};
 

Defman

Участник форума
Регистрация
26 Май 2013
Сообщения
3.165
Благодарности
245
Баллы
300
Воть:

var int PC_Sprint_Mode;
var int PC_STAMINA_MAX;
var int PC_STAMINA_CURRENT;
func void B_CYCLE_FUNCTION()
{
PC_STAMINA_MAX = 1000;
PC_STAMINA_CURRENT = 1000;
if(C_BodyStateContains(hero,BS_STAND))
{
if(PC_Sprint_Mode == TRUE)
{

Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000;
};
};
if(C_BodyStateContains(hero,BS_WALK))
{
if(!Npc_IsInFightMode(hero,FMODE_FAR))
{

if(PC_Sprint_Mode == FALSE && PC_STAMINA_CURRENT > PC_STAMINA_MAX / 4 &&
{
PC_Sprint_Mode = 2;
};
};
};
if(C_BodyStateContains(hero,BS_RUN))
{

if(PC_Sprint_Mode == 2)
{

Mdl_ApplyOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = TRUE;
};
};
if(PC_Sprint_Mode == TRUE && PC_STAMINA_CURRENT < PC_STAMINA_MAX / 15)
{
Mdl_RemoveOverlayMds(hero,"HUMANS_SPRINT.MDS");
PC_Sprint_Mode = FALSE;
PC_STAMINA_CURRENT = 1000;
if(PC_Sprint_Mode == TRUE)
{
PC_STAMINA_CURRENT -=1;
};

Wld_SendTrigger("CYCLE_TRIGGER");

};
сейчас гляну,что не так.Походу,скобки неправильно закрыл.
 
Сверху Снизу