Dokumentation zu: Wield(L)

HR Image


FUNKTION:
        varargs public int Wield(object waffe, int force, int silent)

DEFINIERT IN:
        /std/living/combat.c

ARGUMENTE:
        mixed waffe   - die zu zueckende Waffe oder der zu zueckende 
                        Schild (object o. string)
        int force     - wenn gesetzt, wird der ET_WIELD-Event mit
                        EM_NO_CANCEL gesendet
        int silent    - es wird keine Zueck-Meldung ausgegeben

RÜCKGABEWERT:
        0 - wenn das Zuecken erfolglos verlaufen ist
        1 - wenn das Zuecken erfolgreich war

BESCHREIBUNG:
        Wield ruft ET_WIELD mit waffe als data[E_WIELD_WEAPON] auf. Wenn force
        gesetzt wird, kann der Event nicht abgebrochen werden. Die Benutzung
        von force ist mit einem Erzmagier abzusprechen!

        Bitte beachten: Schilde werden wie Waffen behandelt.

        Wird die Waffe als String angegeben, so wird versucht ein Objekt 
        dieses Pfades zu clonen, in das aufrufende Lebewesen zu moven und 
        anschliessend anzuziehen. Klappt das Moven nicht, wird das 
        geclonte Objekt wieder zerstoert. Klappt nur das Anziehen nicht, 
        bleibt es im Inv des Lebewesens.

        Befindet sich das Waffenobjekt nicht im Inventar des aufrufenden
        Lebewesens, gibt Wield(L) einen Fehler zurueck.

BEISPIELE:
        Ein NPC soll (immer, wenn er geclont wird) eine bestimmte Waffe
        bekommen und gleich zuecken:
        
        // normales NPC create(A) mit Wield(L)
        void create()
        {
          if (!clonep()) return;

          ::create();

          ...

          Wield("/obj/messer");      // einfaches Messer clonen und zuecken
        }


        Ein NPC soll bei einer Frage nach 'waffe' in seinem Inventar nach
        einer Waffe suchen und die erstbeste zuecken und im naechsten Reset
        wieder zurueckstecken.

        // Hilfsfunktion
        string waffeinfo()
        {
          object waffe;
          
          // nichts tun, wenn bereits Waffe gezueckt
          if (sizeof(QueryProp(P_WEAPONS)))
            return "Ja, ich habe bereits eine gezueckt!";
          
          // sonst Waffe im Inventar suchen
          waffe = present("waffe", this_object());

          // wenn gefunden, versuchen Waffe zu zuecken
          if (waffe && Wield(waffe))
            return "Meinst Du vielleicht sowas?";
          
          // wenn das nicht geklappt hat anderer Text
          return "Leider habe ich keine bei mir.";
        }

        // normales NPC create mit entsprechendem AddInfo(L)
        void create()
        {
          if (!clonep()) return;

          ::create();

          ...

          AddInfo("waffe", #'waffeninfo, "antwortet:");
        }

        // im Reset eine Waffe zurueckstecken
        void reset()
        {
          ::reset();
          
          // der Einfachheit halber nur die erste Waffe zurueckstecken
          if (sizeof(QueryProp(P_WEAPONS)))
            UnWield(QueryProp(P_WEAPONS)[0]);
        }


SIEHE AUCH:
        ET_WIELD(WL), ET_UNWIELD(WL), ET_WEAR(WL),
        ET_UNWEAR(WL), Wear(L), UnWear(L), UnWield(L),
        P_ARMOUR_RESTRICTIONS, P_WEAPON_RESTRICTIONS


Start » Magierhandbuch » Docu » Lfun » Wield Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!