QUOTE (Chimeric @ Oct 14 2005, 21:01) |
С благословения Айвана создаю отдельную тему для "срочных" скриптов в конкурсных модулях. И вот сразу вопрос: как сделать так, чтобы рядом с игроком из ниоткуда вызывался (создавался) конкретный сундук с конкретным содержимым? |
Neverwinter Script Source |
// Create an object of the specified type at lLocation. // - nObjectType: OBJECT_TYPE_ITEM, OBJECT_TYPE_CREATURE, OBJECT_TYPE_PLACEABLE, // OBJECT_TYPE_STORE, OBJECT_TYPE_WAYPOINT // - sTemplate // - lLocation // - bUseAppearAnimation // - sNewTag - if this string is not empty, it will replace the default tag from the template object CreateObject(int nObjectType, string sTemplate, location lLocation, int bUseAppearAnimation=FALSE, string sNewTag="") |
Neverwinter Script Source |
// Get the location of oObject. location GetLocation(object oObject) |
Neverwinter Script Source |
location CreateRandomLocation(object oTarget, float fRadius, int bOnLine = TRUE) { if(!bOnLine) fRadius=IntToFloat(Random(FloatToInt(fRadius))); float iXO=VectorMagnitude(GetPosition(oTarget))*cos(VectorToAngle(GetPosition(oTarget))); float iYO=VectorMagnitude(GetPosition(oTarget))*sin(VectorToAngle(GetPosition(oTarget))); float fRndomAngle=IntToFloat(Random(360)); location lNEW = Location(GetArea(oTarget), Vector(iXO+fRadius*cos(fRndomAngle), iYO+fRadius*sin(fRndomAngle)), 360.0); return lNEW; } void main() { object oPC = GetEnteringObject(); location lRLoc = CreateRandomLocation(oPC, 2.0);//2.0 - это радиус, на котором от ПС будет создаваться точка появления сундука CreateObject(OBJECT_TYPE_PLACEABLE, "РесРеф сундука", lRLoc); } |
Neverwinter Script Source |
void main() { object oPC; oPC = GetItemActivator(); object oTarget; AssignCommand(oTarget, ActionStartConversation(oPC, "proclus")); } |
Neverwinter Script Source |
void main() { object oPC = GetItemActivator(); object oTarget = GetItemActivated();//вот теперь ясно, что это! //если у тебя несколько активируемых предметов, то нужно сделать проверку на ТАГ if(GetTag(oTarget) == "ТАГ нужного итема") { AssignCommand(oTarget, ActionStartConversation(oPC, "proclus")); } else { return; } } |
QUOTE |
PCs can have dialogue with NPCs, placeables, triggers and doors. Items cannot converse (but invisible placeables with the same name as an item can). |
Neverwinter Script Source |
void main() { object oPC = GetItemActivator(); object oItem = GetItemActivated(); if (GetTag(oItem)=="ТЭГ айтема") { object oCnv = CreateObject(OBJECT_TYPE_PLACEABLE, "РЕЗРЕФ нашего невидимого плэйса", GetLocation(oPC)); DelayCommand(1.0, AssignCommand(oCnv, ActionStartConversation(oPC, "proclus", TRUE))); } } |
QUOTE (Chimeric @ Oct 15 2005, 13:11) |
А генератор Лилака даёт тот скрипт, что я вставил, и говорит, что персонаж, мол, на самом деле беседует сам с собой (и видит свой портрет). |
Neverwinter Script Source |
void main() { object oPC = GetItemActivator(); AssignCommand(oPC, ActionStartConversation(oPC, "untitled008")); } |
QUOTE (dumbo @ Oct 15 2005, 12:04) |
и чуточку исправим, чтобы таки работало ... |
Neverwinter Script Source |
int StartingConditional() { object oPC = GetPCSpeaker(); if (GetGender(oPC)!=GENDER_FEMALE) return FALSE; // если не девушка, строку не даем if (GetRacialType(oPC)==RACIAL_TYPE_ELF) return TRUE; // если эльф - даем if (GetRacialType(oPC)==RACIAL_TYPE_HALFELF) return TRUE; // если полуэльф - даем return FALSE; // иначе не даем } |
Neverwinter Script Source |
int StartingConditional() { object oPC = GetPCSpeaker(); int iSpam = GetRacialType(oPC) == RACIAL_TYPE_ELF || GetRacialType(oPC) == RACIAL_TYPE_HALFELF; return iSpam && GetGender(oPC) == GENDER_FEMALE; } |
Neverwinter Script Source |
int StartingConditional() { object oPC = GetPCSpeaker(); //Результат работы функции определяется по формуле: //bResult = A и (B или C), //где A - это результат проверки на пол (девушка), //а B или C - проверки по рассовому типу (Эльфийка, Полуэльфийка). //Начинаем складывать значения, если результат проверки на пол неудачен, то //сразу же возвращаем ЛОЖЬ. FALSE && ... всегда равно FALSE //В случае удачи считаем A = TRUE if (GetGender(oPC)!=GENDER_FEMALE) return FALSE; //Следующие две строки соответственно проверка на расу //Если одна из них ПРАВДА, то возвращаем TRUE //Выражение TRUE || ... , а так же наоборот ... || TRUE возвращает TRUE //Формула принимает следующий вид: //bResult = TRUE(девушка) && (TRUE || FALSE), если эльфийка if (GetRacialType(oPC)==RACIAL_TYPE_ELF) return TRUE; //bResult = TRUE(девушка) && (FALSE || TRUE), если полуэльфийка if (GetRacialType(oPC)==RACIAL_TYPE_HALFELF) return TRUE; //Если обе проверки провалились, то возвращаем FALSE, так как формула принимает вид: //bResult = TRUE && (FALSE || FALSE) return FALSE; } |
Neverwinter Script Source |
int StartingConditional() { object oPC = GetPCSpeaker(); if (GetLocalString(oPC, "victorspoken") == "1") return FALSE; if (GetGender(oPC) != GENDER_FEMALE) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_DWARF) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_GNOME) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_HALFLING) return FALSE; return TRUE; } |
QUOTE (Chimeric @ Oct 18 2005, 14:47) |
if (GetLocalString(oPC, "victorspoken") == "1") return FALSE; |
QUOTE (Chimeric @ Oct 18 2005, 14:47) |
Должно работать, так? Если НЕ говорила с NPC, то коли относится к одной из этих рас, получи вариант. |
QUOTE (Chimeric @ Oct 18 2005, 14:47) |
if (GetRacialType(oPC) != RACIAL_TYPE_DWARF) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_GNOME) return FALSE; if (GetRacialType(oPC) != RACIAL_TYPE_HALFLING) return FALSE; |
Neverwinter Script Source |
int StartingConditional() { object oPC = GetPCSpeaker(); if (GetLocalString(oPC, "victorspoken") == "1") return FALSE; if (GetGender(oPC) != GENDER_FEMALE) return FALSE; if (GetRacialType(oPC) == RACIAL_TYPE_DWARF) return TRUE; if (GetRacialType(oPC) == RACIAL_TYPE_GNOME) return TRUE; if (GetRacialType(oPC) == RACIAL_TYPE_HALFLING) return TRUE; return FALSE; } |
QUOTE (Lex @ Oct 22 2005, 09:34) |
закрываю. Переношу. |