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

Dyx

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

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

  • Посещение

Весь контент Dyx

  1. вот спасибствую, а то что они не свежие это не страшно, лишь бы обрезанных локаций небыло, а то разрыв текстур на границе локации 2 глаза режет
  2. Я не силён в ЛОР, но по-моему где то в морке слышал, что по каким то причинам сообщение с материком временно приостановлено (разрешено только восточно имперской компании плавать) Именно по этому нам в Морхолд приходится путешевствовать с помощью мага. Так что, если бригада ТР забудет возобновить сообщение, проблемой это не будет))) к тому же сразу же в след за релизом появится пачка плагинов с разными паромщиками, переправами, двемерскими дирижаблями, и даже мостами=) как я понял из примерно на половину прочитанной ветки квестовые ветки ещё не доделаны, есть только отдельные квесты за фракции. ну и повторю свой вопрос: у кого нибудь остались хотя бы сырые мапы 3, 4, 5, 6? например вот в этом сообщении ссылка давно устарела, а хотелось бы увидеть это всё хотя бы вот так: http://s56.radikal.ru/i154/0909/0b/493719e6a9de.jpg мне бы хотя бы размеры посмотреть оценить, да на кораблике поплавать, благо птички и рыбки у меня генерируются повсеместно (спасибо Abot'у) а то первые две поставил и как то обрезанный край портит всю картину =( кстати на вышеуказанной карте я так понимаю нету собстно мапы 3 и мапы 6? или это просто баг отображения самой карты?
  3. взял, спасибо, проблема с "ModuleLoader не установлен" исчезла. Но теперь я совершенно не могу обойти проблему Unknown morowind.exe. может я со своим англиским на уровне "хэлло май нэйм ис" чего то в настройках проглядел? МСР может где то подкрутить надо, или ещё где галочку убрать? нет с ним всё в порядке, даже отдельно файл проверил угроз не нашёл. как её блин заставить запускаться с пропатченным маровинд.ехе? :"-(
  4. я конечно не исключаю что у меня руки не из плеч... но вообщем беда такая: 1) Установил голосовые модуляры Николая и Алёны 2) скачал инсталлятор "Morrowint Talky" откуда сказано 3) распаковал в морву, даже ошибок ни каких не появилось 4) InstAllMods.exe запустился сам, все dll'ки и ехе-хи прощёлкал в конце сматерился что не может найти MLDRLib.dll на сём закрылся. 5) запускаю "MWTalkyCfg.exe" а там пишецо мол "TalkyMorrowind не установлен" и "ModuleLoader не установлен" 6) В появившейся закладке "УСТАНОВКА" жмыкаю "Установить" появляется надпись "TalkyMorrowind установлен в ModuleLoader" и "ModuleLoader не установлен" 7) програмку настроил всё норм при проверке читает как надо... НО а)игра не запускается, утверждает что "unknown morrowind.exe" ставлю MGE жмыкаю галочку чтобы не обращало внимание на изменение ехе'хи игра запускается и показывает мне.. конечно же краказябру вместо всех русских текстов... естественно и "толки" читать отказывается вообщем как бы мне эту заразу на русский 1С'вский мор воткнуть помогите пжлст :"-( Пы.Сы. скачал отдельно MLDRLib.dll кинул в корень игры, при сканировании InstAllMods.exe всё норм, ошибка исчезает но при запуске MLShell.exe он эту MLDRLib.dll кушает в прямом смысле, сносит или что там происходит... корчое она исчезает работоспособность не появляется, а InstAllMods.exe снова начинает матюгаться на её отсутствие... уже все нервы измотал три раза игру переставлял... либо ошибка моровинд.хехе либо краказябра на экране :"-(
  5. братцы, тут вот в теме простреливали карты 3-6 но за сроком давности ссылки уже все потёрлись.. может кто перезальёт? а то оч хочется хотя бы посмотреть на землю в заявленном масштабе... кстати а мне одному показалось что ребята слишком уж близко материк к Ввандефеллу сделали? получается не море, а так речушка какая то... местами перепрыгнуть можно будет же... кстати как оно уживается с плагином "рыбацкая академия"? он норм в море попадает или на замлю накладывается?
  6. проблема возникает только в момент снятия денег или руды, ошибка содержит текст мол команда additem не может довать 0 едениц, после чего добавляется 1 еденица (золота или эбонита, в зависимости от того, что снимаем) и скрипт зависает, причём загруска созранённой игры его не спасает приходится перезапускать игру полностью... я вообще не пойму в чём причина... такое ощущние что глобальная переменная пытается вернуть предустановленное значение из геймсэттингс (т.е. 0), причём пытается сделать это в аккурат перед снятием. я пытался подключать трибунал и бладмун проблема не исчезла... дополнял скрипт дебагмэсаджами, которые выводили значение всех переменных на каждом этапе скрипта, все значения присваиваются нормально и в момент снятия руды или денег они содержат корректные значения, но ошибка всёравно вылезает...
  7. ^up^ ну помогите разоброться плз
  8. да не.. я когда на движке моры делал другую игру у меня встал вопрос денег, нужны были купюры номиналами 25 50 500 и др т.е. они должны были появляться и при выкладывании тоже.... просто я вспоминаю в тес есть пара кучек Gold_Dae_cursed_001 и Gold_Dae_cursed_005 так вот их в игре самой нет, и при их выкладывании в мир игра матерится мол "вы чё новое золото добавили???" я уже точно не помню текст ошибки ну что то такое там было... з.ы. я решил вопрос иначе убрал золото вообще а создал мискайтемы с весом 0кг разных номиналов, типа деньги... места много в инвенторе занимали, зато приходилось разменивать деньгу в магазинах=) интересно, а получится сделать торговца который не берёт деньги, типа только бартер? (например если делать по системе как у скуумы)
  9. спс всем кто откликнулся отдельно olol'у, проверю такой вариант если получится то в скором времени будет плаг... теперь вопрос по другому скрипту: вкрацце: это активатор управления шахтой (в данном случае эбонитовой), менюшка позволяет: продать весь эбонит со склада за стоимость = цена 1 куска * количество кусков * 90% (типа рабочим тоже платить надо вот на 10% дешевле и выходит) взять часть эбонита со склада для своих нужд разработать ещё месторождения (это нужно для работы глобального скрипта, фактически увеличевается ежедневный прирост эбонита, короче тут багов нет) вот первые два пункта у меня почему то не удались=( прим.: склад это всеголишь глобальная переменная которая раз в сколько то дней пополняется через глобальный скрипт на некоторое число кусков эбонита. begin _dyx_mcb_e_sc ;=========================================================== ;объявим переменные ;=========================================================== ;long nowsellprice ;моментальная цена продажи. уже глобальная short state short button ;long the_x ;просто какое-то неизвестное. уже глобальная ;sklad_e и kolvo_e глобальные ;=========================================================== ;активация, меню1 ;=========================================================== if (state == 0) if (OnActivate == 1) set NowSellPrice to sklad_e*200*0.9 ;устанавливаем стоимость продажи для имеющегося количества эбонита set state to 1 endif endif if (State == 1);активировали, появляется менюшка1 messagebox "У Вас в шахте %.0f месторождений эбонита и %.0f едениц эбонита (общей стоимостью %.0f) на складе. Что вы хотите сделать?", kolvo_e, sklad_e, NowSellPrice, "Продать все оптом", "Взять на реализацию", "Разработать еще месторождения (16800 дрэйков)", "Ничего" set state to 10 endif ;=========================================================== ;кнопки меню1 ;=========================================================== if (state == 10) set button to GetButtonPressed if ( button == 0 ) ;продаем весь эбонит if (sklad_e == 0) ;а есть ли он? messagebox "На складе пусто! Нечего брать!" else ;есть set NowSellPrice to sklad_e*200*0.9 ;я даже ещё раз пересчитал сколько будет стоить продать весь эбонит [color="#FF0000"]player -> additem "gold_100", NowSellPrice[/color] ;игрок получает расчитанную сумму... теоретически... по факту какого то уха игра выдает ошибку "не может быть = 0" и дает только 1 золотой PlaySound "Item Gold Up" ;звук передачи денег set sklad_e to 0 ;опустошаем склад endif set state to 1 ;возврат к меню1 elseif (button == 1) ;берем на реализацию set the_x to sklad_e ;выставляем х в величину того что есть на складе set state to 20 ;переходим в меню2 elseif (button == 2) ;покупаем месторождение (это работает нормально, так что не описываю) if ( player -> getitemcount "gold_001" >= 16800 ) player -> removeitem "gold_001" 16800 PlaySound "Item Gold Up" set kolvo_e to kolvo_e+1 else messagebox "У вас недостаточно денег! Вам надо 16800 дрэйков чистой наличкой, акции, чеки и самоцветы не принимаются!" endif set state to 1 elseif (button == 3) ;отменяем set state to 0 return endif endif ;=========================================================== ;меню2 ;=========================================================== if (state == 20) ;если был запрос на переход к меню2 if (sklad_e == 0) ;а на складе нихуя нет messagebox "На складе пусто! Нечего брать!" ;посылаем игрока в... set state to 1 ;меню1 else ;иначе появляеться меню2 messagebox "Сколько берем? (снимаем: %.0f на складе: %.0f)", the_x, sklad_e, "+1", "+10", "-10", "-1", "Ок", "отмена" set state to 30 ;переходим к действиям меню 2 endif endif ;=========================================================== ;кнопки для меню2 ;=========================================================== if (state == 30) ;если нас послали в действия меню2 set button to GetButtonPressed ;смотрим че за кнопка была нажата (кнопки с 0 по 3 работают норм, так что не расписываю подробно) if ( button == 0 ) ;если "+1" if (the_x >= sklad_e) ;и если х больше чем есть на складе set the_x to sklad_e ;то пусть х будет равно количеству руды на складе playsound "Item Ring Up" ;сообщим игроку звуком что он достиг края изменения числа х (а то испугаеться что игра зависла) else set the_x to the_x+1 ;ну а если с числом х все в порядке, то увеличим его на 1 endif set state to 20 elseif (button == 1) ;аналогично для кнопки "+10" if (the_x >= sklad_e) set the_x to sklad_e playsound "Item Ring Up" else set the_x to the_x+10 endif set state to 20 elseif (button == 2) ;аналогично для кнопки "-10" if (the_x <= 11) ;только тут проверяем не (х>sklad_e), а чтобы х не стало 0 или отрицательным set the_x to 1 playsound "Item Ring Up" else set the_x to the_x - 10 endif set state to 20 elseif (button == 3) ;аналогично для кнопки "-1" if (the_x <= 2) set the_x to 1 playsound "Item Ring Up" else set the_x to the_x-1 endif set state to 20 elseif (button == 4) ;а вот с кнопкой "ок" что то не то set the_x to the_x ;я даже пытался поновой вызвать х, но очевидно она слетает в 0 где то раньше этого места [color="#FF0000"]player -> additem "ingred_raw_ebony_01" the_x [/color];вот на эту строку игра материться мол "х у вас равно 0 а команда аддайтем не может применяться с числом 0" set sklad_e to sklad_e - the_x ;дальше убираем со склада то число руды которое мы забрали (как ни странно но оно работает, хотя если бы х был равен 0 то ничего бы не происходило PlaySound "Item Gold Up" ;играем звук чтобы "типа взяли" messagebox "Вы взяли со склада %.0f кусков эбонита. На складе осталось %.0f кусков", the_x, sklad_e ;сообщаем игроку сколько руды он взял и сколько осталось на складе set state to 1 ;возвращаемся в меню1 elseif (button ==5) ;ну с кнопкой "отмена" вроде проблем не обнаружено set state to 1 return endif endif end
  10. вот тут то и попа, я уже второй раз на это натыкаюсь, вот вчера тоже пользовался функцией choice и такая же фигня, раньше всё получалось а щас чёто где то не так делаю.. почитал МСфД там написано что в одном чойсе не должно быть больше 5 вариантов, но можно в томже резалте писать ещё чойс с 5 вариантами и ещё и тд чойсов 5 можно.. т.е. 25 вариантов, вообщем это я исправил, сделал 2 чойса, ну тоесть Choice "бла-бла-бла1" 1 "бла-бла-бла2" 2 "бла-бла-бла3" 3 "бла-бла-бла4" 4 "бла-бла-бла5" 5 Choice "бла-бла-бла6" 6 и это во вчерашнем плагине, а в "рабах" там вообще всего тра варианта ответа, и всёравно такая ботва=( так что я не знаю чё я не так делаю=( я даже посмотрел стандартные чойсы и методы их использования, всё как и у меня, чё ему не нравиться? :crym: для тех кто будет искать где это в моём плагине через редактор: это топик "освободить" и гритинг1 в конце списка вы их заметите по графе fun/var1 там будет slavestatus
  11. Конечно от каждого, хотя я понял как можно исправить: elseif ( GetDistance, Player <= 32 );Если слишком близко set warmhere to 15 set done to 1 elseif ( GetDistance, Player <= 100 );если расстояние среднее set warmhere to 3 set done to 1 elseif ( GetDistance, Player <= 300 );если мы все же на оптимальном расстоянии set warmhere to 1 set done to 1 endif if ( globalwarm >= 15 );Если слишком жарко MessageBox "Вы горите!";сообщим игроку Cast, Firepit_bad_spell, Player;добавим плохой эффект set casted to 1;кастанули set globalwarm to 0 elseif ( globalwarm >= 1 );если тепло нормальное MessageBox "Вы чувствуете живительное тепло костра...";сообщим игроку Cast, Firepit_good_spell, Player;добавим хороший эффект set casted to 1;кастанули set globalwarm to 0 endif эт уже ближе к реальности, от 15 костров ты точно сгоришь=) или от 5 но поближе
  12. написал попытался написать плагин который исправляет в игре один недочёт. помните тех рабов в пещерах и данжах? которым нужен ключ чтобы освободить, кому как но меня всегда бесило что имея этот самый ключ нельзя забрать раба себе, ведь по сути дела раб это вещь, такая же как доспех или клинок, почему его нельзя забрать себе? вот собстно то что я сделал: исправил slavescript (теперь раб не постоянно тащиться за ГГ если slavestatus = 2 т.е. если раб твой) исправил диалоги рабов, добавил команду "теперь ты мой" она работает корректно выставляя slavestatus = 2 а вот дальше я не могу понять где я ошибся или что там вообще: после того как раб стал твоим, попытка отдать ему приказ передвижения возвращает вас снова к выбору приказов и так бесконечно. следовательно невозможно становиться закрыть окно диалога. поковыряйте ктонить, а то я в диалогах вообще нуп. Порабощение_Рабов.esp з.ы. я на самом деле против рабства=) просто иногда прикалывает плохишом поиграть и тут понимаешь что игра в этом плане "малость" линейна
  13. ну если можно трогать других членов фракции, то вешай на каждого скрипт begin Kane's_faction_member_script if ( factionaremed == 1 ) SetFight 100 StartCombat->player return endif if ( OnDead == 1 ) set factionaremed to 1 endif end или такой: begin Kane's_faction_member_script short done if (done == 1) return endif if ( factionaremed >= 1 ) SetFight 100 StartCombat->player endif if ( OnDead == 1 ) set factionaremed to factionaremed + 1 endif end где factionaremed - глобальная переменная во втором случае можешь поставить зависимость от величины factionaremed например вот так: begin Kane's_faction_member_script short newfight short done if (done == 1) return endif if ( factionaremed >= 1 ) set newfight to getfigth + factionaremed*10 SetFight newfight endif if ( OnDead == 1 ) set factionaremed to factionaremed + 1 set done to 1 endif end в последнем скрипте атака будет не с первого убийства а примерно из этой таблицы: 100 Всегда атакует 95 Атакует, если игрок ближе 3000 единиц 90 Атакует, если игрок ближе 2000 единиц 80 Атакует, если игрок близко или вы ему не нравитесь (1000 единиц, 40 Disp) 70 Атакует, если игрок близко, и вы ему сильно не нравитесь (1000 единиц, 35 disp) 60 Атакует, если вы ему не нравитесь и находитесь близко (Disp меньше 30) 50 Атакует, если он ненавидит вас (Disp 0) 40 Атакует, если игрок близко или вы ему не нравитесь. (500 единиц, Disp 10) 30 Будет атаковать, если он ненавидит вас, и вы совершили преступление. 20 Будет атаковать, если он ненавидит вас, и вы совершили много преступлений. 10 Атакует, если он ненавидит вас, и вы совершили много преступлений по отношению к нему. 0 Атакует ТОЛЬКО, если атакован первым при том что большинство неписей настроено на стандартный файт 20-30 последний скрипт добавляет по 10 файта каждому члену фракции за каждого убитого члена фракции правда не очень уверен по поводу того как я использовал getfigth надо тэстить p.s.с функцией OnDeath есть какие то неполадки, я так и не понял, толи она не срабатывает в каждом фрейме сама по себе, толи работает только если непись умирает в яйчейке с ГГ, можно попробовать как альтернативу OnMurder, она даёт еденицу если убийство было зарегестрировано и за него был выписан штраф
  14. про подушки я там просто добавлю проверку на локалбный done он чтобы спелл не снимался с игрока каждый фрейм, done ещ у каждой подушки свой будет и сделаю сидение не через getdistance а через GetCollidingPC (кстати тоже с делаю и с повреждениями костра, тогда останеться прописать условия только для благоприятного расстояния) а в скрипте твоём есть один большой косяк, если вокруг меня будет костров 5 я сгорю даже не расстоянии 300 внимание вопрос: как кастануть на игрока заклинание, не применяя функцию addspell, так чтобы заклинание каставалось не каким либо объектом из мира. тоесть грубо говоря "никто наложил на ГГ заклинание типа "касание". Насколько я помню, игрока нельзя скриптами заставить кастовать заклинания?
  15. пиши глобальный скрипт такой архитектуры: если fractionarmed > N то return если умер член1 то set fractionarmed to fractionarmed+1 если умер член2 то set fractionarmed to fractionarmed+1 ...итд для каждого... если fractionarmed >= 1 то: член1 setfigth 100 и атаковать игрока член2 setfigth 100 и атаковать игрока ...итд перечисляем всех... fractionarmed - глобальная переменная считает сколько убил членов фракции можешь от неё поставить зависимость на сколько сильно тебя "любят" выжившие члены фракции N - число всех членов фракции, нужно чтобы не гонять скрипт в пустую когда всех порубаешь в капусту з.ы. ну и ещё если ты напишешь скрипт в наглую по моей архитектуре, "set fractionarmed to fractionarmed+1" будеть происходить ежефрейменно=)
  16. 1) да такой скрипт вешай на непися: begin NoDialogTalking_sc short button short QuestionState if ( OnActivate == 0) return endif if ( [условие при котором непись НЕ будет говорить] ) MessageBox "Прости у меня сейчас нет времени на разговоры." "прощание" Return endif if ( QuestionState == 0 ) MessageBox "Привет %PCName, как дела?" "Плохо, мне нужна твоя помощь" "Всё в поряде" set QuestionState to 10 endif if ( QuestionState == 10 ) Set button to GetButtonPressed if ( button == 0 ) MessageBox "Что случилось? как я могу помочь?" "Пойдём со мной" "Нет уже ничего" set QuestionState to 20 elseif ( button == 1 ) set QuestionState to 0 endif Return endif if ( QuestionState == 20 ) Set button to GetButtonPressed if ( button == 0 ) MessageBox "Хорошо! Пойдём!" "Прощание" AIFollow Player 0 0 0 0 Set QuestionState to -1 Return endif if ( button == 1 ) Set QuestionState to 0 Return endif endif if ( QuestionState == -1 ) MessageBox "Мы уже пришли?" "да" "Нет" Set button to GetButtonPressed if ( button == 0 ) MessageBox "Хорошо! Я буду тут недалеко!" "Прощание" AIWander 1000 20 20 20 10 10 Set QuestionState to 0 endif Return endif end 2) да блок кода такой: if ( player->getstrength <= 80) MessageBox "У вас не достаточно силы чтобы открыть эти ворота" Return endif точно не помню так ли её применять, но функция такая, про неё читай в хелпе к скриптам в самом КС, там ищи GetStat
  17. РАБОТАЕТ! Спасибо единственный глюк в том что при кастовании хорошего эффекта "зависает" звук тоесть костёр кастует раз в 5 секунд а звук каста идёт постоянно, это видимо уже движок тупит(( а ещё бесит противное колечко которое появляеться вокруг костра когда срабатывает каст. (такое же возникает вокруг святилищ, когда подаяния делаешь) ну и разумееться вокруг чара летают всякие сияющие огоньки... это увы неприятно, и совсем нарушает восприятие... я даже не знаю как это убрать, если только текстуры все заменить на прозрачные и звуки отключить у спеллов... я понял принцип но не совсем разбираюсь в глобальных скриптах.. а если точнее я их никогда не писал и не вникал. если не сложно можешь написать эти скрипты? для костра и глобальный? з.ы. в том же плагине прописал скрипт на подушки: begin pillow_sc short done1 short done2 if ( GetPCSleep == 1 ) [color="grey"];если спим[/color] if ( GetDistance, Player <= 256 ) [color="grey"];ближе чем на 256 от подушки[/color] Player -> AddSpell "pillow_sleep_spell" [color="grey"];получаем эффект[/color] if ( done1 == 0 ) [color="grey"];о чём ставим в известность игрока[/color] MessageBox "Вы спите на мягкой подушке, отчего ваш сон много приятнее и вы быстрее высыпаетесь." set done1 to 1 [color="grey"];это чтоб масага не вылезала ещефрейменно:)[/color] return endif endif else [color="grey"];если НЕ спим[/color] if ( GetDistance, Player <= 16 ) [color="grey"];но находимся на подушке[/color] Player -> AddSpell "pillow_seet_spell" [color="grey"];то получаем эффект[/color] if ( done2 == 0 ) [color="grey"];о чём ставим в известность игрока[/color] MessageBox "Вы присели на подушку отчего ваша осталость проходит намного быстрее." set done2 to 1 return endif else [color="grey"];но если мы не спим и не находимся на подушке[/color] if ( Player -> GetSpellEffects, "pillow_seet_spell" == 1 ) [color="grey"];и на нас действует эффект [/color][color="red"](а тут будет конфликт с соседней подушкой, если на неё сесть)[/color] Player -> RemoveSpell "pillow_seet_spell" [color="grey"];мы его убираем[/color] set done2 to 0 [color="grey"];и делаем так чтобы масага вылезла в следующий раз когда эффект включиться[/color] return endif endif if ( Player -> GetSpellEffects, "pillow_sleep_spell" == 1 ) Player -> RemoveSpell "pillow_sleep_spell" [color="grey"];аналогично избавляемся от второго эффекта[/color] set done1 to 0 [color="grey"];и перезаряжаем вторую масагу[/color] return endif endif end pillow_sc Где накладываемые эффекты являються характеристиками. теперь вот думаю как го улучшить дабы небыло конфликта и не в каждом фрэйме addspell был
  18. сорри заменил скрипт на вот такой: begin Firepit_sc float timer short done if ( MenuMode == 1 ) return endif [color="gray"];этот блок не даёт скрипту работать чаще чем раз в 5 секунд, теоретически;)[/color] if ( done == 0) [color="gray"];если таймер не отсчитывает 5[/color] set timer to timer + GetSecondsPassed [color="gray"];то пусть считает[/color] set done to 1 [color="gray"];теперь считает[/color] else [color="gray"];если уже считает[/color] if ( timer <= 5 ) [color="gray"];и насчитал пока меньше 5сек[/color] MessageBox "Debug: timer is %f", timer [color="gray"];покажем скока же он насчитал[/color] else [color="gray"];а если насчитал больше 5сек[/color] MessageBox "Debug: timer is OK now" [color="gray"];пусть напишет нам смску[/color] set timer to 0 [color="gray"];и снова начнёт считать с 0[/color] endif endif [color="gray"];---------------------------------------------------------------[/color] if ( GetDistance, Player == 0 ) [color="gray"];если вы в самом эпицентре или костёр у вас в рюкзаке[/color] return elseif ( GetDistance, Player <= 32 ) [color="gray"];Если слишком близко[/color] MessageBox "Вы горите!" [color="gray"];сообщим игроку[/color] Cast, Firepit_bad_spell, Player [color="gray"];добавим плохой эффект[/color] elseif ( GetDistance, Player <= 300 ) [color="gray"];если мы все же на оптимальном расстоянии[/color] MessageBox "Вы чувствуете живительное тепло костра..." [color="gray"];сообщим игроку[/color] Cast, Firepit_good_spell, Player [color="gray"];добавим хороший эффект[/color] else return endif End в итоге дебагер показывает число от 0.028 до 0.035 зависящее от фпс а костёр при приближении кастует спелл в каждом фрэйме=(( как таймер построить? нифига не понимаю з.ы. соответственно поменял Firepit_good_spell и Firepit_bad_spell с "характеристики" на "заклинание" "касание" радиус 0 (на чара применяеться всё норм, если бы тока не в каждом фрэйме ) пробовал ставить ретёрны вот так: ... set timer to timer + GetSecondsPassed set done to 1 [color="#FF0000"]return[/color] else if ( timer <= 5 ) [color="#FF0000"]return[/color] MessageBox "Debug: timer is %f", timer else ... тогда вообще ничего не происходит так как величина timer не становиться больше 5 то и основной скрипт не выполняеться
  19. Спасибо всем кто откликнулся хм... на сколько помниться удаление объекта из скрипта на этом же объекте ведёт к крашу игры если это не так, то поправте меня - я тогда так и сделаю, но просто я не люблю делать объекты которые при выкладывании заменяються активаторами. они потом в дисэйбле остаються лежать и сейв засоряют=( может EW4_Dyx_firepits_world_scpt доработать так чтобы работал с самого костра? ну на счёт 10 это я уже проверил, действительно мало, а число 512 брал из радиуса освещения (т.е. костёр "греет" на расстоянии своего освещения) как альтернатива, может попробовать что-то вроде этого? Begin EW4_Dyx_firepits_scrpt_v2.0 short state ; 0 - далеко, 1 - близко, 2 - горит ;этот блок позволяет подбирать костёр через меню инвентаря и при этом убрать эффекты if ( MenuMode == 1 ) if ( OnActivate == 1 ) Player->RemoveSpell "Firepit_good_spell" Player->RemoveSpell "Firepit_bad_spell" Activate endif return endif ;установка статуса set state to 2 * ( Player->GetSpellEffects "Firepit_bad_spell" ) set state to state + Player->GetSpellEffects "Firepit_good_spell" if ( GetDistance, Player <= 32 ) ;Если слишком близко if ( state != 2 ) ;И мы еще не в этом состоянии MessageBox "Вы горите!" ;сообщим игроку Player->AddSpell "Firepit_bad_spell" ;добавим плохой эффект Player->RemoveSpell "Firepit_good_spell" ;и заберем хороший endif elseif ( GetDistance, Player <= 300 ) ;если мы все же на оптимальном расстоянии if ( state != 1 ) ;И мы еще не в этом состоянии MessageBox "Вы чувствуете живительное тепло костра..." ;сообщим игроку Player->AddSpell "Firepit_good_spell" ;добавим хороший эффект Player->RemoveSpell "Firepit_bad_spell" ;и уберем плохой endif else ;ежели игрок еще дальше if ( state != 0 ) ;если мы слишком далеко Player->RemoveSpell "Firepit_good_spell" ;уберем хороший эффект Player->RemoveSpell "Firepit_bad_spell" ;и плохой тоже endif endif End так же думаю в начале скрипта вставить блок типа такого: short timer short done if ( done == 0) set timer to GetSecondsPassed set done to 1 else if ( timer <= 5 ) return else set timer to 0 set done to 0 endif endif таким образом скрипт будет прокручиваться не каждый фрэйм а раз в 5 секунд что разгрузит проц и создаст "постэффект" т.е. после вылезания из огня игрок будет гореть ещё около 5 сек и после удаления эффект будет исчезать не сразу. или может вообще сделать так: при расстоянии меньше 32 костёр кастует (вообщем использовать команду cast вместо addspell) "плохой" эффект типа "заклинание" длительностью 5 секунд, при расстоянии от 32 до 300 "хороший" эффект длительностью 5 секунд, и при расстоянии больше 300 ничего не происходит. и прокручивать скрипт раз в 5 секунд. плюс такого способа в том что можно менять продолжительность эффектов и делать их разными не изменяя скрипт, минус в том что раз в 5 секунд в игрока будет прилетать заклинание, что несколько портит реалистичность всей картины. посоветуйте какой вариант будет лучше? особенно в плане производительности. Добавлено: проверил EW4_Dyx_firepits_scrpt_v2.0 всё работает как надо кроме одного, при подборе костров вокруг игрока появляеться эффект "урон огня" но повреждения не наносяться (возможно потому что подключен плагин dynamic regeneration) то есть получаеться когда какой либо предмет находится у игрока в инвенторе игра считает что его расстояние до игрока равно 0... Добавлено: добавил проверку на расстояние = 0 получилось что если у чара в рюкзаке есть костёр остальные костры не действуют никак на него=( похоже и вправду без деления объектов на "объект для мира" и "объект для инвенторя" не обойтись( попробую вариант с cast'ом, если не получиться - я в отчаиньи, придёться делать через 2 объекта=(
  20. Вроде уже обсуждалось и вроде досудились до ответа "невозможно"(((
  21. во-первых: Не знаю было ли такое предложение, но идея помоему неплохая: приручение животных. для разных животных нужен определённый айтем (к примеру кнут того или иного типа) и некоторое кол-во очков нового навыка "приручение животных", так же их можно просто купить (но далеко не всех), прирученых животных можно продавать, либо прокачивать (тренировать), гуаров и крыс можно за энную сумму сделать вьючными, можно также реализовать арену для крысинных, алитовых, никсовых итд итп боёв, где игрок может выставить своего питомца против мобов разных уровней, и заработать на этом денег (или проиграть). некоторых питомцев можно переучить в ездовые, итд итп, идею можно развить и дальше. можно попробовать реальзовать покупку питомцев непесями, после чего те могут их использовать, например продал гончюю стражнику а потом напал на него и гончая за него уже заступаеться, или продал ему гуара а он на него верхом сел. Во-вторых: атаки городов. атаки двух типов (как минимум), бандитами или животными, в случае с животными всё просто, в городах случайным образом респакуються различные твари, которые нападают на стражей и людей (и игрока втч) за убийство оных вам в легионах платят деньги, типа спасибо за помощь и всё такое. с бандитами посложнее, тут у вас есть выбор, за кого заступиться, вы можете убивать разбойников и получать за это деньги либо пойти у них на поводу и нарушать закон, получая за это артефакты, компаньёнов, небольшие квесты, может даже за некоторые особые заслуги в виде квеста игрок может получить себе пещеру с отрядом бандюганов-компаньёнов и возможностью увеличения их численности, а так же возможностью моддинга пещеры (например выкопал в стенке ещё комнату (ну всм заплатил комунить чтобы выкопали) посадил там лекаря и он тебе микстурки по дешману клепает, или кузницу всунул и там чинишься вооружаешься и "браткам" своим доспешки/оружице штампуешь, а потом бригадой города и сёла грабить. помимо н-ного количества пещер (сделать пару модернизируемых и пару простых, больше не надо), можно основать пару постов на поверхности с вышками и заборами, на котрые время от времени будут ходить войной стражники. чтобы набеги не казались плоскими, "братки" должны не как компаньёны толпица за чаром и ждать пока он первый нападёт на врага, а респаковаться в случайных местах и месить всё что шевелица кроме своих разумееться. а чтобы игрок слишком быстро не зачистил все города, на момент нападения в городе разбросать "спонтом жителей" а важных непесей спрятать. ну это собственно уже пошли методы, и они пусть будут на совести авторов, а саму идею я думаю они уже уловили. з.ы. если плагины подобного типа уже существуют кинте пжлста сцылки
  22. написал скрипт (код ниже) для своего плагина, повесил на стандартные костры и добавил им функцию "Can carry" по результатам первого же теста (красным выделил баги, зелёным то что работает как я и хотел): поднялся на маяк в Сейда нин, наложился эффект Firepit_good_spell, залез в огонь снялся эффект Firepit_good_spell, но не появился Firepit_bad_spell, зато появился непропадающий месаджбокс "Вы горите!!!", далее подобрал оба костра, месаджбокс НЕ пропал, вокруг чара появился эффект от удара огнём (как должно быть при Firepit_bad_spell), но сами повреждения не наносились, выложил один из костров на землю эффекты пропали, повреждения не наносяться, эффект Firepit_good_spell НЕ появился, отошёл от выложеного костра на расстояние >512 изменений не последовало, подошёл обратно ничего не произошло, выложил второй костёр появился эффект Firepit_good_spell наступил на него, Firepit_good_spell пропал появился месаджбокс но эффект Firepit_bad_spell не появился. Поднял один из костров обратно, эффект Firepit_bad_spell убил игрока быстрее чем надо. пояснение: Firepit_bad_spell (характеристика) наносит урон огнём 1п и ставит уязвимость огню от 1 до 2п Firepit_good_spell (характеристика) восстанавливает 2п усталости, 1п манны и 1п здоровья чего я собстно хотел: подходишь к костру на 512 получаешь Firepit_good_spell наступил на огонь Firepit_good_spell пропадает появляетьсяFirepit_bad_spell отошёл дальше чем на 512 все эффекты пропали (только если нет рядом другого костра) когда костёр в рюкзаке, эффекты не действуют чего я собстно сделал: begin Firepit_sc if ( GetDistance, Player < 512 ) [color="#FF00FF"];если до огня ближе чем 512[/color] if ( GetDistance, Player < 10 ) [color="#FF00FF"];но если ближе 10[/color] Player -> AddSpell "Firepit_bad_spell" [color="#FF00FF"];игрок горит[/color] MessageBox "Вы горите!!!" if ( Player -> GetSpellEffects, "Firepit_good_spell" == 1 ) Player -> RemoveSpell "Firepit_good_spell" [color="#FF00FF"];причём хороший эффект от костра не действует[/color] endif else [color="#FF00FF"];но если дальше 10[/color] Player -> AddSpell "Firepit_good_spell" [color="#FF00FF"];действует хороший эффект костра (как в WoW:)[/color] if ( Player -> GetSpellEffects, "Firepit_bad_spell"== 1 ) Player -> RemoveSpell "Firepit_bad_spell" [color="#FF00FF"];и перестаёт действовать эффект ожога[/color] endif endif else [color="#FF00FF"];однако если мы дальше чем 512 от костра[/color] if ( Player -> GetSpellEffects, "Firepit_bad_spell"== 1 ) [color="#FF00FF"];и получаем ожёг[/color] Player -> RemoveSpell "Firepit_bad_spell" [color="#FF00FF"];то мы его не получаем (кажись тут возникает конфликт от второго костра)[/color] endif if ( Player -> GetSpellEffects, "Firepit_good_spell" == 1 ) [color="#FF00FF"];и если мы имеем хороший эффект[/color] Player -> RemoveSpell "Firepit_good_spell" [color="#FF00FF"];он тоже пропадает, мы же ушли далеко от костра... (но похоже и тут будет конфликт с другими кострами, если они ближе 512)[/color] endif endif end Firepit_sc ну вот собстно конфликтный момент вроде нашёл но как его профиксить не знаю, подскажите плиз. удалить последнй блок (который снимает эффекты) нельзя так как игрок после встречи с костром не потеряет эффект уже никогда.
  23. там с бутылками замута...
×
×
  • Создать...