Sugo77
Feb 15 2009, 09:36
Привет Всем Снова Я вернулся, а пдскажите плиз, как сделать так что бы игроков Одной команды, фракции скажем Злой, автоматически бросало в Одну Пати к игрокам, а игкроков противоположной команды Гуд, бросало в другую пати?, я знаю что так можно сделать, я играл долго время на Alestorm Lotr Team PvP, у них это сделано, и к тому же даже после перезахода в игру ты всеравно автоматически в пати, в этой же команде.
Примечание в их сервере Alestorm Lotr team PvP, стоит Game Type: Team, PvP Mode: Party , может это как то может помочь, в помощи для меня, подскажите плиз, я знаю что это не просто но возможно.
P.S.: Вот этот скрипт на дислайки работает просто замечательно, НО, он против всех, может его как то надо настроить, чтобы к игрокам своей команды , ты не был враждебен, ну или просто сделать то что я описал, одних игроков в одну команду(Good Team) других(Evil Team) в другу.
Neverwinter Script
// The PC who entered the trigger is set to dislike all the PC's in the module
void main()
{
// Get entering PC
object oEnterer = GetEnteringObject();
// make sure they are not a DM
if(GetIsPC(oEnterer) && !GetIsDM(oEnterer))
{
// Loop all PC's in the module and set this PC to dislike them - uh oh
object oPC = GetFirstPC();
while(GetIsObjectValid(oPC))
{
// Set to dislike
SetPCDislike(oEnterer, oPC);
// Get next PC
oPC = GetNextPC();
}
}
}
Neverwinter Script
void main()
{
object oPlayer = GetEnteringObject();
string VarName = "имя переменной на игроке"; //Переменную под этим именем надо проставить на каждого игрока в зависимости от выбранной фракции
if (GetIsPC(oPlayer) && !GetIsDM(oPlayer))
{
object oPC = GetFirstPC();
int nFaction = GetLocalInt(oPlayer, VarName);
while (GetIsObjectValid(oPC))
{
int nSame = GetLocalInt(oPC, VarName) == nFaction;
int nDone = 0;
if (nSame)
{
if (!(nDone || oPC == oPlayer))
{
RemoveFromParty(oPlayer);
AddToParty(oPlayer, oPC);
nDone++;
}
}
else SetPCDislike(oPlayer, oPC);
}
}
}
Latiss
Feb 17 2009, 16:15
Вообщем появилась проблема в одной скриптовой сцене - Точнее, в самой последней строчке. (Диалог не начинается) И в том, что эффект unsummon не проигрывается
Neverwinter Script
void main()
{
object oPC = GetPCSpeaker();
object oKiller = GetObjectByTag("assassin");
object oValsh = GetObjectByTag("valsh");
object oKaj = GetObjectByTag("Kaj");
object oMarsia = GetObjectByTag("MarsiaLab");
location lKillEx = GetLocation(GetObjectByTag("AssassinEnter"));
effect E1 = EffectVisualEffect(VFX_IMP_DEATH_L);
effect E2 = EffectDeath();
effect E3 = EffectVisualEffect(VFX_IMP_UNSUMMON);
SetCutsceneMode(oPC);
AssignCommand(oKiller, ClearAllActions());
AssignCommand(oPC, ClearAllActions());
AssignCommand(oMarsia, ClearAllActions());
AssignCommand(oValsh, ClearAllActions());
DelayCommand(0.1, AssignCommand(oPC,SetCameraFacing(120.0,12.0,49.0,CAMERA_TRANSITION_TYPE_FAST)));
DelayCommand(0.2, AssignCommand(oKiller, SetFacingPoint(GetPosition(oValsh))));
DelayCommand(0.9, AssignCommand(oKiller, ActionCastFakeSpellAtObject(SPELL_FINGER_OF_DEATH,
oValsh)));
DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, E1, oValsh));
DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, E2, oValsh));
DelayCommand(3.8, AssignCommand(oKiller,DestroyObject(oKiller)));
DelayCommand(3.8, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, E3, lKillEx));
DelayCommand(4.0,AssignCommand(oMarsia,ActionStartConversation(oPC
)));
DelayCommand(4.1,SetCutsceneMode(oPC, FALSE));
}
azathoth
Feb 17 2009, 21:37
может быть у тебя этот скрипт на объекте "assassin" стоит?, тогда после его удаления удалятся и за-делай-еные действия, правда тогда в этом случае не должно ещё работать выключение катсцены...
Latiss
Feb 18 2009, 09:02
У меня скрипт стоит на диалоге Вальшерада. После окончания диалога стартует катсцена. Но assassin-то удаляется! А диалог не стартует и эффект не проигрывается
Мистика - Переделал немного диалоги и поставил вместо oMarsia, oKaj, то игрок без труда начинал диалог с Кайусом! Дело улажено. Всем спасибо, все свободны.
Latiss
Feb 28 2009, 13:52
Вновь требуется помощь: Как создать вэйпоинт на месте смерти одного НПС (На OnDeath должен стоять). И еще - ExecuteScript запускает же какой-то скрипт? И еще - Можно или нельзя запускат таким образом катсцену. То есть на OnDeath этого НПС?
Ilerien
Feb 28 2009, 17:52
Цитата
Как создать вэйпоинт на месте смерти одного НПС (На OnDeath должен стоять).
В onDeath скрипт добавить строку:
Neverwinter Script
CreateObject(OBJECT_TYPE_WAYPOINT, "<ресреф вейпа>", GetLocation(OBJECT_SELF));
Цитата
ExecuteScript запускает же какой-то скрипт?
Запускает.
Цитата
Можно или нельзя запускат таким образом катсцену. То есть на OnDeath этого НПС?
Не вижу к этому препятствий
Talarasha
Feb 28 2009, 18:33
Neverwinter Script
int StartingConditional()
{
string sGrave = GetLocalString(OBJECT_SELF,"GRAVE");
if(sGrave == "NEFZEN")
{
return TRUE;
break;
}
if(sGrave == "VESSEL")
{
return TRUE;
break;
}
return FALSE;
}
Имеется код примерно такого вида, редактор категорически отказывается его компилировать, ругается на break. Кто виноват и что делать?
По сути кода - обработчик для могил, хочу организовать универсальную систему, чтоб не плодить файлы скриптов/диалогов - один скрипт и один диалог с универсальным скриптом-условием.
Ilerien
Feb 28 2009, 18:36
Брейки убери совсем, не нужны они тут
Talarasha
Feb 28 2009, 18:59
Убрал, скрипт компилируется, но не пашет. Впрочем, он и не должен.
Объясняю.
Есть диалог из, допустим, двух строк:
1.Натали Нефзен, 1351 - 1390, покойся с миром.
2.Курт Вессел, 1351 - 1390, покойся с миром.
На каждой из строк висит скрипт-условие, приведенное мной выше.
На каждой могилке висит переменная со значением похороненного лица.
При щелчке на надгробие срабатывает диалог и запускается проверка скрипта:
1)Проверяем первую строку диалога
2)Если переменная Нефзен, выводим диалог. Бриком выходим из скрипта.
3)Проверяем вторую строку диалога.
4)Если переменная Вессел, то первая проверка не срабатывает и мы переходим ко второй.
Если же не будет брика, то скрипт будет выдавать первую строку диалога в любом случае, а не делать то, что мне надо.
Так что вопрос - почему не компилирует, или можно ли кк-то по-другому решить эту задачу?
В принципе, я понимаю, что брика после возврата значения быть не может... Но как тогда поступить? =)
Talarasha, может быть просто привязать к каждой могилей свой "диалог"?
Neverwinter Script
int StartingConditional()
{
string sGrave = GetLocalString(OBJECT_SELF,"GRAVE");
int IsFirst = GetLocalInt(OBJECT_SELF, "GRAVE");
if (sGrave == "NEFZEN" && IsFirst) return TRUE;
if (sGrave == "VESSEL" && !IsFirst) return TRUE;
return FALSE;
}
На каждую могилу ставится переменная GRAVE целочисленного типа со значениями TRUE для NEFZEN и FALSE для VESSEL(вообще говоря, можно даже не ставить вторую).
Хотя пара условий может была бы и лучше.
Talarasha
Mar 1 2009, 10:31
Цитата
На каждую могилу ставится переменная GRAVE целочисленного типа со значениями TRUE для NEFZEN и FALSE для VESSEL.
Хотя пара условий может была бы и лучше.
Не работает, к сожалению

Обе могилы выдают первую строку диалога. Ведь если взять вторую могилу (VESSEL) и щелкнуть по ней, первое условие не срабатывает, а второе срабатывает и выводит первую строку диалога.
Цитата
Talarasha, может быть просто привязать к каждой могилей свой "диалог"
Ну да, это проще реализуемо. Но зачем нужны кучи диалоговых файлов, если можно уместить все в один?
Хм... Попробую без диалога вообще сделать, просто вывод строки в зависимости от переменной.
Добавлено:
Заработало =).
Neverwinter Script
void main()
{
string sGrave = GetLocalString(OBJECT_SELF,"GRAVE");
if(sGrave == "NEFZEN")
{
ActionSpeakString("Натали Нефзен, 1351 - 1390, покойся с миром.");
}
if(sGrave == "VESSEL")
{
ActionSpeakString("Курт Вессел, 1351 - 1390, покойся с миром.");
}
}
Хотя если кто-нибудь сможет сделать для диалогового файла, с удовольствием погляжу.
Neverwinter Script
int StartingConditional()
{
string sName = GetLocalString(OBJECT_SELF, "GRAVE");
int nCheck = GetLocalInt(OBJECT_SELF, "GRAVE");
if (!nCheck) if (sName == "NEFZEN") return TRUE;
SetLocalInt(OBJECT_SELF, "GRAVE", !nCheck);
return nCheck;
}
Работает только для диалога с 2 строками; ничего, кроме имен в переменных не нужно.
-------------------------------------------------
Для общего случая:
Neverwinter Script
const int nCountMax = 99;
const string sVariableName = "<Variable_Name>";
int StartingConditional()
{
string sName = GetLocalString(OBJECT_SELF, sVariableName);
int nPosition = GetLocalInt(OBJECT_SELF, sVariableName);
int bTRUE = FALSE;
switch (nPosition)
{
case 0: if (sName == "<Name_00>") bTRUE = TRUE; break;
case 1: if (sName == "<Name_01>") bTRUE = TRUE; break;
case 2: if (sName == "<Name_02>") bTRUE = TRUE; break;
//...
case nCountMax: if (sName == "<Name_nCountMax>") bTRUE = TRUE; break;
}
if (bTRUE || nPosition == nCountMax) nPosition = 0;
else nPosition++;
SetLocalInt(OBJECT_SELF, sVariableName, nPosition);
return bTRUE;
}
Люди - Как создать некое подобие струи пара (огня?), которая бы через определенный промежуток времени выстреливала из одного вэйпоинта, проносилась бы по прямой до другого вэйпоинта и гасла. А если игрок попал бы в него, то его бы "ошпарило" - нанеслось бы 1d12 огненного урона.
Lestorest
Mar 9 2009, 19:56
Добрый день скриптеры и семпаи =)
надеюсь поможете мудрыми словами.
Есть модуль (нордок + сер 2.2) так вот нужно создать предмет который бы менял навсегда игроку внешний вид на модель входящую в состав сер'овских паков, видел на форуме скрипты на смену модели (в темах об оборотнях и не только) но скриптер из меня похоже никакой.
может кто поможет разобраться в сути проблемы?
нужно на несколько моделей, но думаю с остальными потом сам разберусь
существо Guardinal: Ayala(в списке числиться так) в скрипте записывал так - GUARDINAL_AYALA правда в оригинале в названиях нету двоеточия...
Цитата(Latiss @ Mar 7 2009, 11:50)

Люди - Как создать некое подобие струи пара (огня?), которая бы через определенный промежуток времени выстреливала из одного вэйпоинта, проносилась бы по прямой до другого вэйпоинта и гасла. А если игрок попал бы в него, то его бы "ошпарило" - нанеслось бы 1d12 огненного урона.
не просто. Визуальный эффект где-то в базе скриптов был. См феерверки. А чтобы еще урон был - тут есть несколько вариантов, и все довольно сложные.
Проще создавать с интервалом огненную стену. Эффект примерно такой же, но делать заметно легче.
Цитата(Lestorest @ Mar 9 2009, 19:56)

Добрый день скриптеры и семпаи =)
надеюсь поможете мудрыми словами.
Есть модуль (нордок + сер 2.2) так вот нужно создать предмет который бы менял навсегда игроку внешний вид на модель входящую в состав сер'овских паков, видел на форуме скрипты на смену модели (в темах об оборотнях и не только) но скриптер из меня похоже никакой.
может кто поможет разобраться в сути проблемы?
нужно на несколько моделей, но думаю с остальными потом сам разберусь
существо Guardinal: Ayala(в списке числиться так) в скрипте записывал так - GUARDINAL_AYALA правда в оригинале в названиях нету двоеточия...
см функцию SetAppearanceType. Собсна кроме нее почти ничего и не нужно.
Но имхо такое изменение внешности будет выходить боком при полиморфе (магия или способность, не суть).
Лучше всего через лето поправить файл персонажа, поменяв ему внешность. Или, тк это шард, делать через NWNX, что еще лучше и эффектнее. Но с этим вопросом надо к шардовикам, к Вирусману например.
Lestorest
Mar 9 2009, 20:15
Lex, возможно я совсем туповат в плане скриптов, в принцепи весь скрипт по идее состоит из нее одной с прописаной кокраз моделькой и повесит на онклилк\онюсе предмета, но пока что у меня получался нулевой эфект.
Свойственно можно редактировать чаров и отдельно правда лето у меня как-то не работает. попробуем через "NWNX" и покопаюсь еще с скриптом.
onClick|onUsed.. ты на плейс вешаешь чтоль?
если на юз, то кроме GetLastUsedBy и SetAppearanceType ничего и нет. Да, и учти что вбивать константу GUARDINAL_AYALA в параметры функции бесполезно, если эта константа не прописана или там, где все консты прописаны (script.nss или как-то так) или в той библиотеке, которая будет подключена к скрипту. Если влом прописывать - просто ставь вместо константы номер из табылицы appearance.2da, где у тебя эта внешность/существо описано.
Lestorest
Mar 9 2009, 20:53
Lex, спасибо, осталось одна мелочь выковырять это все из сер паков =)
вашаю я на предмет урной зовущийся... просто что первое попалось.
Barmaley
Mar 14 2009, 23:13
Кто нибудь, пожалуйста, подскажите скрипт для шахида, он должен подбегать к NPC и взрываться.
ReyBrujo
Mar 15 2009, 16:10
Помогите пожалуйста,у меня есть скрипт,и разговор,в котором должен этот скрипт действовать(хенч должен весь мой инвентарь положить себе)
Neverwinter Script
void main()
{
object oMaster = GetPCSpeaker()
object oItem = GetFirstItemInInventory(oMaster)
object oNewMaster=GetNearestObjectByTag("HEN_GRORK",oMaster)
CopyItem(oItem,oNewMaster,FALSE)
{
while(GetIsObjectValid(oItem))
{
if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
{
CreateItemOnObject(GetResRef(oItem), oNewMaster, 1);
if(iDel==TRUE) DestroyObject(oItem, 0.5);
}
else
{
CopyItem(oItem, oNewMaster, TRUE);
if(iDel==TRUE) DestroyObject(oItem);
}
oItem = GetNextItemInInventory(oMaster);
}
}
}
Скрипт ругается на четвертую строчку,уже пробовал убирать-добавлять точку с запятой,теги вродь object,int ,сам переписал весь код-все равно ругается.НА вся кслучай сразу говорю-скрипт ставил на совершение действия хенчем в разговоре
Плиз,хелп

Помогите пожалуйста,у меня есть скрипт,и разговор,в котором должен этот скрипт действовать(хенч должен весь мой инвентарь положить себе)
Neverwinter Script
void main()
{
object oMaster = GetPCSpeaker()
object oItem = GetFirstItemInInventory(oMaster)
object oNewMaster=GetNearestObjectByTag("HEN_GRORK",oMaster)
CopyItem(oItem,oNewMaster,FALSE)
{
while(GetIsObjectValid(oItem))
{
if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX)
{
CreateItemOnObject(GetResRef(oItem), oNewMaster, 1);
if(iDel==TRUE) DestroyObject(oItem, 0.5);
}
else
{
CopyItem(oItem, oNewMaster, TRUE);
if(iDel==TRUE) DestroyObject(oItem);
}
oItem = GetNextItemInInventory(oMaster);
}
}
}
Скрипт ругается на четвертую строчку(object oItem = GetFirstItemInInventory(oMaster)),уже пробовал убирать-добавлять точку с запятой,теги вродь object,int ,сам переписал весь код-все равно ругается.НА вся кслучай сразу говорю-скрипт ставил на совершение действия хенчем в разговоре
Плиз,хелп
Цитата(ReyBrujo @ Mar 15 2009, 16:10)

Плиз,хелп shout.gif
Не стоят точки с запятой в конце 3-5, 7 строк. Еще лишняя пара фигурных скобок - сразу после CopyItem и закрывающая в конце. К тому же не олределена переменная iDel типа int, насколько видно.
Цитата
Кто нибудь, пожалуйста, подскажите скрипт для шахида, он должен подбегать к NPC и взрываться.
Ну вот например так
Neverwinter Script
float fDelay = GetDistanceToObject(GetNearestObjectByTag("npc_tag"))/15; //точно не помню эту формулу
AssignCommand(OBJECT_SELF, ActionForceMoveToObject(GetObjectByTag("npc_tag"), TRUE));
DelayCommand(fDelay, ExecuteScript("detonate", OBJECT_SELF));
SetLocalInt(OBJECT_SELF,"ACTIVATED_OBJECT",TRUE);
и в OnDamaged такое
Neverwinter Script
if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) > 0 && GetCurrentHitPoints() < 0)
ExecuteScript("detonate",OBJECT_SELF);
detonate:
Neverwinter Script
void main()
{
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);
while(GetIsObjectValid(oTarget))
{
int nDamage = 450+d100();
nDamage = GetReflexAdjustedDamage(nDamage, oTarget, 45, SAVING_THROW_TYPE_FIRE);
effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oTarget);
DestroyObject(OBJECT_SELF);
oTarget = GetNextObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE);
}
int nCount=0;
while(nCount<4)
{
float fRandom = GetRandomDelay(0.3,1.0);
DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_COM_BLOOD_LRG_RED),oPC));
DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_COM_BLOOD_REG_RED),oPC));
DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi
sualEffect(VFX_COM_CHUNK_RED_LARGE),oPC));
nCount++;
}
}
serafim
Mar 16 2009, 16:21
ребята помогите. Начинаю грызть науку скриптования и главный вопрос по каст сценам. Пропишите ка создать как сцену которая наиналась бы с того что созданый вами персонаж лежал на кровати как бы в забытие и потом сцена переходила бы на воспоминания. похоже как в ПЛ, когда вас оттубасили два урка и вы валяетесь на кровати у Ви. Только наоборот. Сначала на кровати а потом сцена с забытием, которая переходит на новые и новые сценки?
СПС огромное.
скриптовые сценки - одно из самых трудных. Не потому что там какие-то знания запредельные нужны, наоборот, там просто все. Но требует туеву кучу терпения.
Чтобы лежать на кровати - нужен специальный тайл с другим вокмешем, он у нас в хак-паке. В остальном то, что ты просишь обычно делают самостоятельно. На такой ролик может уйти несколько недель. Можешь для начала в ПЛ глянуть скрипты ролика забытья, чтобы проникнуться. Тут рядом есть темка для новичком по роликам, ознакомься с ней. Там Айв популярно разжевывает куда копать
ReyBrujo
Mar 17 2009, 16:34
Цитата(greye @ Mar 15 2009, 15:40)

Не стоят точки с запятой в конце 3-5, 7 строк. Еще лишняя пара фигурных скобок - сразу после CopyItem и закрывающая в конце. К тому же не олределена переменная iDel типа int, насколько видно.
Спасибо огромнейшее

все получилось!
Просто у мя не действует скрипт на копи инвентори =(а у мну как раз на него есть пример.пришлось самому все переделывать...
Так,вот еще один вопросик:как сделать предмет бессмертным?Персонажа я умею таковым делать,а вот предмет не умею.плизз,хелп
предмет в смысле placeable? Ящик там или дерево?
флажок plot в свойствах поставить.
А как реализовать прокачку героя до 60 лвл????
2da + скрипты. Но толку с этого немного, даже если пропишешь фиты 40-60 уровень.
Если в этой фразе ты ничего не понял - лучше не ломай над этим голову. наверняка есть другие задачи по модулю, более реалистичные и полезные.
Почему у меня не получается при диалоге с НПС (Продавец конец) немогу создать коня возле себя
пишу в диалоге в Action taken
Neverwinter Script
void main()
{
object oPC = GetPCSpeaker();
CreateObject(OBJECT_TYPE_CREATURE,"horse_ad1",GetLocation(oPC));
TakeGoldFromCreature(1000, oPC);
НПС тока деньги забирает а коня нету.
проверь res-ref лошади, который в скрипте "horse_ad1". У тебя в палитре должен быть такой объект с именно таким резрефом (не тэгом, а резрефом).
хм....а я tag туда писал в место ResRef... его вроде уже нельзя изменить нада при создании менять
странно я думал tag уникальный индификатор я по нему переходы из локу в локу делал порталы. т.д. думал с обьектами также...Мда
ты просто недопонимаешь смысл тэга и резрефа.
Если по простому:
тэг - неуникальный идентификатор размещенного в модуле объекта. Неуникальный, значит что ты можешь задать нескольким объектам одинаковый тэг.. а можешь и не задавать. Уникальность тэга для каждого объекта зависит от тебя.
резреф - уникальный идентификатор объекта в палитре. Те в палитре может быть только 1 объект с таким резрефом. При этом в модуле все эти размещенные объекты будут иметь одинаковый резреф.
при работе с объектами уже размещенными на локациях - используется тэг. Можно в принципе использовать и резреф, но функционал крайне ограничен, тэг удобнее и покрывает весь спектр возможных задач. При скриптовом создании новых объектов из палитры, используется только резреф.
понятнее стало?
зы: да, реф задается при создании. Но если объект уже есть в палитре, настроенный и все такое и влом создавать новый с правильным рез-рефом, делай копию. У копии поле рез-реф будет доступно для редактирования.
ReyBrujo
Apr 4 2009, 22:28
Можно как-нибудь сделать вокруг врага ауру,которая отбивает стрелы/уменьшает силу ударов/ускоряет врага?и чтоб сама аура показывалась до того времени,пока у врага не останется половины жизней?
Можно. Только отбивать стрелы не получится (но можно повысить АС против стрелкового). Все остальное можно.
serafim
Apr 21 2009, 09:53
вот нашел скрипт на нарубку железного деррева.
http://www.city-of-masters.ru/forums/index...amp;#entry94460Я когда-то задавал вопрос, по поводу, можно ли создать оружие кторое будет дамажить только одних НПС (рассу-монстров), а других нет?! Так вот, можно ли этот скрипт переделать, и ставить на НПС, что бы только одно оружие их било, а другое ломалось? еще видел скрипт из одного модуля(не помнб какого), там монстры обладали свойством разьедать оржие, но повреждение оно им наносилось. Думаю обьеденить эти два скрипта. только как правильно прописать, что бы имея одно оржужие повреждения наносились, а другим (любым)--нет. а то что это "любое" оружие будет разьедаться --это уже найду в скриптах. СПС
во-первых реально там ничего не ломается, а лишь выводится сообщение. Можно и ломку отскриптовать если шибко хочется.
во-вторых да, можно перенести на монстров. Надо ли доскриптовывать будет, или нет - хз. Зависит от условий у тебя. У меня спец. оружие было только двуручным, что избавляло меня от проблемы 2х оружий у игрока. Так же у меня не было напарника, поэтому атака дерева партией мною тоже не проверялась. Так же не учтена магия - мне было не актуально. (скрипт из недоделанного Пути Ниндзя, отсюда растут все мои допуски).
разъедать оружие? Можно понижать характеристики у оружия, можно накапливать переменную на нем, по достижении критической величины "ломать" оружие. Ломка зависит от твоей системы ломки/починки.
serafim
Apr 21 2009, 10:31
там понижаються характеристики и при понижение например до -3 бонус атаки--оружие дестроится.
понятно. В целом - ничего особенно сложного.
serafim
Apr 22 2009, 10:27
а какой скрипт вы ставили на деревья в ПЛ--там где дровосеки (по дороге на Верхний Хаспур) рубят деревья? после дестроя они(деревья) превращаются в поленья, которые потом можно было бы поднять.?
Я шарился по этим деревьям и в письменах ничего не нашел. можете ывложить такой скрипт?
странно, вроде как там должны быть все скрипты. Посмотри на всякий случай скрипты дровосеков самих, возможно работу с деревьями я зашил в них.
serafim
Apr 22 2009, 15:24
ок, спс вечером посмотрю. Если не найду, можешь выложить такой скрипт, Лекс? А то я пока не могу такое написать--знаний не хватает

ПС: еще такой вопросик не по теме. почему нельзя открыть сходу два тулсета, например версии 1.32 и 1.68 или 1.66--не важно. у меня не открывается

сори за "невтемный" вопрос.
virusman
Apr 22 2009, 17:51
Есть патч, который позволяет это сделать, но при этом надо запускать тулсеты из разных инсталляций НВН (т.е. из разных папок).
serafim
Apr 23 2009, 09:49
нашел эти скрипты. сенкс.
но появилась проблемка. Я хотел сделать так: рубаешь дерево--повляеться срубаное дерево (это получилось); потом рубаешь срубаное дерево и появляються поленья (это тоже получилось). Но беда вот в чем--скрипты я пока недопонимаю, поэтому делаю методом компилирования и "тыка"

Когда ты рубаешь дерево--только после его разрушения появляеться срубленое дерево, а когда ты рубаешь струбленое дерево--только после его дестроя должны появится поленья. А у меня при каджом ударе по срубленому дереву появляются поленья. Че за фиговина? скрипт я вставлял в срубленое дерево тотже, что стоит на деревьях в ПЛ (дорога на вехний Хаспур), только поменял названия "ресрефа" поленьи. А получаеться такая ерунда. что делать?
Цитата(serafim @ Apr 23 2009, 10:49)

А у меня при каджом ударе по срубленому дереву появляются поленья. Че за фиговина?
скрипт скорее всего стоит на onDamage. А описанное тобой - "на уничтожение". Те надо ставить на onDeath. Только там нюансов много.
Вообще удаленно, не видя скриптов, помочь сложно. Я про это тебе уже говорил.
serafim
Apr 23 2009, 17:38
точно! промограл ! СПс Лекс! так хрен знает когда бы заметил
serafim
Apr 27 2009, 11:24
ребята, хелп

(в который раз

Короче, писать скрипты пока еще не умею, делаю все методом тыка и компилирования. мне нужен был скрипт такого рода:
Игрок наступает на тригер--запускаеться кастсцена, такого рода:
Игрок подходет к месту №1--на ходу произносит фразу;
Дальше, подходит к месту №2--на ходу произносит фразу;
Дальше, подходит к месту №3-- садится на стул и произносит фразу после паузы;
После чего режим каст сцены исчезает.
Вот такое у меня детище получилось. Сразу гворю--- НЕ РЖАТЬ

я обьясняю, что ПОКА, мастерством написания скриптов не владею. НЕдавно 2 дня изучал 2да файлы, что бы подобавлять свои текстуры, фото и тому подобное. теперь пришла пора непосредственно более сеьезно изучать Тулсет и скрипты... А, еще мне бы хотелось что бы в скрипте игрок не бежал как лошадь а нормально ходил. Какая это функция я не вьехал. понял что-то типа ка инвиз, который накладывается на игрока в каст сцене, а потом снимается. Так вот посмотрите что есть что, исправте пожалуйста и допишите, пожалуйста. СПС. ВОТ:
Neverwinter Script
void main()
{
object oPC = GetEnteringObject(); // Берем того, кто наступил на триггер
object oChair = GetObjectByTag("Chair_cast_01");
object oWP_1 = GetWaypointByTag("WP_cast_01");
object oWP_2 = GetWaypointByTag("WP_cast_02");
object oWP_3 = GetWaypointByTag("WP_cast_03");
if (!GetIsPC(oPC) || GetLocalInt(OBJECT_SELF, "TRIGGER") == 1)
return;
{
SetLocalInt(OBJECT_SELF, "TRIGGER", 1);
SetCutsceneMode(oPC);
AssignCommand(oPC, ClearAllActions());
ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP_1)));
ActionDoCommand(AssignCommand(oPC, SpeakString("Бла-бла-бла...")));
ActionWait(3.5);
ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP_2)));
ActionDoCommand(AssignCommand(oPC, SpeakString("Тра-ля-ля...")));
ActionWait(2.5);
ActionDoCommand(AssignCommand(oPC, ActionMoveToObject(oWP_3)));
AssignCommand(oPC, ActionSit(oChair));
ActionWait(1.5);
ActionDoCommand(AssignCommand(oPC, SpeakString("Трам-тара-рам")));
ActionDoCommand(AssignCommand(oPC, ActionDoCommand(SetCutsceneMode(oPC, FALSE))));
}
}
gennady
Apr 27 2009, 11:54
Все действия записаны на триггер... А нужно на героя. С игроком что-то сделать посредством скриптов у тебя явно не получится!
Тебе нужно создать команды для героя, т.с. последовательный стой акций.
Вообще оператор ActionDoCommand нужен для создания акции из нужной функции, а вот просто с акцией не стоит его использовать...
Чтобы герой не застрял на точках, тут нужна другая функция ActionForceMoveToObjec значение (FALSE –идти TRUE – бежать) дальше расстояние fRange подхода до точки, дальше время fTimeout, после чего НПС прыгнет на нужную точку…
// Force the action subject to move to oMoveTo.
void ActionForceMoveToObject(object oMoveTo, int bRun=FALSE, float
fRange=1.0f, float fTimeout=30.0f)
Функция SpeakString есть и как акция - ActionSpeakString. Логичней использовать её...
Чтобы герой остановился при входе на триггер нужно прописать так:
AssignCommand(oPC, ClearAllActions(TRUE));
Иначе он будет бежать по инерции до точки клика...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста,
нажмите сюда.