Advertisement
Guest User

Untitled

a guest
May 4th, 2015
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 50.48 KB | None | 0 0
  1. ################################################################################
  2. # GTS System Version 2.0.0
  3. # By Hansiec RELEASE
  4. # Special Thanks to Saving Raven for providing graphics and testing
  5. # CREDITS REQUIRED
  6. ################################################################################
  7. # WARNING: Do not use this script if you lack basic MySQL knowledge and/or basic
  8. # PHP knowledge.
  9. #
  10. # WARNING: Do not mess with the script below, it is
  11. #
  12. # NOTICE: If a bug uccors, please state the message of the bug.
  13. # NOTICE: You may not use the test server for your full game, I don't care what
  14. # you say, it's only for test purposes.
  15. #
  16. # What's new:
  17. # * Added Two new search methods, "By Pokemon" and "By ID", this let's you
  18. # search for a pokemon by usiing your pokemon and see what people want for
  19. # that species, and let's you input an online ID to see if a pokemon is
  20. # up for trade there.
  21. # * Added the abillity to see your own online ID
  22. #
  23. # Installation:
  24. # * Configure Settings `GTS.php`
  25. # * Upload `GTS.php` to your webserver
  26. # * Replace the `URL` variable in `GTSSettings` with your url
  27. # * Run the function "GTSCore.install"
  28. #
  29. # How To Use:
  30. # * Install
  31. # * Call "GTS.open"
  32. # * Report if any bugs uccor
  33. #
  34. # Settings:
  35. # * URL - The url link of "gts.php"
  36. # * SPECIES_SHOWN - Set to "All", "Owned", or "Seen" - this sets the available
  37. # species you can search for
  38. # * SORT_MODE - Set to "Alphabetical" or "Regional" - How species are arranged
  39. # during species finding
  40. # * GAME_CODE - A special Game Code, if you happen to trade with a game with
  41. # a different game code, the found map would be "Faraway Place"
  42. #
  43. # Bug Fixes:
  44. # * Fixed a cloning glitch where your pokemon duplicates if you exit shortly
  45. # after trading
  46. # * Fixed a small error in gts.php of where some tables setup incorrectly
  47. #
  48. ################################################################################
  49.  
  50. module GTSSettings
  51. URL = "http://pokemonuranium.com/PHP/pugts.php"
  52. SPECIES_SHOWN = "All" # All/Seen/Owned Species you can search for
  53. SORT_MODE = "Alphabetical" # Alphabetical/Regional How species are arranged
  54. BLACK_LIST = [] # Pokemon Species of which cannot be selected to search for
  55.  
  56. GAME_CODE = "uranium" # Please use a custom Game Code
  57. # It IS case Sensitive and can be any length, this is to define
  58. # Games as different from each other.
  59. end
  60.  
  61. # Temporary boolean, DO NOT REMOVE
  62. $TempBool = false
  63.  
  64. module GTS
  65. ##### Main Method
  66. def self.open
  67. $scene = Scene_GTS.new
  68. #scene.main
  69. end
  70.  
  71. def self.close
  72. Graphics.freeze
  73. pbDisposeSpriteHash(@sprites)
  74. Graphics.transition
  75. $scene = Scene_Map.new
  76. end
  77.  
  78. #### Brings up a summary of your uploaded pokemon (also allows you to delete it)
  79. def self.summary
  80. if GTSCore.isTaken
  81. newpoke = GTSCore.downloadPokemon($PokemonGlobal.onlineID).to_pokemon
  82. if finishTrade($PokemonGlobal.onlinePokemon, newpoke, false)
  83. pbAddPokemonSilent(newpoke)
  84. $PokemonGlobal.onlinePokemon = nil
  85. pbSave
  86. end
  87. return
  88. end
  89. pbFadeOutIn(99999){
  90. scene=PokemonSummaryScene.new
  91. screen=PokemonSummary.new(scene)
  92. screen.pbStartScreen([$PokemonGlobal.onlinePokemon],0)
  93. }
  94. if Kernel.pbConfirmMessageSerious(_INTL("Do you want to withdraw your "+
  95. "pokemon from GTS?"))
  96. if Kernel.pbConfirmMessageSerious(_INTL("Are you sure you want to "+
  97. "withdraw your pokemon?"))
  98. if GTSCore.deletePokemon
  99. pbAddPokemonSilent($PokemonGlobal.onlinePokemon)
  100. $PokemonGlobal.onlinePokemon = nil
  101. $TempBool = true
  102. pbSave
  103. # Long story short, we save before we show the message to help prevent
  104. # pokemon from being deleted by restarting, but if the game is restarted,
  105. # we don't want this message
  106. if $TempBool
  107. Kernel.pbMessage(_INTL("Pokemon withdrawn, please be aware that "+
  108. "your pokemon may have had been taken by now."))
  109. end
  110. end
  111. end
  112. end
  113. end
  114.  
  115.  
  116. ##### Finishes the GTS trade
  117. def self.finishTrade(myPokemon, newpoke, searching, id=nil)
  118. $Trainer.seen[newpoke.species]=true
  119. $Trainer.owned[newpoke.species]=true
  120. pbSeenForm(newpoke)
  121. pbFadeOutInWithMusic(99999){
  122. evo=PokemonTradeScene.new
  123. evo.pbStartScreen(myPokemon,newpoke,$Trainer.name,newpoke.ot)
  124. evo.pbTrade
  125. evo.pbEndScreen
  126. }
  127. if !newpoke.game_code || newpoke.game_code != GTSSettings::GAME_CODE
  128. newpoke.obtainText = "Faraway Place"
  129. end
  130. newpoke.obtainMode = 2 # Traded
  131. if searching
  132. if GTSCore.setTaken(id) && GTSCore.uploadNewPokemon(id, myPokemon)
  133. pbAddPokemonSilent(newpoke)
  134. pbSave
  135. return true
  136. end
  137. return false
  138. else
  139. pbSave
  140. return GTSCore.deletePokemon(false)
  141. end
  142. end
  143.  
  144.  
  145. ##### Brings up all species of pokemon of the given index of the given sort mode
  146. def self.orderSpecies(index)
  147. speciesList = []
  148. commands = ["Cancel"]
  149. if GTSSettings::SORT_MODE == "Alphabetical"
  150. l = "A"
  151. l[0] += index if !index.is_a?(String)
  152. letter = index.is_a?(String) ? index : l
  153. for i in 1..PBSpecies.maxValue
  154. show = true
  155. show = false if !$Trainer.seen[i] && GTSSettings::SPECIES_SHOWN == "Seen"
  156. show = false if !$Trainer.owned[i] && GTSSettings::SPECIES_SHOWN == "Owned"
  157. for j in GTSSettings::BLACK_LIST
  158. show = false if i == j
  159. break if !show
  160. end
  161. speciesList.push(i) if PBSpecies.getName(i)[0] == letter[0] && show
  162. end
  163. elsif GTSSettings::SORT_MODE == "Regional"
  164. realIndex = -1
  165. regions = pbDexNames
  166. for i in 0...regions.length
  167. if regions[i].is_a?(Array)
  168. if regions[i][0] == index
  169. realIndex = regions[i][1]
  170. end
  171. end
  172. end
  173. if realIndex != -1
  174. sl = pbAllRegionalSpecies(realIndex)
  175. for i in sl
  176. show = true
  177. show = false if !$Trainer.seen[i] &&
  178. GTSSettings::SPECIES_SHOWN == "Seen"
  179. show = false if !$Trainer.owned[i] &&
  180. GTSSettings::SPECIES_SHOWN == "Owned"
  181. for j in GTSSettings::BLACK_LIST
  182. show = false if i == j
  183. break if !show
  184. end
  185. speciesList.push(i) if show
  186. end
  187. else
  188. for i in 1..PBSpecies.maxValue
  189. show = true
  190. show = false if !$Trainer.seen[i] &&
  191. GTSSettings::SPECIES_SHOWN == "Seen"
  192. show = false if !$Trainer.owned[i] &&
  193. GTSSettings::SPECIES_SHOWN == "Owned"
  194. for j in GTSSettings::BLACK_LIST
  195. show = false if i == j
  196. break if !show
  197. end
  198. speciesList.push(i) if show
  199. end
  200. end
  201. end
  202. for i in speciesList
  203. commands.push("#{i}: #{PBSpecies.getName(i)}") if i > 0
  204. end
  205. if commands.length == 1
  206. Kernel.pbMessage(_INTL("No species found"))
  207. return [0, 0]
  208. end
  209. c = Kernel.pbMessage("Select a Species", commands, 0, nil, 1)
  210.  
  211. x = speciesList[c - 1]
  212. if x.is_a?(Array)
  213. x = x[0]
  214. end
  215. return [c == 0 ? -1 : x, c]
  216. end
  217.  
  218. end
  219.  
  220. ################################################################################
  221. # WONDER TRADE Scene
  222. # By ~JV~
  223. # Scenes For WT
  224. ################################################################################
  225.  
  226. module WONDERTRADE
  227. ##### Main Method
  228. def self.open
  229. $scene = Scene_WONDERTRADE.new
  230. #scene.main
  231. end
  232.  
  233. def self.close
  234. Graphics.freeze
  235. pbDisposeSpriteHash(@sprites)
  236. Graphics.transition
  237. $scene = Scene_Map.new
  238. end
  239.  
  240.  
  241. ##### Finishes the WT trade
  242. def self.finishTradeWT(myPokemon, newpoke, id=nil)
  243. $Trainer.seen[newpoke.species]=true
  244. $Trainer.owned[newpoke.species]=true
  245. pbSeenForm(newpoke)
  246. pbFadeOutInWithMusic(99999){
  247. evo=PokemonTradeScene.new
  248. evo.pbStartScreen(myPokemon,newpoke,$Trainer.name,newpoke.ot)
  249. evo.pbTrade
  250. evo.pbEndScreen
  251. }
  252. if !newpoke.game_code || newpoke.game_code != GTSSettings::GAME_CODE
  253. newpoke.obtainText = "Faraway Place"
  254. end
  255. newpoke.obtainMode = 2 # Traded
  256. pbSave
  257. return true
  258. end
  259.  
  260.  
  261. end
  262. ################################################################################
  263.  
  264.  
  265. ################################################################################
  266. # GTS Scenes
  267. # By Hansiec
  268. # Scenes For GTS
  269. ################################################################################
  270.  
  271. ######## GTS Buttons, A Basic options button for our GTS System
  272. class GTS_Button < SpriteWrapper
  273. def initialize(x,y,name="",index=0,viewport=nil)
  274. super(viewport)
  275. @index=index
  276. @name=name
  277. @selected=false
  278. self.x=x
  279. self.y=y
  280. update
  281. end
  282.  
  283. def dispose
  284. super
  285. end
  286.  
  287. def refresh
  288. self.bitmap.dispose if self.bitmap
  289. self.bitmap = Bitmap.new("Graphics/Pictures/GTS/Options_bar")
  290. pbSetSystemFont(self.bitmap)
  291. textpos=[
  292. [@name,self.bitmap.width/2,1,2,Color.new(248,248,248),Color.new(40,40,40)],
  293. ]
  294. pbDrawTextPositions(self.bitmap,textpos)
  295. end
  296.  
  297. def update
  298. refresh
  299. super
  300. end
  301. end
  302.  
  303. ########## GTS Search Method Selection
  304. class GTSSearchMethod
  305. def initialize
  306. @exit = false
  307. @index = 0
  308. end
  309.  
  310. def create_spriteset
  311. pbDisposeSpriteHash(@sprites) if @sprites
  312. @sprites = {}
  313. @sprites["background"] = IconSprite.new
  314. @sprites["background"].setBitmap("Graphics/Pictures/GTS/WonderTrade")
  315.  
  316. pbSetSystemFont(@sprites["background"].bitmap)
  317. textpos=[
  318. ["Select Search Method",50,6,0,Color.new(248,248,248),Color.new(40,40,40)],
  319. ["Online ID: #{$PokemonGlobal.onlineID.to_s.rjust(6, "0")}",400,6,2,Color.new(248,248,248),
  320. Color.new(40,40,40)],
  321. ]
  322. pbDrawTextPositions(@sprites["background"].bitmap,textpos)
  323.  
  324. @sprites["0"] = GTS_Button.new(Graphics.width/2, 50, "By Wanted")
  325. @sprites["0"].x -= @sprites["0"].bitmap.width / 2
  326.  
  327. @sprites["1"] = GTS_Button.new(Graphics.width/2, 110, "By Pokemon")
  328. @sprites["1"].x -= @sprites["1"].bitmap.width / 2
  329.  
  330. @sprites["2"] = GTS_Button.new(Graphics.width/2, 170, "By ID")
  331. @sprites["2"].x -= @sprites["2"].bitmap.width / 2
  332.  
  333. @sprites["3"] = GTS_Button.new(Graphics.width/2, 230, "Exit")
  334. @sprites["3"].x -= @sprites["3"].bitmap.width / 2
  335.  
  336. bit = Bitmap.new("Graphics/Pictures/GTS/Select")
  337. @sprites["selection_l"] = IconSprite.new
  338. @sprites["selection_l"].bitmap = Bitmap.new(16, 46)
  339. @sprites["selection_l"].bitmap.blt(0, 0, bit, Rect.new(0, 0, 16, 16))
  340. @sprites["selection_l"].bitmap.blt(0, 23, bit, Rect.new(0, 16, 16, 32))
  341.  
  342. @sprites["selection_r"] = IconSprite.new
  343. @sprites["selection_r"].bitmap = Bitmap.new(16, 46)
  344. @sprites["selection_r"].bitmap.blt(0, 0, bit, Rect.new(16, 0, 32, 16))
  345. @sprites["selection_r"].bitmap.blt(0, 23, bit, Rect.new(16, 16, 32, 32))
  346.  
  347. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  348. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  349. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  350. @sprites["#{@index}"].bitmap.width-18
  351. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  352.  
  353. end
  354.  
  355. def main
  356. Graphics.freeze
  357. create_spriteset
  358. Graphics.transition
  359. loop do
  360. Graphics.update
  361. Input.update
  362. update
  363. break if @exit
  364. end
  365. Graphics.freeze
  366. pbDisposeSpriteHash(@sprites)
  367. end
  368.  
  369. def update
  370. pbUpdateSpriteHash(@sprites)
  371. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  372. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  373. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  374. @sprites["#{@index}"].bitmap.width-18
  375. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  376. if Input.trigger?(Input::UP)
  377. @index -= 1
  378. if @index < 0
  379. @index = 3
  380. end
  381. elsif Input.trigger?(Input::DOWN)
  382. @index += 1
  383. if @index > 3
  384. @index = 0
  385. end
  386. end
  387. if (Input.trigger?(Input::B))
  388. pbPlayCancelSE
  389. @exit = true
  390. elsif (Input.trigger?(Input::C))
  391. pbPlayDecisionSE
  392. do_command
  393. end
  394. end
  395.  
  396. def do_command
  397. if @index == 0
  398. Graphics.freeze
  399. scene = GTSWantedData.new
  400. @sprites["background"].dispose
  401. data=scene.main
  402. create_spriteset
  403. Graphics.transition
  404. return if !data.is_a?(Array)
  405. list = GTSCore.getPokemonList(data)
  406. if list[0] == "nothing"
  407. Kernel.pbMessage(_INTL("No Pokemon was found."))
  408. else
  409. pokemonList = []
  410. for i in list
  411. pokemonList.push(GTSCore.downloadPokemon(i).to_pokemon)
  412. end
  413. loop do
  414. scene=PokemonSummaryScene.new
  415. screen=PokemonSummary.new(scene)
  416. index = screen.pbStartGTSScreen(pokemonList,0)
  417. if index == false
  418. break
  419. else
  420. wantedData = GTSCore.downloadWantedData(list[index])
  421. for i in 0...wantedData.length
  422. wantedData[i] = wantedData[i].to_i
  423. end
  424. scene=PokemonSummaryScene.new
  425. screen=PokemonSummary.new(scene)
  426. takes = screen.pbStartGTSWantedScreen(wantedData,0)
  427. if takes
  428. pbFadeOutIn(99999){
  429. scene=PokemonStorageScene.new
  430. screen=PokemonStorageScreen.new(scene,$PokemonStorage)
  431. $choice = choice = screen.pbChoosePokemon
  432. }
  433. choice = $choice
  434. if choice == nil
  435. break
  436. else
  437. party = choice[0] == -1
  438. pkmn = $Trainer.party[choice[1]].clone if party
  439. pkmn = $PokemonStorage[choice[0]][choice[1]].clone if !party
  440.  
  441. if pkmn.species != wantedData[0] || pkmn.level < wantedData[1] ||
  442. pkmn.level > wantedData[2] ||
  443. (wantedData[3] != -1 && pkmn.gender != wantedData[3])
  444. Kernel.pbMessage(_INTL("The selected pokemon does not match the"+
  445. " wanted requirments."))
  446. else
  447. if GTS.finishTrade(pkmn, pokemonList[index], true, list[index])
  448. if party
  449. pbRemovePokemonAt(choice[1])
  450. else
  451. $PokemonStorage[choice[0]][choice[1]] = nil
  452. end
  453. pbSave
  454. return true
  455. end
  456. end
  457. end
  458. end
  459. end
  460. end
  461. end
  462. elsif @index == 1
  463. Kernel.pbMessage(_INTL("To Continue, please select a pokemon of yours,"+
  464. " we will match it up with any possible matches and allow you to choose a"+
  465. " match."))
  466. pbFadeOutIn(99999){
  467. scene=PokemonStorageScene.new
  468. screen=PokemonStorageScreen.new(scene,$PokemonStorage)
  469. $choice = choice = screen.pbChoosePokemon
  470. }
  471. choice = $choice
  472. if choice == nil
  473. return
  474. else
  475. party = choice[0] == -1
  476. pkmn = $Trainer.party[choice[1]].clone if party
  477. pkmn = $PokemonStorage[choice[0]][choice[1]].clone if !party
  478. if pkmn
  479. list = GTSCore.getPokemonListFromWanted(pkmn)
  480. if list[0] == "nothing"
  481. Kernel.pbMessage(_INTL("No Pokemon was found."))
  482. else
  483. pokemonList = []
  484. for i in list
  485. pokemonList.push(GTSCore.downloadPokemon(i).to_pokemon)
  486. end
  487. loop do
  488. scene=PokemonSummaryScene.new
  489. screen=PokemonSummary.new(scene)
  490. index = screen.pbStartGTSScreen(pokemonList,0)
  491. if index == false
  492. break
  493. else
  494. wantedData = GTSCore.downloadWantedData(list[index])
  495. for i in 0...wantedData.length
  496. wantedData[i] = wantedData[i].to_i
  497. end
  498. Kernel.pbMessage(_INTL("To confirm, this is the wanted data."))
  499. scene=PokemonSummaryScene.new
  500. screen=PokemonSummary.new(scene)
  501. takes = screen.pbStartGTSWantedScreen(wantedData,0)
  502. if takes
  503. if GTS.finishTrade(pkmn, pokemonList[index], true, list[index])
  504. if party
  505. pbRemovePokemonAt(choice[1])
  506. else
  507. $PokemonStorage[choice[0]][choice[1]] = nil
  508. end
  509. pbSave
  510. return true
  511. end
  512. else
  513. break
  514. end
  515. end
  516. end
  517. end
  518. end
  519. end
  520. elsif @index == 2
  521. loop do
  522. params=ChooseNumberParams.new
  523. params.setRange(1,999999)
  524. params.setInitialValue(1)
  525. params.setCancelValue(-1)
  526. id=Kernel.pbMessageChooseNumber(
  527. _INTL("Select the online ID."),params)
  528. return if id < 1
  529. if id == $PokemonGlobal.onlineID
  530. Kernel.pbMessage(_INTL("You cannot search by your own online ID!"))
  531. else
  532. break
  533. end
  534. end
  535. if !GTSCore.hasPokemonUploaded?(id)
  536. Kernel.pbMessage(_INTL("No Pokemon with this online ID exists!"))
  537. return
  538. end
  539. gpkmn = GTSCore.downloadPokemon(id).to_pokemon
  540. wantedData = GTSCore.downloadWantedData(id)
  541. for i in 0...wantedData.length
  542. wantedData[i] = wantedData[i].to_i
  543. end
  544. scene=PokemonSummaryScene.new
  545. screen=PokemonSummary.new(scene)
  546. index = screen.pbStartGTSScreen([gpkmn],0)
  547. if index
  548. scene=PokemonSummaryScene.new
  549. screen=PokemonSummary.new(scene)
  550. takes = screen.pbStartGTSWantedScreen(wantedData,0)
  551. if takes
  552. pbFadeOutIn(99999){
  553. scene=PokemonStorageScene.new
  554. screen=PokemonStorageScreen.new(scene,$PokemonStorage)
  555. $choice = choice = screen.pbChoosePokemon
  556. }
  557. choice = $choice
  558. if choice == nil
  559. return
  560. else
  561. party = choice[0] == -1
  562. pkmn = $Trainer.party[choice[1]].clone
  563. pkmn = $PokemonStorage[choice[0]][choice[1]].clone if !party
  564.  
  565. if pkmn.species != wantedData[0] || pkmn.level < wantedData[1] ||
  566. pkmn.level > wantedData[2] ||
  567. (wantedData[3] != -1 && pkmn.gender != wantedData[3])
  568. Kernel.pbMessage(_INTL("The selected pokemon does not match the"+
  569. " wanted requirments."))
  570. else
  571. if GTS.finishTrade(pkmn, gpkmn, true, id)
  572. if party
  573. pbRemovePokemonAt(choice[1])
  574. else
  575. $PokemonStorage[choice[0]][choice[1]] = nil
  576. end
  577. pbSave
  578. return true
  579. end
  580. end
  581. end
  582. end
  583. end
  584. else
  585. @exit = true
  586. end
  587. end
  588. end
  589.  
  590. ########## GTS Wanted Data, shows a screen on which you can create wanted data
  591. class GTSWantedData
  592. def initialize
  593. @exit = false
  594. @wanted_data = [-1, 1, 100, -1]
  595. @index = 0
  596. end
  597.  
  598. def create_spriteset
  599. pbDisposeSpriteHash(@sprites) if @sprites
  600. @sprites = {}
  601.  
  602. @sprites["background"] = IconSprite.new
  603. @sprites["background"].setBitmap("Graphics/Pictures/GTS/Background")
  604.  
  605. pbSetSystemFont(@sprites["background"].bitmap)
  606. textpos=[
  607. ["Pokemon Wanted Data",50,6,0,Color.new(248,248,248),Color.new(40,40,40)],
  608. ["Online ID: #{$PokemonGlobal.onlineID.to_s.rjust(6, "0")}",400,6,2,Color.new(248,248,248),
  609. Color.new(40,40,40)],
  610. ]
  611. pbDrawTextPositions(@sprites["background"].bitmap,textpos)
  612.  
  613. @sprites["0"] = IconSprite.new
  614. @sprites["0"].setBitmap("Graphics/Pictures/GTS/Pokemon_bar")
  615. @sprites["0"].x = Graphics.width / 2
  616. @sprites["0"].x -= @sprites["0"].bitmap.width / 2
  617. @sprites["0"].y = 50
  618.  
  619. @sprites["0t"] = IconSprite.new
  620. @sprites["0t"].bitmap = Bitmap.new(@sprites["0"].bitmap.width,
  621. @sprites["0"].bitmap.height)
  622. @sprites["0t"].x = @sprites["0"].x
  623. @sprites["0t"].y = @sprites["0"].y
  624.  
  625. @sprites["1"] = IconSprite.new
  626. @sprites["1"].setBitmap("Graphics/Pictures/GTS/Gender_bar")
  627. @sprites["1"].x = Graphics.width / 2
  628. @sprites["1"].x -= @sprites["1"].bitmap.width / 2
  629. @sprites["1"].y = 110
  630.  
  631. @sprites["1t"] = IconSprite.new
  632. @sprites["1t"].bitmap = Bitmap.new(@sprites["1"].bitmap.width,
  633. @sprites["1"].bitmap.height)
  634. @sprites["1t"].x = @sprites["1"].x
  635. @sprites["1t"].y = @sprites["1"].y
  636.  
  637. @sprites["2"] = IconSprite.new
  638. @sprites["2"].setBitmap("Graphics/Pictures/GTS/Level_bar")
  639. @sprites["2"].x = Graphics.width / 2
  640. @sprites["2"].x -= @sprites["2"].bitmap.width / 2
  641. @sprites["2"].y = 170
  642.  
  643. @sprites["2t"] = IconSprite.new
  644. @sprites["2t"].bitmap = Bitmap.new(@sprites["2"].bitmap.width,
  645. @sprites["2"].bitmap.height)
  646. @sprites["2t"].x = @sprites["2"].x
  647. @sprites["2t"].y = @sprites["2"].y
  648.  
  649. @sprites["3"] = IconSprite.new
  650. @sprites["3"].setBitmap("Graphics/Pictures/GTS/Search_bar")
  651. @sprites["3"].x = Graphics.width / 2
  652. @sprites["3"].x -= @sprites["3"].bitmap.width / 2
  653. @sprites["3"].y = 230
  654.  
  655. @sprites["3t"] = IconSprite.new
  656. @sprites["3t"].bitmap = Bitmap.new(@sprites["3"].bitmap.width,
  657. @sprites["3"].bitmap.height)
  658. @sprites["3t"].x = @sprites["3"].x
  659. @sprites["3t"].y = @sprites["3"].y
  660.  
  661. @sprites["4"] = GTS_Button.new(Graphics.width/2, 290, "Back")
  662. @sprites["4"].x -= @sprites["4"].bitmap.width / 2
  663.  
  664. pbSetSystemFont(@sprites["0"].bitmap)
  665. textpos=[
  666. ["Pokemon You Want",50,0,0,Color.new(248,248,248),Color.new(40,40,40)],
  667. ]
  668. pbDrawTextPositions(@sprites["0"].bitmap,textpos)
  669.  
  670. pbSetSystemFont(@sprites["1"].bitmap)
  671. textpos=[
  672. ["Gender",75,0,0,Color.new(248,248,248),Color.new(40,40,40)],
  673. ]
  674. pbDrawTextPositions(@sprites["1"].bitmap,textpos)
  675.  
  676. pbSetSystemFont(@sprites["2"].bitmap)
  677. textpos=[
  678. ["Level Range",50,0,0,Color.new(248,248,248),Color.new(40,40,40)],
  679. ]
  680. pbDrawTextPositions(@sprites["2"].bitmap,textpos)
  681.  
  682. pbSetSystemFont(@sprites["3"].bitmap)
  683. textpos=[
  684. ["Search with these Conditions!",
  685. @sprites["3"].bitmap.width / 2, 2,2,Color.new(248,248,248),
  686. Color.new(40,40,40)],
  687. ]
  688. pbDrawTextPositions(@sprites["3"].bitmap,textpos)
  689.  
  690. bit = Bitmap.new("Graphics/Pictures/GTS/Select")
  691. @sprites["selection_l"] = IconSprite.new
  692. @sprites["selection_l"].bitmap = Bitmap.new(16, 46)
  693. @sprites["selection_l"].bitmap.blt(0, 0, bit, Rect.new(0, 0, 16, 16))
  694. @sprites["selection_l"].bitmap.blt(0, 23, bit, Rect.new(0, 16, 16, 32))
  695.  
  696. @sprites["selection_r"] = IconSprite.new
  697. @sprites["selection_r"].bitmap = Bitmap.new(16, 46)
  698. @sprites["selection_r"].bitmap.blt(0, 0, bit, Rect.new(16, 0, 32, 16))
  699. @sprites["selection_r"].bitmap.blt(0, 23, bit, Rect.new(16, 16, 32, 32))
  700.  
  701. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  702. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  703. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  704. @sprites["#{@index}"].bitmap.width-18
  705. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  706.  
  707. drawWantedData
  708. end
  709.  
  710. def drawWantedData
  711. @sprites["0t"].bitmap.clear
  712. s = "????"
  713. s = PBSpecies.getName(@wanted_data[0]) if @wanted_data[0] > 0
  714. pbSetSystemFont(@sprites["0t"].bitmap)
  715. textpos=[
  716. [s,350,4,2,Color.new(248,248,248),Color.new(40,40,40)],
  717. ]
  718. pbDrawTextPositions(@sprites["0t"].bitmap,textpos)
  719.  
  720. @sprites["1t"].bitmap.clear
  721. g = "Either"
  722. g = "Male" if @wanted_data[3] == 0
  723. g = "Female" if @wanted_data[3] == 1
  724. pbSetSystemFont(@sprites["1t"].bitmap)
  725. textpos=[
  726. [g,325,2,2,Color.new(248,248,248),Color.new(40,40,40)],
  727. ]
  728. pbDrawTextPositions(@sprites["1t"].bitmap,textpos)
  729.  
  730. @sprites["2t"].bitmap.clear
  731. lr = "#{@wanted_data[1]} To #{@wanted_data[2]}"
  732. pbSetSystemFont(@sprites["2t"].bitmap)
  733. textpos=[
  734. [lr,325,4,2,Color.new(248,248,248),Color.new(40,40,40)],
  735. ]
  736. pbDrawTextPositions(@sprites["2t"].bitmap,textpos)
  737. end
  738.  
  739. def main
  740. Graphics.freeze
  741. create_spriteset
  742. Graphics.transition
  743. loop do
  744. Graphics.update
  745. Input.update
  746. update
  747. break if @exit
  748. end
  749. Graphics.freeze
  750. pbDisposeSpriteHash(@sprites)
  751. return @wanted_data
  752. end
  753.  
  754. def update
  755. pbUpdateSpriteHash(@sprites)
  756.  
  757. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  758. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  759. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  760. @sprites["#{@index}"].bitmap.width-18
  761. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  762.  
  763. if Input.trigger?(Input::B)
  764. pbPlayCancelSE
  765. @wanted_data = -1
  766. @exit = true
  767. end
  768.  
  769. if Input.trigger?(Input::C)
  770. pbPlayDecisionSE
  771. do_command
  772. end
  773.  
  774. if Input.trigger?(Input::UP)
  775. @index -= 1
  776. if @index < 0
  777. @index = 4
  778. end
  779. end
  780. if Input.trigger?(Input::DOWN)
  781. @index += 1
  782. if @index > 4
  783. @index = 0
  784. end
  785. end
  786. end
  787.  
  788. def do_command
  789. if @index == 0
  790. msg = ""
  791. commands2 = ["Cancel"]
  792. if GTSSettings::SORT_MODE == "Alphabetical"
  793. sL = "A"
  794. for i in 0...26
  795. s = sL.clone
  796. s[0] += i
  797. commands2.push(s)
  798. end
  799. msg = "Choose a Letter."
  800. elsif GTSSettings::SORT_MODE == "Regional"
  801. dexNames = pbDexNames
  802. for i in dexNames
  803. if i.is_a?(String)
  804. name = i
  805. else
  806. name = i[0]
  807. end
  808. commands2.push(name)
  809. end
  810. msg = "Choose a Pokedex."
  811. end
  812. c2 = Kernel.pbMessage(msg, commands2, 0, nil, 1)
  813. if c2 > 0
  814. s = GTS.orderSpecies(commands2[c2])
  815. @wanted_data[0] = s[0] if s[0] > 0
  816. end
  817. elsif @index == 1
  818. cmds = ["Either", "Male", "Female"]
  819. @wanted_data[3] = Kernel.pbMessage("Which gender do you want", cmds,
  820. @wanted_data[3] + 1, nil, @wanted_data[3]+1) - 1
  821. elsif @index == 2
  822. params=ChooseNumberParams.new
  823. params.setRange(1,PBExperience::MAXLEVEL)
  824. params.setInitialValue(@wanted_data[1])
  825. params.setCancelValue(@wanted_data[1])
  826. @wanted_data[1]=Kernel.pbMessageChooseNumber(
  827. _INTL("Set the Minimum wanted level."),params)
  828. params=ChooseNumberParams.new
  829. params.setRange(1,PBExperience::MAXLEVEL)
  830. params.setInitialValue(@wanted_data[2])
  831. params.setCancelValue(@wanted_data[2])
  832. @wanted_data[2]=Kernel.pbMessageChooseNumber(
  833. _INTL("Set the Maximum wanted level."),params)
  834. elsif @index == 3
  835. if @wanted_data[0] > 0
  836. @exit = true
  837. else
  838. pbPlayCancelSE
  839. end
  840. elsif @index == 4
  841. @wanted_data = -1
  842. @exit = true
  843. end
  844. drawWantedData
  845. end
  846. end
  847.  
  848.  
  849. ########## Scene GTS Main GTS Functionality here.
  850. class Scene_GTS
  851. def initialize
  852. @index = 0
  853. @exit = false
  854. @uploaded = GTSCore.hasPokemonUploaded?
  855. end
  856.  
  857. def create_spriteset
  858. pbDisposeSpriteHash(@sprites) if @sprites
  859. @sprites = {}
  860. @sprites["background"] = IconSprite.new
  861. @sprites["background"].setBitmap("Graphics/Pictures/GTS/Background")
  862.  
  863. pbSetSystemFont(@sprites["background"].bitmap)
  864. textpos=[
  865. ["GTS",50,6,2,Color.new(248,248,248),Color.new(40,40,40)],
  866. ["Online ID: #{$PokemonGlobal.onlineID.to_s.rjust(6, "0")}",400,6,2,Color.new(248,248,248),
  867. Color.new(40,40,40)],
  868. ]
  869. pbDrawTextPositions(@sprites["background"].bitmap,textpos)
  870.  
  871. @sprites["0"] = GTS_Button.new(Graphics.width/2, 100, "Search")
  872. @sprites["0"].x -= @sprites["0"].bitmap.width / 2
  873.  
  874. t = "Deposit"
  875. t = "Summary" if @uploaded
  876.  
  877. @sprites["1"] = GTS_Button.new(Graphics.width/2, 200, t)
  878. @sprites["1"].x -= @sprites["1"].bitmap.width / 2
  879.  
  880. @sprites["2"] = GTS_Button.new(Graphics.width/2, 300, "Exit")
  881. @sprites["2"].x -= @sprites["2"].bitmap.width / 2
  882.  
  883. bit = Bitmap.new("Graphics/Pictures/GTS/Select")
  884. @sprites["selection_l"] = IconSprite.new
  885. @sprites["selection_l"].bitmap = Bitmap.new(16, 46)
  886. @sprites["selection_l"].bitmap.blt(0, 0, bit, Rect.new(0, 0, 16, 16))
  887. @sprites["selection_l"].bitmap.blt(0, 23, bit, Rect.new(0, 16, 16, 32))
  888.  
  889. @sprites["selection_r"] = IconSprite.new
  890. @sprites["selection_r"].bitmap = Bitmap.new(16, 46)
  891. @sprites["selection_r"].bitmap.blt(0, 0, bit, Rect.new(16, 0, 32, 16))
  892. @sprites["selection_r"].bitmap.blt(0, 23, bit, Rect.new(16, 16, 32, 32))
  893.  
  894. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  895. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  896. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  897. @sprites["0"].bitmap.width-18
  898. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  899.  
  900. end
  901.  
  902. def main
  903. Graphics.freeze
  904. create_spriteset
  905. @PreviousBGM = $game_system.getPlayingBGM
  906. pbMEStop()
  907. pbBGSStop()
  908. pbSEStop()
  909. pbBGMFade(2.0)
  910. pbBGMPlay("PU-Online",100,100)
  911. Graphics.transition
  912. loop do
  913. break if @exit
  914. Graphics.update
  915. Input.update
  916. update
  917. end
  918. pbBGMPlay(@PreviousBGM)
  919. pbDisposeSpriteHash(@sprites)
  920. GTS.close
  921. end
  922.  
  923. def update
  924. pbUpdateSpriteHash(@sprites)
  925. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  926. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  927. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  928. @sprites["0"].bitmap.width-18
  929. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  930.  
  931. if Input.trigger?(Input::UP)
  932. @index -= 1
  933. if @index < 0
  934. @index = 2
  935. end
  936. end
  937.  
  938. if Input.trigger?(Input::DOWN)
  939. @index += 1
  940. if @index > 2
  941. @index = 0
  942. end
  943. end
  944.  
  945. if Input.trigger?(Input::B)
  946. pbPlayCancelSE
  947. @exit = true
  948. end
  949.  
  950. if Input.trigger?(Input::C)
  951. pbPlayDecisionSE
  952. do_command
  953. end
  954.  
  955. end
  956.  
  957. def do_command
  958. if @index == 0
  959. Graphics.freeze
  960. scene = GTSSearchMethod.new
  961. @sprites["background"].dispose
  962. data = scene.main
  963. create_spriteset
  964. Graphics.transition
  965. elsif @index == 1
  966. if @uploaded
  967. GTS.summary
  968. @uploaded = GTSCore.hasPokemonUploaded?
  969. create_spriteset
  970. else
  971. pbFadeOutIn(99999){
  972. scene=PokemonStorageScene.new
  973. screen=PokemonStorageScreen.new(scene,$PokemonStorage)
  974. $choice = screen.pbChoosePokemon
  975. }
  976. choice = $choice
  977. return false if choice == nil
  978. pkmn = $Trainer.party[choice[1]]
  979. pkmn = $PokemonStorage[choice[0]][choice[1]] if choice[0] >= 0
  980. if choice[0] == -1
  981. if $Trainer.party.length == 1
  982. Kernel.pbMessage(_INTL("You cannot deposit your last pokemon in "+
  983. "your party!"))
  984. return
  985. end
  986. end
  987. Graphics.freeze
  988. scene = GTSWantedData.new
  989. @sprites["background"].dispose
  990. data = scene.main
  991. create_spriteset
  992. Graphics.transition
  993. if GTSCore.uploadPokemon(pkmn, data)
  994. $PokemonGlobal.onlinePokemon = pkmn.clone
  995. if choice[0] >= 0
  996. $PokemonStorage[choice[0]][choice[1]] = nil
  997. else
  998. pbRemovePokemonAt(choice[1])
  999. end
  1000. pbSave
  1001. @uploaded = true
  1002. create_spriteset
  1003. end
  1004. end
  1005. else
  1006. @exit = true
  1007. end
  1008. end
  1009. end
  1010.  
  1011. ########## Scene WT Main WONDERTRADE Functionality here.
  1012. class Scene_WONDERTRADE
  1013. def initialize
  1014. @index = 0
  1015. @exit = false
  1016. end
  1017.  
  1018. def create_spriteset
  1019. pbDisposeSpriteHash(@sprites) if @sprites
  1020. @sprites = {}
  1021. @sprites["background"] = IconSprite.new
  1022. @sprites["background"].setBitmap("Graphics/Pictures/GTS/WonderTrade")
  1023.  
  1024. pbSetSystemFont(@sprites["background"].bitmap)
  1025. textpos=[
  1026. ["Wonder Trade",90,6,2,Color.new(248,248,248),Color.new(40,40,40)],
  1027. ["Online ID: #{$PokemonGlobal.onlineID.to_s.rjust(6, "0")}",400,6,2,Color.new(248,248,248),
  1028. Color.new(40,40,40)],
  1029. ]
  1030. pbDrawTextPositions(@sprites["background"].bitmap,textpos)
  1031.  
  1032. @sprites["0"] = GTS_Button.new(Graphics.width/2, Graphics.height/2, "Wonder Trade!")
  1033. @sprites["0"].x -= @sprites["0"].bitmap.width / 2
  1034. @sprites["0"].y -= @sprites["0"].bitmap.height / 2
  1035.  
  1036. bit = Bitmap.new("Graphics/Pictures/GTS/Select")
  1037. @sprites["selection_l"] = IconSprite.new
  1038. @sprites["selection_l"].bitmap = Bitmap.new(16, 46)
  1039. @sprites["selection_l"].bitmap.blt(0, 0, bit, Rect.new(0, 0, 16, 16))
  1040. @sprites["selection_l"].bitmap.blt(0, 23, bit, Rect.new(0, 16, 16, 32))
  1041.  
  1042. @sprites["selection_r"] = IconSprite.new
  1043. @sprites["selection_r"].bitmap = Bitmap.new(16, 46)
  1044. @sprites["selection_r"].bitmap.blt(0, 0, bit, Rect.new(16, 0, 32, 16))
  1045. @sprites["selection_r"].bitmap.blt(0, 23, bit, Rect.new(16, 16, 32, 32))
  1046.  
  1047. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  1048. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  1049. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  1050. @sprites["0"].bitmap.width-18
  1051. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  1052.  
  1053. end
  1054.  
  1055. def main
  1056. Graphics.freeze
  1057. create_spriteset
  1058. @PreviousBGM = $game_system.getPlayingBGM
  1059. pbMEStop()
  1060. pbBGSStop()
  1061. pbSEStop()
  1062. pbBGMFade(2.0)
  1063. pbBGMPlay("PU-Online",100,100)
  1064. Graphics.transition
  1065. loop do
  1066. break if @exit
  1067. Graphics.update
  1068. Input.update
  1069. update
  1070. end
  1071. pbBGMPlay(@PreviousBGM)
  1072. pbDisposeSpriteHash(@sprites)
  1073. WONDERTRADE.close
  1074. end
  1075.  
  1076.  
  1077. def update
  1078. pbUpdateSpriteHash(@sprites)
  1079. @sprites["selection_l"].x = @sprites["#{@index}"].x-2
  1080. @sprites["selection_l"].y = @sprites["#{@index}"].y-2
  1081. @sprites["selection_r"].x = @sprites["#{@index}"].x+
  1082. @sprites["0"].bitmap.width-18
  1083. @sprites["selection_r"].y = @sprites["#{@index}"].y-2
  1084.  
  1085.  
  1086. if Input.trigger?(Input::B)
  1087. pbPlayCancelSE
  1088. @exit = true
  1089. end
  1090.  
  1091. if Input.trigger?(Input::C)
  1092. pbPlayDecisionSE
  1093. do_command
  1094. end
  1095.  
  1096. end
  1097.  
  1098. def to_pokemon
  1099. ret=Marshal.restore(Zlib::Inflate.inflate(unpack("m")[0]))
  1100. return ret
  1101. end
  1102.  
  1103. def do_command
  1104. pbFadeOutIn(99999){
  1105. scene=PokemonStorageScene.new
  1106. screen=PokemonStorageScreen.new(scene,$PokemonStorage)
  1107. $choice = screen.pbChoosePokemon
  1108. }
  1109. choice = $choice
  1110. return false if choice == nil
  1111. pkmn = $Trainer.party[choice[1]]
  1112. pkmn = $PokemonStorage[choice[0]][choice[1]] if choice[0] >= 0
  1113. if choice[0] == -1
  1114. if $Trainer.party.length == 1
  1115. Kernel.pbMessage(_INTL("You cannot wonder trade your last pokemon in "+
  1116. "your party!"))
  1117. return
  1118. end
  1119. end
  1120. Graphics.freeze
  1121. @sprites["background"].dispose
  1122. create_spriteset
  1123. Graphics.transition
  1124. if GTSCore.uploadPokemonWT(pkmn) #jv
  1125. $PokemonGlobal.onlinePokemon = pkmn.clone
  1126. pbSave
  1127. @uploaded = true
  1128. create_spriteset
  1129. list = GTSCore.getPokemonListWT
  1130. if list[0] == "nothing"
  1131. Kernel.pbMessage(_INTL("No Pokemon was found."))
  1132. else
  1133. if choice[0] >= 0
  1134. $PokemonStorage[choice[0]][choice[1]] = nil
  1135. else
  1136. pbRemovePokemonAt(choice[1])
  1137. end
  1138. newpokeID = list[(rand(list.length)-1)]
  1139. newpokeDATA = GTSCore.downloadPokemonWT(newpokeID).to_pokemon
  1140. WONDERTRADE.finishTradeWT(pkmn, newpokeDATA, newpokeID)
  1141. pbAddPokemonSilent(newpokeDATA)
  1142. GTSCore.deletePokemonWT(newpokeID,false)
  1143. pbSave
  1144. return true
  1145. end
  1146. end
  1147. end
  1148. end
  1149.  
  1150. ################################################################################
  1151. # GTS Summary Scenes
  1152. # By Hansiec
  1153. # Summary Modifications for GTS
  1154. ################################################################################
  1155.  
  1156. class PokemonSummary
  1157.  
  1158. def pbStartGTSScreen(party,partyindex)
  1159. @scene.pbStartScene(party,partyindex)
  1160. ret=@scene.pbGTSScene
  1161. @scene.pbEndScene
  1162. return ret
  1163. end
  1164.  
  1165. def pbStartGTSWantedScreen(party,partyindex)
  1166. @scene.pbStartGTSWantedScene(party)
  1167. ret=@scene.pbGTSWantedScene(party)
  1168. @scene.pbEndScene
  1169. return ret
  1170. end
  1171.  
  1172. end
  1173.  
  1174. class PokemonSummaryScene
  1175.  
  1176. def pbStartGTSWantedScene(wantedData)
  1177. @viewport=Viewport.new(0,0,Graphics.width,Graphics.height)
  1178. @viewport.z=99999
  1179. @party=nil
  1180. @partyindex=0
  1181. @pokemon=nil
  1182. @sprites={}
  1183. pk = PokeBattle_Pokemon.new(wantedData[0], 1)
  1184. @typebitmap=AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
  1185. @sprites["background"]=IconSprite.new(0,0,@viewport)
  1186. @sprites["overlay"]=BitmapSprite.new(Graphics.width,Graphics.height,@viewport)
  1187. @sprites["pokemon"]=PokemonSprite.new(@viewport)
  1188. @sprites["pokemon"].setPokemonBitmap(pk)
  1189. @sprites["pokemon"].mirror=false
  1190. @sprites["pokemon"].color=Color.new(0,0,0,0)
  1191. pbPositionPokemonSprite(@sprites["pokemon"],40,144)
  1192. @sprites["pokeicon"]=PokemonBoxIcon.new(pk,@viewport)
  1193. @sprites["pokeicon"].x=14
  1194. @sprites["pokeicon"].y=52
  1195. @sprites["pokeicon"].mirror=false
  1196. @sprites["pokeicon"].visible=false
  1197. @sprites["movepresel"]=MoveSelectionSprite.new(@viewport)
  1198. @sprites["movepresel"].visible=false
  1199. @sprites["movepresel"].preselected=true
  1200. @sprites["movesel"]=MoveSelectionSprite.new(@viewport)
  1201. @sprites["movesel"].visible=false
  1202. @page=0
  1203. drawPageOneGTSWanted(wantedData)
  1204. pbFadeInAndShow(@sprites) { pbUpdate }
  1205. end
  1206.  
  1207. def pbGTSScene
  1208. pbPlayCry(@pokemon)
  1209. loop do
  1210. Graphics.update
  1211. Input.update
  1212. pbUpdate
  1213. if Input.trigger?(Input::B)
  1214. if Kernel.pbConfirmMessage(_INTL("Stop looking for a pokemon?"))
  1215. return false
  1216. end
  1217. end
  1218. dorefresh=false
  1219. if Input.trigger?(Input::C)
  1220. if Kernel.pbConfirmMessage(_INTL("Is this the pokemon you want?"))
  1221. break
  1222. end
  1223. end
  1224. if Input.trigger?(Input::UP) && @partyindex>0
  1225. pbGoToPrevious
  1226. @pokemon=@party[@partyindex]
  1227. @sprites["pokemon"].setPokemonBitmap(@pokemon)
  1228. @sprites["pokemon"].color=Color.new(0,0,0,0)
  1229. pbPositionPokemonSprite(@sprites["pokemon"],40,144)
  1230. dorefresh=true
  1231. pbPlayCry(@pokemon)
  1232. end
  1233. if Input.trigger?(Input::DOWN) && @partyindex<@party.length-1
  1234. pbGoToNext
  1235. @pokemon=@party[@partyindex]
  1236. @sprites["pokemon"].setPokemonBitmap(@pokemon)
  1237. @sprites["pokemon"].color=Color.new(0,0,0,0)
  1238. pbPositionPokemonSprite(@sprites["pokemon"],40,144)
  1239. dorefresh=true
  1240. pbPlayCry(@pokemon)
  1241. end
  1242. if Input.trigger?(Input::LEFT) && !@pokemon.egg?
  1243. oldpage=@page
  1244. @page-=1
  1245. @page=0 if @page<0
  1246. @page=4 if @page>4
  1247. dorefresh=true
  1248. if @page!=oldpage # Move to next page
  1249. pbPlayCursorSE()
  1250. dorefresh=true
  1251. end
  1252. end
  1253. if Input.trigger?(Input::RIGHT) && !@pokemon.egg?
  1254. oldpage=@page
  1255. @page+=1
  1256. @page=0 if @page<0
  1257. @page=4 if @page>4
  1258. if @page!=oldpage # Move to next page
  1259. pbPlayCursorSE()
  1260. dorefresh=true
  1261. end
  1262. end
  1263. if dorefresh
  1264. case @page
  1265. when 0
  1266. drawPageOne(@pokemon)
  1267. when 1
  1268. drawPageTwo(@pokemon)
  1269. when 2
  1270. drawPageThree(@pokemon)
  1271. when 3
  1272. drawPageFour(@pokemon)
  1273. when 4
  1274. drawPageFive(@pokemon)
  1275. end
  1276. end
  1277. end
  1278. return @partyindex
  1279. end
  1280.  
  1281. def pbGTSWantedScene(wantedData)
  1282. pbPlayCry(wantedData[0])
  1283. loop do
  1284. Graphics.update
  1285. Input.update
  1286. pbUpdate
  1287. if Input.trigger?(Input::B)
  1288. if Kernel.pbConfirmMessage(_INTL("Decline this trade?"))
  1289. return false
  1290. end
  1291. end
  1292. dorefresh=false
  1293. if Input.trigger?(Input::C)
  1294. if Kernel.pbConfirmMessage(_INTL("Accept this trade?"))
  1295. return true
  1296. end
  1297. end
  1298. if dorefresh
  1299. drawPageOneGTSWanted(wantedData)
  1300. end
  1301. end
  1302. end
  1303.  
  1304. def drawPageOneGTSWanted(wantedData)
  1305. pokemon = PokeBattle_Pokemon.new(wantedData[0], 1)
  1306. overlay=@sprites["overlay"].bitmap
  1307. overlay.clear
  1308. bit = "Graphics/Pictures/summaryGTS"
  1309. bit = "Graphics/Pictures/summary1" if !pbResolveBitmap(bit)
  1310. g = "Either"
  1311. g = "Male" if wantedData[3] == 0
  1312. g = "Female" if wantedData[3] == 1
  1313. @sprites["background"].setBitmap(bit)
  1314. base=Color.new(248,248,248)
  1315. shadow=Color.new(104,104,104)
  1316. numberbase=Color.new(64,64,64)
  1317. numbershadow=Color.new(176,176,176)
  1318. pbSetSystemFont(overlay)
  1319. pokename = PBSpecies.getName(wantedData[0])
  1320. imagepos=[]
  1321. textpos=[
  1322. [_INTL("WANTED INFO"),26,16,0,base,shadow],
  1323. [_ISPRINTF("Dex No."),238,80,0,base,shadow],
  1324. [_ISPRINTF("{1:03d}",wantedData[0]),435,80,2,numberbase,numbershadow],
  1325. [_INTL("Species"),238,112,0,base,shadow],
  1326. [_INTL("{1}",pokename),435,112,2,Color.new(64,64,64),Color.new(176,176,176)],
  1327. [_INTL("Type"),238,144,0,base,shadow],
  1328. [_INTL("Level"),238,176,0,base,shadow],
  1329. [_INTL("{1} to {2}",wantedData[1], wantedData[2]),390,176,0,
  1330. Color.new(64,64,64),Color.new(176,176,176)],
  1331. [_INTL("Gender"),238,208,0,base,shadow],
  1332. [_INTL("{1}",g),435,208,2,Color.new(64,64,64),Color.new(176,176,176)],
  1333. ]
  1334. pbDrawTextPositions(overlay,textpos)
  1335. type1rect=Rect.new(0,pokemon.type1*28,64,28)
  1336. type2rect=Rect.new(0,pokemon.type2*28,64,28)
  1337. if pokemon.type1==pokemon.type2
  1338. overlay.blt(402,146,@typebitmap.bitmap,type1rect)
  1339. else
  1340. overlay.blt(370,146,@typebitmap.bitmap,type1rect)
  1341. overlay.blt(436,146,@typebitmap.bitmap,type2rect)
  1342. end
  1343. end
  1344. end
  1345.  
  1346. ################################################################################
  1347. # GTS Core
  1348. # By Hansiec
  1349. # Core GTS functions (Basically this is what you need to make a complete GTS
  1350. # system)
  1351. ################################################################################
  1352.  
  1353. module GTSCore
  1354.  
  1355. # Tests connection to the server (not used anymore but kept for possible use)
  1356. def self.testConnection
  1357. x = execute("test")
  1358. return x != ""
  1359. rescue
  1360. return false
  1361. end
  1362.  
  1363. # Our main execution method, since I'm too lazy to write GTSSettings::URL a lot
  1364. def self.execute(action, data={})
  1365. data["action"]=action
  1366. return pbPostData(GTSSettings::URL, data)
  1367. end
  1368.  
  1369. # gets a new online ID from the server
  1370. def self.getOnlineID
  1371. r = execute("getOnlineID")
  1372. return r.to_i
  1373. end
  1374.  
  1375. # registers our new online ID to the server
  1376. def self.setOnlineID(id)
  1377. r = execute("setOnlineID", {"id" => id})
  1378. ret = r == "success"
  1379. print "GTS Error: #{r}" if !ret && $DEBUG
  1380. return ret
  1381. end
  1382.  
  1383. # checks whether you have a pokemon uploaded in the server
  1384. def self.hasPokemonUploaded?(id=$PokemonGlobal.onlineID)
  1385. r = execute("hasPokemonUploaded", {"id" => id})
  1386. e = !(r == "yes" || r == "no")
  1387. print "GTS Error: #{r}" if e && $DEBUG
  1388. return r == "yes"
  1389. end
  1390.  
  1391. # sets the pokemon with the given online ID to taken
  1392. def self.setTaken(id)
  1393. r = execute("setTaken", {"id" => id})
  1394. e = !r == "success"
  1395. print "GTS Error: #{r}" if e && $DEBUG
  1396. return r == "success"
  1397. end
  1398.  
  1399. # checks wether the pokemon with the give online ID is taken
  1400. def self.isTaken(id=$PokemonGlobal.onlineID)
  1401. r = execute("isTaken", {"id" => id})
  1402. e = !(r == "yes" || r == "no")
  1403. print "GTS Error: #{r}" if e && $DEBUG
  1404. return r == "yes"
  1405. end
  1406.  
  1407. # uploads a pokemon to the server
  1408. def self.uploadPokemon(pokemon, *wantedData)
  1409. if wantedData[0].is_a?(Array)
  1410. wantedData = wantedData[0]
  1411. end
  1412. pokemon.game_code = GTSSettings::GAME_CODE
  1413. r = execute("uploadPokemon", {"id" => $PokemonGlobal.onlineID,
  1414. "pokemon" => pokemon, "species" => pokemon.species,"level" => pokemon.level,
  1415. "gender" => pokemon.gender, "Wspecies" => wantedData[0],
  1416. "WlevelMin" => wantedData[1], "WlevelMax" => wantedData[2],
  1417. "Wgender" => wantedData[3]})
  1418. ret = r == "success"
  1419. print "GTS Error: #{r}" if !ret && $DEBUG
  1420. return ret
  1421. end
  1422.  
  1423. def self.uploadPokemonWT(pokemon) #jv, Wonder Trade
  1424. pokemon.game_code = GTSSettings::GAME_CODE
  1425. r = execute("uploadPokemonWT", {"id" => $PokemonGlobal.onlineID,
  1426. "pokemon" => pokemon})
  1427. ret = r == "success"
  1428. print "GTS Error: #{r}" if !ret && $DEBUG
  1429. return ret
  1430. end
  1431.  
  1432. # uploads the newly traded pokemon to the given online ID to the server
  1433. def self.uploadNewPokemon(id, pokemon)
  1434. pokemon.game_code = GTSSettings::GAME_CODE
  1435. r = execute("uploadNewPokemon", {"id" => id, "pokemon" => pokemon})
  1436. ret = r == "success"
  1437. print "GTS Error: #{r}" if !ret && $DEBUG
  1438. return ret
  1439. end
  1440.  
  1441. # downloads a pokemon string with the given online ID
  1442. def self.downloadPokemon(id)
  1443. r = execute("downloadPokemon", {"id" => id})
  1444. ret = r != ""
  1445. print "GTS Error: #{r}" if !ret && $DEBUG
  1446. return ret ? r : false
  1447. end
  1448.  
  1449. # downloads a pokemon string with the given online ID ##Wonder trade #JV
  1450. def self.downloadPokemonWT(index)
  1451. r = execute("downloadPokemonWT", {"index" => index})
  1452. ret = r != ""
  1453. print "GTS Error: #{r}" if !ret && $DEBUG
  1454. return ret ? r : false
  1455. end
  1456.  
  1457. # downloads the wanted data with the given online ID
  1458. def self.downloadWantedData(id)
  1459. r = execute("downloadWantedData", {"id" => id})
  1460. ret = r != ""
  1461. print "GTS Error: #{r}" if !ret && $DEBUG
  1462. return ret ? r.split(",") : false
  1463. end
  1464.  
  1465. # deletes your current pokemon from the server
  1466. def self.deletePokemon(withdraw = true)
  1467. r = execute("deletePokemon", {"id" => $PokemonGlobal.onlineID,
  1468. "withdraw" => withdraw ? "y" : "n"})
  1469. ret = r == "success"
  1470. print "GTS Error: #{r}" if !ret && $DEBUG
  1471. return ret
  1472. end
  1473.  
  1474. # deletes your current pokemon from the server ##Wonder Trade #JV
  1475. def self.deletePokemonWT(newpoke,withdraw = true)
  1476. r = execute("deletePokemonWT", {"index" => newpoke,
  1477. "withdraw" => withdraw ? "y" : "n"})
  1478. ret = r == "success"
  1479. print "GTS Error: #{r}" if !ret && $DEBUG
  1480. return ret
  1481. end
  1482.  
  1483. # gets a list of online IDs where the wanted data match up
  1484. def self.getPokemonList(*wantedData)
  1485. if wantedData[0].is_a?(Array)
  1486. wantedData = wantedData[0]
  1487. end
  1488. r = execute("getPokemonList", {"id" => $PokemonGlobal.onlineID,
  1489. "species" => wantedData[0], "levelMin" => wantedData[1],
  1490. "levelMax" => wantedData[2], "gender" => wantedData[3]})
  1491. return [r] if r == "nothing"
  1492. if (r.include?("/,,,/"))
  1493. return r.split("/,,,/")
  1494. else
  1495. return r.split(",")
  1496. end
  1497. end
  1498.  
  1499. # gets a list with ALL pokemon with different IDs Wonder Trade, JV
  1500. def self.getPokemonListWT
  1501. r = execute("getPokemonListWT", {"id" => $PokemonGlobal.onlineID})
  1502. return [r] if r == "nothing"
  1503. if (r.include?("/,,,/"))
  1504. return r.split("/,,,/")
  1505. else
  1506. return r.split(",")
  1507. end
  1508. end
  1509.  
  1510. # Reverse Lookup pokemon
  1511. def self.getPokemonListFromWanted(pokemon)
  1512. r = execute("getPokemonListFromWanted", {"id" => $PokemonGlobal.onlineID,
  1513. "species" => pokemon.species, "level" => pokemon.level,
  1514. "gender" => pokemon.gender})
  1515. return [r] if r == "nothing"
  1516. if (r.include?("/,,,/"))
  1517. return r.split("/,,,/")
  1518. else
  1519. return r.split(",")
  1520. end
  1521. end
  1522.  
  1523. # installs the MYSQL tables in the server
  1524. def self.install
  1525. return execute("createTables")
  1526. end
  1527. end
  1528.  
  1529. ################################################################################
  1530. # Addons
  1531. # By Hansiec (pokemon to string and string to pokemon based from Maruno's
  1532. # MysteryGift packer/unpacker)
  1533. # Addons to other scripts
  1534. ################################################################################
  1535. class PokemonGlobalMetadata
  1536. attr_accessor :onlineID
  1537. attr_accessor :onlinePokemon
  1538. attr_accessor :keepGTS
  1539.  
  1540. alias gts_initialize initialize
  1541. # Keep your old online ID when doing newgame to prevent "spamming" the server
  1542. def initialize
  1543. gts_initialize
  1544. save = RTP.getSaveFileName("Uranium.rxdata")
  1545. if FileTest.exist?(save)
  1546. file = File.open(save, "rb")
  1547. Marshal.load(file)
  1548. Marshal.load(file)
  1549. Marshal.load(file)
  1550. Marshal.load(file)
  1551. Marshal.load(file)
  1552. Marshal.load(file)
  1553. Marshal.load(file)
  1554. Marshal.load(file)
  1555. Marshal.load(file)
  1556. Marshal.load(file)
  1557. Marshal.load(file)
  1558. pg = Marshal.load(file)
  1559. file.close
  1560. @onlineID = pg.rawOnlineID
  1561. end
  1562. @keepGTS = false
  1563. end
  1564.  
  1565. def onlineID
  1566. if @onlineID == nil
  1567. id = GTSCore.getOnlineID
  1568. if id == 0
  1569. raise("GTS Error: Cannot get Online ID for GTS!")
  1570. end
  1571. if !GTSCore.setOnlineID(id)
  1572. raise("GTS Error: Cannot get Online ID for GTS!")
  1573. end
  1574. @onlineID = id
  1575. end
  1576. return @onlineID
  1577. end
  1578.  
  1579. # The rawOnlineID doesn't have the checksum to get a new ID, this is used for
  1580. # when you do new game.
  1581. def rawOnlineID
  1582. if @onlineID
  1583. return @onlineID
  1584. else
  1585. return nil
  1586. end
  1587. end
  1588. end
  1589.  
  1590. # Add a game_code field and to_s method to the pokemon class
  1591. class PokeBattle_Pokemon
  1592. attr_accessor :game_code
  1593. def to_s
  1594. ret=[Zlib::Deflate.deflate(Marshal.dump(self))].pack("m")
  1595. return ret
  1596. end
  1597. end
  1598.  
  1599. # Add a to_pokemon method to the string class
  1600. class String
  1601. def to_pokemon
  1602. ret=Marshal.restore(Zlib::Inflate.inflate(unpack("m")[0]))
  1603. return ret
  1604. end
  1605. end
  1606.  
  1607. # Delete Pokemon if we began a newgame
  1608. alias pbSaveGTS pbSave
  1609. def pbSave(safesave=false)
  1610. if !$PokemonGlobal.keepGTS
  1611. if GTSCore.deletePokemon
  1612. $PokemonGlobal.keepGTS=true
  1613. end
  1614. end
  1615. pbSaveGTS(safesave)
  1616. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement