• Godot Help
  • How would I add a cheat code to a title screen

Raptorkillz Okay but how would I make it play a sound

print(String.chr(0x07)). But you'll need to start a console version of Godot for this to work.

    Raptorkillz Well then you play it the same way you play the music. You already have that in the code you posted in one of your questions.

      Konami cheat in a SEGA game? Is this allowed? 😄

      • xyz replied to this.

        trizZzle Konami cheat in a SEGA game? Is this allowed? 😄

        I don't think so. But this thread already entered the psychoactive zone, and while passing the threshold it may have created an alternate reality in which this is not only allowed but is in fact - mandatory.

        xyz Okay but now when I press a button is pressed it plays the sound but I want it to play the sound when the cheat is successfully entered

        Raptorkillz That addon works with keys, not with actions.
        I wrote you the complete thing. Just connect the signal and do whatever you want (play sound etc...) in the signal handling function. If you don't understand what I'm talking about, you really need to go through the introductory tutorial I mentioned earlier.

          konami code is not patented, thankfully..

          xyz Now its not playing a sound

          
          class_name CheatCodeListener extends Node
          signal code_entered(name)
          var s: String
          var cheats  = {"gm_up gm_up gm_down gm_down gm_up gm_up gm_up gm_up" : "sonic 3 level select"}
          
          func _input(e):
          	for a in InputMap.get_actions().filter(func(aa): return e.is_action_pressed(aa)).slice(0,1):
          		s += a if not s else " " + a
          		for k in cheats.keys(): if s.contains(k): code_entered.emit(cheats[k]); s = ""
          		code_entered.connect(Play_sound)
          		
          		
          		
          		
          func Play_sound():
          		Global.debug =1
          		$"../Node2D/AudioStreamPlayer2".play()```
          • xyz replied to this.

            Raptorkillz Of course it isn't because you're connecting the signal after it's been emitted. You need to do it beforehand. Put the connect call in _ready() or connect it manually in the inspector.

              xyz Yea I connected the signal but its not working

              class_name CheatCodeListener extends Node
              signal code_entered(name)
              var s: String
              var cheats  = {"gm_up gm_up gm_down gm_down gm_up gm_up gm_up gm_up" : "sonic 3 level select"}
              
              
              
              	
              func _input(e):
              	for a in InputMap.get_actions().filter(func(aa): return e.is_action_pressed(aa)).slice(0,1):
              		s += a if not s else " " + a
              		for k in cheats.keys(): if s.contains(k): code_entered.emit(cheats[k]); s = ""
              		
              		
              		
              		
              		
              
              
              
              func _on_code_entered(name):
              	match name:
              		"sonic 3 level select":
              			Global.debug =1
              			$"../Node2D/AudioStreamPlayer2".play()
              • xyz replied to this.

                Raptorkillz Use a simpler cheat code for testing and put a print statement in the signal handler to see it it's getting called. Also make sure you don't have multiple actions mapped to the same input because the script will use only the first mapped action it finds in the InputMap.
                Btw you have too much whitespace in your code.

                  xyz It still doesn't work

                  class_name CheatCodeListener extends Node
                  signal code_entered(name)
                  var s: String
                  var cheats  = {"gm_left gm_right" : "sonic 3 level select"}
                  
                  
                  
                  	
                  func _input(e):
                  	for a in InputMap.get_actions().filter(func(aa): return e.is_action_pressed(aa)).slice(0,1):
                  		s += a if not s else " " + a
                  		for k in cheats.keys(): if s.contains(k): code_entered.emit(cheats[k]); s = ""
                  		
                  		
                  		
                  		
                  		
                  
                  
                  
                  func _on_code_entered(name):
                  	match name:
                  		"sonic 3 level select":
                  			$"../Node2D/AudioStreamPlayer2".play()
                  			$"../title emblem/Label".text = "Cheat Successfully entered"
                  			Global.debug =1

                    why do i get the feeling this blud is deving on ipad or something? gen alpha...

                      Raptorkillz It still doesn't work

                      Well try to find out why it doesn't work. It's called debugging and it's an essential part of programming.

                      Raptorkillz func _input(e):
                      for a in InputMap.get_actions().filter(func(aa): return e.is_action_pressed(aa)).slice(0,1):
                      s += a if not s else " " + a
                      for k in cheats.keys(): if s.contains(k): code_entered.emit(cheats[k]); s = ""

                      is this function even correct?

                      im not fond of lambdas because its convoluted.

                      i dont like this line:

                      s += a if not s else " " + a

                      Seems like if s - the entered cheat sequence is nothing/empty then you start new sequence with " " a space at the beninging. So it will never match the cheat or i maybe wrong here?

                      also the last line

                      for k in cheats.keys(): if s.contains(k): code_entered.emit(cheats[k]); s = ""

                      does ; at the end or signal.emit() means if condition fails then do - s = ""??

                      • xyz replied to this.

                        kuligs2 is this function even correct?

                        It is. I wrote it. In a compacted tabletdev style 😉