Save-Point
ReKordChoices XP - Printable Version

+- Save-Point (https://www.save-point.org)
+-- Forum: Material Development (https://www.save-point.org/forum-8.html)
+--- Forum: Scripts Database (https://www.save-point.org/forum-39.html)
+---- Forum: RPGMaker XP (RGSS) Engine (https://www.save-point.org/forum-116.html)
+---- Thread: ReKordChoices XP (/thread-10029.html)



ReKordChoices XP - kyonides - 10-08-2024

ReKordChoices XP

by Kyonides

Introduction

This scriptlet allows you to auto-select 2 game variables that will store the choices list ID for the selected event page and the number of times you have selected a given option.

The value of that game variable will get updated automatically every time you pick any of the available choices.

The Script

Code:
# * ReKordChoices XP * #
#  Scripter : Kyonides Arkanthes
#  2024-10-08

# This scriptlet allows you to auto-select 2 game variables that will store
# the choices list ID for the selected event page and the number of times you
# have selected a given option.

# The value of that game variable will get updated automatically every time
# you pick any of the available choices.

# * Script Calls * #
# Use them to create a new choices list storage or to retrieve its data.
#  List of Arguments:
#  - ListID stands for Any "String" or Number
#  - ChoiceIndex is a Number, 1 through 4
#  - EventPage is a Number, 1 through 99 (Maximum Number of Pages)
# get_choice(ListID, ChoiceIndex)
# get_choice(ListID, ChoiceIndex, EventPage)
# get_choice(ListID, ChoiceIndex, EventPage, EventID)
# get_choice(ListID, ChoiceIndex, EventPage, EventID, MapID)

module ReKord
  CHOICES_LIST_VAR_ID = 5
  CHOICES_TIMES_VAR_ID = 6

class GameChoices
  def initialize
    @data = {}
    @data.default = 0
  end

  def [](key)
    @data[key]
  end

  def increase(key)
    @data[key] += 1
  end
  attr_reader :data
end

end

class Game_Variables
  alias :kyon_rekord_choices_gm_var_init :initialize
  def initialize
    kyon_rekord_choices_gm_var_init
    @choice_data = {}
  end

  def find_choice_set(map_id, event_id, page_index, list_index)
    @choice_data ||= {}
    key = [map_id, event_id, page_index, list_index]
    @choice_data[key] ||= ReKord::GameChoices.new
  end

  def set_choice_vars(choice_index, total)
    @data[ReKord::CHOICES_LIST_VAR_ID] = choice_index + 1
    @data[ReKord::CHOICES_TIMES_VAR_ID] = total
  end

  def choice(map_id, event_id, page, list_index, choice_index, go_up)
    choices = find_choice_set(map_id, event_id, page, list_index)
    choices.increase(choice_index) if go_up
    set_choice_vars(choice_index, choices[choice_index])
  end
end

class Game_Event
  def page_index
    @event.pages.index(@page)
  end
end

class Interpreter
  alias :kyon_rekord_choices_int_cmd_402 :command_402
  def command_402
    if @branch[@list[@index].indent] == @parameters[0]
      map_id = $game_map.map_id
      page = $game_map.events[@event_id].page_index
      list = $game_variables[ReKord::CHOICES_LIST_VAR_ID]
      choice = @parameters[0]
      $game_variables.choice(map_id, @event_id, page, list, choice, true)
    end
    kyon_rekord_choices_int_cmd_402
  end

  def get_choice(list, choice_index, page=nil, ev_id=nil, map_id=nil)
    map_id ||= $game_map.map_id
    ev_id ||= @event_id
    page = page ? page - 1 : $game_map.events[ev_id].page_index
    choice_index -= 1
    $game_variables.choice(map_id, ev_id, page, list, choice_index, nil)
  end
end


Terms & Conditions

Free for use in ANY game. Gamer
Due credit is mandatory!
Mention this forum in your game credits.
That's it! Tongue sticking out