Neverwinter Script Source | float GetX(location lTarget) { return GetPositionFromLocation(lTarget).x; }
float GetY(location lTarget) { return GetPositionFromLocation(lTarget).y; }
float GetZ(location lTarget) { return GetPositionFromLocation(lTarget).z; }
// lWizLoc - ЛОКАЦИЯ КАСТУЮЩЕГО // lSpelLoc - ЛОКАЦИЯ ЦЕНТРА СТЕНЫ // nCount - КОЛЛИЧЕСТВО СИГМЕНТОВ - ПЛЭЙСИБЛОВ // fSpellTime - ПРОДОЛЖИТЕЛЬНОСТЬ СПЕЛЛА void IceWallSpell(location lWizLoc, location lSpelLoc, int nCount, float fSpellTime) { vector vAB = GetPositionFromLocation(lSpelLoc) - GetPositionFromLocation(lWizLoc); vAB = Vector(vAB.x,vAB.y); float fAlfa = VectorToAngle(vAB); float fAB = VectorMagnitude(vAB); float fBC = 0.0; float fX1, fX2, fY1, fY2; location lLoc1, lLoc2; object oPlaceable1, oPlaceable2; string sVR; int bTrueFalse = TRUE; /// РЕСРЕФЫ ПЛЭЙСИБЛОВ string sResRef1 = "plc_box2"; string sResRef2 = "plc_box3"; /// РАЗМЕР ПЛЭЙСИБЛА (РАССТОЯНИЕ МЕЖДУ ЛОКАЦИЯМИ) float fSize = 1.1; nCount--; while(nCount >= 0) { fBC = fSize*nCount/2; fX1 = GetX(lWizLoc) + fAB*cos(fAlfa) + fBC*sin(fAlfa); fX2 = GetX(lWizLoc) + fAB*cos(fAlfa) - fBC*sin(fAlfa); fY1 = GetY(lWizLoc) + fAB*sin(fAlfa) - fBC*cos(fAlfa); fY2 = GetY(lWizLoc) + fAB*sin(fAlfa) + fBC*cos(fAlfa); sVR = (bTrueFalse) ? sResRef1 : sResRef2; bTrueFalse = !bTrueFalse; /// ЛОКАЦИИ lLoc1 = Location(GetAreaFromLocation(lWizLoc), Vector(fX1, fY1, GetZ(lSpelLoc)), fAlfa); oPlaceable1 = CreateObject(OBJECT_TYPE_PLACEABLE, sVR, lLoc1); AssignCommand(oPlaceable1, DelayCommand(fSpellTime, DestroyObject(OBJECT_SELF))); if(nCount !=0) { /// ЛОКАЦИИ lLoc2 = Location(GetAreaFromLocation(lWizLoc), Vector(fX2, fY2, GetZ(lSpelLoc)), fAlfa); oPlaceable2 = CreateObject(OBJECT_TYPE_PLACEABLE, sVR, lLoc2); AssignCommand(oPlaceable2, DelayCommand(fSpellTime, DestroyObject(OBJECT_SELF))); } nCount = nCount - 2; } return; } |
Этот скрипт я писал для Айс Блэйда, для его проекта ледяной стены. Скрипт должен создавать заданное количество плэйсиблов (сигментов ледяной стены) напротив игрока и дестроить их через заданное время. Пока я использовал синьки сдандартных ящиков (IMG: style_emoticons/kolobok_light/smile.gif) Всего два вида чередующихся плэйсиблов.
Сообщение отредактировал Baal - Mar 11 2005, 21:14
|