Noch ein MI-Fan-Adventure

Der Anlaufpunkt für alle, die selbst ein Adventure programmieren wollen.
Antworten
Benutzeravatar
LAF
Oldschool RPG King
Oldschool RPG King
Beiträge: 6361
Registriert: 30.03.2005, 20:13
Wohnort: Tulln(Ö)

Beitrag von LAF »

Ich habe keine Ahnung vom Scripten oder sonstwas deshalb sehe ich das anders, ob das jetzt so oder so ist, ich spiele nur deshalb kann ich auch nicht mehr sagen :twisted:
Just the old one's
Oldschool RPG's: auf http://www.rpg-atelier.net/ :)
Maku

Beitrag von Maku »

khrismuc hat geschrieben: Wegen des Blickwinkels:
Augenhöhe=Horizont, d.h. die Palme sieht man tatsächlich mehr von der Seite als von oben.
Die Insel dagegen ist wirklich zu steil gezeichnet, die Ellipse zeigt ungefähr die "Küstenlinie". Ich würde die Insel allerdings größer machen, auch bildschirmfüllend wirkt sie noch klein genug, dass der Miniinsel-Humorfaktor nicht verlorengeht.
Ich hab sie mal etwas hügelartiger gemacht, wirkt IMO besser.
Mal sehn was sich machen lässt ... werd noch n bisl dran rumspielen ....

Mal was anderes: Gibt es irgendwo eine Anleitung, wie man bei AGS eine MI2-typische Steuerung einbaut? Also 9 Verben ...
Benutzeravatar
AlphaBolley
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 53
Registriert: 07.03.2006, 15:52
Wohnort: Iserlohn
Kontaktdaten:

Beitrag von AlphaBolley »

Am besten die kleine MI-Demo von Lucasfan besorgen.
100,5% Sinnlos
Maku

Beitrag von Maku »

Man bin ich blöd *lol*

http://www.adventure-treff.de/fanadv/tu ... asarts.php

PS: Ähm, ich habe jetzt diese ags_mi1.zip geladen und entpackt, aber die darin enthaltene agt kann ich garnicht öffnen Oô

PS: Habs hinbekommen ^^
Benutzeravatar
AlphaBolley
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 53
Registriert: 07.03.2006, 15:52
Wohnort: Iserlohn
Kontaktdaten:

Beitrag von AlphaBolley »

Ist allerdings in AGS vor V2.7 geschrieben.

Wenn du's im neuen AGS haben willst (das ich aufgrund seiner Objekt-orientiertheit deutlich angenehmer finde) musst du's wohl oder übel selber umschreiben.

Hab ich auch gemacht und es war eine wunderbare Übung, das AGS-Skripten zu erlernen.

PS: was für ein genialer Avatar!
100,5% Sinnlos
Maku

Beitrag von Maku »

So ... ich bin gerade dabei das GUI um zuschreiben (zumindest versuch ich's^^).

Bin jetzt soweit:

Code: Alles auswählen

// main global script file

#sectionstart game_start  // DO NOT EDIT OR REMOVE THIS LINE
function game_start() {
  
SetGlobalInt(299,8);
//game.items_per_line=4;
//game.num_inv_displayed=8;
game.text_speed=7;

  // called when the game starts, before the first room is loaded
}
#sectionend game_start  // DO NOT EDIT OR REMOVE THIS LINE


#sectionstart repeatedly_execute  // DO NOT EDIT OR REMOVE THIS LINE
function repeatedly_execute() {
  
  
  
  
  
 // Die Variablen werden initialisiert
String buffer;
int cur_mode, mode;
mode = GetGlobalInt(299);
cur_mode = GetCursorMode();
String text = "";
 
// Je nach Cursor-Modus wird jetzt ein Verb in die Statuszeile geschrieben
if (cur_mode == MODE_WALK) text = text.Append("Gehe zu ");
else if (cur_mode == MODE_LOOK) text = text.Append("Schau an ");
else if (cur_mode == MODE_USE) {
  if (mode == 7) text = text.Append("Benutze ");
  if (mode == 2) text = text.Append("Gib ");
}
else if (cur_mode == MODE_TALK) text = text.Append("Rede mit ");
else if (cur_mode == 5) text = text.Append("Nimm ");
else if (cur_mode == 4) {
  if (mode == 7) {
    text = text.Append("Benutze ");    
    buffer = text.Append(player.ActiveInventory.Name);
    text = text.Append(buffer);
    text = text.Append(" mit ");
  }
  if (mode == 2) {
    text = text.Append("Gib ");
    buffer = text.Append(player.ActiveInventory.Name);
    text = text.Append(buffer);
    text = text.Append(" an ");
  }
}
else if (cur_mode == 8) {
  if (GetGlobalInt(299) == 1) text = text.Append("Schliesse ");
  if (GetGlobalInt(299) == 2) {
    text = text.Append("Gib ");
    text = text.Append(" mit ");
  }
  if (GetGlobalInt(299) == 3) text = text.Append("Oeffne ");
  if (GetGlobalInt(299) == 4) text = text.Append("Druecke ");
  if (GetGlobalInt(299) == 5) text = text.Append("Ziehe ");
}
 
// Das Objekt unter dem Cursor finden und an die Statuszeile anhängen
buffer = Game.GetLocationName(mouse.x, mouse.y);
text = text.Append(buffer);
SetLabelText (0, 12, text);  
  
  
  
  
  
  
  
  // put anything you want to happen every game cycle here
}
#sectionend repeatedly_execute  // DO NOT EDIT OR REMOVE THIS LINE


function show_inventory_window () {
  // This demonstrates both types of inventory window - the first part is how to
  // show the built-in inventory window, the second part uses the custom one.
  // Un-comment one section or the other below.
  
  // ** DEFAULT INVENTORY WINDOW
//  InventoryScreen();

  // ** CUSTOM INVENTORY WINDOW
  
  //gInventory.Visible = true;

  // switch to the Use cursor (to select items with)
  mouse.Mode = eModeInteract;
  // But, override the appearance to look like the arrow
  mouse.UseModeGraphic(eModePointer);

}

#sectionstart on_key_press  // DO NOT EDIT OR REMOVE THIS LINE
function on_key_press(int keycode) {
  // called when a key is pressed. keycode holds the key's ASCII code
  if (IsGamePaused() == 1) keycode=0;  // game paused, so don't react to keypresses
  if (keycode==17)  QuitGame(1);   // Ctrl-Q
  if (keycode==363) SaveGameDialog();   // F5
  if (keycode==365) RestoreGameDialog();  // F7
  if (keycode==367) RestartGame();  // F9
  if (keycode==434) SaveScreenShot("scrnshot.bmp");  // F12
  if (keycode==9)   show_inventory_window();  // Tab, show inventory

  if (keycode==19)  Debug(0,0);  // Ctrl-S, give all inventory
  if (keycode==22)  Debug(1,0);  // Ctrl-V, version
  if (keycode==1)   Debug(2,0);  // Ctrl-A, show walkable areas
  if (keycode==24)  Debug(3,0);  // Ctrl-X, teleport to room
}
#sectionend on_key_press  // DO NOT EDIT OR REMOVE THIS LINE


#sectionstart on_mouse_click  // DO NOT EDIT OR REMOVE THIS LINE
function on_mouse_click(MouseButton button) {

 if (IsGamePaused() == 1) {} // Wenn das Spiel pausiert ist, dann passiert nix
else if (button == LEFT) {
  ProcessClick(mouse.x, mouse.y, GetCursorMode() );
  SetCursorMode(MODE_WALK);
}
else if (button==RIGHT) {
  if (GetLocationType(mouse.x, mouse.y) == 2) {
    SetGlobalInt(299,9);
    ProcessClick(mouse.x, mouse.y, MODE_TALK);
    SetGlobalInt(299,0);
  }
  else {
    FaceLocation(GetPlayerCharacter(), mouse.x, mouse.y);
    ProcessClick(mouse.x, mouse.y, MODE_LOOK);
    SetCursorMode(MODE_WALK);
  }
}

}
#sectionend on_mouse_click  // DO NOT EDIT OR REMOVE THIS LINE


#sectionstart interface_click  // DO NOT EDIT OR REMOVE THIS LINE
function interface_click(int interface, int button) {
if (interface == 0) {

if (button == 0) {       // gib
  SetCursorMode(2);
  SetGlobalInt(299,2);
}
if (button == 1) {       // oeffne
  SetCursorMode(8);
  SetGlobalInt(299,3);
}
if (button == 2) {       // schau
  SetCursorMode(1);
  SetGlobalInt(299,8);
}
if (button == 3) {       // benutze
  SetCursorMode(2);
  SetGlobalInt(299,7);
}
if (button == 4) {       // schliesse
  SetCursorMode(8);
  SetGlobalInt(299,1);
}
if (button == 5) {       // druecke
  SetCursorMode(8);
  SetGlobalInt(299,4);
}
if (button == 6) {       // nimm
  SetCursorMode(5);
  SetGlobalInt(299,6);
}
if (button == 7) {       // rede
  SetCursorMode(3);
  SetGlobalInt(299,9);
}
if (button == 8) {       // ziehe
  SetCursorMode(8);
  SetGlobalInt(299,5);
}


   if ((button == 10) & (game.top_inv_item < game.num_inv_items - 7))
    game.top_inv_item = game.top_inv_item + 4;
  if ((button == 9) & (game.top_inv_item > 0))
    game.top_inv_item = game.top_inv_item - 4;
}
}
#sectionend interface_click  // DO NOT EDIT OR REMOVE THIS LINE

/*
#sectionstart btnInvUp_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnInvUp_Click(GUIControl *control, MouseButton button) {
  invCustomInv.ScrollUp();
}
#sectionend btnInvUp_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnInvDown_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnInvDown_Click(GUIControl *control, MouseButton button) {
  invCustomInv.ScrollDown();
}
#sectionend btnInvDown_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnInvOK_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnInvOK_Click(GUIControl *control, MouseButton button) {
  
	// They pressed the OK button, close the GUI
	gInventory.Visible = false;
	mouse.UseDefaultGraphic();
}
#sectionend btnInvOK_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnInvSelect_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnInvSelect_Click(GUIControl *control, MouseButton button) {
  
	// They pressed SELECT, so switch to the Get cursor
	mouse.Mode = eModeInteract;
	// But, override the appearance to look like the arrow
	mouse.UseModeGraphic(eModePointer);
}
#sectionend btnInvSelect_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnIconInv_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnIconInv_Click(GUIControl *control, MouseButton button) {
  
  show_inventory_window();
}
#sectionend btnIconInv_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnIconCurInv_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnIconCurInv_Click(GUIControl *control, MouseButton button) {
  
  if (player.ActiveInventory != null)
    mouse.Mode = eModeUseinv;
}
#sectionend btnIconCurInv_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnIconSave_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnIconSave_Click(GUIControl *control, MouseButton button) {
  
  SaveGameDialog();
}
#sectionend btnIconSave_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnIconLoad_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnIconLoad_Click(GUIControl *control, MouseButton button) {
  
  RestoreGameDialog();
}
#sectionend btnIconLoad_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnIconExit_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnIconExit_Click(GUIControl *control, MouseButton button) {
  
  QuitGame(1);
}
#sectionend btnIconExit_Click  // DO NOT EDIT OR REMOVE THIS LINE

#sectionstart btnIconAbout_Click  // DO NOT EDIT OR REMOVE THIS LINE
function btnIconAbout_Click(GUIControl *control, MouseButton button) {
  
  Display("Adventure Game Studio v2 run-time engine[[Copyright (c) 1999-2005 Chris Jones");
}
#sectionend btnIconAbout_Click  // DO NOT EDIT OR REMOVE THIS LINE
*/








 function unhandled_event (int what, int type) {
  if (what == 1) {
    if (type == 1) Display("Ich sehe nichts Besonderes.");
    else if (type == 2) Display("Das kann ich nicht benutzen.");
    else if (type == 3) Display("Diese Sachen passen nicht zusammen.");
    else if (type == 4) Display("Es antwortet nicht.");
    else if (type == 7) Display("Ich kann das nicht nehmen.");
    else Display("Nein.");
  }
  if (what == 2) {
    if (type == 0) Display("Ich sehe nichts Besonderes.");
    else if (type == 1) Display("Das kann ich nicht benutzen.");
    else if (type == 2) Display("Damit kann ich nicht reden.");
    else if (type == 3) Display("Diese Sachen passen nicht zusammen.");
    else if (type == 5) Display("Ich kann das nicht nehmen.");
    else Display("Nein.");
  }
  if (what == 3) {
    if (type == 0) Display("Hübsch, hübsch.");
    else if (type == 1) Display("Das lasse ich lieber.");
    else if (type == 2) Display("Keine Antwort. Hmm...");
    else if (type == 3) Display("Das kann ich so nicht benutzen.");
    else if (type == 5) Display("Wie bitte? Nehmen?");
    else Display("Nein.");
  }
  if (what == 4) {
    if (type == 1) Display("Da ist nichts.");
    else if (type == 2) Display("Da ist nichts.");
    else if (type == 3) Display("Nein, wirklich nicht.");
    else Display("Die Luft ist kein sehr angenehmer Gesprächspartner.");
  }
  if (what == 5) {
    if (type == 0) Display("Was für ein Prachtstück.");
    else if (type == 1) Display("Jetzt nicht.");
    else if (type == 2) Display("Damit reden??? Freak!");
    else if (type == 3) Display("Die beiden Dinge passen nicht zusammen.");
    else Display("Nein.");
  }
}
Geht auch soweit ... nur dummer Weise fängt er immer an im Stehen zu laufen, wenn er anfängt zu sprechen Oô
Benutzeravatar
AlphaBolley
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 53
Registriert: 07.03.2006, 15:52
Wohnort: Iserlohn
Kontaktdaten:

Beitrag von AlphaBolley »

:shock: Das ging aber flott.

Tja, was das im Stehen laufen angeht, da musst du warten bis sich einer der Experten zu Wort meldet.
Klingt nämlich sehr merkwürdig und sollte mit dem GUI ja eigentlich nichts zu tun haben.
100,5% Sinnlos
Maku

Beitrag von Maku »

Ich hatte erst die Anleitung befolgt und dann getestet ... da wo Felher kamen, hab ich nach her Lösung gesucht (In der Hilfe stehen ja ein paar der Unterschiede zwischen dem alten und dem heutigen AGS.). Und ein paar Programmier-Kentnisse hab ich ja (PHP, HTML, CSS etc.).

Kann es was damit zu tun haben, dass ich noch keine Spite für's sprechen drin hab?
Benutzeravatar
AlphaBolley
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 53
Registriert: 07.03.2006, 15:52
Wohnort: Iserlohn
Kontaktdaten:

Beitrag von AlphaBolley »

Maku hat geschrieben:Kann es was damit zu tun haben, dass ich noch keine Spite für's sprechen drin hab?
Ja, das wird's wohl sein.
Schau bei deinem Charakter mal, was als Speech View angegeben ist.
Da wird wahrscheinlich die Nummer des Walk-View eingetragen sein.
100,5% Sinnlos
Maku

Beitrag von Maku »

AlphaBolley hat geschrieben:
Maku hat geschrieben:Kann es was damit zu tun haben, dass ich noch keine Spite für's sprechen drin hab?
Ja, das wird's wohl sein.
Schau bei deinem Charakter mal, was als Speech View angegeben ist.
Da wird wahrscheinlich die Nummer des Walk-View eingetragen sein.
Hattest recht ^^ Danke ...

PS: Ich habe jetzt mal eine zweite Insel gezeichnet ... gefällt die besser?

Bild
Benutzeravatar
Brush
Rätselmeister
Rätselmeister
Beiträge: 1567
Registriert: 13.06.2004, 15:58

Beitrag von Brush »

Gefällt mir jetzt besser! Der Strand darf am Rand natürlich nicht dick gezeichnet werden, sondern in einem Farbverlauf ins Wasser übergehen, aber das ist wohl eh nur Skizzentechnik.

Tipp: Halt dich nicht an soo vielen Kleinigkeiten auf. Über sowas kann man bei einem Spiel, bei dem die Story und so weiter stimmt gerne wegsehen. Ist ja ein Fanadventure. Wenn du für einen Screen so lang brauchst, verlierst du schnell die Lust. Aber im Moment kommt ja echt schnell viel von dir. So ists gut :)
Maku

Beitrag von Maku »

Brush hat geschrieben:Gefällt mir jetzt besser! Der Strand darf am Rand natürlich nicht dick gezeichnet werden, sondern in einem Farbverlauf ins Wasser übergehen, aber das ist wohl eh nur Skizzentechnik.

Tipp: Halt dich nicht an soo vielen Kleinigkeiten auf. Über sowas kann man bei einem Spiel, bei dem die Story und so weiter stimmt gerne wegsehen. Ist ja ein Fanadventure. Wenn du für einen Screen so lang brauchst, verlierst du schnell die Lust. Aber im Moment kommt ja echt schnell viel von dir. So ists gut :)
Hast ja recht ^^ Jedoch ist dies der erste "Raum" des Spiels (ausgenommen das Intro) und da arbeite ich mich erstmal in AGS rein und übe mich im Zeichnen und der Animation ... ist das erstmal i.O. beginnt der schöne Teil mit den Rätseln^^

Wenn "Mini-Island" fertig ist (inkl. Intro) hab ich mir gedacht den Teil mal als "Demo" zu veröffentlichen :)

Danach werde ich mich sicher nicht mehr soooo lange mit Kleinigkeiten aufhalten lassen ;)

PS: Bin aber schon weiter als ich gedacht hab am Anfang: Das GUI ist fertig (Fertig?), XY hat ein Gesicht und kann laufen, Ablauf und Story von Mini-Island+Intro sind erdacht. Jetzt noch die Insel selbst, die Animationen, die Gegenstände etc. pp und ich kann den Teil abschließen ;-)
Benutzeravatar
KhrisMUC
Adventure-Gott
Adventure-Gott
Beiträge: 4674
Registriert: 14.03.2005, 00:55
Wohnort: München

Beitrag von KhrisMUC »

Wenn Du jetzt noch das Zitieren des unmittelbar vorhergehenden Beitrages unterläßt, steht dem Erfolg nichts im Wege ;)
Use gopher repellent on funny little man
[ZENSIERT]
Adventure-Gott
Adventure-Gott
Beiträge: 4575
Registriert: 13.07.2004, 14:04
Wohnort: Da wo muss
Kontaktdaten:

Beitrag von [ZENSIERT] »

khrismuc hat geschrieben:Wenn Du jetzt noch das Zitieren des unmittelbar vorhergehenden Beitrages unterläßt, steht dem Erfolg nichts im Wege ;)
Das komplette Zitieren ;)

Die neue Insel schaut auch gut aus, bin mal auf die fertige Version gespannt... und auf das Spiel natürlich ;)
Es heißt, Leute mit den originellsten Nicknames schreiben die besten Beiträge

Ausnahmen bestätigen die Regel
_________________
<Problem> Weil du denken kannst.

Zuletzt bearbeitet von [ZENSIERT] am 16.07.1759, 16:19, insgesamt 54743869-mal bearbeitet
Benutzeravatar
AlphaBolley
Verpackungs-Wegwerfer
Verpackungs-Wegwerfer
Beiträge: 53
Registriert: 07.03.2006, 15:52
Wohnort: Iserlohn
Kontaktdaten:

Beitrag von AlphaBolley »

Ja, das sieht schon viel besser aus.
Jetzt stimmt's von der Perspektive auch.
100,5% Sinnlos
Antworten