anz items loeschen
[[anz_items_loeschen]] last edit on Aug 10, 2005 2:42 PM by Anonymous

Diese Funktion zeigt, wie mehrere gleiche Items, die z.B. in einem Raum liegen gelöscht werden können.
Ein Beispiel fuer die Anwednung koennte z.B. sein: es liegen mehrere Staemme in einem Raum. Der Spieler fuerht ein Kommando aus,
welches ein Haus aus den Baumstaemmen erbauen lassen soll. Sind genuegend Staemme zum Bau des Hauses im Raum vorhanden, kann das Haus gebaut
werden. Die Staemme muessen dann natuerlich aus dem Raum geloescht werden.


int haus_bauen(string str)
{
 object *room_inv;
 object *staemme;
 int x;
 room_inv=all_inventory(TO);
 staemme=({});

notify_fail("Was willst Du bauen?\n");

   if (str != "haus")
   return 0;

  for (x=0;x<sizeof(room_inv);x++)
     {
      if (room_inv[x]->id("id_der_staemme"))
       {
        staemme+=({room_inv[x]});
       }
     }

    if (sizeof(staemme)<6)
     {
      write("Hier liegen nicht genuegend Staemme.\n");
       return 1;
     }

    say(TPN+" baut ein Haus.\n");
    write(BS("Du baust ein Haus.\n"));

for (x=0; x<6; x++)
 {
   staemme[x]->remove();
 }
   return 1;
}


Erklärung:
Als erstes werden alle Datentypen, die gebraucht werden definiert und ein leeres Array initialisiert. Nach der Syntaxabfrage wird
geschaut, welche Objekte alle die ID id_der_staemme haben und in einem Array gespeichert. Liegen weniger als 6 Staemme im Raum,
wird eine Meldung ausgegeben. Liegen mindestens 6 Staemme im Raum kommt die Meldung, dass ein Haus gebaut wird.
Zum Schluss werden ueber dem weiter oben aufgefuerhten Array 6 Objekte(Staemme) entfernt.


Abkürzungen:
TO          this_object()
TPN         this_player()->name()
BS          break_string(x, 78)

Zurück zur LPCWiki Startseite