QUOTE |
раз они одинаковые, то можно не делать 2-х разных переменных |
QUOTE |
он даже компилиться не должен |
Neverwinter Script Source |
effect eVis = EffectVisualEffect(VFX_FNF_IMPLOSION); effect eVis2 = EffectVisualEffect(VFX_FNF_LOS_EVIL_20); |
Neverwinter Script Source |
object oCasic = GetObjectByTag("CASIC"); |
Neverwinter Script Source |
object oNPC = GetObjectByTag("DRUG"); и object oCasic = GetObjectByTag("CASIC"); |
Neverwinter Script Source |
#include "x2_inc_cutscene" int CUTSCENE_NUMBER = 81; ![]() void CallSetStatus(int nCutscene, object oObject, int nVal) { if(nCutscene == GetLocalInt(oObject, "nCutsceneNumber")) { SetLocalInt(oObject, "STATUS", nVal); } } void CutSetStatus(float fDelay, object oObject, int nVal) { int nCutscene = GetActiveCutsceneNum(); fDelay = CutCalculateCurrentDelay(fDelay, nCutscene); DelayCommand(fDelay, CallSetStatus(nCutscene, oObject, nVal)); } void CallSetAppearance(int nCutscene, object oObject) { if(nCutscene == GetLocalInt(oObject, "nCutsceneNumber")) { SetCreatureAppearanceType(oObject, APPEARANCE_TYPE_SKELETON_COMMON); } } void CutSetAppearance(float fDelay, object oObject) { int nCutscene = GetActiveCutsceneNum(); fDelay = CutCalculateCurrentDelay(fDelay, nCutscene); DelayCommand(fDelay, CallSetAppearance(nCutscene, oObject)); } void main() { //Dalee IDUT OBJECTA+++++++++++WGR WRG WRG FOREVA+++++++++++++++++++++++++++++++ object oWP = GetWaypointByTag("GARIC_SUDA"); object oWP1 = GetWaypointByTag("1"); object oWP2 = GetWaypointByTag("2"); object oWP3 = GetWaypointByTag("3"); object oGlvWP = GetWaypointByTag("Boss"); object oPC = GetPCSpeaker(); object oNPC = GetObjectByTag("DRUG"); object oCasic = GetObjectByTag("CASIC"); object oCamera1 = GetWaypointByTag("Camera_1"); object oCamera2 = GetWaypointByTag("Camera_2"); object oCamera3 = GetWaypointByTag("Camera_3"); //Effect visual effect========================================================= effect eVis = EffectVisualEffect(VFX_FNF_IMPLOSION); effect eVis2 = EffectVisualEffect(VFX_FNF_LOS_EVIL_20); effect eGlavWP = EffectVisualEffect(VFX_IMP_HARM); SetLocalInt(oCasic, "STATUS", 1); CutSetActiveCutscene(CUTSCENE_NUMBER, CUT_DELAY_TYPE_CUMULATIVE); CutSetActiveCutsceneForObject(oPC, CUTSCENE_NUMBER, TRUE); CutSetActiveCutsceneForObject(oNPC, CUTSCENE_NUMBER); CutSetActiveCutsceneForObject(oCasic, CUTSCENE_NUMBER); CutFadeOutAndIn(0.0, oPC, 2.5); CutSetCutsceneMode(1.0, oPC, TRUE, TRUE, TRUE, TRUE); CutSetLocation(0.0, oPC); CutSetCamera(0.0, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 100.0, CAMERA_TRANSITION_TYPE_SNAP); // Camera zooms on the scout CutJumpToObject(1.0, oPC, oCamera1); CutSetCamera(0.2, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 65.0, CAMERA_TRANSITION_TYPE_SLOW); // scout's first line... CutActionStartConversation(2.0, oCasic, oCasic, "soul"); CutPlayAnimation(1.0, oCasic, ANIMATION_LOOPING_TALK_FORCEFUL, 3.0); CutActionMoveToObject(1.0, oNPC, oNPC, FALSE); CutSetStatus(2.5, oCasic, 2); // scout's second line... CutActionStartConversation(1.0, oCasic, oCasic, "soul"); //CutPlayAnimation(1.0, oScout, ANIMATION_LOOPING_TALK_LAUGHING, 5.0); CutActionMoveToObject(0.0, oNPC, oNPC, FALSE); CutSetStatus(4.0, oCasic, 3); // scout hears the sound CutActionStartConversation(1.0, oCasic, oCasic, "soul"); CutSetFacingPoint(3.0, oCasic, GetTag(oNPC)); CutSetMusic(0.0, oPC, TRACK_BATTLE_ARIBETH); CutSetStatus(0.0, oCasic, 4); CutSetCamera(0.0, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 40.0, CAMERA_TRANSITION_TYPE_MEDIUM); // pray in elven... CutActionStartConversation(1.5, oCasic, oCasic, "soul"); CutPlayAnimation(1.2, oNPC, ANIMATION_LOOPING_SPASM, 6.0); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oNPC); CutActionStartConversation(1.0, oNPC, oNPC, "oii"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oNPC); CutActionStartConversation(1.0, oNPC, oNPC, "oii2"); CutPlaySound(0.0, oPC, "vs_favhen4m_dead"); CutSetCamera(0.0, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 16.0, 17.0, CAMERA_TRANSITION_TYPE_VERY_FAST); CutPlaySound(0.5, oPC, "vs_favhen5m_dead"); CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 16.0, 20.0, CAMERA_TRANSITION_TYPE_VERY_FAST); CutPlaySound(0.5, oPC, "vs_favhen4m_dead"); CutSetAppearance(0.0, oNPC); CutSetCamera(1.0, oPC, CAMERA_MODE_TOP_DOWN, 90.0, 6.0, 5.0, CAMERA_TRANSITION_TYPE_VERY_FAST); CutFadeOutAndIn(3.0, oPC, 2.5); CutAdjustReputation(0.0, oCasic, oPC, -50); CutAdjustReputation(0.0, oPC, oCasic, -50); //Escho camera================================================================= CutJumpToObject(1.0, oPC, oCamera2); CutSetCamera(0.2, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 65.0, CAMERA_TRANSITION_TYPE_SLOW); CutDisableCutscene(CUTSCENE_NUMBER, 1.0, 1.0); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP1); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP2); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP3); CutSetCamera(0.3, oPC, CAMERA_MODE_TOP_DOWN, 12.0, 10.0, 65.0, CAMERA_TRANSITION_TYPE_SLOW); ActionWait(1.7); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP1); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP2); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP3); CutSetCamera(0.4, oPC, CAMERA_MODE_TOP_DOWN, 0.0, 10.0, 5.0, CAMERA_TRANSITION_TYPE_SLOW); ActionWait(2.7); CutActionStartConversation(1.0, oNPC, oNPC, "oii3"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP1); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP2); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis2,oWP3); CutActionStartConversation(1.0, oNPC, oNPC, "oii4"); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eGlavWP,oGlvWP); //============================================================================== ![]() } |
QUOTE |
DelayCommand(5.0, Effect***(..)); - БРЕД. |
Neverwinter Script Source |
CutSetMusic(0.0, oPC, TRACK_BATTLE_ARIBETH); |
Neverwinter Script Source |
EffectDamage(object owp8,int nDamageType = AMAGE_TYPE_FIRE,int nDamagePower = DAMAGE_POWER_NORMAL); |
Neverwinter Script Source |
effect DMG = EffectDamage(20, DAMAGE_TYPE_FIRE, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,DMG,oPC); |
QUOTE |
если тебе нужно наложение эффекта повреждений, то схема такая: Neverwinter Script Source effect DMG = EffectDamage(20, DAMAGE_TYPE_FIRE, DAMAGE_POWER_NORMAL); ApplyEffectToObject(DURATION_TYPE_INSTANT,DMG,oPC); приспосабливай к твоим требованиям. CutSetMusic() - я такой функции не знаю. В СоУ такой нет. Может быть она из библы "x2_inc_cutscene". Надо там смотреть, что почем. И камера тоже оттуда скорее всего |
Neverwinter Script Source |
void main() { effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE); location lLoc = GetLocation(GetNearestObjectByTag("WP_Mor")); object oMor = CreateObject(OBJECT_TYPE_CREATURE,"mor1",lLoc,TRUE); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2),lLoc); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oMor); } |
Neverwinter Script Source |
{ effect eVis = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE); location lLoc = GetLocation(GetNearestObjectByTag("WP_Mor2")); object oMor = CreateObject(OBJECT_TYPE_CREATURE,"mor2",lLoc,TRUE); ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2),lLoc); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,eVis,oMor); } |
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: ZABRAT V AD //:: Copyright © 2001 Bioware Corp. //::////////////////////////////////////////////// /* */ //::////////////////////////////////////////////// //:: Created By: JA //:: Created On: December //::////////////////////////////////////////////// void main() { object oNPC = OBJECT_SELF; object oNPC2 = GetObjectByTag("DEMON_2"); object oNPC3 = GetObjectByTag("DEMON_3"); effect eVis = EffectVisualEffect(VFX_FNF_SUMMON_CELESTIAL); effect eVis2 = EffectVisualEffect(VFX_IMP_HARM); effect eVis3 = EffectVisualEffect(VFX_IMP_HARM); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(OBJECT_SELF)); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis2, GetLocation(oNPC2)); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis3, GetLocation(oNPC3)); DestroyObject(OBJECT_SELF,3.0); DestroyObject(oNPC2,3.0); DestroyObject(oNPC3,3.0); SetCommandable(FALSE); } |
QUOTE |
скрипт райз дэд с штрафом на опыт 150 и на резурект соответсвенно |
QUOTE |
ограничить каст Тайм Стопа одним разом за отдых |
Neverwinter Script Source |
if (GetTag(oItem)=="ITM_ROD_CHIMERIC") { SetLocalObject(oActivator,"ACTIVITEM",oItem); AssignCommand(oActivator,ActionStartConversation(oActivator,"rod_chimeric")); } |
Neverwinter Script Source |
void main() { object oRod = GetLocalObject(GetPCSpeaker(),"ACTIVITEM"); int iCharges = GetItemCharges(oRod); if (iCharges==0) return; if (Random(100)<=20) { тут взрыв скриптуй } else { тут все остальное } SetItemCharges(oRod, iCharges-1); } |
Neverwinter Script Source |
/// Get Random Location. /// BAAL, -=WRG!=- Team location RandomLocation(object oTarget, float fRadius, int iLine = TRUE) { if(!iLine) 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 lNewLoc=Location(GetArea(oTarget),Vector(iXO+fRadius*cos(fRndomAngle), iYO+fRadius*sin(fRndomAngle)), 360.0); return lNewLoc; } |
Neverwinter Script Source |
ActionCastFakeSpellAtLocation(int, location, int) |
QUOTE (Chimeric @ Jan 21 2005, 11:23) |
Да, вот и конец задумке... До всего этого мне пилить ещё годы. |
Neverwinter Script Source |
#include "x2_inc_spellhook" void main() { int lNonCast; object oPC = GetLastSpellCaster(); if (!X2PreSpellCastCode()) { return; } location lTarget = GetSpellTargetLocation(); effect eVis = EffectVisualEffect(VFX_FNF_TIME_STOP); effect eTime = EffectTimeStop(); int nRoll = 1 + d4(); SetLocalInt(oPC, "lNonCast", lNonCast); SignalEvent(OBJECT_SELF, EventSpellCastAt(OBJECT_SELF, SPELL_TIME_STOP, FALSE)); DelayCommand(0.75, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eTime, OBJECT_SELF, 9.0)); ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, lTarget); } |
Neverwinter Script Source |
object oTarget = GetSpellTargetObject(); GiveXPToCreature(oTarget, -150 * GetHitDice(oTarget)); |
Neverwinter Script Source |
void main() { // int lNonCast; - висит на игроке object oPC = GetLastSpellCaster(); int iNonCast=GetLocalInt(oPC, sVarName); if (!X2PreSpellCastCode()) { return; } if (iNonCast==1) { return FALSE; } SetLocalInt(oPC, sVarName, 1); //.... // Дальше как и было. |
Neverwinter Script Source |
SetLocalInt(oPC, sVarName, 0); |
Neverwinter Script Source |
{ return FALSE; } |
Neverwinter Script Source |
void main() |
QUOTE (Лито @ Jan 21 2005, 10:34) | ||
|
QUOTE (Лито @ Jan 21 2005, 09:59) |
а вот со штрафом я не понимаюесли там одна строка может скажешь какая? |
Neverwinter Script Source |
SetXP(oPC,GetXP(oPC)-РАЗМЕР ШТРАФА); |
QUOTE |
Nokoll, выдавать чужие скрипты за свои - как минимум дурной тон. На будущее.. |
QUOTE (Csardas @ Jan 22 2005, 07:07) |
Народ помогайте дайте скриптик, мне очень нужно чтобы НПК дерется с тобой и когда он будет присмерти начел разговор с РС помогите. |
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: Copyright © 2004 WRG! www.wrg.ru //:: Name: oud_am_warrord //::////////////////////////////////////////////// /* UserDefined - */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 26.02.2004 //::////////////////////////////////////////////// void main() { int nEvent = GetUserDefinedEventNumber(); //======================= DAMAGED EVENT 1006 =================================== if (nEvent == 1006) { object oPC = GetLastDamager(); object oHench = GetHenchman(oPC); object oWord = OBJECT_SELF; int iCurHP = GetCurrentHitPoints(OBJECT_SELF); // в данный момент НР int iMaxHP = GetMaxHitPoints(OBJECT_SELF); // Макс. число НР int iD; //============================================================================== if (!GetIsPC(oPC) || !GetLocalInt(oWord, "DO_IT")) {return;} int Class = GetClassByPosition(1, oPC); // В зависимости от класса будет нужно сделать сепуку НПС // чем больше "танк", тем больше НР ему надо забрать у НПС switch (Class) { case CLASS_TYPE_BARBARIAN:{iD = 200; break;} case CLASS_TYPE_BARD:{iD = 300; break;} case CLASS_TYPE_CLERIC:{iD = 250; break;} case CLASS_TYPE_DRUID:{iD = 300; break;} case CLASS_TYPE_FIGHTER:{iD = 200; break;} case CLASS_TYPE_MONK:{iD = 150; break;} case CLASS_TYPE_PALADIN:{iD = 200; break;} case CLASS_TYPE_RANGER:{iD = 250; break;} case CLASS_TYPE_ROGUE:{iD = 300; break;} case CLASS_TYPE_SORCERER:{iD = 300; break;} case CLASS_TYPE_WIZARD:{iD = 300; break;} } if (GetIsPC(oPC) && ((iMaxHP - iD) >= iCurHP)) { SetLocalInt(oWord, "DO_IT", TRUE); AssignCommand(oPC, ClearAllActions()); AssignCommand(oHench, ClearAllActions()); AssignCommand(oWord, ClearAllActions()); //------------------------------------------------------------------------------ // Чистим персональную репу друг другу location lClose = GetLocation(GetObjectByTag("CLOSE_ARENA")); //Скрыт.арена Aiwan'a object oNeutral = GetObjectByTag("AM_TRUE_NEUTRAL"); // НПС с нейтрал ChangeFaction(oWord, oNeutral); // Смена фракции ClearPersonalReputation(oWord, oPC); // КТО СТАРОЕ ПОМЯНЕТ...! ![]() ClearPersonalReputation(oPC, oWord); // КТО СТАРОЕ ПОМЯНЕТ...! ![]() ClearPersonalReputation(oWord, oHench); // КТО СТАРОЕ ПОМЯНЕТ...! ![]() ClearPersonalReputation(oHench, oWord); // КТО СТАРОЕ ПОМЯНЕТ...! ![]() //------------------------------------------------------------------------------ AssignCommand(oWord, ActionDoCommand(SetFacingPoint(GetPosition(oPC)))); AssignCommand(oWord, ActionStartConversation(oPC)); // DelayCommand(0.5, ExecuteScript("am_scen", oPC)); } } } |
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: Created By: MasterMage © //:: Created On: 22.01.05 //:://///////////////////////////////////////////// void main() { //-----------------objects------------------------------------------------ object oPC=GetEnteringObject(); object oKalax=GetObjectByTag("Kalaxana"); object oWp1=GetWaypointByTag("selo_kalaxana"); object oWp2=GetWaypointByTag("selo_point_1"); object oWp3=GetWaypointByTag("selo_point_2"); object oWp4=GetWaypointByTag("selo_point_3"); object oWp5=GetWaypointByTag("selo_point_4"); object oWpNazad=GetWaypointByTag("kalaxana_point"); //-----------------effects------------------------------------------------ effect eEf1=EffectVisualEffect(VFX_IMP_TORNADO); effect eEf2=EffectVisualEffect(VFX_IMP_UNSUMMON); //-----------------locations---------------------------------------------- location lLoc1=GetLocation(oWp1); location lLoc2=GetLocation(oWp2); location lLoc3=GetLocation(oWp3); location lLoc4=GetLocation(oWp4); location lLoc5=GetLocation(oWp5); location lLocNazad=GetLocation(oWpNazad); //-----------------script------------------------------------------------- if (!GetIsPC(oPC)||GetLocalInt(oPC,"selo_appear_kalax")==TRUE) return; { SetLocalInt(oPC,"selo_appear_kalax",TRUE); AssignCommand(oPC,ClearAllActions()); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectParalyze(),oPC,20.0); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc1,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf2,lLoc1,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc2,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc3,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc4,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eEf1,lLoc5,3.0)); DelayCommand(2.0,AssignCommand(oKalax,JumpToLocation(lLoc1))); CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc2,FALSE,"DarkSister1"); CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc3,FALSE,"DarkSister2"); CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc4,FALSE,"DarkSister3"); CreateObject(OBJECT_TYPE_CREATURE,"creature016",lLoc5,FALSE,"DarkSister4"); object oNPC1=GetObjectByTag("DarkSister1"); object oNPC2=GetObjectByTag("DarkSister2"); object oNPC3=GetObjectByTag("DarkSister3"); object oNPC4=GetObjectByTag("DarkSister4"); DelayCommand(4.0,AssignCommand(oKalax,ActionSpeakString("Так, так, так... Кто это у нас?"))); DelayCommand(6.0,AssignCommand(oKalax,ActionMoveToObject(oPC,FALSE,0.5))); DelayCommand(8.5,AssignCommand(oKalax,ActionSpeakString("Так вот какой ты... Впечатлйает...Что? Не можешь двигатьсйа? Ничего, пройдет..."))); DelayCommand(10.5,AssignCommand(oKalax,ActionSpeakString("Уверена, ты уже прикончил того недотепу... Поэтому сама решила с тобой увидитьсйа!"))); DelayCommand(12.5,AssignCommand(oKalax,ActionSpeakString("У менйа много дел, поэтому скажу сразу: УЙДИ С ДОРОГИ..."))); DelayCommand(14.5,AssignCommand(oKalax,ActionSpeakString("Надеюсь, ты понйал, что йа сказала....Теперь мне пора."))); DelayCommand(16.5,AssignCommand(oKalax,ActionMoveToObject(oWp1,FALSE))); DelayCommand(17.0,AssignCommand(oKalax,JumpToLocation(lLocNazad))); DelayCommand(18.0,DestroyObject(oNPC1,0.5)); DelayCommand(18.0,DestroyObject(oNPC2,0.5)); DelayCommand(18.0,DestroyObject(oNPC3,0.5)); DelayCommand(18.0,DestroyObject(oNPC4,0.5)); } } |
QUOTE (Csardas @ Jan 22 2005, 18:19) |
Aiwan А куда вставлять тег разгавора если он нуажен конечно. |
Neverwinter Script Source |
AssignCommand(oWord, ActionStartConversation(oPC, "диалог")); |
QUOTE (MasterMage @ Jan 22 2005, 16:26) |
Aiwan подкинь ссылку на функции Base & While, просто нужно заполнить кое-какие пробелы |
Neverwinter Script Source |
void main() { //поставь на НПС бессмертие......... object oPC=GetLastAttacker(); object oNPC=GetObjectByTag("Vunak");//запиши тег НПСа в ковычки ![]() if (GetCurrentHitPoints(oNPC)<5) { SurrenderToEnemies(); AssignCommand(oPC,ClearAllActions()); AssignCommand(oNPC,ClearAllActions()); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectKnockdown(),oNPC); ChangeToStandardFaction(oNPC,STANDARD_FACTION_COMMONER); AssignCommand(oNPC,ActionSpeakString("Пощади....")); } } |
Neverwinter Script Source |
//:://///////////////////////////////////////////// //:: Created By: MasterMage © //:: Created On: //:://///////////////////////////////////////////// void main() { //поставь на НПС бессмертие......... object oPC=GetLastAttacker(); object oNPC=GetObjectByTag("Vunak");//запиши тег НПСа в ковычки ![]() if (GetCurrentHitPoints(oNPC)<5 &&GetLocalInt(oPC,"bitva")==0) { SetLocalInt(oPC,"bitva",1); SurrenderToEnemies(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectKnockdown(),oNPC,2.5); DelayCommand(3.0,AssignCommand(oNPC,ActionSpeakString("Пощади...."))); } } |
Neverwinter Script Source |
DelayCommand(3.0,AssignCommand(oNPC,ActionSpeakString("Пощади...."))); |
Neverwinter Script Source |
ActionStartConversation(oPC) |
QUOTE (MasterMage @ Jan 22 2005, 20:51) |
Aiwan нету....иначе бы не просил |
QUOTE |
Ты про кокой скрипт говориш все скрипты что сдесь я писал сам! |
QUOTE |
Интересная фишка тут мне вечерком подвернулась, хотя может и старо, но пока нигде не видел. Сначала маялся чтобы на "OnHeartbeat" в модуле на игрока выполнялся определенный скрипт. Можно конечно замутить GetFirstPC и GetNextPC, в таком случае сервер будет перебирать всех игроков. Почитал Lексикон и вот что нашел в заметках: ...the PC doesn't have an OnHeartbeat event, if you create a script called "default", it will automatically trigger every PC heartbeat... Первожу на русский. Дело в том, что у игрока нет эвента OnHearbeat, НО(!) если вы создадите скрипт и назовете его "default" он будет автоматически вписан в OnHeartBeat игрока. Проверил - работает... Чудеса да и только, товарищи... ![]() |
Neverwinter Script Source |
void main() { object oPC=GetEnteringObject(); object oNPC=OBJECT_SELF; object oItem=GetFirstItemInInventory(oNPC); if (GetHitDice(oNPC)<5) { while(GetTag(oItem)=="ss") { SurrenderToEnemies(); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectParalyze(),oNPC); ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDeath(),oNPC); oItem=GetNextItemInInventory(oNPC); } if(GetTag(oItem)!="ss") { SetImmortal(oNPC,FALSE); } } return; } |
CODE |
1) при убийстве игрока или нпс у них проверяется в инве наличие нужной шмотки 2) если шмотка есть - они не умирают, а парализуются, ложаться на землю и остаются с одним хп 3) их нельзя убить иначе чем командой дма Килл или юзанием игроком виджета на этот полутруп. |
QUOTE |
i++; |
Neverwinter Script Source |
ActionPutDownItem(GetItemInSlot(i,oPlayer)); |
Neverwinter Script Source |
AssignCommand(oPlayer,ActionPutDownItem(GetItemInSlot(i,oPlayer))); |
Neverwinter Script Source |
AssignCommand(oPC, ActionForceFollowObject(object oNPC, 5.0f)); // Идти за НПС не дальше 5 метров |
Neverwinter Script Source |
AssignCommand(oPC, SetFacingPoint(GetPosition(oDoor))); // Повернем лицом к двери |
QUOTE (K.SpecTr @ Jan 23 2005, 16:42) |
1) Есть oNPC и несколько Вэйпоинтов. Нужно чтобы он пробежал по ним выполняя возле каждого действие и ожидая пока oPC подойдет. Реализовал, разместив под каждый Вэйпоинт триггеры - oPC подходит, наступает, oNPC бежит дальше, дело делать. В общем, сколько вэйпоинтов -> столько триггеров -> столько скриптов, а можно ли как-то это ожидание в одном скрипте забить? И убрать лишние триггеры? |
Neverwinter Script Source |
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur) |
Neverwinter Script Source |
void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur); |
Neverwinter Script Source |
#include "x2_inc_cutscene" void CutSound(int nCutscene, object oSound); void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur); void MultiJump(object oPC, string sWay); void PlayMusic(int nCutscene, object oPC); void SetShift(int nCutscene, object oPC, float fShift); int nCutsceneNumber = 20; void main() { object oPC = GetEnteringObject(); object oGlav = GetObjectByTag("PIVIGA"); object oWP1 = GetObjectByTag("WP_1"); object oWP3 = GetObjectByTag("WP_3"); object oWP4 = GetObjectByTag("WP_4"); object oWP5 = GetObjectByTag("WP_5"); object oWP6 = GetObjectByTag("WP_6"); object oWP7 = GetObjectByTag("WP_7"); object oSound = GetObjectByTag("cut20_summ_sfx"); //Effect Vizual Effect========================================================== effect eZa1 = EffectVisualEffect(VFX_BEAM_BLACK); effect eZa2 = EffectVisualEffect(VFX_BEAM_EVIL); effect eZa3 = EffectVisualEffect(VFX_IMP_DEATH_WARD); effect eZa4 = EffectVisualEffect(VFX_IMP_FEAR_S); //Localnoe====================================================================== location lMes1=GetLocation(oWP1); location lLoc2=GetLocation(oWP7); location lMes3=GetLocation(oWP3); location lMes4=GetLocation(oWP4); location lMes5=GetLocation(oWP5); //============================================================================== if (!GetIsPC(oPC)||GetLocalInt(oPC,"Proverochoi tur!")==TRUE) return; { SetLocalInt(oPC,"Proverochoi tur",TRUE); AssignCommand(oPC,ClearAllActions()); ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectDarkness(),oPC,20.0); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa1,lMes1,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa2,lLoc2,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa3,lMes3,3.0)); DelayCommand(0.5,ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY,eZa4,lMes4,3.0)); DelayCommand(2.0,AssignCommand(oGlav,JumpToLocation(lMes1))); DelayCommand(2.0,AssignCommand(oGlav,ActionSpeakString("KO MHE MOI SLUGI"))); DelayCommand(1.0,AssignCommand(oGlav,ActionMoveToObject(oPC,FALSE,0.5))); //Camera mode=================================================================== DelayCommand(1.5, DelayCommand(GetShift(oPC, TRUE), MyPentogramma(nCutsceneNumber, oPC, 482, 3.0))); DelayCommand(1.5, FadeFromBlack(oPC)); CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 10.0, 50.0, CAMERA_TRANSITION_TYPE_SNAP); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 9.0, 40.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE); CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 100.0, 12.0, 60.0, CAMERA_TRANSITION_TYPE_SLOW, FALSE); //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //Vso dla camera object oCam1 = GetWaypointByTag("Camera1"); object oCam2 = GetWaypointByTag("Camera2"); object oCam3 = GetWaypointByTag("Camera3"); object oCam4 = GetWaypointByTag("Camera4"); object oCam5 = GetWaypointByTag("Camera5"); object oCam6 = GetWaypointByTag("Camera6"); //+++++++++++++++++++++++++++++CAMERA+++++++++++++++++++++++++++++++++++++++++++ CutPlayAnimation(1.5, oCam1, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE); CutPlayAnimation(1.5, oCam2, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE); CutPlayAnimation(0.5, oCam3, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE); CutPlayAnimation(1.5, oCam4, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE); CutPlayAnimation(0.5, oCam5, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE); CutPlayAnimation(18.0, oCam6, ANIMATION_LOOPING_WORSHIP, 20.0, FALSE); //Camera stroenie=============================================================== CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 182.0, 111.0, 56.0, CAMERA_TRANSITION_TYPE_SLOW); CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 5.0, 65.0, CAMERA_TRANSITION_TYPE_SNAP); CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0, CAMERA_TRANSITION_TYPE_VERY_FAST); CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 155.0, 45.0, 82.0, CAMERA_TRANSITION_TYPE_SNAP); CutSetCamera(15.6, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0, CAMERA_TRANSITION_TYPE_SNAP); CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 10.0, 4.0, 82.0, CAMERA_TRANSITION_TYPE_SNAP); CutSetCamera(1.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0, CAMERA_TRANSITION_TYPE_SNAP); CutSetCamera(18.0, oPC, CAMERA_MODE_TOP_DOWN, 90.0, 40.0, 82.0, CAMERA_TRANSITION_TYPE_SNAP); CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 210.0, 0.1, 80.0, CAMERA_TRANSITION_TYPE_SNAP); CutSetCamera(0.5, oPC, CAMERA_MODE_TOP_DOWN, 105.0, 4.0, 82.0, CAMERA_TRANSITION_TYPE_SNAP); } //PENTAGRAMMA VOCRUG++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void MyPentogramma(int nCutscene, object oPC, int iBeam, float fDur) { if(CutGetActiveCutsceneForObject(oPC) == nCutscene) { object oPen1 = GetObjectByTag("Pen1"); object oPen2 = GetObjectByTag("Pen2"); object oPen3 = GetObjectByTag("Pen3"); object oPen4 = GetObjectByTag("Pen4"); object oPen5 = GetObjectByTag("Pen5"); int iBeam2 = 483; //Rasstavlaem+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam, oPen1, BODY_NODE_CHEST, FALSE), oPen2, fDur); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen2, BODY_NODE_CHEST, FALSE), oPen3, fDur); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen3, BODY_NODE_CHEST, FALSE), oPen4, fDur); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen4, BODY_NODE_CHEST, FALSE), oPen5, fDur); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectBeam(iBeam2, oPen5, BODY_NODE_CHEST, FALSE), oPen1, fDur); } } // Taime ======================================================================= void SetShift(int nCutscene, object oPC, float fShift) { if(CutGetActiveCutsceneForObject(oPC) == nCutscene) SetLocalFloat(GetArea(oPC), ".."fShift); } void CutSound(int nCutscene, object oSound) { if(CutGetActiveCutsceneForObject(oSound) == nCutscene) { SoundObjectPlay(oSound); } //=============================================================================== } |
QUOTE (Oksivarus @ Jan 24 2005, 00:48) |
выдает сообщение что героя нельзя разоружать во время боя. |
QUOTE (MasterMage @ Jan 23 2005, 13:28) |
Дело в том, что я не понимаю, как добиться от while, чтобы если не найдет итема выполняла действие ниже... |
Neverwinter Script Source |
void main() { object oPC=GetEnteringObject(); //Куда он входит? В непися. Ладно, опустим, все равно нигде не используется. object oNPC=OBJECT_SELF; //На чем/ком висит скрипт. Если Heartbeat, то не забывай, что каждые 6 сек берется опять первый предмет в инвентори. object oItem=GetFirstItemInInventory(oNPC); //первый предмет в инвентори if (GetHitDice(oNPC)<5) //если мы при смерти { while(GetTag(oItem)=="ss") // и, пока N-ый (конкретный, первый попавшийся, а не какой-нить) предмет в инвентори имеет таг "ss", что, согласись, маловероятно будет продолжаться долго. { SurrenderToEnemies(); // даем команду рядом стоящим быть нейтральными. ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectParalyze(),oNPC); // накладываем эфф ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDeath(),oNPC); // накладываем эфф oItem=GetNextItemInInventory(oNPC); // Берем следующий предмет } // скорее всего первый же предмет не будет иметь таг "ss" и выполниться след строчка if(GetTag(oItem)!="ss") // если таг объекта не равен "ss" { SetImmortal(oNPC,FALSE); // поставить убиваемым (по идее вот это и будет всегда выполняться. Т.к. в противном случае игра выдаст тебе ош.: слишк. много инстр.) } } return; } |
QUOTE |
if (HasItem(oPc, "IMMORTAL_RING")). Необходимо подключить библиотеку "nw_i0_plot" (#include "nw_i0_plot"). Или посмотри как это сделано в самой библ. |