![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1966
|
|||
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Возник вопрос, как удалить определенное существо, когда игрок покидает локацию, причем не просто выходит через триггер, а выходит с сервера. Если повесить скрипт проверки на триггер, и просто покидать триггер, то работает все замечательно, но когда покидаешь сервер, скрипт похоже не успевает сработать. Сам скрипт:
В данном случае рассматривается точная копия персонажа игрока, который создается в момент входа на арену. Следующий вопрос. У всех существ в их свойствах есть флаг "Leaves lootable corpse", который позволяет превращать труп существа в подобие инвентаря, из которого можно извлекать вещи. Все бы хорошо, но когда "инвентарь" такой не открываешь, то по исчезновении трупа на месте смерти существа остается невидимый объект, который горит яркой точкой при нажатии на Tab. Если убить существ этак 100-200 в одном месте, то локация начинает подтормаживать. Но это ерунда, самое главное, что при выделении валяющихся вещей через Tab все это дико рябит в глазах. Какой флаг отвечает за действие персонажа в момент открытия инвентаря существа? Если его переключать, когда удаляется существо с нетронутыми вещами, то удаляться будет и невидимый объект. Или же подскажите, какое имя носит этот объект, чтобы непосредственно к нему обращаться в момент удаления. |
||
![]()
Сообщение
#1967
|
|||
Level 1 Класс: Маг Характер: Lawful Neutral Раса: Полуэльф ![]() |
хм.. а этот скрипт для чего? (его можно преобразовать в рабочий чтоб предметик получить?) а то я вот усе уже сделал а с выдачей предметов трабла.... можт кто напишет мне скриптик выбачи любого предмета... а... ? Сообщение отредактировал Night Elf - Feb 16 2006, 14:50 |
||
![]()
Сообщение
#1968
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Night Elf, такой скрипт обычно вешается на диалог. Самый простой диалог:
NPC: Здравствуйте, странник! PC: 1. Выдай мне предмет. Скрипт вешается на действие "Actions taken". В данном случае действием является активация пункта диалога. Да, также совет. Если ты будешь делать много кастомных предметов, то делай им уникальные тэги. Например: axe_it_name, где it - item, name - сокращенное название предмета. Цитата Описание функции "CreateItemOnObject": This function creates an item with the template sItemTemplate in oTarget's inventory. If you are creating a custom item, sItemTemplate is the ResRef; if you are creating a standard item, sItemTemplate is the item's tag. |
![]()
Сообщение
#1969
|
|
Level 9 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [PW] ![]() |
Цитата(Zirrex @ Feb 16 2006, 13:55) [snapback]70222[/snapback] Возник вопрос, как удалить определенное существо, когда игрок покидает локацию, причем не просто выходит через триггер, а выходит с сервера. Если повесить скрипт проверки на триггер, и просто покидать триггер, то работает все замечательно, но когда покидаешь сервер, скрипт похоже не успевает сработать. Сам скрипт: ... В данном случае рассматривается точная копия персонажа игрока, который создается в момент входа на арену. В момент выхода игрока с сервера часть информации об игроке уже недоступно. В частности CDKEY. Подробнее должно быть где-то в шардах, кажется тут: http://www.wrg.ru/forums/index.php?showtopic=241 Там же были советы по решению таких проблем. |
![]() ![]()
Сообщение
#1970
|
|
Лорд AxisTown'a ![]() Класс: Монах Характер: Lawful Good Раса: Дварф NWN: Маппинг ![]() |
то Zirrex
Цитата Возник вопрос, как удалить определенное существо, когда игрок покидает локацию, причем не просто выходит через триггер, а выходит с сервера. маленькое проедложение по твоему скрипту : может надо немношко оптимизировать код ... поскольку тебе нужны именно CREATURE, а перебираеться все обьекты на локе, то лучше проверять if (GetObjectType(oCreature)==OBJECT_TYPE_CREATURE) а не if (GetIsEnemy(oPC, oCreature)) - ведь не забудем, что очень многие обьекты ( двери плейсы итд по дефоулту враждебны к PC (IMG:style_emoticons/kolobok_light/biggrin.gif) ) и надо бы уточнить : этот PC единственный возможный в локе арены? или там может быть целая толпа? (если один то гораздо проще) а так можно повесить скрипт на onHeartbeat арены и смотреть есть ли хоть один PC на арене..если нету - сносить всех неписей ( если там вошли нескоко игроков, то по идее они одна комада и все неписи ко всем PCям Enemy..значит ихнадо оставить)...другой вопрос, что надо бы отлавливать таких " героев" альтеров и выдавть что-то типа "почетного" приза - заячих ушей или хвостика (IMG:style_emoticons/kolobok_light/declare.gif) Сообщение отредактировал mamuc - Feb 16 2006, 16:38 |
![]()
Сообщение
#1971
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
Цитата Возник вопрос, как удалить определенное существо, когда игрок покидает локацию, причем не просто выходит через триггер, а выходит с сервера. Если повесить скрипт проверки на триггер, и просто покидать триггер, то работает все замечательно, но когда покидаешь сервер, скрипт похоже не успевает сработать. я щас сонный, мог и не понять вопроса. почему бы не сделать локалку чел заходит она += 1 выходит -= 1 на выходе проверяеш, если == 0,удаляеш то что надо...( подразумевается что игрок не 1) ведь когда срабатывает OnClientLeave тогда же и срабатывает OnAreaExit по идее Сообщение отредактировал [MoF]Darth_Nick - Feb 16 2006, 16:50 |
![]()
Сообщение
#1972
|
|
Level 1 Класс: Маг Характер: Lawful Neutral Раса: Полуэльф ![]() |
Zirrex, да я эт понял.. ты мне можешь скрипт написать выдачи любого предмета? всеравно какого я потом подставлю... просто уже недель 2 бьюсь а толку........
|
![]()
Сообщение
#1973
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
да йопт, я же дал тебе ф-ции...
CreateItemOnObject - создает "на" объекте айтем по ресрефу из палитры object CreateItemOnObject(string sItemTemplate, object oTarget=OBJECT_SELF, int nStackSize=1) sItemTemplate - ресреф oTarget=OBJECT_SELF меняеш на объект, по умолчанию OBJECT_SELF nStackSize - "стек"..типа кол-во, для стрел там, болтов. по умолчанию 1 Какие тут вопросы еще могут быть? о.О Если мне память не изменяет, у биовар в тулсете встроен мастер скриптов(нупских, ну да ладно) и там вроде было это... я уже не знаю как проще объяснить ) Сообщение отредактировал [MoF]Darth_Nick - Feb 16 2006, 18:57 |
![]()
Сообщение
#1974
|
|
Level 1 Класс: Обыватель Характер: Chaotic Evil Раса: Человек ![]() |
Может я чего-то не понимаю, но вот скажем компилирую я в редакторе скриптов ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE), GetFirstPC()); Ошибок нет.
Сохраняю под каким-то именем скажем xxxxxx. Захожу в редактор перса, там нажимаю кнопку добавить скрипт (или что-то в этом роде), вручную пишу имя xxxxxx типа int. Экспортирую перса в формат erf, редактирую HEX и переношу в bic, далее перс «готов», но в игре ничего не сработало. Я начинающий может, что не так делаю. И еще есть ли какой-нить менее болезненный способ создания перса в обход HEX-редактора, Leto не предлагать. |
![]()
Сообщение
#1975
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
нихренасебечтоэто???? Ты че за геморой себе на голову придумал? если по простому, то вот: onModuleEnter
|
||
![]()
Сообщение
#1976
|
|
Level 5 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [Sn] ![]() |
Ангелиус, какие бы ты на своего перса эффекты не вешал, подобным образом, все это безполезно, тк все скрипты с твоего героя убираются движком игры. Если хочешь чтобы этот эффект был на твоем герое пользуйся стандартными вещами. (IMG:style_emoticons/kolobok_light/declare.gif)
ЗЫ: Кстати, не обязательно через erf - сначала создаешь кого тебе надо в редакторе, сохраняешься, открываешь модуль в nwhak.exe, находишь его по ResRef-у (перца конечно же), экспортируешь, изменяешь расширение с utc на bic, открываешь, например, FAR-ом первые три буквы UTC заменяешь на BIC - все можешь играть. Сообщение отредактировал StalkerDtN - Feb 16 2006, 22:22 |
![]()
Сообщение
#1977
|
|||||||||
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
mamuc, если учесть, что у меня переключается переменная в момент боя, то альтеру будет очень неудобно после перезахода. Т.е. он просто умрет. Раз это арена, то и народу там будет много, а поэтому я и сделал проверку по ключику и тэгу персонажа. В качестве тэга при создании копии персонажа как раз вписывается паблик ключ. Думал, как повесить переменную на копию персонажа в момент создания, да так ничего путного и не получилось. Да, я добавлял эту проверку, просто забыл внести в скрипт. Мучился с хартбитом на локацию, так он мне даже тэг двери выдавал, когда я проверял через сообщения, насколько верно скрипт работает (IMG:style_emoticons/kolobok_light/smile.gif) _kaa_, это конечно все хорошо, но нужна эта информация в момент выхода игрока. Либо же после выхода игрока крутить на хартбите скрипт и проверять, есть ли этот игрок или нету. Если нет, удалить оставшихся существ. Кстати, вы наверняка обратили внимание на функцию:
Спрашивается, зачем она, если и так по умолчанию все это TRUE для удаления. Но мне пришлось делать FALSE в момент создания, потому что при смерти существа не успевает обрабатываться скрипт на хартбите локации, который удаляет и умершее существо и выпадает опыт. Иного способа обработки скрипта с существом, у которого совершенно нет своих скриптов, я не нашел. Night Elf, так ты его сам уже написал (IMG:style_emoticons/kolobok_light/smile.gif) Единственное, что тебе в нем нужно будет менять, это имя предмета. Если не понимаешь скрипты, почитай их описания, изучи хотя бы азы написания скриптов. Тебе надо понимать, что ты делаешь, иначе это как биться головой об стену. [MoF]Darth_Nick, самое смешное, что сам его написал (IMG:style_emoticons/kolobok_light/smile.gif) Ангелиус, у персонажа есть свой скрипт, default, и все. Создай его в редакторе. Сохрани под таким именем, и вставь скрипт, который тебе написал Лекс, немного его изменив под хартбит.
Можно его расположить конечно и на действии входа игрока на сервер, но тогда тебе придется указывать в различных действиях модуля, что делать с этим эффектом, если игрок умирает и т.п. All, то ли у меня уже крыша едет, то ли я делаю что-то не так (IMG:style_emoticons/kolobok_light/smile.gif) Наипростейший скрипт, но не желает работать, хоть ты тресни. И тэг верный, и сам скрипт, срабатывают все условия, а сама функция, нет.
oKiller - персонаж, который убил гоблина. Т.е. создаваться вещь должна сразу в инвентаре персонажа, но увы. Пробовал ее создавать в поверженном гоблине, точнее в невидимом объекте, который создается на месте смерти гоблина, эффект тот же, ничего. Гм... я конечно все понимаю, но почему же тогда эта функция работает в других местах нормально без такого добавления?
Стоило это внести, заработала функция. Сообщение отредактировал Zirrex - Feb 16 2006, 23:46 |
||||||||
![]()
Сообщение
#1978
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Zirrex, то, что ты написал не будет работать вот тут:
потому что ВИЗУАЛКА это тебе не ЭФИРНЫЙ ВИД (IMG:style_emoticons/kolobok_light/smile.gif) |
||
![]()
Сообщение
#1979
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Lex, а что же это тогда такое? Просто сделать проверку на "EFFECT_TYPE_VISUALEFFECT"? Кстати, иногда возникают вопросы, как снять некоторые эффекты без последствий снятия всех эффектов, которые наложены на персонаже.
Например, изменилось значение силы на 2 единицы, и нужно сбросить именно этот эффект. Только как определить его? |
![]()
Сообщение
#1980
|
|||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата Lex, а что же это тогда такое? Просто сделать проверку на "EFFECT_TYPE_VISUALEFFECT"? ну та проверка, что написал ты это на вот этот эффект:
в принципе можно и визуалку проверять. Там не должно быть проблем. Но я не понимаю смысла ставить в ХБ. Если игрок сначала дух, потом уже живой, то проще ставить/снимать визуалку при переходе. И кстати момент, чтобы не слетела от отдыха, ставить
Цитата Например, изменилось значение силы на 2 единицы, и нужно сбросить именно этот эффект. Только как определить его? Эх.. старая беда. Юзая такие вещи:
я например делал особые эффекты типа Супернатурал, потом искал понижалки силы этого типа и удялал. Но имхо тут проще шкуркой (IMG:style_emoticons/kolobok_light/smile.gif) |
||||||
![]()
Сообщение
#1981
|
|
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Lex, я это знаю. Именно так и распределено в моем модуле. Просто, раз уж зашел вопрос, что это за тип эффекта, то, наверное, стоит точно указать к чему относится именно "VFX_DUR_GHOSTLY_VISAGE".
Видел множество разнообразных модулей со шкурками, которые создают субрассы, но тут очень много казусов. Ведь нужно всегда учитывать при обработке разных действий, чтобы эти шкурки не выпадали из персонажа. Да и просто наложенные эффекты через скрипты приходится каждый раз переделывать, когда как шкурка их хранит постоянно. Вот и думаешь, где меньше минусов. И все равно, как не крути, но эффекты все эти временные, и поэтому подсвечивают измененные характеристики зеленым цветом. Естественно в момент поднятия уровня такие бонусы не учитываются. Особенно это касается интеллекта. Не помню где именно, но видел на одном шарде работу то ли скрипта, то ли программы, которая изменяла характеристики персонажа под субрассу, и так их сохраняла. Причем они не менялись вторично после перезахода. Знать бы как. |
![]()
Сообщение
#1982
|
|
Level 9 ![]() Класс: Фея Характер: Chaotic Evil Раса: Тварь NWN: Скриптинг [PW] ![]() |
Цитата(Zirrex @ Feb 17 2006, 01:22) [snapback]70283[/snapback] Видел множество разнообразных модулей со шкурками, которые создают субрассы, но тут очень много казусов. Ведь нужно всегда учитывать при обработке разных действий, чтобы эти шкурки не выпадали из персонажа. Да и просто наложенные эффекты через скрипты приходится каждый раз переделывать, когда как шкурка их хранит постоянно. Вот и думаешь, где меньше минусов. храните деньги в сберегательных кассах! ...а бонусы в БД. я так думаю. (IMG:style_emoticons/kolobok_light/buba.gif) Цитата(Zirrex @ Feb 17 2006, 01:22) [snapback]70283[/snapback] Не помню где именно, но видел на одном шарде работу то ли скрипта, то ли программы, которая изменяла характеристики персонажа под субрассу, и так их сохраняла. Причем они не менялись вторично после перезахода. Знать бы как. скорее всего nwnx_leto |
![]()
Сообщение
#1983
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Доброго времени суток,меня интересует система защиты чаров от взлома, все пытаюсь сам ,не чего не выходит,вроде все делаю правильно,заставляю записывать сдкей в шмотку в инвентаре игрока,но почему-то кей не записывается,всем кому не покажу говорят ошибок нет,а вот не работает,да и еще я этот скрипт куда-то засовал,так что прошу помощи.
П.С : прошу не посылать меня на воулт=) |
![]()
Сообщение
#1984
|
|
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
http://www.wrg.ru/forums/index.php?showtopic=211&st=0
тут глянь или покажи что написал, трдно судить, когда скрипта нету... |
![]()
Сообщение
#1985
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Я хотел узнать может ли игрок переселила в другое создание. Если да то напишите крипт. Заранее благодарен.
|
![]()
Сообщение
#1986
|
|||||||||
Level 6 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
меняеш апиренс, вешаеш айтем\шкуру..ф-ции:
и
ну и
тулсета под рукой нету, так что как то так:
по желанию вставиш ефекты и т.д. ф-ции так..для общего развития глянь еще инслюд nw_i0_transform Сообщение отредактировал [MoF]Darth_Nick - Feb 23 2006, 07:04 |
||||||||
![]()
Сообщение
#1987
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
void main()
{ object Player = GetEnteringObject(); string WW = GetTag(GetArea(Player)); string sCDKEY = GetPCPublicCDKey(Player); string sName = GetName(Player); string sPCName = GetPCPlayerName(Player); string sID = "(("+sPCName+"))"+sName; if (GetIsDM(Player)) return; string sReadID = GetCampaignString("Security",sID); if (!GetLocalInt(GetModule(),"SecurityDisable") && GetIsObjectValid(GetItemPossessedBy(Player,"mg_bootstone"))) { BootPC(Player); return; } if (sReadID =="" || GetLocalInt(GetModule(),"SecurityDisable")) { SetCampaignString("Security",sID,sCDKEY); return; } if (sReadID != sCDKEY && !GetLocalInt(GetModule(),"SecurityDisable") ) { BootPC(Player); SendMessageToAllDMs("Security: Error! "+sName+" :["+sPCName+"]: with key ="+sCDKEY+ " != "+sReadID); WriteTimestampedLogEntry("Security: Error! "+sName+" :["+sPCName+"]: with key ="+sCDKEY+ " != "+sReadID); return; } все компилируется,но почему-то не работает,или тулсет тупит или не знаю... так извеняюсь ,не то скопировал...поищу свой еще. Да и этот который я только что нашел,как сделать чтобы сдкей записывался в шмотку в инвентаре,а не в базу?В моем он просто не записывает правильно. |
![]() ![]()
Сообщение
#1988
|
|||
Level 9 ![]() Класс: Друид Характер: True Neutral Раса: Эльф NWN: Скриптинг [PW] Амен ![]() |
Equalizer, чертовски знакомый код, только вот модуль, в котором этот код использовался, не для широкого использования. Откуда он у тебя? Работу скрипта не проверял, но вроде должно работать:
Сообщение отредактировал Zirrex - Feb 20 2006, 22:12 |
||
![]() ![]()
Сообщение
#1989
|
|
Level 5 ![]() ![]() Класс: Друид Характер: Neutral Good Раса: Человек ![]() |
Кто знаит скрипт для поевления текста один рас в день пожалуйста напишыте или хотябы подскажыте где его можно взять. (IMG:style_emoticons/kolobok_light/unsure.gif)
|
![]()
Сообщение
#1990
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата Кто знаит скрипт для поевления текста один рас в день пожалуйста напишыте или хотябы подскажыте где его можно взять. Правильно поставленный вопрос и сформулированная задача, уже половина ответа. Вопрос неконкретный. Например, текст появляется у швабры над головой? Раз в день? Или у НПС? Или в диалоге? |
![]() ![]() |
Текстовая версия | Сейчас: 30th April 2025 - 14:46 |