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

Broken von Skull

Граждане
  • Постов

    762
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Broken von Skull

  1. Это всё надо вынести на обсуждение с сообществом. Но очень не хотелось бы видеть две отдельные кодовые базы...

     

    У него особые планы насчёт охлаждения конфликта между OpenMW и MWSE, которые я не раскрою.

    Ну хоть небольшой намёк? ;)
  2. Я не программист, но разве мешает ли что-то технически уже сейчас начать готовить почву к слиянию?

    Фундаментальные аспекты OpenMW, которые хоть как-то касаются мультиплеера, практически реализованы, надо только поправить приоритеты развития проекта и начать дехардкодить то, что нужно для TES3MP. В диздоке Zini по поводу мультиплеера как раз больше всего вопросов к скриптингу. Или всё не так?

    Я понимаю, у Zini свое видение будущего, но тут FOSS, а не коммерческий движок: надо давать дорогу молодым и перспективным. Тем более, что из старой гвардии мало кто остался, а новоприбывшие часто не заходят далее первого поста в разделе New Developers Applications.

    А тут работающий мультиплеер - фича мечты для Морровинда! Задвинуть такое на дальнюю полку будет непростительной ошибкой.

  3. Ну по крайней мере: "We do intent to take in further input from the developer community, which includes multiplayer developers."

    Да и scrawl отошел от дел...

    Проблема в том, что развитие OpenMW происходит с крайне неравномерной скоростью (а в последнее время ближе к медленной). Активных разработчиков немного, свежей крови ещё меньше. Если релиз 1.0 можно ждать уже в обозримом будущем, то с какой скоростью всё двинется дальше - сложно предсказать.

    А TES3MP за короткое время вырос в серьёзный проект с большим сообществом. Потому было бы нехорошо заставлять разработчиков TES3MP ждать полного дехардкодинга и появления нужных фичей. На это могут уйти годы...

    Было бы лучше уже сейчас начать процесс подготовки к слиянию, хотя бы после 1.0. Сомневаюсь, что Zini откажется.

  4. Согласен-то согласен, прикол в том, что он не рассчитывает на объединение их в ближайшем будущем (см. доку по пост-1.0 -- мультиплеер там это "возможная цель для достижения к 2.0"). Давид этим разочарован и считает, что такие предубеждения не приведут ни к чему хорошему.

    А он обсуждал это с Zini? Возможно тот просто не предполагает, что TES3MP будет развиваться быстрее, чем OpenMW.
  5. Скажу, что он находит, что неплохо было бы Zini согласиться на объединение OpenMW и TES3MP, по некоторым серьёзным причинам.

    Разве Zini не согласен? Вроде отписывался в духе "поживём - увидим".
  6. Спасибо за помощь! Плагин заработал, но с некоторыми нюансами, отличными от ванили. Потестил только на лодке.

     

    1) Коллизии со статиками не работают, как и заметил akortunov. Причем с террейном всё сталкивается нормально.

    2) В ручном режиме плавания при повороте на определенное кол-во градусов (540 направо от изначального положения лодки, 90 - налево) вектор движения лодки перестает реагировать на повороты. Причем если вырулить обратно - всё приходит в норму.

     

    Со скриптом ks_sr_ini проблем не было.

  7. Выглядит вполне выполнимо!

    Надеюсь, что хоть в 2019 дождемся релиза 1.0.

     

    5. Довести до ума физику.

     

    А что с ней не так?

     

    7. Долго и нудно ловить мелкие баги в модах, т.к. в 1.0 заявлена совместимость с ванильными модами.

     

    Кстати о багах, спешу заявить, что плагин "Корабль 'Оседлавший Бурю'" в OpenMW не работает. Ни лодка, ни корабль не активируются для плавания.

    Вот скрипт лодки:

    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Stormrider Boat Script - Copyright © Nov 2004 by Kellick Stormcrow
    ; Based on: Boat Script - Copyright © Dec 2002 by (MAD)MAX YUE
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    Begin KS_SR_Boat_Script
     
    ;SCRIPT DEPENDENCIES
    ;KS_SR_Boat_Create
    ;KS_SR_Boat_Create_Detect
    ;KS_SR_Boat_Create_Detect_R
    ;KS_SR_Boat_Multiplier
    ;KS_SR_Boat_Multiplier_02
    ;KS_SR_Boat_Multiplier_03
    ;KS_SR_Boat_FTravel_GM
    ;KS_SR_Boat_FTravel_SN
    ;KS_SR_Boat_FTravel_TB
    ;KS_SR_Boat_FTravel_SM
    ;KS_SR_Boat_FTravel_DF
    ;KS_SR_Boat_FTravel_KH
    ;KS_SR_Boat_FTravel_Ship
     
    ;ITEM DEPENDENCIES
    ;activator KS_SR_Boat (script attaches to)
    ;misc KS_SR_misc_ship_repair
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;GLOBAL PARMATERS
    ;===============================================================================
    ;float KS_SR_Boat_Angle ; store object Angle before it gets deleted
    ;short KS_SR_Boat_Auto ; 0=manual turning, 1=auto turn
    ;short KS_SR_Boat_Cellchange ; flag when player change cell
    ;short KS_SR_Boat_Damage ; Boat hull rating
    ;float KS_SR_Boat_Distance ;
    ;short KS_SR_Boat_Exist ;
    ;short KS_SR_Boat_Gear ;
    ;short KS_SR_Boat_Hitflag ;
    ;short KS_SR_Boat_Sailmode ; 0=dismounted, 1=sailing
    ;short KS_SR_Boat_Speed ; Sailing speed
    ;float KS_SR_Boat_X ; Boat x coord
    ;float KS_SR_Boat_Xdistance ;
    ;float KS_SR_Boat_Xmul ; pre-determined sin/cos multiplier
    ;float KS_SR_Boat_Y ; Boat y coord
    ;float KS_SR_Boat_Ymul ; pre-determined sin/cos multiplier
    ;float KS_SR_Boat_Ydistance ;
    ;float KS_SR_Ship_Angle ; Ship Angle
    ;short KS_SR_Ship_Exist ; Ship exist and boat docking state
    ;float KS_SR_Ship_X ; Ship x coord
    ;float KS_SR_Ship_Y ; Ship y coord
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ;LOCAL PARAMETERS
    ;===============================================================================
    float xx ; object x coordinates
    float yy ; object y coordinates
    float zz ; object z coordinates
    float oangle ; object z axis angle
    float zangle ; player z axis angle
    float xxx ; player x coordinates
    float yyy ; player y coordinates
    float zzz ; player z coordinates
    float xxxx ; boat x coordinate when land on shore
    float yyyy ; boat y coordinate when land on shore
    short landed ; parameter set when player landed
    float stimer ; timer used to delay delete object
    short sscript ; parameter set when cell change
    short doOnce ; parameter used to set boat position once immediately after creation
    short select ; button used for selecting options
    short selectflag1 ; flag set when boat is activated
    short selectflag2 ; flag set when FTS or Fast Travel is selected
    short delay ; parameter used to delay Disable/Enable
    short temp ; temporary parameter
    short flag
    short pressed ; flag to chk SNEAK button pressed and released
    float xdist ; parameter used to calculate x distance
    float ydist ; parameter used to calculate y distance
    float distance ; parameter used to calculate avg distance
    short startflag ; parameter used to chk whether boat is docking
    short disableflag ; flag used to disable ship script
    short repair ; parameter used to calculate repair pts
     
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; SCRIPT BEGINS
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( MenuMode == 1 )
    return
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Delete object
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( disableflag == 1 )
    Disable
    if ( CellChanged == 1 )
    SetDelete, 1
    endif
    return
    endif
     
    if ( KS_SR_Boat_Speed > 0 )
    if ( CellChanged == 1 )
    set KS_SR_Boat_Cellchange to 1
    endif
    endif
     
    if ( KS_SR_Ship_Exist == 4 )
    set disableflag to 1
    set KS_SR_Ship_Exist to 5
    return
    endif
     
    if ( KS_SR_Ship_Exist == 2 )
    set KS_SR_Boat_Speed to 0
    set KS_SR_Boat_Sailmode to 0
    Stopscript KS_SR_Boat_Multiplier
    set KS_SR_Ship_Exist to 3
    endif
     
    if ( KS_SR_Ship_Exist >= 2 )
    if ( KS_SR_Ship_Exist != 10 )
    return
    endif
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Object will warp or remain in previous cell during cell change. To replace the object, 
    ; a new object is created. Requires global script "KS_SR_Boat_Create" to create new object.
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( KS_SR_Boat_Sailmode == 1 )
    if ( KS_SR_Boat_Cellchange == 1 )
    startscript, "KS_SR_Boat_Create"
    set KS_SR_Boat_Cellchange to 2
    set stimer to 0
    if ( sscript > 0 )
    SetDelete,  1
    return
    endif
    set sscript to 1
    endif
    endif
     
    if ( sscript == 1 )
    if ( KS_SR_Boat_Cellchange == 0 )
    Disable
    set sscript to 2
    endif
    endif
     
    if ( sscript == 2 )
    set stimer to ( stimer + GetSecondsPassed )
    if ( stimer >= 1.5 )
    SetDelete, 1
    return
    else
    return
    endif
    endif
     
    if ( KS_SR_Boat_Speed > 0 )
    if ( delay == 0 )
    Disable
    set delay to 1
    endif
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Set boat initial coordinates
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( doOnce == 0 )
    Disable
    if ( KS_SR_Boat_X != 0 )
    if ( KS_SR_Boat_Y != 0 )
    set xx to KS_SR_Boat_X
    set yy to KS_SR_Boat_Y
    if ( KS_SR_Boat_Angle >= 0 )
    set oangle to ( KS_SR_Boat_Angle - 180 )
    else
    set oangle to ( 180 + KS_SR_Boat_Angle )
    endif
    setpos, x, xx
    setpos, y, yy
    setpos, z, 2
    setAngle, z, oangle
    endif
    endif
    Enable
    set doOnce to 1
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Set coordinates correct boat coordinates immediately after load game
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( KS_SR_Boat_Sailmode == 0 )
    set xx to KS_SR_Boat_X
    set yy to KS_SR_Boat_Y
    if ( KS_SR_Boat_Angle >= 0 )
    set oangle to ( KS_SR_Boat_Angle - 180 )
    else
    set oangle to ( 180 + KS_SR_Boat_Angle )
    endif
    setpos, x, xx
    setpos, y, yy
    setpos, z, 2
    setAngle, z, oangle
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Select Menu Routine
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( selectflag1 == 1 )
    set select to GetButtonPressed
    if ( select == 0 )
    stopscript KS_SR_Boat_Multiplier
    startscript KS_SR_Boat_Multiplier_03
    set KS_SR_Boat_Sailmode to 0
    messagebox "БЫСТРОЕ ПУТЕШЕСТВИЕ", "Назад к кораблю", "Дагон Фел", "Гнаар Мок", "Хла Оуд", "Хуул", "Садрит Мора", "Сейда Нин", "Тель Бранора", "ВЫЙТИ"
    set selectflag2 to 1
    set selectflag1 to 0
    elseif ( select == 1 )
    startscript KS_SR_Boat_Create_Detect_R
    messagebox "Лодка: Самый малый назад!"
    set KS_SR_Boat_Speed to -1
    set selectflag1 to 0
    elseif ( select == 2 )
    messagebox "Лодка надежно стоит на якоре..."
    set KS_SR_Boat_Speed to 0
    set landed to 2
    set selectflag1 to 0
    elseif ( select == 3 )
    if ( KS_SR_Boat_Damage == 100 )
    Messagebox "Повреждений нет!"
    elseif ( player->GetItemCount, "KS_SR_misc_ship_repair" > 0 )
    playsound "Repair"
    player->removeitem "KS_SR_misc_ship_repair", 1
    set repair to Random, 100
    set KS_SR_Boat_Damage to ( KS_SR_Boat_Damage + repair )
    if ( KS_SR_Boat_Damage > 100 )
    set KS_SR_Boat_Damage to 100
    endif
    messagebox "Состояние лодки = %.0f / 100", KS_SR_Boat_Damage
    else
    messagebox "У вас нет инструментов для ремонта лодки..."
    endif
    set selectflag1 to 0
    elseif ( select == 4 )
    if ( KS_SR_Boat_Auto == 0 )
    set KS_SR_Boat_Auto to 1
    messagebox "Автоматическое управление"
    elseif ( KS_SR_Boat_Auto == 1 )
    set KS_SR_Boat_Auto to 0
    messagebox "Ручное управление"
    endif
    set selectflag1 to 0
    set KS_SR_Boat_Speed to temp
    elseif ( select == 5 )
    set selectflag1 to 0
    set KS_SR_Boat_Speed to temp
    endif
    return
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; FAST TRAVEL ROUTINE
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( selectflag2 == 1 )
    set select to GetButtonPressed
    if ( select == 0 )
    if ( KS_SR_Ship_Exist == 0 )
    messagebox "У вас нет корабля!"
    set selectflag2 to 0
    set KS_SR_Boat_Speed to temp
    set KS_SR_Boat_Sailmode to 1
    else
    fadeto 100, 0.001
    set KS_SR_Boat_X to ( KS_SR_Ship_X + ( 450 * KS_SR_Boat_Xmul ) )
    set KS_SR_Boat_Y to ( KS_SR_Ship_Y + ( 450 * KS_SR_Boat_Ymul ) )
    set KS_SR_Boat_Angle to KS_SR_Ship_Angle
    startscript KS_SR_Boat_FTravel_Ship
    set selectflag2 to 2
    set disableflag to 1
    endif
    elseif ( select == 1 )
    fadeto 100, 0.001
    set KS_SR_Boat_X to 61554
    set KS_SR_Boat_Y to 186452
    set KS_SR_Boat_Angle to 180
    startscript KS_SR_Boat_FTravel_DF
    set selectflag2 to 2
    set disableflag to 1
    elseif ( select == 2 )
    fadeto 100, 0.001
    set KS_SR_Boat_X to -64276
    set KS_SR_Boat_Y to 25636
    set KS_SR_Boat_Angle to 60
    startscript KS_SR_Boat_FTravel_GM
    set selectflag2 to 2
    set disableflag to 1
    elseif ( select == 3 )
    fadeto 100, 0.001
    set KS_SR_Boat_X to -48854
    set KS_SR_Boat_Y to -38646
    set KS_SR_Boat_Angle to 0
    startscript KS_SR_Boat_FTravel_HO
    set selectflag2 to 2
    set disableflag to 1
    elseif ( select == 4 )
    fadeto 100, 0.001
    set KS_SR_Boat_X to -71650
    set KS_SR_Boat_Y to 139486
    set KS_SR_Boat_Angle to 90
    startscript KS_SR_Boat_FTravel_KH
    set selectflag2 to 2
    set disableflag to 1
    elseif ( select == 5 )
    fadeto 100, 0.001
    set KS_SR_Boat_X to 139792
    set KS_SR_Boat_Y to 40697
    set KS_SR_Boat_Angle to 90
    startscript KS_SR_Boat_FTravel_SM
    set selectflag2 to 2
    set disableflag to 1
    elseif ( select == 6 )
    fadeto 100, 0.001
    set KS_SR_Boat_X to -8372
    set KS_SR_Boat_Y to -72160
    set KS_SR_Boat_Angle to 270
    startscript KS_SR_Boat_FTravel_SN
    set selectflag2 to 2
    set disableflag to 1
    elseif ( select == 7 )
    fadeto 100, 0.001
    set KS_SR_Boat_X to 120319
    set KS_SR_Boat_Y to -100934
    set KS_SR_Boat_Angle to 180
    startscript KS_SR_Boat_FTravel_TB
    set selectflag2 to 2
    set disableflag to 1
    elseif ( select == 8 )
    set KS_SR_Boat_Speed to temp
    set selectflag2 to 0
    set KS_SR_Boat_Sailmode to 1
    endif
    if ( select >= 0 )
    startscript KS_SR_Boat_Multiplier
    endif
    return
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Activate sailing
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( OnActivate = 1 )
    if ( KS_SR_Boat_Sailmode == 0 )
    StopScript "TribunalMain"
    DisablePlayerJumping
    player->DisableTeleporting
    player->DisableLevitation
    set xx to getPos, x
    set yy to getPos, y
    player->setPos, x, xx
    player->setPos, y, yy
    player->setPos, z, 0
    player->AddSpell "KS_SR_floatboat" ; this spell ( ability ) keeps player fm falling down
    set KS_SR_Boat_Speed to 0
    set KS_SR_Boat_Sailmode to 1
    messagebox "Убедитесь, что включен режим БЕГА!"
    startscript KS_SR_Boat_Multiplier
    startscript KS_SR_Boat_Create_Detect
    if ( KS_SR_Ship_Exist == 10 )
    set KS_SR_Ship_Exist to 1
    endif
    elseif ( KS_SR_Boat_Sailmode == 1 )
    messagebox "НАВИГАЦИЯ"
    endif
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Gather object and player coordinates
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( KS_SR_Boat_Sailmode > 0 )
    set xx to getPos, x
    set yy to getPos, y
    if ( xx != KS_SR_Boat_X )
    set xx to KS_SR_Boat_X
    endif
    if ( yy != KS_SR_Boat_Y )
    set yy to KS_SR_Boat_Y
    endif
    set xxx to "player"->getPos, x
    set yyy to "player"->getPos, y
    set zzz to "player"->getPos, z
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Collision Detection Check
    -------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( KS_SR_Boat_Sailmode == 1 )
    set KS_SR_Boat_Xdistance to ( xxx - xx )
    set KS_SR_Boat_Ydistance to ( yyy - yy )
    set xdist to ( KS_SR_Boat_Xdistance * KS_SR_Boat_Xdistance )
    set ydist to ( KS_SR_Boat_Ydistance * KS_SR_Boat_Ydistance )
    set distance to ( xdist + ydist )
    set KS_SR_Boat_Distance to GetSquareRoot, distance
    endif
     
    if ( KS_SR_Boat_Speed > 0 )
    if ( GetPCRunning == 0 )
    if ( KS_SR_Boat_Distance > 30 )
    set KS_SR_Boat_Hitflag to 3
    set flag to 1
    playsound "Pack"
    messagebox "По-берегитесь! Ваша лодка УДАРИЛАСЬ обо что-то твердое..."
    endif
    ;messagebox "%.2f", distance
    endif
    endif
     
    if ( KS_SR_Boat_Hitflag == 3 )
    if ( KS_SR_Boat_Speed > 0 )
    set KS_SR_Boat_Damage to ( KS_SR_Boat_Damage - KS_SR_Boat_Speed )
    messagebox "Повреждения = %.0f, Состояние лодки = %.0f / 100", KS_SR_Boat_Speed , KS_SR_Boat_Damage
    endif
    if ( KS_SR_Boat_Damage <= 0 )
    Disable
    messagebox "Ваша лодка потерпела КРУШЕНИЕ!"
    set KS_SR_Boat_Speed to 0
    set KS_SR_Boat_Hitflag to 0
    playsound, "KS_SR_Boat_Wreck"
    set KS_SR_Boat_Exist to 0
    EnablePlayerJumping
    player->EnableTeleporting
    player->EnableLevitation
    set KS_SR_Boat_Sailmode to 0
    player->RemoveSpell "KS_SR_floatboat"
    StartScript "TribunalMain"
    SetDelete, 1
    return
    endif
    if ( flag == 0 )
    if ( KS_SR_Boat_Speed > 0 )
    set xxxx to ( xx - ( KS_SR_Boat_Xmul * 40 ) )
    set yyyy to ( yy - ( KS_SR_Boat_Ymul * 40 ) )
    else
    set xxxx to ( xx + ( KS_SR_Boat_Xmul * 10 ) )
    set yyyy to ( yy + ( KS_SR_Boat_Ymul * 10 ) )
    endif
    else
    set xxxx to ( xx - ( KS_SR_Boat_Xmul * 200 ) )
    set yyyy to ( yy - ( KS_SR_Boat_Ymul * 200 ) )
    endif
    set xx to xxxx
    set yy to yyyy
    set KS_SR_Boat_Speed to 0
    set KS_SR_Boat_Hitflag to 0
    set flag to 0
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Restore all parameters after landing
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( landed > 0 )
    set KS_SR_Boat_Speed to 0
    Stopscript KS_SR_Boat_Multiplier
    Disable
    set landed to 0
    set KS_SR_Boat_X to getPos, x
    set KS_SR_Boat_Y to getPos, y
    EnablePlayerJumping
    player->EnableTeleporting
    player->EnableLevitation
    player->RemoveSpell "KS_SR_floatboat"
    setPos, z, 2
    Enable
    set KS_SR_Boat_Sailmode to 0
    StartScript "TribunalMain"
    return
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Speed Control
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( KS_SR_Boat_Sailmode == 1 )
    if ( GetPCRunning == 1 )
    if ( ScriptRunning, "KS_SR_Boat_Multiplier_02" == 0 )
    startscript "KS_SR_Boat_Multiplier_02"
    endif
    endif
    endif
     
    if ( KS_SR_Boat_Sailmode == 1 )
    if ( GetPCRunning == 1 )
    if ( KS_SR_Boat_Gear == 1 )
    if ( KS_SR_Boat_Speed < 10 ) ; max speed can be adjusted here ( default = 10 )
    set KS_SR_Boat_Speed to ( KS_SR_Boat_Speed + 1 )
    if ( KS_SR_Boat_Speed > 10 )
    set KS_SR_Boat_Speed to 10
    endif
    messagebox "Скорость лодки : %.0f", KS_SR_Boat_Speed
    else
    messagebox "Скорость лодки : %.0f (предельная )", KS_SR_Boat_Speed
    endif
    elseif ( KS_SR_Boat_Gear == 2 )
    if ( KS_SR_Boat_Auto == 0 )
    if ( KS_SR_Boat_Speed != 0 )
    rotate, z, -60
    set oangle to getAngle, z
    if ( oangle >= 0 )
    set KS_SR_Boat_Angle to ( oangle - 180 )
    else
    set KS_SR_Boat_Angle to ( 180 + oangle )
    endif
    endif
    endif
    elseif ( KS_SR_Boat_Gear == 3 )
    if ( KS_SR_Boat_Auto == 0 )
    if ( KS_SR_Boat_Speed != 0 )
    rotate, z, 60
    set oangle to getAngle, z
    if ( oangle >= 0 )
    set KS_SR_Boat_Angle to ( oangle - 180 )
    else
    set KS_SR_Boat_Angle to ( 180 + oangle )
    endif
    endif
    endif
    elseif ( KS_SR_Boat_Gear == 4 )
    if ( KS_SR_Boat_Speed > 0 ) ; min speed can be adjusted here ( default = 0 )
    set KS_SR_Boat_Speed to ( KS_SR_Boat_Speed - 1 )
    messagebox "Скорость лодки : %.0f", KS_SR_Boat_Speed
    else
    set KS_SR_Boat_Speed to 0
    messagebox "Скорость лодки : 0 ( остановлена )"
    endif
    endif
    else
    stopscript "KS_SR_Boat_Multiplier_02"
    endif
    endif
     
    if ( KS_SR_Boat_Sailmode == 1 )
    if ( pressed == 0 )
    if ( GetPCSneaking == 1 )
    set pressed to 1
    endif
    else
    if ( GetPCSneaking == 0 )
    set pressed to 0
    messagebox "ОПЦИИ" "Быстрое путешествие" "Задний ход" "Бросить якорь" "Чинить лодку" "Авто/ручной режим" "ВЫЙТИ"
    Enable
    set selectflag1 to 1
    set temp to KS_SR_Boat_Speed
    set KS_SR_Boat_Speed to 0
    return
    endif
    endif
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Sail direction calculation by using player zrot angle - resolution 1 degree
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( KS_SR_Boat_Sailmode > 0 )
    set xx to ( xx + ( KS_SR_Boat_Xmul * KS_SR_Boat_Speed ) )
    set yy to ( yy + ( KS_SR_Boat_Ymul * KS_SR_Boat_Speed ) )
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; Set the sailing motion
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    if ( KS_SR_Boat_Sailmode > 0 )
    player->setPos, x, xx
    player->setPos, y, yy
    player->setPos, z, 2
    setPos, x, xx
    setPos, y, yy
    setPos, z, 2
    set KS_SR_Boat_X to xx
    set KS_SR_Boat_Y to yy
    if ( KS_SR_Boat_Auto == 1 )
    if ( KS_SR_Boat_Speed > 0 )
    set KS_SR_Boat_Angle to "player"->getAngle, z
    if ( KS_SR_Boat_Angle >= 0 )
    set oangle to ( KS_SR_Boat_Angle - 180 )
    else
    set oangle to ( 180 + KS_SR_Boat_Angle )
    endif
    setAngle, z, oangle
    endif
    endif
    endif
     
    if ( delay == 1 )
    Enable
    set delay to 0
    endif
     
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    ; SCRIPT ENDS
    ;-------------------------------------------------------------------------------------------------------------------------------------------------------------
    End KS_SR_Boat_Script

    Если найдется время, буду благодарен за помощь.

     

     

  8. Сейчас проверил. В 0.43 - быстрые атаки от первого лица если и дают смещение, то минимальное. В 0.44 - то же самое, но смещение отчетливо видно.

    Дополню: с анимацией ног при атаке что-то не так (0.44), потому смещение значительнее, чем раньше.

    В 0.43 анимация проигрывается нормально.

  9. Не вижу никакой разницы. Что в 0.43 анимации атаки баговатые, что в 0.44, что в мастер-ветке. Багрепорт вон с 2016 года висит.

    Сейчас проверил.

    В 0.43 - быстрые атаки от первого лица если и дают смещение, то минимальное.

    В 0.44 - то же самое, но смещение отчетливо видно.

  10. https://gitlab.com/OpenMW/openmw/issues/3330

    https://gitlab.com/OpenMW/openmw/issues/4127

    С анимациями атак полно проблем. К сожалению, отлаживать их очень сложно.

    Как я понял, у анимаций атаки прописано небольшое движение, причем если анимация проиграна полностью, то результирующее движение будет ноль.

    Но похоже, что мы не проигрываем их правильно (так какая-то ерунда с замахом), вот смещение и остается..

     

    В 0.43.0 сей баг был менее выражен. 

  11. А если усталось на нуле? Или не на нуле, но на полное натяжение не хватает?

    Пока можно оставить то же поведение, как и с оружием ближнего боя. Бить\стрелять можно, но усталость на нуле.

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

  12. Пришли. Сошлись на том, что достоинства перевешивают недостатки:

    1. TES3MP и MWSE2 используют Lua, так что модерам надо будет только один язык учить.

    2. Lua - один из самых быстрых скриптовых языков, и специально предназначен для встраивания в другие программы (для него проще сделать песочницу)

    3. Lua довольно популярен и частенько используется именно для скриптования игр, и модеру будет легче найти примеры.

    Из недостатков приводят в основном то, что он не особо эстетичен, как что периодически всплывают комментарии "а сделайте лучше JavaScript/Rust/AngelScript".

    Также отдельный вопрос с автоматизацией редактора - там вроде в планах Python есть (непонятно, зачем).

     

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

     

    Круто, а то я боялся, что начнется перетягивание одеяла...

     

    Ловится скриптами, но вызвать автосейв оттуда никак нельзя.

     

    Ещё в копилку:

    - Вкладка "Магия" в инвентаре выдает все предметы с зачарованием (доспехи, оружие, свитки) плюс зелья, напитки, ингредиенты. Хорошо бы добавить еще вкладку "Алхимия", которая будет отвечать за зелья, напитки, ингредиенты. Можно конечно поступить как в Скайриме - добавить вкладки "Зелья", "Свитки", "Ингредиенты", но возможно это избыточно.

    Свитки почему-то показываются и в "Магии", и в "Разном".

  13. Согласен. Это скорее вишлист пост-1.0 :)

    Кстати, по поводу Lua, уже пришли к согласию по его использованию? А то помнится, что Zini хотел пилить что-то своё.

     

    Еще пожелание:

    - Автосейв при выходе из Канцелярии после генерации персонажа и получения первого квеста. А то бывает грохнут поначалу - приходится всё заново начинать, если не сохранился.

  14. А попадание разве стопроцентное из лука и арбалета? 

     

    Да и вообще можно у всего оружия и ближнего тоже, чтоб силы с началом замаха тратились. 

    Сейчас зависит от Меткости. Но выглядит странно - стрела чётко летит вражине в лоб, но почему-то не попадает. Условности, да, но не так же грубо...

    Лучше и реалистичнее было бы сделать стопроцентное попадание при "попадании" снаряда, а уровень Меткости показывать разлетом боеприпасов.

     

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

     

    Оружие ближнего боя обычно не настолько тяжелое, чтобы устать от замаха. Вот момент удара требует усилий :)

  15. Раз уж на то пошло, то и арбалетам при зарядке.

    Да, верно.

    Причем хорошо бы связать расход усталости с уроном лука\арбалета. Мощное оружие тяжелее натянуть.

     

    Ещё добавлю:

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

  16. А вообще, сейчас основная проблема ИИ - это простецкий алгоритм обнаружения и обхода препятствий, который не умеет обнаруживать обрывы, и пытается обойти препятствие, только когда персонаж уже две секунды бежит на месте в стену.

    Ага, помню, что вы спрашивали про steering behaviour на форуме OpenMW.

    Есть же разные библиотеки типа OpenSteer или SteerSuite. Или не вариант?

  17. Оживилась тема о поддержке Обливиона:

    • сс9сii пообещал продолжить работу над своим форком (именно оттуда светились видео с ассетами из ТЕС4/5), но посетовал на нехватку времени.
    • Deltaxus взялся за реверс-инжиниринг скриптового движка.
    • Появился форк с поддержкой сохранения/загрузки в редакторе в формат ТЕС4.

×
×
  • Создать...