What am I doing wrong ?

● ARCHIVED · READ-ONLY
Started by Dissentrix 10 posts View original ↗
  1. Hello to all,

    I am completely new at this sort of thing. I'm making a game without scripts, and right now I'm in the process of creating torches. Now, I'm trying to do it so that when I use a match and a matchbox, one match will be deducted from your inventory. When I don't have the match, the text appears. When I don't have the matchbox, the text appears. When I have both, for some reason, the game crashes, with the message : "Script 'Game_Interpreter' line 750: NoMethodError occurred. undefined method `[]' for nil:NilClass".

    Any idea what's causing this ? A pic of the event is attached, if that's any help.

    Oh, and btw, I am using RMVX, and not Ace.

    The Match Problem.png
  2. What's on the next page? Having the self switch A = ON before the change items can mean that the change items won't even run since the event will then change to the next page (assuming it has the self switch A = on as condition)


    PS: There's a VX support sub-forum...
  3. Engr. Adiktuzmiko said:
    What's on the next page? Having the self switch A = ON before the change items can mean that the change items won't even run since the event will then change to the next page (assuming it has the self switch A = on as condition)

    PS: There's a VX support sub-forum...
    Oh sorry, next time I'll post in the right forum. I'd casually clicked the rmvx ace page.

    About my problem : putting the self switch after the event change resulted in the same error; here's the modified event, as well as the next page :

    The Match Problem 2.png

    Second page.png
  4. Oh, and thank you for taking the time to answer, as well as change this topic's place :)

    Btw, the "lighting" switch just activates a light event underneath.
  5. I didn't move it, only mods can do that.


    Can you show me the area where line 750 belongs? I haven't installed VX so I can't check it myself


    PS: for efficiency, remove the self switch, turn on the switch for lighting using the first page and use that same switch as the condition of the second page... And also just make the second page have direction fix and use action button as trigger instead of parallel, it's unnecessary.
  6. Sure, here it is :

    "when 3  # Item

          value = $game_party.item_number($data_items[@params[4]])

          actor = $game_actors[@parameters[1]]

          actor = $game_actors[@params[4]]"

    This is line 748 to 751.

     

    PS: Here's the full "Control Variables" part from the "Game_Interpreter" page :

    "# * Control Variables

      #--------------------------------------------------------------------------

      def command_122

        value = 0

        case @params[3]  # Operand

        when 0  # Constant

          value = @params[4]

        when 1  # Variable

          value = $game_variables[@params[4]]

        when 2  # Random

          value = @params[4] + rand(@params[5] - @params[4] + 1)

        when 3  # Item

          value = $game_party.item_number($data_items[@params[4]])

          actor = $game_actors[@parameters[1]]

          actor = $game_actors[@params[4]]

          if actor != nil

            case @params[5]

            when 0  # Level

              value = actor.level

            when 1  # Experience

              value = actor.exp

            when 2  # HP

              value = actor.hp

            when 3  # MP

              value = actor.mp

            when 4  # Maximum HP

              value = actor.maxhp

            when 5  # Maximum MP

              value = actor.maxmp

            when 6  # Attack

              value = actor.atk

            when 7  # Defense

              value = actor.def

            when 8  # Spirit

              value = actor.spi

            when 9  # Agility

              value = actor.agi

            end

          end

        when 5  # Enemy

          enemy = $game_troop.members[@params[4]]

          if enemy != nil

            case @params[5]

            when 0  # HP

              value = enemy.hp

            when 1  # MP

              value = enemy.mp

            when 2  # Maximum HP

              value = enemy.maxhp

            when 3  # Maximum MP

              value = enemy.maxmp

            when 4  # Attack

              value = enemy.atk

            when 5  # Defense

              value = enemy.def

            when 6  # Spirit

              value = enemy.spi

            when 7  # Agility

              value = enemy.agi

            end

          end

        when 6  # Character

          character = get_character(@params[4])

          if character != nil

            case @params[5]

            when 0  # x-coordinate

              value = character.x

            when 1  # y-coordinate

              value = character.y

            when 2  # direction

              value = character.direction

            when 3  # screen x-coordinate

              value = character.screen_x

            when 4  # screen y-coordinate

              value = character.screen_y

            end

          end

        when 7  # Other

          case @params[4]

          when 0  # map ID

            value = $game_map.map_id

          when 1  # number of party members

            value = $game_party.members.size

          when 2  # gold

            value = $game_party.gold

          when 3  # steps

            value = $game_party.steps

          when 4  # play time

            value = Graphics.frame_count / Graphics.frame_rate

          when 5  # timer

            value = $game_system.timer / Graphics.frame_rate

          when 6  # save count

            value = $game_system.save_count

          end

        end

        for i in @params[0] .. @params[1]   # Batch control

          case @params[2]  # Operation

          when 0  # Set

            $game_variables = value

          when 1  # Add

            $game_variables += value

          when 2  # Sub

            $game_variables -= value

          when 3  # Mul

            $game_variables = value

          when 4  # Div

            $game_variables /= value if value != 0

          when 5  # Mod

            $game_variables %= value if value != 0

          end

          if $game_variables > 99999999    # Maximum limit check

            $game_variables = 99999999

          end

          if $game_variables < -99999999   # Minimum limit check

            $game_variables = -99999999

          end

        end

        $game_map.need_refresh = true

        return true

      end"
  7. First, don't put a long code in that. If you need to do that, use spoiler tags...

    So line 750 would be this line right?

    actor = $game_actors[@parameters[1]]or was it this

    Code:
    value = $game_party.item_number($data_items[@params[4]])
    I'm asking becoz the first one doesn't make sense, but counting from your post, it would be 750...Also in case you missed my PS:

    PS: for efficiency, remove the self switch, turn on the switch for lighting using the first page and use that same switch as the condition of the second page... And also just make the second page have direction fix and use action button as trigger instead of parallel, it's unnecessary.
    PS: Oh wait, I think that's it

    try changing this

    Code:
    actor = $game_actors[@parameters[1]]
    into this
    Code:
    actor = $game_actors[@params[1]]
    All other lines in that code uses @params but your actor line uses @parameters, which is weird
  8. Sorry about the wall of text, I'm still learning.

    And you are correct, line 750 is : "actor = $game_actors[@parameters[1]]"

    Thx for your PS, I used it :

    Modified Event.png

    Modified Event 2.png
  9. This

    Engr. Adiktuzmiko said:
    I think that's it


    try changing this

    Code:
    actor = $game_actors[@parameters[1]]
    into this
    Code:
    actor = $game_actors[@params[1]]
    All other lines in that code uses @params but your actor line uses @parameters, which is weird
  10. Engr. Adiktuzmiko said:
    This
    Yep, that was the problem. Don't know why it was weird like that, though, it's the RMVX default.

    Anyway, thanks a bunch !