Уважаемые гости и новички, приветствуем Вас на нашем форуме
Здесь вы можете найти ответы практически на все свои вопросы о серии игр «Готика» (в том числе различных модах на нее), «Ведьмак», «Ризен», «Древние свитки», «Эра дракона» и о многих других играх. Можете также узнать свежие новости о разработке новых проектов, восхититься творчеством наших форумчан, либо самим показать, что вы умеете. Ну и наконец, можете обсудить общие увлечения или просто весело пообщаться с посетителями «Таверны».
Чтобы получить возможность писать на форуме, оставьте сообщение в этой теме.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
MaGoth, 1. папка мне нужна чтобы изменить данные некоторых неписей через GS
2. я думаю, если бы вопрос был конкретно о скриптах, то туда. Но отсутствие какой либо папки это техническая пролема
Извините, что вмешиваюсь в разговор, но скрипты от оригинальной Готики 2 компилруются с ошибками. Redds, как? скомпилировал скрипты? Ответ пиши в личку(если хочешь, можешь не отвечать).
ukur
по поводу ф-ий экипировки оружия. Как внутри этой ф-ии получить ссылку что ли на экипируемое оружие? Вот например я хочу, чтобы в момент экипировки лука его амуниция изменялась на огненные стрелы.
по поводу ф-ий экипировки оружия. Как внутри этой ф-ии получить ссылку что ли на экипируемое оружие? Вот например я хочу, чтобы в момент экипировки лука его амуниция изменялась на огненные стрелы.
Lingviston, я бы не советовал тебе писать адресацию проблем именно ukur'у, потому что на твой вопрос просто из за принципа найдётся мало отвечающих.
Вот, посмотри пример лука:
Здесь тупо динамически меняются заряды для лука. Если сохранить игру, то заряды(динамически изменённые) не будут для этого лука активными. Поэтому целесообразней использовать переменную для хранения ссылки на заряды для лука.
А, черт, я так тоже хотел сделать, а потом решил, что будет удобнее описать 1 ф-ию для всех луков. Так а насчет переменной, это я должен объявить глобальную переменную от которой будет зависеть заряд и внутри каждого лука заменить стандартный заряд на эту переменную или имеется в виду хранить заряд в глобальной переменной, а в ф-ии экипировки заменять заряд на значение из этой переменно?
Еще, если я экипируюсь например Коротким луком, у него меняется амуниция, так вот если непись будет экипирована им же, у него тоже будет нестандартная амуниция?
По крайней мере если для каждого лука сделать ф-ию экипировки, то можно сделать проверку на self - ГГ.
Мне сразу возвращается значение TRUE и действия выполняются, даже если непись жив.
И еще пару вопросов:
1) Можно ли проиграть pfx эффект на вейпоинте?
2) Как заставить непися атаковать меня и драться на смерть? Я ставлю вражеские отношения гильдий, так там еще добивать надо. B_Attack также надо добивать. AI_ATTACK не работает вообще. Можно в скрипте непися указать вражеское отношение к ГГ? Сразу же, вначале игры.
Так а насчет переменной, это я должен объявить глобальную переменную от которой будет зависеть заряд и внутри каждого лука заменить стандартный заряд на эту переменную или имеется в виду хранить заряд в глобальной переменной, а в ф-ии экипировки заменять заряд на значение из этой переменно?
Еще, если я экипируюсь например Коротким луком, у него меняется амуниция, так вот если непись будет экипирована им же, у него тоже будет нестандартная амуниция?
А как же? Конечно сменится. Ведь лук в игре - он для всех одинаковый. Значит и ф-ции для все одинаковые. Можно наставить разных условий. Надо просто подумать головой.
2) Как заставить непися атаковать меня и драться на смерть? Я ставлю вражеские отношения гильдий, так там еще добивать надо. B_Attack также надо добивать. AI_ATTACK не работает вообще. Можно в скрипте непися указать вражеское отношение к ГГ? Сразу же, вначале игры.
Это дело можно сэмулировать с анимациями и т.д. Но попробуй нати такую ф-цию - когда ГГ убивает человека из города, стражи бегут к ГГ, убивают его и закалывают!
2) Как заставить непися атаковать меня и драться на смерть? Я ставлю вражеские отношения гильдий, так там еще добивать надо. B_Attack также надо добивать. AI_ATTACK не работает вообще. Можно в скрипте непися указать вражеское отношение к ГГ? Сразу же, вначале игры.
А переменную зарядов для лука при старте игры можно проинициализировать обычными стрелами? Если нет, то чем же она будет проинициализирована при старте?
Можно присвоить значение переменной в ф-ции func void Startup_[имя стартового уровня](). Только как правильно присвоить, я не знаю.
Если у тебя не получится никак присвоить значение переменной и сделать так, чтобы скрипт работал, то у меня, кажется, есть решение твоей проблемы...
Я не очень понимаю зачем тебе менять стрелы при ношении лука. Не проще ли просто поставить нужные стрелы для одного лука? Но ежели ты насмотрелся видео от мода - StrongHand и решил тоже такие возможность сделать, но по своему, то я могу тебе помочь, но у меня сейчас сессия и решение проблемы может растянуться... Но могу сказать сразу - то, что я придумал - меня удивило самого. Если будет время, напишу.
Вот и написал(обновлено):
В скриптах пишем:
//Если одет один вид стрел, то стреляем ими //Если одето много видов стрел, то стреляем теми, которые были одеты первыми, //затем 2-ми...3-ми и т.д. //Если стрела снята или выброшена, то происходит смещение приоритета
var int Arrow_01; //приоритет для стрелы var int FireArrow_01; //приоритет для огненной стрелы var int MagicArrow_01;//приоритет для магической стрелы var int ArrNum; //кол-во видов стел var int NumNotActive; //снятый вид стрел var int RwCls; //0 = ничего; 1 = лук; 2 = арбалет // Смещение(пример) // Существует 7 видов стрел, т.е. 7 приоритетов для этих видов стрел. // 1 2 3 4 5 6 7 // Если, например 6-ой приоритет снимается, то все меньшие приоритеты смещаются на 1 до 6-ого, тем самым освобождается место для нового приоритета // 6 1 2 3 4 5 7 // Но так, как такой порядок неуместен для использования наивысшего приоритеда как стрел для лука, то всё это дело преобразуется в такую систему: // 0 2 3 4 5 6 7 // т.е. 5-ка становится на место 6-ки и становится равной 6, 4-ка становитя на место 5-ки и становится равной 5 и т.д. // ... 1-ка становится на место 2-ки и становится равной 2, а 6-ка, так как была снята, становится равной нулю и не используется для сравнения как приоритет. // Если хочется разобраться, то всё, что происходит ниже, нужно записывать на листок бумаги или в память, потому что комментариями не объяснить. func void Displacement()//смещение приоритета, тем самым освобождаем место для нового приоритема. { if (Arrow_01 < NumNotActive) && (Arrow_01 != 0)//всё, что меньше снятого приоритета - смещается до снятого приоритета { Arrow_01 = Arrow_01 + 1; //можно написать Arrow_01 += 1; }; if (FireArrow_01 < NumNotActive) && (FireArrow_01 != 0) { FireArrow_01 = FireArrow_01 + 1; }; if (MagicArrow_01 < NumNotActive) && (MagicArrow_01 != 0) { MagicArrow_01 = MagicArrow_01 + 1; }; };
func void AppArrow() { var int n; //счётчик для поиска наивысшего приоритета вида стрел var C_Item RangedWeapon; //переменная для хранения ссылки на лук RangedWeapon = Npc_GetEquippedRangedWeapon(hero); //записываем оружие дальнего радиуса поражения у ГГ.
if (RwCls == 1) //если одет лук { if (ArrNum == 3) //если стрелы не одеты { if (Npc_HasItems(hero, ItRw_Arrow_01) > 0) //если есть простые стрелы, { RangedWeapon.munition = ItRw_Arrow_01; //то одеваем их для текущего лука } else if (Npc_HasItems(hero, ItRw_FireArrow_01) > 0) { RangedWeapon.munition = ItRw_FireArrow_01; } else if (Npc_HasItems(hero, ItRw_MagicArrow_01) > 0) { RangedWeapon.munition = ItRw_MagicArrow_01; }; } else //если стрелы одеты, то начинаем искать наибольший приоритет вида стрел: { n = 0; if (Arrow_01 > n) && (Npc_HasItems(hero,ItRw_Arrow_01) > 0) { n = Arrow_01; //записываем номер высшего приоритета стрел RangedWeapon.munition = ItRw_Arrow_01; //записываем вещь как вид стрел }; if (FireArrow_01 > n) && (Npc_HasItems(hero,ItRw_FireArrow_01) > 0) { n = FireArrow_01; RangedWeapon.munition = ItRw_FireArrow_01; }; if (MagicArrow_01 > n) && (Npc_HasItems(hero,ItRw_MagicArrow_01) > 0) { n = MagicArrow_01; RangedWeapon.munition = ItRw_MagicArrow_01; }; //здесь переменная n не должна быть равна нулю! };
if (Arrow_01 != 0) && (Npc_HasItems(hero, ItRw_Arrow_01) == 0)//если стрелы одеты, но их нет в инвентаре, значит они были выброшены { UnEquip_ItRw_Arrow_01();//ф-ция вызова снятия вида стрел }; if (FireArrow_01 != 0) && (Npc_HasItems(hero, ItRw_FireArrow_01) == 0) { UnEquip_ItRw_FireArrow_01(); }; if (MagicArrow_01 != 0) && (Npc_HasItems(hero, ItRw_MagicArrow_01) == 0) { UnEquip_ItRw_MagicArrow_01(); }; }; }; //лук и арбалет - как примеры как должно быть, чтобы сработала вся система.
Создание таймера:
В Spacer'e создаем в любом месте вашего загружаемого уровня объект oCTriggerScript вот с такими свойствами:
где fireDelaySec - это промежуток времени, через который будет выполняться функция SCRFUNC_TIMER.
Далее пишем в скриптах: func void SCRFUNC_TIMER() { AppArrow(); Wld_SendTrigger("TIMER_01"); //Вызов триггера };
В StartUp в загружаемом уровне нужно прописать 2 строчки:
И конечно же прописать у ГГ данные лук и арбалет(лук и арбалет см. выше) и все 3 вида стрел.
Была убрана возможность стрелять этими видами стрел из арбалета, но если рассудить, то если бы ГГ попал в ситуацию, в которой у него не осталось бы болтов, а остались только стрелы и одет арбалет, то ситуация выглядела бы следующим образом(см. ниже), а если бы ГГ стал стрелять болтами из лука, то вероятнее всего он бы попал себе в руку
в GOthicSource при компелировании когда создаю нового непися на последнем етапе,вылезает startup.d(1173): Ошибка:Ожидаеться ';' пробывал ставить скобчки и всякое прочее не работает что делать?!
Смотри внимательнее на синтаксис. Или лучше напиши сюда скрипт в каком месте у тебя возникает ошибка. Я имею ввиду не весь Startup, а ту процедуру, в которой у тебя возникает ошибка. Скорей всего ты забыл где-то сверху от ошибки поставить ";".
На данном сайте используются файлы cookie, чтобы персонализировать контент и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.