| Mas |
|
| Flag Counter |  |
| | | AKENDA - 1 Script de Agenda de Contactos | |
| | Autor | Mensaje |
|---|
kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: AKENDA - 1 Script de Agenda de Contactos Lun Jul 18, 2011 1:12 pm | |
| AKENDA Script de Agenda de Contactos Versión 0.3.0 por Kyonides-Arkanthos
No se ofrecen reembolsos! En realidad su funcionamiento para el nivel de un usuario común es muy simple. En un archivo de texto cuya extensión sea TXT, bueno .txt, Uds. anotan los datos de todos los amigos o enemigos del personaje o los personajes principales según lo hice yo en el archivo de ejemplo, vean los datos del Contenido del Archivo de Ejemplo debajo del script. Por cierto, sí hace falta digitar los datos en ese orden en específico. (Si creyeran que requieren de una ayuda para organizarlos los datos según el nombre o el número de ID, que en el ejemplo de aquí sería el número de 4 dígitos que está al inicio de cada renglón, pues, les puedo pasar un scriptlet específico para ordenar las entradas.)LO QUE SI TIENE- Con la Constante VARID se puede definir la única Variable que utilizarán para agregar a los amigos o enemigos.
- Se puede mantener y visualizar las listas para uno o más héroes por separado.
- No hace falta crear varias listas, solo se ocupa la principal como una especie de base de datos, de lo demás se encarga el script.
- Se puede empezar con cero amigos o enemigos e ir agregando a los que vaya conociendo uno por uno. Solo se ocupa definir cuál variable manejará el ID del amigo o enemigo (ID de la lista no del evento en el Maker) y nada más.
- Se puede ir bajando o subiendo en la lista o incluso se puede ir de inmediato al puro inicio o al puro final de la lista (siempre y cuando haya más de 5 contactos en la lista).
- Gráficos de los personajes que se mueven o se tornan grises en caso de ser seleccionados o de permanecer inactivos. (Depende de otro script que publiqué tiempo atrás, sería el del tema Prototipo Menú de Personajes en Movimiento con una ligerísima variante.)
Cómo se lo hace funcionar?En un llamado a script digiten: $scene = Akenda.new====== Para agregar a un amigo o enemigo solo hagan 1 de estas 2 cosas: Digiten en un llamado a script: $game_variables[numero_que_deseen_pero_solo_un_mismo_numero] = 14 ==== Ingresen en el evento y hagan clic para incluir un nuevo comando en el listado y luego en el control de Variables y elijan la opción que les permite fijar un único valor, por ejemplo 1478, y cierren al presionar en OK y guarden el evento. Si no quieren que más de un héroe sea amigo o enemigo de ese NPC, creen una nueva página de eventos y hagan que el evento cambie de página poco después de agregar sus datos a la lista de contactos del héroe (del líder del equipo en ese momento para ser más específico). ====== LO QUE ESTE SCRIPT AUN NO INCLUYEHay una razón muy específica para no haber dicho que es la versión 1.0.0 o algo por el estilo y es que no está terminado, mas es tan funcional como cualquier otro. Lo malo para Uds. es que carece de gráficos interesantes... Sin cooperación forera esa situación no va a poder cambiar jamás! Otras cosas por añadir... - Carece de un cursor...
- No hay modo de modificar el nivel de amistad o enemistad, pero sí se contempló esta variable en el script.
- No todos los datos están desplegados, de momento solo se ven el nombre, la edad y el número telefónico.
- Paciencia de parte del scripter
DESCARGA DE DEMO & SCRIPTLa plantilla para crear el archivo friends.txt que se requiere para poder crear la base de datos de amigos para la versión 0.3.0 ya viene incluida en el demo en una sección muy visible en el editor de scripts del Maker XP. COMPENDIO DE VERSIONES OBSOLETASVERSIÓN 0.2.5| Código: | # AKENDA # by Kyonides-Arkanthos # v 0.2.5 - 07/24/2011
module FriendsDB VARID = 0 WIDTH = 100 DBFILE = File.readlines('friends.txt') def self.make_list(index) dbfile = 'friends'+sprintf("%03d", index)+'.rxdata' friendsdb = self.check_file(dbfile) end
def self.check_file(dbfile) return {} if !File.exist?(dbfile) file = File.open(dbfile, 'rb') friendsdb = Marshal.load file file.close friendsdb end
def self.read_file(file) data = {} File.readlines(file).each do |fr| numbers = [0,2,3,5] info = fr.split(',') info.each {|d| i = info.index(d) info[i] = d.to_i if numbers.include?(i)} data[info[0]] = info[1..-1] end if File.exist?(file) data end
def self.add_friend(friend_id) actor_id = $game_party.actors[0].id allfriends = self.read_file('friends.txt') dbfile = 'friends'+sprintf("%03d", actor_id)+'.rxdata' friendsdb = self.check_file(dbfile) return if friendsdb.keys.include?(friend_id) friendsdb[friend_id] = allfriends[friend_id] if !friendsdb.empty? temp_ary = [] temp_ary.each {|v| friendsdb[v[0]] = v[1..(-1)]} friendsdb friendsdb.each {|k,v| temp_ary << [k, v].flatten} temp_ary.sort! {|x,y| x[0] <=> y[0]} hsh = {} temp_ary.each {|v| hsh[v[0]] = v[1..(-1)]} friendsdb = hsh end file = File.open(dbfile, 'wb') Marshal.dump friendsdb, file file.close end end
module RPG::Cache def self.face(filename) self.load_bitmap('Graphics/Faces/', filename) end end
module ColorsDB WHITE = Color.new(255, 255, 255, 255) YELLOW = Color.new(255, 255, 64, 255) SKYBLUE = Color.new(192, 224, 255, 255) GRAY = Color.new(255, 255, 255, 128) RED = Color.new(255, 64, 0) end
module SpriteAddOn def dispose self.bitmap.dispose if !self.bitmap.nil? super end end
class Game_Variables def []=(variable_id, value) return unless variable_id <= 5000 if variable_id == FriendsDB::VARID FriendsDB.add_friend(value) else @data[variable_id] = value end end end
class FriendsList attr_reader :names, :members attr_accessor :onscreen def initialize(file) @data = FriendsDB.make_list(file) @members, @ids, @names = [], [], [] return if @data.empty? @data.each do |id, data| @members << Friend.new(id, data) @ids << id @names << data[0] end @members.sort! {|x,y| x.name <=> y.name} end
def size; @data.keys.size end
def new_member(member, id=0) a_member = id == 0 ? member[0] : id @members << Friend.new(a_member, member[1..-1]) end
def old_member(member, id=0) a_member = id == 0 ? member[0] : id @members.delete member if @members.include?(a_member) end end
class Friend attr_reader :unique_id, :friendship, :name, :age, :phone, :photo, :home, :likes, :hates, :block def initialize(friend_id, data) @unique_id = friend_id.is_a?(Integer)? friend_id : false @friendship = 0 return if !@unique_id @name, @age, @phone, @photo, @friendship = data[0..4] @home, @likes, @hates, @block = data[5..8] end
def level=(units) (@friendship += units) if !@block; end
def block=(state) @block = state end end
class Sprite_FriendFace < Sprite include SpriteAddOn def initialize(viewport, char, x=0, y=0) super(viewport) @char, @y, @x = char, y, x update end
def update super if @picture_name != @char.photo && @char.photo != nil && @char.photo != '' @picture_name = @char.photo self.bitmap = RPG::Cache.face(@picture_name) end self.visible = @picture_name != '' return if !self.visible self.ox, self.oy, self.x, self.y, self.z = 0, 0, @x, 28 + @y, 200 end end
class Sprite_FriendInfo < Sprite include SpriteAddOn def initialize(viewport, friend, x=0, y=0, w=218) super(viewport) self.x, self.y, self.z, @w = x, y, 200, w self.bitmap = Bitmap.new(@w, 80) new_info(friend) end
def update self.bitmap.clear self.bitmap.font.color = ColorsDB::YELLOW self.bitmap.draw_text(0, 0, @w, 24, @name) self.bitmap.font.color = ColorsDB::WHITE self.bitmap.draw_text(0, 28, @w, 24, @age.to_s) self.bitmap.font.color = ColorsDB::SKYBLUE phone = @phone.to_s phone = sprintf("%3d-%4d", phone[0,3], phone[3,4]) self.bitmap.draw_text(0, 56, @w, 24, phone) end
def new_info(friend, x=false) self.x = x if x @name = friend.name || 'Desconocido' @age = friend.age || 0 @phone = friend.phone || 0000000 @photo = friend.photo || '001-Fighter01' @friendship = friend.friendship || 0 @home = friend.home || 'Ningún Lugar' @likes = friend.likes || ['Todo'] @hates = friend.hates || ['Todo'] update end end
class Scene_FriendsList MAX_LINES = 4 def main @party, @actors = $game_party.actors, $game_party.actors.dup @cells, @faces, @heroes, @heroes_sprites = [], [],[], [] @back, @pos = Sprite.new, 0 @back.bitmap = RPG::Cache.picture('background') MAX_LINES.times do |n| @cells << Sprite.new @cells.last.bitmap = RPG::Cache.picture('cell') @cells.last.x, @cells.last.y = 124, (n * 100) + 40 end @viewport = Viewport.new(0, 0, 640, 480) @viewport.z = 500 for i in 0...@party.size @heroes << Game_Hero.new(i) x, y = 14 + (32 * i), 52 sprite = Sprite_CharacterAnime.new(@viewport, @heroes[i], x, y) sprite.id = @party[i].id @heroes_sprites.push sprite end update_sprites_windows Graphics.transition loop do Graphics.update Input.update update break if $scene != self end Graphics.freeze @info.each {|info| info.dispose} @heroes_sprites.each {|s| s.dispose} @faces.each {|f| f.dispose} if !@faces.nil? @faces = @heroes = @heroes_sprites = nil @viewport.dispose @cells.each {|c| c.dispose} @back.dispose end def make_friends_list(actor) @friends = FriendsList.new(actor.id) @info.each {|info| info.dispose} if !@info.nil? @faces.each {|f| f.dispose} if !@faces.nil? @y, @info = -FriendsDB::WIDTH, []#@windows @contacts = @friends.members MAX_LINES.times do |n| break if n > @contacts.size-1 x = (n % 2 == 0)? 120 : 352 x2 = x == 120 ? 228 : 132 @info << Sprite_FriendInfo.new(@viewport,@contacts[n], x2, 44 + (n * 100)) @faces << Sprite_FriendFace.new(@viewport,@contacts[n], x, n * 100) end end
def update_sprites_windows @heroes_index = @party.index(@actors[0]) @heroes_sprites.each do |hero| hero.tone.gray = hero.id == @party[@heroes_index].id ? 0 : 255 hero.update end make_friends_list(@actors[0]) end def update_info_sprites @pos = @pos == 0 ? 2 : 0 @faces.each {|f| f.dispose} @faces.clear MAX_LINES.times do |n| x = ((@pos == 0 and n%2 == 0) or (@pos == 2 and n%2 != 0))? 120 : 352 x2 = x == 120 ? 228 : 132 @faces << Sprite_FriendFace.new(@viewport, @contacts[n], x, n * 100) @info[n].new_info(@contacts[n], x2) end end
def update @heroes[@heroes_index].update @heroes_sprites[@heroes_index].update if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new end if Input.trigger?(Input::L) $game_system.se_play($data_system.decision_se) @actors.unshift @actors.pop update_sprites_windows elsif Input.trigger?(Input::R) $game_system.se_play($data_system.decision_se) @actors.push @actors.shift update_sprites_windows end if @actors.size > 1 return if @contacts.nil? or @contacts.size < MAX_LINES + 1 if Input.trigger?(Input::UP) @contacts.unshift @contacts.pop update_info_sprites elsif Input.trigger?(Input::DOWN) @contacts.push @contacts.shift update_info_sprites end end end |
VERSIÓN 0.2.0
| Código: | # AKENDA # by Kyonides-Arkanthos # v 0.2.0 - 07/22/2011
module FriendsDB VARID = 0 DIGITS = 4 MAX_LINES = 5 def self.make_list(index) data, file = {}, 'friends'+sprintf("%03d", index)+'.txt' File.readlines(file).each do |fr| info = fr.scan(/([\w\s]+|\d+)/).flatten info.each {|d| (info[info.index(d)] = d.to_i) if d.match(/\d+/)} data[info[0]] = info[1..-1] end if File.exist?(file) data end
def self.add_friend(friend_id) actor_id = $game_party.actors[0].id temp_ary = [] maindbfile = File.readlines('friends.txt') maindbfile.each {|data| temp_ary << data[0, FriendsDB::DIGITS].to_i} if temp_ary.include?(friend_id) new_friend = maindbfile[temp_ary.index(friend_id)] temp_ary.clear herodbfile = 'friends'+sprintf("%03d", actor_id)+'.txt' if File.exist?(herodbfile) heros_friends = File.readlines(herodbfile) heros_friends.each {|data| temp_ary << data[0].to_s} else heros_friends = [] end heros_friends << new_friend if !temp_ary.include?(friend_id) return if temp_ary.include?(friend_id) heros_friends.sort! {|x, y| x[0] <=> y[0]} file = File.open(herodbfile,'w') file.puts heros_friends file.close end end end
class Game_Variables def []=(variable_id, value) return unless variable_id <= 5000 if variable_id == FriendsDB::VARID FriendsDB.add_friend(value) else @data[variable_id] = value end end end
class FriendsList attr_reader :names, :members attr_accessor :onscreen def initialize(file) @data = FriendsDB.make_list(file) @members, @ids, @names = [], [], [] @data.each do |id, data| @members << Friend.new(id, data) @ids << id @names << data[0] end @members.sort! {|x,y| x.name <=> y.name} end
def size; @data.keys.size end
def new_member(member, id=0) a_member = id == 0 ? member[0] : id @members << Friend.new(a_member, member[1..-1]) end
def old_member(member, id=0) a_member = id == 0 ? member[0] : id @members.delete member if @members.include?(a_member) end end
class Friend attr_reader :unique_id, :friendship, :name, :age, :phone, :photo, :block def initialize(friend_id, data) @unique_id = friend_id.is_a?(Integer)? friend_id : false @friendship = 0 return if !@unique_id @name, @age, @phone, @photo, @friendship, @block = data end
def level=(units) @friendship += units end
def block=(state) @block = state end end
class Window_Friend < Window_Base def initialize(friend=nil, y=-60) super(80, 88 + y, 380, 60) @name = friend.name || 'Desconocido' @age = friend.age || 0 @phone = friend.phone || 0000000 self.contents = Bitmap.new(width - 32, height - 32) refresh end
def refresh self.contents.clear #cx = contents.text_size(@name).width #cx = self.width / 2.5 if cx > self.width / 2.5 self.contents.font.color = crisis_color self.contents.draw_text(0, 0, 180, 28, @name[0,13]+'...')#0,0,cx self.contents.font.color = normal_color self.contents.draw_text(0, 0, 200, 28, @age.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(0, 0, 340, 28, @phone.to_s, 2) end
def new_info(friend) @name, @age, @phone = friend.name, friend.age, friend.phone refresh end end
class Window_Empty < Window_Base def initialize(y=-60) super(80, 88 + y, 380, 60) self.contents = Bitmap.new(width - 32, height - 32) end end
class Window_HeroName < Window_Base def initialize(name, x=170, y=20) super(x, y, 220, 60) @name = name self.contents = Bitmap.new(width - 32, height - 32) refresh end
def refresh self.contents.clear self.contents.font.color = crisis_color self.contents.draw_text(0, 0, 188, 28, @name, 1) end
def new_name=(name) @name = name; refresh end end
class Scene_FriendsList def main @party, @actors = $game_party.actors, $game_party.actors.dup @viewport = Viewport.new(0, 0, 640, 480) @viewport.z = 500 @heroes, @heroes_sprites = [], [] for i in 0...@party.size @heroes << Game_Hero.new(i) x, y = 32 + (44 * i), 64 sprite = Sprite_CharacterAnime.new(@viewport, @heroes[i], x, y) sprite.id = @party[i].id @heroes_sprites.push sprite end update_sprites_windows Graphics.transition loop do Graphics.update Input.update update break if $scene != self end Graphics.freeze @windows.each {|window| window.dispose} @current_hero.dispose @heroes_sprites.each {|s| s.dispose} @heroes = @heroes_sprites = nil @viewport.dispose end def make_friends_list(actor) if @current_hero.nil? @current_hero = Window_HeroName.new(actor.name, (640 - 220)/ 2) else @current_hero.new_name = actor.name end @friends = FriendsList.new(actor.id) @windows.each {|window| window.dispose} if !@windows.nil? @y, @windows = -60, [] if @friends.members.empty? FriendsDB::MAX_LINES.times {|n| @windows << Window_Empty.new(n * 60)} return end @contacts = @friends.members FriendsDB::MAX_LINES.times do |n| unless n > @contacts.size-1 @windows << Window_Friend.new(@contacts[n], @y += 60) else @windows << Window_Empty.new(n * 60) end end end
def update_sprites_windows @heroes_index = @party.index(@actors[0]) @heroes_sprites.each do |hero| hero.tone.gray = hero.id == @party[@heroes_index].id ? 0 : 255 hero.update end make_friends_list(@actors[0]) end
def update @heroes[@heroes_index].update @heroes_sprites[@heroes_index].update if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new end if Input.trigger?(Input::L) $game_system.se_play($data_system.decision_se) @actors.unshift @actors.pop update_sprites_windows elsif Input.trigger?(Input::R) $game_system.se_play($data_system.decision_se) @actors.push @actors.shift update_sprites_windows end if @actors.size > 1 return if @contacts.nil? or @contacts.size < @windows.size if Input.trigger?(Input::UP) @contacts.unshift @contacts.pop @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} elsif Input.trigger?(Input::DOWN) @contacts.push @contacts.shift @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} elsif Input.trigger?(Input::LEFT) @contacts.sort! {|x,y| x.name <=> y.name} @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} elsif Input.trigger?(Input::RIGHT) @contacts.sort! {|x,y| x.name <=> y.name} last5 = @contacts[-(@windows.size)..(-1)] @contacts = last5 + (@contacts - last5) @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} end end end |
VERSIÓN 0.1.0
| Código: | # AKENDA # by Kyonides-Arkanthos # v 0.1.0 - 07/18/2011
module FriendsDB VARID = 3 DIGITS = 4 MAX_LINES = 5 def self.make_list(index) data, file = {}, 'friends'+sprintf("%03d", index)+'.txt' File.readlines(file).each do |fr| info = fr.scan(/([\w\s]+|\d+)/).flatten info.each {|d| (info[info.index(d)] = d.to_i) if d.match(/\d+/)} data[info[0]] = info[1..-1] end if File.exist?(file) data end
def self.add_friend(friend_id) actor_id = $game_party.actors[0].id temp_ary = [] maindbfile = File.readlines('friends.txt') maindbfile.each {|data| temp_ary << data[0, FriendsDB::DIGITS].to_i} if temp_ary.include?(friend_id) new_friend = maindbfile[temp_ary.index(friend_id)] temp_ary.clear herodbfile = 'friends'+sprintf("%03d", actor_id)+'.txt' if File.exist?(herodbfile) heros_friends = File.readlines(herodbfile) heros_friends.each {|data| temp_ary << data[0].to_s} else heros_friends = [] end heros_friends << new_friend if !temp_ary.include?(friend_id) return if temp_ary.include?(friend_id) heros_friends.sort! {|x, y| x[0] <=> y[0]} file = File.open(herodbfile,'w') file.puts heros_friends file.close end end end
class Game_Variables def []=(variable_id, value) return unless variable_id <= 5000 if variable_id == FriendsDB::VARID FriendsDB.add_friend(value) else @data[variable_id] = value end end end
class FriendsList attr_reader :names, :members attr_accessor :onscreen def initialize(file) @data = FriendsDB.make_list(file) @members, @ids, @names = [], [], [] @data.each do |id, data| @members << Friend.new(id, data) @ids << id @names << data[0] end @members.sort! {|x,y| x.name <=> y.name} end
def size; @data.keys.size end
def new_member(member, id=0) a_member = id == 0 ? member[0] : id @members << Friend.new(a_member, member[1..-1]) end
def old_member(member, id=0) a_member = id == 0 ? member[0] : id @members.delete member if @members.include?(a_member) end end
class Friend attr_reader :unique_id, :friendship, :name, :age, :phone, :photo, :block def initialize(friend_id, data) @unique_id = friend_id.is_a?(Integer)? friend_id : false @friendship = 0 return if !@unique_id @name, @age, @phone, @photo, @friendship, @block = data end
def level=(units) @friendship += units end
def block=(state) @block = state end end
class Window_Friend < Window_Base def initialize(friend=nil, y=-60) super(80, 88 + y, 380, 60) @name = friend.name || 'Desconocido' @age = friend.age || 0 @phone = friend.phone || 0000000 self.contents = Bitmap.new(width - 32, height - 32) refresh end
def refresh self.contents.clear cx = contents.text_size(@name).width cx = 160 if cx > 160 self.contents.font.color = crisis_color self.contents.draw_text(0, 0, cx, 28, @name) self.contents.font.color = normal_color self.contents.draw_text(0, 0, 200, 28, @age.to_s, 2) self.contents.font.color = system_color self.contents.draw_text(0, 0, 340, 28, @phone.to_s, 2) end
def new_info(friend) @name, @age, @phone = friend.name, friend.age, friend.phone refresh end end
class Window_Empty < Window_Base def initialize(y=-60) super(80, 88 + y, 380, 60) self.contents = Bitmap.new(width - 32, height - 32) end end
class Window_HeroName < Window_Base def initialize(name, x=160, y=20) super(x, y, 240, 60) @name = name self.contents = Bitmap.new(width - 32, height - 32) refresh end
def refresh self.contents.clear self.contents.font.color = crisis_color self.contents.draw_text(0, 0, 208, 28, @name, 1) end
def new_name=(name) @name = name; refresh end end
class Scene_FriendsList def main @actors = $game_party.actors.dup make_friends_list(@actors[0]) Graphics.transition loop do Graphics.update Input.update update break if $scene != self end Graphics.freeze @windows.each {|window| window.dispose} @current_hero.dispose end def make_friends_list(actor) if @current_hero.nil? @current_hero = Window_HeroName.new(actor.name, (640 - 240)/ 2) else @current_hero.new_name = actor.name end @friends = FriendsList.new(actor.id) @windows.each {|window| window.dispose} if !@windows.nil? @y, @windows = -60, [] if @friends.members.empty? FriendsDB::MAX_LINES.times {|n| @windows << Window_Empty.new(n * 60)} return end @contacts = @friends.members FriendsDB::MAX_LINES.times do |n| unless n > @contacts.size-1 @windows << Window_Friend.new(@contacts[n], @y += 60) else @windows << Window_Empty.new(n * 60) end end end
def update if Input.trigger?(Input::B) $game_system.se_play($data_system.cancel_se) $scene = Scene_Map.new end if Input.trigger?(Input::L) $game_system.se_play($data_system.decision_se) @actors.unshift @actors.pop make_friends_list(@actors[0]) elsif Input.trigger?(Input::R) $game_system.se_play($data_system.decision_se) @actors.push @actors.shift make_friends_list(@actors[0]) end if @actors.size > 1 return if @contacts.nil? or @contacts.size < @windows.size if Input.trigger?(Input::UP) @contacts.unshift @contacts.pop @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} elsif Input.trigger?(Input::DOWN) @contacts.push @contacts.shift @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} elsif Input.trigger?(Input::LEFT) @contacts.sort! {|x,y| x.name <=> y.name} @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} elsif Input.trigger?(Input::RIGHT) @contacts.sort! {|x,y| x.name <=> y.name} last5 = @contacts[-(@windows.size)..(-1)] @contacts = last5 + (@contacts - last5) @windows.each {|w| w.new_info(@contacts[@windows.index(w)])} end end end |
CONTENIDO DEL ARCHIVO DE EJEMPLO PARA VERSIONES 0.2.5 E INFERIORES
1473,Akantha,20,4257892,006-Fighter06,0 2483,Geras,10,7458629,004-Fighter04,0 3845,Alguien,14,8249876,001-Fighter01,0 4576,Hypnos,8,7452481,001-Fighter01,0 7457,Aquel,18,8245781,001-Fighter01,0 8542,Nadie,16,8249542,001-Fighter01,0 8749,Imera,12,7454157,001-Fighter01,0 9999,Fantasma de la Opera,1000,0,001-Fighter01,0 6152,Jeanette,16,3844875,002-Fighter02,0
En el archivo friends.txt siempre recuerden dejar al final una línea vacía, o sea, sin ningún caracter. Recuerden eso, es lo único que podría hacer que algo saliera mínimamente mal.
Si utilizan la versión 0.2.0 en adelante, necesitarán este script de Prototipo de Menú de Personajes Moviéndose.
| Código: | # Prototipo de Menu con Personajes en Movimiento # por Kyonides-Arkanthos # 04.07.2010 class Window_Party < Window_MenuStatus def refresh self.contents.clear @item_max = $game_party.actors.size for i in 0...$game_party.actors.size x = 64 y = i * 116 actor = $game_party.actors[i] draw_actor_name(actor, x, y) draw_actor_class(actor, x + 144, y) draw_actor_level(actor, x, y + 32) draw_actor_state(actor, x + 90, y + 32) draw_actor_exp(actor, x, y + 64) draw_actor_hp(actor, x + 236, y + 32) draw_actor_sp(actor, x + 236, y + 64) end end end
class Game_Hero < Game_Character def initialize(index) super() @index = index # Character's Direction Change Timer : Integer @direction_count = Graphics.frame_rate * 3 set_character_graphic end
def update if @walk_anime @anime_count += 1.5 elsif @step_anime @anime_count += 1 end # If animation count exceeds maximum value # * Maximum value is move speed * 1 taken from basic value 18 if @anime_count > 18 - @move_speed * 2 # If stop animation is OFF when stopping if !@step_anime and @stop_count > 0 @pattern = @original_pattern else @pattern = (@pattern + 1) % 4 end @anime_count = 0 end (@direction_count -= 1; return) if @direction_count > 0 if @direction_count == 0 @direction = @direction < 8 ? @direction + 2 : 2 @direction_count = Graphics.frame_rate * 3 end return if @starting or lock? end
def refresh if $game_party.actors.size == 0 or @index > $game_party.actors.size-1 @character_name, @character_hue = '', 0 return end set_character_graphic @opacity, @blend_type = 255, 0 end
def set_character_graphic actor = $game_party.actors[@index] @character_name, @character_hue = actor.character_name, actor.character_hue end end
class Sprite_CharacterAnime < RPG::Sprite attr_accessor :character, :id def initialize(viewport, character=nil, x=16, y=48) super(viewport) @character, @tile_id = character, 0 self.x, self.y = x, y update end
def update super if @character_name != @character.character_name @character_name = @character.character_name @character_hue = @character.character_hue self.bitmap = RPG::Cache.character(@character.character_name, @character.character_hue) end @cw = bitmap.width / 4 @ch = bitmap.height / 4 self.ox = @cw / 2 self.oy = @ch self.visible = true sx = @character.pattern * @cw sy = (@character.direction - 2) / 2 * @ch self.src_rect.set(sx, sy, @cw, @ch) self.opacity = @character.opacity self.blend_type = @character.blend_type if @character.animation_id != 0 animation = $data_animations[@character.animation_id] animation(animation, true) @character.animation_id = 0 end end end |
Última edición por kyonides-arkanthos el Lun Ago 29, 2011 8:32 pm, editado 6 veces |
|  | | Super Shooter Diamante


Cantidad de envíos: 2415 Fecha de inscripción: 01/03/2010 Edad: 19 Localización: Top-Secret Proyecto: Super shooter Battle System
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Lun Jul 18, 2011 2:50 pm | |
| No digas que no hay cooperación forera, cuando necesites gráficos pídelos, hasta yo te ayudaría con ellos, sin mencionar que hay muchos otros que también lo harían.
Bueno yo estoy haciendo el script pero el mio es algo diferente a este ya que incluye tanto gráficos (rero rero) como una forma diferente de añadir la gente y otros datos y solo estará disponible es la tienda.
|
|  | | Ares Moderador


Cantidad de envíos: 1273 Fecha de inscripción: 08/07/2009 Edad: 82 Localización: en el baño Proyecto: Tales of elven
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Lun Jul 18, 2011 3:22 pm | |
| pon las medidas de los graficos y los colores ¬¬ porque no quiero que si le pongo un azul me diga que no porque es muy gay que mejor un morado dinosaurio.... y yo ayudo con los graficos ;D |
|  | | kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Lun Jul 18, 2011 5:33 pm | |
| @Ares Entonces puede hacerlos en varios tonos o colores y que el usuario escoja cuáles prefiere...
@Todos A partir de ahora doy inicio al "concurso", por llamarlo de alguna manera, para que los foreros con dotes de grafista o diseñador gráfico presenten sus propuestas sobre cómo debe de verse este script de AKENDA. |
|  | | Frikilangelo Moderador


Cantidad de envíos: 2317 Fecha de inscripción: 12/07/2009 Edad: 25 Localización: España
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Lun Jul 18, 2011 7:57 pm | |
| Bueno, ya hice lo que pedias =)
Lo unicoq ue yo em encuentro con el mismo problema que siempre... no tengo el maker aqui en el trabajo, asiq ue no peudo probar el script y ver que tiene para ver que se le peude poner (graficamente)
Pero si necesitas algo concreto aqui ando, que ahora mismo me estoy tomando un mini descanso con el CvO hasta que me hagan caso los del otro foro jajaja!!! _________________  |
|  | | kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Lun Jul 18, 2011 8:04 pm | |
| Pues de momento solo utiliza ventanas comunes y corrientes. Entre las cosas que he visto que puedo necesitar estàn un gràfico de fondo, un sìmbolo de telèfono para colocarlo antes de cada nùmero de telèfono, tanto en activo como en inactivo porque el personaje no tenga nùmero, un sìmbolo para hombre y otro para mujer y otro para no muerto y otro màs para monstruo comùn y tal vez algunos para niño y niña. No estarìa de màs un cursor decente o despampanante.
Igual si pueden dar ideas de còmo distribuir mejor toda la informaciòn del personaje, tanto la que se muestra desde un inicio como la que se verìa en una ventana nueva, no me quejarè, jejeje, rero. |
|  | | Ares Moderador


Cantidad de envíos: 1273 Fecha de inscripción: 08/07/2009 Edad: 82 Localización: en el baño Proyecto: Tales of elven
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Jue Jul 21, 2011 6:52 am | |
| osea que primero te mostramos digamos un boceto en imagen de la propuesta.... digamos no tiene que ser funcional si no una idea de colores imágenes iconos y distribución de información |
|  | | kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Jue Jul 21, 2011 6:36 pm | |
| Sì, eso podrìa servir de momento mientras màs gente define què opciones podrìa incorporar un script asì. |
|  | | kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Jue Jul 21, 2011 8:21 pm | |
| Publicada la VERSIÓN 0.2.0!!! @AresSì, eso podrìa servir de momento mientras màs gente define què opciones podrìa incorporar un script asì. |
|  | | jehyknaria Maestro Maker


Cantidad de envíos: 148 Fecha de inscripción: 13/03/2010 Localización: Canarias, España Proyecto: S E Y T A N
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Vie Jul 22, 2011 1:01 am | |
| A mí se me ocurre añadir una pequeña foto y un lugar dónde encontrarlo o dónde vive.
Se podría añadir eso en una nueva pantalla (tipo agenda de teléfono), primero seleccionándolo de la listo primero.
Bueno, esas son mis ideas después de estarlo probando. |
|  | | kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Vie Jul 22, 2011 10:17 pm | |
| Publicada la VERSIÓN 0.2.1!!! Esta versiòn ya contempla algunas de las cosas propuestas para la visualización del script para alegría de Uds., no tanto para mí, jejeje, rero. |
|  | | kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Sáb Jul 23, 2011 10:16 pm | |
| Publicada la VERSIÓN 0.2.5!!! En esta versiòn ya se ha contemplado más de las cosas propuestas para la visualización del script para alegría de Uds. y no tanto para mí como ya lo saben, jejeje, rero.  |
|  | | kyonides-arkanthos Lord Maker


Cantidad de envíos: 1224 Fecha de inscripción: 02/02/2010
 | Tema: Re: AKENDA - 1 Script de Agenda de Contactos Lun Ago 29, 2011 8:43 pm | |
| Bueno ya subí la versión 0.3.0 de AKENDA cuya principal misión es hacer las cosas un poco más simples. Es más, la cantidad de líneas de código disminuyó.
Ahora se agregan a los amigos o contactos haciendo que una variable del juego (alguna de $game_variables según la que Uds. definan en VARID) guarde el número del índice del contacto (como el primer o segundo contacto que Uds. digitaron en su plantilla y así sucesivamente). Lo demás pasará automáticamente.
Recuerden que si no quieren que su líder del equipo sea el que haga una nueva amistad sino que lo haga otro de sus héroes, deberán cambiarlo por ese otro héroe antes de que hablen con quien pueda ser su nuevo amigo.
Incluye en una sección del editor de scripts el nuevo formato de la plantilla y un breve comentario sobre su uso, que ahora debería de ser mucho más fácil de leer.
No olviden mover el archivo friends.txt, que en este caso sería su plantilla, a otra parte una vez que ya estén listos para distribuir sus proyectos. Aun si lo olvidaran antes de distribuirlo, ningún cambio que los jugadores hicieran en dicho archivo podría afectar la experiencia de jugar su proyecto. |
|  | | | | AKENDA - 1 Script de Agenda de Contactos | |
|
Temas similares |  |
|
| | Permiso de este foro: | No puedes responder a temas en este foro.
| |
| |
| |