1. Друзья, в это тяжёлое и непонятное для всех нас время мы просим вас воздержаться от любых упоминаний политики на форуме, - этим ситуации не поможешь, а только возникнут ненужные ссоры и обиды. Это касается также шуток и юмора на тему конфликта. Пусть войны будут только виртуальными, а политики решают разногласия дипломатическим путём. С уважением, администрация Old-Games.RU.

    Скрыть объявление
  2. Пожалуйста, внимательно прочитайте правила раздела.
  3. Если Вы видите это сообщение, значит, вы ещё не зарегистрировались на нашем форуме.

    Зарегистрируйтесь, если вы хотите принять участие в обсуждениях. Перед регистрацией примите к сведению:
    1. Не регистрируйтесь с никами типа asdfdadhgd, 354621 и тому подобными, не несущими смысловой нагрузки (ник должен быть читаемым!): такие пользователи будут сразу заблокированы!
    2. Не регистрируйте больше одной учётной записи. Если у вас возникли проблемы при регистрации, то вы можете воспользоваться формой обратной связи внизу страницы.
    3. Регистрируйтесь с реально существующими E-mail адресами, иначе вы не сможете завершить регистрацию.
    4. Обязательно ознакомьтесь с правилами поведения на нашем форуме, чтобы избежать дальнейших конфликтов и непонимания.
    С уважением, администрация форума Old-Games.RU
    Скрыть объявление

Помощь в освoении Mapster32 и скриптов EDuke32, а также других его редакторов

Тема в разделе "Мастерская", создана пользователем LipSheZ, 27 дек 2007.

?

Играя в Duke Nukem, пробовали ли вы когда-нибудь редактировать его con-файлы?

  1. Да, конечно!

    51,5%
  2. Было несколько раз, но я в них ничего не понял(а), там всё так сложно...

    21,2%
  3. Нет, даже и не думал(а) об этом никогда.

    27,3%
  1. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    это SE с лотагом 7, т.е. чтобы еще и в добавок было перемещение игрока в другой сектор, а не просто его наблюдение(сектора)

    Добавлено через 16 минут
    Кстати, еще будет не менее полезно написать вот что:
    Код:
    // Изменение заставки (т.е. будет показывать только анимацию и логотип)
    
    gamevar LOGO_FLAGS 15 0
    
    // Изменение экрана "загрузки" то,что будет появляеться на экране в момент загрузки
    
    onevent EVENT_GETLOADTILE
     setvar RETURN 5441
    endevent
    
    и то что у меня не получилось:
    Код:
    
    onevent EVENT_GETMENUTILE
    rotatesprite 30 30 32768 0 0 0 0 1 0 0 xdim ydim
    endevent
    
    как оказалось, в меню нельзя вставлять дополнительные текстуры, и это очень плохо...правда не смертельно:)
    И еще я бы хотел узнать,какую команду надо написать, чтобы узменять интерфейс игрока во время применения scuba, т.е. когда он находится под водой с аквалангом
    Как бы, ясных хрен, что скрипт записывается после EVENT_DISPLAYREST,
    но тогда надо вводить переменную, чтобы этот скрипт действовал во время включения акваланга...как?
     
    Последнее редактирование: 9 апр 2008
  2. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Я за эти дни дополнил некоторые списки и сделал описание нескольких новых команд и событий на WIKI: PROJ_WORKSLIKE, spriteflags, spritenopal, EVENT_RESETPLAYER, EVENT_PRESSEDFIRE и EVENT_DOFIRE. Обо всех дополнениях можно узнать тут.

    Теперь понятно. Кстати, извини, я ж забыл, что SE'ры при ROR должны быть перевёрнуты. Учитывая эти недочёты, я выкладываю обновлённый код (я его тоже не проверял):

    Сперва дэфайнезируем спрайты и переменные:
    Код:
    define GLOBAL_SHAM_SE <tilenum1>
    define SPAWNED_SHAM_SE1 <tilenum2>
    define SPAWNED_SHAM_SE2 <tilenum3>
    define SPAWNED_SHAM_SE3 <tilenum4>
    define SPAWNED_SHAM_SE4 <tilenum5>
    define SPAWNED_SHAM_SELOTAG7 <tilenum7>
    
    gamevar pal_var 0 0
    gamevar lotag_var 0 0
    gamevar picnum_var 0 0
    
    Картинки спрайтов:
    GLOBAL_SHAM_SE: Посмотреть вложение 7af88fcbb812ee6f6d00c260a14a866e.bmp_.jpg
    SPAWNED_SHAM_SE1: Посмотреть вложение 73cc86cff81aed2feb4094db81f3e200.bmp_.jpg
    SPAWNED_SHAM_SE2: Посмотреть вложение 6630aee8961761d4c37cbec67bf16730.bmp_.jpg
    SPAWNED_SHAM_SE3: Посмотреть вложение c808cc98fbd6dcbaaa29717fbfad579c.bmp_.jpg
    SPAWNED_SHAM_SE4: Посмотреть вложение 1a858d20e5eceeeb893281c44718c96d.bmp_.jpg
    SPAWNED_SHAM_SELOTAG7: Посмотреть вложение e9cbe5b57c4eae41de9ae5f7bdb7819b.bmp_.jpg

    Код для GLOBAL_SHAM_SE:
    Код:
    onevent EVENT_EGS
    getactor[THISACTOR].picnum picnum_var
    switch picnum_var
    case GLOBAL_SHAM_SE
      cstat 32768
      getactor[THISACTOR].pal pal_var
      ifvare pal_var 1 
      {
        spawn SPAWNED_SHAM_SE1
        spawn SPAWNED_SHAM_SE2
      }
      else ifvare pal_var 2 
      {
        spawn SPAWNED_SHAM_SE3
        spawn SPAWNED_SHAM_SE4
      }
      spawn SPAWNED_SHAM_SELOTAG7 // это пока можно не вписывать.
    break
    case SPAWNED_SHAM_SE1
    case SPAWNED_SHAM_SE2
    case SPAWNED_SHAM_SE3
    case SPAWNED_SHAM_SE4
    case SPAWNED_SHAM_SELOTAG7
      cstat 32768
      spawn SECTOREFFECTOR
    break
    endswitch
    endevent
    
    Далее разбрасываем СекторЭффекторы:
    Код:
    onevent EVENT_SPAWN
    ifactor SECTOREFFECTOR
    {
      ifspawnedby SPAWNED_SHAM_SE1 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 41
      }
      else 
      ifspawnedby SPAWNED_SHAM_SE2 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 43
      }
      else 
      ifspawnedby SPAWNED_SHAM_SE3 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 40
      }
      else ifspawnedby SPAWNED_SHAM_SE4 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 42
      }
      else ifspawnedby SPAWNED_SHAM_SELOTAG7 setactor[THISACTOR].lotag 7  
    /*
    а вот послуднюю строчку (else ifspawnedby SPAWNED_SHAM_SELOTAG7), 
    скорее всего, придётся убрать, потому что хай-таги у телепортеров 
    должны быть каждые раз новые. Надо помозговать как с помощью 
    скриптов найти значение последнего тэга на карте.
    */
    }
    endevent
    
    В Mapster32 ставь спайты GLOBAL_SHAM_SE с pallete'ом либо 1, либо 2 (я ранее уже это писал). Картинки я для удобства присобачил и к этому сообщению.

    Поэкспериментируй с флагами. Принцип тот же, что и со cstat'ом и spriteflags'ами. Вообще такой приём в скриптах EDuke32 используется часто.
    Не после, а в EVENT_DISPLAYREST. :) Что значит поменять интерфейс? Если хочешь поменять картинку трубок акваланга перед носом, перерисуй тайл № 2581.
    После погружения в воду (если GET_SCUBA > 0) включается структурный элемент scuba_on. Когда ты под водой, эта структурная переменная равна "1".
     

    Вложения:

    Последнее редактирование: 10 апр 2008
  3. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Да нет, вспомни как выглядит акваланг в Бладе. Там не просто маска снизу, а целая хренатень, рамка побокам, типа игрок в шлеме, и 2 блика посередине(2 прозрачные текстурки) Точно такой же способ был и в Дюке только для Spacemask когда Дюк вылазиет на поверхность, то включается сафандр, но почему то потом эту затею решили не делать в игре((( обидно(

    Добавлено через 28 минут
    Ну вот создал я отдельный файл ROR.CON
    ввел туда код:
    Код:
    define GLOBAL_SHAM_SE 9695
    define SPAWNED_SHAM_SE1 9696
    define SPAWNED_SHAM_SE2 9697
    define SPAWNED_SHAM_SE3 9698
    define SPAWNED_SHAM_SE4 9699
    define SPAWNED_SHAM_SELOTAG7 9700
    
    gamevar pal_var 0 0
    gamevar lotag_var 0 0
    gamevar picnum_var 0 0
    
    onevent EVENT_EGS
    getactor[THISACTOR].picnum picnum_var
    switch picnum_var
    case GLOBAL_SHAM_SE
      cstat 32768
      getactor[THISACTOR].pal pal_var
      ifvare pal_var 1 
      {
        spawn SPAWNED_SHAM_SE1
        spawn SPAWNED_SHAM_SE2
      }
      else ifvare pal_var 2 
      {
        spawn SPAWNED_SHAM_SE3
        spawn SPAWNED_SHAM_SE4
      }
      spawn SPAWNED_SHAM_SELOTAG7 // это пока можно не вписывать.
    break
    case SPAWNED_SHAM_SE1
    case SPAWNED_SHAM_SE2
    case SPAWNED_SHAM_SE3
    case SPAWNED_SHAM_SE4
    case SPAWNED_SHAM_SELOTAG7
      cstat 32768
      spawn SECTOREFFECTOR
    break
    endswitch
    endevent
    
    onevent EVENT_SPAWN
    ifactor SECTOREFFECTOR
    {
      ifspawnedby SPAWNED_SHAM_SE1 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 41
      }
      else 
      ifspawnedby SPAWNED_SHAM_SE2 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 43
      }
      else 
      ifspawnedby SPAWNED_SHAM_SE3 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 40
      }
      else ifspawnedby SPAWNED_SHAM_SE4 
      {
        setactor[THISACTOR].ang 512
        setactor[THISACTOR].lotag 42
      }
      else ifspawnedby SPAWNED_SHAM_SELOTAG7 setactor[THISACTOR].lotag 7  
    /*
    а вот послуднюю строчку (else ifspawnedby SPAWNED_SHAM_SELOTAG7), 
    скорее всего, придётся убрать, потому что хай-таги у телепортеров 
    должны быть каждые раз новые. Надо помозговать как с помощью 
    скриптов найти значение последнего тэга на карте.
    */
    }
    endevent
    
    На карте ничего не получилось, и спрайт в игре видно:( И ставил pal 1 и 2
    Может чего не так сделал? но работать пока не хочет
     
    Последнее редактирование: 10 апр 2008
  4. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Я не помню, играл ну оч-ч-ч-ень давно. Скрины давай. :)
    Ну, раз в теории пока не получается, попробую это на практике. Жди...
     
  5. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    [​IMG]
    ну вот чтото типа этого, это кстати скафандр,который не вошел в оригинал, я подобную картинку видел и раньше в журнале, но так и не нашел эту фичу:) У меня есть версия Дюка 1.8D, но там тож ничего такого нет(((
    ну что, будет ждать:yes:
     
  6. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Вот я более-менее сделал своего монстра, но после попадания в него ракеты, он, как и должно быть в думе, рассыпается на мясо, и после смерти его начинает колбасить!!! а я никак не могу понять почему же его колбасит так...как именно его колбасит я объснить не могу, и поэтому прикряпляю файл с монстром и картой, чтобы вы сами поняли...что не так?
    на всякий случай продублирую код монстра
    Код:
    // ZOMBIE
    
    define ZOMBIE 5120
    define ZOMBIESTAYPUT 5121
    define ZOMBIESTRENGTH 20          
    
    action AZOMBWALK         0 4 5 1 20
    action AZOMBSTAND        20 1 5 1 50
    action AZOMBSHOOT        25 1 5 1 58
    action AZOMBDYING        35 4 1 1 15
    action AZOMBDYING2       40 9 1 1 15
    action AZOMBHIT          30 1 1 1 10
    action AZOMBDEAD         39 1 1 1 1
    action AZOMBDEAD2        49 1 1 1 1
    
    move ZOMBWALKVELS 72
    move ZOMBSTOPPED
    
    ai AIZOMBSEEKENEMY AZOMBWALK ZOMBWALKVELS seekplayer
    ai AIZOMBDYING AZOMBDYING ZOMBSTOPPED faceplayer
    ai AIZOMBDYING2 AZOMBDYING2 ZOMBSTOPPED faceplayer
    ai AIZOMBHIT AZOMBHIT ZOMBSTOPPED faceplayer
    ai AIZOMBSHOOTENEMY AZOMBSHOOT ZOMBSTOPPED faceplayer
    ai AIZOMBSHOOT AZOMBSHOOT ZOMBSTOPPED faceplayer
    
    state zombseekenemystate
    
        ifactornotstayput
        {
            ifcansee ifp palive ifpdistl 2048 ifcount 16 ifcanshoottarget { ai AIZOMBSHOOTENEMY break }
            ifai AIZOMBSEEKENEMY
            {
                ifcount 72 ifcanshoottarget { ai AIZOMBSHOOTENEMY break }
            }
            else ifpdistg 4096 { ifrnd 92 { ifcount 48 ifcanshoottarget ai AIZOMBSHOOTENEMY } else ifcount 24 { ai AIZOMBSEEKENEMY break } }
    
            iffloordistl 16 { ifcount 48 ifnotmoving ifcansee { ai AIZOMBSEEKENEMY break } }
            
            ifrnd 4 ifnotmoving operate
            else ifrnd 1 ifbulletnear
            {
                ifgapzl 128 ai AIZOMBSEEKENEMY
                
            }
        }
        else
        {
            ifactioncount 16 { ifp palive ifrnd 32 ifcansee ifcanshoottarget ai AIZOMBSHOOTENEMY }
            
        }
    ends
    
    
    state zombshootenemystate
    
    {
    ifcount 12 { } else ifcount 11
            {
                ifcanshoottarget { sound PIG_ATTACK shoot SHOTSPARK1 }
                else ai AIZOMBSEEKENEMY
            }
            ifcount 25 { } else ifcount 24 { }
            ifcount 48 { } else ifcount 47
            {
                ifcanshoottarget { ai AIZOMBSEEKENEMY }
                
            }
            ifcount 60 { } else ifcount 59 { }
            ifcount 72
            {
                ifrnd 64 resetcount
                else
                {
                    ifpdistl 768 ai AIPIGSEEKENEMY
                }
            }
            ifaction AIZOMBSHOOTENEMY ifactioncount 1 action AZOMBSHOOT
        }
        else ai AIZOMBSEEKENEMY
    ends
    
    state checkzombhitstate
        spawn BLOOD
        ifdead
        {
            state random_wall_jibs
            ifrnd 16 state drop_shotgun
            addkills 1
            ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs ai AIZOMBDYING2 }
            else ifwasweapon RPG { sound SQUISHED state standard_jibs ai AIZOMBDYING2 }
            else ai AIZOMBDYING sound PIG_DYING
        }
        else
        {
            sound PIG_PAIN
            state random_wall_jibs
    
            ifrnd 255 ai AIZOMBHIT
        }
    ends
    
    
    state zombdyingstate
        ifactioncount 4 { ifrnd 64 spawn BLOODPOOL state rf iffloordistl 8 sound THUD action AZOMBDEAD move ZOMBSTOPPED break }
        ifactioncount 134 killit 
    ends
    
    state zombdyingstate2
        ifactioncount 9 { ifrnd 64 spawn BLOODPOOL state rf iffloordistl 8 sound THUD action AZOMBDEAD2 move ZOMBSTOPPED break }
        ifactioncount 134 killit 
    ends
    
    actor ZOMBIESTAYPUT ZOMBIESTRENGTH ai AIZOMBSEEKENEMY cactor ZOMBIE enda
    actor ZOMBIE ZOMBIESTRENGTH fall
    * ifaction 0
    * {
    *** ifcansee
    ***** action AZOMBSTAND
    * }
    * else ifaction AZOMBSTAND ai AIZOMBSEEKENEMY
        else ifaction AZOMBDEAD
        {
            ifrespawn ifcount RESPAWNACTORTIME
                { spawn TRANSPORTERSTAR cstat 257 strength ZOMBIESTRENGTH ai AIZOMBSEEKENEMY }
            else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break }
        }
        else ifai AIZOMBDYING state zombdyingstate
        else ifai AIZOMBDYING2 state zombdyingstate2
        else ifai AIZOMBHIT { ifactioncount 3 ai AIZOMBSEEKENEMY }
        else
        {
            ifai AIZOMBSEEKENEMY state zombseekenemystate
            else ifai AIZOMBSHOOTENEMY state zombshootenemystate
            ifhitweapon state checkzombhitstate
            ifrnd 1
            {
                ifrnd 32 soundonce PIG_ROAM
                else ifrnd 64 soundonce PIG_ROAM2
                else soundonce PIG_ROAM3
            }
        }
    enda
    
    у еще посмотрите, может в этом коде что-нить лишнее есть? что можно будет убрать без последствий, и хорошо бы его по-максимуму приблизить к оригинальному монстру Дума!
    Еще хочу спросить "не в тему" просто не знаю больше у кого...
    в Думе все монстры имеют одинаковый AI? Могу ли я этот код использовать для всех ходячих тварей из Дума?
     

    Вложения:

    • Monsters.rar
      Размер файла:
      111,9 КБ
      Просмотров:
      41
  7. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Так, ладно, с зомбяком уже разобрался, осталось отладить это:
    Код:
    state soldshootenemystate
    
    {
    ifcount 12 { } else ifcount 11
            {
                ifcanshoottarget { sound PIG_ATTACK shoot SHOTGUN }
                else ai AISOLDSEEKENEMY
            }
            ifcount 25 { } else ifcount 24 { }
            ifcount 48 { } else ifcount 47
            {
                ifcanshoottarget { ai AISOLDSEEKENEMY }
                
            }
            ifcount 60 { } else ifcount 59 { }
            ifcount 72
            {
                ifrnd 64 resetcount
                else
                {
                    ifpdistl 768 ai AISOLDSEEKENEMY
                }
            }
            ifaction AISOLDSHOOTENEMY ifactioncount 1 action ASOLDSHOOT
        }
        else ai AISOLDSEEKENEMY
    ends
    
    Добавлено через 1 минуту
    Да, ну и конечно же хочется спросить, есть ли тут чтото лишнее?
    Код:
    state soldseekenemystate
    
        ifactornotstayput
        {
            ifcansee ifp palive ifpdistl 2048 ifcount 16 ifcanshoottarget { ai 
    
    AISOLDSHOOTENEMY break }
            ifai AISOLDSEEKENEMY
            {
                ifcount 72 ifcanshoottarget { ai AISOLDSHOOTENEMY break }
            }
            else ifpdistg 4096 { ifrnd 92 { ifcount 48 ifcanshoottarget ai 
    
    AISOLDSHOOTENEMY } else ifcount 24 {  
    ai AISOLDSEEKENEMY break } }
    
            iffloordistl 16 { ifcount 48 ifnotmoving ifcansee { ai 
    
    AISOLDSEEKENEMY break } }
            
            ifrnd 4 ifnotmoving operate
            else ifrnd 1 ifbulletnear
            {
                ifgapzl 128 ai AISOLDSEEKENEMY
                
            }
        }
        else
        {
            ifactioncount 16 { ifp palive ifrnd 32 ifcansee ifcanshoottarget ai 
    
    AISOLDSHOOTENEMY }
            
        }
    ends
    
    
     
    Последнее редактирование: 17 апр 2008
  8. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Да нет, вроде всё по делу...
     
  9. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    LipSheZ, всмысле?
    Ну как я заметил, все монстры, которые я сделал из этого кода оч глючат...например когда монстр идет, через него можно пройти насквозь, а когда стреляет, то долго остается анимация выстрела, получается тупа...т.е. на спрайте "загорается желтая точка, типа стреляет" после этого идет сам выстрел в игрока, и потом эта точка не сразу гаснет...это напрягает очень(((
    еще никак не могу стелать свой нормальный прожектайл
    Код:
    define FIREBALL 6040
    
    action FBEXPL 0 5 1 1 2
    
    defineprojectile FIREBALL PROJ_WORKSLIKE 2
    defineprojectile FIREBALL PROJ_HITRADIUS 300
    defineprojectile FIREBALL PROJ_SPAWNS FBEXPL
    defineprojectile FIREBALL PROJ_VEL 100
    defineprojectile FIREBALL PROJ_EXTRA 30
    defineprojectile FIREBALL PROJ_ISOUND PIPEBOMB_EXPLODE
    //defineprojectile FIREBALL PROJ_CLIPDIST 24
    
    action FBFRAMES 0 2 1 1 3
    
    useractor notenemy FIREBALL
    sizeat 200 200
    action FBFRAMES
    enda
    
    этот шарик из импа думоского, вопервых стреляет как ракета, хз почему...может повреждения поменьше поставить...а во-вторых он не всегда наносит вред игроку. а при столкновении с объектом просто тупа исчезает, а должна выполняться анимация его рассеяния....вот в цем прикол? еще хочется размер его увеличить раза в 2 приблизительно
     
  10. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Заблокируй его. В пределах кода actor <.....> enda задай cstat = 1 (или включающий 1). Но проследи, чтобы после смерти чувака sctat был изменён на не блокирующий. И вообще, прикрепи мне код и art монстра, а не отдельные state'ы.

    Выложи код целеком. Из скольких частей состоит анимация монстра? В какой момент ты меняешь анимацию (и поведение) после выстрела? Скорее всего, слишком поздно, поэтому анимация стреляющего дурака не прекращается своевременно. И ещё кой-чего: Вместо ifcount <value> { } else ifcount <value> { do something } пиши так: ifcount <value> { nullop } else ifcount <value> { do something }. Лично мне твой вариант режет глаз.
    Что это значит?!
    Используй воркслайк-флаг 32770. Надо, чтобы ниже было: defineprojectile FIREBALL PROJ_HITRADIUS 0. Насколько я помню в Думе имповские шарики не имели радиусов... PROJ_EXTRA=30 не многовато ли?
    В том-то и перец, что не анимация должна выполняться, а актор. А актор это уже может иметь свою анимацию. Мы спавнингуем акторов, а не анимацию. Это всё равно что ты напишешь spawn move 130. Бред получается.
    Размеры проджей задаётся так:
    defineprojectile FIREBALL PROJ_XREPEAT <value/gamevar>
    defineprojectile FIREBALL PROJ_YREPEAT <value/gamevar>


    Убери это и задай анимацию в DukeRes. Есть такая прога у тебя?
     
    M210 нравится это.
  11. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Выше выкладывал...еще прикреплял файл с monsters.rar, там и арт файл и CON необходимый)))
    Это я для пробы взял такой екстра, ну и потому что имповский шарик отнимает 30 процентов в Doom'е, наверно поэтому он и ведет себя как ракета..да кстати, этим я хотел сказать, что если этот шарик попадает в другого монстра, то выполняется действие ifhitweapon RPG, т.е. монстр разлетается на кусочки
    Есть, просто так как то "дешево" получается))) хотя ладно, и так сойдет, сделаю:)
     
  12. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Ладно, посмотрим...
    Не-е-е. Меньше, от 4 до 30.
    Тогда уж не hitweapon, а ifwasweapon. И не RPG, а FIREBALL. :)
    Ну уж нет. Для проджектайлов это единственный простой способ анимирования. Можно ещё через EVENT_EGS, ухватывая значение picnum'а каждого из actor'ов по порядку, но тебе эти выпендросы сейчас ни к чему.

    А через action вне EVENT'а проджеклайл закодить низя.
     
  13. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Кстати, на счет монстра, заменил actor на useractor, так он стал вести себя куда более приемлемо, через него теперь нельзя пройти насквозь, но он стал еще более глюченный, т.е. как то неуверенно ходит, потом может показать желтую точку, типа как будто стреляет, но на самом деле не стреляет:)
    Поговорил с еще одним знатаком CON, он сказал что не понимает как вообще компилятор выполняет все действия, т.к. там есть else без if'а и action'ы как то криво заданы...вот короче надо разбираться...
    последний Con-файл с монстрами тут...
     

    Вложения:

    • MONSTERS.rar
      Размер файла:
      2 КБ
      Просмотров:
      55
  14. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    а как тогда сделать такой скрипт, ifrnd ?
     
  15. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Всё выполняется по дефолту, скорее всего, лишние else просто игнорируются. Я не посчитал это лишним, т. к. предполагал, что код ещё не доделан. Так и оказалось...

    defineprojectile FIREBALL PROJ_EXTRA 4
    defineprojectile FIREBALL PROJ_EXTRA_RAND 26

    Говорят, что это работает, однако у меня почему-то глючит... Но попробуй.

    Добавлено через 12 минут
    M120, слушай, а сколько процентов дэмэджа поглащает бронька в Бладе? В Duke'е 25-35%, а в Б., по-моему, больше. Сколько?
     
    Последнее редактирование: 24 апр 2008
  16. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Этого я точно еще не знаю, причем надо учитывать что в Б. 3 вида брони: от пуль, от огня и от магии(от куклы Вуду я так понял) и поэтому ответы могут быть разными, ну судя по всему это первый вид брони, а сколько поглащает, надо подсчитать...
     
  17. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Попробуй так:
    Код:
    // ZOMBIE
    
    define ZOMBIE 5120
    define ZOMBIESTAYPUT 5121
    define ZOMBIESTRENGTH 20          
    
    action AZOMBWALK         0 4 5 1 20
    action AZOMBSTAND        20 1 5 1 50
    action AZOMBSHOOT        25 1 5 1 5
    action AZOMBDYING        35 4 1 1 15
    action AZOMBDYING2       40 9 1 1 15
    action AZOMBHIT          30 1 1 1 10
    action AZOMBDEAD         39 
    action AZOMBDEAD2        49 1 1 1 10000
    
    move ZOMBWALKVELS 72
    move ZOMBSTOPPED
    
    ai AIZOMBSEEKENEMY AZOMBWALK ZOMBWALKVELS seekplayer
    ai AIZOMBDYING AZOMBDYING ZOMBSTOPPED faceplayer
    ai AIZOMBDYING2 AZOMBDYING2 ZOMBSTOPPED faceplayer
    ai AIZOMBHIT AZOMBHIT ZOMBSTOPPED faceplayer
    ai AIZOMBSHOOTENEMY AZOMBSHOOT ZOMBSTOPPED faceplayer
    ai AIZOMBSHOOT AZOMBSHOOT ZOMBSTOPPED faceplayer
    
    state zombseekenemystate
    
        ifactornotstayput
        {
            ifcansee ifp palive ifpdistl 2048 ifcount 16 ifcanshoottarget { ai AIZOMBSHOOTENEMY break }
            ifai AIZOMBSEEKENEMY
            {
                ifcount 72 ifcanshoottarget { ai AIZOMBSHOOTENEMY break }
            }
            else ifpdistg 4096 { ifrnd 92 { ifcount 48 ifcanshoottarget ai AIZOMBSHOOTENEMY } else ifcount 24 { ai AIZOMBSEEKENEMY break } }
    
            iffloordistl 16 { ifcount 48 ifnotmoving ifcansee { ai AIZOMBSEEKENEMY break } }
            
            ifrnd 4 ifnotmoving operate
            else ifrnd 1 ifbulletnear
            {
                ifgapzl 128 ai AIZOMBSEEKENEMY
                
            }
        }
        else
        {
            ifactioncount 16 { ifp palive ifrnd 32 ifcansee ifcanshoottarget ai AIZOMBSHOOTENEMY }
            
        }
    ends
    state zd
      ai AIZOMBDYING2
      move 0
      cstat 0
    ends
    
    state zombshootenemystate
    ifactioncount 5 
    {
      sound PIG_ATTACK
      shoot SHOTSPARK1
      ai AIZOMBSEEKENEMY
    }
    ends
    
    state checkzombhitstate
        spawn BLOOD
        ifdead
        {
            state random_wall_jibs
            ifrnd 16 state drop_shotgun
            addkills 1
            ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state zd }
            else ifwasweapon RPG { sound SQUISHED state standard_jibs state zd }
            else ai AIZOMBDYING sound PIG_DYING
        }
        else
        {
            sound PIG_PAIN
            state random_wall_jibs
    
            ifrnd 255 ai AIZOMBHIT
        }
    ends
    
    
    state zombdyingstate
        ifactioncount 4 { state rf iffloordistl 8 sound THUD action AZOMBDEAD move ZOMBSTOPPED break }
        ifactioncount 134 killit 
    ends
    
    state zombdyingstate2
        ifactioncount 9 { state rf iffloordistl 8 sound THUD action AZOMBDEAD2 move ZOMBSTOPPED break }
        ifactioncount 134 killit 
    ends
    
    actor ZOMBIESTAYPUT ZOMBIESTRENGTH ai AIZOMBSEEKENEMY cactor ZOMBIE enda
    actor ZOMBIE ZOMBIESTRENGTH fall
    * ifaction 0
    * {
    *** ifcansee
    ***** action AZOMBSTAND
    * }
    * else ifaction AZOMBSTAND ai AIZOMBSEEKENEMY
        else ifaction AZOMBDEAD
        {
            ifrespawn ifcount RESPAWNACTORTIME
                { spawn TRANSPORTERSTAR cstat 257 strength ZOMBIESTRENGTH ai AIZOMBSEEKENEMY }
            else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state delete_enemy } break }
        }
        else ifai AIZOMBDYING state zombdyingstate
        else ifai AIZOMBDYING2 state zombdyingstate2
        else ifai AIZOMBHIT { ifactioncount 3 ai AIZOMBSEEKENEMY }
        else
        {
            ifai AIZOMBSEEKENEMY state zombseekenemystate
            else ifai AIZOMBSHOOTENEMY state zombshootenemystate
            ifhitweapon state checkzombhitstate
            ifrnd 1
            {
                ifrnd 32 soundonce PIG_ROAM
                else ifrnd 64 soundonce PIG_ROAM2
                else soundonce PIG_ROAM3
            }
        }
    enda
    
    // SOLDIER
    
    define SOLDIER 5170
    define SOLDIERSTAYPUT 5171
    define SOLDIERSTRENGTH 20          
    
    action ASOLDWALK         0 4 5 1 20
    action ASOLDSTAND        20 1 5 1 50
    action ASOLDSHOOT        25 1 5 1 6
    action ASOLDDYING        35 4 1 1 15
    action ASOLDDYING2       40 9 1 1 15
    action ASOLDHIT          30 1 1 1 10
    action ASOLDDEAD         39 1 1 1 1
    action ASOLDDEAD2        49 1 1 1 10000
    
    move SOLDWALKVELS 72
    move SOLDSTOPPED
    
    ai AISOLDSEEKENEMY ASOLDWALK SOLDWALKVELS seekplayer
    ai AISOLDDYING ASOLDDYING SOLDSTOPPED faceplayer
    ai AISOLDDYING2 ASOLDDYING2 SOLDSTOPPED faceplayer
    ai AISOLDHIT ASOLDHIT SOLDSTOPPED faceplayer
    ai AISOLDSHOOTENEMY ASOLDSHOOT SOLDSTOPPED faceplayer
    ai AISOLDSHOOT ASOLDSHOOT SOLDSTOPPED faceplayer
    
    state soldseekenemystate
    
        ifactornotstayput
        {
            ifcansee ifp palive ifpdistl 2048 ifcount 16 ifcanshoottarget { ai AISOLDSHOOTENEMY break }
            ifai AISOLDSEEKENEMY
            {
                ifcount 72 ifcanshoottarget { ai AISOLDSHOOTENEMY break }
            }
            else ifpdistg 4096 { ifrnd 92 { ifcount 48 ifcanshoottarget ai AISOLDSHOOTENEMY } else ifcount 24 {  
    ai AISOLDSEEKENEMY break } }
    
            iffloordistl 16 { ifcount 48 ifnotmoving ifcansee { ai AISOLDSEEKENEMY break } }
            
            ifrnd 4 ifnotmoving operate
            else ifrnd 1 ifbulletnear
            {
                ifgapzl 128 ai AISOLDSEEKENEMY
                
            }
        }
        else
        {
            ifactioncount 16 { ifp palive ifrnd 32 ifcansee ifcanshoottarget ai AISOLDSHOOTENEMY }
            
        }
    ends
    
    state sd
      ai AIZOMBDYING2
      move 0
      cstat 0
    ends
    
    state soldshootenemystate
    ifactioncount 5 
    {
      sound PIG_ATTACK
      shoot SHOTSPARK1
      ai AISOLDSEEKENEMY
    }
    ends
    
    state checksoldhitstate
        spawn BLOOD
        ifdead
        {
            state random_wall_jibs
            ifrnd 16 state drop_shotgun
            addkills 1
            ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state zd }
            else ifwasweapon RPG { sound SQUISHED state standard_jibs state zd }
            else ai AISOLDDYING sound PIG_DYING
        }
        else
        {
            sound PIG_PAIN
            state random_wall_jibs
    
            ifrnd 255 ai AISOLDHIT
        }
    ends
    
    
    state solddyingstate
        ifactioncount 4 { ifrnd 64 state rf iffloordistl 8 sound THUD action ASOLDDEAD move  
    SOLDSTOPPED break }
        ifactioncount 134 killit 
    ends
    
    state solddyingstate2
        ifactioncount 9 { ifrnd 64 state rf iffloordistl 20 sound THUD action ASOLDDEAD2 move  
    SOLDSTOPPED break }
        ifactioncount 134 killit 
    ends
    
    actor SOLDIERSTAYPUT SOLDIERSTRENGTH ai AISOLDSEEKENEMY cactor SOLDIER enda
    actor SOLDIER SOLDIERSTRENGTH fall
      ifaction 0
      {
        ifcansee
          action ASOLDSTAND
      }
      else ifaction ASOLDSTAND ai AISOLDSEEKENEMY
        else ifaction ASOLDDEAD
        {
            ifrespawn ifcount RESPAWNACTORTIME
                { spawn TRANSPORTERSTAR cstat 257 strength SOLDIERSTRENGTH ai AISOLDSEEKENEMY }
            else { strength 0 ifhitweapon ifwasweapon RADIUSEXPLOSION { sound SQUISHED state standard_jibs state  
    delete_enemy } break }
        }
        else ifai AISOLDDYING state solddyingstate
        else ifai AISOLDDYING2 state solddyingstate2
        else ifai AISOLDHIT { ifactioncount 3 ai AISOLDSEEKENEMY }
        else
        {
            ifai AISOLDSEEKENEMY state soldseekenemystate
            else ifai AISOLDSHOOTENEMY state soldshootenemystate
            ifhitweapon state checksoldhitstate
            ifrnd 1
            {
                ifrnd 32 soundonce PIG_ROAM
                else ifrnd 64 soundonce PIG_ROAM2
                else soundonce PIG_ROAM3
            }
        }
    enda
    
     
    M210 нравится это.
  18. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Код:
    * ifaction 0
    * {
    *** ifcansee
    ***** action AZOMBSTAND
    * }
    * else ifaction AZOMBSTAND ai AIZOMBSEEKENEMY
    
    а че это за звездочки? с ними код не компилируется

    Добавлено через 6 минут
    Отлично!!! Убираешь звездочки и монстры работают как надо!!! супер! только надо попробовать заменить actor на useractor а то через монстров ходить насквозь можно ;)

    Добавлено через 12 минут
    Кстати, не только игрок может ходить через монстров...иногда забавно бывает, когда ты видишь одного монстра, уперто идущий в стену, по после того как он тебя увидит, монстр раздваивается на 4 разных монстра:skull: они друг в друга встают и дружно глючат в стену)))
    Кстати можно ли сделать чтобы монстр не замечал игрока изза спины, т.е. если к нему подойти сзади, он ни реагировал ни на что:)
     
    Последнее редактирование: 24 апр 2008
  19. LipSheZ Пахан

    LipSheZ

    Регистрация:
    1 окт 2007
    Сообщения:
    908
    Так что с кодом-то теперь, работает как надо? Эти глюки появились после того как ты убрал звёздочки? Что-нибудь исправить?
    Можно, но сложно. :) Попробую. Ответь на мои вопросы...
     
  20. M210

    M210

    Регистрация:
    19 мар 2008
    Сообщения:
    670
    Ну со звездочками не запускается вообще, а убрав звездочки, через монстров все равно можно ходить...так что я не знаю, глюк просто остался...
     
  1. На этом сайте используются файлы cookie, чтобы персонализировать содержимое, хранить Ваши предпочтения и держать Вас авторизованным в системе, если Вы зарегистрировались.
    Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление