World of Gothic Archiv > NWN-Hilfe
Items zerstören im Ausrüstungsslot?
Seite 1 von 1  1 
12.07.2002, 10:12 #1
Fantasyelf
Beiträge: 36
Items zerstören im Ausrüstungsslot?
Der PC soll am Anfang ohne jegliches Inventar anfangen. Deswegen müssen alle Gegenstände im Inventar zerstört werden (Er findet in einer Kiste einige Startgegenstände). Aber es will nicht funktionieren:

object oPC=GetNearestCreature(...);
object oItem=GetItemInSlot(INVENTORY_SLOT_ ..., oPC);

AssignCommand(oPC, DestroyObject(oItem));

PS: Wie kann man im Editor Objekte ohne 30xfaches Klicken auf die Rotationsbuttons exakt in die 4 Himmelsrichtungen ausrichten?
12.07.2002, 11:39 #2
LightHawk
Beiträge: 100

Du brauchst nicht immer auf die Buttons einzeln zu klicken, kanst auch gedrückt halten.
12.07.2002, 12:38 #3
Fantasyelf
Beiträge: 36

Das weiss ich auch, aber ich muß trotzdem viele Mal drauf klicken, damit die Objekte in eine Richtung gucken, die ich will (z.B. Ausrichtung exakt nach Norden).
Wenn ich die Buttons gedrückt halte, drehen sich die Objekte 3 mal oder mehr pro Sekunde im Kreis, das ist viel zu schnell für eine exakte Ausrichtung. Die Objekte müßten sich langsamer drehen, aber ich habe keine Option dafür gefunden.
12.07.2002, 13:18 #4
Gawain15
Beiträge: 1.084

Bei mir drehen sich die Items alle 3 Sekunden einmal so ca.

Also ich wollt das foglende Script mal testen aber NWN ist abgestürzt bevor es ging... könnte am Script liegen... bei OnEnter vom Modul einfügen... nur mal kucken ob es geht.

void main()
{
object spieler = GetFirstPC();
while (spieler != OBJECT_INVALID)
{
object item = GetFirstItemInInventory(spieler);
while (item != OBJECT_INVALID)
{
DestroyObject(item);
}
}
}
12.07.2002, 13:36 #5
Gawain15
Beiträge: 1.084

Ok bis auf eine lange Ladezeit des Mods bringt das Script nichts...
12.07.2002, 14:36 #6
Paleswift
Beiträge: 154

code\:

void main()
{
object oPC = GetEnteringObject();
object oItem = object GetFirstItemInInventory(oPC);

while (GetIsObjectValid(oItem))
{
DestroyObject(oItem);
oItem = GetNextItemInInventory(oPC);
}
}



Schaut glaube ich besser aus..


___________________________

c===|[:::::::::::::::::>
Ja! ich bin unfähg die Rechtschreibung zu beachteln.. und das isd auch dut so![/font]
12.07.2002, 15:23 #7
Fantasyelf
Beiträge: 36

Es klappt. Es steht zwar unten links da, das die Gegenstände zerstört werden, aber das kann man ja nicht ändern.
Nun muß ich bloß noch ActionUnequipItem(GetItemInSlot(INVENTORY_ ...)) auf die ausgerüsteten Gegenstände anwenden und der PC fängt ganz vorn vorn an, Items zu sammeln (ist für die Story sehr wichtig). Es gibt in der Nähe eine Truhe, die abhängig für jede Klasse, entsprechende Start-Items enthält. Eines stört aber noch, das immer wieder ein zufälliger Gegenstand mit drinnen ist.

Das Script wird über einen Auslöser ausgeführt, der die gleiche Position hat wie der Startpunkt.

PS: Die ausgerüsteten Items werden zwar ins Inventory abgelegt, aber nicht zerstört. Die bleiben einfach übrig. Alle anderen werden zerstört. Wieso?
12.07.2002, 18:22 #8
Fantasyelf
Beiträge: 36

Habe eine Lösung gefunden. Ist vielleicht ein bißchen lang, aber funktioniert:

//Ausgeruestete Gegenstaende ins Inventory legen und zerstoeren
oItem=GetItemInSlot(INVENTORY_SLOT_ARMS,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_ARROWS,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_BELT,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_BOLTS,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_BOOTS,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_BULLETS,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_CHEST,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_CLOAK,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_HEAD,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_LEFTRING,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_NECK,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTHAND,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
oItem=GetItemInSlot(INVENTORY_SLOT_RIGHTRING,oPC);
AssignCommand(oPC, ActionUnequipItem(oItem));
if (GetIsObjectValid(oItem)) DestroyObject(oItem);
Seite 1 von 1  1