设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 695|回复: 3
打印 上一主题 下一主题

[已经解决] 问个关于战斗中人物图片的问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2011-4-19
帖子
14
跳转到指定楼层
1
发表于 2013-9-15 13:26:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
RT, 战斗图的位置是在 game_actor.screen_x 里面设置 ,  但是不知道这个图片具体是什么时候调出来的,  Window_BattleStatus 里面好像也是没有这个的,  而 draw_actor_graphic 这个画图好像画的不是战斗中的图 。  我现在是需要在调用图片的时候加些处理, 希望大神指点下。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2011-4-19
帖子
14
2
 楼主| 发表于 2013-9-15 13:28:23 | 只看该作者
再问下, 有人把rgss里面一些内部的类库搞出来了吗?   例如RPG 想知道下里面方法的具体内容。
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
762
在线时间
1270 小时
注册时间
2011-2-14
帖子
5589
3
发表于 2013-9-15 13:35:43 | 只看该作者
这些是你要的RPG模块的代码
主楼的问题请调查Sprite_Battler这个脚本、我不需要多说话
RUBY 代码复制
  1. module RPG;class Map;def initialize(width, height);@tileset_id = 1;@width = width;[url=home.php?mod=space&uid=291977]@height[/url] = height;@autoplay_bgm = false;@bgm = RPG::AudioFile.new;@autoplay_bgs = false;@bgs = RPG::AudioFile.new('', 80);@encounter_list = [];@encounter_step = 30;@data = Table.new(width, height, 3);@events = {};end;attr_accessor :tileset_id;attr_accessor :width;attr_accessor :height;attr_accessor :autoplay_bgm;attr_accessor :bgm;attr_accessor :autoplay_bgs;attr_accessor :bgs;attr_accessor :encounter_list;attr_accessor :encounter_step;attr_accessor :data;attr_accessor :events;end;class MapInfo;def initialize;@name = '';@parent_id = 0;@order = 0;@expanded = false;@scroll_x = 0;@scroll_y = 0;end;attr_accessor :name;attr_accessor :parent_id;attr_accessor :order;attr_accessor :expanded;attr_accessor :scroll_x;attr_accessor :scroll_y;end;class Event;def initialize(x, y);@id = 0;@name = '';@x = x;@y = y;@pages = [RPG::Event::Page.new];end;attr_accessor :id;attr_accessor :name;attr_accessor :x;attr_accessor :y;attr_accessor :pages;end;class Event;class Page;def initialize;@condition = RPG::Event::Page::Condition.new;@graphic = RPG::Event::Page::Graphic.new;@move_type = 0;@move_speed = 3;@move_frequency = 3;@move_route = RPG::MoveRoute.new;@walk_anime = true;@step_anime = false;@direction_fix = false;@through = false;@always_on_top = false;@trigger = 0;@list = [RPG::EventCommand.new];end;attr_accessor :condition;attr_accessor :graphic;attr_accessor :move_type;attr_accessor :move_speed;attr_accessor :move_frequency;attr_accessor :move_route;attr_accessor :walk_anime;attr_accessor :step_anime;attr_accessor :direction_fix;attr_accessor :through;attr_accessor :always_on_top;attr_accessor :trigger;attr_accessor :list;end;end;class Event;class Page;class Condition;def initialize;@switch1_valid = false;@switch2_valid = false;@variable_valid = false;@self_switch_valid = false;@switch1_id = 1;@switch2_id = 1;@variable_id = 1;@variable_value = 0;@self_switch_ch = 'A';end;attr_accessor :switch1_valid;attr_accessor :switch2_valid;attr_accessor :variable_valid;attr_accessor :self_switch_valid;attr_accessor :switch1_id;attr_accessor :switch2_id;attr_accessor :variable_id;attr_accessor :variable_value;attr_accessor :self_switch_ch;end;end;end;class Event;class Page;class Graphic;def initialize;@tile_id = 0;@character_name = '';@character_hue = 0;@direction = 2;@pattern = 0;[url=home.php?mod=space&uid=316553]@opacity[/url] = 255;@blend_type = 0;end;attr_accessor :tile_id;attr_accessor :character_name;attr_accessor :character_hue;attr_accessor :direction;attr_accessor :pattern;attr_accessor :opacity;attr_accessor :blend_type;end;end;end;class EventCommand;def initialize(code = 0, indent = 0, parameters = []);[url=home.php?mod=space&uid=10413]@code[/url] = code;@indent = indent;@parameters = parameters;end;attr_accessor :code;attr_accessor :indent;attr_accessor :parameters;end;class MoveRoute;def initialize;@repeat = true;@skippable = false;@list = [RPG::MoveCommand.new];end;attr_accessor :repeat;attr_accessor :skippable;attr_accessor :list;end;class MoveCommand;def initialize(code = 0, parameters = []);@code = code;@parameters = parameters;end;attr_accessor :code;attr_accessor :parameters;end;class Actor;def initialize;@id = 0;@name = '';@class_id = 1;@initial_level = 1;@final_level = 99;@exp_basis = 30;@exp_inflation = 30;@character_name = '';@character_hue = 0;@battler_name = '';@battler_hue = 0;@parameters = Table.new(6,100);for i in 1..99;@parameters[0,i] = 500+i*50;@parameters[1,i] = 500+i*50;@parameters[2,i] = 50+i*5;@parameters[3,i] = 50+i*5;@parameters[4,i] = 50+i*5;@parameters[5,i] = 50+i*5;end;@weapon_id = 0;@armor1_id = 0;@armor2_id = 0;@armor3_id = 0;@armor4_id = 0;@weapon_fix = false;@armor1_fix = false;@armor2_fix = false;@armor3_fix = false;@armor4_fix = false;end;attr_accessor :id;attr_accessor :name;attr_accessor :class_id;attr_accessor :initial_level;attr_accessor :final_level;attr_accessor :exp_basis;attr_accessor :exp_inflation;attr_accessor :character_name;attr_accessor :character_hue;attr_accessor :battler_name;attr_accessor :battler_hue;attr_accessor :parameters;attr_accessor :weapon_id;attr_accessor :armor1_id;attr_accessor :armor2_id;attr_accessor :armor3_id;attr_accessor :armor4_id;attr_accessor :weapon_fix;attr_accessor :armor1_fix;attr_accessor :armor2_fix;attr_accessor :armor3_fix;attr_accessor :armor4_fix;end;class Class;def initialize;@id = 0;@name = '';@position = 0;@weapon_set = [];@armor_set = [];@element_ranks = Table.new(1);@state_ranks = Table.new(1);@learnings = [];end;attr_accessor :id;attr_accessor :name;attr_accessor :position;attr_accessor :weapon_set;attr_accessor :armor_set;attr_accessor :element_ranks;attr_accessor :state_ranks;attr_accessor :learnings;end;class Class;class Learning;def initialize;[url=home.php?mod=space&uid=22147]@level[/url] = 1;@skill_id = 1;end;attr_accessor :level;attr_accessor :skill_id;end;end;class Skill;def initialize;@id = 0;@name = '';@icon_name = '';@description = '';@scope = 0;@occasion = 1;@animation1_id = 0;@animation2_id = 0;@menu_se = RPG::AudioFile.new('', 80);@common_event_id = 0;@sp_cost = 0;[url=home.php?mod=space&uid=28342]@power[/url] = 0;@atk_f = 0;@eva_f = 0;@str_f = 0;@dex_f = 0;@agi_f = 0;@int_f = 100;@hit = 100;@pdef_f = 0;@mdef_f = 100;@variance = 15;@element_set = [];@plus_state_set = [];@minus_state_set = [];end;attr_accessor :id;attr_accessor :name;attr_accessor :icon_name;attr_accessor :description;attr_accessor :scope;attr_accessor :occasion;attr_accessor :animation1_id;attr_accessor :animation2_id;attr_accessor :menu_se;attr_accessor :common_event_id;attr_accessor :sp_cost;attr_accessor :power;attr_accessor :atk_f;attr_accessor :eva_f;attr_accessor :str_f;attr_accessor :dex_f;attr_accessor :agi_f;attr_accessor :int_f;attr_accessor :hit;attr_accessor :pdef_f;attr_accessor :mdef_f;attr_accessor :variance;attr_accessor :element_set;attr_accessor :plus_state_set;attr_accessor :minus_state_set;end;class Item;def initialize;@id = 0;@name = '';@icon_name = '';@description = '';@scope = 0;@occasion = 0;@animation1_id = 0;@animation2_id = 0;@menu_se = RPG::AudioFile.new('', 80);@common_event_id = 0;@price = 0;@consumable = true;@parameter_type = 0;@parameter_points = 0;@recover_hp_rate = 0;@recover_hp = 0;@recover_sp_rate = 0;@recover_sp = 0;@hit = 100;@pdef_f = 0;@mdef_f = 0;@variance = 0;@element_set = [];@plus_state_set = [];@minus_state_set = [];end;attr_accessor :id;attr_accessor :name;attr_accessor :icon_name;attr_accessor :description;attr_accessor :scope;attr_accessor :occasion;attr_accessor :animation1_id;attr_accessor :animation2_id;attr_accessor :menu_se;attr_accessor :common_event_id;attr_accessor :price;attr_accessor :consumable;attr_accessor :parameter_type;attr_accessor :parameter_points;attr_accessor :recover_hp_rate;attr_accessor :recover_hp;attr_accessor :recover_sp_rate;attr_accessor :recover_sp;attr_accessor :hit;attr_accessor :pdef_f;attr_accessor :mdef_f;attr_accessor :variance;attr_accessor :element_set;attr_accessor :plus_state_set;attr_accessor :minus_state_set;end;class Weapon;def initialize;@id = 0;@name = '';@icon_name = '';@description = '';@animation1_id = 0;@animation2_id = 0;@price = 0;@atk = 0;@pdef = 0;@mdef = 0;@str_plus = 0;@dex_plus = 0;@agi_plus = 0;@int_plus = 0;@element_set = [];@plus_state_set = [];@minus_state_set = [];end;attr_accessor :id;attr_accessor :name;attr_accessor :icon_name;attr_accessor :description;attr_accessor :animation1_id;attr_accessor :animation2_id;attr_accessor :price;attr_accessor :atk;attr_accessor :pdef;attr_accessor :mdef;attr_accessor :str_plus;attr_accessor :dex_plus;attr_accessor :agi_plus;attr_accessor :int_plus;attr_accessor :element_set;attr_accessor :plus_state_set;attr_accessor :minus_state_set;end;class Armor;def initialize;@id = 0;@name = '';@icon_name = '';@description = '';@kind = 0;@auto_state_id = 0;@price = 0;@pdef = 0;@mdef = 0;@eva = 0;@str_plus = 0;@dex_plus = 0;@agi_plus = 0;@int_plus = 0;@guard_element_set = [];@guard_state_set = [];end;attr_accessor :id;attr_accessor :name;attr_accessor :icon_name;attr_accessor :description;attr_accessor :kind;attr_accessor :auto_state_id;attr_accessor :price;attr_accessor :pdef;attr_accessor :mdef;attr_accessor :eva;attr_accessor :str_plus;attr_accessor :dex_plus;attr_accessor :agi_plus;attr_accessor :int_plus;attr_accessor :guard_element_set;attr_accessor :guard_state_set;end;class Enemy;def initialize;@id = 0;@name = '';@battler_name = '';@battler_hue = 0;@maxhp = 500;@maxsp = 500;@str = 50;@dex = 50;@agi = 50;@int = 50;@atk = 100;@pdef = 100;@mdef = 100;@eva = 0;@animation1_id = 0;@animation2_id = 0;@element_ranks = Table.new(1);@state_ranks = Table.new(1);@actions = [RPG::Enemy::Action.new];@exp = 0;@gold = 0;@item_id = 0;@weapon_id = 0;@armor_id = 0;@treasure_prob = 100;end;attr_accessor :id;attr_accessor :name;attr_accessor :battler_name;attr_accessor :battler_hue;attr_accessor :maxhp;attr_accessor :maxsp;attr_accessor :str;attr_accessor :dex;attr_accessor :agi;attr_accessor :int;attr_accessor :atk;attr_accessor :pdef;attr_accessor :mdef;attr_accessor :eva;attr_accessor :animation1_id;attr_accessor :animation2_id;attr_accessor :element_ranks;attr_accessor :state_ranks;attr_accessor :actions;attr_accessor :exp;attr_accessor :gold;attr_accessor :item_id;attr_accessor :weapon_id;attr_accessor :armor_id;attr_accessor :treasure_prob;end;class Enemy;class Action;def initialize;@kind = 0;@basic = 0;@skill_id = 1;@condition_turn_a = 0;@condition_turn_b = 1;@condition_hp = 100;@condition_level = 1;@condition_switch_id = 0;@rating = 5;end;attr_accessor :kind;attr_accessor :basic;attr_accessor :skill_id;attr_accessor :condition_turn_a;attr_accessor :condition_turn_b;attr_accessor :condition_hp;attr_accessor :condition_level;attr_accessor :condition_switch_id;attr_accessor :rating;end;end;class Troop;def initialize;@id = 0;@name = '';@members = [];@pages = [RPG::Troop::Page.new];end;attr_accessor :id;attr_accessor :name;attr_accessor :members;attr_accessor :pages;end;class Troop;class Member;def initialize;@enemy_id = 1;@x = 0;@y = 0;@hidden = false;@immortal = false;end;attr_accessor :enemy_id;attr_accessor :x;attr_accessor :y;attr_accessor :hidden;attr_accessor :immortal;end;end;class Troop;class Page;def initialize;@condition = RPG::Troop::Page::Condition.new;@span = 0;@list = [RPG::EventCommand.new];end;attr_accessor :condition;attr_accessor :span;attr_accessor :list;end;end;class Troop;class Page;class Condition;def initialize;@turn_valid = false;@enemy_valid = false;@actor_valid = false;@switch_valid = false;@turn_a = 0;@turn_b = 0;@enemy_index = 0;@enemy_hp = 50;@actor_id = 1;@actor_hp = 50;@switch_id = 1;end;attr_accessor :turn_valid;attr_accessor :enemy_valid;attr_accessor :actor_valid;attr_accessor :switch_valid;attr_accessor :turn_a;attr_accessor :turn_b;attr_accessor :enemy_index;attr_accessor :enemy_hp;attr_accessor :actor_id;attr_accessor :actor_hp;attr_accessor :switch_id;end;end;end;class State;def initialize;@id = 0;@name = '';@animation_id = 0;@restriction = 0;@nonresistance = false;@zero_hp = false;@cant_get_exp = false;@cant_evade = false;@slip_damage = false;@rating = 5;@hit_rate = 100;@maxhp_rate = 100;@maxsp_rate = 100;@str_rate = 100;@dex_rate = 100;@agi_rate = 100;@int_rate = 100;@atk_rate = 100;@pdef_rate = 100;@mdef_rate = 100;@eva = 0;@battle_only = true;@hold_turn = 0;@auto_release_prob = 0;@shock_release_prob = 0;@guard_element_set = [];@plus_state_set = [];@minus_state_set = [];end;attr_accessor :id;attr_accessor :name;attr_accessor :animation_id;attr_accessor :restriction;attr_accessor :nonresistance;attr_accessor :zero_hp;attr_accessor :cant_get_exp;attr_accessor :cant_evade;attr_accessor :slip_damage;attr_accessor :rating;attr_accessor :hit_rate;attr_accessor :maxhp_rate;attr_accessor :maxsp_rate;attr_accessor :str_rate;attr_accessor :dex_rate;attr_accessor :agi_rate;attr_accessor :int_rate;attr_accessor :atk_rate;attr_accessor :pdef_rate;attr_accessor :mdef_rate;attr_accessor :eva;attr_accessor :battle_only;attr_accessor :hold_turn;attr_accessor :auto_release_prob;attr_accessor :shock_release_prob;attr_accessor :guard_element_set;attr_accessor :plus_state_set;attr_accessor :minus_state_set;end;class Animation;def initialize;@id = 0;@name = '';@animation_name = '';@animation_hue = 0;@position = 1;@frame_max = 1;@frames = [RPG::Animation::Frame.new];@timings = [];end;attr_accessor :id;attr_accessor :name;attr_accessor :animation_name;attr_accessor :animation_hue;attr_accessor :position;attr_accessor :frame_max;attr_accessor :frames;attr_accessor :timings;end;class Animation;class Frame;def initialize;@cell_max = 0;@cell_data = Table.new(0, 0);end;attr_accessor :cell_max;attr_accessor :cell_data;end;end;class Animation;class Timing;def initialize;@frame = 0;@se = RPG::AudioFile.new('', 80);@flash_scope = 0;@flash_color = Color.new(255,255,255,255);@flash_duration = 5;@condition = 0;end;attr_accessor :frame;attr_accessor :se;attr_accessor :flash_scope;attr_accessor :flash_color;attr_accessor :flash_duration;attr_accessor :condition;end;end;class Tileset;def initialize;@id = 0;@name = '';@tileset_name = '';@autotile_names = ['']*7;@panorama_name = '';@panorama_hue = 0;@fog_name = '';@fog_hue = 0;@fog_opacity = 64;@fog_blend_type = 0;@fog_zoom = 200;@fog_sx = 0;@fog_sy = 0;@battleback_name = '';@passages = Table.new(384);@priorities = Table.new(384);@priorities[0] = 5;@terrain_tags = Table.new(384);end;attr_accessor :id;attr_accessor :name;attr_accessor :tileset_name;attr_accessor :autotile_names;attr_accessor :panorama_name;attr_accessor :panorama_hue;attr_accessor :fog_name;attr_accessor :fog_hue;attr_accessor :fog_opacity;attr_accessor :fog_blend_type;attr_accessor :fog_zoom;attr_accessor :fog_sx;attr_accessor :fog_sy;attr_accessor :battleback_name;attr_accessor :passages;attr_accessor :priorities;attr_accessor :terrain_tags;end;class CommonEvent;def initialize;@id = 0;@name = '';@trigger = 0;@switch_id = 1;@list = [RPG::EventCommand.new];end;attr_accessor :id;attr_accessor :name;attr_accessor :trigger;attr_accessor :switch_id;attr_accessor :list;end;class System;def initialize;@magic_number = 0;@party_members = [1];@elements = [nil, ''];@switches = [nil, ''];@variables = [nil, ''];@windowskin_name = '';@title_name = '';@gameover_name = '';@battle_transition = '';@title_bgm = RPG::AudioFile.new;@battle_bgm = RPG::AudioFile.new;@battle_end_me = RPG::AudioFile.new;@gameover_me = RPG::AudioFile.new;@cursor_se = RPG::AudioFile.new('', 80);@decision_se = RPG::AudioFile.new('', 80);@cancel_se = RPG::AudioFile.new('', 80);@buzzer_se = RPG::AudioFile.new('', 80);@equip_se = RPG::AudioFile.new('', 80);@shop_se = RPG::AudioFile.new('', 80);@save_se = RPG::AudioFile.new('', 80);@load_se = RPG::AudioFile.new('', 80);@battle_start_se = RPG::AudioFile.new('', 80);@escape_se = RPG::AudioFile.new('', 80);@actor_collapse_se = RPG::AudioFile.new('', 80);@enemy_collapse_se = RPG::AudioFile.new('', 80);@words = RPG::System::Words.new;@test_battlers = [];@test_troop_id = 1;@start_map_id = 1;@start_x = 0;@start_y = 0;@battleback_name = '';@battler_name = '';@battler_hue = 0;@edit_map_id = 1;end;attr_accessor :magic_number;attr_accessor :party_members;attr_accessor :elements;attr_accessor :switches;attr_accessor :variables;attr_accessor :windowskin_name;attr_accessor :title_name;attr_accessor :gameover_name;attr_accessor :battle_transition;attr_accessor :title_bgm;attr_accessor :battle_bgm;attr_accessor :battle_end_me;attr_accessor :gameover_me;attr_accessor :cursor_se;attr_accessor :decision_se;attr_accessor :cancel_se;attr_accessor :buzzer_se;attr_accessor :equip_se;attr_accessor :shop_se;attr_accessor :save_se;attr_accessor :load_se;attr_accessor :battle_start_se;attr_accessor :escape_se;attr_accessor :actor_collapse_se;attr_accessor :enemy_collapse_se;attr_accessor :words;attr_accessor :test_battlers;attr_accessor :test_troop_id;attr_accessor :start_map_id;attr_accessor :start_x;attr_accessor :start_y;attr_accessor :battleback_name;attr_accessor :battler_name;attr_accessor :battler_hue;attr_accessor :edit_map_id;end;class System;class Words;def initialize;@gold = '';@hp = '';@sp = '';@str = '';@dex = '';@agi = '';@int = '';@atk = '';@pdef = '';@mdef = '';@weapon = '';@armor1 = '';@armor2 = '';@armor3 = '';@armor4 = '';@attack = '';@skill = '';@guard = '';@item = '';@equip = '';end;attr_accessor :gold;attr_accessor :hp;attr_accessor :sp;attr_accessor :str;attr_accessor :dex;attr_accessor :agi;attr_accessor :int;attr_accessor :atk;attr_accessor :pdef;attr_accessor :mdef;attr_accessor :weapon;attr_accessor :armor1;attr_accessor :armor2;attr_accessor :armor3;attr_accessor :armor4;attr_accessor :attack;attr_accessor :skill;attr_accessor :guard;attr_accessor :item;attr_accessor :equip;end;end;class System;class TestBattler;def initialize;@actor_id = 1;@level = 1;@weapon_id = 0;@armor1_id = 0;@armor2_id = 0;@armor3_id = 0;@armor4_id = 0;end;attr_accessor :actor_id;attr_accessor :level;attr_accessor :weapon_id;attr_accessor :armor1_id;attr_accessor :armor2_id;attr_accessor :armor3_id;attr_accessor :armor4_id;end;end;class AudioFile;def initialize(name = '', volume = 100, pitch = 100);@name = name;@volume = volume;@pitch = pitch;end;attr_accessor :name;attr_accessor :volume;attr_accessor :pitch;end;end;       module RPG;module Cache;@cache = {};def self.load_bitmap(folder_name, filename, hue = 0);path = folder_name + filename;if not @cache.include?(path) or @cache[path].disposed?;if filename != '';@cache[path] = Bitmap.new(path);else;@cache[path] = Bitmap.new(32, 32);end;end;if hue == 0;@cache[path];else;key = [path, hue];if not @cache.include?(key) or @cache[key].disposed?;@cache[key] = @cache[path].clone;@cache[key].hue_change(hue);end;@cache[key];end;end;def self.animation(filename, hue);self.load_bitmap('Graphics/Animations/', filename, hue);end;def self.autotile(filename);self.load_bitmap('Graphics/Autotiles/', filename);end;def self.battleback(filename);self.load_bitmap('Graphics/Battlebacks/', filename);end;def self.battler(filename, hue);self.load_bitmap('Graphics/Battlers/', filename, hue);end;def self.character(filename, hue);self.load_bitmap('Graphics/Characters/', filename, hue);end;def self.fog(filename, hue);self.load_bitmap('Graphics/Fogs/', filename, hue);end;def self.gameover(filename);self.load_bitmap('Graphics/Gameovers/', filename);end;def self.icon(filename);self.load_bitmap('Graphics/Icons/', filename);end;def self.panorama(filename, hue);self.load_bitmap('Graphics/Panoramas/', filename, hue);end;def self.picture(filename);self.load_bitmap('Graphics/Pictures/', filename);end;def self.tileset(filename);self.load_bitmap('Graphics/Tilesets/', filename);end;def self.title(filename);self.load_bitmap('Graphics/Titles/', filename);end;def self.windowskin(filename);self.load_bitmap('Graphics/Windowskins/', filename);end;def self.tile(filename, tile_id, hue);key = [filename, tile_id, hue];if not @cache.include?(key) or @cache[key].disposed?;@cache[key] = Bitmap.new(32, 32);x = (tile_id - 384) % 8 * 32;y = (tile_id - 384) / 8 * 32;rect = Rect.new(x, y, 32, 32);@cache[key].blt(0, 0, self.tileset(filename), rect);@cache[key].hue_change(hue);end;@cache[key];end;def self.clear;@cache = {};GC.start;end;end;end;module RPG;class Sprite < ::Sprite;@@_animations = [];@@_reference_count = {};def initialize(viewport = nil);super(viewport);@_whiten_duration = 0;@_appear_duration = 0;@_escape_duration = 0;@_collapse_duration = 0;@_damage_duration = 0;@_animation_duration = 0;@_blink = false;end;def dispose;dispose_damage;dispose_animation;dispose_loop_animation;super;end;def whiten;self.blend_type = 0;self.color.set(255, 255, 255, 128);self.opacity = 255;@_whiten_duration = 16;@_appear_duration = 0;@_escape_duration = 0;@_collapse_duration = 0;end;def appear;self.blend_type = 0;self.color.set(0, 0, 0, 0);self.opacity = 0;@_appear_duration = 16;@_whiten_duration = 0;@_escape_duration = 0;@_collapse_duration = 0;end;def escape;self.blend_type = 0;self.color.set(0, 0, 0, 0);self.opacity = 255;@_escape_duration = 32;@_whiten_duration = 0;@_appear_duration = 0;@_collapse_duration = 0;end;def collapse;self.blend_type = 1;self.color.set(255, 64, 64, 255);self.opacity = 255;@_collapse_duration = 48;@_whiten_duration = 0;@_appear_duration = 0;@_escape_duration = 0;end;def damage(value, critical);dispose_damage;if value.is_a?(Numeric);damage_string = value.abs.to_s;else;damage_string = value.to_s;end;bitmap = Bitmap.new(160, 48);bitmap.font.name = 'Arial Black';bitmap.font.size = 32;bitmap.font.color.set(0, 0, 0);bitmap.draw_text(-1, 12-1, 160, 36, damage_string, 1);bitmap.draw_text(+1, 12-1, 160, 36, damage_string, 1);bitmap.draw_text(-1, 12+1, 160, 36, damage_string, 1);bitmap.draw_text(+1, 12+1, 160, 36, damage_string, 1);if value.is_a?(Numeric) and value < 0;bitmap.font.color.set(176, 255, 144);else;bitmap.font.color.set(255, 255, 255);end;bitmap.draw_text(0, 12, 160, 36, damage_string, 1);if critical;bitmap.font.size = 20;bitmap.font.color.set(0, 0, 0);bitmap.draw_text(-1, -1, 160, 20, 'CRITICAL', 1);bitmap.draw_text(+1, -1, 160, 20, 'CRITICAL', 1);bitmap.draw_text(-1, +1, 160, 20, 'CRITICAL', 1);bitmap.draw_text(+1, +1, 160, 20, 'CRITICAL', 1);bitmap.font.color.set(255, 255, 255);bitmap.draw_text(0, 0, 160, 20, 'CRITICAL', 1);end;@_damage_sprite = ::Sprite.new(self.viewport);@_damage_sprite.bitmap = bitmap;@_damage_sprite.ox = 80;@_damage_sprite.oy = 20;@_damage_sprite.x = self.x;@_damage_sprite.y = self.y - self.oy / 2;@_damage_sprite.z = 3000;@_damage_duration = 40;end;def animation(animation, hit);dispose_animation;@_animation = animation;return if @_animation == nil;@_animation_hit = hit;@_animation_duration = @_animation.frame_max;animation_name = @_animation.animation_name;animation_hue = @_animation.animation_hue;bitmap = RPG::Cache.animation(animation_name, animation_hue);if @@_reference_count.include?(bitmap);@@_reference_count[bitmap] += 1;else;@@_reference_count[bitmap] = 1;end;@_animation_sprites = [];if @_animation.position != 3 or not @@_animations.include?(animation);for i in 0..15;sprite = ::Sprite.new(self.viewport);sprite.bitmap = bitmap;sprite.visible = false;@_animation_sprites.push(sprite);end;unless @@_animations.include?(animation);@@_animations.push(animation);end;end;update_animation;end;def loop_animation(animation);return if animation == @_loop_animation;dispose_loop_animation;@_loop_animation = animation;return if @_loop_animation == nil;@_loop_animation_index = 0;animation_name = @_loop_animation.animation_name;animation_hue = @_loop_animation.animation_hue;bitmap = RPG::Cache.animation(animation_name, animation_hue);if @@_reference_count.include?(bitmap);@@_reference_count[bitmap] += 1;else;@@_reference_count[bitmap] = 1;end;@_loop_animation_sprites = [];for i in 0..15;sprite = ::Sprite.new(self.viewport);sprite.bitmap = bitmap;sprite.visible = false;@_loop_animation_sprites.push(sprite);end;update_loop_animation;end;def dispose_damage;if @_damage_sprite != nil;@_damage_sprite.bitmap.dispose;@_damage_sprite.dispose;@_damage_sprite = nil;@_damage_duration = 0;end;end;def dispose_animation;if @_animation_sprites != nil;sprite = @_animation_sprites[0];if sprite != nil;@@_reference_count[sprite.bitmap] -= 1;if @@_reference_count[sprite.bitmap] == 0;sprite.bitmap.dispose;end;end;for sprite in @_animation_sprites;sprite.dispose;end;@_animation_sprites = nil;@_animation = nil;end;end;def dispose_loop_animation;if @_loop_animation_sprites != nil;sprite = @_loop_animation_sprites[0];if sprite != nil;@@_reference_count[sprite.bitmap] -= 1;if @@_reference_count[sprite.bitmap] == 0;sprite.bitmap.dispose;end;end;for sprite in @_loop_animation_sprites;sprite.dispose;end;@_loop_animation_sprites = nil;@_loop_animation = nil;end;end;def blink_on;unless @_blink;@_blink = true;@_blink_count = 0;end;end;def blink_off;if @_blink;@_blink = false;self.color.set(0, 0, 0, 0);end;end;def blink?;@_blink;end;def effect?;@_whiten_duration > 0 or@_appear_duration > 0 or@_escape_duration > 0 or@_collapse_duration > 0 or@_damage_duration > 0 or@_animation_duration > 0;end;def update;super;if @_whiten_duration > 0;@_whiten_duration -= 1;self.color.alpha = 128 - (16 - @_whiten_duration) * 10;end;if @_appear_duration > 0;@_appear_duration -= 1;self.opacity = (16 - @_appear_duration) * 16;end;if @_escape_duration > 0;@_escape_duration -= 1;self.opacity = 256 - (32 - @_escape_duration) * 10;end;if @_collapse_duration > 0;@_collapse_duration -= 1;self.opacity = 256 - (48 - @_collapse_duration) * 6;end;if @_damage_duration > 0;@_damage_duration -= 1;case @_damage_duration;when 38..39;@_damage_sprite.y -= 4;when 36..37;@_damage_sprite.y -= 2;when 34..35;@_damage_sprite.y += 2;when 28..33;@_damage_sprite.y += 4;end;@_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32;if @_damage_duration == 0;dispose_damage;end;end;if @_animation != nil and (Graphics.frame_count % 2 == 0);@_animation_duration -= 1;update_animation;end;if @_loop_animation != nil and (Graphics.frame_count % 2 == 0);update_loop_animation;@_loop_animation_index += 1;@_loop_animation_index %= @_loop_animation.frame_max;end;if @_blink;@_blink_count = (@_blink_count + 1) % 32;if @_blink_count < 16;alpha = (16 - @_blink_count) * 6;else;alpha = (@_blink_count - 16) * 6;end;self.color.set(255, 255, 255, alpha);end;@@_animations.clear;end;def update_animation;if @_animation_duration > 0;frame_index = @_animation.frame_max - @_animation_duration;cell_data = @_animation.frames[frame_index].cell_data;position = @_animation.position;animation_set_sprites(@_animation_sprites, cell_data, position);for timing in @_animation.timings;if timing.frame == frame_index;animation_process_timing(timing, @_animation_hit);end;end;else;dispose_animation;end;end;def update_loop_animation;frame_index = @_loop_animation_index;cell_data = @_loop_animation.frames[frame_index].cell_data;position = @_loop_animation.position;animation_set_sprites(@_loop_animation_sprites, cell_data, position);for timing in @_loop_animation.timings;if timing.frame == frame_index;animation_process_timing(timing, true);end;end;end;def animation_set_sprites(sprites, cell_data, position);for i in 0..15;sprite = sprites[i];pattern = cell_data[i, 0];if sprite == nil or pattern == nil or pattern == -1;sprite.visible = false if sprite != nil;next;end;sprite.visible = true;sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192);if position == 3;if self.viewport != nil;sprite.x = self.viewport.rect.width / 2;sprite.y = self.viewport.rect.height - 160;else;sprite.x = 320;sprite.y = 240;end;else;sprite.x = self.x - self.ox + self.src_rect.width / 2;sprite.y = self.y - self.oy + self.src_rect.height / 2;sprite.y -= self.src_rect.height / 4 if position == 0;sprite.y += self.src_rect.height / 4 if position == 2;end;sprite.x += cell_data[i, 1];sprite.y += cell_data[i, 2];sprite.z = 2000;sprite.ox = 96;sprite.oy = 96;sprite.zoom_x = cell_data[i, 3] / 100.0;sprite.zoom_y = cell_data[i, 3] / 100.0;sprite.angle = cell_data[i, 4];sprite.mirror = (cell_data[i, 5] == 1);sprite.opacity = cell_data[i, 6] * self.opacity / 255.0;sprite.blend_type = cell_data[i, 7];end;end;def animation_process_timing(timing, hit);if (timing.condition == 0) or(timing.condition == 1 and hit == true) or(timing.condition == 2 and hit == false);if timing.se.name != '';se = timing.se;Audio.se_play('Audio/SE/' + se.name, se.volume, se.pitch);end;case timing.flash_scope;when 1;self.flash(timing.flash_color, timing.flash_duration * 2);when 2;if self.viewport != nil;self.viewport.flash(timing.flash_color, timing.flash_duration * 2);end;when 3;self.flash(nil, timing.flash_duration * 2);end;end;end;def x=(x);sx = x - self.x;if sx != 0;if @_animation_sprites != nil;for i in 0..15;@_animation_sprites[i].x += sx;end;end;if @_loop_animation_sprites != nil;for i in 0..15;@_loop_animation_sprites[i].x += sx;end;end;end;super;end;def y=(y);sy = y - self.y;if sy != 0;if @_animation_sprites != nil;for i in 0..15;@_animation_sprites[i].y += sy;end;end;if @_loop_animation_sprites != nil;for i in 0..15;@_loop_animation_sprites[i].y += sy;end;end;end;super;end;end;end;module RPG;class Weather;def initialize(viewport = nil);@type = 0;@max = 0;@ox = 0;@oy = 0;color1 = Color.new(255, 255, 255, 255);color2 = Color.new(255, 255, 255, 128);@rain_bitmap = Bitmap.new(7, 56);for i in 0..6;@rain_bitmap.fill_rect(6-i, i*8, 1, 8, color1);end;@storm_bitmap = Bitmap.new(34, 64);for i in 0..31;@storm_bitmap.fill_rect(33-i, i*2, 1, 2, color2);@storm_bitmap.fill_rect(32-i, i*2, 1, 2, color1);@storm_bitmap.fill_rect(31-i, i*2, 1, 2, color2);end;@snow_bitmap = Bitmap.new(6, 6);@snow_bitmap.fill_rect(0, 1, 6, 4, color2);@snow_bitmap.fill_rect(1, 0, 4, 6, color2);@snow_bitmap.fill_rect(1, 2, 4, 2, color1);@snow_bitmap.fill_rect(2, 1, 2, 4, color1);@sprites = [];for i in 1..40;sprite = Sprite.new(viewport);sprite.z = 1000;sprite.visible = false;sprite.opacity = 0;@sprites.push(sprite);end;end;def dispose;for sprite in @sprites;sprite.dispose;end;@rain_bitmap.dispose;@storm_bitmap.dispose;@snow_bitmap.dispose;end;def type=(type);return if @type == type;@type = type;case @type;when 1;bitmap = @rain_bitmap;when 2;bitmap = @storm_bitmap;when 3;bitmap = @snow_bitmap;else;bitmap = nil;end;for i in 1..40;sprite = @sprites[i];if sprite != nil;sprite.visible = (i <= @max);sprite.bitmap = bitmap;end;end;end;def ox=(ox);return if @ox == ox;@ox = ox;for sprite in @sprites;sprite.ox = @ox;end;end;def oy=(oy);return if @oy == oy;@oy = oy;for sprite in @sprites;sprite.oy = @oy;end;end;def max=(max);return if @max == max;@max = [[max, 0].max, 40].min;for i in 1..40;sprite = @sprites[i];if sprite != nil;sprite.visible = (i <= @max);end;end;end;def update;return if @type == 0;for i in 1..@max;sprite = @sprites[i];if sprite == nil;break;end;if @type == 1;sprite.x -= 2;sprite.y += 16;sprite.opacity -= 8;end;if @type == 2;sprite.x -= 8;sprite.y += 16;sprite.opacity -= 12;end;if @type == 3;sprite.x -= 2;sprite.y += 8;sprite.opacity -= 8;end;x = sprite.x - @ox;y = sprite.y - @oy;if sprite.opacity < 64 or x < -50 or x > 750 or y < -300 or y > 500;sprite.x = rand(800) - 50 + @ox;sprite.y = rand(800) - 200 + @oy;sprite.opacity = 255;end;end;end;attr_reader :type;attr_reader :max;attr_reader :ox;attr_reader :oy;end;end

点评

脚本里有几个@被dz解析了这里贴不上来请自行解决  发表于 2013-9-15 13:37

评分

参与人数 1星屑 +105 收起 理由
myownroc + 105 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
14 小时
注册时间
2011-4-19
帖子
14
4
 楼主| 发表于 2013-9-15 13:56:14 | 只看该作者
R-零 发表于 2013-9-15 13:35
这些是你要的RPG模块的代码
主楼的问题请调查Sprite_Battler这个脚本、我不需要多说话
module RPG;class Ma ...

好的, 非常感谢。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-9-29 22:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表