Ergebnis 1 bis 6 von 6

Thema: Fragen zu Sockets und zu Input.press?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Vielen Dank für die schnelle Antwort
    Jetzt seh ich auch, warum meine Eingaben nicht geklappt haben.

    Das der Input des RPG-Makers begrenzt ist, habe ich schon befürchtet, weil die Tabelle auf Scientia stark begrenzt war. Ich bin da auch leider mit dem Wert und der Konstanten durcheinander gekommen und ich hätte trigger statt press benutzen müssen. Als Script habe ich mir nun Cybersams geholt.
    So wie ich das sehe müsste es ja reichen, wenn man im Input Modul die nötigen Tasten ergänzt, da ich aber dieses Modul nicht finde, gehe ich mal davon aus, dass man aus dem Script-Editor des RPG-Maker XP nicht drauf zugreifen kann, oder?

    Was großes wollte ich nicht machen. Ich wollte nur, dass sich 2 Spieler ohne grafischen Schnickschnack verbinden und dann ein rundenbasierter Kampf startet.
    Sonst hätte ich die IP auch mit einem Event über Input Number abfragen können.

    Geändert von Krepusko (12.08.2012 um 13:04 Uhr)

  2. #2
    Das Input-Modul ist versteckt in der RGSS, du kannst es mit dem Script-Editor nicht öffnen, nein, aber das ist auch nicht nötig. Du kannst funktionen einfach hinzufügen, alle Änderungen welche du im Script-Editor schreibst werden übernommen.

  3. #3
    Also ich kriege leider einen ganzen Haufen Fehler. Zum einem gibt es wohl Probleme mit meiner Variable inputs wegen der Meldung "cannot convert fixum into string". Der Gedanke war eine Schleife zu basteln, welche die Tasten 0 bis 9 abfragt und wenn keine dieser Tasten gedrückt wurde, sollten Entf, Enter und . überprüft werden. Ich dachte, es wäre eine bessere Methode als jede Taste einzeln abzufragen, funktioniert aber leider nicht. Wie könnte ich diesen Fehler beheben? Und gibt es eine Möglichkeit die eingegebenen Zeichen auszugeben, während man die IP eingibt? Denn mache ich das über print oder ähnliches (hier Kernel.pbMessage), dann muss man nach jeder Eingabe die Meldung bestätigen, bevor man weiter machen kann.

    Code:
    Kernel.pbMessage(_INTL("Enter IP:"))
            target_ip=""
            loop do
              Keyboard.update
              count=0
              for i in 0..9 do
                inputs="Keys::N_"+i
                if Keyboard.trigger(inputs)
                  target_ip += i.to_s
                  break
                else
                  count += 1
                end
              end
              if count = 10 
                if Keyboard.trigger(Keys::PERIOD)
                  target_ip += "."
                elsif Keyboard.trigger(Keys::DELETE)
                  target_ip =""
                elsif Keyboard.trigger(Keys::RETURN) and target_ip.length>=7
                  Kernel.pbMessage(_INTL("Is "+target_ip+" correct? (Y/N)"))
                  if Keyboard.trigger(Keys::Y) and target_ip.length>=7
                     break
                  elsif Keyboard.trigger(Keys::N) and target_ip.length>=7
                     target_ip =""
                  end
                end
              end
            end
    Das andere Problem liegt wieder beim Socket. Soweit ich verstanden habe, muss der Port als Integer eingegeben werden, aber dann erhalte ich einen Syntaxfehler.
    Code:
    $s = Socket.new(Socket::AF_INET, Socket::SOCK_STREAM, Socket::IPPROTO_TCP)
    $ais = Socket.sockaddr_in('7654', nil)
    $s.bind($ais)
    $s.listen(1)
    Kernel.pbMessage(_INTL("Server initialisiert"))
    Mein letztes Problem ist, dass ich nach der Eingabe der IP in $aic = Socket.sockaddr_in(7654, target_ip) mit target_ip='127.0.0.1' die Fehlermeldung connection refused erhalte. Wohlgemerkt kann ich den Port im client socket ohne Unterschied als integer oder string angeben. Ersetze ich aber bei $s.listen(1) die 1 durch eine 2 verschwindet diese Fehlermeldung, aber das Spiel stürzt trotzdem ab.

    Geändert von Krepusko (13.08.2012 um 03:08 Uhr) Grund: ein paar kleine Fehler im Code korrigiert

  4. #4
    Ich kann nur raten, da ich das Script nicht gesehen habe, aber ich nehme an, dass diese Zeile hier:
    [quote]inputs="Keys::N_"+i[quote]
    der Grund des Fehlers ist.
    Immerhin versuchst du hier einen String und einen Integer zu addieren und das kann (und sollte auch) normalerweise nicht funktionieren.

    Was Sockets und dergleichen angeht so solltest du vielleicht nicht hier sondern in einem Forum zur WinAPI nachfragen. Wir beantworten hier eigentlich nur Rubybezogene Probleme mit dem RPG-Maker.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •