Охотник за Смертью Опубликовано 21 ноября, 2013 Жалоба Поделиться Опубликовано 21 ноября, 2013 (изменено) Стоит признать, что это единственный (громко сказано, но пока - это так) чисто скриптовой способ получить пол игрока. Реализации его могут разниться, но принцип такой:При создании персонажа, у него есть стартовые характеристики, которые отличаются для каждого пола. Берем характеристику, которая отличается на 5 и сравниваем с эталонным (например - мужским) показателем. Если это значение равно 0 или 10 (в случае, если эта характеристика - ведущая), то это представитель эталонного пола. Если -5 или 5 - противоположного. Заметьте, что если присутствуют моды, меняющие значение стартовых характеристик, то параметры должны будут быть исправлены begin _oz_Get_Gender short PC_Strength short PC_Intelligence short PC_Willpower short PC_Agility short PC_Speed short PC_Endurance short PC_Personal short PC_Luck Set PC_Strength to ( Player->GetStrength ) Set PC_Intelligence to ( Player->GetIntelligence ) Set PC_Willpower to ( Player->GetWillpower ) Set PC_Agility to ( Player->GetAgility ) Set PC_Speed to ( Player->GetSpeed ) Set PC_Endurance to ( Player->GetEndurance ) Set PC_Personal to ( Player->GetPersonality ) Set PC_Luck to ( Player->GetLuck ) if ( Player -> GetRace "Argonian" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 35 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Breton" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 35 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Dark Elf" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 45 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "High Elf" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 50 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Imperial" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 35 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Khajiit" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 30 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Nord" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 25 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Orc" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 30 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Redguard" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 25 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif elseif ( Player -> GetRace "Wood Elf" == 1 ) ;Определим пол Set ozas_sexBuff to ( PC_Speed - 40 ) if ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 ) elseif ( ozas_sexBuff == 0 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 10 ) Set PC_Sex to ( 1 ) elseif ( ozas_sexBuff == 5 ) Set PC_Sex to ( 2 ) endif endif StopScript "_oz_Get_Gender" end _oz_Get_Gender Изменено 21 ноября, 2013 пользователем Охотник за Смертью Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 21 ноября, 2013 Жалоба Поделиться Опубликовано 21 ноября, 2013 Озас, тебе нужно убрать менюмод (зачем он вообще, если скрипт одноразовый истартует в самом начале игры?) и добавить проверку на выход из канцелярии, как у меня в скрипте проверки на атронаха, а то он у тебя значения по умолчанию посчитает без прибавки от класса. А за скрипт спасибо, забираю!) Ссылка на комментарий Поделиться на другие сайты Поделиться
Охотник за Смертью Опубликовано 21 ноября, 2013 Автор Жалоба Поделиться Опубликовано 21 ноября, 2013 Ну проверку на выход из канцелярии я вставлять не стал, так как по хорошему, этот скрипт нужно стартовать из другого, который и будет выполнять проверку на счет менюмода - ну возможно да, просто как-то привык его вписывать. Но действительно, он тут не нужен Ссылка на комментарий Поделиться на другие сайты Поделиться
Ao3 Опубликовано 21 ноября, 2013 Жалоба Поделиться Опубликовано 21 ноября, 2013 (изменено) То есть, скрипт этот работает лишь на только что созданном персонаже ванильной расы с дефолтными характеристиками, и должен запускаться при генерации персонажа где-то в канцелярии? А не легче тогда какому-нибудь Селлусу Гравиусу добавить гритинг, подразумевающий проверку пола, и в его резалте менять глобальную переменную, отвечающую за пол? Изменено 21 ноября, 2013 пользователем Ao3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Охотник за Смертью Опубликовано 21 ноября, 2013 Автор Жалоба Поделиться Опубликовано 21 ноября, 2013 То есть, скрипт этот работает лишь на только что созданном персонаже ванильной расы с дефолтными характеристиками, и должен запускаться при генерации персонажа где-то в канцелярии? А не легче тогда какому-нибудь Селлусу Гравиусу добавить гритинг, подразумевающий проверку пола, и в его резалте менять глобальную переменную, отвечающую за пол?Ну 1 маленький скрипт не равнозначен конфликтам со всеми теми изменениями, которые могут произойти с Гравиусом в плагинах. Если бы у нас была необходимость просто получить пол в ходе квеста - это одно, а если глобал нужен на всю игру - другое. Я согласен, реализация топорней некуда, но что поделаешь Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 22 ноября, 2013 Жалоба Поделиться Опубликовано 22 ноября, 2013 Скрипт не рабочий. Полностью. Он не может определить пол ни одной расы. Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 22 ноября, 2013 Жалоба Поделиться Опубликовано 22 ноября, 2013 Скрипт не рабочий. Полностью. Он не может определить пол ни одной расы. А три строчки проверки на выход из канцелярии ты, конечно, не дописал... А надо! Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 22 ноября, 2013 Жалоба Поделиться Опубликовано 22 ноября, 2013 А три строчки проверки на выход из канцелярии ты, конечно, не дописал... А надо!Не нужны твои строчки проверки, в скрипте просто не учтены класы игрока. А с босмерами, так совсем бред, им хоть прибавляй хоть отнимай характеристики, всё едино, они одинаковые и у мужчин и у женщин. Кроме того "elseif ( Player -> GetRace "Wood Elf" == 1 )" -такой строкой пользоваться имхо совсем не резонно, можно проще if ( Pcrsce == 10 ) Меньше занимает знаков? Я откровенно говоря просто не понимаю что он тут высчитывал, какие тангенсы и катангенсы, скрипт просто при определенных условиях только сделает его проверку, это если повезет и угадаешь. Бесполезный и громоздкий скрипт, благо поставлен был хоть stopscript. Ссылка на комментарий Поделиться на другие сайты Поделиться
Охотник за Смертью Опубликовано 22 ноября, 2013 Автор Жалоба Поделиться Опубликовано 22 ноября, 2013 (изменено) Скрипт не рабочий. Полностью. Он не может определить пол ни одной расы.странно, почему же у меня тогда все проверяется? А три строчки проверки на выход из канцелярии ты, конечно, не дописал... А надо!Я не думаю, что именно в этом скрипте нужно это делать. По моим скромным программерским взглядам должен быть специальный скрипт инициатор, который его запустит, и уже в инициаторе должны быть проверки Меньше занимает знаковНикто не заставляет вас вставлять этот кусок в какой-то многотонный скрипт, зато читабельность у него гораздо выше. Я откровенно говоря просто не понимаю что он тут высчитывал, какие тангенсы и катангенсы, скрипт просто при определенных условиях только сделает его проверку, это если повезет и угадаешь. Бесполезный и громоздкий скрипт, благо поставлен был хоть stopscript. Ну так предлагай свой вариант) Ты же у нас считаешься гуру скриптоводства, так напиши мне скрипт, вычисляющий пол. Без использования диалогов, ясен пень Изменено 22 ноября, 2013 пользователем Охотник за Смертью Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 22 ноября, 2013 Жалоба Поделиться Опубликовано 22 ноября, 2013 (изменено) Давайте на личности переходить не будем, пошагово объясню на примере, пожалуй этого будет достаточноif ( Player -> GetRace "Argonian" == 1 ) дабы не повторять проверку пишем if ( PCrce == 1 ); или скольки она равна у аргониан, лень смотреть?;Определим пол Set ozas_sexBuff to ( PC_Intelligence - 35 )видимо вместо интеллекта берется либо сила воли, либо ловкость, т.к. они разняться у мужской и женской особи, но они разнятся на 10ед. Это компенсируется выбранными основными характеристиками, которые так же повышаются на 10, т.е. аргонианка у которой будет выбрана ловкость станет по ловкости идентична аргонианину, и аргонианин выбравший в основу силу воли, по этой характеристике станет идентичен аргонианке, т.о. этот блок теряет свою силу с учетом того, что нет проверки на классовую составляющую. Аналогиif ( ozas_sexBuff == -5 ) Set PC_Sex to ( 2 )elseif ( ozas_sexBuff == 0 )Set PC_Sex to ( 1 )elseif ( ozas_sexBuff == 10 )Set PC_Sex to ( 1 )elseif ( ozas_sexBuff == 5 ) -выберем аргонианку без бонусов и получим значение 5, при выборе в классе силы воли получим значение 15 уже, в итоге наш скрипт не сработает просто и pc_sex останется равен нулю. Выберем аргонианина с бонусом к силе воли и скрипт определит его как аргонианку.Set PC_Sex to ( 2 )endifстранно, почему же у меня тогда все проверяется? Я не думаю, что именно в этом скрипте нужно это делать. По моим скромным программерским взглядам должен быть специальный скрипт инициатор, который его запустит, и уже в инициаторе должны быть проверки Никто не заставляет вас вставлять этот кусок в какой-то многотонный скрипт, зато читабельность у него гораздо выше. Ну так предлагай свой вариант) Ты же у нас считаешься гуру скриптоводства, так напиши мне скрипт, вычисляющий пол. Без использования диалогов, ясен пеньВидимо вы маг и кудесник раз определяется. Далее оптимизация скрипта простаif ( pcrace < 1 )returnendifТут как только вы окончательно выбор свой подтвердите - скрипт сработает 1 раз ( Stoscript соответственно надо будет воткнуть)Читабильность важна в скриптовых плага тысячи на 2-3 строк, на финальном этапе эта читабильность убирается в угоду оптимизации.Написать ВАМ скрипт? )))) В принципе могу, в лс уже некоторые моменты отправил. на счет оставшихся 4 рас, можно было бы подумать, но это глупо, Добавление 1 гритинга не стоит изврата с обманом движка, если бы другого способа небыло, я бы вам написал полноценный скрипт. Изменено 22 ноября, 2013 пользователем Малковианин Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти