На вскидку, что нашел...
Neverwinter Script Source |
if (GetLastPerceptionSeen()) SetLocalInt(OBJECT_SELF, "Whisper", 1) // Set else if (GetLastPerceptionVanished()) SetLocalInt(OBJECT_SELF, "Whisper", 0) } else if (nEvent == 1001) { if (GetLocalInt(OBJECT_SELF, "Whisper")) // Второая скобка |
Chimeric
Oct 12 2005, 03:57
Вот весь скрипт целиком в настоящем виде с учетом второй скобки. Понятия не исею, почему теперь-то не компилируется. Может, стоит скопировать его и попробовать в редакторе? Вдруг это у меня файл глючит, был же этот внезапный фокус с нечитаемой "р".
Neverwinter Script Source |
void main() { string ya = GetName(GetWaypointByTag("ya")); string yac = GetName(GetWaypointByTag("yac")); int nEvent = GetUserDefinedEventNumber(); if (nEvent == 1002) {
if (GetLastPerceptionSeen()) GetLocalInt(OBJECT_SELF, "Whisper", 1); else if (GetLastPerceptionVanished()) GetLocalInt(OBJECT_SELF, "Whisper", 0); } else if (nEvent == 1001) { if (GetLocalInt(OBJECT_SELF, "Whisper")) { int iSpk = GetLocalInt(OBJECT_SELF, "chloe"); switch (iSpk) { case 0: SpeakString("Ìåðçàâåö! Îí ïðåäïî÷åë ïîëó÷èòü íîæ â ñïèíó, ÷åì ïîöåëîâàòü ìåí"+ya+"."); break; case 1: SpeakString("Ñòîëüêî ëåò âîêðóã äà îêîëî."); break; case 2: SpeakString("Êàëëèñòà ãîí"+ya+"ëà íàñ îáîèõ áåç êîíöà çà ïðîäóêòàìè íà Íîâûé ðûíîê, êàê áû îíè ñ Ïîëèêðàòîì óïðàâèëèñü â ëàâêå áåç íàñ?"); break; case 3: SpeakString("Åìó ïðèõîäèëîñü ÷èòàòü óðûâêàìè."); break; case 4: SpeakString(""+yac+" âñå-òàêè äîáèëàñü îò íåãî êîëüöà è êë"+ya+"òâû â Õðàìå Êðîéëè. Êàê ðàç çà òðè äí"+ya+" äî ýòîãî óæàñà."); break; case 5: SpeakString(""+yac+" ñêàçàëà åìó, ÷òî õî÷ó ñíà÷àëà ìàëü÷èêà, à ïîòîì äåâî÷êó."); break;
default: iSpk = -1;
break; } ; SetLocalInt(OBJECT_SELF, "chloe", iSpk+1); } } }
} |
-fenix-
Oct 12 2005, 08:52
Chimeric, учись чистоскриптописанию, а то понять и разобрать сложно
Сравни, правдо нагляднее?
Neverwinter Script Source |
void main() { string ya = GetName(GetWaypointByTag("ya")); string yac = GetName(GetWaypointByTag("yac")); int nEvent = GetUserDefinedEventNumber();
if (nEvent == 1002) {
if (GetLastPerceptionSeen()) GetLocalInt(OBJECT_SELF, "Whisper");//тут у тебя Get использовался, как Set else if (GetLastPerceptionVanished()) GetLocalInt(OBJECT_SELF, "Whisper");//тут у тебя Get использовался, как Set } else if (nEvent == 1001) { if (GetLocalInt(OBJECT_SELF, "Whisper")) { int iSpk = GetLocalInt(OBJECT_SELF, "chloe");
switch (iSpk) { case 0: SpeakString(""); break; case 1: SpeakString(""); break; case 2: SpeakString(""); break; case 3: SpeakString(""); break; case 4: SpeakString(""); break; case 5: SpeakString(""); break; default: iSpk = -1; break; } SetLocalInt(OBJECT_SELF, "chloe", iSpk+1); } } } |
У тебя ошибки в стрингах, со скобками, приведи нормальную строку(не на каракулях) - можно скопировать скрипт в блокнот, а потом на форум.
Еще ты в скобках запутался.
Chimeric
Oct 12 2005, 11:21
Теперь уже нельзя каракули расшифровать, они только в том скрипте и остались. Скопирую в блокнот - будет то же самое. Если твой скрипт без ошибок, то сейчас испытаю. Кстати, я правильно сделал, что отдельно прописал заглавную Я?
(Блин, ну я фанат. Плэйсеблы таскал последние 8 часов подряд.

Время на часах - 4:23 утра.

)
Добавлено в [mergetime]1129107515[/mergetime] Проверил твой вариант, заменив реплики просто на 1, 2 и 3. Компилируется, но не работает.
Если хочешь скопировать с тулсета русский текст, переключи раскладку на русский и тогда скопируется не твои крякозябра и нормальный, пацанский базар.
Добавлено в [mergetime]1129107970[/mergetime] QUOTE (Chimeric @ Oct 12 2005, 14:21) |
Проверил твой вариант, заменив реплики просто на 1, 2 и 3. Компилируется, но не работает. |
А ты мой верхний пост смотрел? Если не видишь разницы то закинь скриптинг, сядь мапить. Я же указал ошибку и пометил в скобках.
Chimeric
Oct 13 2005, 01:37
Вижу я, нечего грубить. Как будто не ясно, что я прошу о помощи только потому, что сам не разбираюсь в скриптах и не особенно горю желанием разбираться. Скрипты - это логика, а логика и математика мне попендикулярны. От фигурных скобок хочется лечь на землю. Диалоги - другое дело, маппинг тоже ничего, но я не могу заняться только им, потому что должен доделать модуль, а работаю над ним сам, один, это временный и проходной проект. Для большинства вещей достаточно сиреневого генератора, кое-какие функции я знаю, но часто торможу, поэтому и спрашиваю совета. Зато вам, мастерам, это ничего не стоит, и я вам благодарен. К тому же другие уже указали на Set/Get, и я услышал.
Да, я исправил это дело, где подписано, и заменил фразы на обычные цифры, чтобы безо всяких там букв "я", каракулей и прочего. Пусть хотя бы простые номера бормочут. Результат: скрипт компилируется, а непись молчит.
измучили гуманитария уже...

а вот некоторым товарищам, которые пропагандируют использование OnUserDefined слота и не упоминают про то, что его надо "активизировать", все таки надо дать коленом, надо...

в скрипте OnSpawn раскомментируй эти строки:
Neverwinter Script Source |
... //SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT); //SetSpawnInCondition(NW_FLAG_PERCIEVE_EVENT); ... |
правильный(вроде) скрипт, который теперь должен начать шевелиться в OnUserDefined:
Neverwinter Script Source |
void main() { string ya = GetName(GetWaypointByTag("ya")); // большая Я не вызывает ошибок. //string yac = GetName(GetWaypointByTag("yac")); int nEvent = GetUserDefinedEventNumber(); if (nEvent == EVENT_PERCEIVE) // EVENT_PERCEIVE { object oPerceived = GetLastPerceived(); if (GetLastPerceptionSeen() && GetIsPC(oPerceived)) SetLocalObject(OBJECT_SELF, "PC", oPerceived); } else if (nEvent == EVENT_HEARTBEAT) // EVENT_HEARTBEAT { object oPC = GetLocalObject(OBJECT_SELF, "PC"); if (oPC == OBJECT_INVALID) return; if (!GetObjectSeen(oPC)) { DeleteLocalObject(OBJECT_SELF, "PC"); return; } int iSpk = GetLocalInt(OBJECT_SELF, "chloe"); switch (iSpk) { case 0: SpeakString(""); break; case 1: SpeakString(""); break; // ... default: iSpk = -1; break; } SetLocalInt(OBJECT_SELF, "chloe", iSpk+1); } } |
Chimeric
Oct 13 2005, 05:41
Гуманитарий гуманно гутарит. Пробую твой вариант. А вот то, что я вымучил с алисиной помощью во втором случае, с веревкой. Кое-что запускает, удары, тычки, но только никого не телепортирует куда нужно, даже если ловкость позволяет, и звука не издает. Короче:
Neverwinter Script Source |
void main() { string ya = GetName(GetWaypointByTag("ya")); object oPC = GetLastUsedBy(); object oTarget = GetWaypointByTag("winter1");
if (!GetIsPC(oPC)) return;
if
(GetAbilityScore(oPC, ABILITY_DEXTERITY)>= 15) {
location lTarget = GetLocation(oTarget); if (GetAreaFromLocation(lTarget)==OBJECT_INVALID) return;
oTarget=GetWaypointByTag("winter1"); AssignCommand(oPC, ClearAllActions());
AssignCommand(oPC, ActionJumpToLocation(lTarget)); }
else
FadeToBlack(oPC, FADE_SPEED_MEDIUM); DelayCommand(4.0, ActionJumpToObject(GetWaypointByTag("ropefall"))); DelayCommand(4.0, SetCameraHeight(oPC, 6.0));
effect eEffect = EffectDamage(3, DAMAGE_TYPE_BLUDGEONING, DAMAGE_POWER_NORMAL); DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC)); eEffect = EffectDazed(); DelayCommand(4.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oPC, 30.0f)); eEffect = EffectKnockdown(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oPC, 10.0f);
if (GetGender(oPC)==GENDER_MALE) AssignCommand(oPC, PlaySound("vs_nbeggam2_hit2")); else { AssignCommand(oPC, PlaySound("vs_nbeggam2_hit2")); }
DelayCommand(6.0, FadeFromBlack(oPC, FADE_SPEED_MEDIUM)); DelayCommand(7.0, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), GetLocation(oPC)));
DelayCommand(8.0, FloatingTextStringOnCreature("1", oPC)); DelayCommand(10.0, FloatingTextStringOnCreature("2", oPC));
} |
В-общем, ловкачи телепортируются куда надо, в winter1, а для кривопалых должно сначала наступать затемнение на несколько секунд, потом (пока темно) крик - разный, в принципе, для мужчин и женщин - и тогда же KnockDown, Daze, 3 очка урона и телепорт на соседнюю точку ropefall. Все это в течение 5 или около того темных секунд. Потом свет, экран сотрясается и выплывают с небольшим интервалом два сообщения над головой.
Еще вот что - почему вот этот скрипт полностью обездвиживает персонажа? Поставил на вход в зону и ни с места сойти не могу, ни заклинания наложить, ни мечом махнуть, вообще ноль.
Neverwinter Script Source |
void main() {
object oPC = GetEnteringObject(); string ya = GetName(GetWaypointByTag("ya"));
if (!GetIsPC(oPC)) return;
SetCameraFacing(270.0, 3.0, 20.0, CAMERA_TRANSITION_TYPE_SNAP);
if (GetLocalInt(oPC, "bedroomfirstenter")== 0) {
SetLocalInt(oPC, "bedroomfirstenter", 1);
object oTarget; oTarget = oPC;
effect eEffect; eEffect = EffectFrightened();
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 180.0f);
eEffect = EffectMovementSpeedDecrease(60);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eEffect, oTarget, 180.0f);
DelayCommand(3.0, FloatingTextStringOnCreature("Где это я?", oPC));
DelayCommand(5.0, FloatingTextStringOnCreature("Как здесь страшно и т.п.", oPC));
DelayCommand(7.0, FloatingTextStringOnCreature("Надо выбираться!", oPC));
} } |
Добавлено в 06:07 Проверил. "Раскомментировал" те строчки, вставил твой скрипт в OnUsedDefined. Не работает-с.
Ой, я не могу.

Сколько уже? Пять дней подряд лучшие Мастера Скриптов бьются над этой задачкой и никак не могут ее решить. Как говорится, были выдвинуты различные теории.

Нет, я очень всем благодарен за усилия, серьёзно, народ. Хотя я ничего и не добился за эти дни, зато начал какие-то азы скриптовые усваивать. Но неужели же никто, никогда и ни в одном модуле не делал NPC, бубнящих фразы через интервал времени? Куда уж зауряднее идея! Я еще в Торменте помню таутов, рекламировавших свои услуги, и проституток, и уличного поэта-декламатора, и бог знает кого еще. А то ведь была Infinity Engine, я немножко её помню изнутри, колупался в скриптах в свое время, потом забыл и забросил... И там все было чуть ли не один к одному, только возможностей, понятно, меньше (с другой стороны, как помнится, что-то было доступно там, чего нельзя здесь - диалоги на расстоянии, например). Короче, при таком сходстве мне остаётся только удивляться.
QUOTE (Chimeric @ Oct 13 2005, 06:41) |
Ой, я не могу. Сколько уже? Пять дней подряд лучшие Мастера Скриптов бьются над этой задачкой и никак не могут ее решить. Как говорится, были выдвинуты различные теории. Нет, я очень всем благодарен за усилия, серьёзно, народ. Хотя я ничего и не добился за эти дни, зато начал какие-то азы скриптовые усваивать. Но неужели же никто, никогда и ни в одном модуле не делал NPC, бубнящих фразы через интервал времени? |
Тебе тут помогут со сложным вопросом, на который _можно_ дать ответ. Делать за тебя всю работу, причем не зная чего же ты хочешь, мало кто станет. А задавая абстрактные вопросы ты получишь абстрактные ответы.
ps. учи мат.часть
QUOTE (Chimeric @ Oct 13 2005, 08:41) |
Проверил. "Раскомментировал" те строчки, вставил твой скрипт в OnUsedDefined. Не работает-с. |
То ли лыжи не едут... То ли одно из двух.

QUOTE (Chimeric @ Oct 13 2005, 08:41) |
Ой, я не могу. Сколько уже? Пять дней подряд лучшие Мастера Скриптов бьются над этой задачкой и никак не могут ее решить. Как говорится, были выдвинуты различные теории. Нет, я очень всем благодарен за усилия, серьёзно, народ. Хотя я ничего и не добился за эти дни, зато начал какие-то азы скриптовые усваивать. Но неужели же никто, никогда и ни в одном модуле не делал NPC, бубнящих фразы через интервал времени? |
Это задачка для первого класса. И многие надеялись, что ты допетришь сам, в почти готовом скрипте, что тебе дали. Надо всего-то понять присвоение переменных и скобки позакрывать было. Сказал бы сразу, я туп. Напишите мне готовый код и все. Вот тебе код...
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: OnUserDefined //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 13.10.2005 //::///////////////////////////////////////////// void main() { int nEvent = GetUserDefinedEventNumber(); if (GetArea(OBJECT_SELF)!=GetArea(GetFirstPC())) return; if (GetIsDead(OBJECT_SELF)==TRUE) {return;} // Если он помер, то пусть молчит
/* Открой спавн скрипт объекта и разкомментируй эту строку: SetSpawnInCondition(NW_FLAG_HEARTBEAT_EVENT) */
if (nEvent == EVENT_HEARTBEAT) // Сигнал поступает с HeartBeat слота. { //------------------------------------------------------------------------------ if (GetLocalInt(OBJECT_SELF, "SPEAK") == FALSE) { if (GetIsInCombat() || IsInConversation(OBJECT_SELF) || GetLocalInt(OBJECT_SELF, "SPEAK")) { return; } SetLocalInt(OBJECT_SELF, "SPEAK", TRUE); ClearAllActions();
/* f - Промежутки между фразами. Учитывай что хертбит срабатывает раз в шесть секунд. Соотвественно к цифре задержки прибавляй в уме 6 сек */ float f = IntToFloat(Random(30)); // Тут выпадает число из 30.
switch(Random(9)+1) // Генерирует случайную фразу { case 1: {DelayCommand(f, SpeakString("Фраза #1")); break;} case 2: {DelayCommand(f, SpeakString("Фраза #2")); break;} case 3: {DelayCommand(f, SpeakString("Фраза #3")); break;} case 4: {DelayCommand(f, SpeakString("Фраза #4")); break;} case 5: {DelayCommand(f, SpeakString("Фраза #5")); break;} case 6: {DelayCommand(f, SpeakString("Фраза #6")); break;} case 7: {DelayCommand(f, SpeakString("Фраза #7")); break;} case 8: {DelayCommand(f, SpeakString("Фраза #8")); break;} case 9: {DelayCommand(f, SpeakString("Фраза #9")); break;} case 10: {DelayCommand(f, SpeakString("Фраза #10")); break;} } DelayCommand(f, SetLocalInt(OBJECT_SELF, "SPEAK", FALSE)); } } //------------------------------------------------------------------------------ } |
Добавлено в [mergetime]1129197871[/mergetime]
QUOTE (Chimeric @ Oct 13 2005, 04:37) |
Как будто не ясно, что я прошу о помощи только потому, что сам не разбираюсь в скриптах и не особенно горю желанием разбираться. |

Все просто выстроились в очередь после таких строк и мечтают помочь тебе. Скрипт форума не успевает обрабатывать запросы к базе, все пишут тебе скрипты.
Белатрис
Oct 13 2005, 13:10
У меня есть диалог в котором ты выбираешь что даст тебе официантка: Вино или Эль, я взял готовые скрипты: Берет Эль и отдает 250 золота, Берет Вино платит 200 золота. Но кагда начинается диалог то после вопроса что будешь пить диалог обрывается

, что делать
-fenix-
Oct 13 2005, 13:25
QUOTE (Белатрис @ Oct 13 2005, 14:10) |
У меня есть диалог в котором ты выбираешь что даст тебе официантка: Вино или Эль, я взял готовые скрипты: Берет Эль и отдает 250 золота, Берет Вино платит 200 золота. Но кагда начинается диалог то после вопроса что будешь пить диалог обрывается black eye.gif , что делать |
Наверное у тебя на следующих ветках стоит условие появления?!
Chimeric
Oct 13 2005, 23:02
QUOTE (Aiwan @ Oct 13 2005, 12:59) |
Все просто выстроились в очередь после таких строк и мечтают помочь тебе. Скрипт форума не успевает обрабатывать запросы к базе, все пишут тебе скрипты. |
И что тут такого? Если у меня барахлит машина и я могу позволить себе отвезти ее в ремонтный центр к специалистам, то я так и делаю. Я не надеваю промасленную робу и не забираюсь под днище с гаечным ключом. Отчего же? Уж конечно, помытарившись вволю, я бы как следует освоил всю механику и почувствовал бы себя куда умнее. Но меня не интересует такого рода "умность", и по той же самой причине ты (пример наугад) не бежишь изучать культуры Полинезии или когнитивную нейропсихологию. Мог бы, но нет дела. Точно так же и я стараюсь обходить стороной все эти переменные и константы двух типов. Знать все не просто нельзя, это никому сто лет и не нужно. И я бы не стал и беспокоиться со скриптами, тем более о чем-то просить тут на форуме, если бы без этого было возможно построить модуль. Как будто мне самому больше нечем заняться, чем переписывать их самому без конца и отвлекать других. У меня, между прочим, два доклада на носу, так что комментарии про тупость оставь при себе.
Aiwan: Если у тебя барахлит машина, ты идешь в центр к спецам ПЛАТИШЬ деньги и тебе делают. Можешь попросить соседа механика, он тебе ПОДСКАЖЕТ какой болт открутить. Но никто не будет за тебя делать твою работу. Даже если ты прийдешь в мастерскую и скажешь: "Е-мае! Пятый день стою у ворот и никто не может мою машину сделать, что бы она поехала!" Если человек говорит ПОМОГИТЕ с написанием скрипта, это одно. Если он говорит НАПИШИТЕ мне скрипт - это совсем другое. Ты попытался сам написать, у тебя не вышло. Ты решил наехать на всех скриптеров в посте, с иронией, что они все дураки. Если уж _каа_ не выдержал твоей наглости, то что говорить про остальных... Тебе тут никто ничего не должен. Хочешь помощи попросить, попроси по человечески. Если обостренное самолюбие не дает покоя, то займись тем, в чем ты специалист. Даже если бы ты в нормальной форме написал, мол ребята, я совсем не умею скриптить и мне нужен РАБОЧИЙ код для конкурса. Напишите! Написали бы, без вопросов. Я вот сел и не смотря на твой пост написал тебе код, хотя Думбо уже дал тебе ссылку НА РАБОЧИЙ СКРИПТ фраз (смотри ниже).
OnHeartBeat:
Neverwinter Script Source |
void main() { string sStr = ""; switch (Random(4)) { case 0: sStr = "Просто как пирог из гоблинов"; break; case 1: sStr = "Ну что гады, еше хотите"; break; //... } if (sStr != "") ActionSpeakString(sStr); } |
Diamond
Oct 14 2005, 06:40
Здрасьте все. У меня такой вопрос: есть ветка в диалоге, по которой PC садиться на диван, а после тоже по диалогу PC должен встать с него. Так вот садиться то он нормально, но вставать по скрипту отказывается, только принудительно по клику... Подскажите что можно сделать плз
Chimeric
Oct 14 2005, 06:46
Да я пробовал уже код dumbo. Что-то где-то еще не так, видно, может, какие-то другие скрипты не в порядке. Но я сейчас буду тестировать последние предложенные варианты, может, твой сработает. Что же до того, что мне никто ничего не должен, то это и так понятно, на этом вообще построен интернет с его анонимностью и группировкам по интересам. Никто не обязяан на этом форуме помогать другим, наши пути-дороги пересеклись вполне случайно, думаю, ни к чему отдельно заострять на этом внимание. Если бы мастер не получал какого-то удовольствия от помощи и добрых дел, он бы ими и не занимался, поэтому я вежливо просил и прошу о помощи, а не кидаюсь в ноги, раз такие отношения "ведущий-ведомый" приятны обеим сторонам. Если неприятны, то нечего и отвечать. Но коли уж кто-то решается и говорит "вот тебе ответ", то обнадеживает ищущего помощи человека, и хотя это по прежнему свободное сотрудничество, у другой стороны есть теперь законное право высказать недовольство, если ее подвели. Взялся за гуж - не говори, что не дюж, и так далее. Понятно, вообще надо радоваться, что помогают, с другой стороны, лично у меня есть такое правило: если я не совершенно уверен, что знаю какой-то ответ, то сижу тихо. А факт тот, что пока все варианты были с глюками. Если окажется, что дело не в скриптах или в скриптах, но не в этих, и, короче, что я сам кругом виноват, то я принесу извинения всему коллективу.
Tiger Greyhawk
Oct 14 2005, 07:00
DiamondЯ думаю, спасет ClearAllAction(); тебя. Но на будущее: наверное хочется текст скрипта видеть.
Chimeric
QUOTE (Tiger Greyhawk @ Oct 11 2005, 08:53) |
+ называй лучше переменные осмысленно. А то у тебя счас все переменные типа effect названы eEffect переменные типа Int - iInt и т.п. Оно, конечно, может работать нормально, но запутаться проще простого. Ты же меняешь в процессе значение переменной: |
осмысленно и уникально.
Chimeric
Oct 14 2005, 07:39
Проверено - вариант dumbo работает! Не знаю, в чем было дело раньше, видимо, я в самом деле что-то недоглядел. Выходит, это моя вина, и виноват в потере времени тоже я. Принощу свои извинения Aiwan, dumbo, fenix, kaa, AliceDiren и всем прочим.
Chimeric, МОЙ СКРИПТ РАБОЧЧИЙ. Я его тестил специально. Но без СПАВН скрипта настроенного он не будет пахать.
QUOTE (Chimeric @ Oct 14 2005, 10:39) |
Принощу свои извинения |

Говори что надо конкоретно, напишем.
п.с. Вообще, когда-то была идея отдельной темы, где конкурсанты ппросят скрипты им для конкурса, типа как ты. Так что, можешь создать ее и постить там. Думаю конкурс не последний...
Diamond
Oct 14 2005, 11:11
Tiger Greyhawk Пасиб (ClearAllAction) помог
Chimeric
Oct 14 2005, 19:56
Да я не говорил, что твой скрипт не работает, просто у dumbo попроще, есть и еще один вариант. Тему сейчас создам.
А пока - почему же все-таки глючит тот скрипт (выше) с bedroomenter? Паралич устраивает персонажу.
AliceDiren
Oct 14 2005, 21:19
QUOTE |
почему же все-таки глючит тот скрипт (выше) с bedroomenter? Паралич устраивает персонажу. |
Из-за эффекта страха. Используй какой-нибудь другой эффект. EffectDaze(), например.
Chimeric
Oct 15 2005, 10:45
Что же, страх всегда глючит?
-fenix-
Oct 15 2005, 10:55
QUOTE (Chimeric @ Oct 15 2005, 11:45) |
Что же, страх всегда глючит? |
У него такие последствия!
Когда тебя челы пугают, то ты от них забеваешься в угол и не можешь ни чего делать. А тут эффект на вход в локу ставется, вот перс и дрожит в начале не шевелится
Chimeric
Oct 15 2005, 12:07
Да-а... Так это парализующий ужас, что ли? Я-то думал, это что-то вроде настольного эффекта Shaken или там Nauseated от гастов. Игра вообще упразднила все эти тонкости.
Доброе время суток! Господа, имеется следующая проблема:
Есть некая локация. Рисую вокруг стартовой точки триггер, окружающий ее так, чтобы игрок не мог не войти в триггер. На ОнЭнтер вешаю скрипт разговора с персонажем по имени Нелор. Скрипт работает, диалог запускается. В диалоге есть возможность послать этого Нелора в далекое путешествие в страну гениталий, после чего он и все неписи, что находятся на локации, очень не любят игрока и стараются его убить. При обычном разговоре это работает, но когда диалог вызывается скриптом, повешенным на триггер (принутельно), то он просто на этой точке обрывается, игра выдает сообщение об ошибке и пишет чего-то про деление на ноль с упоминанием названия скрипта. И никто никого не атакует. У меня была мысль, что это вызвано тем, что персонаж при разговоре все еще стоит в поле триггера и игра пытается опять завести разговор одновременно с его окончанием. Что это может быть?
QUOTE (L33t @ Oct 15 2005, 23:00) |
У меня была мысль, что это вызвано тем, что персонаж при разговоре все еще стоит в поле триггера и игра пытается опять завести разговор одновременно с его окончанием. |
нет. Если игрок не шевелится, то нет.
А вот если кто-то еще на триггер войдет, а скрипт написан не сильно умно, то может случиться проблема, но не та, что ты описал.
Вообще ставя вопрос, выклыдывай исходники. Те скрипт триггера и скрипт посылания непися далеко и на долго.
NedWarN
Oct 16 2005, 16:56
Очень нужен скрипт(Именно Скрипт), чтобы в определённой локации, была именно ночь независимо от времени игры. Сам немогу обездолен помогите.
QUOTE (NedWarN @ Oct 16 2005, 17:56) |
Очень нужен скрипт(Именно Скрипт), чтобы в определённой локации, была именно ночь независимо от времени игры. Сам немогу обездолен помогите. |
В настройках локации.. в визуальных эффектах выбираешь "всегда ночь"...
QUOTE (NedWarN @ Oct 16 2005, 17:56) |
Очень нужен скрипт(Именно Скрипт), чтобы в определённой локации, была именно ночь независимо от времени игры. Сам немогу обездолен помогите. |
Если только скриптом - то смотри на функцию
Neverwinter Script Source |
void DayToNight( object oPlayer, float fTransitionTime = 0.0f ); |
и обратную к ней
Neverwinter Script Source |
void NightToDay( object oPlayer, float fTransitionTime = 0.0f ); |
На этой локации проверяй локальное время, если ночь - ничего не делай, если не ночь - вызывай DayToNight(). При входе на локацию нужно принудительно проверять, при выходе - принудительно снимать.
Функция действует на одного игрока и делает не "реальную" ночь, а просто потемнение экрана до уровня ночного освещения.
Может я не по теме. Но по-моему 66 страниц для темы это много. Нельзя сделать как с вопросами новичков?
LEX: к Айву.
NedWarN
Oct 17 2005, 17:35
_kaa_
Я так и делал, но мне нужна реальная ночь! для проверки зомбиков.
у меня скрипт таков, зомбики нападают и нужно сдерживать абарону до рассвета, и как первые лучи солнца каснутся земли зомбям канец. и это всё с кутсценкой, где всё начинается ночью, вот такой замес, незнаю что и делать. Попробую на онСвемп проверку на день поставить, но нериально ибо у якобы меня день наступает функцией DayToNight(), может посаветуете что делать!
Ghost
Нереально ибо не сработает функция DayToNight()
AliceDiren
Oct 17 2005, 17:44
NedWarN, ИМХО попробуй функцию SetTime
Neverwinter Script Source |
// Set the time to the time specified. // - nHour should be from 0 to 23 inclusive // - nMinute should be from 0 to 59 inclusive // - nSecond should be from 0 to 59 inclusive // - nMillisecond should be from 0 to 999 inclusive // 1) Time can only be advanced forwards; attempting to set the time backwards // will result in the day advancing and then the time being set to that // specified, e.g. if the current hour is 15 and then the hour is set to 3, // the day will be advanced by 1 and the hour will be set to 3. // 2) If values larger than the max hour, minute, second or millisecond are // specified, they will be wrapped around and the overflow will be used to // advance the next field, e.g. specifying 62 hours, 250 minutes, 10 seconds // and 10 milliseconds will result in the calendar day being advanced by 2 // and the time being set to 18 hours, 10 minutes, 10 milliseconds. void SetTime(int nHour,int nMinute,int nSecond,int nMillisecond) |
И делай так, как сказал _kaa_, только устанавливай именно время.
Добавлено в [mergetime]1129567414[/mergetime] Я, наверное, непонятно написала. Я однажды делала локацию, на которой всегда была ночь. При входе на локацию запоминала время, а при выходе из неё устанавливала обратно. А на этой локации всегда устанавливала ночь. И именно с помощью SetTime.
QUOTE (Лито @ Oct 16 2005, 20:39) |
Может я не по теме. Но по-моему 66 страниц для темы это много. Нельзя сделать как с вопросами новичков? |
Реально, человек никогда не читает темы. Даже если мы разделим ее на куски, то все полезут сюда а отправят их в тему скриптов порезанную. 70% вопросов новичков разбиралсь десят раз. Но когда тема одна, то можно будет после перехода на версию форума 2.1, ВКЛЮЧАТЬ ПОИСК ПО ТЕМЕ. Так что, когда все вопросы в одном месте это лучше чем 20 тем с пометками ТОМ1, ТОМ2 бла бла. Вопрос закрыт.
Alian REXis
Oct 18 2005, 00:57
QUOTE (AliceDiren @ Oct 17 2005, 17:44) |
NedWarN, ИМХО попробуй функцию SetTime |
Если ее использовать в катсцене, где есть DelayCommand, то сцена рухнет! Но может я не прав.
AliceDiren
Oct 18 2005, 06:30
Alian REXis, конечно рухнет, но
NedWarN'у, насколько я поняла, нужна не катсцена, а постоянная ночь на локации

Поэтому я и написала про SetTime.
NedWarN
Oct 18 2005, 16:41
Спасибо я уже сам зделал.
проверкой если, сейчас день то применим DayToNight() без float, а если ночь то оставим без изменений, блин как всё просто, пасиба всем.
-fenix-
Oct 18 2005, 17:41
Не могу найти функцию для проверки типа локи: лес, город, деревня... Она вообще есть?
Я сейчас пишу тип локи в ее теге: FOREST_***, CITY_***...
AliceDiren
Oct 18 2005, 17:53
-fenix-, я нашла только функции
Neverwinter Script Source |
GetIsAreaAboveGround GetIsAreaInterior GetIsAreaNatural |
А вообще, когда делала систему отдыха, завязанную на тип локи, то писала такую функцию:
Neverwinter Script Source |
int GetAreaType(object oArea) { return GetLocalInt(oArea, "nAreaType"); } |
Правда если забудешь указать переменную, будут глюки
-fenix-
Oct 18 2005, 18:16
AliceDiren, помойму через ТАГ удобнее. Просто потом проверяешь
Neverwinter Script Source |
if (GetStringLeft(sTagArea, 7) == "FOREST_") |
AliceDiren
Oct 18 2005, 18:21
Так я же не спорю. Просто я делала так. А через таг не догадалась.
Но с другой стороны, я смогла поделить подземелья на влажные, сырые и т.п. А в таг длинную строку не запихаешь.
-fenix-, при ограничении в 16 символов такую расточительность можно позволить, только если у тебя не больше 10 лок. в крупных проектах не хиляет.
Имхо локалки рулят. А их же моно в тулсете сразу делать, так что занос инфы в тэг - анахронизм.
Daemonix
Oct 18 2005, 23:58
Пожалуйста, расскажите о скриптах смерти перса. Каким его убить, каким - возвратить на место смерти и т.д и т.п. Может я и повторяюсь, но в проштудированной мной информации я ничего об этом не нашёл, так что не сочтите за спам, пжст.
Добавлено в [mergetime]1129669153[/mergetime] Я имею в виду как воспроизвести систему храмов Тира в НвН, ну вы же понимаете, о чём я?
AliceDiren
Oct 19 2005, 07:19
Neverwinter Script Source |
object oPC = GetFirstPC(); effect eDeath = EffectDeath(); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC); |
Только зачем тебе это в системе храмов?
QUOTE |
каким - возвратить на место смерти |
Я делала так - в локальную переменную перса запоминала место его смерти, а потом возвращала на эту локацию. В модульных свойствах на OnPlayerDeath
Neverwinter Script Source |
object oPC = GetLastPlayerDied(); //... SetLocalLocation(oPC, "I_DIE_HERE", GetLocation(oPC)); //... |
А потом в разговоре с каким-нибудь священником
Neverwinter Script Source |
object oPC = GetPCSpeaker(); location lTarget = GetLocalLocation(oPC, "I_DIE_HERE"); AssignCommand(oPC, JumpToLocation(lTarget)); DeleteLocalLocation(oPC, "I_DIE_HERE"); |
Последняя строчка для того, чтобы священник не тупил и не телепортировал игрока, если он сам вернется в храм и снова попросит его переместить в место последней смерти.
*дикий порыв флудизма*
QUOTE |
Я имею в виду как воспроизвести систему храмов Тира в НвН, ну вы же понимаете, о чём я? |
а очем это ты?

нэ понимаю
*щас меня пнут*

..я
п.с. лучше возвращать назад не просто так, а за прогресирующую плату зависящую от лвлв чара
..за сервис нужно платить, да священникам тоже нужно кушать...не одним святым духом, как говориться живут...
Daemonix
Oct 20 2005, 14:22
AliceDiren Спасибо огромное. я энто и искал!
Добавлено в [mergetime]1129808014[/mergetime] А как после смерти телепортировать тело игрока куда-нить?
Archangel
Oct 20 2005, 15:03
QUOTE |
А как после смерти телепортировать тело игрока куда-нить? |
Если игрок умер во время разговора:
Neverwinter Script Source |
object oPC = GetPCSpeaker(); if (!GetIsPC(oPC))return; object oPCWP= GetWaypointByTag("Тэг_вейпонта_к_кторому_ты_хочешь_джампнуть_ПС"); DelayCommand(8.0, AssignCommand(oPC, ActionJumpToObject(oPCWP))); |
В других случаях:
Neverwinter Script Source |
object oPC = GetEnteringObject(); if (!GetIsPC(oPC))return; object oPCWP= GetWaypointByTag("Тэг_вейпонта_к_кторому_ты_хочешь_джампнуть_ПС"); DelayCommand(8.0, AssignCommand(oPC, ActionJumpToObject(oPCWP))); |
8.0 - это время, через которое игрок телепортируется к вейпоинту.
QUOTE (Archangel @ Oct 20 2005, 16:03) |
В других случаях |
и
QUOTE (Archangel @ Oct 20 2005, 16:03) |
object oPC = GetEnteringObject(); |
плохо состыковываются.
И вообще - наф такие сложности.
В скрипте onPCDeath в свойствах модуля пиши.
-fenix-
Oct 20 2005, 21:25
QUOTE (dumbo @ Oct 18 2005, 19:22) |
-fenix-, при ограничении в 16 символов такую расточительность можно позволить, только если у тебя не больше 10 лок. в крупных проектах не хиляет. |
Это КАК
Ты наверное с РесРефом перепутал!!!? У тага ограничение 32 символа!
И как нужно давать ТАГ локи, чтобы не осталось 3 знака на тип локи, я не понимаю. Лично мне проще заносить это в ТАГ, а не работать с локалками.
У меня еще не большой комплекс к локалкам, уж и не знаю почему
Может, потому что их в модуле тьма и тьма и каждая занимает место. Я почти преучил себя удалять более не нужную локалку.
Дайте мне линейкой по голове
AliceDiren
Oct 20 2005, 21:52
-fenix-, локалки удобнее в том случае, если у тебя деление областей очень тонкое. Я ведь правильно написала в своем посте, я делила, например подземелья, на сухие, влажные, сырые, лес на сухой, влажный, болотистый и т.д. и т.п. Можно было бы замучаться все это описывать в тагах.