Autor Thema: Scripting für Dummies  (Gelesen 9873 mal)

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Scripting für Dummies
« am: 07. Juni 2007, 21:27:43 »
Hallo Leute!

Wollte grad ein Tür-Script machen, aber das ging voll in die Hose! Ich habe als Vorlage die Hilfe im AT-Forum benutzt.

Ich möchte von Raum 22 (Object: 0 zeigt offene Tür, Hotspot: 1) in Raum 23 (Object: 0, Hotspot: 1). Die GlobalInt, die ich auserkoren habe, ist die 500.

Ich habe bei den "VariableExtensions" nun folgendes geschrieben:
else if ((r == 22) && (h == 1)) OpenCloseExtension (500, location);
else if ((r == 23) && (h == 1)) OpenCloseExtension (500, location);

Im Room-Skript des Raum 22 habe ich  unter 'Player enters room (before fadein) folgendes:
SetObjectClickable (0,0);
init_object (500,0); 
}

Im Room-Skript des Raums 23 habe ich unter demselben Punkt stehen:
SetObjectClickable (0,0);
init_object (500,0); 
}

Im Raum 22 hab ich nun folgendes bei "any-click-on-hotspot" reingescripted:
if (any_click_on_door (500, 0, 403, 95, DIR_UP, 23, 70, 140, DIR_RIGHT) == 0) Unhandled (); 

Dann analog dazu das Script im Raum 23:
if (any_click_on_door(500, 0, 70, 140, DIR_LEFT, 22, 403, 95, DIR_DOWN) == 0) Unhandled ();
Jetzt bekomm ich immer die Fehlermeldung:

Zitat
An internal error has occured. Please note down the following information.
If the Problem persists, contact Chris Jones.
(ACI version 2.72.920)

Error: Unable to create local script: Runtime error: unresolved import 'init_object'

Ich verstehe jetzt nicht, was ich falsch gemacht hab.  :-\
Kann mir bitte jemand helfen?

 

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2373
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Scripting für Dummies
« Antwort #1 am: 07. Juni 2007, 22:42:06 »
ich hab mich jetzt schon lange nicht mehr mit türscripts beschäftigt.
aber ich kann mich nicht mehr daran erinnern dauernd irgendwo init_object geschrieben zu haben
wie kommst du auf init_object?? lass das weg.
und falls doch, dann ist ein object sicher was anderes wie ein GlobalInt.

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #2 am: 07. Juni 2007, 22:51:42 »
wie kommst du auf init_object?? lass das weg.

Das stand da so in der Hilfe. Na dann probier ichs mal ohne. Danke für den Tipp!  :)

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2373
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Scripting für Dummies
« Antwort #3 am: 07. Juni 2007, 23:04:31 »
habs mir grade nochmal angesehen, init_object wird normalerweise verwendet um den zustand der tür einzustellen.
unresolved import 'init_object' deutet jedenfalls darauf hin, dass ags diesen befehl im room script nicht kennt.
mit was für einem starterpack arbeitest du?

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2373
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Scripting für Dummies
« Antwort #4 am: 07. Juni 2007, 23:09:36 »
steht im script header diese zeile drinnen?
import function init_object (int GI, int object); // ca. zeile 94

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #5 am: 07. Juni 2007, 23:25:05 »
Genau, das steht in Zeile 88 bei mir. Ich habe das neue Bernard-Starterpack.

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2373
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Scripting für Dummies
« Antwort #6 am: 07. Juni 2007, 23:41:08 »
ok, ist wohl ein fehler im starterpack.
bei mir im globalscript gibts die function auf zeile 1013

function init_objekt
mach aus dem k ein c und probiers dann nochmal.

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #7 am: 07. Juni 2007, 23:46:20 »
Nee, bei mir ist es mit c da, also object.

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2373
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Scripting für Dummies
« Antwort #8 am: 07. Juni 2007, 23:53:51 »
bist du sicher?
im script header ists mit c, ( zeile 88 - import function init_object (int GI, int object); - das stimmt.
aber im global-script ists mit k, ( zeile 1013 dort wo die funtiont definiert ist ) function init_objekt (int GI, int objekt){
das fette k ist das problem und muss geändert werden, schau noch mal nach.

PS: und vergiss meinen ersten post in diesem thread, der ist schwachsinn.  ;)
obwohl du diesen befehl normalerweise nur brauchst, wenn du eine offene tür darstellen willst,
für geschlossene türen ist das nicht notwendig.
« Letzte Änderung: 07. Juni 2007, 23:55:22 von Rocco »

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #9 am: 08. Juni 2007, 00:02:14 »
Stimmt, im global Script war es mit k, habs geändert, danke!
Wegen dem ersten Post: Ich weiß von nichts.  ;D
Jetzt hab ich aber ne andere Fehlermeldung.  :(
Zitat
in Global script (line 1026)
from Room 22 script (line 8 )
Error:GetGlobalInt: invalid index

Na gut, dass werde ich wohl selber verbockt haben.

Edit: In der Zeile steht der Code
init_object (500,0); 
« Letzte Änderung: 08. Juni 2007, 00:06:06 von steve-o-mat »

Rocco

  • Administrator
  • alter Tentakel
  • *****
  • Beiträge: 2373
  • Geschlecht: Männlich
    • Profil anzeigen
    • Maniac Mansion Mania
    • E-Mail
Re: Scripting für Dummies
« Antwort #10 am: 08. Juni 2007, 00:08:34 »
es gibt 500 global ints.
das heisst du kannst global ints von 0 bis 499 verwenden, ab 500 bist du im invaliden bereich  ;)

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #11 am: 08. Juni 2007, 00:13:55 »
Achso! Das wusste ich nicht. Na man gut, sonst hätt ich die ganze Nacht gegrübelt.  ;)
Hab mich letztens von BlueGryphon beraten lassen, und er meinte ich solle ab 300 anfangen, da wäre ich auf der sicheren Seite, ohne Überschneidungen, aber meine Übervorsicht riet mir zu 500!  :)
Na gut, wieder was dazu gelernt... Vielen Dank nochmal für die schnelle Hilfe!!!  :D

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #12 am: 08. Juni 2007, 15:36:24 »
Dieser ganze Türenschmarrn ist sowieso reichlich überholt. Um die Zeile in "any click on hotspot" kommt man nicht herum, aber der Rest ist viel zu umständlich. Das dürfte sich locker mittels einer einzigen Zeile pro Tür in game_start lösen lassen, werd mir das bei Gelegenheit mal anschauen.

steve-o-mat

  • volljähriger Tentakel
  • *****
  • Beiträge: 617
  • Geschlecht: Männlich
    • ICQ Messenger - 481703404
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #13 am: 29. Juni 2007, 14:50:56 »
Dieser ganze Türenschmarrn ist sowieso reichlich überholt. Um die Zeile in "any click on hotspot" kommt man nicht herum, aber der Rest ist viel zu umständlich. Das dürfte sich locker mittels einer einzigen Zeile pro Tür in game_start lösen lassen, werd mir das bei Gelegenheit mal anschauen.

Schon eine elegantere Lösung gefunden, KhrisMUC?  :)

Ich habe eine unschöne Macke bei mir entdeckt. Das fiel mir aber schon in einigen Episoden (vorhin erst in Epi10) und im Bernard-Starterpack auf. Bei mir ist es jetzt so:
Ich mache einen Raumwechsel, dann lauft der Char von rechts her etwas in die Mitte des neuen Raums und wenn ich dann auf nen Hotspot in der Mitte des Raumes klicke, dann springt der Char blitzartig in die linke Ecke des Raumes und läuft von dort zum Hotspot.
Ist das ein Fehler irgendwo im Script und reparabel? Oder muss ich mich damit abfinden?

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 989
    • Profil anzeigen
Re: Scripting für Dummies
« Antwort #14 am: 29. Juni 2007, 14:56:59 »
Ne, hab mich noch nicht damit beschäftigt. Bei Gelegenheit :)

Zum Problem:
Das ist leider ein unschöner Bug in AGS, der anscheinend nur bei scrollenden Räumen auftritt (auch in anderen Spielen, nicht nur in MMM-Zeugs). Muss ein Glitch im Pathfinding sein.
Die Problematik wurde schon des öfteren im AGS-Forum bemängelt, leider ist der Fehler aber schlecht reproduzierbar.
Keine Ahnung, ob Version 2.8 hier Abhilfe schafft.