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

LonWolf

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

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

  • Посещение

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

  1. нет. этот на стрелу. кстати лучше брать какой-нибудь коврик, т.е. - активатор, на статик всеравно не повесишь ничего.

     

    на пол:

    Begin trigger
    
    if ( triggered == 0 )
    if ( GetStandingPC )
     Set triggered to 1
    endif
    endif
    
    End

     

    triggered на забыть объявить как short в меню Globals.

  2. на стрелу

    Begin arrowtrap
    
    short counter
    float posx
    float posy
    float posz
    float playerx
    float playery
    float playerz
    float xdif
    float ydif
    float zdif
    float dist
    
    if ( menumode )
    return
    endif
    
    ;чтобы не гонять скрипт пока гг далеко, 
    ;выч только позицию до движения
    if ( GetDistance player > 1000 ) 
     return 
    endif
    
    if ( triggered != 1 );глоб. переменная, по идее устанавливаемая в скрипте с наступлением на пол
    return
    endif
    
    Move y, 100; начинаем движение по направлению локального вектора вперед, 100 - скорость. 
    
    if ( counter < 10 );задержка в 10 кадров
    Set counter to ( counter + 1 )
    return
    endif
    Set counter to 0
    
    ;берем координаты стрелы
    Set posx to ( GetPos x )
    Set posy to ( GetPos y )
    Set posz to ( GetPos z )
    
    ;...и игрока
    Set playerx to ( player -> GetPos x )  
    Set playery to ( player -> GetPos y )
    Set playerz to ( player -> GetPos z )
    
    ;вычисляем разницу
    Set xdif to ( playerx - posx ) 
    Set ydif to ( playery - posy )
    Set zdif to ( playerz - posz )
    
    ;x^2 + y^2 + z^2 = d^2
    Set dist to ( ( xdif * xdif ) + ( ydif * ydif ) + ( zdif * zdif ) )
    Set dist to GetSquareRoot dist
    
    ;при стыковке с игроком хертим его и проигрываем звук
    if ( dist < 100 );к примеру
     Player -> ModCurrentHealth -50
     PlaySound3d "Health Damage"
     SetAtStart
     Set triggered to 0 
    elseif ( dist > 1000 );если улетела в далекую даль
     SetAtStart
     Set triggered to 0 
    endif
    
    End

     

    что-то вроде этого. все цифры нужно настраивать как лучше. я примерно написал.

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

     

    на крюк

    Begin positioning
    
    if ( OnActivate )
     if ( "ItemID_expos" -> GetDisabled )
    if ( player -> GetItemCount "ItemID" > 0 )
      player -> RemoveItem "ItemID" 1
      "Item ID_expos" -> Enable
    endif
     endif
    endif
    
    End

     

    на expos (выставочную) версию

    Begin expos_item
    
    short state
    
    if ( state == 0 )
     Disable
     Set state to 1
    endif
    
    if ( OnActivate )
     player -> Additem "ItemID" 1
     Set state to 0
    endif
    
    End

     

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

  4. Хм, что то я сомневаюсь.

    Капитан Очевидность сообщает: это была порция сатиры. Так-то!

     

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

     

    И вообще всех обиженных "этими злыми модераторами" милости просим на удафком. :D

  5. А за бан на форуме будем в суд подавать? Лол, moderate - значит 'умеренный'. делаем вывод - следить, чтобы все знали меру. Наглядный пример - наше любимая конституция.

     

    Статья 29

    1. Каждому гарантируется свобода мысли и слова.

    2. Не допускаются пропаганда или агитация, возбуждающие социальную, расовую, национальную.....

    ..

    5. Гарантируется свобода массовой информации. Цензура запрещается.

     

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

  6. Приложу пожалуй вам сюда к истории.

     

    Вот этот самый гимн я сочинил в свое время по просьбе Алекса,когда на фуле все еще было хорошо,и пели птицы,и лучи от радиоактивного солнца не пронзали разноцветный купол.

     

     

    Билет на Фуллрест

     

    Эй,парень?Стоять!Получи ка билет.

    Бесплатно?!Звиняй,но пожалуй что нет...

    Ведь это билет прямо в крепость Фуллрест.

    А ты никогда не видал таких мест!

    У нас на Фуллресте спокойный народ,

    И лишь иногда попадется урод

    который не хочет платить за проезд...

    Земля ему пухом и бронзовый крест!

    Крестьяне живут,прожигают свой траффик

    Могли бы вообще укокошить их нафиг...

    Едим за двоих,пьем когда поздравляют.

    И деньги крестьян это нам позволяют.

     

    Ну полно,дружище-ведь скоро обед.

    Купи же скорей этот чертов билет!

    Ах сколько он стоит?Пустяк пустяков!

    Каких-то там двадцать золотняков.

    Забудь ты про деньги,что мог расточить.

    Зато сколько кайфа ты б мог плучить.

    О,я ведь забыл рассказать вам про драки.

    Мы можем дать фору дворовой собаке.

    У нас лудший способ узнать отношенья.

    Устроить по чести большое сраженье.

    Приходишь к противнику-только вы двое

    И скажешь:"Мой друг,я чертовски расстроен-

    -назавтра давай к пустырю приходи.

    Устроим сраженье один на один!"

     

    Назавта приводишь знакомых,друзей,

    Соседей и братьев и просто гостей.

    А если своих для борьбы не хватало.

    Приводишь людей из чужого квартала....

    Сбирается банда под сто человек.

    Таких никому не оcилить вовек.

    Но ты не подумай что это нечестно,

    Противник приходит с толпой 200 местных...

     

    И сходимся в поле,подняв дикий вой

    Вхывая братьев на решительный бой

    Где зубы летят из разорванных ртов,

    И каждый дубиною вмазать готов

    Один чьей-то длинной кишкой подпоясан

    Другой отчищает катану от мяса.

    Какие мы делали славные битвы!

    Какие проклятья,какие молитвы...

    И жены всегда аморально готовы.

    К тому что назавтра они станут вдовы.

    И тысячи люда ТУДА уходили,

    Ведь "Дядюшку джона назвали дебилом"

    Такую,напившись,затеем резню....

     

    Но лучше давай про билет обьясню

    Послушай..Ну ладно,без всяких там взяток.

    Тебе я билет продаю за десяток...

     

    Не ври!Ты при мне положил их в карман

    За эти средства я б купил караван,

     

    Постой,у нас добрый народ на Фуллресте

    Разносятся быстро хорошие вести

    Никто не задумает пакость друг-другу,

    И друг никогда не завидует другу.

    Недавно купил я роскошный доспех

    Пришел в гости ХочуВбан:"Привет,как успех"...

    А я говорю:"Ну вобще-процветаю,

    Подобные вещи себе позволяю"

    -А можешь ли мне одолжить поносить?

    Хоть мне совсем не легко попросить?"

    А я отвечал :"Ну о чем разговор!?-

    -неделю носи,начинай с этих пор "

    Доспехи унес за собой HungerGhost

    И в этот же вечер отправил их в рост

    Кирасу сменял на полтинник в трактире

    А Поножи сделал он ставкою в тире.

    Наплечник продал дорогим кузнецам

    Ботинки сломались-ушли к праотцам

    Наручники были для истинных Рук

    Рука прикупил их по кличке Вирук

    Однако перчатки он выбросил в реку

    Они не по нраву РукоЧеловеку.

    Наручники вынесло в западный берег

    Где их отыскал страж по имени Деррек

    "Хе-хе,-думал деррек,-мне везет иль как?

    их купит любой впечатленный дурак

    И Деррек составил особеный план

    Но вырвал перчатки голодный Баклан

    Баклан дал Ворам больше ста очков форы

    Наручник понес прямиком в Садрид-мору

    А там стоял Гельмут-большой некромант

    Стоял и смотрел на огромный сервант

    Сервант весь блестел,и светился,и даже

    был куплен со скидкой в кредит в распродажу.

     

    Но клюв был ослаблен-подул свежий бриз

    Наплечник с Бакланом отправился вниз

    Ба-бах-и разбился любимый сервант

    И тяжко вхдохнул молодой некромант..

    "Ну что-ж,все равно он был куплен со скидкой"

    И Гельмут ушел с жутковатой улыбкой.

     

    Наручники тихо и мирно ржавели

    Шли дни,вслед за ними скакали недели

    Но вот их Алхимик-старик подобрал

    И ценный металл без зазренья прибрал

    Потом-безо всяких существенных правил

    Перчатки на золото он переплавил

    Пошел в магазин и купил банку Шейна,

    И радостно принял его внутришейно..

    Затем приключилась большая нелепость

    Монеты пошли прямиком в нашу крепость

    В аптеке,где я прикупил себе бром

    Мне сдачу отдали моим Серебром....

     

    Вам плохо?Я вижу что очень и очень...

    А здесь раскладушка-для отдыха.Впрочем

    тебе на нее не присесть,ясно,Педик?

    Пока ты не получишь заветный билетик

    Стоять!Ну куда и зачем так спешишь...

    У нас на Фуллресте прекрасный гашишь.

    Могу по секрету дать тайную справку,

    где можно купить замечательной травки...

     

    Лады-пять монет!!!От души отрываю

    Внутри я кричу-от стыда завываю.

    Ага!В чем причина я понял,наверно

    ты просто не слышал про наши таверны!

    А мы очень любим устроить пирушку

    Сидишь час за часом,за кружкою кружка

    Сидим,философствуем,травим беседы

    Сосед уважает любого соседа

    А как мы танцуем!Гопак,краковяк.

    Чечетка и Танго и "Бешенный хряк"..!

    Какой можно сбацать заманчивый танец...

     

    КУДА ТЫ???Стоять,растреклятый засранец

    А может,боитесь:"Враги вас достанут?"

    Такие года никогда не настанут!

    Ведь крепость закрыта огромной стеною.

    Враги не управятся с нашей страною...

    Недавно на нас нападали-и что же?

    Мы дали как следует гадам по роже

    И каждый-,кто молод,кто стар,-был бы рад

    Отправить захватчиков пряменько в ад

    Я помню,кузнец был особенно весел

    Троих он в лесу самолично подвесил

    Троих покосил под безжалостным дулом,

    Еще четверых-на сьеденье акулам...

     

    Да что ты,парень!?Терпение хрупко!

    Ведь я выхожу на любые уступки.

    Купи же!Билетик-один золотой

    Впридачу-пакетик с едой и водой

     

    КУДА ТЫ БЕЖИШЬ?ВЫ КУДА ПОБЕЖАЛИ?

    Зачем же вы деньги свои так зажали

    Купи же билетик,купи-и-и-,ну купи...!

    Не можешь сейчас-так потом накопи...

    Фух-как же меня этот бег доканал

    Стоять!Не уйдешь!Я почти что догнал!

    Плохому такие как я не научат!

     

     

    У нас на Фуллресте нигде не наскучит.

    А если устал от тревог и побоев

    Возьми свой кораблик и выберись в море

    Пиратский камзол,и повязка,и латы!

    Ты можешь податся в морские пираты!

    На флаге фрегата и череп,и крест

    И черным по белому: "Грозный Фуллрест"

     

    Послушай,не надо устраивать сценок.

    Тебе я билетик отдам за БЕСЦЕНОК,

    Не надо здесь плакать,о камешки бится.

    Тебе от меня и вовеки не скрытся...

    Нет!Только попробуй!...Сбежал..Не догнать..

    Сейчас он дошутится,будет мне знать!..

    Ну где же лежал именной арбалет

    Ни разу осечки не дал много лет

    Я вскинул..Прицелился..Выстрелил..Тю!....

    Низом пошел-Вероятно к дождю....

    Эх парень-когда в небесах надоест,

    Пожалуйте к нам,в достославный Фуллрест...

     

    Тупая ты,старая,дохлая кляча!

    Могло бы все быть абсолютно иначе...

     

    А мне чтоб попасть-был не нужен билет.

    Вошел-Дверь захлопнулась.Выхода нет..

    И годы прошли,и текли как вода.

    Остался я в крепости жить навсегда.....

    Хотя далеко не в любви было дело.

    Хотел я сбежать-да душа не хотела.

    Ведь если о бегстве моем бы узнали.

    Меня бы поймали и четвертовали

     

     

    Такое проходит вторую неделю

    Вербовка-поверьте,нелегкое дело. =)

     

    ууу, до сих пор оказывается частично автозамена ХГ))

  7. как интересно похлопаем граждане раньше такие подводные камни нам не встречались. :(

     

    bottomline: не EXPRESSION left eval случайно?

     

    или может все дело в том что использовалось ативирование вместо активирования? а как насчет убрать пробел в названии и наслаждаться отсутствием ошибок?

  8. #1

    Begin staff_shield_script
    
    Short OnPCEquip
    Short stat
    
    if ( menumode )
    return
    endif
    
    if ( OnPCEquip == 1 )
    player -> addspell "staff_s"
    Set OnPCEquip to 0
    Set stat to 1
    endif
    
    if ( player -> HasItemEquipped "объект" == 0 )
    if ( stat == 1 )
     player -> removespell "staff_s"
    Set stat to 2
    endif
    
    End

     

    #4

    Возможно ли с помощью стандартного конструктора создать строчку диалога внутри Greeting 1 и при этом не рисковать порчей существующих диалогов?

    AFAIK, вполне.

  9. ты неправильно понял. она сослалась к этому:

     

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

  10. без вызова OnActivate перед этим ничего не выйдет. как ни крути.

     

    "ID двери"->Activate, player

    А вот это вообще нонсенс. Дверь не может активировать игрока, который тут является аргументом. Хотя синтаксис Player -> Activate "loaddoor" тоже не прокатит.

  11. переменная типа long это целое знаковое 32-битное число, которое сохраняет диапазон значений от -2147483648 до 2147483647. ни строк ни символов она не сохраняет. если мне кто-то докажет обратное я согласен убить себя с разбегу.
  12. извиняюсь за задержку, у меня сейчас мало свободного времени. я разумеется никогда не воображал себя великим профессионалом, но вот мои наработки:

     

    скрипт на контейнере

    scn LW_test1
    
    short cv
    short chance
    short tmp
    short tmp2
    short skillraise
    short button
    
    Begin GameMode
    
    if ( cv == 1 )
    if ( GetItemCount "Torch02" >= 5 )
     RemoveItem "Torch02" 5
     AddItem "WeapAkaviriLongSword" 1
     Set cv to 0
     Activate
    endif
    elseif ( cv == 3 )
    RemoveItem "Torch02" 5
    Set cv to 0
    endif
    
    if ( cfskill >= 5 ) && ( cfskill < 20 )
    Set tmp to 5
    elseif ( cfskill >= 20 ) && ( cfskill < 35 )
    Set tmp to 8
    elseif ( cfskill >= 35 ) && ( cfskill < 50 )
    Set tmp to 11
    elseif ( cfskill >= 50 ) && ( cfskill < 75 )
    Set tmp to 14
    elseif ( cfskill >= 75 ) && ( cfskill < 90 )
    Set tmp to 17
    elseif ( cfskill >= 90 )
    Set tmp to 21
    endif
    
    if ( cfskill != 100 ) && ( skillraise >= tmp )
    Set cfskill to ( cfskill + 1 )
    Message "Ваш навык ремесла возрос до %g." cfskill 2
    Set skillraise to 0
    endif
    
    if ( tmp2 == 1 )
    Set button to GetButtonPressed
    if ( button == -1 )
     return
    elseif ( button == 0 )
     Disable
     Player.AddItem "LWtesttan" 1
    elseif ( button == 1 )
     Set cv to 2
     Activate
    endif
    Set tmp2 to 0
    endif
    
    End
    
    Begin OnActivate
    
    if ( IsActionRef player == 1 )
    if ( cv == 0 )
     if ( tmp2 == 0 )
      MessageBox "Что вы хотите сделать?" "Взять" "Создать предмет"
      Set tmp2 to 1
     endif
    elseif ( cv == 2 )
     Set chance to ( GetRandomPercent + ( cfskill / 2 ) ) 
     if ( chance > 49 )
      Message "Вы успешно создали новый предмет." 2
      Set skillraise to ( skillraise + 1 )
      Set cv to 1
     else
      Message "У вас ничего не вышло." 2
      Set cv to 3
     endif
    endif
    endif
    
    End

    Делает следующее: положишь в него пять факелов(понимаю что глупо, это для теста) и нажмешь на него - появится надпись вышло или нет. Если вышло в контейнере появится клинок акавири, если нет факелы исчезнут. шанс зависит от значения условного навыка ремесла, реализованного глобальной переменной. базовое - пять. от успешных созданий увеличивается значение навыка. формула следующая:

    (x + ( y / 2 )).

    где x - случайное целое от 0 до 99, а y - значение навыка. Также я сделал все возможное чтобы обеспечить возможность добавления контейнера в инвентарь, т. е. я насколько возможно реализовал морровский принцип манекенов: при нажатии встает выбор взять или открыть, если взять - конт исчезает, а в инвентарь добавляется *другой предмет*. при выкладывании его на землю он снова становится контейнером. разумеется модели должны быть те же у обоих, различается только тип. Вот тщательно оттестированный скрипт на *другом предмете*:

    scn LWtest2
    
    ref cont
    float zpos1
    float zpos2
    float zangle1
    float zangle2
    float timer
    
    Begin GameMode
    
    Set cont to GetContainer
    
    if ( GetDisabled == 0 ) && ( cont == 0 )
    if ( timer < 1 )
     Set zpos1 to GetPos z
     Set zangle1 to GetAngle z
    elseif ( timer > 3 )
     Set zpos2 to GetPos z
     Set zangle2 to GetAngle z
     if ( zpos1 == zpos2 ) && ( zangle1 == zangle2 )
      Disable
      PlaceAtMe "LWtestcrate" 1
     endif
     Set timer to 0
    endif
    Set timer to ( timer + GetSecondsPassed )
    endif
    
    End

    В идеале должен быть еще большой глобальный скрипт, запускающийся и останавливающийся из базового, проверяющий комбинации и рецепты и заменяющий одни предметы другими. если необходимо скрипт обратного разбора написать не составит труда. Я приложил также плаг для теста, он добавляет сундук на перекрестке торговой площади имперского города, для нужд тестирования модели сундука и предмета добавляющегося в инвентарь разные (это кувшин :1anim_ag: ). положите в него пять факелов и активируйте)) если будет интерес постараюсь выкраивать время на продолжение работы по сему. все. смотрим думаем. эээ чуть не забыл - плаг под версию 1с но из принципа на других тоже должен работать.

     

    post-8116-1219324953_thumb.jpg

     

    ЗЫ не уверен что возможно сделать открытие без выкладывания на землю. Если кто-то реализует что-то лучше практичнее и/или элегантнее я буду только рад.

  13. начнем с того что окна никакие типа алхимии не получатся. я на данный момент предполагаю одну более-менее путевую реализацию: имеется некий контейнер, который можно носить в инвентаре, в него кладется несколько ингредиентов. далее жмем на него и получаем либо то что надо, либо ничего, в зависимости от навыка (навык будет скриптовой, невидимый в меню). такое устроит?
  14. наигрался в проклятые земли? :1anim_ag: рассказал бы поточнее как ты себе это представляешь и пару конкретных примеров. в принципе я бы мог поковыряться если выдастся свободная минутка. хотя ничего не обещаю.
  15. Боблен ты забыл что через RemoveAllItems квестовые предметы не удаляются. Нужно скриптом отобрать у игрока всё что у него есть с собой, включая квестовые предметы. Есть еще функция копирнуть все предметы в контейнер, но на них пропадут скрипты.

     

    ps а тему лучше в TES4 скрипторий.

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