Dagot_Prolaps Опубликовано 12 ноября, 2018 Жалоба Поделиться Опубликовано 12 ноября, 2018 (изменено) Сэры и мутсэры, свершилось! Плагин даёт Нереварину 5 скиллпоинтов за каждый уровень. Скиллпоинты сохраняются и тратятся на обучение у тренеров. В отличие от системы Обливиона и Скайирима вам совершенно не нужно прибегать к задротству и быстрей бежать хоть к кому-нибудь чтобы потратить свои 5 скиллпоинтов на обучение. Нет - играйте себе спокойно в своём темпе. Можете прийти в Балмору уже на 9 уровне и сразу потратить накопленные 45 скиллпоинтов, поднять у тренеров 5 уровней, получить ещё 25 скиллпоинтов и тут же потратить и их. Хотя куда разумнее было бы проявить экономность: тратить драгоценные скиллпоинты только на самые труднопрокачиваемые навыки на высоких значениях. Работает это так: Новые глобальные переменные: 4nm_lessons = 04nm_stoptraining = 0 Сам стартовый скрипт: Begin 4nm_training short menushort controlshort levelshort skillpointsfloat hour1float hour2float timer if ( player->getlevel != level )set level to ( player->getlevel )set skillpoints to ( level * 5 )endif if ( skillpoints > "4nm_lessons" )if ( "4nm_stoptraining" == 1 )set "4nm_stoptraining" to 0endifendif if ( menumode == 1 )if ( menu == 0 )set hour1 to gamehourset menu to 1endifif ( player->getsoundplaying "skillraise" == 1 )player->stopsound "skillraise"set control to 1endifelseif ( menu == 1 )if ( control == 0 )set menu to 0endifendif if ( control == 1 )set timer to ( timer + GetSecondsPassed )if timer > 0.5set hour2 to ( gamehour - hour1 )if ( hour2 < 0 )set hour2 to ( 26 + gamehour - hour1 )endifif hour2 >= 2set "4nm_lessons" to ( "4nm_lessons" + 1 )Messagebox "Вы обучились уже %.0f раз", 4nm_lessonsset hour1 to gamehourif ( skillpoints <= "4nm_lessons" )set "4nm_stoptraining" to 1Messagebox "Вам пора применить полученные знания на практике"endifendifset control to 0set timer to 0endifendif End Для работы запрета на обучение обязателен МСР с опцией "фильтр отказа от предоставления услуг" Когда игрок обучается у тренера, игра воспринимает это как повышение навыка из режима меню.В отличие от мортовского плагина я постарался исправить ложное срабатывание повышения счётчика обучений при прокачке алхимии, зачарования, кузнеца, красноречия и торговли - все эти навыки повышаются из меню.С книгами же всё в порядке - игра не считает их прокачкой навыков из меню. При обучении у тренеров спустя полсекунды приходит сообщение "Вы обучились уже столько-то раз". Это сообщение НЕ должно приходить при собственноручном повышении алхимии, зачарования, кузнеца, торговли и красноречия. Скачать:http://www.fullrest.ru/files/5-skillpointov/files Изменено 14 марта, 2019 пользователем Dagot_Prolaps Ссылка на комментарий Поделиться на другие сайты Поделиться
-=ChieF=- Опубликовано 12 ноября, 2018 Жалоба Поделиться Опубликовано 12 ноября, 2018 В отличие от системы Обливиона и Скайирима вам совершенно не нужно прибегать к задротству и быстрей бежать хоть к кому-нибудь чтобы потратить свои 5 скиллпоинтов на обучение. Нет - играйте себе спокойно в своём темпе. Можете прийти в Балмору уже на 9 уровне и сразу потратить накопленные 45 скиллпоинтов, поднять у тренеров 5 уровней, получить ещё 25 скиллпоинтов и тут же потратить и их.Вот! Наконец-то! Вот то, чем меня бесило оригинальное изобретение Беседки! Всё время беспокоиться, чтобы каждый уровень потратить свои скиллпоинты на обучение :) По описанию - очень вкусно. Забираю на тест. Ссылка на комментарий Поделиться на другие сайты Поделиться
bonchik Опубликовано 12 ноября, 2018 Жалоба Поделиться Опубликовано 12 ноября, 2018 подскажите а разве в оригинале если не потратить сразу скилпоинты - то нельзя было позже догнать и раскидать? Ссылка на комментарий Поделиться на другие сайты Поделиться
-=ChieF=- Опубликовано 12 ноября, 2018 Жалоба Поделиться Опубликовано 12 ноября, 2018 (изменено) подскажите а разве в оригинале если не потратить сразу скилпоинты - то нельзя было позже догнать и раскидать?В оригинальном Морровинде вообще не было ограничений на обучение, кроме ограничений по характеристикам. В Обливионе и Скайриме на уровень строго давалось 5 очков обучения. При достижении нового уровня счетчик сбрасывался, не важно, успел ты их потратить или нет. upd. В целом всё работает так, как написано. Но если за эту секунду до появления "Вы обучились уже N раз" успеть еще раз тыкнуть в меню обучения и обучиться, то это всё равно будет считаться за 1 очко обучения. Я так один раз даже 3 раза успел сделать. Тыц-тыц-тыц! - "вы обучились уже 1 раз" :) Но так всё работает :) Изменено 12 ноября, 2018 пользователем -=ChieF=- Ссылка на комментарий Поделиться на другие сайты Поделиться
Ao3 Опубликовано 12 ноября, 2018 Жалоба Поделиться Опубликовано 12 ноября, 2018 (изменено) Звучит круто, спасибо, поставлю. (хотя и так редко тренерами пользуюсь) Изменено 12 ноября, 2018 пользователем Ao3 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dagot_Prolaps Опубликовано 12 ноября, 2018 Автор Жалоба Поделиться Опубликовано 12 ноября, 2018 (изменено) Если сократить время ожидания до 0.5 секунды - справятся ли со скриптом самые допотопные компы? Ради них и была секунда. Вот итоговая версия с задержкой 0.5 секунды и без тестового сообщения.Пробовал заабузить в стиле "самые быстрые руки на диком Вварденфелле" - не вышло.4NM_TRAINING.ESP Изменено 12 ноября, 2018 пользователем Dagot_Prolaps Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 13 ноября, 2018 Жалоба Поделиться Опубликовано 13 ноября, 2018 (изменено) "В отличие от мортовского плагина я постарался исправить ложное срабатывание повышения счётчика обучений при прокачке алхимии, зачарования, кузнеца, красноречия и торговли - все эти навыки повышаются из меню." вот это было вообще лишним, т.к. ложных срабатываний там быть не может в принципе, завязка была на skillrise и gamehour, потому ложные срабатывания невозможны, так как при кузнечном деле, алхимии, торговле, зачаровании, красноречии, чтениии книг, переменная gamehour не меняется.Что касается секунд, тут надо тестами подбирать минимальную величину и потом уже тестить это на слабой машине. Либо не по таймеру сбрасывать переменные. Изменено 13 ноября, 2018 пользователем mortuus Ссылка на комментарий Поделиться на другие сайты Поделиться
Dagot_Prolaps Опубликовано 13 ноября, 2018 Автор Жалоба Поделиться Опубликовано 13 ноября, 2018 (изменено) Ложные срабатывания там были из-за того что отсутствовала проверка на выход из меню.то есть Нереварин заходит в меню - ТАЙМЕР ЗАСЕКАЕТСЯ - покрутился в меню, ничего не повысил - вышел.Заходит через несколько часов ещё в меню алхимии - А таймер-то НЕ перезасекается - Нереварин варит зелья, повышает скилл - и на тебе ложное срабатывание. Вот оригинальная версия твоего скрипта и исправленная: Begin Mort_traning float timershort statefloat time_mshort status if ( Player->getlevel != mort_LvlUp )set mort_traning_gl to 0set mort_LvlUp to ( Player->getlevel )endif if ( menumode == 1 )If ( state == 0 )set state to 1set timer to gamehourendifif ( player->getsoundplaying "skillraise" == 1 )player->stopsound "skillraise"set status to 1endifif ( status == 1 )set time_m to ( gamehour - timer )set status to 0if ( time_m < 0 )set time_m to ( 24 - gamehour + timer )endifif time_m >= 2set Mort_traning_gl to Mort_traning_gl + 1Messagebox "Обучались %.0f раз", Mort_traning_gl set state to 0set time_m to 0endifendifendif end Begin Mort_traning float timershort statefloat time_mshort status if ( Player->getlevel != mort_LvlUp )set mort_traning_gl to 0set mort_LvlUp to ( Player->getlevel )endif if ( menumode == 1 )If ( state == 0 )set state to 1set timer to gamehourendifif ( player->getsoundplaying "skillraise" == 1 )player->stopsound "skillraise"set status to 1endifif ( status == 1 )set time_m to ( gamehour - timer )set status to 0if ( time_m < 0 )set time_m to ( 24 - gamehour + timer )endifif time_m >= 2set Mort_traning_gl to Mort_traning_gl + 1Messagebox "Обучались %.0f раз", Mort_traning_gl set state to 0set time_m to 0endifendifendif if ( menumode == 0 )If ( state == 1 )set state to 0endifendif end Однако исправленная почему-то не работает, хотя там всего лишь добавлена ещё одна секция в конце. Ещё обрати внимание на эту дичь: if ( time_m < 0 )set time_m to ( 24 - gamehour + timer ) Должно быть так: if ( time_m < 0 )set time_m to ( 24 + gamehour - timer ) Изменено 13 ноября, 2018 пользователем Dagot_Prolaps Ссылка на комментарий Поделиться на другие сайты Поделиться
aL☢ Опубликовано 13 ноября, 2018 Жалоба Поделиться Опубликовано 13 ноября, 2018 вот это было вообще лишним, т.к. ложных срабатываний там быть не может в принципе, завязка была на skillrise и gamehour, потому ложные срабатывания невозможны, так как при кузнечном деле, алхимии, торговле, зачаровании, красноречии, чтениии книг, переменная gamehour не меняется.Что касается секунд, тут надо тестами подбирать минимальную величину и потом уже тестить это на слабой машине. Либо не по таймеру сбрасывать переменные. Если б ты тестировал свои плагины - ты бы увидел как раз именно ложные срабатывания. Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 13 ноября, 2018 Жалоба Поделиться Опубликовано 13 ноября, 2018 Я бы вместо отслеживания времени отслеживал бы трату денег. Если навык повышается и уменьшаются деньги значит обучение за деньги. С книгами же всё в порядке - игра не считает их прокачкой навыков из меню. А если книга из инвентаря читается? Ссылка на комментарий Поделиться на другие сайты Поделиться
Dagot_Prolaps Опубликовано 13 ноября, 2018 Автор Жалоба Поделиться Опубликовано 13 ноября, 2018 Тогда тоже всё в порядке - время-то не проходит. А как отследить по деньгам? Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 13 ноября, 2018 Жалоба Поделиться Опубликовано 13 ноября, 2018 Тогда тоже всё в порядке - время-то не проходит. А как отследить по деньгам? Что то типо: в меню постоянно записываем текущее кол-во денег. Ждем skillraise. И когда оно свершилось то сравниваем деньги с предыдущим значением, если меньше то - вуаля. Я вот задумываюсь над созданием плагина где в качестве награды могли бы давать повышение навыка. Но чтобы это влияло на уровень. Пока что повышение командой не влияет. Задумка такая что при обучении тебе будут возвращать потраченные деньги. Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 Ложные срабатывания там были из-за того что отсутствовала проверка на выход из меню.то есть Нереварин заходит в меню - ТАЙМЕР ЗАСЕКАЕТСЯ - покрутился в меню, ничего не повысил - вышел.Заходит через несколько часов ещё в меню алхимии - А таймер-то НЕ перезасекается - Нереварин варит зелья, повышает скилл - и на тебе ложное срабатывание. Вот оригинальная версия твоего скрипта и исправленная: Begin Mort_traning float timershort statefloat time_mshort status if ( Player->getlevel != mort_LvlUp )set mort_traning_gl to 0set mort_LvlUp to ( Player->getlevel )endif if ( menumode == 1 )If ( state == 0 )set state to 1set timer to gamehourendifif ( player->getsoundplaying "skillraise" == 1 )player->stopsound "skillraise"set status to 1endifif ( status == 1 )set time_m to ( gamehour - timer )set status to 0if ( time_m < 0 )set time_m to ( 24 - gamehour + timer )endifif time_m >= 2set Mort_traning_gl to Mort_traning_gl + 1Messagebox "Обучались %.0f раз", Mort_traning_gl set state to 0set time_m to 0endifendifendif end Begin Mort_traning float timershort statefloat time_mshort status if ( Player->getlevel != mort_LvlUp )set mort_traning_gl to 0set mort_LvlUp to ( Player->getlevel )endif if ( menumode == 1 )If ( state == 0 )set state to 1set timer to gamehourendifif ( player->getsoundplaying "skillraise" == 1 )player->stopsound "skillraise"set status to 1endifif ( status == 1 )set time_m to ( gamehour - timer )set status to 0if ( time_m < 0 )set time_m to ( 24 - gamehour + timer )endifif time_m >= 2set Mort_traning_gl to Mort_traning_gl + 1Messagebox "Обучались %.0f раз", Mort_traning_gl set state to 0set time_m to 0endifendifendif if ( menumode == 0 )If ( state == 1 )set state to 0endifendif end Однако исправленная почему-то не работает, хотя там всего лишь добавлена ещё одна секция в конце. Ещё обрати внимание на эту дичь: if ( time_m < 0 )set time_m to ( 24 - gamehour + timer ) Должно быть так: if ( time_m < 0 )set time_m to ( 24 + gamehour - timer ) Так, давай начнем с того, откуда ты дернул этот скрипт? Было 100500 версий плагина в которых были разные баги и в том числе ложные срабатывания. Просто это мувитон, дернул откуда-то мой скрипт, переработал его и написал что скрипт мой хреновый, а ты такой пушистый и всё сделал хорошо. Могу в ЛС скинуть последнюю версию плагина, поймёшь, что через таймеры отслеживания делать - это плохая идея(нет стабильность работы скрипта, могут быть фпсозависимые баги). Заодно и потестируешь. Если б ты тестировал свои плагины - ты бы увидел как раз именно ложные срабатывания.al...al никогда не меняется... Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 Могу в ЛС скинуть последнюю версию плагина, поймёшь, что через таймеры отслеживания делать - это плохая идея(нет стабильность работы скрипта, могут быть фпсозависимые баги). Заодно и потестируешь. т.е. в последней версии есть фпсозависимые баги и нет стабильности? Тогда к чему это? Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 (изменено) т.е. в последней версии есть фпсозависимые баги и нет стабильности? Тогда к чему это?Это к тому, что он сделал через таймеры, потому цепляет багоюзы с быстрыми нажатиями. Я их не использовал в последней версии. Ай, ладно, выложу сюда, мб ещё кому-то будет полезно. Begin Mort_traningfloat timershort statefloat time_mshort statusif ( Player->getlevel != mort_LvlUp )set mort_traning_gl to 0set mort_LvlUp to ( Player->getlevel )endifif menumode == 1If state == 0set state to 1set timer to gamehourendifif ( player->getsoundplaying "skillraise" == 1 )player->stopsound "skillraise"set status to 1endifendifif state == 1if menumode==0set state to 0set time_m to ( gamehour - timer )if status == 1set status to 0if time_m > 2if time_m < 2.1set Mort_traning_gl to Mort_traning_gl + 1Messagebox "Обучались %.0f раз", Mort_traning_gl set time_m to 0endifendifendifendifendifendВ общем вся завязка на gamehour. Пересчет часов при смене дня не требуется за счет запрета на обучение в ночное время.Зы Лол, ну вот, отписался и баг нашел. Изменено 15 ноября, 2018 пользователем mortuus Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 (изменено) Это к тому, что он сделал через таймеры, потому цепляет багоюзы с быстрыми нажатиями. Я их не использовал в последней версии. Да он то тут при чем. Ты пытаешься оправдаться но тут же пишешь что твой последний скрипт багован. Или ты только щас узнал что он багован? Изменено 15 ноября, 2018 пользователем Larkin Ссылка на комментарий Поделиться на другие сайты Поделиться
-=ChieF=- Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 Кстати, а какой баг-то в последней версии от mortuus? Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 При чем тут мой последний скрипт? И с чего он багован? И почему я должен оправдываться? Я говорю про то, что старые мои версии были с багами, он оттуда дернул скрипт. Могу в ЛС скинуть последнюю версию плагина, поймёшь, что через таймеры отслеживания делать - это плохая идея(нет стабильность работы скрипта, могут быть фпсозависимые баги). Последняя багована или последняя не багована? Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 (изменено) Последняя багована или последняя не багована?Блин, ну ты вот устроил тут флудильню. Что непонятного-то? Скидываю последнюю версию для сравнения с его скриптом. У него реализовано через секундные таймеры, у меня через игровое время. Кстати, а какой баг-то в последней версии от mortuus?нашел багоюз один, если его знать, то обходить ограничение на обучение, но случайно его тяжело найти. В диалогах есть некоторые фразы требующие нажатия "продолжить". Так вот если обучаться пока эта штука висит в диалоги, то игра не закрывает окно диалога, как это бывает при обычном обучении, соответственно не срабатывают некоторые условия скрипта по отслеживанию закрытия меню. Изменено 15 ноября, 2018 пользователем mortuus Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 Блин, ну ты вот устроил тут флудильню. Что непонятного-то? Скидываю последнюю версию для сравнения с его скриптом. У него реализовано через секундные таймеры, у меня через игровое время. Ну блин я понял что ты хочешь свою последнюю багованую кидать для непонятно какого сравнения.Так и у него не через секундные таймеры а через проверку gamehour. Таймеры это getsecondspassed. Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 Ну блин я понял что ты хочешь свою последнюю багованую кидать для непонятно какого сравнения.Так и у него не через секундные таймеры а через проверку gamehour. Таймеры это getsecondspassed. if timer > 1 set control to 0 set timer to 0 endifУ него сброс переменных идет по секундному таймеру(если в шапке темы актуальный скрипт) Ссылка на комментарий Поделиться на другие сайты Поделиться
Dagot_Prolaps Опубликовано 15 ноября, 2018 Автор Жалоба Поделиться Опубликовано 15 ноября, 2018 У меня тоже через игровое время. Полусекундный таймер нужен для того чтобы дать дополнительную проверку криво работающему определению игрового времени. Если бы с ним всё было гладко, я бы не использовал таймер, но нет. Ссылка на комментарий Поделиться на другие сайты Поделиться
-=ChieF=- Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 нашел багоюз один, если его знать, то обходить ограничение на обучение, но случайно его тяжело найти. В диалогах есть некоторые фразы требующие нажатия "продолжить". Так вот если обучаться пока эта штука висит в диалоги, то игра не закрывает окно диалога, как это бывает при обычном обучении, соответственно не срабатывают некоторые условия скрипта по отслеживанию закрытия меню.По мне так не критично...Кстати, я уже спрашивал - а почему многие плагины не вывешиваются в базу? Сделают или переведут что-то под МФР, потом из сборки плаг удаляется, и хер его где найдешь потом :( Так и с ограничением от mortuus'a - мне бы вот пригодилось. Потому что специально выискивать таких NPC с "продолжить" я не буду, а вот быстро щелкнуть за секунду на "обучение" может получиться :) Ссылка на комментарий Поделиться на другие сайты Поделиться
Dagot_Prolaps Опубликовано 15 ноября, 2018 Автор Жалоба Поделиться Опубликовано 15 ноября, 2018 А за 0.5 секунды получалось? Ссылка на комментарий Поделиться на другие сайты Поделиться
mortuus Опубликовано 15 ноября, 2018 Жалоба Поделиться Опубликовано 15 ноября, 2018 По мне так не критично...Кстати, я уже спрашивал - а почему многие плагины не вывешиваются в базу? Сделают или переведут что-то под МФР, потом из сборки плаг удаляется, и хер его где найдешь потом :( Так и с ограничением от mortuus'a - мне бы вот пригодилось. Потому что специально выискивать таких NPC с "продолжить" я не буду, а вот быстро щелкнуть за секунду на "обучение" может получиться :)Ну... залью, как исправлю багоюз А то со сменой компа куча материала потерялась, тяжко сейчас будет что-то найти, а были штуки интересные. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти