• Anmelden

1

Samstag, 7. August 2010, 23:21

"freeze" deaktivieren?

Hi, ist es möglich ein Spiel pralell weiterlaufenzulassen, wenn man es zB minimiert hat? Das Problem ist, dass die Musik weiterläuft, aber der Rest des Spieles pausiert. Ich versuche ein Intro zu machen, bei dem sich Musik und Spielablauf synchronisiert, aber wenn man das spiel kurz in den Hintergrund stellt, ist alles aus der Balance.
Falls das nicht möglich ist, kann man dann die Musik auch "freezen"?
LG Affe
Bild

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

2

Samstag, 7. August 2010, 23:27

Ich hab dazu mal irgendwann was geschrieben. Ich find den Thread hier nicht mehr, kann dir nur den englischen anbieten:
http://www.hbgames.org/forums/viewtopic.php?f=11&t=71126

Andere Möglichkeiten gibt es -soweit ich weiß- nicht.
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

3

Sonntag, 8. August 2010, 00:32

gut danke, ich sehs mir mal an.
mal was persönliches an dich neo-bahamut: du bist erst 16 und kannst schon ruby? respekt! ich lern grad ma mit 18 erste c++ kenntnisse
Bild

4

Sonntag, 8. August 2010, 00:47

Wenn du es minimierst dürfte auch Neos Script nichtmehr laufen, aber vollkommen sicher bin ich mir nicht.
Hier der Thread: RGSS player always running

Da du aber keinen wirklichen Einfluss auf den Prozess hast, der das Fenster aufbaut und steuert, sondern nur von aussen daran arbeiten kannst ist eine andere Lösung als die von Neo meines Wissens nach nicht möglich.

Motto: Du kannst zwar niemals die Perfektion an sich erreichen, jedoch solltest du auch nicht vor ihr weglaufen

  • Nachricht senden

5

Sonntag, 8. August 2010, 04:10

ne alternative zu deinem problem wäre vielleicht das script mit dem unklickbaren close-button ... vielleicht ist es ja möglich dieses script so umzuschreiben, dass man auch nicht minimieren kann.
Spoiler
Mapping: :star: :star: :star-empty: :star-empty: :star-empty:
Scripting: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
Eventing: :star: :star: :star: :star: :star-empty:
Brainstorming: :star: :star: :star: :star-empty: :star-empty:
pic-Editing: :star: :star-half: :star-empty: :star-empty: :star-empty:
Music-komposing: :star-half: :star-empty: :star-empty: :star-empty: :star-empty:
Real-Living: :heart: :heart: :heart: :heart: :heart:

Hauptprojekt: Sons of a new World (Simulation)
Spoiler
Sons of a new World - Die Story

Unsere Reise beginnt an einem heißen Nachmittag im Juni 1999 in Mollywood. Einem 210.824 Einwohner kleinem Stadtteil von Los Devilis. Bis vor kurzem war das Leben hier noch in bester Ordnung. Die Arbeitslosenzahlen sanken jährlich, die Computerindustrie boomte und verschaffte jeden halbwegsintelligenten Bürger einen hohen Wohlstand. Aber etwas erschütterte die Menschen wie ein Laubfeuer in ihren Meinungen an eine glückliche Zukunft. Ein örtlich aufstrebender Zeitungsverlag meldete zum ersten Mal, das die Welt in Gefahr sei und die Unterschicht der Bevölkerung schenkte ihr gehör.

Beruhigende Worte des wiedergewählten Präsidenten Warnold Whitennegger konnten jedoch seine fleißigen Bürger besänftigen, bevor diese Meldungen über die Landesgrenzen hinaus schwappten.

Nichts desto trotz glauben die Menschen noch immer an den bevorstehenden Untergang der unabstreitbaren technologieabhängigen Weltbevölkerung zur Jahrtausendwende. Hochtitulierte Historiker, Wissenschaftler mit einem IQ von durchschnittlich 190 und überbezahlte Informatiker glauben fest daran, dass alle computergestützen Maschinen sich gegen die stumpfen Menschen auflehnen und in einem fürchterlichen Krieg besiegen werden. Doch gibt es bis jetzt noch keinen Beweis dafür, da der Informant der letzten Katastrophenmeldung sich scheinbar in Luft auflöste.

Sapple, ein Unternehmen, welches für seine überaus teuren Sapple-Computer und oPads bekannt wurde, fanden kurz darauf Hinweise in einem ihrer neusten oPhones. Eine uncodierte Quellcodepassage beschreibt unverwechselbar den Verlauf des Jüngsten Gerichts.

Zuerst dachte man daran, dass ein Sapple-Mitarbeiter sich einen Scherz erlaubte. Doch erwies sich das als Irrweg. Die Erkenntnis über die absolute Echtheit des Quellcodes stellte sich heraus, als sich eine Hand voll Programmierer versuchten, die indentifizierten Passagen zu löschen. Jedoch ohne Erfolg. Immer wieder verweigerte Notepad das Speichern und führte stets wiederholend zu einem Blue-Screen mit dem Fehlercode WEWILLKILLYOU.

Obwohl nun alles für den Weltuntergang spricht, gibt es immer noch ein paar Menschen, die sich versappelt fühlen. So soll der kürzlichst ausgerufene Katastrophen-Notstand insgeheim von den Killuminaten herbeigerufen worden sein, um endlich die Welt offiziell erobern zu können, welche es schon seit Jahrhunderten vergeblich mit allen Mitteln versuchten wie mit dem Blacksaturday, dem purpurnen Vorhang oder die World-Mall-Zerstörung.

So und nicht anders denkt auch unser junger Protagonist an eine Verschwörung. Wir nennen ihn mal fortan Klaus.

Klaus, 22 Jahre jung, blaue Augen, braune Haare. Arbeitet seit er 18 ist, ehrenamtlich beim örtlichen Naturschutz. Ein ganz gewöhnlicher Bürger von Mollywood. Wie jeden Samstag Nachmittag genießt Klaus seinen erholsamen Spaziergang im öffentlichen Park um die Ecke. Ihm faszinieren stets aufs neue die wunderschön spriesenden Gräser, die farbenprächtigen Blumen, welche er schon im Schlaf mit lateinischem Namen aufsagen kann und die vorbeifliegenden Schmetterlinge, die er schon alle einen eigenen Namen gab und bei Gelegenheit auch grüßt.

Unser friedlicher Protagonist war jedoch nicht immer so friedliebend. Klaus verbrachte seine Heranwachsendenzeit wie jeder Junge seinerzeits mit ausgelassenen Partys bis zum Morgengrauen.

Heute dachte Klaus mal wieder daran seinen Lieblingsbaum zu streicheln. Er vergaß es schon sooft und packte die Gelgenheit am Schopf. Klaus musste nur noch über die Brücke um ihn zu erreichen. Doch dann begann etwas, was er bis heute nicht vergaßund schildert es in seinem Tagebuch mit folgenden Worten:


Liebes Tagebuch,

ich schreibe dir heute dem 27.08.1999, weil mir etwas Furchbares passierte. Du wirst es nicht glauben, aber ich werde gerade gekidnappt und das noch bevor ich meinen Baum streicheln konnte. Ich kann es bisher immer noch nicht fassen...

Ich befinde mich gerade auf einem Schiff oder in einem Ballon. Ich kann es dir nicht genau sagen. Es ist sehr dunkel und ich habe nur meinen beleuchteten Kugelschreiber, der mir etwas von meiner Umgebung verrät.Ich sehe einige Geräte. Es scheinen Toaster, Mikrowellen und Computer zu sein. Ob es etwas mit dem Untergang der Welt zu tun hat? Ich kann es mir nicht erklären, was hier vor sich geht, aber ich bin sicher, dass ich es bald erfahren sollte.

Oje, unser armer Klaus. Er scheint deine Hilfe jetzt wirklich dringend zu benötigen. Wirst du ihm Helfen, sich aus dieser misslichen Lage zu befreien? Klaus und meine Wenigkeit zählen auf dich, also starte ein neues Spiel im Story-Modus oder bestreite es mit/ gegen einen Freund am gleichen Computer und lüfte das Geheimnis um den misteriösen Weltuntergang und der Gefangennahme vom verzweifelten Klaus.
zum Lesen den Text mit der Maus markieren

Nebenprojekte:
Spoiler
MySimCity (Wirtschaftssimulation)
zum Lesen den Text mit der Maus markieren
zum Lesen den Text mit der Maus markieren

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

6

Sonntag, 8. August 2010, 08:42

@ Playm: Habs grad getestet und funktioniert =o
Das einzige, was nicht geht, ist, dass das Spiel anhält, während man das Fenster "herumschiebt".

@ Darkfogi: Kann sein, dass das möglich wäre. Aber ich bräuchte dafür die von Windows festgelegte ID des Minimieren-Buttons und die kenn ich nich :)
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

7

Mittwoch, 11. August 2010, 00:22

Ich geb mal meinen Senf dazu ^^ :
Also an deiner Stelle würd ich das Skript wählen.
Sicherlich könnte man auf Windowsfunktionen zugreifen um den Prozess zu stoppen wenn das Fenster den Fokus verliert, aber wenn ein Spieler Linux verwendet dann wirds da einen Fehler geben.
Um das zu kompensieren, könnte man eine einfache Funktion einbauen, die Prüft, welches System man verwendet.
Hier würde schon der Aufruf von 'ls' oder 'dir' genügen.
Fehlermeldungen könnten dann abgefangen und zur Identifizierung genutzt werden.
Jetzt müsste man wiederum eine Funktion haben, die ein Batch bzw. Bash-Skript aufruft (je nachdem ob Fehler oder nicht), welches den Prozess auf einen Fokusverlust hin überwacht.
Hier wirds nochmal knifflig um die ProzessID herauszufinden.

Der Aufwand ist meiner Meinung nach zu groß für ein Intro. Benutz doch lieber das Video-Skript: LINK
Hier brauchst du nur dein Intro abzufilmen ;)

8

Mittwoch, 11. August 2010, 09:23

Ich häng mich als Linuxnutzer hier mal grad rein.

RPG Maker/RGSS = Windows-Executable.
Sprich um überhaupt das Spiel spielen zu können, muss man Wine benutzen, womit man automatisch Zugriff auf WIN32API von Ruby bekommt, wodurch die einzige Fehler durch Wine zustande kommen würden.

Und nach "ls" zu testen ist Schwachsinn, Mac dürfte das nämlich auch haben.

Quellcode

1
2
3
4
5
6
rylius@ry-desktop ~ $ irb
irb(main):001:0> require "rbconfig"
=> true
irb(main):002:0> puts Config::CONFIG["host_os"]
linux-gnu
=> nil


Ich bezweifle mal, dass man mit Batch/Bash überprüfen kann, ob ein Fenster Fokus verliert.
Bash ist nicht für grafische Oberflächen entwickelt worden, noch dazu sind Befehle je nach Windowmanager unterschiedlich. Und davon gibts auf Linux n paar x)

Außerdem wirft system() keine Fehlermeldungen, sondern gibt true/false zurück :P

Genug kluggeschissen, back to topic :)
  • sig.main

  • sig.wtf

    (22:42:42) epic: kuma: der schwimmt auch in muschis. ist nur witziger "penis" zu sagen.
    (22:42:43) epic: gnihihi
    (22:42:46) epic: penis
    (22:42:50) epic: hihi
  • sig.frpg.ethwen

    Name: Ethwen
    Rasse: Waldelf
    Alter: 23
    Beruf: Jäger

    Level: 1
    Quest: -
    Party: -

    Inventar:
    Umhängetasche (2/4)
    • 1x Proviant (Wildbret)
    • 1x toter Hase
    • 1x Heiltrank

    Kleine Kräutertasche (1/10)
    • Estragon
    Kupfer: 0

    Ausrüstung:
    • Altes Leinenhemd
    • Zerrissene Leinenhose
    • Großer Köcher (24/30)
    • Langbogen (In der Hand)
    • Messer (Lederscheide)

    Fähigkeiten:
    Aktiv
    Passiv
    Völkerbonus
    Instinkt
    Pfeil vergiften
    Heilkunde
    Schnitzen
    Tarnen
    Kräuterkunde
    Jagd

9

Mittwoch, 11. August 2010, 11:30

Und zum MacOS:
Ich sag jetzt was worauf viele Linuxer empfindlich sind ...
Linux und Mac sind doch irgendwie schon die selbe Suppe *duck*


RPG Maker/RGSS = Windows-Executable.
Sprich um überhaupt das Spiel spielen zu können, muss man Wine benutzen, womit man automatisch Zugriff auf WIN32API von Ruby bekommt, wodurch die einzige Fehler durch Wine zustande kommen würden.
Hm ja stimmt auch wieder.

Und nach "ls" zu testen ist Schwachsinn, Mac dürfte das nämlich auch haben.
Der Grundbefehlssatz vom MacOS ähnelt dem eines Linux doch sehr stark (=
Zumal man auch auf einem MacOS Wine haben muss um RMXP zu starten. Wäre also egal ob Linux oder MacOS.
Bliebe ja nurnoch zu ertesten welchen WM man nutzt
Das werden eine Menge Zeilen ^^

Ich bezweifle mal, dass man mit Batch/Bash überprüfen kann, ob ein Fenster Fokus verliert.
Bash ist nicht für grafische Oberflächen entwickelt worden, noch dazu sind Befehle je nach Windowmanager unterschiedlich. Und davon gibts auf Linux n paar x)
Bash ist zwar nicht dafür entwickelt worden sondern zur Systemverwaltung. Ich finde, dass das eindeutig in diese Rubrik gehört. (=
Man muss halt wissen, welcher WM benutzt wird.
Mit 'uname -r|grep "Darwin"' wäre schonmal unterschieden, ob Linux oder MacOS.
Über 'top' bekommt man auch die PID des Prozesses heraus.
Jetzt kommt der wirklich aufwändige Teil. Finde den WM! o.0
Hier würd ich's erstmal mit QT und GTK versuchen. Das dürfte bei den meisten funktionieren.

Außerdem wirft system() keine Fehlermeldungen, sondern gibt true/false zurück :P
Umso besser!
Falls alles nix bringt, dann leite einfach alles nach '/dev/null' um ^^

Genug kluggeschissen, back to topic :)

Dem schliesse ich mich mal an.

Der Aufwand ist einfach viel zu groß um ein Skript zu schreiben, welches auf allen Systemen den Fokus erkennt.
Ich bleib bei dem Link von meinem vorherigem Post (=
Obwohl es mir grad in den Fingern kribbelt (=

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

10

Mittwoch, 11. August 2010, 11:54

Sehr viele Skripte verwenden die Win-Api sowieso. Tastaturskripte, Mausskripte, die MACL und noch andere.
Wenn du eins davon drin hast, läufts sowieso nur auf Windows.

Außerdem, wenn jemand meint, unbedignt mit Linux arbeiten zu wollen, ohne Windows zur Verfügung zu haben, der hat dann halt Pech gehabt. Das ist das, was man bei Spielen die "Systemvorraussetzungen" nennt.
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

11

Donnerstag, 12. August 2010, 08:04

Ich hab mich nochmal der Frage zugewendet, ob man verhindern kann das der Benutzer das Spiel minimiert.

Es gibt theoretisch 3 Herangehensweisen:
1. Man reagiert auf die WM_SIZE Message die gesendet wird, wenn man den Button drückt - aber wie soll man da von aussen dran kommen? Fällt also erstmal weg.
2. Man fragt die ganze Zeit ab, ob das Fenster minimiert ist, wenn dem so ist sendet man einen ShowWindow Befehl, oder ähnliches. Ist zwar über Neos externe ruby-exe und mt der Funktion "IsIconic" möglich, aber gefällt mir nicht so recht.
3. Möglichkeit - man entfernt den Button. Dazu gibt es 2 Möglichkeiten wieder:
a) du schnappst dir das Systemmenü und wirfst den Eintrag zum minimieren raus. Ist kein Problem, die Daten hat man ja schnell via Suchmaschiene besorgt (SM_Minimize=61472) und ich kann per RemoveMenu auch fein den Eintrag aus dem Menü löschen, aber der Button bleibt.
b) man ändert den Rahmen dahingehend das man ihn ohne die Box zeichnet. Das ist zwar gar nicht so einfach, aber doch umsetzbar und ich hab es dir auch mal umgesetzt und ein Script angehangen.
Wenn du dieses einfügst wird der Rahmen dahingegend geändert das er fortan keine Minimizebox mehr hat. (Falls dir plötzlich einfällt das du mitten im Spiel grundlos sie doch wieder haben möchtest, einfach nochmal die Funktion aufrufen - ist alles bedacht :-])

Spoiler: Script
Als neues Script über Main einfügen

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#==========================================================================
# ** RGSS Player
#--------------------------------------------------------------------------
# Dieses Script entfernt die Minimizebox vom Fenster.
# Von Playm - 12.August 2010
# Danke an Cremno, der mir einmal den Quellcode gab um den Stil zu ändern.
#==========================================================================
module RGSS_Player
  #====================Konstanten====================#
  # flags and marks
  SWP_NOSIZE  	=0x01 #Behalte die Größe bei
  SWP_NOMOVE  	=0x02 #Behalte die Position bei
  SWP_NOZORDER	=0x04 #Behalte die Z-Position bei
  SWP_FRAMECHANGED=0x20 #Nötig bei Änderungen am Rahmen
  WS_MINIMIZEBOX  =0x20000
  # dlls/apis
  SetWindowLong = Win32API.new('user32', 'SetWindowLong', 'lil','l')
  GetWindowLong = Win32API.new('user32', 'GetWindowLong', 'li' ,'l')
  FindWindowA   = Win32API.new('user32', 'FindWindowA'  , 'pp' ,'l')
  SetWindowPos  = Win32API.new('user32', 'SetWindowPos' , 'lliiiil','i')
  GetPPString   = Win32API.new('kernel32','GetPrivateProfileStringA','pppplp','l')
  #=====================Funktion=====================#
  def self.toggle_minimizebox()
	# lese den Namen des Spiels
	game_name = "\0"*256
	GetPPString.call('Game','Title','', game_name, 255, './Game.ini')
	game_name.delete!("\0")
	# kriege darüber zugriff auf's RGSS Player Fenster
	window_handle = FindWindowA.call('RGSS Player', game_name)
	# lies die Rahmenstile aus und entferne die Minimieren-Box
	old_window_style = GetWindowLong.call(window_handle, -16)
	new_window_style = ~(old_window_style ^ ~WS_MINIMIZEBOX)
	# schreibe die geänderte Stilliste wieder rein
	SetWindowLong.call(window_handle, -16, new_window_style)
	# Zeichne den Rahmen neu
	flags = SWP_NOMOVE | SWP_NOSIZE | SWP_NOZORDER | SWP_FRAMECHANGED
	SetWindowPos.call(window_handle, 0,0,0,0,0,flags)
  end
end
RGSS_Player.toggle_minimizebox() # Funktionsaufruf
zum Lesen den Text mit der Maus markieren

Neo-Bahamut

Himmelsgleicher

Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.

  • Nachricht senden

12

Donnerstag, 12. August 2010, 11:03

Zitat

Ich hab mich nochmal der Frage zugewendet, ob man verhindern kann das der Benutzer das Spiel minimiert.
Warum willst du das unbedingt tun?
Sowohl ohne als auch mit meinem Skript zusammen ist das total sinnlos.
Spoiler: Wurstinator
zum Lesen den Text mit der Maus markieren

Spoiler: Lazer-Wurst
zum Lesen den Text mit der Maus markieren

Spoiler: Hallowurst
zum Lesen den Text mit der Maus markieren

13

Donnerstag, 12. August 2010, 11:19

offTopic:
Nicht sinnloser als den Closebutton zu deaktivieren oder ein Winamp Controller Bild
Und wenn du nochmal die Beiträge von vor ein paar Tagen liest siehst du auch den Zusammenhang zum Thema.

Zitat

Warum willst du das unbedingt tun?
Weil ich's kann .-.

Social Bookmarks