World of Gothic Archiv > NWN-Hilfe
Kann ein Item auf ein anderes Item "reagieren" ?
Seite 1 von 1  1 
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.
Seite 1 von 1  1