VeslanGirih Опубликовано 11 июля, 2005 Жалоба Поделиться Опубликовано 11 июля, 2005 Плиз, поможите чем можите. Мне надо определить что перс хочет взять в руки оружие и надо ему ето запретить и вывести сообщение, что мол недьзя. Ссылка на комментарий Поделиться на другие сайты Поделиться
Kaschei Опубликовано 11 июля, 2005 Жалоба Поделиться Опубликовано 11 июля, 2005 Плиз, поможите чем можите. Мне надо определить что перс хочет взять в руки оружие и надо ему ето запретить и вывести сообщение, что мол недьзя.<{POST_SNAPBACK}>Погоди, запретить брать конкретное оружие или вообще любое? Собственно вот он скрипт. Верней два скрипта - первый вешается на оружие - второй глобальный.[morrscript]begin OblomSword short PCSkipEquipshort OnPCEquip if ( здесь идёт какая-нибудь проверка ); условие может ли игрок надеть оружие set PCSkipEquip to 0 ; если может, то всё нормально... return ; ...и нижняя часть скрипта пропускаетсяelse set PCSkipEquip to 1 ; всё, облом - этот режик можно только потаскать в рюкзачкеendif if ( OnPCEquip == 1 ) MessageBox "Извините, меч недоступен, попробуйте взять его позже. Кузница Ходлисмода благодарит вас за использование наших мечей." StartScript, "Wdelete" set OnPCEquip to 0endif End =================================================== begin Wdelete Player -> Additem "ID_оружия", 1Player -> RemoveItem, "ID_оружия", 1 StopScript, "Wdelete" end[/morrscript] Ссылка на комментарий Поделиться на другие сайты Поделиться
VeslanGirih Опубликовано 12 июля, 2005 Автор Жалоба Поделиться Опубликовано 12 июля, 2005 Вообще на любое. А етот скрипт не катит. Мне нужно проверять не конкретное оружие. А в етом примере мне прийдется вешать этот скрипт на каждый режик. И я че-то смысл второго не понял, зачем удалять (хотя ета моя оплошность, не объяснил толком).Нужно что-бы скрипт проверял наличие любого оружия вообще в руках (я думал перечислить все ID предметов, но ета глупо) и запрешал бы ему ето сделать. Т.е не давал взять ствол в руки. Но удалаять шмотьё тоже не надо. Жалко :( Ссылка на комментарий Поделиться на другие сайты Поделиться
Kaschei Опубликовано 12 июля, 2005 Жалоба Поделиться Опубликовано 12 июля, 2005 Последний скрипт ты не понял -- это не удаление самого ножа, а добавление его копии и сразу же её удаления. Служит для устранения дубляжа иконок ненадеваемого предмета в инвентаре, глюк такой небольшой. Вычислить взял ли игрок оружие в руки можно, но только с Трибуналом, а вот скинуть его потом в рюкзак -- фигу. Выяснить ID предмета через скрипт нельзя, одна из самых больших оплошностей разработчиков на мой взгляд... Вообще-то можно как-то по другому заставить игрока самого снять оружие, от блокировки управления, до просто отказа непися разговаривать с ним. Ссылка на комментарий Поделиться на другие сайты Поделиться
VeslanGirih Опубликовано 12 июля, 2005 Автор Жалоба Поделиться Опубликовано 12 июля, 2005 Последний скрипт ты не понял -- это не удаление самого ножа, а добавление его копии и сразу же её удаления. Служит для устранения дубляжа иконок ненадеваемого предмета в инвентаре, глюк такой небольшой. Вычислить взял ли игрок оружие в руки можно, но только с Трибуналом, а вот скинуть его потом в рюкзак -- фигу. Выяснить ID предмета через скрипт нельзя, одна из самых больших оплошностей разработчиков на мой взгляд... Вообще-то можно как-то по другому заставить игрока самого снять оружие, от блокировки управления, до просто отказа непися разговаривать с ним.<{POST_SNAPBACK}> Понятно. Насчет ID ты меня не понял. Я раньше делал так. В скрипте перечислены ID шмоток которые нельзя брать. Скрипт проверял одеты ли они. И если до то сообщение. Но ето оч хреново было и я от етого отказался. Насчет проблем движка понял спасиб. Буду думать как его обнануть. Ссылка на комментарий Поделиться на другие сайты Поделиться
EJ-12 Опубликовано 12 июля, 2005 Жалоба Поделиться Опубликовано 12 июля, 2005 Begin XXX short wepstateShort framecounter if ( MenuMode == 1 ) returnendif If ( framecounter < 10 );можно этим поиграться, чем меньше таймер тем быстрее фиксируеться готовность оружия, если его поставить на 100 например, то можно изрядно помахать мечем прежде чем нас уведомят, что вообще-то здесь нельзя ходить с оружием:) (типа охрана никудышняя).Хотя, поидее, этот блок должен еще несколько разгружать проц обрабатывая скрипт через N фреймов. set framecounter to ( framecounter + 1 ) ReturnEndifset framecounter to 0 if ( player->GetWeaponDrawn ) if ( wepstate != 1 ) set wepstate to 1set RW to 1;типа глобальная переменная Endifelse if ( wepstate != 0 ) set wepstate to 0set RW to 0;соответственно обнуляем переменную Endifend это первый глобальный скрипт (собственно базовый в MSFD7 есть, этот несколько модернизирован) просто проверяет готовность оружия и выставляет переменную, с которой и работаем в следующем тоже глобальном "зверском" скрипте: begin ZZZ short Damage if ( MenuMode == 1 ) returnendif if ( RW == 1 ) if ( GetPCCell "Такой-то, ну в Дагот Уре например" == 1 ) Set Damage to Random 8;может быть любым, чем меньше тем лучше, дольше проживет:) Set Damage to ( 0 - Damage ) Set Damage to ( Damage - 2 ) player->ModCurrentHealth Damage 2 MessageBox "Немедленно уберите оружие.";ну или еще, что нибудь;можно еще музычку добавить, для любителей гудмода, чтоб не спали. endif endifendБолее радикального способа заставить убрать оружие, кажеться ненайти. Жить-то всем хочеться:) Ссылка на комментарий Поделиться на другие сайты Поделиться
VeslanGirih Опубликовано 12 июля, 2005 Автор Жалоба Поделиться Опубликовано 12 июля, 2005 Большой сенкс, проверю.... Ссылка на комментарий Поделиться на другие сайты Поделиться
Kaschei Опубликовано 13 июля, 2005 Жалоба Поделиться Опубликовано 13 июля, 2005 Тут ещё можно как в "Готике" сделать - стража с секунд 20 материться, а потом нападает и оставляет игрока с 1 hp, а при повторении инцидента просто приканчивает. Ссылка на комментарий Поделиться на другие сайты Поделиться
VeslanGirih Опубликовано 13 июля, 2005 Автор Жалоба Поделиться Опубликовано 13 июля, 2005 Можно. Но надо что б перс просто не пользовался оружием в определенной локации. Как в локации сделать знаю, а как что б не пользовался нет. Поетому и сдесь EJ-12 спасиб. Работает Ссылка на комментарий Поделиться на другие сайты Поделиться
Tiberius Flavius Опубликовано 28 июля, 2005 Жалоба Поделиться Опубликовано 28 июля, 2005 локации. Как в локации сделать знаю, а как что б не пользовался нет. <{POST_SNAPBACK}>Проверь скрипты генерации персонажа Chargen. Там использована такая команда DisablePlayerFighting. Полностью лишает перса способности защитить себя посредством оружия. А с помощью DisablePlayerMagic ты лишишь его способности использовать магию. Правда, я сам такое не проверял (я лишь делал альтернативный старт, когда игроку с самого начала позволено крошить кого угодно), поэтому я не знаю, какие побочные эффекты это может вызвать. По делу все должно быть ОК. Обратные команды - EnablePlayerFighting/EnablePlayerMagic. Ссылка на комментарий Поделиться на другие сайты Поделиться
LonWolf Опубликовано 28 июля, 2005 Жалоба Поделиться Опубликовано 28 июля, 2005 По делу все должно быть ОК. <{POST_SNAPBACK}>Да ну? MSFD:Судя по информации с форума, эти две функции не отличаются надежностью в работе: если игрок держит оружие или приготовил магию он может продолжать использовать их, также продолжают работать быстрые клавиши, назначенные на оружие и магию. На данный момент я не знаю надежного решения этой проблемы. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти