World of Gothic Archiv
> NWN-Hilfe Kann ein Item auf ein anderes Item "reagieren" ? |
|
20.07.2002, 11:13 | #1 | ||
Taurus71 Beiträge: 7 |
Kann ein Item auf ein anderes Item "reagieren" ?
Hallo alle zusammen, kann ein Item (z.B. ein Ring) auf ein anderes Item "reagieren", wenn es in der Nähe ist ? Kleine Erklärung zum besseren Verständnis: Der PC erhält den Auftrag, ein 3 Teilen zerbrochenes Amulett zu finden. Damit der PC die 3 Teile überhaupt finden kann bekommt er einen Ring. Nur mit diesem Ring kann der PC die Teile finde. Mir schwebt da folgendes vor: 1.) Der Ring sagt irgendwas, wenn er in einem bestimmten Umkreis von einem Teilstück ist. 2.) Damit der Ring überhaupt was sagen kann, muß er angelegt sein. Nur im Gepäck vorhanden, soll der Ring nicht reagieren. 3.) Hat man alle 3 Teile zusammen, müssen sie noch zusammengefügt werden. Wie weißt ich noch nicht. Kann man sowas überhaupt realisieren ? Danke im voraus Taurus71 |
||
20.07.2002, 11:27 | #2 | ||
Gawain15 Beiträge: 1.084 |
hm yo... hab die ganzen Sachen jetzt nicht im Kopf aber so gehts: Check ob der Ring angelegt ist (EquipItemRing oder so...) und setz dann ne Variable auf 1 (SetLocalInt). Bei den 3 Teilen fragste bei OnHeartbeat mit If ob die Variable 1 ist, wenn ja lässte den Spieler sagen (Speakstring) "Der Ring glueht verdaechtig" oder so... |
||
20.07.2002, 11:30 | #3 | ||
|V|ilamber Beiträge: 74 |
ich habe ein Script, damit kannst Du auch auch so ein Schwert wie in Herr der Ringe machen, das glüht wenn ein bestimmter Gegner in der Nähe ist ;) Wenn Du dieses Script für Dich anpaßt, dann sollte es auch funzen: //Script: cal_glow //Author: Albert Shih (Calidarien) //Version: v0.9, 2002-06-27 //Description: When a creature wields a item with a certain tag in its hands, // it will "glow" when near an object of a specific tag. //Usage: Attach to OnHeartbeat //Notes: // v0.9: Pretty cool // string ITEM_GLOW_TAG = "CAL_SWORD"; //Item that will cause glowing string TRIGGER_GLOW_TAG = "CAL_COW"; //Thing to look for float PROXIMITY_DISTANCE = 4.; //Distance to check within int VFX_EFFECT = VFX_DUR_PARALYZED; //Which VFX to use int CAL_DEBUG = FALSE; //Useful debugging messages // //Sends a message to all connected people if CAL_DEBUG == TRUE void Alert(string szMessage) { if(CAL_DEBUG) { object oPC = GetFirstPC(); SendMessageToAllDMs(szMessage); while(GetIsObjectValid(oPC)) { SendMessageToPC(oPC, szMessage); oPC = GetNextPC(); } } } // //Checks whether any objects with tag sTag are within fDist of oCenter int Proximity(object oCenter, string sTag, float fDist) { int nCounter = 0; object oThing; Alert("Proximity(): Checking proximity"); while(GetIsObjectValid(oThing = GetNearestObjectByTag(sTag, oCenter, ++nCounter))) { if((GetArea(oCenter) == GetArea(oThing)) && ((GetDistanceBetween(oCenter, oThing)) < fDist)) { Alert("Proximity(): Found one thing with tag " + sTag + " in distance " + FloatToString(fDist)); return TRUE; } } Alert("Proximity(): Found " + IntToString(nCounter-1) + " things with tag " + sTag + " outside of distance " + FloatToString(fDist)); return FALSE; } // //"Glowing" function, checks for inventory conditions (in this case, in hands) void Glow(object oItem) { object oOwner = GetItemPossessor(oItem); Alert("Glow(): Item is being carried"); if((GetItemInSlot(INVENTORY_SLOT_RIGHTHAND, oOwner) == oItem) || (GetItemInSlot(INVENTORY_SLOT_LEFTHAND, oOwner) == oItem)) { if(Proximity(oOwner, TRIGGER_GLOW_TAG, PROXIMITY_DISTANCE)) { Alert("Glow(): Starting/continuing glow"); effect eVis = EffectVisualEffect(VFX_EFFECT); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eVis, oOwner, 7.); } } } // //Search for through all instances of sTag and run Glow() on only those which //are currently in a creature's inventory void SearchAndGlow(string sTag) { int nCounter = -1; object oOwner, oItem; while(GetIsObjectValid(oItem = GetObjectByTag(sTag, ++nCounter))) { oOwner = GetItemPossessor(oItem); if(GetIsObjectValid(oOwner)) { Glow(oItem); } } Alert("SearchAndGlow(): Found " + IntToString(nCounter) + " item(s) with tag " + sTag); } // //Main function void main() { SearchAndGlow(ITEM_GLOW_TAG); } |
||
20.07.2002, 11:34 | #4 | ||
Taurus71 Beiträge: 7 |
Klasse, Danke |V|ilamber und Gawain15. |
||
|