Advertisement
warriortimmy

In-Game Tutorial

Mar 12th, 2011
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 11.61 KB | None | 0 0
  1. =begin
  2.  
  3.   *** SCRIPT CREADO POR NEWOLD, FEBRERO-MARZO 2011, TRIPLE TRIAD 1.0 ***
  4.  
  5. =end
  6.  
  7. module Newold
  8. # ******************************************************************************
  9. # Este módulo se encarga de mostrar un tutorial in-game
  10. # ******************************************************************************
  11. module Tutorial
  12. # -----------------------------------------------------------------------------
  13. def showtutorial
  14.  
  15.  
  16. # ------------------------------------------------------------------------------
  17. # *** Textos a mostrar ***
  18. # ------------------------------------------------------------------------------
  19. @tutorial_help = []
  20.  
  21. @tutorial_help[0] = [
  22. # Imagen para mostrar
  23. "tt1",
  24. # Título
  25. "Introducción",
  26. # Contenido
  27. "Este juego se origina en naipes del tarot modificados por el científico
  28. Orlan en la saga Final Fantasy.
  29. Los soldados solían jugar para matar el tiempo entre batallas.
  30. Al principio todas las cartas tenían le misma figura de un diablo,
  31. pero el juego se extendió y aumentó la variedad de cartas y reglas."
  32. ]
  33.  
  34. @tutorial_help[1] = [
  35. # Imagen para mostrar
  36. "tt2",
  37. # Título
  38. "Las cartas:",
  39. # Contenido
  40. "1) Figura
  41. 2) Valores
  42.  La carta tiene un valor diferente en cada borde.
  43.  Hay 10 valores; 1 es el menor y 'A' el mayor.
  44. 3) Elemento
  45.  Afinidad elemental de la carta, que según las reglas puede afectar
  46.  su fuerza en el juego."
  47. ]
  48.  
  49. @tutorial_help[2] = [
  50. # Imagen para mostrar
  51. "tt3",
  52. # Título
  53. "Campo de batalla:",
  54. # Contenido
  55. "1) Campo de batalla
  56.  Aquí se van colocando las cartas, una a una.
  57. 2) Elemento
  58.  Según las reglas en uso algunas casillas pueden mostrar su afinidad elemental."
  59. ]
  60.  
  61. @tutorial_help[3] = [
  62. # Imagen para mostrar
  63. "tt4",
  64. # Título
  65. "Reglas básicas:",
  66. # Contenido
  67. "Si al colocar una carta su valor supera en un borde a una carta adyacente
  68. del rival, ésta da la vuelta y cambia de color.
  69. Se juega por turnos hasta ocupar las nueve casillas y gana quien ha dado la
  70. vuelta a más cartas.
  71.  
  72. Nota: Pulsando los botones 'Y' y 'Z' puedes ver las reglas en uso"
  73. ]
  74.  
  75. @tutorial_help[4] = [
  76. # Imagen para mostrar
  77. "tt5",
  78. # Título
  79. "Elección de cartas:",
  80. # Contenido
  81. "Antes de comenzar la partida, se eligen las 5 cartas a utilizar.
  82. Se debe prestar atención a su valor y a su afinidad elemental.
  83. Si la regla 'Random' está activa, las cartas se eligirán aleatoriamente.
  84. En el modo de seleción manual, usa las direcciones para seleccionar las
  85. cartas y los botones 'L' y 'R' para cambiar la página activa
  86.  
  87. 1) Nombre de la carta
  88. 2) Cantidad que se posee
  89. 3) Carta seleccionada
  90. 4) Número de página"
  91. ]
  92.  
  93. @tutorial_help[5] = [
  94. # Imagen para mostrar
  95. "tt6",
  96. # Título
  97. "Regla 'Igual':",
  98. # Contenido
  99. "Según la regla igual, si se coloca una carta con dos o mas bordes cuyos
  100. valores igualan lo de cartas adyacentes del rival,
  101. éstas ultimas darán la vuelta.
  102. En la figura, la carta colocada iguala en 4 a la de arriba y en 1 a
  103. la de la izquierda, y por lo tanto las dos cartas rojas darán la vuelta."
  104. ]
  105.  
  106. @tutorial_help[6] = [
  107. # Imagen para mostrar
  108. "tt7",
  109. # Título
  110. "Regla 'Suma':",
  111. # Contenido
  112. "Según la regla suma, si se coloca una carta con dos o más bordes cuyos
  113. valores den el mismo resultado sumados a los de cartas adyacentes del rival,
  114. éstas últimas darán la vuelta.
  115. En la figura, la carta colocada suma por la parte de arriba 3 + 4 y por
  116. la parte izquierda 2 + 5, en las dos partes suma 7, por lo que dará
  117. la vuelta a dos cartas."
  118. ]
  119.  
  120. @tutorial_help[7] = [
  121. # Imagen para mostrar
  122. "tt8",
  123. # Título
  124. "Regla 'Combo':",
  125. # Contenido
  126. "Según la regla combo, las cartas que han dado la vuelta a causa de la
  127. regla igual o suma actúan como si acabaran de ser puestas, y pueden dar
  128. la vuelta a otras cartas.
  129. En la figura, las dos cartas azules acaban de dar la vuelta, y la de arriba
  130. dará la vuelta a la roja por superarla en valor."
  131. ]
  132.  
  133. @tutorial_help[8] = [
  134. # Imagen para mostrar
  135. "tt9",
  136. # Título
  137. "Regla 'Pared':",
  138. # Contenido
  139. "La regla especial pared consiste en utilizar la pared (borde exterior)
  140. del campo de batalla como si fuera un borde de casta a los efectos de la
  141. regla igual. A la pared se le asigna el valor 'A'.
  142.  
  143. Nota: A veces puede estar presente la regla 'Pared' + 'Suma'."
  144. ]
  145.  
  146. @tutorial_help[9] = [
  147. # Imagen para mostrar
  148. "tt10",
  149. # Título
  150. "Regla 'Elemental':",
  151. # Contenido
  152. "Según la regla especial elemental, los valores de las cartas varían
  153. de acuerdo a su afinidad elemental.
  154. Si una carta ocupa una casilla de su mismo elemento, sus valores de ataque
  155. aumentan en 1 punto.
  156. Por el contrario, si los elementos no coinciden, sus valores de ataque
  157. disminuirán en 1 punto."
  158. ]
  159.  
  160. @tutorial_help[11] = [
  161. # Imagen para mostrar
  162. nil,
  163. # Título
  164. "Otras reglas especiales:",
  165. # Contenido
  166. "- Abierto
  167.  Las cartas a utilizar están a la vista desde el principio.
  168. - Mano mezclada
  169.  Las cartas a utilizar son elegidas al azar.
  170. - Hasta la muerte
  171.  En caso de empate, comienza de inmediato otra partida.
  172. - Combo Extend
  173.  Las paredes pueden efectuar combos.
  174. - Check All Cards
  175.  Las reglas Igual, Suma o pared pueden ser cumplidas evaluando cualquier
  176.  carta adyacente a la jugada"
  177. ]
  178.  
  179. @tutorial_help[12] = [
  180. # Imagen para mostrar
  181. nil,
  182. # Título
  183. "Reglas de pago:",
  184. # Contenido
  185. "Cuando termina la partida, el perdedor debe pagar una cantidad de cartas al
  186. ganador. La cantidad de cartas a pagar se designa por la regla de pago activa.
  187.  
  188. - Una
  189.  Ésta es la regla básica de pago y consiste en la entrega de una de
  190.  las cartas que el perdedor a utilizado en la partida, a elección del ganador.
  191. - Directo
  192.  El jugador recibe las cartas a las que ha dado la vuelta y pierde
  193.  aquellas a las que el adversario ha dado la vuelta.
  194. - Diferencia
  195.  El ganador elige, entre las cartas utilizadas por el rival en la partida,
  196.  una cantidad igual a la diferencia en cartas volteadas.
  197. - Todas
  198.  El ganador recibe todas las cartas utilizadas por el perdedor en la partida.
  199. - Ninguna
  200.  No se gana ni se pierden cartas jugando con la regla de pago 'Ninguna'"
  201. ]
  202.  
  203. @tutorial_help[12] = [
  204. # Imagen para mostrar
  205. nil,
  206. # Título
  207. nil,
  208. # Contenido
  209. "/cY eso sería todo lo que deberías de saber sobre las reglas
  210. /cdel juego Triple Triad."
  211. ]
  212. # ------------------------------------------------------------------------------
  213.  
  214.  
  215. # ------------------------------------------------------------------------------
  216. # *** Inicio del tutorial ***
  217. # ------------------------------------------------------------------------------
  218. Audio.bgm_stop
  219. Graphics.transition(8)
  220. Audio.se_play("CardsGame/tutorial/fx",100)
  221. draw_text_action("TUTORIAL")
  222. for i in 0...30
  223.   if i == 15
  224.     Audio.bgm_play("CardsGame/tutorial/Original Triple Triad",85)
  225.   end
  226.   if i >= 22
  227.     @textaction.x -= 25
  228.     @textaction.opacity -= 25
  229.   end
  230.   Graphics.update
  231. end
  232. @textaction.visible = false
  233. Graphics.freeze
  234. #Graphics.freeze
  235. #@textaction.visible = false
  236. #Graphics.transition(20)
  237. @frame = 0
  238. @maxframes = 5
  239. for i in 0...@tutorial_help.size
  240.   Graphics.update
  241.   Graphics.freeze
  242.   draw_help_tutorial(i)
  243.   @tutohelp.dispose if @tutohelp != nil
  244.   @bitmaptuto.dispose if @bitmaptuto != nil
  245. end
  246. draw_text_action("FIN DEL TUTORIAL")
  247. Graphics.freeze
  248. @textaction.visible = false
  249. Graphics.transition(55)
  250. # ------------------------------------------------------------------------------
  251.  
  252. end
  253. # -----------------------------------------------------------------------------
  254.  
  255. # -----------------------------------------------------------------------------
  256. def draw_help_tutorial(id = 0)
  257.   return if @tutorial_help[id] == nil
  258.   # Recopilación de datos
  259.   title = @tutorial_help[id][1]
  260.   imaname = @tutorial_help[id][0]
  261.   content = @tutorial_help[id][2].split("\n")
  262.   if imaname != nil
  263.     @bitmaptuto = Sprite.new
  264.     @bitmaptuto.bitmap = Bitmap.new("CardsGame/tutorial/#{imaname}")
  265.     @bitmaptuto.x = 320 - (@bitmaptuto.bitmap.width / 2)
  266.     @bitmaptuto.y = 460 - @bitmaptuto.bitmap.height
  267.     mod_y = true
  268.   elsif @bitmaptuto != nil
  269.     @bitmaptuto.bitmap.clear
  270.     mod_y = false
  271.   end
  272.   b = Bitmap.new(1,1)
  273.   b.font.size = 18
  274.   w = 600
  275.   h = b.text_size(content[0]).height
  276.   h_real = (h*content.size) + 24 + h - (title == nil ? h : 0)
  277.   color1 = Color.new(0,0,0,255)
  278.   color1b = Color.new(35,2,2,255)
  279.   color2 = Color.new(255,255,255,255)
  280.   color3 = Color.new(227,179,11,255)
  281.   color4 = Color.new(11,199,227,255)
  282.   data_pos = [[1,0],[-1,0],[0,1],[0,-1],[0,2]]
  283.   # Creando la imagen
  284.   if @tutohelp == nil or @tutohelp.disposed?
  285.     @tutohelp = Sprite.new
  286.     @tutohelp.z = 100000
  287.   else
  288.     @tutohelp.bitmap.clear
  289.   end
  290.   win = Bitmap.new("CardsGame/tutorial/win")
  291.   @tutohelp.bitmap = Bitmap.new(w,h_real)
  292.   @tutohelp.bitmap.stretch_blt(@tutohelp.bitmap.rect,win,win.rect)
  293.   @tutohelp.bitmap.font.size = 18
  294.   # Posicionarla en la pantalla
  295.   @tutohelp.x = 320 - (w/2)
  296.   if !mod_y
  297.     @tutohelp.y = 240 - (h_real/2)
  298.     @tutohelp.y = 0 if @tutohelp.y < 0
  299.   else
  300.     @tutohelp.y = 440 - @bitmaptuto.bitmap.height - @tutohelp.bitmap.height
  301.   end
  302.   #Añadiendo el contenido a la imagen
  303.   x = 10
  304.   @tutohelp.bitmap.font.color = color1
  305.   for i in 0...data_pos.size
  306.     y = 5
  307.     # Título
  308.     if title != nil and title != ''
  309.       x1 = x + data_pos[i][0]
  310.       y1 = y + data_pos[i][1]
  311.       @tutohelp.bitmap.draw_text(x1,y1,w-10,h,title)
  312.       y += h + 4
  313.     end
  314.     # Contenido
  315.     for j in 0...h*content.size
  316.       if content[j] != nil
  317.         x1 = data_pos[i][0] + x
  318.         y1 = y + data_pos[i][1]
  319.         if content[j][0,2] == '/c'
  320.           align = 1
  321.           text = content[j][2,content[j].size]
  322.         else
  323.           text = content[j]
  324.           align = 0
  325.         end
  326.         @tutohelp.bitmap.draw_text(x1,y1,w-10,h,text,align)
  327.       end
  328.       y += h
  329.     end
  330.   end
  331.   y = 5
  332.   # Título
  333.   if title != nil and title != ''
  334.     @tutohelp.bitmap.font.color = color4
  335.     @tutohelp.bitmap.draw_text(x,y,w-10,h,title)
  336.     @tutohelp.bitmap.fill_rect(0,h+7,w,1,color1)
  337.     @tutohelp.bitmap.fill_rect(0,h+8,w,1,color1b)
  338.     y += h + 4
  339.   end
  340.   # Contenido
  341.   for i in 0...h*content.size
  342.     if content[i] != nil
  343.       if content[i][0,1] == '-' or content[i][0,1][/\d/] != nil
  344.         color = color3
  345.       else
  346.         color = color2
  347.       end
  348.       if content[i][0,2] == '/c'
  349.         align = 1
  350.         text = content[i][2,content[i].size]
  351.       else
  352.         text = content[i]
  353.         align = 0
  354.       end
  355.       @tutohelp.bitmap.font.color = color
  356.       @tutohelp.bitmap.draw_text(x,y,w-10,h,text,align)
  357.     end
  358.     y += h
  359.   end
  360.   # Esperar a pulsar una tecla para continuar
  361.   Graphics.transition(8)
  362.   n = 0
  363.   loop do
  364.     Graphics.update
  365.     Input.update
  366.     minicardanimate if n % 3 == 0
  367.     n += 1
  368.     if n == 300
  369.       n = 0
  370.       Graphics.frame_reset
  371.     end
  372.     break if Input.trigger?(Input::C) or Input.trigger?(Input::B)
  373.   end
  374.   @minicard.dispose
  375. end
  376. # -----------------------------------------------------------------------------
  377.  
  378. # -----------------------------------------------------------------------------
  379. def minicardanimate
  380.   bitmap = Bitmap.new("CardsGame/tutorial/minicard")
  381.   if @minicard != nil
  382.     if !@minicard.disposed?
  383.       @minicard.bitmap.clear
  384.     end
  385.   end
  386.   @minicard = Sprite.new
  387.   @minicard.z = 200000
  388.   @minicard.bitmap = Bitmap.new(22,36)
  389.   @minicard.bitmap.blt(0,0,bitmap,Rect.new(@frame*22,0,22,36))
  390.   @minicard.x = 320 - (@minicard.bitmap.width / 2)
  391.   @minicard.y =  @tutohelp.bitmap.height + @tutohelp.y -
  392.     (@minicard.bitmap.height / 2)
  393.   @minicard.zoom_x = @minicard.zoom_y = 0.7
  394.   @frame += 1
  395.   @frame = 0 if @frame == @maxframes
  396. end
  397. # -----------------------------------------------------------------------------
  398. end
  399. # ******************************************************************************
  400. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement