Fenix:
1) спасибо за "1001"
2) Э-э-э, куда это пихать?
QUOTE (Vitalist @ Sep 18 2005, 17:14) |
1) спасибо за "1001" |
QUOTE (Vitalist @ Sep 18 2005, 17:14) |
2) Э-э-э, куда это пихать? |
Neverwinter Script Source |
void main() { ApplyEffectToObject(DURATION_TYPE_PERMANENT, EffectVisualEffect(VFX_DUR_PARALYZED), OBJECT_SELF); } |
QUOTE (Ghost @ Sep 19 2005, 14:44) |
Гм.. у меня вопрос. Как запретить игроку выбирать тот или иной класс\рассу??? Чтоб низя было играть например эльфами и орками и нельзя было бы выбрать класс, скажем рейнджер и вор. |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); if (GetRacialType(oPC) == RACIAL_TYPE_ELF || GetRacialType(oPC) == RACIAL_TYPE_HALFORC || GetClassByPosition(1, oPC) == CLASS_TYPE_RANGER || GetClassByPosition(1, oPC) == CLASS_TYPE_ROGUE) { SetCommandable(FALSE, oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(FALSE,TRUE), oPC); return; } } |
Neverwinter Script Source |
void main() { object oPC = GetLastPlayerDied(); if (GetRacialType(oPC) == RACIAL_TYPE_ELF || GetRacialType(oPC) == RACIAL_TYPE_HALFORC || GetClassByPosition(1, oPC) == CLASS_TYPE_RANGER || GetClassByPosition(1, oPC) == CLASS_TYPE_ROGUE) { string sDeathMessage = "Играть за эльфов и полуорков и классы рэнджера и вора не льзя"; PopUpDeathGUIPanel(oPC, FALSE, TRUE, 0, sDeathMessage); } } |
QUOTE (zmey @ Sep 19 2005, 18:37) |
Короче, как задавать время (не в секундах, а в днях, месяцах и т. п.) через которое должно произойти событие? |
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) |
Neverwinter Script Source |
int GetTimeHour(), int GetTimeMinute(), int GetTimeSecond(), int GetTimeMillisecond() |
Neverwinter Script Source |
// Set the calendar to the specified date. // - nYear should be from 0 to 32000 inclusive // - nMonth should be from 1 to 12 inclusive // - nDay should be from 1 to 28 inclusive // 1) Time can only be advanced forwards; attempting to set the time backwards // will result in no change to the calendar. // 2) If values larger than the month or day are specified, they will be wrapped // around and the overflow will be used to advance the next field. // e.g. Specifying a year of 1350, month of 33 and day of 10 will result in // the calender being set to a year of 1352, a month of 9 and a day of 10. void SetCalendar(int nYear,int nMonth, int nDay) |
Neverwinter Script Source |
int GetCalendarYear(), int GetCalendarMonth(), int GetCalendarDay(). |
QUOTE (zmey @ Sep 19 2005, 18:37) |
Народ! Я зае... мучился! Не могу написать такую вещь: Непись дает игроку задание: иди спаси моего сына/брата/жениха/ ит.п., если не выполнишь за день, то его убьют. Так вот, как определить, что день прошел и сыну/братю/жениху помирать пора? |
Neverwinter Script Source |
void main() { object oNPC = GetObjectByTag("ТАГ СПАСАЕМОГО НПС"); SetLocalInt(oNPC, "START", 1); SetLocalInt(oNPC, "YEAR", GetCalendarYear() + 1); SetLocalInt(oNPC, "Month", GetCalendarMonth() +1); SetLocalInt(oNPC, "Day", GetCalendarDay() + 1); SetLocalInt(oNPC, "Hour", GetTimeHour() + 1); SetLocalInt(oNPC, "Minute", GetTimeMinute() + 1); SetLocalInt(oNPC, "Second", GetTimeSecond() + 1); SetLocalInt(oNPC, "Millisecond", GetTimeMillisecond() + 1); } |
Neverwinter Script Source |
void main() { if(GetLocalInt(OBJECT_SELF, "START") == 1 || GetLocalInt(OBJECT_SELF, "FINISH") == 1) return; int iYaer = GetCalendarYear(); int iMonth = GetCalendarMonth(); int iDay = GetCalendarDay(); int iHour = GetTimeHour(); int iMinute = GetTimeMinute(); int iSecond = GetTimeSecond(); int iMillisecond = GetTimeMillisecond(); if(iYaer >= GetLocalInt(OBJECT_SELF, "YEAR")) //ну и так далее DestroyObject(OBJECT_SELF); } |
QUOTE (zmey @ Sep 19 2005, 18:37) |
и еще: как из модуля в модуль перенести год/день/месяц? |
QUOTE (zmey @ Sep 19 2005, 18:37) |
не могу сделать поединок между магами: не кастуют друг на друга, сволочи! Поможите, люди добрые!!! |
Neverwinter Script Source |
void ActionCastSpellAtObject(int nSpell, object oTarget, int nMetaMagic=METAMAGIC_ANY, int bCheat=FALSE, int nDomainLevel=0, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT, int bInstantSpell=FALSE) |
QUOTE (zmey @ Sep 19 2005, 18:37) |
3. как сделать разговор между двумя неписями? |
QUOTE (Хэмфаст @ Sep 19 2005, 19:41) |
Как вскрыть и изменить информацию dialog.tlk? |
QUOTE (Хэмфаст @ Sep 19 2005, 19:41) |
Как вскрыть и изменить информацию dialog.tlk? |
QUOTE (Ghost @ Sep 19 2005, 14:44) |
Гм.. у меня вопрос. Как запретить игроку выбирать тот или иной класс\рассу??? Чтоб низя было играть например эльфами и орками и нельзя было бы выбрать класс, скажем рейнджер и вор. |
QUOTE (Хэмфаст @ Sep 19 2005, 19:41) |
Как вскрыть и изменить информацию dialog.tlk? |
QUOTE (-fenix- @ Sep 19 2005, 19:10) |
Как и с полом в леворе. |
QUOTE (Vhall @ Sep 19 2005, 21:26) |
Если только ставится задача "сделать через ж-у":D |
QUOTE (-fenix- @ Sep 19 2005, 19:54) |
Тебе в форум 3D MAX, Maya и др... тема 2DA ТАБЛИЦЫ. |
Neverwinter Script Source |
int iHit = GetHitDice(oPC); // Берем уровень объекта int i = iHit*1000; // Это ХР на один уровень больше чем у объекта |
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: OnPlayerLevelUp "am_mod_levelup" //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* Скрипт запрещающий использование выборочных классов в модуле. Спасибо Dumbo за упрощенную форумулу, моя была в пять раз больше ![]() */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 20.09.2005 //::////////////////////////////////////////////// void main() { object oPC = GetFirstPC(); int iHit = GetHitDice(oPC); // Берем уровень игрока int iXP = GetXP(oPC); // Вся ХР игрока string sClass; // Для сообщения игроку что он сделал неправильно int iClass2 = GetClassByPosition(2, oPC); // Второй класс мультикласса int iClass3 = GetClassByPosition(3, oPC); // Третий класс мультикласса int F = CLASS_TYPE_FIGHTER; // Воин int R = CLASS_TYPE_ROGUE; // Вор int D = CLASS_TYPE_DRUID; // Друид int P = CLASS_TYPE_PALADIN; // И так далее... // Для примера классs: Если Воин, Вор, Друид, Паладин if ((iClass2==F || iClass3==F) || (iClass2==R || iClass3==R) || (iClass2==D || iClass3==D) || (iClass2==P || iClass3==P)) { if(iClass2==F || iClass3==F) sClass = "Воин"; if(iClass2==R || iClass3==R) sClass = "Вор"; if(iClass2==D || iClass3==D) sClass = "Друид"; if(iClass2==P || iClass3==P) sClass = "Паладин"; // Присвоим РС в начале ХР на уровень меньше, значит заберем один // уровень, что мы запретили из использования. Дальше, мы возвращаем // назад всю нашу ХР, ведь ХР может быть намного больше чем мы // потратили на поднятие уровня. SetXP(oPC, (iHit*(iHit-1)*500)-((iHit-1)*1000)); DelayCommand(0.5, SetXP(oPC, iXP)); // Можно так сообщить, можно что-то другое. SendMessageToPC(oPC, "Вы использовали запрещенный класс: "+sClass); /* Тут можно вписать что-нибудь из эффектов, для острастки. */ } } |
QUOTE (Ghost @ Sep 20 2005, 02:26) |
Aiwan спасибо огромное, но я думаю что лучше сделать это через 2да. |
QUOTE (Aiwan @ Sep 20 2005, 09:10) |
Подскажешь, как сделал? Может и я использую |
QUOTE (Vhall @ Sep 19 2005, 21:26) |
Замени (именно замени, а не удали!) 2da строки пустышками - ****. Это racialtypes и classes |
QUOTE (Vitalist @ Sep 20 2005, 15:47) |
Кто-нибудь поделиться секретом, на счет одевания предмета на NPC во время диалога? |
Neverwinter Script Source |
object oDrag = GetItemPossessedBy(oHalib, "AM_ITM_DAG002"); AssignCommand(oHalib, ActionEquipItem(oDrag, INVENTORY_SLOT_RIGHTHAND)); |
QUOTE (Aiwan @ Sep 20 2005, 09:10) |
Подскажешь, как сделал? Может и я использую. ![]() ![]() |
QUOTE (Lex @ Sep 20 2005, 15:15) |
в столбце PCClass в таблице classes.2da у тех классов, что тебе не нужны поставь 0. (не забудь, что есть рекомендованные классы, это обычно воин. Так что если его блокируешь, то нужно еще где-то поменять рекомендованный класс, чтобы не было глюка. ) |
QUOTE (Vhall @ Sep 19 2005, 23:22) |
-fenix-, да не обижайся ты. |
QUOTE (NedWarN @ Sep 20 2005, 02:45) |
2-fenix- Скрипт с Временем. Как только входиш в локу, скрипт дестроя на OnHeartbeat НеПиСя, сразу срабатывает. |
Neverwinter Script Source |
if(GetLocalInt(OBJECT_SELF, "START") == 1 || GetLocalInt(OBJECT_SELF, "FINISH") == 1) |
Neverwinter Script Source |
if(GetLocalInt(OBJECT_SELF, "START") != 1 || GetLocalInt(OBJECT_SELF, "FINISH") == 1) |
QUOTE (Vitalist @ Sep 20 2005, 22:17) |
Aiwan, что-то он не хочет... |
CODE |
void main() { object oDrag = GetItemPossessedBy(oHalib, "Тэг_шмотки"); AssignCommand(oHalib, ActionEquipItem(oDrag, INVENTORY_SLOT_RIGHTHAND)); } |
Neverwinter Script Source |
object oHalib = OBJECT_SELF; |
Neverwinter Script Source |
object oHalib = GetObjectByTag("тэг нужного непися"); |
QUOTE (Vitalist @ Sep 21 2005, 19:39) |
А какие еще можно запихнуть эфекты, кроме того? |
Neverwinter Script Source |
TakeGoldFromCreature(GetGold(oPC),oPC, TRUE); |
QUOTE (Daemonix @ Sep 26 2005, 23:51) |
В разделе "ВиО по тулсету часть 2" было описано, как убрать из инвентаря несколько одинаковых предметов с одним тэгом. А как проверить наличие в инвентории этих нескольких предметов с одним тэгом? |
Neverwinter Script Source |
int StartingConditional() { string sGH = "items_tag"; object oGH = GetFirstItemInInventory(GetPCSpeaker()); int nCount = 0; while (GetIsObjectValid(oGH)) { if (GetTag(oGH) == sGH) nCount++; //считаем кол-во предметов с одинаковым тэгом oGH = GetNextItemInInventory(GetPCSpeaker()); } if (nCount>1) return TRUE; return FALSE; } |
QUOTE (Daemonix @ Sep 26 2005, 23:51) |
И вот ещё: ставлю на начало модуля команду Neverwinter Script Source TakeGoldFromCreature(GetGold(oPC),oPC, TRUE); , а нет, денюжки никто не забирает... Почему? Вроде бы всё компилируется.. |
QUOTE (Daemonix @ Sep 26 2005, 23:51) |
И последнее: нужно, чтобы в модуль играли непрокачанные персы первого уровня. Можно ли на входе клиента в модуль забрать у него все очки опыта? Я знаю, что можно. Но у перса всё же останутся его прокачанные скиллы, или я не прав? В общем, мой вопрос таков: как сделать суперперса зелёным новичком 1ого уровня? |
Neverwinter Script Source |
SetXP(GetFirstPC(),0); |
QUOTE (yudgi @ Sep 27 2005, 04:56) |
Привет всем, нужна ваша помощь, как сделать так, чтобы при в ходе в модуль в журнале поялялось задание |
Neverwinter Script Source |
AddJournalQuestEntry("first_record", 1, oPC, FALSE, FALSE, FALSE); first_record - тэг категории (конкретной ветки, которая может содержать большое кол-во записей) журнала 1 - ID. грубо говоря, порядковый номер в категории. (можно перескакивая: 100,200,300 и т.д.) oPC - игрок, на которого "вешать" запись. в данном случае можно GetEnteringObject, но естественно с проверками, а нет ли у него уже такой записи не ДМ ли он... FALSE - для всей партии, в которой состоит этот герой или только для него одного. TRUE - для всей. FALSE - для всех ли игроков в принципе в модуле. TRUE - для всех. FALSE - перезаписывать ли запись, если ID выше данного. TRUE - перезаписывать. Т.е. к примеру у нас уже есть запись в этой категории под ID 4. |
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)); } } |
QUOTE (dumbo @ Sep 27 2005, 08:47) |
кстати, о птичках: народ, вы ненавязчиво указывайте, что именно вы делаете - сингл-модуль или шард. лучше даже в подпись вставить. типа "я синглофил" |
Neverwinter Script Source |
void main() { object oPC = GetEnteringObject(); string sString = " "; } |
QUOTE (zmey @ Sep 27 2005, 12:35) |
НО! ТЕКСТ БУДЕТ ПОЯВЛЯТСЯ КАЖДЫЙ РАЗ ПРИ ВХОДЕ В ЛОКАЦИЮ |