Перейти к содержанию

Получение пола игрока


Рекомендуемые сообщения

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

При создании персонажа, у него есть стартовые характеристики, которые отличаются для каждого пола. Берем характеристику, которая отличается на 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

Изменено пользователем Охотник за Смертью
Ссылка на комментарий
Поделиться на другие сайты

Озас, тебе нужно убрать менюмод (зачем он вообще, если скрипт одноразовый истартует в самом начале игры?) и добавить проверку на выход из канцелярии, как у меня в скрипте проверки на атронаха, а то он у тебя значения по умолчанию посчитает без прибавки от класса.

 

А за скрипт спасибо, забираю!)

Ссылка на комментарий
Поделиться на другие сайты

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

 

на счет менюмода - ну возможно да, просто как-то привык его вписывать. Но действительно, он тут не нужен :scratch:

Ссылка на комментарий
Поделиться на другие сайты

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

 

А не легче тогда какому-нибудь Селлусу Гравиусу добавить гритинг, подразумевающий проверку пола, и в его резалте менять глобальную переменную, отвечающую за пол?

Изменено пользователем Ao3
Ссылка на комментарий
Поделиться на другие сайты

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

 

А не легче тогда какому-нибудь Селлусу Гравиусу добавить гритинг, подразумевающий проверку пола, и в его резалте менять глобальную переменную, отвечающую за пол?

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

 

Я согласен, реализация топорней некуда, но что поделаешь

Ссылка на комментарий
Поделиться на другие сайты

Скрипт не рабочий. Полностью. Он не может определить пол ни одной расы.

 

А три строчки проверки на выход из канцелярии ты, конечно, не дописал... А надо!

Ссылка на комментарий
Поделиться на другие сайты

А три строчки проверки на выход из канцелярии ты, конечно, не дописал... А надо!

Не нужны твои строчки проверки, в скрипте просто не учтены класы игрока. А с босмерами, так совсем бред, им хоть прибавляй хоть отнимай характеристики, всё едино, они одинаковые и у мужчин и у женщин. Кроме того "elseif ( Player -> GetRace "Wood Elf" == 1 )" -такой строкой пользоваться имхо совсем не резонно, можно проще if ( Pcrsce == 10 ) Меньше занимает знаков? Я откровенно говоря просто не понимаю что он тут высчитывал, какие тангенсы и катангенсы, скрипт просто при определенных условиях только сделает его проверку, это если повезет и угадаешь. Бесполезный и громоздкий скрипт, благо поставлен был хоть stopscript.
Ссылка на комментарий
Поделиться на другие сайты

Скрипт не рабочий. Полностью. Он не может определить пол ни одной расы.

странно, почему же у меня тогда все проверяется?

 

А три строчки проверки на выход из канцелярии ты, конечно, не дописал... А надо!

Я не думаю, что именно в этом скрипте нужно это делать. По моим скромным программерским взглядам должен быть специальный скрипт инициатор, который его запустит, и уже в инициаторе должны быть проверки

 

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

 

Я откровенно говоря просто не понимаю что он тут высчитывал, какие тангенсы и катангенсы, скрипт просто при определенных условиях только сделает его проверку, это если повезет и угадаешь. Бесполезный и громоздкий скрипт, благо поставлен был хоть stopscript.
Ну так предлагай свой вариант) Ты же у нас считаешься гуру скриптоводства, так напиши мне скрипт, вычисляющий пол. Без использования диалогов, ясен пень Изменено пользователем Охотник за Смертью
Ссылка на комментарий
Поделиться на другие сайты

Давайте на личности переходить не будем, пошагово объясню на примере, пожалуй этого будет достаточно

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 )

return

endif

Тут как только вы окончательно выбор свой подтвердите - скрипт сработает 1 раз ( Stoscript соответственно надо будет воткнуть)

Читабильность важна в скриптовых плага тысячи на 2-3 строк, на финальном этапе эта читабильность убирается в угоду оптимизации.

Написать ВАМ скрипт? )))) В принципе могу, в лс уже некоторые моменты отправил. на счет оставшихся 4 рас, можно было бы подумать, но это глупо, Добавление 1 гритинга не стоит изврата с обманом движка, если бы другого способа небыло, я бы вам написал полноценный скрипт.

Изменено пользователем Малковианин
Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...