Maniac Mansion Mania Forum

MMM-Werkzeugkiste => Technik => Newbies => Thema gestartet von: ZAK am 09. Dezember 2010, 23:57:13

Titel: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 09. Dezember 2010, 23:57:13
Hallo,
habe mal versucht mit dem leeren Startepack im AGS3 zu starten, da kommen Fehlermeldunen...

Zitat
ACHTUNG!

Wenn man mit der neusten Version (AGS 3.1.2) die Starterpacks öffnet, gibt es erst mal Fehler.

Löscht einfach die Dateien KeyCodes.asc und KeyCodes.ash (nur im Editor) unter Scripts.
Dann funktioniert es wieder.

Grüße Rulaman

wie ist das gemeint?
soll ich da alles löschen, oder nur die endungen ???

habe einiges ausprobiert, aber nichts hat geholfen.

u.a. habe ich das mal gelöscht.

      <Script>
        <FileName>KeyCodes.ash</FileName>
        <Name />
        <Description />
        <Author />
        <Version />
        <Key>729759395</Key>
        <IsHeader>True</IsHeader>
      </Script>
      <Script>
        <FileName>KeyCodes.asc</FileName>
        <Name />
        <Description />
        <Author />
        <Version />
        <Key>729759395</Key>
        <IsHeader>False</IsHeader>
      </Script>

was genau ist nun gemeint ???

LG
Zak
Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: Rocco am 10. Dezember 2010, 00:44:10
damit ist gemeint du klickst rechts im menüfeld auf das + neben scripts.
in dieser liste suchst du dann keycodes.ash und keycodes.asc,
diese beiden files klickst du dann mit rechts an und wählst delete.

Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: ZAK am 10. Dezember 2010, 03:23:41
Danke für die hilfe.
Sorry, mein Fehler....
ich hab die Datei mit "doppelklick" geöffnet und diverse Fehlermeldungen bekommen.
hab sie nun in den richtigen Ordner kopiert und kann mit arbeiten...
Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: ZAK am 11. Dezember 2010, 07:22:44
Irgendwie verstehe ich das immer noch nicht mit dem löschen des KeyCodes... ???

wenn ich mit dem "leerStarterPack" starte und den KeyCode lösche, kann ich zwar neue Räume laden und bearbeiten, bekomme aber, wenn ich ein Spiel teste, Fehler Message:
Error (line 1833): undefined symbol'eKeyF5' im File GlobalScript.asc

Arbeite ich ohne löschen des KeyCode, funktioniert alles....
muss ich den nun löschen oder nicht...???
ich habe AGS 3.1

Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: Rocco am 11. Dezember 2010, 11:11:03
welches starterpack verwendest du genau (link)?
dann lad ich mir das mal runter und schau mir das an.
Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: ZAK am 11. Dezember 2010, 11:32:54
na das was hier zum downloaden angeboten wird.

http://www.maniac-mansion-mania.com/index.php?option=com_content&task=view&id=680&Itemid=76 (http://www.maniac-mansion-mania.com/index.php?option=com_content&task=view&id=680&Itemid=76)
Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: Rocco am 11. Dezember 2010, 12:12:53
hmm, hatte keine probleme.
habs runtergeladen, mit AGS 3.2 das Template ausgewählt,
dann gleich wie schon vorher beschrieben, rechts auf das + zeichen bei scripts geklickt, dort dann auf delete keycodes.asc.
dann auf run geklickt und es hat alles tadellos funktioniert.
viel gibts natürlich bei einem leeren starterpack nicht zu sehen, ausser dem startbildschirm,
deswegen würde ich dir auch dringend anraten, speziell als Anfänger ein anderes starterpack als basis zu nehmen.
Weil dort sind viele Dinge enthalten, die du so oder so brauchen wirst.
also auch wenn du von dem starterpack nichts verwenden willst, so kannst du trotzdem immer mal in einen raum reinschauen und dir anschauen, wie türscripts usw. funktionieren und gescripted sind.
Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: ZAK am 11. Dezember 2010, 12:49:49
Danke füe den Tip... das habe ich schon gemacht. bin nun dabei ein eigenes Spiel zu entwerfen, klappt auch alles ganz gut, die Räume funktionieren nur mit den Türen und Raumwechsel habe ich so meine Probleme...!!!
Er macht sie mir sogar auf, nur zu nicht mehr und den Raum will er auch nicht wechseln.
Ich habe auch eine Videoanleitung(englisch) nur arbeitet er da mit einem anderm "maingui".
Habe auch schon mit einem komplett "leerem" ein kleines Spiel gemacht, hat super geklappt.
ich finde das Script bei "mmm" nicht wirklich.

Habe das...
function hTuer_AnyClick()
{
if (any_click_on_door (18, 0, 33, 130, DIR_LEFT, 2, 160, 127, DIR_LEFT) == 0) Unhandled ();}
}
...aus einer Anleitung prbiert...aber bekomme Fehlermeldung.
Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: Rocco am 11. Dezember 2010, 16:51:01
wieso aus einer anleitung, nimm doch irgendein (ausser das leere) starterpack und schau dir dort die funtionierenden Türen samt Code an.

*ich verschieb das mal in den richtigen bereich*
Titel: Re: Weitere Starterpacks für AGS3
Beitrag von: Fatal B am 11. Dezember 2010, 16:59:41
function hTuer_AnyClick()
{
if (any_click_on_door (18, 0, 33, 130, DIR_LEFT, 2, 160, 127, DIR_LEFT) == 0) Unhandled ();}
}

Die Klammer hinter Unhandle ist auf jedenfall falsch, die muss weg.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: rulaman am 11. Dezember 2010, 19:39:02
Ich würde mir auch mal das neue Türenskript anschauen.
z.B. im Mansion Starterpack oder in dem von Kevin.
Die Technik sollte in den anderen auch funktionieren.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 12. Dezember 2010, 07:53:38
Ich würde mir auch mal das neue Türenskript anschauen.

Ich dachte du hättest es gemacht?  ???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 08:26:27
Ich habe mir das Script (Tür) beim StarterPackDave 3.0 schon angesehen.
Das mit den Räumen, Hotspots, Objects und so funktioniert ja auch alles, selbst die Tür lässt sich öffnen und schließen, nur wechstel der Player nicht in de nächsten Raum.
für die Tür habe ich folgenes im Script:

Zitat
function hTuer_AnyClick()
{
   SetDoorStrings("Die Tür zum Flur.", "", "Damit klappt das nicht.");
   if ( any_click_on_door(1, oTuer, 30, 126, eDirLeft, 6, 400, 100, eDirUp) == 0 ) Unhandled();
   SetDoorStrings("", "", ""); // strings leeren, um beim Vergessen keinen falschen Satz sagen zu lassen.
}

Um auf das Leere Starterpack zurückzukommen, das brauche ich, weil ich ja eigene Räume habe die ich benötige.
Da hilft mir ein fertiges mit z.B. Dave gar nichts.

ich will doch nur das der Player den nächsten Raum betritt.....


Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 08:31:13
Ach ja, bevor ich es vergesse....
...die Anleitung habe ich hier im Forum gefunden, um ein "mmm" Spiel zu erstellen, was ich "leider" erst später festgestellt habe, ist das die Anleitun auf AGS 2.7 basierte....
...daher auch die Fehler (DIR_LEFT) welche beim AGS3 ja (eDirLeft) heissen müssen.
Danke für die Hilfe
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 12. Dezember 2010, 13:49:38
Wie rulaman sagte, könntest du dir eventuell noch das Kevin- oder das Mansion-Starterpack runterladen, denn da ist das neue Skript drin. Das solltest du dir nämlich anschauen... Zwar muss man ein zusätzliches Skript (doors.asc) haben, was aber dann alle Türen enthält und Programmierer-Freundlicher ist.  :)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 16:03:25
...Das Mansion-StarterPack für 3.0 o. 3.1 zum downloaden habe ich nicht gefunden, habe mir mal das von Kevin angeschaut, nur damit kann ich ja kein eigenes Spiel mit eigenen Gafiken machen. da ich einige Räume habe und diese auch schon zum Teil fertig sind, wäre es ja schade um die viele arbeit.
...wollte ja nur ein wenig hilfe, wo ich das (beim Leer-StarterPack) finde...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 12. Dezember 2010, 16:28:51
wieso nicht, du kannst dir ja trotzdem deine räume anlegen, das musst du sowieso machen auch wenn du ein leeres SP benutzt.
die vorhandenen räume die schon im SP sind musst du ja nicht benutzen.
Aber du kannst dir dann immer die codebeispiele direkt ansehen.
und deine fertigen räume kannst du exportieren und in das andere projekt importieren.

wenn du wirklich bei dem leeren bleiben willst und du hast probleme, dann poste bitte wenn möglich immer den codebereich wo der fehler passiert.
in der fehlermeldung steht meistens auch die codezeile die probleme macht, damit wir dir auch helfen können, sonst ist es schwierig.

wo es das letzte mansion SP zum download gibt weiss ich leider auch nicht, würde mich aber auch interessieren.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 16:48:53
ich hätte ja gerne ein codebeispiel gepostet, nur bekomme ich keine Fehlermeldung.
das Spiel Startet, ich bin im "Startraum" kann alles sehen (dialoge, schau, nimm...) kann die Schubladen und die Tür öffnen und schliessen....
vur wenn ich den Raum verlassen möchte geht der player nicht durch die "offene" Tür um den Raum zu wechseln.
gut, ich habe jetzt das Starterpack von Kevin, und mache damit weiter.
wenn ich meine Räume (die ich im Leerem StarterPack gemacht habe) Exportiere, sind denn auch alle objects und hotspots mit drin?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 12. Dezember 2010, 17:07:02
ich befürchte eher nicht.   :(
vielleicht kann dir ja rulaman oder khrismuc beim problem mit der tür weiterhelfen, ich hab da leider auch keine ahnung wie die türfunktionen im detail funktionieren.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 17:11:29
naja, kein Problem....
...auf die Idee mit dem vom "Kevin" anzufangen bin ich echt nicht gekommen.
klar, Räume die ich nicht brauche, kommen in meinem Spiel ja auch nicht vor. manchmal hat man echt ein Brett vorm Kopf und siet das Zimmer vor lauter Hotspots nicht.
...bin schon dabei alles rüber zu ziehen, glücklicherweise kann ich Tele vom Script ja rüber kopieren.
...Danke für die Tips und die hilfe... ;D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: rulaman am 12. Dezember 2010, 17:52:09
Vielleicht noch ein Hinweis Zak,

wenn die Player-Koordinaten außerhalb einer walkable area liegen, dann läuft er nur bis zum Rand, geht aber nicht durch die Tür.
Das könnte dein Problem erklären.

Falls du also in einem Raum eine walkable area gezeichnet hast, und dein Player in der Türenskript-Funktion auf einen Punkt außerhalb laufen soll, dann läuft er zum äußersten Rand der w/a, bleibt dort stehen und wechselt nicht in den neuen Raum.

Dies war in früheren SPs ein Bug. So lief z.B. der Player bei einer walkable area nur bis zur Raummitte, da der Rest deaktiviert wurde aber wechselte in den neuen Raum. (Dies sieht im Spielverlauf dann "Doof" aus.)

(http://img9.imageshack.us/img9/8650/bugml.png) (http://img9.imageshack.us/i/bugml.png/)
http://img9.imageshack.us/img9/8650/bugml.png
Im obigen Beispiel läuft der Spieler zwar an den Rand der w/a, wechselt aber nicht den Raum.

Grüße
Rulaman
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 18:17:51
Wo im Script finde ich das denn???
das ist das was ich ja die ganze Zeit schon suche.
im Script von Kevin ist es einfacher, aber anders geschrieben:

Zitat
   Door[gr_Kevin].l_Room                      = 5;
   Door[gr_Kevin].i_XPosition            = 145;
   Door[gr_Kevin].i_YPosition            = 125;
   Door[gr_Kevin].l_Direction            = eDirUp;

   Door[gr_Kevin].l_NewRoom            = 6;
   Door[gr_Kevin].i_NewXPosition         = 240;
   Door[gr_Kevin].i_NewYPosition         = 130;
   Door[gr_Kevin].l_NewDirection         = eDirDown;

nur im Leeren SP weiss ich nicht wo das ist.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 18:38:23
Und wo wird das Script für die Tür (oTuer) erstellt ???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 12. Dezember 2010, 18:44:19
Ins leere Starterpack musst du die beiden Skripte importieren um auch die neuen Türfunktionen zu haben. Was Rocco gesagt hast, ist übrigens nicht besonders Vorteilhaft, es wäre nur doppelte Arbeit.

Ich bin übrigens dafür, dass die neuen Türskripte mal jemand in das Template vom leeren Starterpack (und auch den anderen neuen) einbaut, ich musste mich damit auch rumkämpfen.

//Edit: Hier ein kleines HowTo:

1. Rechtsklick auf "Scripts" -> "Import Script..." -> Dort die heruntergeladene Datei auswählen, und zwar diese:
   http://mmm.e7p.de/Doors.scm (http://mmm.e7p.de/Doors.scm)

2. GlobalScript.asc bearbeiten:
   Bei der Funktion "game_start" (kann oben in der Liste gewählt werden, bei mir Zeile 1491) vor Funktionsende folgendes einfügen:
   (also vor dem "}" und dem nächsten "// ==========...")
   DoorSetup();
   Nun kommt was längeres, was du im oberen Bereich außerhalb einer Funktion einfügen musst. Bei Zeile 1239 ist bei mir ein bisschen Platz, so wurde es auch im Villa-SP gemacht.

   /**********************************************************************/
/* Functions */
/**********************************************************************/
int DoorType::SetStrings(String lookat, String islocked, String wrongitem, String lookAt2)
{
this.s_LookAt = lookat;
this.s_NewLookAt = lookAt2;
this.s_IsLocked = islocked;
this.s_WrongItem = wrongitem;
}

/**********************************************************************
***********************************************************************/
int DoorType::Open()
{
this.i_GlobalInt = eDoorOpen;

if ( player.Room == this.l_Room )
{
this.o_Objekt.Visible = true;
}
else if ( player.Room == this.l_NewRoom )
{
this.o_NewObjekt.Visible = true;
}
}

/**********************************************************************
***********************************************************************/
int DoorType::Close()
{
this.i_GlobalInt = eDoorClosed;

if ( player.Room == this.l_Room )
{
this.o_Objekt.Visible = false;
}
else if ( player.Room == this.l_NewRoom )
{
this.o_NewObjekt.Visible = false;
}
}

/**********************************************************************
***********************************************************************/
int DoorType::Lock()
{
this.i_GlobalInt = eDoorLocked;

if ( player.Room == this.l_Room )
{
this.o_Objekt.Visible = false;
}
else if ( player.Room == this.l_NewRoom )
{
this.o_NewObjekt.Visible = false;
}
}

/**********************************************************************
***********************************************************************/
int DoorType::ClickSpecial(int opensound, int closesound, int key, int closevalue)
{
  // key = -1: opens also locked doors without key
  // key = -2: door can't be unlocked (like rusted)
InventoryItem *charInv = player.ActiveInventory;
  int result = 1;

int i_XPosition;
int i_YPosition;
int i_NewXPosition;
int i_NewYPosition;
eDirection l_Direction;
eDirection l_NewDirection;
int l_NewRoom;
String s_LookAt;
Object *o_Objekt;

if ( player.Room == this.l_Room )
{
i_XPosition = this.i_XPosition;
i_YPosition = this.i_YPosition;
i_NewXPosition = this.i_NewXPosition;
i_NewYPosition = this.i_NewYPosition;
l_Direction = this.l_Direction;
l_NewDirection = this.l_NewDirection;
l_NewRoom = this.l_NewRoom;
s_LookAt = this.s_LookAt;
o_Objekt = this.o_Objekt;

if ( s_LookAt == null )
{
s_LookAt = s_LookAtStandard;
}
}
else if ( player.Room == this.l_NewRoom )
{
i_XPosition = this.i_NewXPosition;
i_YPosition = this.i_NewYPosition;
i_NewXPosition = this.i_XPosition;
i_NewYPosition = this.i_YPosition;
l_Direction = this.l_NewDirection;
l_NewDirection = this.l_Direction;
l_NewRoom = this.l_Room;
s_LookAt = this.s_NewLookAt;
o_Objekt = this.o_NewObjekt;

if ( s_LookAt == null )
{
s_LookAt = s_NewLookAtStandard;
}

l_Direction = (l_Direction+2)%4;
l_NewDirection = (l_NewDirection+2)%4;
}
else
{
result = 1;
}

  if ( UsedAction (eActClose) )
  {
    if ( this.i_GlobalInt == 0 )
    {
      player.Say("Das ist schon zu.");
    }
    else if ( this.i_GlobalInt == 1 )
    {
      if ( any_click_move(i_XPosition, i_YPosition, l_Direction) )
      {
        PlaySound(closesound);
        if ( o_Objekt )
{
o_Objekt.Visible = false;
}
        this.i_GlobalInt = closevalue;
      }
    }
  }
  else if ( UsedAction(eActOpen) )
  {
    if ( (this.i_GlobalInt == 0) || ((this.i_GlobalInt == 2) && (key == -1)) )
    {
      if ( any_click_move(i_XPosition, i_YPosition, l_Direction) )
      {
        PlaySound(opensound);
        if ( o_Objekt )
{
o_Objekt.Visible = true;
}
        this.i_GlobalInt = 1;
      }
    }
    else if ( this.i_GlobalInt == 1 )
    {
      player.Say("Das ist schon offen.");
    }
    else if ( this.i_GlobalInt == 2 )
    {
      if ( any_click_move(i_XPosition, i_YPosition, l_Direction) )
      {
if ( this.s_IsLocked != null )
{
player.Say(this.s_IsLocked);
}
else
{
player.Say(s_IsLockedStandard);
}
      }
    }
  }
  else if ( UsedAction (eActWalkTo) )
  {
    if ( any_click_move(i_XPosition, i_YPosition, l_Direction) == 2 ) // == 2, korrektur Door-Script, falls sich Charakter nicht bewegen kann
    {
      if ( this.i_GlobalInt == 1 )
      {
        player.EnterRoom(l_NewRoom, i_NewXPosition, i_NewYPosition, l_NewDirection);
        result = 2;
      }
    }
  }
  else if ( UsedAction(eActLookAt) && (s_LookAt.Length > 0) )
  {
    if ( any_click_move(i_XPosition, i_YPosition, l_Direction) )
{
player.Say(s_LookAt);
}
  }
  else if ( UsedAction(eActUseInventory) && (key >= 0) )
  {
    if (any_click_move(i_XPosition, i_YPosition, l_Direction) )
    {
if ( charInv )
{
if ( charInv.ID == key )
{
if ( this.i_GlobalInt == 2 )
{
PlaySound(2);
if ( o_Objekt )
{
o_Objekt.Visible = true;
}
this.i_GlobalInt = 1;
}
}
else
{
if ( this.s_WrongItem != null )
{
player.Say(this.s_WrongItem);
}
else
{
player.Say(s_WrongItemStandard);
}
}
}
    }
  }
  else result = 0;
  return result;
  // 0 = unhandled
  // 1 = handled
  // 2 = NewRoom
}

/**********************************************************************
***********************************************************************/
int DoorType::Click()
{
return this.ClickSpecial(2, 3, 0, 0);
}

/**********************************************************************
***********************************************************************/
int DoorType::Init(Object *o_Objekt, Hotspot *h_Hotspot)
{
if ( null != o_Objekt )
{
o_Objekt.Clickable = false; // die Türenobjekte nicht Klickbar machen
if ( this.i_GlobalInt == 1 ) o_Objekt.Visible = true;
else                         o_Objekt.Visible = false;

if ( this.l_Room == player.Room )
{
this.o_Objekt = o_Objekt;
}
else if ( this.l_NewRoom == player.Room )
{
this.o_NewObjekt = o_Objekt;
}
}
if ( null != h_Hotspot )
{
if ( this.l_Room == player.Room )
{
this.h_Hotspot = h_Hotspot;
}
else if ( this.l_NewRoom == player.Room )
{
this.h_NewHotspot = h_Hotspot;
}
}
}

/**********************************************************************
***********************************************************************/

  Jetzt noch die Funktion "VariableExtensions" in der Auswahl oben wählen und mit folgendem ersetzen, also alles bis exklusive der nächsten "function".

  String VariableExtensions (String location)
{
int i = 0;
bool b_Ready = false;
Hotspot* hotAt = Hotspot.GetAtScreenXY(mouse.x, mouse.y);
Object *objAt = Object.GetAtScreenXY(mouse.x, mouse.y);

while ( i < MAX_DOORS )
{
if ( ((Door[i].h_Hotspot == hotAt) && (Door[i].l_Room    == player.Room)) ||
((Door[i].h_NewHotspot == hotAt) && (Door[i].l_NewRoom == player.Room)) )
{
if ( (Door[i].i_GlobalInt == eDoorClosed) || (Door[i].i_GlobalInt == eDoorLocked) )
{
location = location.AddExtension('o');
}
else
{
location = location.AddExtension('c');
}
i = MAX_DOORS; // simulates a break;
b_Ready = true;
}
i++;
}
return location;
}

3. playerExtends.ash bearbeiten und dort eigentlich nur das enum eDirection löschen, denn es gäbe sonst einen Fehler, da ich es im Türskript nochmal definieren musste.

  Puh. Das war bestimmt anstrengend. Jetzt braucht man auch nur noch die Türen anpassen, Schritt 4 also beliebig oft wiederholen.

4. Türen erstellen:
  Ich habe schonmal 2 Türen als Vorlage erstellt. Die erste davon mit Extrabeschreibungen. Hier schreibe ich jetzt, was du tun musst, wenn du komplett neue Türen machen willst:

  1. Doors.ash:
    - Gucken ob MAX_DOORS (Anzahl aller Türen) noch ausreicht. Ggf. erhöhen.
    - beim enum nach Tuer2, eine neue Zeile mit eDoorNumTuer3, (Name egal, komma beachten, die ersten zwei dürfen auch verwendet werden)

  2. Doors.asc:
    - Schema wie Tür 2 kopieren, Werte anpassen. (oder einfach zu erst das Schema anpassen)

  3. Die Räume jeweils erweitern um...
    - einen Tür-Hotspot, dieser muss in der Description am Ende ">v" haben und im "any_click" Skript sowas beinhalten:
      function hTuer_AnyClick()
{
  if(Door[eDoorNumTuer1].Click()==0) Unhandled();
}
   - ein Tür-Objekt, dieses darf nicht klickbar sein, braucht auch nicht "verskriptet" werden.
    - eine Load-Funktion des Raumes:
      function room_Load()
{
// Alles andere was zum Raumladen gemacht wird.
Door[eDoorNumTuer1].Init(oTuer, hTuer);
}

Im Gegensatz zu altem Skript war das doch einfach oder? (Abgesehen vom einmaligen einfügen der Skripte)

Noch eine Info: Mit Schlüsseln sieht das auch anders aus wie im alten Skript, wenn du da noch Hilfe brauchst, können wir dir gerne helfen. Und glaub mir, nicht nur dann können wir dir bei Problemen zur Seite stehen. :)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: rulaman am 12. Dezember 2010, 22:23:46
Ich verweiße hier gerne nochmals an die neuen SPs (welche anscheinend nicht auf die Hauptseite gewandet sind), in denen die Funktionen bereits enthalten sein sollten.

http://www.maniac-mansion-mania.de/forum/index.php?topic=1034.msg31591#msg31591 (Ich finde nur nicht den genauen Link)

Dann werde ich mal dieses Wochenende die Starterpacks updaten (auch mit dem neusten gefundenen Fehler). und werde es hier wieder posten (als Mega-Zip)
(Police Molest ist auch fast fertig).



Grüße
Rulaman
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 12. Dezember 2010, 22:38:29
schreib mir eine pn wenn du soweit bist, ich stells dann rauf.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 12. Dezember 2010, 23:50:59
Ich verstehe das nicht mit den Türen.
im Leeren SP habe ich Raum für Raum fertigmachen können
Raumscript:

Zitat
function hTuer_AnyClick()
{
   SetDoorStrings("Die Tür zum Flur.", "", "Damit klappt das nicht.");
   if ( any_click_on_door(1, oTuer, 274, 126, eDirRight, 6, 33, 135, eDirRight) == 0 ) Unhandled();
   SetDoorStrings("", "", ""); // strings leeren, um beim Vergessen keinen falschen Satz sagen zu lassen.
}

konnte im Raum auch alles machen, öffnen und so, nur den Raum hat der player nicht wechseln können.

Und beim Kevin SP erst
"neuer Raum"
"edit room"
"Walkable areas"
"Hotspot" (Tür, hTuer) - roomscript:
Zitat
function hTuer_AnyClick()
{
   if ( Door[gr_Bernard].Click() == 0 ) Unhandled();
}

"object" (Tür)
room script:
Zitat
function room_Load()
{
   Door[gr_Bernard].Init(oTuer, hTuer);
}
und dann muss ich noch im Doorscript alles weitere eingeben.
Doorsckrpit:

Zitat
   // Bernards Zimmertür
   Door[gr_Bernard].l_Room                  = 19;
   Door[gr_Bernard].i_XPosition         = 45;
   Door[gr_Bernard].i_YPosition         = 135;
   Door[gr_Bernard].l_Direction         = eDirLeft;

   Door[gr_Bernard].l_NewRoom            = 6;
   Door[gr_Bernard].i_NewXPosition      = 240;
   Door[gr_Bernard].i_NewYPosition      = 130;
   Door[gr_Bernard].l_NewDirection      = eDirDown;

   //Door[gr_Bernard].s_IsLocked         = "Die ist abgesperrt.";
   Door[gr_Bernard].s_LookAt               = "Meine Zimmertür.";
   Door[gr_Bernard].s_NewLookAt         = "Meine Zimmertür.";
   //Door[gr_Bernard].s_WrongItem      = "Damit geht es nicht.";


Fehlermeldung: ...undefined symbol "gr_Bernard"

was mache ich falsch ???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 13. Dezember 2010, 15:05:15
da fehlt jetzt nur noch der "gr_Bernard" Eintrag im Doors.ash (dort wo die anderen Türen aufgelistet sind), ansonsten siehts gut aus. :)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 13. Dezember 2010, 16:58:20
Ach ja, bevor ich es vergesse....
...die Anleitung habe ich hier im Forum gefunden, um ein "mmm" Spiel zu erstellen, was ich "leider" erst später festgestellt habe, ist das die Anleitun auf AGS 2.7 basierte....
...daher auch die Fehler (DIR_LEFT) welche beim AGS3 ja (eDirLeft) heissen müssen.
Danke für die Hilfe
Streng genommen haben DIR_LEFT und eDirLeft nichts mit der Versionsnummer von AGS zu tun; das sind willkürliche Definitionen.
Welche Anleitung für 2.7? Bitte poste den Link. Das alte Zeug muss weg, sonst gibt's immer wieder Konfusion, wenn Neulinge diesen uralten Schrott benutzen.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 13. Dezember 2010, 21:01:06
@Endres,
das Letzte Zitat ist das was ich im Script "Doors" eingegeben habe und die Fehlermeldung: ...undefined symbol "gr_Bernard" erhalten habe. (Wo lege ich das "object"oTuer an???)
ich kenne mich noch nicht so genau aus, aber das was ich bislang gemacht habe funtioniert alles.
habe "hotspots" zum "Raum" wechsel erstellt.... geht alles, vur mit den sch... Türen habe ich meine probleme.
So wie ich es (mir an-) gelernt habe muss ich ein "any_Click" für "hTuer" sowie "oTuer" erstellen, nur in den SP seke ich diesen eintrag nicht, ebenso funktioniert bei mir die optiov "Tür>v" auch nicht.

@KhrisMUC
die Anleitung habe ich unter anderem auf anderen Seiten, sowie hier im Forum gesehen:

http://www.maniac-mansion-mania.de/forum/index.php?topic=15.0 (http://www.maniac-mansion-mania.de/forum/index.php?topic=15.0)

wo u.a das mit "DIR_UP" steht, was bei mir im AGS3.1 nicht funktioniert.

Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 13. Dezember 2010, 21:22:10
@KhrisMUC
die Anleitung habe ich unter anderem auf anderen Seiten, sowie hier im Forum gesehen:

http://www.maniac-mansion-mania.de/forum/index.php?topic=15.0 (http://www.maniac-mansion-mania.de/forum/index.php?topic=15.0)

wo u.a das mit "DIR_UP" steht, was bei mir im AGS3.1 nicht funktioniert.

Bitte gleich überarbeiten Khrismuc.  ;D  :-*
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 13. Dezember 2010, 23:47:56
@Endres,
das Letzte Zitat ist das was ich im Script "Doors" eingegeben habe und die Fehlermeldung: ...undefined symbol "gr_Bernard" erhalten habe. (Wo lege ich das "object"oTuer an???)
ich kenne mich noch nicht so genau aus, aber das was ich bislang gemacht habe funtioniert alles.
habe "hotspots" zum "Raum" wechsel erstellt.... geht alles, vur mit den sch... Türen habe ich meine probleme.
So wie ich es (mir an-) gelernt habe muss ich ein "any_Click" für "hTuer" sowie "oTuer" erstellen, nur in den SP seke ich diesen eintrag nicht, ebenso funktioniert bei mir die optiov "Tür>v" auch nicht.
Türen haben zwar auch ein Objekt, das braucht aber kein any_Click; die Tür-Objekte werden nur zum Anzeigen des "Türlochs" verwendet und sind sowieso nicht anklickbar.
Um das neue Türensystem zu nutzen, braucht wieder jede Tür eine interne Nummer; damit sie die bekommt, musst Du den Namen für die Tür an die enum-Definition eDoorNum in Doors.ash hängen. Das hat Endres gemeint.

Im Mansion-Pack beispielsweise sähe das so aus:
enum eDoorNum
{
eDoorNumHaustuer,
eDoorNumGitter,
        .
        .
        .
eDoorNumTeleskopzimmer,
eDoorNumDrahtraum,
        gr_Bernard,    // Bernard's Zimmertür
};

die Anleitung habe ich unter anderem auf anderen Seiten, sowie hier im Forum gesehen:
http://www.maniac-mansion-mania.de/forum/index.php?topic=15.0 (http://www.maniac-mansion-mania.de/forum/index.php?topic=15.0)
wo u.a das mit "DIR_UP" steht, was bei mir im AGS3.1 nicht funktioniert.

Nochmal: ob "DIR_UP" funktioniert oder nicht, hat nix mit der AGS-Version zu tun. Du verwendest aber ein neueres Starterpack und dort sind die Namen der Richtungen modernisiert worden.

Bitte gleich überarbeiten Khrismuc.  ;D  :-*

Bei Gelegenheit ;D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 14. Dezember 2010, 13:49:39
Juhuu.... ich kann Türen öffnen und in den nächsten Raum gehen...!!!

vielen Dank für die Hilfe.....

...habe aber wieder ein Problem...   wenn ich raus gehe ist die Tür wierder zu (kein Problem bei nur einem Player, das kann ich ja im "Doorscript" einstellen). wenn ich aber wieder zurück gehe ist die Tür zwar offen, aber das Objekt verschwindet (Tür sieht zu aus, ist aber offen).
...soweit bin ich zufrieden, geht gut voran und macht echt spass...!!!
Tolles Forum :) :D :P
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 14. Dezember 2010, 14:18:44
In jedem Raum mit Tür muss in "Enters room before fade-in" / room_Load() Folgendes stehen:

  Door[gr_Bernard].Init(oTuer, hTuer);
Natürlich von den Werten entsprechend angepasst; jede Tür braucht ihre eigene Zeile mit ihrem enum, Object und Hotspot.
Diese Zeile sorgt u.A. dafür, dass das Türobjekt je nach Zustand der Tür an- oder ausgeschaltet wird.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 14. Dezember 2010, 17:32:53
habe das Problem schon erkannt.... und es funktioniert auch.
Habe auch soweit die "gleichen" parameter im Sckipt stehen, nur das in einem Raum (mit 2 Türen) alles o.k. ist, nur in einem Raum (mit nur 1 Tür) ist die Tür zwar offen, sieht aber zu aus, in einem anderen kann ich die tür öffnen und schliessen, aber die Tür sieht ebenso zu aus....
die Funktionen sin da, bis auf bei einer (habe "Tür>v" angegeben) wo es mir im gMaingui nichts anzeigt, kann sie aber Offnen, schliessen und betreten.....
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 14. Dezember 2010, 18:16:14
Du hast aber schon jeder Tür ein neues enum gegeben, oder? Und jede Tür komplett in Doors.asc eingetragen? Und in jedem Raum alle Türen mit .Init() initialisiert?
Und die Objekte richtig den Türen zugeordnet usw?

Überprüf nochmal alles.
Ich kanns mir auch mal anschauen, müsstest die Quelldateien halt packen und irgendwo hochladen.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 14. Dezember 2010, 18:34:36
o.k. ...ich schäme mich, habe bei der einen Tür den Scriptfehler gefunden, hatte ein "enter room after fade in" objekt aktiviert. jetzt gehts, bis auf die eine Tür...  kann sie nutzen aber nicht mit Rechtsklick und sie zeigt sich nicht als offen an (es sei denn ich aktiviere unter " visible" true).
desweitern habe ich mir in beiden "doors" 20 Türen eingerichtet.

für den einen Raum habe ich das:


Zitat
   Door[eDoorNumTuer2].i_GlobalInt                  = eDoorClosed;
   Door[eDoorNumTuer2].l_Room                        = 6;
   Door[eDoorNumTuer2].i_XPosition                  = 558;
   Door[eDoorNumTuer2].i_YPosition                  = 115;
   Door[eDoorNumTuer2].l_Direction                  = eDirUp;

   Door[eDoorNumTuer2].l_NewRoom                     = 14;
   Door[eDoorNumTuer2].i_NewXPosition            = 40;
   Door[eDoorNumTuer2].i_NewYPosition            = 125;
   Door[eDoorNumTuer2].l_NewDirection            = eDirRight;

   Door[eDoorNumTuer2].s_LookAt                     = "Das ist die Tür zum Speisesaal.";
   Door[eDoorNumTuer2].s_NewLookAt                  = "Da geht es wieder nach Draussen.";
habe für Raum 6 und 14 "  if(Door[eDoorNumTuer2].Click()==0) Unhandled();
angegeben, das gleiche für Raum 7 und 14, nur mit Door[eDoorNumTuer8]
zwischen Raum 6 und 14 klappt alles, im Raum 14 zu 7 auch, nur von Raum 7 nicht. sehe nicht das es offen ist....
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 14. Dezember 2010, 19:27:36
Ich nehme alles zurück....
...ich sollte ne Therapie anfangen..... mit meine Türen.... ist warscheinlich der "Holzwurm drin.
hatte bei room_load nen komma drin was da nicht hingehört......
....jetzt geht alles.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 14. Dezember 2010, 19:59:47
Ich nehme alles zurück....
...ich sollte ne Therapie anfangen..... mit meine Türen.... ist warscheinlich der "Holzwurm drin.
hatte bei room_load nen komma drin was da nicht hingehört......
....jetzt geht alles.

Keine Panik. Als Anfänger ist das gar nicht so leicht, das überhaupt hinzukriegen. Also großes Lob trotzdem von mir, das du es gepackt hast. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 17. Dezember 2010, 18:25:04
das mit den Türen und dem Skript läuft bei mir ja schon recht gut,
ich habe meine Räume mit Bernard als player gemacht und somit auch als Bernards Zimmer im DoorScript geschrieben:

Zitat
Door[eDoorNumTuer1].s_NewLookAt   = (das ist mein Zimmer");

ebenso im RoomScript ("das ist mein Schreibtisch")

nun die Frage: wie ist es wenn ich die "Storry" mit einer andern Charaktere Spielen möchte, oder gar 2 oder 3 Player habe...

im RoomScript kann ich ja schreiben (cDave.Say("...");), aber die anderen dialoge werden ja auch gesagt, obwohl sie nicht im Raum sind...??

Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 17. Dezember 2010, 20:00:49
Normalerweise ist im Starterpack eine Funktion "SayIfPlayer" enthalten. Vielleicht ist das wonach du suchst.  :cl
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 18. Dezember 2010, 12:04:28
Danke... ist aber momentan nicht so wichtig! Ich habe mich erstmal für eine Charaktere entschieden, wollte mein Spiel ursprünglich,wie im Original mit 2 weiteren Player zu aussuchen machen. Denke aber das, das die Sache komplizierter machen würde.
komme mit meinem Projekt gut vorran...
hab da aber noch ne Frage zum Raumwechsel mit hotspot (wie bei Bernards Haus und "gehe zu Garage"):
ich habe so was bei mir mit eingebaut, aber ich möchte das der player von der Position im "neuem" Raum noch weiter zu einem anderem Punkt läuft...
wie schreibe ich das den im Skript ?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 18. Dezember 2010, 15:51:22
Im anderen Raum in "player enters screen after fade-in":

  if (player.PreviousRoom == 4) player.Walk(130, 175);
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 18. Dezember 2010, 16:36:48
gut, das funktioniert....
...nur habe ich 2 Möglichkeiten den neuen Raum zu betreten, eimal von der Rechten und eimal von der Linken Seite wo ich ja jewals an einem anderen punkt ankommen möchte.
Script:

Zitat
function hBackbordBug_AnyClick()
{
  if(any_click_move(815, 80, eDirLeft))
   {
    if (UsedAction(eActWalkTo))
      {
         SetNextScreenTransition(eTransitionCrossfade);
         player.ChangeRoom(10, 140, 120);
         player.FaceDirection(eDirRight);
      }
      else if (UsedAction(eActLookAt))
      {
         Wait(5);
         player.Say("Da geht es zur anderen Seite.");
      }
      else Unhandled();
   }
}

function hBackbordHeck_AnyClick()
{
  if(any_click_move(495, 80, eDirRight))
   {
    if (UsedAction(eActWalkTo))
      {
         SetNextScreenTransition(eTransitionCrossfade);
         player.ChangeRoom(10, 505, 120);
         player.FaceDirection(eDirLeft);
      }
      else if (UsedAction(eActLookAt))
      {
         Wait(5);
         player.Say("Da geht es zur anderen Seite.");
      }
      else Unhandled();
   }
}


jetzt soll der Player aber von
player.ChangeRoom(10, 140, 80);
zu
(10, 140, 120);
laufen
und von der anderen Seite ja zu einem anderen Punkt
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 20. Dezember 2010, 19:27:26
Dann checkst Du halt die Koordinaten vom Spieler:
  if (player.x < 300) player.Walk(140, 120);
  else player.Walk(505, 120);

Der Nächste bitte! ;D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 10:51:47
Wie kann ich eine Verschlossene Tür mit einem Schlüssel öffnen?
habe Object und Inventory Item (gelber Schlüssel) und kann den auch mitnehmen und benutzen.
im Script Doors habe ich die Tür von (= eDoorClosed;) nach (= eDoorLocked;) geändert und im Room Script Hotspot Tür von (  if(Door[eDoorNumTuer17].Click()==0) Unhandled();) nach
(if ( Door[eDoorNumTuer17].ClickSpecial(2, 3, iGelberSchluessel, 2) == 0 ) Unhandled();) geändert, aber das klapp so nicht...

Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 11:43:40
Die Fehlermeldung im AGS:

Zitat
Error(line5): Typ mismatch: cannot convert 'InventotyItem*'to int'
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 23. Dezember 2010, 12:10:34
Dann musst du einfach
..., iGelberSchluessel, ......in...
..., iGelberSchluessel.ID, ......verändern.

Warum: AGS erwartet an dieser Stelle die Nummer (also die ID) eines Items. Du verweist aber direkt auf das Item selbst - womit das Program an dieser Stelle leider nichts anfangen kann. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 12:38:04
jetzt kann ich ohne fehlemeldung speichern, aber der schlüssel öffnet mit die Tür immer noch nicht...

...ach ja, noch was... wie benutze ich Item's die ich schon habe (z.B ziehe am Lukenöffner und danach möchte ich einen "stock" und ein "draht" haben)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 13:00:15
habe das hier im Script:

Zitat
function hTuer_AnyClick()
{
  if(Door[eDoorNumTuer17].ClickSpecial(2, 3, iGelberSchluessel.ID, 2) == 0 ) Unhandled();

   if ( any_click_move(Door[eDoorNumTuer17].i_XPosition, Door[eDoorNumTuer17].i_YPosition, Door[eDoorNumTuer17].l_Direction) )
   {
      if ( UsedAction(eActUseInventory) )
      {
         if ( eDoorNumTuer17 && player.ActiveInventory == iGelberSchluessel )
               {
        eDoorLocked = false;
            player.Say("Die Tür ist jetzt aufgeschlossen.");
         }
         else if ( !eDoorNumTuer17 && player.ActiveInventory == iGelberSchluessel )
         {
            eDoorLocked = true;
            player.Say("Die Haustür ist jetzt abgeschlossen.");
         }
         else if ( eDoorNumTuer17 )
         {
            player.Say("Die ist abgeschlossen.");
         }
      }
      else
      if ( !eDoorNumTuer17 )
      {
         if ( Door[eDoorNumTuer17].Click() == 0 )  Unhandled();
      }
      else
      {
         player.Say("Die ist abgeschlossen.");
   }
}
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 13:02:23
Fehlermeldung

variable'eDoorLocked'is read-only
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 23. Dezember 2010, 13:18:30
Du verwendest doch mittlerweile das neue Türenskript oder?

Dann schau dir mal bei deinem hotspot statt ...Click(...); die Funktion ClickSpecial(...); an. Also:

function hTuerABC_AnyClick() {
  if(!Door[eDoorNumTuerABC].ClickSpecial(2, 3, iSchluessel.ID, eDoorLocked)) Unhandled();
}

//Edit: Du brauchst gar nicht so viel kompliziertes zu machen. Und nebenbei: e... ist immer "read-only" weil die Eigenschaft die du gesucht hast nicht dessen Wert, sondern "Door[...].i_GlobalInt = ...;" richtig gewesen wäre... eDoorLocked ist immer der Wert, der einer versperrten Tür mit dieser "GlobalInt" Eigenschaft gegeben wird.

//Edit: Habe jetzt erst gesehen, dass du es so schon gemacht hast. Dann kürz es doch auf das hier:
function hTuer_AnyClick() {
  if(Door[eDoorNumTuer17].ClickSpecial(2, 3, iGelberSchluessel.ID, 2) == 0 ) Unhandled();
}

Und bitte benutz doch die "Edit" Funktion, mach keine Doppelposts. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 13:41:39
ich benutze das neue Türenscript.
habe bislang das im Script gehabt.
Code:
Zitat
function hTuer_AnyClick() {
  if(Door[eDoorNumTuer17].ClickSpecial(2, 3, iGelberSchluessel.ID, 2) == 0 ) Unhandled();
}
nur schliesst es mir die Tür nicht auf, dehalb habe ich das weitere (aus einem anderem Script) zugefügt....
und was bedeutet die "2" hinter ....schluessel.ID, 2)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 23. Dezember 2010, 14:10:37
2 bedeutet in diesem Fall das selbe wie eDoorLocked (also nach erneutem schließen ist es wieder abgeschlossen).

Warum das so nicht geht, verstehe ich irgendwie nicht. Eigentlich muss das so schon ausreichen. Was passiert denn, wenn du den Schlüssel mit der Tür benutzt, oder wenn du sie so öffnest?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 14:19:50
Wenn ich die Tür öffne, sagt der player "Die Tür ist verschlossen"....
wenn ich den Schlüssel an der Tür benutze, sagt der player "damit geht die Tür nicht auf"
ich verstehe das auch nicht...

ich habe nun folgendes ausprobiert....
...habe den "gelben Schlüssel" beim Start ins inventar getan, wenn ich in dem Raum (mit Tür17) starte, kann ich mit dem Schlüssel die Tür öffnen, starte ich aber von der anderen seite, öffnet mir der player die "selbe" Tür nicht...

//Edit
habe den Fehler gefunden....
...muss ja auch in dem Script des "anderen" Raum auch die "hotspot Tür" ändern.
....bei so vielen Türen kann man schon ganz schön durcheinander geraten....

nun noch mal zur anderen frage:
wie kann ich etwas was ich im inventar habe so benutzen (z.b. ziehe Lukenöffner) das ich dann ein"stock" und ein "Draht" im Inventar habe...?

Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 23. Dezember 2010, 14:41:54
Hast du auch das Türenscript auf beiden Seiten der Tür so verändert, dass man sie theoretisch aufschließen könnte?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 14:54:27
ja, habe ich mitlerweise gemacht, kann die tür nun aufschliessen...
...ich verlaufe mich echt noch auf diesem schiff... (viele türen, viele räume...)

...kann mir jemand helfen mit meiner anderen frage um das Inventar zu benutzen helfen... ???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 23. Dezember 2010, 17:09:32
Bei jedem einzelnen Inv-Item gibt es auf der Übersichtseite bei den Eigenschaften auch den Bereich "Events" (Blitz-Knopf).

Dort kannst du die meisten Aktionen unter "Other click on inventory item" scripten.
Das machst du im Prinzip genau wie bei allen anderen Objekten im Spiel auch.

Das, was bei "benutze item" passieren soll, solltest du allerdings unter "interact inventory item" scripten.
Dort funktioniert es eher.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 17:53:10
danke für den tip, ich werde es mal probieren...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 23. Dezember 2010, 18:22:16
gibt es im "neuen" türscript die möglichkeit, das die türen, die durch die schlüssel geöffnet werden, immer offen bleiben und das der schlüssel aus meinem inventar verschwindet???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 23. Dezember 2010, 20:11:14
Dass sie immer offen bleiben, lässt sich einfach dadurch machen, dass du diese 2:
...erSchluessel.ID, 2)...in eine 0 veränderst.
-> Die Zahl bestimmt nämlich den Zustand, den die Tür erlangen soll, wenn sie geschlossen wird (2 heißt "versperrt", 0 heißt "geschlossen").

Dass man den Schlüssel dann auch verliert, kann man auf 2 verschiedene Arten machen.

Entweder du willst, dass der Schlüssel immer, bei jeder Tür, bei jedem erfolgreichem Aufschließen verschwindet, dann muss du folgende Stelle in "GlobalScript.asc" suchen und ein paar sachen hinzufügen (das hinzugefügte ist markiert):  else if ( UsedAction(eActUseInventory) && (key >= 0) )
  {
    if (any_click_move(i_XPosition, i_YPosition, l_Direction) )
    {
if ( charInv )
{
if ( charInv.ID == key )
{
if ( this.i_GlobalInt == eDoorLocked )
{
PlaySound(2);
o_Objekt.Visible = true;
this.i_GlobalInt = eDoorOpen;
player.LoseInventory (charInv); <-------****** (markiert) *********
}
}
else
{
if ( this.s_WrongItem != null )
{
player.Say(this.s_WrongItem);
}
else
{
player.Say(s_WrongItemStandard);
}
}
}
    }
  }

...oder es soll nur an einer Stelle, bei einer Tür so sein. Dann musst du es dort vor Ort im Türscript verändern:

Du schreibst einfach unter deine normale Türenscriptzeile:
 
if(Door[eDoorNumTuer17].ClickSpecial(2, 3, iGelberSchluessel.ID, 0) == 0 ) Unhandled();
if ( UsedAction ( eActUseInventory ) && player.ActiveInventory == iGelberSchluessel ) player.LoseInventory (iGelberSchluessel);

Beides ungetestet, könnte aber klappen. :)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 24. Dezember 2010, 07:59:20
Danke für die hilfe...
...nun schleppe ich mich nicht mehr mir so viele schüssel ab
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 24. Dezember 2010, 12:02:38
Freut mich. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 26. Dezember 2010, 01:00:42
Ich habe da eine Fehlermeldung mit der ich nichts anfangen kann...

habe das Spiel mit build exe. gespeichert und gestartet, und beim laufen mit player (an bisher nur einer Position) stürzt das Spiel ab.

Fehlermeldung:

Zitat
in "GlobalScript asc.",Line 503
from "GlobalScript asc.",Line 2045

Error: Error running from 'repeatedly_execute':
Error: Array index out of bounds (index: -1, bounds: 0..26)

desweiteren weiss ich nicht wie ich im "raumscript" es so schreibe, das wenn ich ein objekt mit hilfe des Inventar hervor hole und es an mich nehme, das  ich es ein 2tes mal mit dem Inventar nicht mehr machen kann.
bislang kann ich das objekt mit dem Inventar hervor holen und an mich nehmen und es so oft ich will wiederholen und an mich nehmen wie ich will (das will ich aber nicht)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 26. Dezember 2010, 01:55:35
damit der inventargegenstand verschwindet musst du in deinen code, logischerweise genau dort wo er verschewinden soll, irgendwas in dieser art schreiben:
player.LoseInventory (iGelberSchluessel);*siehe code von timer*

der andere error kommt von einem array, wo auf ein arrayelement zugegriffen wird, das es nicht gibt.
vielleicht postest du mal die zeilen vom globalscript rund um zeilennummer 503 und 2045, und sagst uns an welcher position genau dein spiel abstürzt,
damit wir mehr sagen können.  :cl


Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 26. Dezember 2010, 10:38:00
auszuge aus dem "globalsckript" zwecks fehlermeldung:

Zitat
// ============================= ActionBar ===========================================

function UpdateActionBar()
{
  // set the text in the action bar
  String madetext;
  int action = global_action;
  String objekt;
  String item;
   GUIControl *guic;
   madetext = "";
  objekt = SHOWNlocation;
  item = "";
  if (GlobalCondition (5) == 1)
  {
    // write SWITCH TO CHAR
    action = eActSwitchTo;
      guic = GUIControl.GetAtScreenXY(mouse.x, mouse.y);
      if ( null != guic )
      {
         if ( guic.ID == 12 )
         {
            objekt = character[UpperButton()].Name;     <-----------line 503------
         }
         else
         {
            objekt = character[LowerButton()].Name;
         }
      }
  }
  else if (Mouse.Mode == 4)
  {
    // use or give inventory item
    item = player.ActiveInventory.Name;
      item = item.RemoveExtension();
  }
  else if (GlobalCondition (1) == 1)
  {
    // if the mouse is in the inventory and modes Walk or pickup are selected
    action = eActUse;
   }
   madetext = TranslateAction (madetext, action, objekt, item);
  // show action text
   gAktionText.Text = madetext;
   gAktionText.TextColor = ActionLabelColorNormal;
}

Zitat
// ============================= repeatedly_execute ===========================================
// this section after on_mouse_click

#sectionstart repeatedly_execute  // DO NOT EDIT OR REMOVE THIS LINE
function repeatedly_execute ()
{
   DisplaySpeechQ_RE(); // place it before any other script code in rep. exec.
  
  if (IsGamePaused () != 1)
  {
    CheckTimers ();
      InventoryItem *invAt = InventoryItem.GetAtScreenXY(mouse.x, mouse.y);
    // --- for the MovePlayer function ---
    if (GScancelable == 1)
    {
      GScancelable = 0;
      if ( null == invAt ) on_mouse_click (eMouseLeft);
      else on_mouse_click (eMouseLeftInv);
    }
    else if (GScancelable == 2)
    {
      GScancelable = 0;
      CheckDefaultAction ();
      if ( null == invAt ) on_mouse_click (eMouseRight);
      else on_mouse_click (eMouseRightInv);
    }
    CheckDefaultAction ();      <-------------------------line2045-------------
    UpdateActionBar ();
  }
  // change the arrows in the inventory to show if you
  // can scroll the inventory:
   //readonly InventoryItem* InvWindow.ItemAtIndex[];

   InvWindow *invMain = gMainInventory;
   if ( null != invMain.ItemAtIndex[0] )
   {
      if ( 0 != gMainInventory.TopItem )
      {
         // if inventory can scroll up
         gMainInvUp.NormalGraphic = invUparrowONsprite;
         InventoryItem *invItem = InventoryItem.GetAtScreenXY(180, 160);
      
         if (invItem.ID < 0)
            gMainInventory.ScrollUp();
      }
      else
         gMainInvUp.NormalGraphic = invUparrowOFFsprite;
   }
   if ((gMainInventory.TopItem + (gMainInventory.ItemsPerRow * gMainInventory.RowCount)) < gMainInventory.ItemCount)
      gMainInvDown.NormalGraphic = invDownarrowONsprite;
  else
      gMainInvDown.NormalGraphic = invDownarrowOFFsprite;
}
#sectionend repeatedly_execute  // DO NOT EDIT OR REMOVE THIS LINE
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 26. Dezember 2010, 11:07:02
das mit dem Schlüssel habe ich ja schon soweit verstanden.
was ich meinte ist... ich habe ein "hotspot" wo ein "object" versteckt ist, welches sichtbar wird wenn ich ein "inventar" benutze. ich nehme das "object" an mich und es verschwindet vom bild. soweit ist alles o.k.
wenn ich nun erneut mit dem "object" den "hotspot" benutze erscheint wieder das selbe "object" welches ich wieder an mich nehmen kann (und wenn ich langeweile habe, kann ich das 100 oder 1000 mal machen).

Code beim "hotspot":
Zitat
    else if (UsedAction(eActPush))
      {
      Wait(5);
      player.Say("Also wirklich...");
    }
     else if (UsedAction(eActUseInventory) && player.ActiveInventory == iStock )
      {
         PlaySound(64);
         oSchluessel.Visible = true;
      Wait(15);
      player.Say("Ich habe ein Schüssel gefunden.");
      }
      else Unhandled();
    }

sobald nun das "object" sichtbar wird, möchte ich das das "object" beim "hotspot" ganz verschwindet und nicht mehr da ist...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 26. Dezember 2010, 13:25:37
habe das letztere Problem mit den "objects" gelöst, indem ich ein zusätzliches "object" zu den "hotspots zugefügt habe welches nach anwendung im dem "inventar" verschwindet....
...sicherlich gibt es eine einfache lösung, aber jetzt klappt es wenigstens...!!!


bei dem Problem mit der Fehlermeldung, muss ich zu sagen, das es beim Spielen nicht immer (nur ab und zu) auftaucht. und zwar wenn "nimm" anstatt "gehe zu" aktiviert ist....
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 26. Dezember 2010, 19:00:01
Das Letzte zuerst:
Game.DoOnceOnly oder Variable verwenden.

Zum Fehler:
Dies hier:
            objekt = character[UpperButton()].Name;ersetzen durch:
            if (UpperButton() >= 0) objekt = character[UpperButton()].Name;
Das Gleiche etwas weiter unten mit LowerButton().
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 27. Dezember 2010, 16:59:02
Danke für die hilfe...
...habe bislang noch keine weitere Fehlermeldung bekommen...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 08:41:51
also das mit dem "Game.DoOnceOnly" habe ich nicht verstanden...

...ich habe einen Schrank und wenn ich ihn öffne möchte ich das das "Object" sichtbar wird und ich es an mich nehmen kann (mit dialog).... soweit klappt auch alles.

nur wenn ich den Schrank erneut öffne, wird das "Object" (mit dem gleichen dialog) wieder sichtbar, das soll aber nicht sein (und es soll der dialog "leer" kommen).
 hat jemand ein Scriptvorschlag... ???

und wie geht das mit dem strom?
ich kenne es aus dem "mm" wo man die "kabel" im einem Raum ( es war der Dachboden) reperieren muss, damit im anderem Raum der Strom bzw. das licht an geht (brauche ich beim Raum ohne licht 2 Räume?)
denn erst komme ich ja in den raum wo es dunkel ist, und wenn die kabel reperiet sind, kann ich den Raum richtig betreten.

Danke
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 28. Dezember 2010, 11:48:15
Game.DoOnceOnly ist eine Funktion, mit der du auf einfache Weise bewerkstelligen kannst, dass bestimmte Sachen nur einmal ausgeführt werden.
Verwendet wird es so:
if (Game.DoOnceOnly("oeffne schrank")) {
  oSchrank.Visible = true;
}
Das, was zwischen den geschweiften Klammern steht, wird im ganzen Spiel nur einmal ausgeführt. Wichtig ist nur, dass du bei jeder einmaligen Aktion einen anderen Text in der Klammer stehen hast. Denn sobald an zwei Stellen der gleiche Text steht, werden diese als die gleiche Aktion angesehen und man kann nur eine von ihnen ausführen.

Schrank:
Ich würde es einfach so lösen, dass du das Objekt, das man nehmen kann, beim nehmen nicht "verschwinden" lässt, sondern lediglich so tust.
-> Hä?
--> nicht Objekt.Visible = false, sondern Objekt.Y = 320;
---> Du verschiebst das Objekt außerhalb des sichtbaren Bereichs. Somit wird es zwar offiziell wieder sichtbar, wenn der Spieler wieder den Schrank öffnet, aber er sieht es nicht (und kann es deshalb auch nicht anklicken).

... das ist allerdings nur solange die perfekte Lösung, wenn der Spieler das Objekt selber anklicken und mitnehmen kann.

Wenn er es gleich beim ersten öffnen automatisch mitnehmen soll, machst du es mit DoOnceOnly:

if (UsedAction (eActOpen)) {
  oOffenerSchrank.Visible = true;
  if (Game.DoOnceOnly ("Sieh Zeugs")) {
    oZeugs.Visible = true;
    player.Say ("Ooooh! Zeugs!");
    oZeugs.Visible = false;
    player.AddInventory (iZeugs);
  }
  else player.Say ("Leer.");
  oOffenerSchrank.Visible = false;
}

Für den Rest habe ich gerade keine Zeit, aber ich hoffe, ich habe dir schon mal weiter geholfen. :)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 16:54:04
ich weiss.... ich nerve....
...aber ich möchte zusätzlich noch das der schrank vorher verschlossen ist und erst durch ein schlüssel geöffnet werden kann, habe im script (hSchkank_AnyClick mit den dialogen drin und zusätzlich es mit oSchrank_UseInv)kann aber die tür mit Schlüssel und auch so öffnen....
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 28. Dezember 2010, 17:47:31
Junge, Du brauchst Variablen. Du musst den Zustand des Spiels speichern, z.B. ob der Schrank verschlossen ist, oder ob die Kabel repariert sind. Das macht man mit Variablen.
Brauchst Du diese Info nur in einem Raum, reicht eine Raumvariable, d.h. Du schreibst z.B. an den Anfang des Raumskripts:
// Zustand des Schranks, 0 = verschlossen, 1 = zu, 2 = offen
int schrank;

Im Fall der Kabel, wo der Zustand in mehr als einem Raum verändert bzw. abgefragt werden muss, braucht man eine globale Variable. Also Global Variables im Baum aufmachen, neue bool, name "kabel_repariert", Anfangswert "false".

Wenn nun im Raum mit den Kabeln diese repariert werden, benutzt Du
  kabel_repariert = true;Im anderen Raum dann
  if (kabel_repariert) {
    // licht anschalten, etc.
  }
  else player.Say("Ich kann nix sehen, zu dunkel hier.");

Beim Schrank ähnlich:
  // öffnen
  if (schrank == 0) player.Say("Er ist verschlossen.");
  else if (schrank == 2) player.Say("Er ist schon offen.");
  else {
    // schrank öffnen, etc.
    ...
  }

  // use inv
  if (player.ActiveInventory != iSchrankSchluessel) player.Say("Das macht keinen Sinn.");
  else {
    if (schrank == 1) player.Say("Ich werde den Schrank nicht wieder zuschließen, warum auch?");
    else if (schrank == 2) player.Say("Ich werde den Schlüssel nicht in den Schrank legen, warum auch?");
    else {
      schrank = 1; // nicht verschlossen aber zu
      player.Say("Der Schlüssel passt! Ich schließe den Schrank auf.");
    }
  }
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 18:45:11
bin ja noch anfänger....

habe folgendes am anfang des Raum scrpit geschreiben:

Zitat
 //Zustand des Tresor, 0 = verschlossen, 1 = zu, 2 = offen
int Tresor;
desweiteren im script:

Zitat
function hTresor_AnyClick()
{
   if (any_click_move(895, 135, eDirRight))
   {
      if (UsedAction(eActWalkTo))
      {
      //   Wait(5);
      }
      else if (UsedAction(eActLookAt))
      {
         Wait(5);
         player.Say("Was da wohl drin ist?");
      }
      else if (UsedAction(eActPickUp))
      {
         Wait(5);
         player.Say("Das geht nicht.");
      }
      else if( UsedAction(eActOpen))
      {
      if (Tresor == 0) player.Say("Er ist verschlossen.");
      else if (Tresor == 2) player.Say("Er ist schon offen.");
      else if(Tresor == 1)player.Say("o.k.");
     }
         PlaySound(1);
         oTresor.Visible = true;
      if (Game.DoOnceOnly("Ein Werkzeugkasten")){
        Wait(40);
        player.Say("Ein Werkzeugkasten!");
        Wait(20);
        player.Say("Den nehme ich mal mit.");
        Wait(5);
        PlaySound(4);
        player.AddInventory(iWerkzeug);
      }
    }
      if (UsedAction(eActClose))
      {
         Wait(5);
         player.Say("Der ist doch zu.");
      }
      else if (UsedAction(eActPull))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=true;
      }
      else if (UsedAction(eActPush))
      {
         Wait(5);
         player.Say("Ich will nichts kaputt machen.");
    }
    if (player.ActiveInventory != iScluesselkarte) player.Say("Das macht keinen Sinn.");
    else {
    if (Tresor == 1) player.Say("Ich werde den Schrank nicht wieder zuschließen, warum auch?");
    else if (Tresor == 2) player.Say("Ich werde den Schlüssel nicht in den Schrank legen, warum auch?");
    else {
      Tresor = 1; // nicht verschlossen aber zu
      player.Say("Der Schlüssel passt! Ich schließe den Schrank auf.");
    }
  }
}

aber es klappt nicht....
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 28. Dezember 2010, 19:07:00
Du hast bei der öffne-Funktion ein paar geschweifte Klammern seltsam gesetzt. Und der Zustand des Tresors musste noch geändert werden.
Ich denke mal, es sollte so aussehen:
else if( UsedAction(eActOpen))
{
  if (Tresor == 0) player.Say("Er ist verschlossen.");
  else if (Tresor == 2) player.Say("Er ist schon offen.");
  else if(Tresor == 1)
  {
    player.Say("o.k.");
    PlaySound(1);
    oTresor.Visible = true;
    Tresor = 2; // Tresor -> "AUF"
    if (Game.DoOnceOnly("Ein Werkzeugkasten"))
    {
      Wait(40);
      player.Say("Ein Werkzeugkasten!");
      Wait(20);
      player.Say("Den nehme ich mal mit.");
      Wait(5);
      PlaySound(4);
      player.AddInventory(iWerkzeug);
    }
  }
}
...und der Teil unten sollte wohl in die "eActUseInv"-Section (?) - also so:
if (UsedAction (eActUseInv)) {
  if (player.ActiveInventory != iScluesselkarte) player.Say ("Das macht keinen Sinn.");
  else
  {
    if (Tresor == 1) player.Say("Ich werde den Schrank nicht wieder zuschließen, warum auch?");
    else if (Tresor == 2) player.Say("Ich werde den Schlüssel nicht in den Schrank legen, warum auch?");
    else {
      Tresor = 1; // nicht verschlossen aber zu
      player.Say("Der Schlüssel passt! Ich schließe den Schrank auf.");
    }
  }
}

Sollte eigentlich funktionieren.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 19:27:54
habe das script noch etwas änder müssen, aber jetzt geht es....
...dafür das ich überhaupt keine ahnung habe, habe ich mich aber gut geschlagen.

code:
Zitat
   else if( UsedAction(eActOpen))
    {
      if (Tresor == 0) player.Say("Er ist verschlossen.");
      else if (Tresor == 2) player.Say("Er ist schon offen.");
      else if(Tresor == 1)
      {
      player.Say("o.k.");
      PlaySound(1);
      oTresor.Visible = true;
      Tresor = 2; // Tresor -> "AUF"
      if (Game.DoOnceOnly("Ein Werkzeugkasten"))
      {
        Wait(40);
        player.Say("Ein Werkzeugkasten!");
        Wait(20);
        player.Say("Den nehme ich mal mit.");
        Wait(5);
        PlaySound(4);
        player.AddInventory(iWerkzeug);
      }
    }
  }

Zitat
   else if (UsedAction (eActUseInventory))
    {
     if (player.ActiveInventory != iSchluesselkarte) player.Say ("Das macht keinen Sinn.");
     else if (Tresor == 1) player.Say("Ich werde den Schrank nicht wieder zuschließen, warum auch?");
     else if (Tresor == 2) player.Say("Ich werde den Schlüssel nicht in den Schrank legen, warum auch?");
     else {
      Tresor = 1; // nicht verschlossen aber zu
      player.Say("Der Schlüssel passt! Ich schließe den Schrank auf.");
      }
    }
  }

das mit den kabeln und so muss ich erst noch probieren...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 20:00:08
aber irgendwo scheint noch ein fehler zu sein...

nachdem ich den "tresor" aufgeschlossen habe und die tür wieder zu mache ist der tresor zu, aber beim erneuten offnen sieht der tresor zu aus und der player sagt "ist doch offen"...

code oTresor:
Zitat
function oTresor_AnyClick()
{
    if (any_click_move(895, 135, eDirRight))
   {
      if (UsedAction(eActWalkTo))
      {
      //   Wait(5);
      }
      else if (UsedAction(eActLookAt))
      {
      Wait(5);
         player.Say("Leer.");
      }
      else if (UsedAction(eActOpen))
      {
         PlaySound(1);
         oTresor.Visible = true;
    }
      else if (UsedAction(eActClose))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else if (UsedAction(eActPush))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else if (UsedAction(eActPull))
      {
         Wait(5);
         player.Say("Ist doch schon offen.");
      }
      else if (UsedAction(eActPickUp))
      {
         Wait(5);
         player.Say("Soll den Schrank da etwa rausreißen?");
      }
      else if (UsedAction(eActUse))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else Unhandled();
   }
}

Code hTresor:
Zitat
function hTresor_AnyClick()
{
   if (any_click_move(895, 135, eDirRight))
   {
      if (UsedAction(eActWalkTo))
      {
      //   Wait(5);
      }
      else if (UsedAction(eActLookAt))
      {
         Wait(5);
         player.Say("Was da wohl drin ist?");
      }
      else if (UsedAction(eActPickUp))
      {
         Wait(5);
         player.Say("Das geht nicht.");
      }
    else if( UsedAction(eActOpen))
    {
      if (Tresor == 0) player.Say("Er ist verschlossen.");
      else if (Tresor == 2) player.Say("Er ist schon offen.");
      else if(Tresor == 1)
      {
      PlaySound(1);
      oTresor.Visible = true;
      Tresor = 2; // Tresor -> "AUF"
      if (Game.DoOnceOnly("Ein Werkzeugkasten"))
      {
        Wait(40);
        player.Say("Ein Werkzeugkasten!");
        Wait(20);
        player.Say("Den nehme ich mal mit.");
        Wait(5);
        PlaySound(4);
        player.AddInventory(iWerkzeug);
      }
    }
  }
    if (UsedAction(eActClose))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else if (UsedAction(eActPull))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=true;
      }
      else if (UsedAction(eActPush))
      {
      Wait(5);
      player.Say("Ich will nichts kaputt machen.");
    }
    else if (UsedAction (eActUseInventory))
    {
     if (player.ActiveInventory != iSchluesselkarte) player.Say ("Das macht keinen Sinn.");
     else if (Tresor == 1) player.Say("Ist doch offen.");
     else if (Tresor == 2) player.Say("Das behalte ich besser. ");
     else {
      Tresor = 1; // nicht verschlossen aber zu
      player.Say("Jetzt ist der Tresor offen.");
      }
    }
  }
}
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 20:27:23
Fehler gefunden....!!!!

Code:
Zitat
...
      if (Tresor == 0) player.Say("Er ist verschlossen.");
      else if (Tresor == 2) player.Say("Er ist schon offen.");
      else if(Tresor == 1)
      {
      PlaySound(1);
      oTresor.Visible = true;
      Tresor = 2; // Tresor -> "AUF"       <----------------Tresor = 1; (ist richtig)---------------
...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 28. Dezember 2010, 20:37:43
Praktisch ja... logisch nicht. Denn der Status für "offen" ist ja schließlich "2". ;)
Damit es auch logisch richtig ist, musst du den Status wieder auf "zu", also "1" setzen, sobald wieder geschlossen wird.

Siehe folgt:
else if (UsedAction(eActClose))
{
  Wait(5);
  PlaySound(1);
  oTresor.Visible=false;
  Tresor = 1; <- neu eingefügt: Status auf "ZU".
}

Natürlich macht das alles nicht viel Sinn, wenn du sowieso Objekte verwendest, da kannst du die ganzen Variablen auch gleich ganz weg lassen, aber ich wollte gerade ein bisschen klugscheißern. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 21:11:16
das klappt aber so nicht...
...wie ich es im script geändert habe geht alles ( kleiner mankel ist, wenn ich als erstes auf "schliessen" gehe höre ich das "sound" öffnen/schliessen). änder ich irgend welches im script (welches ich wieder reture mache) kann ich die tür auch ohne schlüssel öffnen...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 28. Dezember 2010, 22:32:14
ich verstehe die scripts nun gar nicht mehr, erst geht alles, dann änder ich ne kleinigkeit und dann geht alles nicht mehr.... sitze nun schon den halben tag an der einen sache mit dem "tresor"....

code hTresor:
Zitat
function hTresor_AnyClick()
{
   if (any_click_move(895, 135, eDirRight))
   {
      if (UsedAction(eActWalkTo))
      {
      //   Wait(5);
      }
      else if (UsedAction(eActLookAt))
      {
         Wait(5);
         player.Say("Was da wohl drin ist?");
      }
      else if (UsedAction(eActPickUp))
      {
         Wait(5);
         player.Say("Das geht nicht.");
      }
    else if( UsedAction(eActOpen))
    {
      if (Tresor == 0) player.Say("Er ist verschlossen.");
      else if (Tresor == 2) player.Say("Er ist schon offen.");
      else if(Tresor == 1) player.Say("Ist doch zu.");
      {
      PlaySound(1);
      oTresor.Visible = true;
      Tresor = 1; // Tresor -> "AUF"
      if (Game.DoOnceOnly("Ein Werkzeugkasten"))
      {
        Wait(40);
        player.Say("Ein Werkzeugkasten!");
        Wait(20);
        player.Say("Den nehme ich mal mit.");
        Wait(5);
        PlaySound(4);
        player.AddInventory(iWerkzeug);
      }
    }
  }
    if (UsedAction(eActClose))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else if (UsedAction(eActPull))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=true;
      }
      else if (UsedAction(eActPush))
      {
      Wait(5);
      player.Say("Ich will nichts kaputt machen.");
    }
    else if (UsedAction (eActUseInventory))
    {
     if (player.ActiveInventory != iStetoskop) player.Say ("Das macht keinen Sinn.");
     else if (Tresor == 1) player.Say("Ist doch offen.");
     else if (Tresor == 2) player.Say("Das behalte ich besser. ");
     else {
      Tresor = 1; // nicht verschlossen aber zu
      player.Say("Jetzt ist der Tresor offen.");
      }
    }
  }
}

code oTresor
Zitat
function oTresor_AnyClick()
{
    if (any_click_move(895, 135, eDirRight))
   {
      if (UsedAction(eActWalkTo))
      {
      //   Wait(5);
      }
      else if (UsedAction(eActLookAt))
      {
      Wait(5);
         player.Say("Leer.");
      }
      else if (UsedAction(eActOpen))
      {
         PlaySound(1);
         oTresor.Visible = true;
    }
      else if (UsedAction(eActClose))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else if (UsedAction(eActPush))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else if (UsedAction(eActPull))
      {
         Wait(5);
         player.Say("Ist doch schon offen.");
      }
      else if (UsedAction(eActPickUp))
      {
         Wait(5);
         player.Say("Soll den Schrank da etwa rausreißen?");
      }
      else if (UsedAction(eActUse))
      {
         Wait(5);
         PlaySound(1);
         oTresor.Visible=false;
      }
      else Unhandled();
   }
}

habe nur iSchluesselkarte gegen i Stetoskop getauscht....
ich weiss nicht mehr weiter...
...hat einer mal ein script für mich... ???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 28. Dezember 2010, 22:52:59
Was genau funktioniert denn nicht? Bis jetzt sieht das Script eigentlich ganz OK aus. :-\
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 28. Dezember 2010, 23:43:39
überarbeite mal diesen part, das ist ein bisschen konfus, die Klammerung stimt sicher nicht.

    else if( UsedAction(eActOpen))
    {
      if (Tresor == 0) player.Say("Er ist verschlossen.");
      else if (Tresor == 2) player.Say("Er ist schon offen.");
      else if(Tresor == 1) player.Say("Ist doch zu.");
      {         <------------------------------                // klammer zuviel
      PlaySound(1);
      oTresor.Visible = true;
      Tresor = 1; // Tresor -> "AUF"
      if (Game.DoOnceOnly("Ein Werkzeugkasten"))
      {
        Wait(40);
        player.Say("Ein Werkzeugkasten!");
        Wait(20);
        player.Say("Den nehme ich mal mit.");
        Wait(5);
        PlaySound(4);
        player.AddInventory(iWerkzeug);
      }
    }
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 29. Dezember 2010, 05:34:01
Habe die klammer raus genommen, geht aber immer noch nicht. wenn ich auf "öffne Tresor" gehe passiert das:
player say ("der ist verschlossen") Tresortür geht auf, player say (" Ein Werkzeukasten") (" den nehme ich mal mit") ...werkzeugkasten geht ins Inventar....

gehe ich als erstes mit "schliesse Tresor" an die sache, dann höre ich das geräusch "playsound(4)"....

//Edit:

habe das porblem weitesgehend gelöst...
...so langsam verstehe ich die script's...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 29. Dezember 2010, 11:01:02
Die Klammer war nicht überflüssig, sondern das player.Say - Warum sollte man sagen "Ist doch zu." wenn der Tresor aufgeschlossen ist und geöffnet werden soll..?

else if(Tresor == 1) {
  PlaySound(1);
  oTresor.Visible = true;
  Tresor = 2;
  if(Game.DoOnceOnly("Ein Werkzeugkasten")) {
    Wait(40);
    player.Say("Ein Werkzeugkasten!");
    Wait(20);
    player.Say("Den nehme ich mal mit.");
    Wait(5);
    PlaySound(4);
    player.AddInventory(iWerkzeug);
  }
}

Vergiss bitte nicht die zusätzliche geschlossene Klammer für das else if.

Edit: Was mir gerade wieder auffällt: @Rocco: Können wir nicht mal langsam AGS-Source-Highlighting in das Forum einbauen? ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 29. Dezember 2010, 11:24:42
Zak: Du bist zu hastig und ungeduldig. Programmieren ist nicht wie backen, wo man auch mal bissl nach Schnauze machen kann; alles muss exakt sein.
Dabei hilft es natürlich, wenn man weiß, wann man welche Klammer setzen muss. Und man sollte sich von Anfang an einen der gängigen Einrückungsstile angewöhnen, gerade wenn man viel mit if-else-Zeug arbeiten muss. Das hilft ungemein bei der Fehlerbeseitigung.

Ich verwende diesen hier:

function bla() {

  if (dingens) {
    blablabla();
    zeuch();

    if (a == b) {
      das_noch();
      und_das_auch();
    }
  }
  else {
    wat_anderes();
  }
}

Wie Du siehst, steht die schließende Klammer jeweils unter function/if/else. Viele Leute schreiben die öffnende in die nächste Zeile auf gleiche Höhe, dann stehen die Klammern eines Paares immer untereinander und man hat automatisch die fast leere Zeile, die ebenfalls deutlich zur Übersichtlichkeit beiträgt:

function bla()
{
  if (dings)
  {
    mach_das();
  }
  tu_dies();
}

Du wirst auch feststellen, dass die Bereitschaft zur Hilfe zunimmt, wenn Dein Code lesbarer ist.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 29. Dezember 2010, 11:39:31
@KhrisMUC
wie du aus meinen vorherigen scrpits ja sehen kannst schreibe (oder kopiere) die scripts auch so das die "klammern" untereinander sind, hatte nur in meiner verzweiflung (und zu faul etwas immer wieder neu zu schreiben) einfach mit zwischen kopiert.
bisweilen sind meine scripts soweit übersichtlich und sortiert....

bin nun dabei die "Items" miteinander zu kombinieren...
...aber ich bekomme das nicht so hin...
ich habe im Inventar teile einer nachricht die ich nun mit hilfe von "kleber" auf ein "poster" bringen möchte, aber um die nachricht auf dem "poster" lesbar zu machen, sollen erst alle teile aufgeklebt sein.
also "benutze" "teil einer nachricht" mit "kleber", dann "benutze" "teil einer nachricht mit kleber" mit "poster" ( ein teil der nachricht verschwindet aus dem "inventar" und das "poster" wechsellt in "poster mit teil einer nachrich". zum schluss( wenn das letzte teil des puzzle zugefügt ist) soll dann im inventar "poster mit nachricht" sein, welches ich dann (mit hilfe von wand, wo das poster aufgehängt wird) lesbar sein.
hat jemand ein script dafür... ??? oder hilfe...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 29. Dezember 2010, 12:56:09
Was genau funktioniert denn nicht?
Ich würde für jede Teilnachricht zwei Items machen, eins mit und eins ohne Kleber.
Wenn der Kleber mit Teilnachricht X benutzt wird (oder umgekehrt), verschwindet sie aus dem Inventar und wird durch klebrige Teilnachricht X ersetzt.
Das Poster wiederum zählt mit, wie viele Teilnachrichten schon drauf sind. Sprich, jedesmal, wenn man eine klebrige Teilnachricht mit dem Poster benutzt, verschwindet sie und eine Variable wird eins hochgezählt. Danach wird jedesmal überprüft, ob Variable == Anzahl der Teilnachrichten; falls ja, Poster durch fertiges Poster ersetzen.

Wo genau ist da jetzt das Problem? Bist Du zu faul, Dich selbst damit auseinander zu setzen? Oder verstehst Du einfach nicht, wie man programmiert? Ich checks nicht.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 29. Dezember 2010, 13:15:03
nein, zu faul bin ich nicht.... nur noch anfänger (habe so was noch nie gemacht)
habe die "items" mit "Teil der nachricht" und "Teil der nachricht mit kleber" sowie die "dose mit kleber", "offene dose mit kleber" , "pinsel", "pinsel mit kleber" und "Schraubendreher". bekomme ja noch nicht mal hin das ich mit "benutze Schraubendreher" die "dose mit kleber" öffnen kann...
...ich möchte halt mit dem "schraubendreher" die "dose mit kleber" öffnen können, dann mit "benutze pinsel mit doses mit kleber", "pinsel mit kleber" mit "teil der nachricht" und dann "teil der nachricht mit kleber" mit "poster" benutzen.
beim "werkzeugkasten" hat es komischerweise gut geklappt (da habe ich mit "schau" den "schraubendreher" bekommen)
code:
Zitat
function iWerkzeug_Look()
{
   player.Say("Ein Werkzeugkasten.");
      Wait(5);
         if (Game.DoOnceOnly("Ein Schraubendreher!"))
      {
        Wait(5);
        player.Say("...da ist ein Schraubendreher drin!");
        Wait(5);
        PlaySound(4);
        player.AddInventory(iSchraubendreher);
      }
}

beim "Schraubendreher" geht das irgendwie nicht...
Code:
Zitat
function iSchraubendreher_Interact()
{
  if(UsedAction(eActUse))
  Wait(5);
   if (Game.DoOnceOnly("Öffnen"))
    {
     Wait(5);
     player.Say("...dann mache ich die Dose mal au.!");
        Wait(5);
        PlaySound(4);
        player.AddInventory(iKleber02);
      }
}
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 29. Dezember 2010, 13:28:56
Wenn du gewisse Inventargegenstände miteinander kombinieren willst, schreibst du das am besten in "Use inventory on this item". "Interact inventory item ist nur dafür gedacht, wenn man das Objekt direkt benutzen können soll (wie z.B. ein Handy).
Ich gehe mal davon aus, dass du den Schraubenzieher mit der Kleberdose verwenden willst. Dann schreibst du das, was passieren soll, wenn man die items kombiniert, bei beiden items unter "Use inventory on this item". Nach diesem Schema:
Beim Schraubenzieher:

function iSchraubenzieher_UseInv()
{
  if (player.ActiveInventory == iKleberdose)
  {
    DoseOeffnen ();
  }
}

Bei der Dose:

function iKleberdose_UseInv()
{
  if (player.ActiveInventory == iSchraubenzieher)
  {
    DoseOeffnen ();
  }
}
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 29. Dezember 2010, 14:28:53
schön und gut, nur erkennt das script "DoseOeffnen();" leider nicht...
...und wenn die Dose offen ist soll auch das item von "dose" in "dose offen" wechseln...

//Edit: 
warum auch einfach, wenn es auch schwierig geht...
... habe nur folgendes gemacht:
Zitat
function iKleber01_UseInv()
{
if (player.ActiveInventory == iSchraubendreher)
  {
    player.Say("Die Dose ist offen.");
    player.LoseInventory(iKleber01);
    player.AddInventory(iKleber02);
  }
}
und siehe da.... ich habe eine "offene Dose" im Inventar....
ohne im script vom schraubendreher was zu schreiben...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 29. Dezember 2010, 14:41:56
Es gibt natürlich keine eingebaute "DoseOeffnen"-Funktion ::)

Die musst Du schon selbst schreiben:
function DoseOeffnen() {
  Wait(5);
  player.Say("Ich versuch mal, die Dose mit dem Schraubenzieher aufzuhebeln.");
  Wait(10);
  player.LoseInventory(iKleberdose);
  player.AddInventory(iKleberdoseoffen);
  UpdateInventory();
  Wait(10);
  player.Say("Es hat geklappt! Die Dose ist offen.");
}

Sie muss über den anderen beiden stehen, sonst klappt es nicht.

Ich versteh schon, dass Du Neuling bist usw., aber versuch doch bitte selbst, mitzudenken. Der Code, den wir Dir geben, kann nicht immer direkt eingebaut werden und schon läufts, das ist auch gar nicht Sinn der Sache. Du sollst verstehen, warum wir den und den Code so und so schreiben und dann per Transfer deinen Eigenen hinkriegen.
Sonst können wir dir gleich das ganze Spiel skripten, und das ist nicht Aufgabe dieses Forums.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 29. Dezember 2010, 15:01:39
da ich mit meinem spiel zu etwa 90% fertig bin, muss mir auch keiner ein ganzes script schreiben.
ich hole mir hier, hilfe, anregungen und den umgang mit den "vorgeferigten" scripts (da ich diese ja überhaupt noch nicht kenne), lerne daraus und versuche durch mein mitdenken, es so gut ich kann umzusetzen.
da in den "SP's" schon einiges geferitigt ist, gehen halt manch andere "anweisungen" die ich eingebe nicht.
das habe ich ja auch beim DoorScript feststellen müssen. somit bleibt mir nichts anderes übrig als hier nachzufragen!
aber trotz alle dem.... vielen dank für die hilfe....

bei mir im script funktioniert es eben so...
Zitat
function iKleber01_UseInv()
{
if (player.ActiveInventory == iSchraubendreher)
  {
    PlaySound(42);
    Wait(5);
    player.LoseInventory(iKleber01);
    player.AddInventory(iKleber02);
    Wait(15);
    player.Say("Die Dose ist nun offen.");
  }
}

function iKleber02_UseInv()
{
if (player.ActiveInventory == iPinsel01)
  {
    PlaySound(36);
    Wait(5);
    player.LoseInventory(iPinsel01);
    player.AddInventory(iPinsel02);
    Wait(15);
    player.Say("Es ist Kleber am Pinsel.");
  }
}

//Edit
auch durch die kleinen hilfen wie z.b. von "Timer" habe ich doch alles gut umsetzen können, nun weiss ich wie es geht und mich freut es das soweit alles  funktioniert.....
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Timer am 29. Dezember 2010, 16:02:39
Das ist auch genau, wie es aussehen sollte. "DoseOeffnen" war nie dafür gedacht, irgendeinen Sinn zu erfüllen, es sollte lediglich einen Platzhalter für deine Anweisungen darstellen. ;)

Allerdings würde ich dir dennoch empfehlen, das gleiche Script beim Schraubenzieher einzubauen. Denn momentan kommt wahrscheinlich die Reaktion sehr wohl bei "Benutze Schraubenzieher mit Kleberdose", aber nicht mit "Benutze Kleberdose mit Schraubenzieher". Wenn das nicht in beiden Richtungen funktioniert, ärgern sich einige Spieler, die das als logisch ansehen würden. Nur ein Ratschlag. :)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 29. Dezember 2010, 16:07:14
und siehe da.... ich habe eine "offene Dose" im Inventar....
ohne im script vom schraubendreher was zu schreiben...
Ja, aber jetzt lassen sich die beiden Gegenstände "nur in eine Richtung" kombinieren.
Es ist zwar in diesem Fall weit weniger wild, da man den Schraubenzieher konkret an der Dose ansetzt; oft sollte man aber die Alternative mit einbauen, z.B. beim Kombinieren von Angelschnur und Rute.
Es wird sonst generell als Faulheit oder schlechtes Design gewertet.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 29. Dezember 2010, 17:31:52
ich weiss zwar nicht genau wie es geht, aber es muss schon irgendwo im schon script festgehalten sein, das auch die anderen funktionen gehen. also z.b. "benutze" schraubendreher mit pinsel = das geht nicht , ziehe schraubendreher...u.s.w.....
...das ist ja das was ich meinte, das ich die unterstützung von euch brauche, das script ( im AGS3.1) richtig zu schreiben, weil schon viel vorgeschrieben ist....
...was mir aufgefallen ist, ist das ich viele anwendungen im script stehen habe, die völlig überflüssig sind ( weil, doppelt gemoppelt, die infos habe ich von hier), aber die arbeit mag ich mir nicht machen alles raus zu löschen.

ne andere sache... ich bin ja mit meinem spiel so weit durch (nen par kleinigkeiten, und die grossen kleinigkeiten an den dialogen) und habe schon 13MB als fertiges spiel... ist das zuviel... ??? woran mag das liegen.. ???

muss dazu sagen, das ich im ordner "räume" 42 habe wobei etwa 30% aus 960 mal 200 sind....

//Edit:

jedes "item" hat ja auch noch weiteres...

code:

Zitat
function iLukenoeffner_Look()
{
  player.Say("Ein Lukenöffner.");
}

function iLukenoeffner_OtherClick()
{
  Unhandled_Inventory();
}
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Bissiger Witzbold am 29. Dezember 2010, 18:02:24
und habe schon 13MB als fertiges spiel... ist das zuviel... ??? woran mag das liegen.. ???
Soooviel ist das doch gar nicht, hatten schon einige Folgen die über 30 MB gross waren (ungezippt).
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 30. Dezember 2010, 10:32:06
ich stehe da echt vor einem rätsel....
...ich habe da ein schrank, indem ein objekt drin ist, wenn ich den schrank öffne, kann ich das objekt nehemn...
...es klappt soweit auch, wenn ich mit play (im AGS, player start in dem raum) das spiel starte geht auch alles, mache ich eine exe datei daraus (gleiche einstellung) und spiele den dem raum starte, geht auch alles. sobald ich aber das spiel im raum 1 (startroom) speicher, um das gesammte spiel zu spielen, eine exe datei draus mache, ist wenn ich in dem raum (mit dem schrank) gehe um ihn zu öffnen, nichts drin....

//Edit:
nach langer suche habe ich den fehler gefunden....
habe im "game.DoOnceOnly" 2 mal den selben befehl gehabt.......
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 30. Dezember 2010, 11:44:19
Dann machst du wohl irgendwas falsch. Definierst du dein Objekt im Schrank von vornherein als "Visible true" und guckst, ob die Baselines stimmen, damit die Schranktür davor ist, brauchst du gar nix mehr falsch machen, dann geht das so wie überall sonst auch...  :D

Was mich allerdings doch ein wenig wundert ist, dass es beim start in anderen Räumen Probleme damit gibt...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 30. Dezember 2010, 12:02:44
wie schon geschrieben.....
Zitat
//Edit:
nach langer suche habe ich den fehler gefunden....
habe im "game.DoOnceOnly" 2 mal den selben befehl gehabt.......
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 01. Januar 2011, 02:26:48
Oha, das hattest du wohl genau dann bearbeitet, als ich meinen Beitrag am schreiben war.  ;D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 02. Januar 2011, 21:23:49
Habe da ein problem mit dem Abspann...
...mein spiel ist zuende mit "benutze object", dann kommt noch ein kurzer dialog vom Player und soll dann in den Raum "Ende" wechseln.
Stare ich mit dem player in dem Raum, funktioniert alles super, aber starte ich von anfang an und spiele das spiel durch stürzt das spiel beim Raumwechsel "Ende" ab.
bekomme da folgende Fehlermeldung:
Zitat
in 'Global.asc' Line 2060
Error:Error running function 'repeatedly_execute':
ErroR: null pointer referenced

Global Script:
Zitat
   InvWindow *invMain = gMainInventory;
   if ( null != invMain.ItemAtIndex[0] )
   {
      if ( 0 != gMainInventory.TopItem )
      {
         // if inventory can scroll up
         gMainInvUp.NormalGraphic = invUparrowONsprite;
         InventoryItem *invItem = InventoryItem.GetAtScreenXY(180, 160);
      
         if (invItem.ID < 0)        <-----------2060---------
            gMainInventory.ScrollUp();
      }
      else
         gMainInvUp.NormalGraphic = invUparrowOFFsprite;
   }
   if ((gMainInventory.TopItem + (gMainInventory.ItemsPerRow * gMainInventory.RowCount)) < gMainInventory.ItemCount)
      gMainInvDown.NormalGraphic = invDownarrowONsprite;
  else
      gMainInvDown.NormalGraphic = invDownarrowOFFsprite;
}
#sectionend repeatedly_execute  // DO NOT EDIT OR REMOVE THIS LINE

// ============================= on_key_press ===========================================
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: rulaman am 02. Januar 2011, 22:50:09
Dann änders das folgendermaßen ab.


if ( NULL != invItem )
{
  if (invItem.ID < 0)        <-----------2060---------
    gMainInventory.ScrollUp();
}


Mist, wieder alle Starterpacks kontrolieren und evtl. korrigieren.


Rulaman
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 02. Januar 2011, 23:16:35
funzelt irgendwie nicht....
...kommt nicht klar mit "NULL" und "invItem".
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 03. Januar 2011, 09:15:01
Also <0 müsste eigentlich schon korrekt sein. Im MMMNet ists auch so und da gibts ja auch Inventargegenstände. Was machst du denn genau beim Raumwechsel Ende? Also die entsprechenden Leave / Load Funktionen helfen evtl. zur Fehlerdiagnose.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 03. Januar 2011, 10:49:23
Das spiel ist zu ende indem der player das Objekt benutzt.
also, ich habe im Script unter function AnyClick, eUseAct einen dialog stehen und am ende des dialog player.ChangeRoom(4);
Room 4 ist Raum Ende mit den Credits...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 03. Januar 2011, 17:07:31
ich habe leider immer noch keine Lösung gefunden...
...das blöde icht das ich bei jeder änderung das gesammte Spiel durchspiele muss um zu sehen ob der Fehler noch da ist.
wenn ich mit den passenden Item in dem Raum starte, klappt alles und der abspann läuft ohne probleme.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 03. Januar 2011, 19:08:34
rulaman: Deine Schreibweise ist sehr gewöhnungsbedürftig ;D

Ersetze
[ags]      if (invItem.ID < 0)
        gMainInventory.ScrollUp();[/ags]

Durch:
[ags]      if (invItem != null && invItem.ID < 0) gMainInventory.ScrollUp();[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 03. Januar 2011, 19:55:03
Super...Klasse....toll....
jetzt geht es...........
vielen, vielen dank........
i am so happy
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 04. Januar 2011, 17:59:14
wie starte ich eine Cuscene bevor ich den raum betrete... ???
ich habe es bisher unter first load mit player.ChangeRoom versucht, aber ich will ja das der Player nicht in dem Raum ist sonern ein anderer Character in der scene ist (nicht spielbar)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 04. Januar 2011, 18:18:40
Edit: player.ChangeRoom wechselt logischerweise den aktuellen Raum. Einen anderen Charakter holst Du mit cName.ChangeRoom(player.Room); in den aktuellen Raum. Bei MMM gibt es noch Character.EnterRoom, da kannst Du gleich die Blickrichtung mit angeben.

Mach den Spieler unsichtbar:
 player.Transparency = 100;
Hol den anderen Spieler in den Raum:
 cSyd.EnterRoom(4, 30, 140, eDirRight);
Soweit ich weiß läuft First_load erst los, wenn der Raum schon sichtbar ist. Du müsstest das also in "Before fadein" machen. Damit es nur beim ersten Mal passiert, kann Du HasPlayerBeenInRoom() benutzen;

Also:
[ags]function room_Load() {

  if (!HasPlayerBeenInRoom(player.Room)) {  // müsste beim ersten Mal noch false sein, wird erst in First_Load auf true gesetzt
    // Cutscene vorbereiten
    player.Transparency = 100;
    cSyd.EnterRoom(4, 30, 140, eDirRight);
  }

  // restliche Vorbereitungen (door.Init, etc.)
}

function room_FirstLoad() {

  // cutscene abspielen lassen
  StartCutscene(...);
  ...
  ...
  EndCutscene();
  player.ChangeRoom(5);
}[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 04. Januar 2011, 19:03:50
schön und gut, die cutscene läuft ab, aber aus der sichtposition des player und nicht aus der sicht das anderen character (denke da mehr an Zwischenzequenzen) bzw. macht der char. etwas ausserhalb der sichtweise des player...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 04. Januar 2011, 19:51:25
Erstmal: cutscene = Zwischensequenz

Aus der Sicht des players ist gut, diese Aussage macht Null Sinn.

Also: AGS wechselt den Raum, sobald entweder a) der Charakter, der gerade player ist, den Raum wechselt, oder b) ein Charakter, der sich in einem anderen Raum befindet, zum player wird. (player ist ein Pointer, der auf die gerade aktive Hauptperson zeigt, z.B. cBernard. AGS stellt sicher, dass immer der Raum angezeigt wird, in dem sich der Charakter befindet, auf den player gerade zeigt.)
D.h. wenn Du eine Cutscene machen willst, in der die Hauptperson nicht vorkommt, hast Du zwei Möglichkeiten: entweder machst Du sie unsichtbar, oder Du lässt einen anderen Charakter zum player werden.

Am einfachsten ist es, einfach mit dem player in den Cutscene-Raum zu wechseln, z.B. zu den Koordinaten 0,0; dann ist der player nicht mehr im Bild. Jetzt lässt man die anderen Charaktere im Raum hin- und herlaufen, sprechen, animieren, usw., und schickt dann den player wieder in den vorhergehenden Raum zurück.
Anstatt ihn nach 0,0 zu schicken kann man ihn auch unsichtbar machen; der Vorteil ist, dass man dann seine Koordinaten nicht speichern muss, damit die Hauptperson nach der Zwischensequenz am selben Platz wie vorher ist.
Unsichtbar macht man ihn mit .Transparency = 100; wie schon beschrieben.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 04. Januar 2011, 19:59:34
ich habe den player ja unsichtbar gemacht, damit die cutscene läuft, und wie mache ich den character nun zum player ???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 04. Januar 2011, 20:14:09
Soll der Spieler denn den anderen Charakter steuern können oder was? Das hast Du nämlich vergessen zu erwähnen, falls das so gedacht ist.

Falls wirklich nur eine Zwischensequenz laufen soll, musst Du den charakter nicht zum player machen.
Falls man jemand anderen aber steuern soll, wechselst Du player ganz einfach mit

  cSyd.SetPlayer();
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 05. Januar 2011, 14:20:33
Danke jetzt geht es, kann man den wechsel auch etwas weicher einstellen? um sich beim betreten des Raum nicht gleich zu erschrcken, wenn es mit einem "hartcut" zum anderen char. geht.

Ich bin immer noch am tüfteln, das ich in dem einem Raum die stromleitung reperiere um den anderen Raum betreten zu können?
Hat da jemand ein tip (script, wie im mm) für mich?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 05. Januar 2011, 14:28:27
Was ist daran Hardcut? Muss man überhaupt extra den Raum wechseln bevor der andere Spieler gesetzt wird? Selbst wenn, sollte danach doch noch zum anderen Spieler hingescrollt werden.

Mit der Stromleitung solltest du dir mal Variablen anschauen, die du im Globalscript definierst und exportierst.
[ags]bool bStrom = false;
export bStrom;[/ags]
im Globalscript definiert, und schon kannst du bStrom in jedem Raum abrufen / setzen.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 05. Januar 2011, 14:38:28
nicht den Raum wechsteln, sondern wenn der player (first room load) den Raum betritt, kommt halt eine szene mit einem anderen char. was ich meinte ist, das wenn ich den Raum betrete kommt halt ein "hartcut" wechsel zu den Spieler...

...wie gebe ich das mit dem Strom denn im Globalscript ein, und welche befehle im Roomscript.
möchte des der player den Raum erst betreten kann wenn im anderem Raum der Strom repariert ist.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 05. Januar 2011, 15:33:31
a) Wie wechselst du denn zu dieser Cutscene, und wann genau kommt der Hardcut? Ich glaube den player unsichtbar zu setzen ist nicht das was du willst. Du könntest ja mal Code posten.

b) GlobalScript habe ich schon geschrieben, der Teil kommt einfach irgendwo ins GlobalScript, zum Beispiel ganz am Ende noch die zwei Zeilen anhängen. Im RoomScript beim reparieren schreibst du einfach dahin, wenn es repariert wurde bStrom = true; und im anderen Raum beim Hotspot z.B.:
[ags]if(bStrom) {
  player.Say("Jetzt habe ich Strom und kann hierhin...");
  //evtl. Türscript bzw. Raumwechsel
} else {
  player.Say("Ich hab keinen Strom, also kein Zutritt");
}[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 05. Januar 2011, 17:49:03
da der Player von 4 Seiten den Raum betreten kann wäre es unsinn den Player unsichtbar zu machen, da man den ja dann eh nicht sehen kann.

Code:

[ags]
function room_FirstLoad()
{
   gAction.Visible = false;
   gMaingui.Visible = false;  
   gBorder.Visible = false;
  cEd.EnterRoom(8, 400, 115, eDirUp);
  cEd.SetAsPlayer();
  StartCutscene(eSkipESCOnly);
  PlayMusic(55);
  Wait(10);
  PlaySound(9);
  cEd.Say("Verschlossen!!!");
  Wait(20);
  cEd.Say("Wo ist denn der dämliche Schlüssel schon wieder?");
  Wait(10);
  cEd.Walk(835, 80, eBlock, eWalkableAreas);
  cEd.FaceDirection(eDirUp);
  Wait(5);
  cEd.Say("...hier ist er auch nicht...");
  Wait(10);
  cEd.Walk(120, 80, eBlock, eWalkableAreas);
  cEd.FaceDirection(eDirUp);
  Wait(5);
  cEd.Say("...wo habe ich den nur verloren?");
  Wait(10);
  cEd.Walk(495, 115, eBlock, eWalkableAreas);
  cEd.FaceDirection(eDirUp);
  Wait(10);
  cEd.Say("...vieleicht hier...");
  Wait(10);
  cEd.Say("...es ist viel zu dunkel um was zu sehen...");
  Wait(5);
  cEd.Say("..da glitzert aber was...");
  Wait(5);
  cEd.Say("Ich muss mir eine Taschenlampe besorgen.");
  Wait(10);
  cEd.Walk(490, 120, eBlock, eWalkableAreas);
  Wait(5);
  cEd.Say("Ich werde mal oben suchen.");
  Wait(5);
  cEd.Walk(575, 30, eBlock, eWalkableAreas);
  cEd.FaceDirection(eDirUp);
  cWendy.SetAsPlayer();
  cEd.ChangeRoom(40);
  player.FaceDirection(eDirUp);
  gAction.Visible = true;
   gMaingui.Visible = true;
   Mouse.Visible = true;
  EndCutscene();
}
[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 05. Januar 2011, 18:54:11
so, habe im GlobalScript
Zitat
bool bStrom = false;
  export bStrom;
unter variable extensions eingefügt, das andere im roomscript, bekomme aber eine fehlermeldung
Zitat
undefined symbol 'bStrom'

//edit
o.k. hatte "bool bStrom; vergessen.
soweit klappt das in dem Raum wo der strom fehlt.
komme aber nachdem die kabel i.o. sind trozdem nicht in den Raum.
was schreibe ich ins script?
bStrom = true;
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 05. Januar 2011, 19:01:56
schreib noch ins globalscript.ash

[ags]import bool bStrom;[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 05. Januar 2011, 19:32:31
funzelt im globalscript nich, da wird mir gesag das es schon importiert ist...
ich habe es schon fast soweit, nur das ich nach dem reparieten kabel immer noch nicht in den raum komme...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 05. Januar 2011, 19:49:57
hab jetzt nicht so den Durchblick was du schon wo deklariert hast wegen der Variable.
Aber es gibt eine globalscript.asc
und eine globalscript.ash
Normalerweise definiert man in asc file eine Variable und
importiert sie dann im header file (ash), damit sie in allen Scripts verfügbar ist.
Hast du das so gemacht?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 05. Januar 2011, 19:57:36
o.k. jetzt klappt es, hatte im roomscript etwas doppelt...

DoorScript:
musste leider feststellen das im DoorScript kein kommentar (bei schliesse tür) bei den Abgeschlossenen türen gibt.
wie kann ich das ändern?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 06. Januar 2011, 21:21:30
Geh in Global.asc, dann zur Funktion DoorType::ClickSpecial, dort ein gutes Stück runter zu "if ( UsedAction (eActClose) )", direkt danach ersetzt Du

    if ( this.i_GlobalInt == 0 )
durch

    if ( this.i_GlobalInt != 1 )
Bei mir ist das in Zeile 1388.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 07. Januar 2011, 18:31:09
wie animiere ich "objects" wie z.b. bei bernard (perpetomobile) im AGS 3.1 ???
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Kaktus am 07. Januar 2011, 19:18:39
Also erstmal die View festlegen, welche die Animation darstellt. Und dann animieren:

[ags]
oObjektXY.SetView(ANIMATION);
oObjektXY.Animate(Nummer des Loops, Delay, eRepeat, eNoBlock);[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 07. Januar 2011, 19:31:15
Danke, das habe ich gemacht, aber ich muss ja die dazugehörigen objecte auch noch irgendwo hin tun.
was muss ich noch machen?

//Edit
o.k. jetzt habe ich es
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 10. Januar 2011, 02:25:31
was muss ich noch machen?

Vielleicht mal die Hilfedatei durchlesen, vor allem das Tutorial ;)

Ernsthaft, in diesem Forum geht es in erster Linie um MMM-Starterpack-spezifische Fragen; in AGS selbst musst Du einfach reinkommen, Ressourcen für Anfänger gibt es genug. Densming's Tutorials scheinst Du ja zu kennen, da kommt garantiert irgendwo vor, wie man Objekte animiert.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 10. Januar 2011, 03:52:36
wie du ja schon in meinem //Edit gesehen hast, habe ich es ja schon geschafft.

es ist aber ein neues problem aufgetaucht:
ich kann alles was ich im inventar habe an alle char. abgeben und bekomme es nicht zurück...
...ich möchte aber nichts dem char. geben, sondern durch "gebe inventar an char." einen komentar bekommen.
wie kann ich das im script ändern??
desweiteren habe ich immer noch keine antwort bekommen warum im SPLeer einige char. (z.b. Brenard) beim sprechen up/down immer wieder die facedirection von up zu down zu up zu down.... wechselt, musste bislang alle dialoge mit eDirRight oder eDirLeft lösen...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 10. Januar 2011, 10:33:43
Natürlich hab ich Deinen Edit von zwei Tagen vorher gesehen. Die Frage wollte ich trotzdem beantworten. Mir ist schon klar, was Du mit der Frage gemeint hast, ich hab sie aber so beantwortet, als wärst Du völlig hilflos; nennt sich Sarkasmus.

Glückwünsch zum Finden des berühmten (uralten) Give-Bugs. Ich verweise Dich an die Forensuche.
Auch die vermasselten Speechviews sprechen wohl dafür, dass Du ein Starterpack von etwas minderwertiger Qualität erwischt hast.

Wenn also Bernard beim Sprechen die Blickrichtung wechselt, mach doch bitte seine Speechview auf und überprüfe, ob die Sprites in den Loops auch zur jeweiligen Richtung passen (die steht immer dabei, "up", "left", usw.)
Muss man Dir denn echt alles, aber auch wirklich alles, haarklein vorkauen?

Die Hintergründe zu Deinem Spiel sind ja echt gut geworden, aber wenn das Skripten an jedem trivialen Miniproblemchen scheitert, hab ich echt ein bisschen Angst vor dem Endergebnis.

Ich helfe jederzeit gerne bei der Umsetzung von komplexen Codeproblemen; aber das hier ist weder der Anfängerkurs für AGS noch der fürs Programmieren; ich würde Dich bitten, Deine Problemchen vernünftig zu überdenken, bevor Du zum fünften Mal hier postet und es dann doch später selbst löst oder wieder mal in der Hektik einen Flüchtigkeitsfehler gemacht hast.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: ZAK am 10. Januar 2011, 12:41:05
die hintergründe habe ich nochmals verbessert und das mit dem scripten geht auch von script zu script viel besser.
lerne halt jeden tag dazu. das mit den char, da hätte ich echt selber drauf kommen müsse.
aber an das globalscript gehe ich ungerne ran, daher weiss ich auch nicht wo ich die option gib inventar an char deaktiviere oder ändern kann.

//Edit:
habe feststellen müssen das es in keinem der SP für AGS3.1 ein view bernard talk gibt....

und meisst sind es die einfachsten dinge auf die man nicht kommt...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: rulaman am 10. Januar 2011, 21:04:15
Hab die Bernard-Views bei mir mal korrigiert. Demnächst werden diese mit dem GiveTo-Problem als neue Version rausgehen.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 13. Januar 2011, 18:10:39
Kannst du den aktualisierten Code für den Give-To Befehl bitte ebenfalls hier posten.
Dann kann ich den Code gleich selber in meiner angefangenen Episode aktualisieren.
Bei mir ist aber der Talk-View von Bernard drinnen.  :cl
Ich verwende das letzt veröffentlichte Schulstarterpack.

Einen anderen Bug hab ich auch entdeckt:
sobald ich das Spiel im Vollbild ausführen lassen will (ganz egal mit welcher Einstellung) kommt sofort folgende Fehlermeldung:

Zitat
Adventure Game Studio
---------------------------
An error has occurred. Please contact the game author for support, as this is likely to be a scripting error and not a bug in AGS.
(ACI version 3.20.1108)

in "GlobalScript.asc", line 593
from "GlobalScript.asc", line 687
from "GlobalScript.asc", line 1611

Error: Error running function 'game_start':
Error: Null pointer referenced

der Fehler dürfte in dieser Funktion stecken:
[ags]
String ClearToSpace(String text)
{
   int p = 0;
   // ignore white spaces at the beginning
   while ( (p < text.Length) && (text.Chars[p] == ' ') )   <-- hier
   {
      p++;
   }
  // write white spaces until next white space
   while ( (p < text.Length) && (text.Chars[p] != ' ') )  <-- eventuell dann auch hier
   {
      text = text.ReplaceCharAt(p, ' ');
      p++;
   }
   return text;
}

[/ags]

aufgerufen wird das Ganze ja gleich am Anfang von AdjustLanguage();
im Fenstermodus kommt dieser Fehler nicht, da läufts.


Nochwas ist mir aufgefallen:
Beim Kompilieren kommen immer Warnings, weil nach einem Stop ein return in den Dialogen vorkommt.
Die kann man einfach rauschlöschen, weil sie ja ohnehin nicht ausgeführt werden können, da der Dialog mit Stop beendet wird.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 13. Januar 2011, 18:38:33
Die Korrektur fürs Gib-Problem hab ich im Tutorial genannt...  ;D

Genannten if Block löschen. Im Tutorial habe ich ihn nur "auskommentiert":

[ags]else if ((GSagsusedmode == 4) && (GetLocationType (mouse.x, mouse.y) == 2) && isAction (eActGiveTo) )
{
...
}[/ags]

der Fehler dürfte in dieser Funktion stecken: [...]

Ich glaube nicht, dass der Fehler in der Funktion "ClearToSpace" ist. Ich glaube dass scheint mit AdjustLanguage schon eher was zu tun zu haben.

Beim Kompilieren kommen immer Warnings, weil nach einem Stop ein return in den Dialogen vorkommt.
Die kann man einfach rauschlöschen, weil sie ja ohnehin nicht ausgeführt werden können, da der Dialog mit Stop beendet wird.

In den Starterpacks sind Dialoge? Seit wann?  :D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 13. Januar 2011, 18:58:05
Über AdjustLanguage (Aufruf in Zeile 1611) wird ja diese Funktion aufgerufen
[ags]font_info = ClearToSpace(font_info);[/ags] Zeile 687
und Zeile 593 ist bei mir diese Zeile
[ags]while ( (p < text.Length) && (text.Chars[p] == ' ') )[/ags]
ob du es nun glaubst oder nicht.  :-*
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 13. Januar 2011, 19:02:21
Nun, also es muss am Parameter liegen. Die Funktion ClearToSpace arbeitet nur mit einem korrekten Parameter gut. :D

Benutzt du irgendeine Übersetzung oder entsprechen die zwei Zeilen darüber nicht dem hier?

[ags]  if (system.screen_width == 320)      font_info = GetTranslation ("font_320: 1  0  0  0  0  0  0  0  0  0  0  0  0  0  0");
  else if (system.screen_width == 640) font_info = GetTranslation ("font_640: 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14");[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 13. Januar 2011, 19:21:36
schaut bei mir genau gleich aus und nein ich verwende keine übersetzung.
hab in dem starterpack noch nichts im global script verändert,
also müsste der Fehler eigentlich auch bei anderen auftreten, wenn sie vollbild einstellen.

edit: der Fehler beim Bernard Talk View ist doch hier auch enthalten, ist aber nur ein Bild das krieg ich selber hin.  ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 13. Januar 2011, 19:33:02
Hmm...

Möglicherweise gibt es "Spielauflösungs-Änderungen" ja gar nicht mehr bei AGS, komischerweise bei deinem Vollbildmodus. Also versuch mal die beiden Zeilen auszukommentieren und stattdessen einfach mal die aus dem ersten if hinzuzufügen:

[ags]  font_info = GetTranslation ("font_320: 1  0  0  0  0  0  0  0  0  0  0  0  0  0  0");[/ags]

Eventuell ist die Schriftgröße anders, aber normalerweise sollte es damit gelöst sein, da dann ja "system.screen_width" sein kann was es will. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 13. Januar 2011, 19:54:42
naja als gelöst würde ich das nicht bezeichnen, eher als russisch umgangen.
könnte sein, das mein system das game automatisch in 640 konvertiert, weil 320 nicht mehr unterstüzt wird.
das würde bedeuten, das bei mir automatisch diese Zeile ausgeführt wird:
[ags]font_info = GetTranslation ("font_640: 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14");[/ags]
Font 13 und 14 gibts aber im neuen Starterpack nicht mehr.

Hab die Zeile mal ausgebessert auf
[ags]font_info = GetTranslation ("font_640: 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4");[/ags]
hat aber leider denselben Error zur Folge.
edit: nein das kanns nicht gewesen sein, weil die Funktion ist ja nur für die entfernung von Whitespaces zuständig.  :cl
Das mit Font 13 und 14 dürfte aber trotzdem nicht stimmen.

bei deiner Lösung sieht die Schrift natürlich auch dementsprechend schlecht aus in 640
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 14. Januar 2011, 19:17:31
Eventuell ist es ja nicht 640 sondern 800... Hatte nochmal in der Hilfe von AGS nachgesehen. Also sollte man für diesen (möglicherweise einzel-) Fall das auch noch für 800 hinzufügen, dann sollte es keine "russische" Lösung mehr sein ;)

Musst du mal schauen, ob das akzeptabel so aussieht, kann es ja nicht testen, weil meine Mindestauflösung noch geringer als 800x... ist ;)

[ags]  else if (system.screen_width == 800) font_info = GetTranslation ("font_800: 10 12 12 12 12 12 12 12 12 12 12 12 12 12 12");[/ags]
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 14. Januar 2011, 19:27:51
werd dann deinen vorschlag gleich mal austesten, aber normalerweise müsste es schon mit 640 funktionieren,
nur 320 wird nicht mehr unterstützt, da krieg ich eine fehlermeldung aber wenn ich auf 640 umschalte funktionieren die games.

glaub auch nicht, dass das ein einzelfall ist.
hab win7 64bit mit einer radeon 5850 und einem 22er Monitor, also nichts utopisches,
sondern dass was man momentan kriegt, wenn man einen neuen pc kauft.

fonts 10 und 12 sind in dem starterpack das ich verwende übrigens auch nicht mehr enthalten, da gibts nur mehr 4 oder 5 schriften.

Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 14. Januar 2011, 19:32:54
Achso, naja, je neuer, desto höher eben die Auflösungen, so meine These. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 14. Januar 2011, 19:55:24
ja leider, warum da nicht trotzdem die niedrigen auflösungen auch noch unterstüzt werdern, versteht wohl keiner.

der error ist jedenfalls noch da, auch mit der 800er zeile.  :'(
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 14. Januar 2011, 20:42:07
Der null pointer error heißt, das test wohl null ist. Warum, weiß ich aber auch nicht, hatte diesen Fehler noch nie.

Zur Auflösung:
Die font-Zeilen stammen noch aus der Zeit als AGS bei 320er-Spielen intern 640 verwenden konnte, was u.A. dazu geführt hat, dass skalierte Charaktere mehr Pixel hatten als die Hintergründe, dass die Schrift plötzlich mini war (logisch), etc. Deswegen die zweite Schriftart, die das kompensieren sollte.

Es gibt jedoch mittlerweile seit Jahren u.A. den x2 Filter, der das Spiel auf 320 belässt und nur die fertige Ausgabe im Fenster bzw. Vollbild hochskaliert. Damit schickt das Spiel der Grafikkarte ein 640er-Bild, Vollbildmodus geht damit einwandfrei, egal, wie neu das System ist.
Inzwischen ist auch glücklicherweise die Option, das Spiel ohne Filter in 640 zu pressen, aus winsetup verschwunden.

Wundert mich echt, dass sich das immer noch nicht rumgesprochen hat... ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 14. Januar 2011, 20:54:11
wieso, das ist schon klar, und das mach ich auch bei allen episoden so und funktioniert tadellos.
aber in diesem Fall ist egal was ich einstelle, das Spiel stürzt sofort (nur im vollbildmodus) mit obiger fehlermeldung ab.
im fenstermodus gibts keine probleme.
es funktioniert bei mir nur dann im vollbild wenn ich so wies endres vorgeschlagen hat, direkt die 320er zeile zuweise:

[ags]font_info = GetTranslation ("font_320: 1  0  0  0  0  0  0  0  0  0  0  0  0  0  0");[/ags]
damit sieht dann die Schrift aber fehlerhaft aus.

würd mich ja interssieren ob das nur bei mir so ist, oder nicht auch bei anderen auftritt?


edit: hab hier mal den ausgebesserten Bernard hochgeladen -> http://www.file-upload.net/download-3130108/Bernard.chr.html
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 14. Januar 2011, 23:05:20
@KhrisMUC: Also AGS lässt nur noch die für das Spiel ausgewählte "320"er zu, aber hat anscheinend eine Art "Fallback", die die Auflösung trotzdem ohne Filter ändert. So verstehe ich die Hilfe-Einträge. Warum aber die 800er Zeile nicht funktioniert, wundert mich schon, wobei ja in eben der Hilfedatei diese drei Auflösungen genannt werden. Schau dir mal die Hilfedatei und die dortigen Eigenschaften system.ScreenWidth / system.ScreenHeight an. Da wird die Möglichkeit einer anderen Auflösung genannt. - Und das immernoch, was aber eigentlich überhaupt nicht mehr Zeitgemäß ist, da gebe ich dir vollkommen recht, da es dann ja auch die Filter nehmen könnte, wenn eine bestimmte Auflösung nicht verfügbar ist.

Mich würde mal interessieren, wie das MMMNet dann im Vollbildmodus bei den Leuten aussieht, bei denen genannter Fallback passiert. Eventuell ist dann der NetRoom "Ungenießbar"... ;D

@Rocco: Eben, mich interessiert auch, ob das auch bei anderen Auftritt. Bei mir jedenfalls hatte ich noch nie Probleme damit (außer eventuell mal mit dem ein oder anderen älteren AGS-Game, was hier aber ja keine Rolle spielt).
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 16. Januar 2011, 14:44:47
ich verwende das schulstarterpack -> http://www.maniac-mansion-mania.com/index.php?option=com_content&task=view&id=750&Itemid=76
vielleicht hast du mal zeit, kurz auszuprobieren ob es bei dir im vollbildmodus ohne probs läuft.

edit: damit funktioniert bei mir auch tuer>v nicht mehr (was grundsätzlich kein problem ist, aber wegen dem Tutorial.)
muss ich nochmal verifizieren, hab das nämlich nicht bei einer Standardtür probiert.

oder vielleicht versuch mal diese Zeile in dein jetziges SP auszuführen:

[ags]font_info = GetTranslation ("font_640: 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14");[/ags]
ob da generell dieser Error kommt, wenn die 640er Auflösung vom System genommen wird.  :cl


möglicherweise weiss ja rulaman eine Lösung.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 16. Januar 2011, 18:02:54
[ags]font_info = GetTranslation ("font_640: 13 14 14 14 14 14 14 14 14 14 14 14 14 14 14");[/ags]
ob da generell dieser Error kommt, wenn die 640er Auflösung vom System genommen wird.  :cl

Was soll da für ein Error kommen? Ich meine, ohne ifs sind dann nur die Fonts falsch. Ich hab ja auch "alte" Auflösungen, also wie wenn du im Fenstermodus spielst, also brauchst du nicht extra mich testen lassen, da es im Prinzip keinen unterschied macht ob Fenster oder Vollbild. Nur benutzt Vollbild manchmal nicht die eingestellte Auflösung.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 17. Januar 2011, 13:07:15
Ich hab das Starterpack mal getestet (mit 3.2).

Die returns müssen aus den Dialogen raus; und die Font-Zeile muss so aussehen:
... font_info = GetTranslation ("font_640: 3  4  4  4  4  4  4  4  4  4  4  4  4  4  4");(Auch in den Übersetzungen.)
Zumindest in der Theorie, bei 3.1.x/3.2 wird das eh nie ausgeführt, da system.screen_width immer 320 sein wird.

Vollbildmodus ging einwandfrei, ich musste aber "Force alternate letterbox resolution" aktivieren, da ich noch eine 4:3 Röhre habe, die mit 1280x960 läuft. Das Spiel ist ja 320x200; Vollbild mit x4-Filter war ohne die Option gestreckt. Vollbild x2 witzigerweise nicht.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 17. Januar 2011, 13:17:02
Zumindest in der Theorie, bei 3.1.x/3.2 wird das eh nie ausgeführt, da system.screen_width immer 320 sein wird.
Also das kann ich leider so nicht bestätigen.
Bei mir wird definitiv diese Zeile ausgeführt:
[ags]if (system.screen_width == 640)  font_info = GetTranslation ("font_640: 3  4  4  4  4  4  4  4  4  4  4  4  4  4  4");[/ags]
ganz egal ob ich 2x nearest neighbour einstelle oder alles auf Standard (320) wird bei mir diese Zeile ausgeführt und damit kommts zum Absturz, mit obiger Fehlermeldung.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 17. Januar 2011, 16:57:21
In der Hilfe heißt es:
Zitat
Returns the actual screen width that the game is running at. If a graphic filter is in use, the resolution returned will be that before any stretching by the filter has been applied.

Hast Du im winsetup bei der Auflösung noch zwei Möglichkeiten? Benutzt Du AGS 3.0.x oder ein Neueres?

Es dürfte nämlich nur 640 sein, wenn Du in winsetup die Auflösung änderst (was man ja nicht machen sollte). Ansonsten sieht's nach einem bug in AGS aus.
Falls das eine Rolle spielt: ersetz es mal testweise durch die aktuelle Version: System.ScreenWidth
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 17. Januar 2011, 16:58:23
Sicher, dass dann bei dir 640 ausgeführt wird? Eventuell solltest du das nochmal mit einem player.Say(system.screen_width); oder so überprüfen.

@KhrisMUC, ich warte immernoch darauf, dass du dir die Hilfedatei durchliest. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 17. Januar 2011, 17:52:54
Endres: Wenn das ein Witz war, versteh ich ihn nicht :)

Ich hab mir mal System.ScreenWidth und system.screen_width ausgeben lassen, Vollbild oder nicht, Filter oder kein Filter, es war immer 320.
Andererseits kann das eigentlich auch nicht der Grund sein, der Fehler tritt auf, wenn ClearToSpace mit einem leeren String als Parameter ausgeführt wird. Warum das in der dritten Zeile passiert, verstehe ich überhaupt nicht; es sind zig Leerzeichen im String.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 17. Januar 2011, 17:58:50
Es war kein Witz. Aber "Es dürfte nämlich nur 640 sein" schon eher.  O0

Guck mal die Zeile darunter:

Zitat
NOTE: This information is provided in case you need it to optimise your game, however please do not use it to force the player to run at a particular resolution. AGS is designed to allow players to choose different resolutions to help get the game working on their PC.

Also wird AGS nicht immer 320er Auflösung zwingen, wenn diese nicht Verfügbar ist, also ist es kein Bug in AGS...

Ich hab mir mal System.ScreenWidth und system.screen_width ausgeben lassen, Vollbild oder nicht, Filter oder kein Filter, es war immer 320.

Ja, meinte auch eher Rocco, da es bei ihm wohl wahrscheinlich anders aussieht. ;)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 17. Januar 2011, 18:33:04
Entschuldige, aber: "Watt?"

1. Ich lese die Hilfedatei sehr wohl durch, ich hab doch draus zitiert. Hätte wohl "ich warte drauf, dass Du die Hilfedatei gründlicher liest" oder ähnlich heißen sollen. Das wäre aber trotzdem fehl am Platze gewesen, in der 3.2er Version steht diese Anmerkung nämlich nicht mehr dabei.
Was auch durchaus Sinn macht, da man die interne Auflösung nicht mehr ändern kann.
Von einem Fallback weiß ich nichts, es gibt aber ein Spiel (http://www.bigbluecup.com/games.php?action=detail&id=1380), dass 320 anzeigt und trotzdem mit 640 ausgeführt wird. Hab ich vorher noch nie erlebt, keine Ahnung, wie das zustande kommt.

2. "Es dürfte nämlich nur 640 sein" war kein Witz; AGS hat bis in die 3er-Versionen ja die Möglichkeit angeboten, die interne Auflösung hochzusetzen. Wenn Rocco das aber, wie er ja sagt, NICHT macht, also 320 lässt und wenn, nur Filter verwendet, und system.screen_width trotzdem 640 ist, dann muss das ein bug sein. Oder Rocco irrt sich halt, wie Du ja anscheinend auch vermutest.
Deswegen: "Es dürfte nämlich nur 640 sein, wenn Du in winsetup die Auflösung änderst." Einen Witz (oder besser gesagt: Uninformiertheit) sehe ich da nicht.

3. Dass Du Rocco gemeint hast, war mir klar. Ich hab nur berichtet, was mein Ergebnis mit SchulSP und 3.2 ist (allerdings unter XP).
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 17. Januar 2011, 18:39:51
Sorry, meinte es jetzt nicht soo Ernst...

1. jap, meinte ich auch... Konnte ja nicht wissen, dass das in 3.2 nicht mehr drin steht. Ein Fallback macht aus dem Grund Sinn, weil das bei der Library, die benutzt wird, im Prinzip schon standard ist.

2. Gott wer weiß, woher nunmal diese anderen Auflösungen herkommen, jedenfalls ist es einfach möglich, dass es passiert. xD
Die Auflösungen können ja nicht mehr im winsetup hochgesetzt werden, dachte du meinst nur das. Im Game-setup sehr wohl, aber das haben wir doch von vornherein ausgeschlossen, oder?

3. Okay.

Tschuldigung... Ist halt einfach nur ein dämliches Problem, wo ich selbst denke, dass man da nicht viel diskutieren braucht. Wir sollten einfach versuchen, das Problem zu lösen. Woher es kommt ist ja im Prinzip sch***egal. :)

Also Rocco, wie sehen deine Werte nun tatsächlich aus?  ;D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 17. Januar 2011, 20:19:52
Ich weiss jetzt den Grund für den Error.
Da meine Grafikkarte (oder System keine 320x200) mehr unterstützt, wird automatisch auf was anderes umgeschaltet.

Jetzt ist es offenbar so, dass zu dem Zeitpunkt wo system.screen_width abgefragt wird, entweder die variable noch nicht zugewiesen wurde und deswegen nichts enthält,
oder die Auflösung eine andere ist wie die abgefragten, deswegen ist keine if-abfrage wahr und in font_info ist ganz einfach nichts drinnen wenn die Funktion die Variable auslesen will,
daher der Error wegen NULL-Pointer.

Ich weiss jetzt leider auf die Schnelle keine einfache Lösung um die Variable system.screen_width auszugeben, ausser vielleicht die Ausgabe in ein TXT-File,
da ja das Spiel eben sofort beim Starten abstürzt.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 17. Januar 2011, 20:33:19
Ich weiss jetzt den Grund für den Error.
Da meine Grafikkarte (oder System keine 320x200) mehr unterstützt, wird automatisch auf was anderes umgeschaltet.

Jetzt ist es offenbar so, dass zu dem Zeitpunkt wo system.screen_width abgefragt wird, entweder die variable noch nicht zugewiesen wurde und deswegen nichts enthält,
oder die Auflösung eine andere ist wie die abgefragten, deswegen ist keine if-abfrage wahr und in font_info ist ganz einfach nichts drinnen wenn die Funktion die Variable auslesen will,
daher der Error wegen NULL-Pointer.
Soweit war ich auch schon... Kann sein, dass ihr das nur anders Verstanden habt. Rocco hats treffender erklärt. ;)

Ich weiss jetzt leider auf die Schnelle keine einfache Lösung um die Variable system.screen_width auszugeben, ausser vielleicht die Ausgabe in ein TXT-File,
da ja das Spiel eben sofort beim Starten abstürzt.

Oh stimmt, daran habe ich nicht gedacht. Aber es gibt die Funktion "AbortGame" die ein Spiel beendet und als optionalen Parameter die Möglichkeit hat, eine Nachricht auszugeben. (z.B. eben screenWidth...)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 17. Januar 2011, 20:53:39
danke für den Tipp mit AbortGame.  :)
Also die Auflösungbreite zum Zeitpunkt der Abfrage ist bei mir tatsächlich -> 360  :cl
Interessant, keine Ahnung wie es dazu kommt, weil ja auch beim Grafikkartentreiber die Auflösung eigentlich erst mit 640 beginnt.

Im Anbetracht dessen würde ich vorschlagen, in den Starterpacks das ganze irgendwo so umzuformulieren:
[ags]
  if (system.screen_width == 320)     
     font_info = GetTranslation ("font_320: 1  0  0  0  0  0  0  0  0  0  0  0  0  0  0");
  else
     font_info = GetTranslation ("font_640: 3  4  4  4  4  4  4  4  4  4  4  4  4  4  4");
[/ags]
Damit auf jeden Fall ein vernünftiger Wert der Variable zugewiesen wird und dieser Absturz nicht mehr passiert.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 17. Januar 2011, 21:13:29
Das dürfte daran liegen:
Zitat
If widescreen side borders are enabled, the screen width reported will include the size of these borders.

Besser wäre es, system.screen_width durch System.ViewportWidth zu ersetzen.

Noch besser wäre:

  font_info = GetTranslation ("font_320: 1  0  0  0  0  0  0  0  0  0  0  0  0  0  0");
  if (System.ViewportWidth >= 640) font_info = GetTranslation ("font_640: 3  4  4  4  4  4  4  4  4  4  4  4  4  4  4");

Dann ist font_info auf keinen Fall leer, allerhöchstens "falsch".

Der Grafiktreiber ist AGS erstmal wurst, es versucht, ein 320er-Bild aufzubauen. Wenn der Treiber/DirectX dann meldet, dass die Auflösung nicht unterstützt wird, bricht AGS ab.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 17. Januar 2011, 21:25:56
Ja das erklärt es, System.ViewportWidth ist bei mir auch 320 und der rest sind die widescreenborder.
würde also jedem passieren, mit einem widescreen.

zu Glück ist das problem jetzt gelöst, vielen Dank für eure Hilfe.  ;D
@rulaman: unbedingt in die überarbeitung der SPs einbauen.




Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: rulaman am 18. Januar 2011, 22:30:49
Geht klar.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Bissiger Witzbold am 19. Januar 2011, 11:02:53
Ach ja, wenn die Starterpacks eh nochmal überarbeitet werden noch zwei bitten:
- Drauf achten daß der Debugmodus standardmässig ausgeschaltet ist (ist er derzeit wohl nicht überall, jedenfalls ist er in Betas oft an und die Autoren wundern sich wenn man sie drauf hinweist)
- Die Savegames sollten bitte im Verzeichnis der jeweiligen Spieles gespeichert werden. Auch das ist wohl Einstellungssache, die derzeit standardmässig so steht, daß die Savegames sonstwohin gespeichert werden. Beim Spiel des Lebens hab ich jedenfalls keine Ahnung wo die sind, wodurch ich sie zum einen nicht zusammen mit dem Spiel wegbrennen kann, zum anderen bei einer neuen Version des Spiels mir automatisch die Savegames der ersten Version angezeigt werden, die natürlich nicht mehr funktionieren.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Helli78 am 19. Januar 2011, 15:34:29
Das mit den Savegames ist eine Variable. Die kannst du unter "General Settings" festlegen.
Wie diese Variable genau definiert wird, weiß ich gerade auch nicht, war irgendetwas mit %SYSTEM% oder %USER% (?).
Zu finden sind diese S.G. dann meist unter:
C:\Dokumente und Einstellungen\[Dein Name]\Eigene Dateien\My Saved Games

EDIT:
in der grandiosen Hilfe-Datei steht geschrieben:
- File Functions ... / Open
Zitat
The only exceptions to this rule are the special tags:
$SAVEGAMEDIR$, which allows you to access files in the save game directory.
$APPDATADIR$, which allows you to write/read files to a folder on the system which is accessible by and shared by all users
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 19. Januar 2011, 18:07:08
Ich fürchte, seit AGS 3 kann man die Savegames nicht wo anders speichern, da AGS entscheidet, was damit passiert. Man kann höchstens einen anderen Unterordner der "Anwendungsdaten" festlegen. Wäre schön, wenn es ginge, aber ich bin mir da überhaupt nicht sicher...

Habe nochmal wegen den Savegames nachgeguckt. Es gibt den Funktionsaufruf Game.SetSaveGameDirectory("."); der als einziger den Ordner des Spiels als Speicherort verwenden kann, so wie vor AGS 3.x. Allerdings eben nur mit dieser Funktion, ansonsten wird es unter "Eigene Dateien/My Saved Games/[...]" gemacht. Also einfach bei game_start einbauen und gut ist. :)

Und beim Debug-Modus kann man sich auch streiten. Ich persönlich bin dafür, dass er standardmäßig an ist, aber wenn ihr meint, dass die Newbies das nicht selbst vorm veröffentlichen deaktiviert kriegen...
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Bissiger Witzbold am 19. Januar 2011, 18:51:00
Habe nochmal wegen den Savegames nachgeguckt. Es gibt den Funktionsaufruf Game.SetSaveGameDirectory("."); der als einziger den Ordner des Spiels als Speicherort verwenden kann, so wie vor AGS 3.x. Allerdings eben nur mit dieser Funktion, ansonsten wird es unter "Eigene Dateien/My Saved Games/[...]" gemacht. Also einfach bei game_start einbauen und gut ist. :)
Jo, sollte aber halt schon im Starterpack drin sein, denn Newbies werden sowas kaum selbstständig einbauen. (Es hat ja auch kaum einer den Ziehe-Befehl auf die Y-Taste korrigiert... ist das eigentlich mittlerweile in allen Starterpacks behoben?)

Zitat
Und beim Debug-Modus kann man sich auch streiten. Ich persönlich bin dafür, dass er standardmäßig an ist, aber wenn ihr meint, dass die Newbies das nicht selbst vorm veröffentlichen deaktiviert kriegen...
Manche Newbies wissen vermutlich nichtmal, daß es überhaupt einen Debug-Modus gibt (braucht man bei der Erstellung schließlich nicht) und rechnen daher auch gar nicht damit, daß in ihrem Spiel dieser "Bug" standardmässig drin ist. Wenn sie den Modus erst einschalten müssen (sofern sie ihn überhaupt benutzen wollen - ich hab ihn jedenfalls nie benutzt), dann wissen sie zumindest daß es ihn gibt und daß er jetzt aktiviert ist.
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 19. Januar 2011, 19:52:33
Finde es auch gut, den Debug-Modus auszuschalten. Wer ihn kennt und benutzt, kann ihn doch ruck-zuck selbst einschalten. "Opt-in" ist hier eindeutig die bessere Wahl.

Zu den Savegames: Wenn man in den General settings bei "Save games folder name" den text komplett entfernt, landen die Savegames auch im Ordner des Spiels.
(Die neue Regelung finde ich auch nervig, vor allem, weil ich eigentlch regelmäßig den "My Saved Games"-Ordner ausmisten müsste, aber es gibt sonst ständig Probleme bei Vista und 7-Nutzern, die keinen uneingeschränkten Schreibzugriff haben. Deswegen die Änderung.)
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 19. Januar 2011, 19:57:08
Zu den Savegames: Wenn man in den General settings bei "Save games folder name" den text komplett entfernt, landen die Savegames auch im Ordner des Spiels.

Gut zu wissen, das wäre wohl besser, wird aber auch nirgendwo erwähnt. Aber das wird wohl die beste Möglichkeit sein. ;D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Rocco am 01. Februar 2011, 17:05:00
hat sich erübrigt, die Tür war nicht Schuld....
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: JPS am 26. Februar 2011, 12:38:52
Ich habe das unbearbeitete DAVE-SP in AGS 3.2 geladen und habe dieses Problem:

Error (line 7): unexpected 'eKeyF1'

Hi8er die entsprechende Code-Stelle:

enum KeyCodesF
{
eKeyF1  = 359, // F1
eKeyF2  = 360, // F2
eKeyF3  = 361, // F3
eKeyF4  = 362,  // F4
eKeyF5  = 363, // F5
eKeyF6  = 364, // F6
eKeyF7  = 365, // F7
eKeyF8  = 366, // F8
eKeyF9  = 367, // F9
eKeyF10 = 368, // F10
eKeyF11 = 433, // F11
eKeyF12 = 434, // F12
};
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: Endres am 26. Februar 2011, 12:48:45
Die KeyCodes Datei wird glaube ich nicht mehr benötigt, da diese ja seit 3.1 drin sind. Zu mindest war das meine erinnerung. Hilft also das herauslöschen dieses Scripts weiter?
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: JPS am 26. Februar 2011, 13:13:14
Ja, jetzt funktioniert alles! Danke!  :D
Titel: Re: Probleme mit Starterpack AGS3
Beitrag von: KhrisMUC am 26. Februar 2011, 18:53:19
Wie soll man denn da auch draufkommen?

Achja, das steht im automatisch nach Öffnen des SPs aufgehenden Fenster:

     (http://img832.imageshack.us/img832/6477/hmmg.png)

 ;D