Pretorius Опубликовано 18 мая, 2022 Жалоба Поделиться Опубликовано 18 мая, 2022 Заметил, если дать компаньону предмет с постоянным эффектом левитации, в экстерьере он будет все время подиматься все выше, драка с кем-то заставляет его понижаться, но потом при движении все равно поднимается и становится бесполезен, а если зайти в интерьер и выйти, падает с огромной высоты и умирает. Как исправить это скриптом? Думал сделать это через отслеживание координат игрока, чтобы когда из-за его высоты он на огромной дистанции, перемещать его к игроку (взял идею из плагина, улучшающего компаньонов): Begin DreamerServant short noLore short companion short doOnce short fightOnce short py short pz short px short satellit ;short state if ( MenuMode == 1 ) if ( GetPCSleep == 0 ) return endif endIf if ( fightOnce != 1 ) if ( GetPCRank "Sixth House" > -1 ) SetFight 30 set fightOnce to 1 endif endif if ( doOnce != 1 ) if ( GetPCRank "Sixth House" >= 6 ) addtopic "прислуживать" set doOnce to 1 endif endif if ( satellit == 1 ) set pz to ( player->getpos, z ) set px to ( player->getpos, x ) set py to ( player->getpos, y ) if ( getdistance, "player" >= 1500 ) ; if ( state == 0 ) setpos, z, pz setpos, x, px setpos, y, py ; set state to 1 ; elseif ( state == 1 ) ; set state to 0 ; endif endif if ( GetDistance Player > 350 ) ForceRun elseif ( GetDistance Player < 300 ) ClearForceRun endif if ( Player->GetPCSneaking == 1 ) ForceSneak elseif ( Player->GetPCSneaking == 0 ) ClearForceSneak endif if ( GetCurrentAIPackage == 3 ) if ( getdistance, "player" <= 150 ) if ( getpcjumping == 1 ) ForceMoveJump endif endif endif if ( GetCurrentAIPackage == 3 ) if ( getpcjumping == 0 ) if ( getforcejump == 1 ) clearForceJump endif endif endif endif end DreamerServant , но теперь он при большой высоте вообще куда-то исчезает, решил проверить по консоли динамику его переменных и в этот момент он исчезает и из консоли так, словно бы я убирал его командой SetDelete. Ссылка на комментарий Поделиться на другие сайты Поделиться
Larkin Опубликовано 20 мая, 2022 Жалоба Поделиться Опубликовано 20 мая, 2022 Тут satellit нигде не устанавливается. И где setpos ,сначала x, потом y, потом z сделайте Ссылка на комментарий Поделиться на другие сайты Поделиться
Pretorius Опубликовано 21 мая, 2022 Автор Жалоба Поделиться Опубликовано 21 мая, 2022 Эта переменная в диалоге устанавливается, чтобы они следовали за мной только когда я им прикажу. Переустановил порядок setpos, теперь он хотя бы не исчезает, но когда отлетел от него подльше, он просто на месте застрял, меня не видит, а когда вошел в интерьер и вышел, куда-то исчез, провалился что ли. https://ibb.co/bLzRDZM Ссылка на комментарий Поделиться на другие сайты Поделиться
Pretorius Опубликовано 26 мая, 2022 Автор Жалоба Поделиться Опубликовано 26 мая, 2022 Разобрался, в том плагине был неправильно установлен тип переменных, в которых записываются координаты игрока, надо float, а не short, теперь все работает (характеристики: 1_sat_spells_1 - левитация 100, нужна, потому что когда мантии с постоянным эффектом левитации на мне и на приспешнике, а я улетаю слишком далеко, он устанавливается рядом со мной с деактивированной мантией и упал бы без этого; 1_sat_spells_2 - хождение по воде, 1_sat_spells_3 - водное дыхание, 1_sat_spells_4 - хамелеон 80%; также установил, чтобы не возвращался к игроку, когда он обнажил оружие или приготовил заклинание, чтобы если начнется битва с врагом, можно было бы отлететь и посмотреть издали, если захочется): Begin DreamerServant float px float py float pz short noLore short companion short doOnce short fightOnce short satellit short state if ( MenuMode == 1 ) if ( GetPCSleep == 0 ) return endif endIf if ( fightOnce != 1 ) if ( GetPCRank "Sixth House" > -1 ) SetFight 30 set fightOnce to 1 endif endif if ( doOnce != 1 ) if ( GetPCRank "Sixth House" >= 6 ) addtopic "прислуживать" set doOnce to 1 endif endif if ( satellit == 1 ) set px to ( player->getpos, x ) set py to ( player->getpos, y ) set pz to ( player->getpos, z ) if ( getdistance, "player" >= 1500 ) if ( GetWeaponDrawn == 0 ) if ( GetSpellReadied == 0 ) if ( state == 0 ) setpos, x, px setpos, y, py setpos, z, pz set state to 1 endif endif endif elseif ( getdistance, "player" < 1500 ) if ( getdistance, "player" > 350 ) ForceRun if ( state == 1 ) set state to 0 endif elseif ( getdistance, "player" < 350 ) ClearForceRun if ( state == 1 ) set state to 0 endif endif endif if ( Player->GetPCSneaking == 1 ) ForceSneak elseif ( Player->GetPCSneaking == 0 ) ClearForceSneak endif if ( GetCurrentAIPackage == 3 ) if ( getdistance, "player" <= 150 ) if ( getpcjumping == 1 ) ForceMoveJump endif endif endif if ( GetCurrentAIPackage == 3 ) if ( getpcjumping == 0 ) if ( getforcejump == 1 ) clearForceJump endif endif endif if ( Player->GetEffect sEffectLevitate == 1 ) addspell, "1_sat_spells_1" else removespell, "1_sat_spells_1" endif if ( Player->GetEffect sEffectWaterWalking == 1 ) addspell, "1_sat_spells_2" else removespell, "1_sat_spells_2" endif if ( player->geteffect sEffectWaterBreathing == 1 ) addspell, "1_sat_spells_3" else removespell, "1_sat_spells_3" endif if ( player->geteffect, sEffectChameleon == 1 ) addspell, "1_sat_spells_4" else removespell, "1_sat_spells_4" endif endif if ( OnDeath == 1 ) set satellit to 0 endif end DreamerServant Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти