CARVIEW |
Select Language
HTTP/2 200
date: Sat, 11 Oct 2025 06:14:11 GMT
content-type: text/html; charset=UTF-8
server: cloudflare
x-frame-options: DENY
x-content-type-options: nosniff
x-xss-protection: 1;mode=block
vary: accept-encoding
cf-cache-status: DYNAMIC
content-encoding: gzip
set-cookie: _csrf-frontend=effc413d249207098f27ec4c1435e54065b94152c37bfb311123e03b59229d51a%3A2%3A%7Bi%3A0%3Bs%3A14%3A%22_csrf-frontend%22%3Bi%3A1%3Bs%3A32%3A%22DzYM_AIogc4sEerPOAhd9dd7A-t963WX%22%3B%7D; HttpOnly; Path=/
cf-ray: 98cc373d886a3585-BLR
002_CableClub.rb - Pastebin.com
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module CableClub
- ACTIVITY_OPTIONS = {:battle => _INTL("battle"),
- :trade => _INTL("trade"),
- :record_mix => _INTL("mix records")}
- def self.pokemon_order(client_id)
- case client_id
- when 0; [0, 1, 2, 3, 4, 5]
- when 1; [1, 0, 3, 2, 5, 4]
- else; raise "Unknown client_id: #{client_id}"
- end
- end
- def self.pokemon_target_order(client_id)
- case client_id
- when 0..1; [1, 0, 3, 2, 5, 4]
- else; raise "Unknown client_id: #{client_id}"
- end
- end
- def self.do_battle(connection, client_id, seed, battle_rules, player_party, partner, partner_party)
- $Trainer.heal_party # Avoids having to transmit damaged state.
- partner_party.each{|pkmn| pkmn.heal} # back to back battles desync without it.
- olditems = $Trainer.party.transform { |p| p.item_id }
- olditems2 = partner_party.transform { |p| p.item_id }
- if !DISABLE_SKETCH_ONLINE
- oldmoves = $player.party.transform { |p| p.moves.dup }
- oldmoves2 = partner_party.transform { |p| p.moves.dup }
- end
- scene = pbNewBattleScene
- battle = PokeBattle_CableClub.new(connection, client_id, scene, player_party, partner_party, partner, seed)
- battle.endSpeechesWin = [partner.win_text]
- battle.endSpeeches = [partner.lose_text]
- battle.items = []
- battle.internalBattle = false
- battle_rules.applyBattleRules(battle)
- trainerbgm = pbGetTrainerBattleBGM(partner)
- Events.onStartBattle.trigger(nil, nil)
- # XXX: Configuring Online Battle Rules
- setBattleRule("environment", :None)
- setBattleRule("weather", :None)
- setBattleRule("terrain", :None)
- setBattleRule("backdrop", "indoor1")
- pbPrepareBattle(battle)
- $PokemonTemp.clearBattleRules
- exc = nil
- pbBattleAnimation(trainerbgm, (battle.singleBattle?) ? 1 : 3, [partner]) {
- pbSceneStandby {
- begin
- battle.pbStartBattle
- rescue Connection::Disconnected
- scene.pbEndBattle(0)
- exc = $!
- ensure
- $Trainer.party.each_with_index do |pkmn, i|
- pkmn.heal
- pkmn.makeUnmega
- pkmn.makeUnprimal
- pkmn.item = olditems[i]
- pkmn.moves = oldmoves[i] if !DISABLE_SKETCH_ONLINE
- end
- partner_party.each_with_index do |pkmn, i|
- pkmn.heal
- pkmn.makeUnmega
- pkmn.makeUnprimal
- pkmn.item = olditems2[i]
- pkmn.moves = oldmoves2[i] if !DISABLE_SKETCH_ONLINE
- end
- end
- }
- }
- $game_map.need_refresh = true
- $game_player.refresh
- $game_map.update
- raise exc if exc
- end
- def self.do_trade(index, you, your_pkmn)
- my_pkmn = $Trainer.party[index]
- $Trainer.pokedex.register(your_pkmn)
- $Trainer.pokedex.set_owned(your_pkmn.species)
- pbFadeOutInWithMusic(99999) {
- scene = PokemonTrade_Scene.new
- scene.pbStartScreen(my_pkmn, your_pkmn, $Trainer.name, you.name)
- scene.pbTrade
- scene.pbEndScreen
- }
- $Trainer.party[index] = your_pkmn
- end
- def self.choose_pokemon
- chosen = -1
- pbFadeOutIn(99999) {
- scene = PokemonParty_Scene.new
- screen = PokemonPartyScreen.new(scene, $Trainer.party)
- screen.pbStartScene(_INTL("Elije un pokemon."), false)
- chosen = screen.pbChoosePokemon
- screen.pbEndScene
- }
- return chosen
- end
- def self.choose_team(ruleset)
- team_order = nil
- pbFadeOutIn(99999) {
- scene = PokemonParty_Scene.new
- screen = PokemonPartyScreen.new(scene, $Trainer.party)
- team_order = screen.pbPokemonMultipleEntryScreenOrder(ruleset)
- }
- return team_order
- end
- def self.check_pokemon(pkmn)
- pbFadeOutIn(99999) {
- scene = PokemonSummary_Scene.new
- screen = PokemonSummaryScreen.new(scene,true)
- screen.pbStartScreen([pkmn],0)
- }
- end
- def self.write_party(writer)
- writer.int($Trainer.party_count)
- $Trainer.party.each do |pkmn|
- write_pkmn(writer, pkmn)
- end
- end
- def self.write_pkmn(writer, pkmn)
- writer.sym(pkmn.species)
- writer.int(pkmn.level)
- writer.int(pkmn.personalID)
- writer.int(pkmn.owner.id)
- writer.str(pkmn.owner.name)
- writer.int(pkmn.owner.gender)
- writer.int(pkmn.exp)
- writer.int(pkmn.form)
- writer.nil_or(:sym, pkmn.item_id)
- writer.int(pkmn.numMoves)
- pkmn.moves.each do |move|
- writer.sym(move.id)
- writer.int(move.ppup)
- end
- writer.int(pkmn.first_moves.length)
- pkmn.first_moves.each do |move|
- writer.sym(move)
- end
- writer.int(pkmn.gender)
- writer.nil_or(:bool,pkmn.shiny?)
- writer.nil_or(:sym, pkmn.ability_id)
- writer.nil_or(:int, pkmn.ability_index)
- writer.nil_or(:sym, pkmn.nature_id)
- writer.nil_or(:sym, pkmn.nature_for_stats_id)
- GameData::Stat.each_main do |s|
- writer.int(pkmn.iv[s.id])
- writer.nil_or(:bool, pkmn.ivMaxed[s.id])
- writer.int(pkmn.ev[s.id])
- end
- writer.int(pkmn.happiness)
- writer.str(pkmn.name)
- writer.sym(pkmn.poke_ball)
- writer.int(pkmn.steps_to_hatch)
- writer.int(pkmn.pokerus)
- writer.int(pkmn.obtain_method)
- writer.int(pkmn.obtain_map)
- writer.nil_or(:str,pkmn.obtain_text)
- writer.int(pkmn.obtain_level)
- writer.int(pkmn.hatched_map)
- writer.int(pkmn.cool)
- writer.int(pkmn.beauty)
- writer.int(pkmn.cute)
- writer.int(pkmn.smart)
- writer.int(pkmn.tough)
- writer.int(pkmn.sheen)
- writer.int(pkmn.numRibbons)
- pkmn.ribbons.each do |ribbon|
- writer.sym(ribbon)
- end
- writer.bool(!!pkmn.mail)
- if pkmn.mail
- writer.sym(pkmn.mail.item)
- writer.str(pkmn.mail.message)
- writer.str(pkmn.mail.sender)
- if pkmn.mail.poke1
- #[species,gender,shininess,form,shadowness,is egg]
- writer.sym(pkmn.mail.poke1[0])
- writer.int(pkmn.mail.poke1[1])
- writer.bool(pkmn.mail.poke1[2])
- writer.int(pkmn.mail.poke1[3])
- writer.bool(pkmn.mail.poke1[4])
- writer.bool(pkmn.mail.poke1[5])
- else
- writer.nil_or(:sym,nil)
- end
- if pkmn.mail.poke2
- #[species,gender,shininess,form,shadowness,is egg]
- writer.sym(pkmn.mail.poke2[0])
- writer.int(pkmn.mail.poke2[1])
- writer.bool(pkmn.mail.poke2[2])
- writer.int(pkmn.mail.poke2[3])
- writer.bool(pkmn.mail.poke2[4])
- writer.bool(pkmn.mail.poke2[5])
- else
- writer.nil_or(:sym,nil)
- end
- if pkmn.mail.poke3
- #[species,gender,shininess,form,shadowness,is egg]
- writer.sym(pkmn.mail.poke3[0])
- writer.int(pkmn.mail.poke3[1])
- writer.bool(pkmn.mail.poke3[2])
- writer.int(pkmn.mail.poke3[3])
- writer.bool(pkmn.mail.poke3[4])
- writer.bool(pkmn.mail.poke3[5])
- else
- writer.nil_or(:sym,nil)
- end
- end
- writer.bool(!!pkmn.fused)
- if pkmn.fused
- write_pkmn(writer, pkmn.fused)
- end
- if defined?(EliteBattle) # EBDX compat
- # this looks so dumb I know, but the variable can be nil, false, or an int.
- writer.str(pkmn.superHue.to_s)
- writer.nil_or(:bool,pkmn.superVariant)
- end
- end
- def self.parse_party(record)
- party = []
- record.int.times do
- party << parse_pkmn(record)
- end
- return party
- end
- def self.parse_pkmn(record)
- species = record.sym
- level = record.int
- pkmn = Pokemon.new(species, level, $Trainer)
- pkmn.personalID = record.int
- pkmn.owner.id = record.int
- pkmn.owner.name = record.str
- pkmn.owner.gender = record.int
- pkmn.exp = record.int
- form = record.int
- #pkmn.forced_form = form if MultipleForms.hasFunction?(pkmn.species,"getForm")
- pkmn.form_simple = form
- pkmn.item = record.sym
- pkmn.forget_all_moves
- record.int.times do |i|
- pkmn.moves[i] = Pokemon::Move.new(record.sym)
- pkmn.moves[i].ppup = record.int
- end
- pkmn.moves.compact!
- pkmn.clear_first_moves
- record.int.times do |i|
- pkmn.add_first_move(record.sym)
- end
- pkmn.gender = record.int
- pkmn.shiny = record.nil_or(:bool)
- pkmn.ability = record.nil_or(:sym)
- pkmn.ability_index = record.nil_or(:int)
- pkmn.nature = record.sym
- pkmn.nature_for_stats = record.nil_or(:sym)
- GameData::Stat.each_main do |s|
- pkmn.iv[s.id] = record.int
- pkmn.ivMaxed[s.id] = record.nil_or(:bool)
- pkmn.ev[s.id] = record.int
- end
- pkmn.happiness = record.int
- pkmn.name = record.str
- pkmn.poke_ball = record.sym
- pkmn.steps_to_hatch = record.int
- pkmn.pokerus = record.int
- pkmn.obtain_method = record.int
- pkmn.obtain_map = record.int
- pkmn.obtain_text = record.nil_or(:str)
- pkmn.obtain_level = record.int
- pkmn.hatched_map = record.int
- pkmn.cool = record.int
- pkmn.beauty = record.int
- pkmn.cute = record.int
- pkmn.smart = record.int
- pkmn.tough = record.int
- pkmn.sheen = record.int
- record.int.times do |i|
- pkmn.giveRibbon(record.sym)
- end
- if record.bool() # mail
- m_item = record.sym()
- m_msg = record.str()
- m_sender = record.str()
- m_poke1 = []
- if m_species1 = record.nil_or(:sym)
- #[species,gender,shininess,form,shadowness,is egg]
- m_poke1[0] = m_species1
- m_poke1[1] = record.int()
- m_poke1[2] = record.bool()
- m_poke1[3] = record.int()
- m_poke1[4] = record.bool()
- m_poke1[5] = record.bool()
- else
- m_poke1 = nil
- end
- m_poke2 = []
- if m_species2 = record.nil_or(:sym)
- #[species,gender,shininess,form,shadowness,is egg]
- m_poke2[0] = m_species2
- m_poke2[1] = record.int()
- m_poke2[2] = record.bool()
- m_poke2[3] = record.int()
- m_poke2[4] = record.bool()
- m_poke2[5] = record.bool()
- else
- m_poke2 = nil
- end
- m_poke3 = []
- if m_species3 = record.nil_or(:sym)
- #[species,gender,shininess,form,shadowness,is egg]
- m_poke3[0] = m_species3
- m_poke3[1] = record.int()
- m_poke3[2] = record.bool()
- m_poke3[3] = record.int()
- m_poke3[4] = record.bool()
- m_poke3[5] = record.bool()
- else
- m_poke3 = nil
- end
- pkmn.mail = Mail.new(m_item,m_msg,m_sender,m_poke1,m_poke2,m_poke3)
- end
- if record.bool() # fused
- pkmn.fused = parse_pkmn(record)
- end
- if defined?(EliteBattle) # EBDX compat
- # this looks so dumb I know, but the variable can be nil, false, or an int.
- superhue = record.str
- if superhue == ""
- pkmn.superHue = nil
- elsif superhue=="false"
- pkmn.superHue = false
- else
- pkmn.superHue = superhue.to_i
- end
- pkmn.superVariant = record.nil_or(:bool)
- end
- pkmn.calc_stats
- return pkmn
- end
- def self.parse_battle_rules(record)
- rules = []
- record.int.times do
- rules << parse_battle_rule(record)
- end
- return rules
- end
- def self.parse_battle_rule(record)
- name = record.str
- desc = record.str
- rule = PokemonOnlineRules.new
- rule.setTeamPreview(record.int)
- rule.setNumberRange(record.int,record.int)
- # level adjustment
- level_adjustment = record.nil_or(:str)
- if level_adjustment
- level_adjustment_data = level_adjustment.split(";")
- level_adjustmentClass = level_adjustment_data.shift
- level_adjustment_args = process_args_type_hint(*level_adjustment_data)
- if Object.const_defined?(level_adjustmentClass)
- rule.setLevelAdjustment(Kernel.const_get(level_adjustmentClass),*level_adjustment_args)
- end
- end
- # battle rules
- record.int.times do
- clause_data = record.str.split(";")
- clauseClass = clause_data.shift
- clause_args = process_args_type_hint(*clause_data)
- if Object.const_defined?(clauseClass)
- rule.addBattleRule(Kernel.const_get(clauseClass),*clause_args)
- end
- end
- # pokemon rules
- record.int.times do
- clause_data = record.str.split(";")
- clauseClass = clause_data.shift
- clause_args = process_args_type_hint(*clause_data)
- if Object.const_defined?(clauseClass)
- rule.addPokemonRule(Kernel.const_get(clauseClass),*clause_args)
- end
- end
- # subset rules
- record.int.times do
- clause_data = record.str.split(";")
- clauseClass = clause_data.shift
- clause_args = process_args_type_hint(*clause_data)
- if Object.const_defined?(clauseClass)
- rule.addSubsetRule(Kernel.const_get(clauseClass),*clause_args)
- end
- end
- # team rules
- record.int.times do
- clause_data = record.str.split(";")
- clauseClass = clause_data.shift
- clause_args = process_args_type_hint(*clause_data)
- if Object.const_defined?(clauseClass)
- rule.addTeamRule(Kernel.const_get(clauseClass),*clause_args)
- end
- end
- return [name,desc,rule]
- end
- def self.write_battle_rule(writer,battle_rule)
- name,desc,rule = battle_rule
- writer.str(name)
- writer.str(desc)
- writer.int(rule.team_preview)
- writer.int(rule.ruleset.minLength)
- writer.int(rule.ruleset.maxLength)
- if rule.rules_hash[:level_adjust]
- writer.str(rule.rules_hash[:level_adjust].join(";"))
- else
- writer.nil_or(:str,nil)
- end
- writer.int(rule.rules_hash[:battle].length)
- rule.rules_hash[:battle].each do |br|
- writer.str(br.join(";"))
- end
- writer.int(rule.rules_hash[:pokemon].length)
- rule.rules_hash[:pokemon].each do |pr|
- writer.str(pr.join(";"))
- end
- writer.int(rule.rules_hash[:subset].length)
- rule.rules_hash[:subset].each do |sr|
- writer.str(sr.join(";"))
- end
- writer.int(rule.rules_hash[:team].length)
- rule.rules_hash[:team].each do |tr|
- writer.str(tr.join(";"))
- end
- end
- def self.get_server_info
- #ret = [HOST,PORT]
- ret = [$ipHost,PORT]
- if safeExists?("serverinfo.ini")
- File.foreach("serverinfo.ini") do |line|
- case line
- when /^\s*[Hh][Oo][Ss][Tt]\s*=\s*(.+)$/
- ret[0]=$1 if !nil_or_empty?($1)
- when /^\s*[Pp][Oo][Rr][Tt]\s*=\s*(\d{1,5})$/
- if !nil_or_empty?($1)
- port = $1.to_i
- ret[1]= port if port>0 && port<=65535
- end
- end
- end
- end
- return ret
- end
- # only handles int, bool, sym, and str
- def self.apply_args_type_hint(*args)
- ret = []
- args.each do |arg|
- case arg
- when Integer; ret.push([:int,arg])
- when TrueClass,FalseClass; ret.push([:bool,arg])
- when String; ret.push([:str,arg])
- when Symbol; ret.push([:sym,arg])
- end
- end
- return ret
- end
- # takes a long chain of args, every second element is the original argument
- def self.process_args_type_hint(*args)
- ret = []
- r = nil
- args.each do |arg|
- if r
- case r
- when :int; ret.push(arg.to_i)
- when :bool
- if arg == "true"
- ret.push(true)
- elsif arg == "false"
- ret.push(false)
- else
- raise "expected bool, got #{arg}"
- end
- when :str; ret.push(arg)
- when :sym; ret.push(arg.to_sym)
- end
- r = nil
- else
- r = arg.to_sym
- end
- end
- return ret
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
-
⭐✅ Marketplace Glitch ✅ Working ✅ NEVER SEEN...
JavaScript | 2 sec ago | 0.24 KB
-
✅⭐ Make $2500 in 15 minutes ✅ NEVER SEEN BEFO...
JavaScript | 11 sec ago | 0.24 KB
-
⭐ Instant BTC Profit Method ✅ NEVER SEEN BEFO...
JavaScript | 24 sec ago | 0.24 KB
-
⭐ Instant BTC Profit Method ✅ NEVER SEEN BEFO...
JavaScript | 31 sec ago | 0.24 KB
-
⭐✅ MAKE $2000 INSTANTLY ✅ NEVER SEEN BEFORE ⭐...
JavaScript | 40 sec ago | 0.24 KB
-
⭐ Free Crypto Method ✅ NEVER SEEN BEFORE ⭐⭐⭐
JavaScript | 49 sec ago | 0.24 KB
-
✅⭐ Make huge profits on trading ✅ NEVER SEEN...
JavaScript | 59 sec ago | 0.24 KB
-
⭐✅ Marketplace Glitch ✅ Working ✅ NEVER SEEN...
JavaScript | 1 min ago | 0.24 KB
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand