Autor Thema: fehler beim geben von sachen  (Gelesen 1969 mal)

busfahrer

  • Tentakelschleim
  • *
  • Beiträge: 2
    • Profil anzeigen
fehler beim geben von sachen
« am: 25. September 2012, 16:17:40 »
hallo zusammen

ich hätt da ein problem mit dem Schulstarterpack in ags 3.2.1. und zwar folgendes. wenn ich jemandem was gebe  (mit gib) läuft der Player-charakter im Kreis herum und verschenkt sein item sinnloserweise. mit benutze klappts. Ich habe hier im forum das gefunden: http://www.maniac-mansion-mania.de/forum/index.php?topic=19.msg147#msg147

Zitat von: khrismuc
Ich hab den betreffenden Teil im global script gefunden:    else if ((GSagsusedmode == 4) && (GetLocationType (mouse.x, mouse.y) == 2) && isAction (A_GIVE_TO) && (GetCharacterAt (mouse.x, mouse.y) < 7))
    {
      SetLabelColor (ACTION, 0, ActionLabelColorHighlighted);
      if (GoToCharacter (GSlocid, 0, 1, 2))
      {
        ItemGiven = character [GetPlayerCharacter ()].activeinv;
        if (IsInteractionAvailable (mrx - GetViewportX (), mry - GetViewportY (), MODE_USEINV) == 1)
        {
          RunCharacterInteraction (GSlocid, MODE_USEINV);
        }
        GiveInv (ItemGiven, GSlocid);
        character [GetPlayerCharacter ()].activeinv = -1;
      }
      SetAction (A_DEFAULT);
    }

1. Man kann nur den Charakteren 1-6 etwas geben (klar), muss man also ändern (1. if-Abfrage)
2. Man muss die Character-Interaction Use inventory on character benutzen, nicht AnyClick.
3. Durch Abfrage einer GlobalInt muss man gegebenenfalls verhindern, dass das Item den Besitzer wechselt.
Man könnte das script auch pauschal so ändern:        if (IsInteractionAvailable (mrx - GetViewportX (), mry - GetViewportY (), MODE_USEINV) == 1)
        {
          RunCharacterInteraction (GSlocid, MODE_USEINV);
        }
        else
        {
          GiveInv (ItemGiven, GSlocid);
          character [GetPlayerCharacter ()].activeinv = -1;
        }
      }
Wenn der NPC das Item tatsächlich erhalten soll, entweder keine Interaction einbauen, oder es ihm in dieser übergeben.

Das sind aber alte codes.^^ Habe versucht das auf neue Skriptsprache zu übertragen, ist das richtig so?:

charAt.RunInteraction(GSagsusedmode);
      SetAction (eActDefault);
    }
        if (IsInteractionAvailable (mrx - GetViewportX (), mry - GetViewportY (), eModeUseinv) == 1)
        {
          charAt.RunInteraction(eModeUseinv);
        }
        else
        {
          GiveInv (ItemGiven, charAt);
          player.ActiveInventory(-1);
        }
      }
    else
    {

Das blöde ist, ich bekomme beim Speichern nen parse-error. Kann mich jemand korrigieren?
« Letzte Änderung: 01. Oktober 2012, 14:29:10 von busfahrer »

busfahrer

  • Tentakelschleim
  • *
  • Beiträge: 2
    • Profil anzeigen
Re: fehler beim geben von sachen
« Antwort #1 am: 01. Oktober 2012, 14:29:53 »
Bitte nochmals um hilfe. Habe das eingangsposting verändert. ^^

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: fehler beim geben von sachen
« Antwort #2 am: 05. Oktober 2012, 14:53:37 »
Wenn Du einen Fehler bekommst, IMMER den Wortlaut und die Zeile posten.

Ich schätze mal, der Fehler kommt hier:
[ags]  player.ActiveInventory(-1);[/ags]
Es muss heißen:
[ags]  player.ActiveInventory = null;[/ags]
« Letzte Änderung: 05. Oktober 2012, 14:55:37 von KhrisMUC »