![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#11
|
|||||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
В процессе всем нам часто приходится кидать дайсы. А юзать Рандом+1 неудобно в случае, когда надо, скажем, бросить 3д5. Решил написать скриптину:
<small>Добавлено в 15:30</small> Прототип:
Сообщение отредактировал Twin - Jan 9 2005, 17:53 |
||||
![]()
Сообщение
#12
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Если у вас не очень много дверей, которые закрываются на ночь, то можно вставить такой скриптик на OnHeartbeat этой двери.
Сообщение отредактировал Twin - Jan 9 2005, 17:55 |
||
![]()
Сообщение
#13
|
|
4-х Кубовый ![]() Класс: Некромант Характер: Lawful Evil Раса: Человек NWN: Скриптинг [Sn] Проклятие Левора ![]() |
Поправлю.
Код //:://////////////////////////////////////////////
//:: Copyright (c) 2004 WRG! www.wrg.ru //:: Name: am_doorlock_d_n //::////////////////////////////////////////////// /* ЗАПИРАЕТ ДВЕРЬ НА НОЧЬ */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 21.05.2004 //::////////////////////////////////////////////// void main() { if (GetArea(OBJECT_SELF) != GetArea(GetFirstPC())) // return; // PS. ТОЛЬКО ДЛЯ СИНГЛОВ!!! // if((GetIsNight() && GetLocked(OBJECT_SELF))||(GetIsDay() && !GetLocked(OBJECT_SELF))) // { // return; // [b]Эта проверка 4-х условий будет жрать больше ресурсов, чем "перезакрытие" дверей! // } // Так что она не нужна.[/b] if (GetIsNight()) { SetLocked(OBJECT_SELF, TRUE); return; } if (GetIsDay()) { SetLocked(OBJECT_SELF, FALSE); return; } } |
![]()
Сообщение
#14
|
|||
Level 2 ![]() Класс: Рейнджер Характер: Lawful Good Раса: Человек ![]() |
Цитата Вот небольшой скрипт дающий экспу за открытие двери или обезвреживание ловушки. Специально сделан так, что если за вас работает хеньчман, то много экспы не ждите. Имхо, логичнее экспу уменьшать с уровнем. Обосновать? А за хенчмена - чисто формальные 10 очков. (IMG:style_emoticons/kolobok_light/smile.gif) Все цифры взяты наобум, тут надо корректировать.
------ Что касается ловушек, то Ой! Разве воришка не может ставить и обезвреживать собственные ловушки? (IMG:style_emoticons/kolobok_light/wink3.gif) (Вспоминается Jagged Alliance, где можно было поднять саперское умение с 1 до 100, с одной миной. (IMG:style_emoticons/kolobok_light/smile.gif) ) Проверку на Hostile? |
||
![]()
Сообщение
#15
|
|||||||||||||||||||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Очередная порция скриптов(начал писать АИ, вот, так сказать, начальные наработки, может, кому-нить и пригодится). Как всегда все(кроме 7 - этот скрипт взят из кампании СоУ) мое, совпадения случайны. 1. Проверяет, оружие ли вещь oWeapon. Можно использовать в скрипте-проверке, вооружен ли обьект(ведь при простом перебирании обьектов в руках у ПС(НПС) как оружие возвращается и факел).
2. Проверяет способность обьекта oObject(=OBJECT_SELF) произносить заклинания.
3. Возвращает ближайшее энеми-создание, способное творить заклы. Использует скрипт 2. Из этого скрипта вытекает скрипт 4.
4. См. 3.
5. Проверяет, метательное ли оружие oWeapon.
6. Скрипт, вытекающий из скрипта 1: если стоит 0 (по умолч.) проверяет у обьекта наличие оружитя в слотах инвентаря, если 1- в инвентаре, если 2 - и там, и там.
7. Скрипт, аналогичный второму: определяет, присутствуют ли в его классах классы бойца.
8. Рэндомная задержка. Вообще может использоваться для генерации случайного флоата.
9. Возвращает кол-во предметов в инвентаре oTarget.
Удачи! PS: про реплы Сэрлеса: восрешение вообще есть лажа и неДнДэшно к тому ж. Ну, не пропаать же скрипту(IMG:style_emoticons/kolobok_light/smile.gif) Сообщение отредактировал Twin - Jan 9 2005, 17:58 |
||||||||||||||||||
![]()
Сообщение
#16
|
|||||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
LEX: Ты бы описал в общих чертах, что эти скрипты делают. Описываю: Если Хит поинты игрока < 0 >-11 то он падает наземь.корчится, кричит и у него отнимаются хит поинты. Если его не успеют вылечить - он умрет. А когда умрет - станет призраком и перенесется в фугу. А еще экран гаснет...ну вроде как: В глазах потемнело. За основу взят скрипт Tarre OnPlayerDying
"bloody" - синька с кровью. З.Ы. Tarre там с Object_Type перепутал кажется(IMG:style_emoticons/kolobok_light/smile.gif) Далее OnPlayerDeath
WP_RAISE - вейпоинт в фуге И еще в локации фуги - куда перемещается мертвый игрок OnEnter
|
||||||
![]()
Сообщение
#17
|
|||||||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Скрипты: удаляющий эффект (1) и сканирующий эффект (2).
Обещанный скрипт-реакция грарда на нападение на оного ПС... Впихивается в онАтакед. Скрипт делает следущее: охранник вырубает ПС и начинает с ним диалог(лтбо что-то иное (IMG:style_emoticons/kolobok_light/smile.gif) )
Сообщение отредактировал Twin - Jan 9 2005, 18:00 |
||||||
![]()
Сообщение
#18
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
По идеи должно работать... Хотел еще вставить фичу, чтобы в конце убранный эффект восстанавливался, но потом передумал - ибо нехрен на охранника с иммуной наезжать :-)
Возможный баг - если на криче будет много иммунитетов, то ремувится только один (возможно, не нокдаун, т.к. эффекттип есть только EFFECT_TYPE_IMMUNITY). Хотя не знаю, я сейчас в ж...пе полнейшей, до ближайшего тулсета километры, посему могу и ошибаться ... |
||
![]()
Сообщение
#19
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Да, я добрался-таки до тулсы, проверил: все работает (исходя из оргинзации цикла ActionRemoveObject(. . .) ), уничтожает ВСЕ эффекты иммунитета на криче... Теперь в поярдке садомазохизма попытаюсь сделать, чтобы эффект возвращался после прозхождения процедуры "валяния" ПС на земле. Загвоздка в том - как фиксировать длительность начального эффекта и наложить новый эффект с такой же длительностью... ДБ, помоги :-) Да, и еще: обнаружилась досадная бага - атакующие перса кричи не меняют свое отношение к ПС, когда гвард уже поменял отношение. Попробую исправить. ----------------------------------------------------- Еще одна вещь: полезная для купцов фишка - не знаю как у других, но у нас в моде преобладают торговцы специфического назначения: напр., продающий только зелья, или только броню и оружие и т.д. Но игроки в процессе имеют привычку продавать в магазине всякую дрянь - она забивает инвентарь магазина... Проблему решает простой скриптик на он_опн_стор... Скрипт универсальный.
|
||
![]()
Сообщение
#20
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Выдрана из буржуйского мода. Код _каа_ предусматривал только 4 цвета. здесь больше. пользуйтесь. |
||
![]()
Сообщение
#21
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Цветной текст. Пример: Называешь мой инклюд "lib_colortext". Скрипт на он_ентер локи. На входе ПС говорит фразу you are entering object, и она отображается не стандартным белым, а красным (TXT_COLOR_RED). Если бы на месте TXT_COLOR_RED стояло бы TXT_COLOR_YELLOW , она отобразилась бы желтым. Проверь.
|
||
![]()
Сообщение
#22
|
|||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Скриптики на головоломку. Тоесть не совсем головоломку... На закодированную дверь. У вас есть локация в которой есть дверь. Эта дверь изначально закрыта. Еще там есть N-ое количество плиток (Plate) на полу с любыми тегами, но именами букв. Например, плита с именем "р" и тегом..ну допустим "letter_r". И надо столько плит - из скольки букв состоит кодовое слово двери. Или можно больше чтоб запутать игрока. Если у вас на двери не кодовое слово, а целая фраза, тогда чтобы сделать пробел надо содать плиту с именем - "пробел". Все плиты должны быть Юзабельные(Usable). Еще там есть рычаг после дерганья которого проверяется тот код, который вы набрали наступая на плитки. Если он правильный - закодированная дверь открывается, если нет - набранный код сбрасывается и игрока ударяет током. OnUsed любой плиты с именем-буквой
OnUsed рычага с тэгом "code_lock"
|
||||
![]()
Сообщение
#23
|
|||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Небольшой, совсем простой скриптик банка. В нем нет никаких паролей для снятия золота, проверок на CDKey или имя игрока. Это если вам надо сами добавите как SetLocalString и проверки тоже(IMG:style_emoticons/kolobok_light/smile.gif) Или можно например на предмет-договор поставить Undropable. Чтоб воры не украли и игрок не передал. Итак, у нас есть НПС - заведующий банком. Наш игрок заходит в банк и у него есть 3 действия: "балланс", "положить", "забрать". Все эти действия а так же ответы ДА и НЕТ производятся посредством обыкновенного чата(НЕ диалога). Если у него нет договора с банком то ему предлагают его завести и дают 1 минуту чтобы сказать да или нет. Если договор заведен - игрок может снять деньги со счета, положить на счет или узнать свой балланс. Система основанна на LocalInt которые сохраняются на предметах вместе с игроком. Скрипт ставится на OnSpawn НПС заведующего банком
Этот скрипт ставится на OnConversation НПС заведующего банком
|
||||
![]()
Сообщение
#24
|
|||
Level 8 ![]() ![]() ![]() Класс: Псионик Характер: Chaotic Good Раса: Человек NWN: Скриптинг [Sn] ![]() |
Часть скрипта из нашей демки. У нас будет более продвинутая(в демо, думаю, включать не будем, но в релизе всего мода будет точно), чем в обыкновенном НВН система кастомных разговоров. Сейчас я (параллельно с лтом и АИ :-) ) пишу систему разговоров. Итак, решил бросить в Базу Скриптов коротенький скриптик. Суть: он ставит любое сцществительное в родительный падеж (string RusGenetiv). Параметр nSex - род: 1 - мужской, 2 - женский, 3 - средний. Скрипт протестирован на 150 словах. Хотя, сами понимаете, русский язык сложен и этого кол-ва слов явно мало, посему если найдете ошибки, тут же сообщите. ЗЫ: сейчас пишу Dativ & Akkusativ (наряду с Genetic самые употребительные) (на немецкий манер называю - мне языки германской группы вообще в последнее время ОЧЕНЬ нравятся :-) ), подумываю над прилагательными. (просто надо грамотно реализовать стековку имени + фамилии + прозвища) ЗЫЫ: при использовании указание авторства обязательно
|
||
![]()
Сообщение
#25
|
|||
Level 4 ![]() ![]() Класс: Друид Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] ![]() |
Ладно думал я думал и решил тут отпостить простенький скриптик на отрыскивание изначально дисбалансированных фишек вещей и замену их другими, более сбалансированными. Тут заменяются: хаст, трусинг, иммунитеты, фридум. Хорошо для шарда =)
Сообщение отредактировал Twin - Jan 8 2005, 05:57 |
||
![]()
Сообщение
#26
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вот простенький скриптик, если НПС отойдет от своего POST_-а дальше 15 метров, то появится строка в диалоге.
|
||
![]()
Сообщение
#27
|
|||
Level 4 ![]() ![]() Класс: Друид Характер: Neutral Evil Раса: Эльф NWN: Скриптинг [PW] ![]() |
А вот скриптик, если при каких нибуть условиях вы не хотите, чтобы игрок рестился обычным методом через кнопку реста:
|
||
![]()
Сообщение
#28
|
|||||||||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
автор: _kaa_ Вот стандартный файл для алкоголя:
Самый простой способ добавить что-то: Так была реализованна отрава на Экзисе по заказу Илэссэ (IMG:style_emoticons/kolobok_light/smile.gif) Обрабатывался тег бутылки. Последние цифры преобразовывались в задержку, после который выпивший эту гадость умирал, дрыгая ногами.
Вот вызываемый скрипт смерти: `lg_anim_death`
Добавлено в [mergetime]1092332152[/mergetime] <small>Добавлено в 17:26</small> Шпаргалка Айвана по скриптам Код дело в том, что при object oJamp = GetTransitionTarget(OBJECT_SELF); if (GetIsPC(oPC)) { AssignCommand(oPC, JumpToObject(oJamp)); НЕ ВСЕГДА МОЖЕТ ПРОИЗОЙТИ СКАЧОК надо делать так: string sJamp = GetTag(GetTransitionTarget(OBJECT_SELF)); .... JumpToObject(GetObjectByTag(sJamp)); ************************************************ tag = mask + INtToString(Number); mask = "WP_NPCTAG_" Number = 1..12 ************************************************* DestroyObject(GetItemInSlot(INVENTORY_SLOT_CARMOR,oPC)); ************************************************* > ЖУРНАЛЬНЫЕ ЗАПИСИ ПО КВЕСТОВЫМ ПРЕДМЕТАМ object oItem=GetModuleItemAcquired(); if(GetTag(oItem)=="SEAMAGAZIN_PIRAT") { if(GetLocalInt(oItem,"DO_ONCE")!=1 && GetItemPossessor(oItem) == GetFirstPC()) { AddJournalQuestEntry("ANDRA_PIRATES", 4, GetFirstPC()); SetLocalInt(oItem,"DO_ONCE",1); } } ***************************************************** > Увеличение числа переменной на единицу за раз. SetLocalInt(объект_1, "переменная_1", GetLocalInt(объект_1, "переменная_1") + 1); На кого ставится переменная? объект_1 = OBJECT_SELF - если на сам триггер или GetEnteringObject() - если на наступившего ******************************** > Рандом на начало строки int StartingConditional() { // Add the randomness if(Random(100) >= 15) return FALSE; return TRUE; } ************************************************* > Дестрой нескольких объектов по одинаковому тэгу. при СreateObject укажи новый тэг "new_tag" а потом, когда условие соблюдено, делаешь так: void main() { int i=0; object oScelet = GetObjectByTag("new_tag",i); while (oScelet!=OBJECT_INVALID) { DestroyObject(oScelet); i++; oScelet = GetObjectByTag("new_tag",i) } } **************************************************** > Проверка шмотки на игроке if (GetTag(GetItemInSlot(INVENTORY_SLOT_CARMOUR,GetPCSpeaker())=="тэг нужной шмотки") >*************************************** > ВХОД в локацию по проверке переменной object oPC = GetEnteringObject(); object oDoor = GetObjectByTag("тэг_двери1"); // до затопления if (!GetIsPC(oPC)) return; if (GetLocalInt(oPC, "FLOODED") == 1) oDoor = GetObjectByTag("тэг_двери2"); // после затопления AssignCommand(oDoor, ActionOpenDoor(oDoor)); AssignCommand(oPC, JumpToObject(oDoor)); >*************************************** // Скрипт может стоять НА PC в диалоге!!! void main() { object oPC = GetPCSpeaker(); object oItem = GetItemPossessedBy(oPC, "ZAVTRAK"); if (GetTag(oItem) == "ZAVTRAK") { SpeakString("Смотри не лопни!"); DestroyObject(oItem); // УБИВАЕТ ПРЕДМЕТ } else { SpeakString("Ой! Да где же оно?"); } } >****************************************** // Скрипт должен стоять НА НЕПИСЕ!!! void main() { object oPC = GetPCSpeaker(); object oItem = GetObjectByTag("ZAVTRAK"); if (GetTag(GetItemPossessedBy(oPC, "ZAVTRAK")) == "ZAVTRAK") { SpeakString("Смотри не лопни!"); ActionGiveItem(oItem, oPC); // ОТДАЕТ ПРЕДМЕТ } else { SpeakString("Ой! Да где же оно?"); } } >****************************************** void main() { object oPC = GetPCSpeaker(); object oItem = GetItemPossessedBy(oPC, "MINERS_PISMO"); object oNos = GetObjectByTag("SUPER_NOS_IN_MARKET"); AssignCommand (oNos, JumpToObject(GetObjectByTag("POISON_SUPER_NOS"))); if (GetTag(oItem) == "MINERS_PISMO") { DestroyObject(oItem); // УБИВАЕТ ПРЕДМЕТ SpeakString("Отлично, Грэмм у нас в руках!"); } } >****************************************** > Дает вещь из палитры, а не из инвентаря object oPC = GetFirstPC(); CreateItemOnObject("ResRef-вещи", oPC, число); Последний параметр нужен только если ты даешь типа стрел или пуль... короче количество в ячейке инвентаря. Само собой 2 меча ты дать таким образом не сможешь :)... >****************************************** <small>Добавлено в 17:29</small> автор Valleo Маленький скриптик для реализации болота:
|
||||||||
![]()
Сообщение
#29
|
|||
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Вот простой скриптик, ставится на строку НПС и во время длинного расказа, происходит, как бы временной интервал с потухшим экраном. Что то навроде, как в кино: "Прошло два года..." :?)
|
||
![]()
Сообщение
#30
|
|||||||
Level 5 ![]() ![]() Класс: Некромант Характер: Neutral Evil Раса: Нежить NWN: Скриптинг [PW] ![]() |
Благодаря советам вышестоящих модераторов в другом топике, я таки дописал респаунинг NPC по событию их смерти, без использования энкаунтеров. ;) Это может кому-нибудь пригодиться, т.к. нет проблемы с "пересечением" области энкаунтера игроком и т.п., NPC может появится прямо перед носом игрока. Для работы скрипта нам потребуется создать плейс с тэгом PLC_AUTORESPAWN. Любой плейс, он нужен лишь для того, чтобы на него вешать DelayCommand. Лично я ставил этот плейс в "системную" локу 8x8, которая только для подобных целей и была создана. У меня не получилось повесить DelayCommand на вейпоинт, иначе бы плейс создавать и не потребовалось бы. ;) Создаем новый файл скрипта, который будет инклюдится к событию смерти:
Далее ставим на карту требуемого NPC, в скрипте OnDeath или UserDefined на событие 1007 (главное чтобы во время смерти срабатывало) в самом начале вставляем:
И где-нибудь ближе к концу скрипта смерти вставляем:
Настраивается это всё просто. Заходим в Variables созданного NPC и добавляем переменные (все типа int): respawn_time - Количество секунд, через которое появится новый NPC. respawn_max - Необязательный параметр. Максимальное количество респаунов NPC. respawn_animation - Необязательный параметр. Проигрывать ли анимацию во время создания NPC [0/1]. Можно настраивать Variables прямо в синьке NPC, на эффект это не влияет. Место где появится новый NPC определяется путём выставления вэйпоинтов с названием типа "WPR_"+ тэг_умершего_NPC. Если в начале тэга NPC стоит "NPC_", то эти четыре символа отрежутся. Всё. При желании можно можно сохранять любые параметры умирающего NPC, даже случайный лут скопировать с трупа и загрузить в слудеющий респаун такой же. В общем всё что угодно. Надеюсь кому-нибудь пригодится. ;) P.S. Забыл о вэйпоинтах написать... Исправлено. |
||||||
![]()
Сообщение
#31
|
|||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Этот скрипт можно ставить на факел, фонарь, или луч света. Например факелы и фонари можно расставить по городу. А лучи света или магические брызги - к фонтанам. И когда в городе наступит ночь - зажгуться факелы и будут освещать территорию, а у фонтанов заработает подсветка. Скрипт ставит OnHB плейса. Не забудьте снять галочку Static.
Сообщение отредактировал Аваддон - Nov 9 2004, 22:36 |
||
![]()
Сообщение
#32
|
|||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Скрипт получения уровня по алайменту написал [MoF]Darth_Nick. Там он использовал визуальные эффекты для разных алайментов. Я лишь добавил немного своего в этот скрипт. И так, получение лвла по алайменту а-ля горец :D
Сообщение отредактировал Twin - Jan 8 2005, 06:00 |
||
![]() ![]()
Сообщение
#33
|
|||||||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Ой, чето зачастил я со скриптами:) Но надеюсь пригодится :xz: Этот скрипт на отдых. Для начала разберемся с условиями отдыха: 1. У игрока должна быть кроватка(подстилка) aka бэдролл 2. Так же должна быть в наличие еда. 3. Расстояние от разведенного костра должно быть не более 3х метров. 4. Если игрок спит в тяжелых доспехах (более 20 lbs) то у него есть риск заболеть, вредно ведь для здоровьица геройского. Но спасы рулят;) А если не рулят то придется переодеваться в пижамку (гы-гы :D ) Чтобы развести костер надо: 1. Найти дрова (сами запихнете их в какое нить дупло и т.п.) 2. Разложить дрова на земле. 3. Пожечь факелом. 4. Костер горит 180 сек (можете сами регулировать) 5. Если вы используете выложенные дрвоа без факела - игрок их поднимает, если с факелом - разводит костер. Теперь с предметами: Item'ы: Подстилка - тэг [bedroll] Еда - тэг [food] Дрова - тэг [wood] Placeable'ы: Костер - синька [camp] Подстилка (внешне выглядит как раскатаная из рулона ткань) - синька [place_bedroll] Дрова (внешне выглядит как куча дров aka woodpile :D) - синька [place_wood] . P.S. Синька это Blueprint ResRef Со всех плейсов снимите галочку Static! А плейс Дрова должен быть Используемый. Поехали... Скрипт ставится на OnPlayerRest
Скрипт ставится на UnAcquireItem
Скрипт ставится на On Used плейса дров
Скрипт ставится на On Heartbeat костра
Эээ вроде ничего не напутал. Если что не получается - скажите, я поправлю. Сообщение отредактировал Аваддон - Nov 13 2004, 16:51 |
||||||||
![]()
Сообщение
#34
|
|||
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Источник: Валут. Нашел: Авадон.
|
||
![]() ![]()
Сообщение
#35
|
|||||
Level 10 ![]() ![]() ![]() Класс: Воин Характер: Lawful Neutral Раса: Человек NWN: Скриптинг [PW] ![]() |
Я тут написал пару скриптиков. Они для сервера использующего APS/NWNX 2 + MySQL. Естественно писал для своих нужд, но может кому и пригодится. Главная его цель - информативность. Если вы умеете работатьс MySQL то польза от него будет большая. Он регистрирует персонажей. Потом просмтривая БД вы можете узнать сколько: -Игроков зарегистрированно -ДМов зарегистрированно -Персонажей на одном аккаунте -Персонажей на одном IP -Персонажей на одном CD-Key -Аккаунтов на одном IP -Аккаунтов на одном CD-Key -Сколько персонажей определенной расы на шарде -Сколько персонажей определенной под-расы на шарде -Сколько персонажей поклоняются определнному одинаковому божеству, и поклоняются ли вообще -Сколько персонажей мужских, а сколько женских. -Дату создания персонажа. -ну и еще что-нибудь если забыл. Да, если кто нибудь напишет PHP форму для статистики читающую из этой БД - это будет замечательно - тогда срочно свяжитесь со мной:) Скрипты: Скрипт aps_include поставляется в erf архиве вместе с APS/NWNX 2. Скрипт на OnModuleLoad:
Скрипт на OnClientEnter:
Сообщение отредактировал Аваддон - Nov 18 2004, 07:26 |
||||
![]() ![]() |
Текстовая версия | Сейчас: 7th July 2025 - 10:54 |