Dik Morris
Jul 27 2005, 14:22
Vitalist!
Вот скорее всего то что ты хотел: игрок наступает на триггер и говорит фразу.
Рисуешь триггер
На onEnter ставишь этот скриптик:
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject();
if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1) return; SetLocalInt(OBJECT_SELF,"TRIGGER",1);
AssignCommand(oPC, ActionSpeakString("Фраза Игрока")); } |
-fenix-
Jul 27 2005, 14:38
QUOTE (DEM @ Jul 26 2005, 09:03) |
Помогите, если это возможно!! shout.gif Можно ли свернуть окно скрипта... Я понимаю это глупый вопрос, но просто так мешает когда не можешь свернуть окно скрипта и разместить что нить в локе, посмотреть тег и т.д. swoon.gif |
Сделать такое с окнами можно будет во втором Тулсете!
QUOTE (Vitalist @ Jul 27 2005, 09:16) |
Zirrex, как я понял, эту фразу скажет NPC, да? А мне хотелось бы что бы это вякнул игрок, типа мысли вслух... |
Тут и говорит игрок.
Vitalist вот простой скрипт не в ХоТУ скриптинге. Типа работает со старыми аддонами. Начерти на земле и имя триггера - фраза.
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: OnEnter am_ten_speak_pc //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* Текст над РС KeyTag - Количество раз Если 0, то бесконечно */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Original idea By: DBColl //:: Created On: 21.04.2005 //::////////////////////////////////////////////// void main() { object oPC = GetEnteringObject(); object oTrig = OBJECT_SELF; string sSpeak = GetName(OBJECT_SELF); int i = StringToInt(GetLockKeyTag(oTrig)); int iSp = GetLocalInt(oTrig, "SPEAK"); if (!GetIsPC(oPC) || iSp >= i && i!=0) { return; } AssignCommand(oPC, SpeakString(sSpeak)); if (i!=0) { SetLocalInt(oTrig, "SPEAK", (iSp+1)); } } |
Vitalist
Jul 27 2005, 18:15
Спасибо всем! А скажите пожалуйста, у меня у одного тулсет в пиратке глючит: скрипты на русском идут (например, вместо Give the speaker some gold - дать говорящему денег)?
Dik Morris
Jul 27 2005, 18:24
Ты хотел сказать что скрипты НЕ идут, сделанные в визарде? Если да тогда удали русские комментарии все заработает
Vitalist
Jul 27 2005, 19:38
А как это сделать?
Dik Morris
Jul 27 2005, 19:43
Блин ты, что совсем нечего не понял, или шутишь?!
Ну а если серьезно то комментариями в скрипте считаются, вот такой знак // и все что стоит за ним ( Это выделяется зеленым цветом) Удали и все должно заработать...
З.Ы:
ОБЯЗАТЕЛЬНО качай
мануал Айвана, для новичков
КЛАД!
Batkom
Jul 27 2005, 21:11
или поставь патч dumbo, замечательная вещь, и как я без нее работал
Zirrex
Jul 27 2005, 21:56
Ребят, вы издеваетесь над ним что ли? Вообще-то все комментарии в скриптах исходят прямиком из файла dialog.tlk. Как я понял, он переведенный полностью, поэтому редактор и все комментарии, а также все остальное на русском языке. Даю совет, не используйте русскую версию игры.
Batkom
Jul 28 2005, 02:06
я использую и никаких проблем, все замечательно работает, только вот версия перевода старая и для кнопочки RunTest(помоему эта фича в 1.66 добавилась) ничего не написано)
Добавлено в [mergetime]1122505794[/mergetime]
Вопрс, можно ли открыть диалог от одного игрока другому?, допустим игрок на игрока-цель итем юзает, а зетм цели открывается диалог как бы от имени активатора, и как это примерно будет выглядеть? Если убого, придется от этого отказаться и открывать для таргета как всегда диалог сам с собой
Мефистофель
Jul 28 2005, 02:27
Люди помогите, скачал с ваулта хак с эффектами.
заменил visualeffect 2da мой старый на ихний.
попробовал проверить 0 ничего не добавилось хотя всё сделал. у меня более 50 хаков стоит и нормально, а этот ну никак.
кстати там в комплекте шлемы и их тоже нет что делать.
вот хак кому надо.
Хак Добавлено в [mergetime]1122507408[/mergetime] Neverwinter Script Source |
void main() { object oPC = GetLastUsedBy(); ActionStartConversation(oPC); } |
Batkom
Ставь на онЮзед любого предмета, незабудь написать диалог для этого предмета.
Zirrex
Jul 28 2005, 09:09
Batkom, тебе надо при активации диалога указывать, чтобы он открылся у цели, а не у тебя.
Neverwinter Script Source |
void main() { object oItem = GetItemActivated(); object oTarget = GetItemActivatedTarget();
if (sItemTag == "item") { AssignCommand(oTarget, ActionStartConversation(oTarget, "dialog", TRUE, FALSE)); return; } } |
Мефистофель, а версия игры у тебя какая?
По поводу скрипта, и что это будет? Потом, куда именно ты собрался ставить сей скрипт, у обычных предметов нету раздела скриптов, все, что должно происходить в момент использования предмета, описывается только в эвенте "OnActivateItem". И опять-таки, если следовать скрипту, то диалог откроется тому, кто использует вещь
QUOTE |
zmey краткие ответы:
1. Самое простое, запретить все. С крафтом просто, удаляется диалог "x0_skill_ctrap" или дописывается еще одна ветка диалога, где пишется, что "крафт выключен", чтобы избежать вопросов. Не создавать материалы при убийстве монстров, убрав строчку " craft_drop_items(oKiller);". Посмотреть файл "nw_o2_coninclude" и убрать из генерации вещей пустые листки для заклинаний.
|
QUOTE |
Спасибо всем! А скажите пожалуйста, у меня у одного тулсет в пиратке глючит: скрипты на русском идут (например, вместо Give the speaker some gold - дать говорящему денег)?
|
Виталист, не (ВЫРЕЗАНО ЦЕНЗУРОЙ), не у тебя одного такая хрень. Ты их постирай, а ежели не компилит - замени английскими.
Добавлено в [mergetime]1122545563[/mergetime] 
Кстати, скоро доделую хак с иконками из Dungeon Lords...
Dik Morris
Jul 28 2005, 13:14
Дык вот есть анимация смерти, на последнюю ветку в диалоге вешай:
Neverwinter Script Source |
void main() { object oNPC = GetObjectByTag("ТАГ НПС"); effect oEf = EffectDeath(TRUE); ActionWait(1.0)//Это время, можно самому регулировать, а можно и убрать ApplyEffectToObject(DURATION_TYPE_INSTANT, oEf,oNPC); } |
QUOTE |
Дык вот есть анимация смерти, на последнюю ветку в диалоге вешай: |
Спа-си-ба!!!
Vitalist
Jul 28 2005, 13:49
Dik Morris, спасибо - помогло. А то я раньше инглишом заменял.
А на счёт ":crazy:", то я подумал, что надо с помощью спец проги вскрыть спец файл и удалить спец строчку, ответственную за сий беспредел. Но оказалось, что всё намного проще
PS Давно уже скачал
[SIZE=7]ГЛУПОСТИ СЮДА? Мне бы ник изменить... я его по дури не совсем верно написал (Zмей надо) как сие можно?
Archangel
Jul 28 2005, 16:13
QUOTE |
ГЛУПОСТИ СЮДА? Мне бы ник изменить... я его по дури не совсем верно написал (Zмей надо) как сие можно? |
Поговори с Айвом. Он может изменить.
Zirrex
Jul 28 2005, 19:36
zmey, зачем убирать умения, если проку от них нет? Чтобы их убрать раз и навсегда, можно с помощью скриптов присваивать умением значение 0, либо поправить 2da, и убрать их оттуда, но я не уверен, что такое легко сделать, не правя остального, что взаимодействует с этими умениями. Т.е., когда они просматриваются при повышении уровня.
[QUOTE=zmey, Jul 28 2005, 16:56]я его по дури не совсем верно написал (Zмей надо) как сие можно? [/QUOT] Такое сочетание знаков у нас нельзя. Либо русскими, либо английскими.
Добавлено в [mergetime]1122573678[/mergetime]
Видишь, даже сочетание таких букв не парьсится...
QUOTE (zmey @ Jul 28 2005, 16:56) |
ГЛУПОСТИ СЮДА? Мне бы ник изменить... я его по дури не совсем верно написал Стер как сие можно? |
Batkom
Jul 29 2005, 13:29
у меня напрочь виснет сервер если в локации находятся более 3 слушающих существ, как только игрок что нибудь скажет, они несутся к нему и далее сервер падает
Zirrex
Jul 29 2005, 14:27
Batkom а трое то зачем? Достаточно и одного слушающего существа. Также желательно сделать, чтобы они были невидимы. Именно так сделано на посохе DMFI.
Vitalist
Jul 29 2005, 17:32
У меня есть вспышка света и я хочу, чтоб после разговора с одним NPC она погасла. Это реально сделать?
Dik Morris
Jul 29 2005, 17:43
Всмысле вспышка света? Факел или "лампочки" ? Или на НПС свет? Обьясни сорри поподробнее
Batkom
Jul 29 2005, 17:48
у меня в разговоре есть скрипт
Neverwinter Script Source |
int StartingConditional() { object oGild = GetItemPossessedBy(GetPCSpeaker(), "gild"); int iGP = GetLocalInt(OBJECT_SELF, "gp"); int pGP = GetGold(GetPCSpeaker()); int sGP = GetCampaignInt("guildbase", "gp"+ GetLocalString(oGild, "name")) if(pGP >= iGP) { SetCampaignInt("guildbase", "gp"+ GetLocalString(oGild, "name"), sGP+iGP); SetLocalInt(OBJECT_SELF, "gp", 0); return TRUE; }
else { SetLocalInt(OBJECT_SELF, "gp", 0); return FALSE; } } |
не компилируется говоря, что потерян анализатор переменной
что за ботва?
Агрессинг
Jul 29 2005, 17:49
Vitalist
Можно деактивейтом, но если она тебе не нужна больше, то дестрой ее вот так -
На последнюю ветку диалога
CODE |
DestroyObject(GetObjectByTag("ТЕГ ВСПЫШКИ")); |
Добавлено в [mergetime]1122649229[/mergetime]
Batkom
У тебя в скрипте проверка guildbase идет выше чем ее определение.
Vitalist
Jul 29 2005, 18:26
Агрессинг, спасибо -помогло!
-fenix-
Jul 29 2005, 18:41
Batkom, постваь точку с запятой в этой строке
Neverwinter Script Source |
int sGP = GetCampaignInt("guildbase", "gp"+ GetLocalString(oGild, "name")); |
QUOTE (Агрессинг @ Jul 29 2005, 17:49) |
У тебя в скрипте проверка guildbase идет выше чем ее определение.
|
И что? Просто в переменной ни чего небудет, вот и все!
Zirrex
Jul 29 2005, 19:20
Агрессинг, переменную можно взять хоть нулевую, хоть не нулевую, в расчет, это не изменит ничего.
Batkom, внимательно просматривай скрипты, прежде чем кричать, на помощь. Очень часто ошибка смешна и довольно популярна в больших скриптах.
Vitalist
Jul 29 2005, 19:40
На прошлой страницы Aiwan давал скрипт на "речь". Он написал, что "Текст над РС KeyTag - Количество раз. Если 0, то бесконечно" - я так понимаю, чтобы говорилось 1 раз надо исправить тут "if (!GetIsPC(oPC) || iSp >= i && i!=0)". Если да, то тогда почему после этого скрипт не работает (и даже если потом ставишь 0)? А если нет, то где надо было исправлять?
Я тебя в упор не понял....
Zirrex
Jul 29 2005, 20:19
Vitalist данное условие сработает только тогда, когда с ним работает не игрок или же "iSp >= i" и не равно 0. Впиши в Key Tag 1, и скрипт сработает 1 раз.
DEM если не понял, зачем же пишешь?
Vitalist
Jul 29 2005, 20:23
Блин, что меня здесь никто не понимает?

Сейчас попробую по-другому... Итак, на прошлой странице Aiwan дал мне скрипт (при входе на тригер, перс говорит какую-нибудь фразу). Пока все понятно? Дальше: мне нужно, чтобы эта фраза говорилась только один раз, а не бесконечно. Что нужно там исправить?
Zirrex
Jul 29 2005, 20:26
Vitalist я же тебе написал. Ты внимательно читал? Чтобы не было более вопросов, лучше напишу. Открываешь свойства триггера, переходишь в раздел "дополнительные настройки", и ставишь в поле "Key Tag" 1. Что тут не ясного? Универсальный скрипт, количество фраз зависит от настроек.
Мефистофель
Jul 30 2005, 01:00
QUOTE (Zirrex @ Jul 28 2005, 09:09) |
Мефистофель, а версия игры у тебя какая? |
ХотУ 1.65
Zirrex
Jul 30 2005, 10:45
Мефистофель поэтому у тебя те эффекты и не работают, они же требуют версии 1.66. Я скачал по той ссылке файл, хотел посмотреть, и сразу понял, что версия не та. К тому же об этом написано на самом Ваулте.
Vitalist
Jul 30 2005, 11:31
Zirrex, все понятно - спасибо!(праду перевод тулсета у меня другой - не сразу разобрался) Просто когда я писал предыдуший пост, твоего еще не было. Опять не понятно, да? Обьясняю: открываю страницу, отключаюсь от инета (я такой экономный

) и пишу сообщение. Поэтому и не увидел!
И сразу следующий вопрос: как забрать нужное количества бабла у перса при разговоре?
Dik Morris
Jul 30 2005, 11:47
QUOTE |
Обьясняю: открываю страницу, отключаюсь от инета (я такой экономный) |
Тоже самое Vitalist , я так же...
Neverwinter Script Source |
void main() {
TakeGoldFromCreature(Кол-во золота, GetPCSpeaker(), TRUE); } |
Это в визарде делается...
Vitalist
Jul 30 2005, 13:54
Dik Morris, ну да, в визарде. Но мне нуда, чтобы если у перса не хватало, то NPC вякнул что-нибудь. Такое моно?
Dik Morris
Jul 30 2005, 14:26
В смысле не хватало? Можно сделать, чтоб Текст появлялся при: При таком то кол-ве денег, допустим:
НПС - Хай, бабки давай!
ИГРОК - На держи (Текст появ. при: таком то кол-ве денег)
ИГРОК - Нету бабок…(Просто так появ.)
З.Ы: Вот скрипт на то чтоб текст появ. при опред. кол-ве золота…
Neverwinter Script Source |
int StartingConditional() { int iResult;
iResult = GetGold(GetPCSpeaker())>1; return iResult; } |
Tonakien
Jul 30 2005, 16:16
Просьба о помощи...
Кто как дебагит модуль если он здоровый, а нужно оказаться в определенном месте с определенными значениями на тебе и на мире?
ЗЫ Прошу прощение за дубляжи у модераторов, я здесь недавно и не знаю куда сУваться с подобными просьбАми
Vitalist
Jul 30 2005, 17:15
Dik Morris, самое то! А теперь моей буйной фантазии нужно следующие. К примеру NPC задает 3 вопроса, к которым прилагаються 3 варианта ответа, причем как не трудно догадаться по 1му правильному. К концу диалога NPC должен сказать, что "типа все правильно" - это если игрок выбирал только правильные фразы. Интуитивно догадываюсь, что это делаеться, наверное, через переменные, но хотелось бы уточнить. И ещё: что нужно нацарапать, чтобы игроку обращались на его имя? Помню что-то типа First Name, но как то подругому...
Dik Morris
Jul 30 2005, 17:39
QUOTE |
К примеру NPC задает 3 вопроса, к которым прилагаються 3 варианта ответа, причем как не трудно догадаться по 1му правильному. |
Проще и удобнее делать чтобы НПС сразу говорил что ты не прав, ну а если уж очень надо, тогда делай через локальные переменные, на каждый прав. ответ вешай локалку, а потом проверяй.
QUOTE |
чтобы игроку обращались на его имя? |
В редакторе диалога ВСТАВИТЬ - <FirstName>
Vitalist
Jul 30 2005, 18:12
Dik Morris, не-а, так не катит. Нужно, как я писал. Можно так?
Dik Morris
Jul 30 2005, 18:17
QUOTE |
Dik Morris, не-а, так не катит. Нужно, как я писал. Можно так? |
Дык я и написал

Говорю ставь локальные переменные и потом проверяй, их и все ОК
QUOTE (Tonakien @ Jul 30 2005, 16:16) |
Просьба о помощи... Кто как дебагит модуль если он здоровый, а нужно оказаться в определенном месте с определенными значениями на тебе и на мире?
|
Neverwinter Script Source |
SendMessageToPC(oPC, "iTop="+IntToString(iTop)+" iBottom="+IntToString(iBottom)+" iCount="+IntToString(iCount));////// |
Тока так

Слэши в конце специально, чтобы знать что эту строчку можно удалить в любой момент. Полезно, когда модуль заработал и дебаг не нужен, чтобы найти все такие строки.
Vitalist
Jul 30 2005, 18:54
Все, что я могу сам - так это одну переменную и сразу ее проверить. А мне во как надо: повесить 3 переменные и потом уже проверить - если хоть одной нет, то всё - фразы не будет. Если ты это имел ввиду, то напиши как это реализовать!
-fenix-
Jul 30 2005, 19:16
Neverwinter Script Source |
if(GetLocalInt(object, "Имя") == число && GetLocalInt(object, "Имя") == число && GetLocalInt(object, "Имя") == число ) |
Знак && означает (И), то еть если верно это И это И это То сделать это.
Dik Morris
Jul 30 2005, 19:34
Vitalist, ну ладно, пишу более подробно...
Это ведь просто, в визарде делается: сначала создай переменные на каждый правильный ответ свою переменную, а потом проверь их вот этим скриптом:
Neverwinter Script Source |
int StartingConditional() { if(!(GetLocalInt(GetPCSpeaker(), "ZAGADKA") == 01)) //Это первая локалка, та которая вешается на прав. ответ if(!(GetLocalInt(GetPCSpeaker(), "ZAGADKA") == 02)) //Это вторая которая вешается на прав. ответ if(!(GetLocalInt(GetPCSpeaker(), "ZAGADKA") == 03)) //Это третья которая вешается на прав. ответ return FALSE;
return TRUE; } |
З.Ы: -feniks- я это отправил на тот случай если Vitalist тебя не понял.
З.З.Ы: Vitalist наверно тебе лучше в тему: ВОПРОСЫ НОВИЧКОВ...
Vitalist
Jul 30 2005, 20:25
Спасибо!
Млять, меня это уже задолбало: текст появляеться чрез 1! Т.е устанавливаю переменную, ставлю проверку - а он не появляеться! Приходиться заново переписывать скрипт. Может я что не правильно делаю: последовательность или ешё чего? До сих пор не могу сделать "Zagadku"...

PS Dik Morris, лады
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.