Tons of Add-ons
Authors: Blizzard, KK20, Fantasist, NAMKCOR, Zan, game_guy, TerreAqua, Heretic
Version: 7.71
Type: Add-on Collection Control Script
Key Term: Add-on Collection
IntroductionThis is a collection of different add-ons with the option to turn each on/off. If you have any ideas how to improve this collection, just say so. I will add you into the credits of this add-on collection if you have an own add-on. I will not add any add-ons made by somebody else than yourself, you can't ask me for somebody else to add an add-on. The creator has to ask me himself.
This work is licensed under BSD License 2.0:
Quote from: undefinedCopyright (c) Boris "Blizzard" Mikić
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
You may use this script for both non-commercial and commercial products without limitations as long as you fulfill the conditions presented by the above license. The "complete" way to give credit is to include the license somewhere in your product (e.g. in the credits screen), but a "simple" way is also acceptable. The "simple" way to give credit is as follows:
Quote from: undefinedTons of Add-ons licensed under BSD License 2.0, Copyright (c) Boris "Blizzard" Mikić, KK20, Fantasist, NAMKCOR, Zan, game_guy, TerreAqua, Heretic
Alternatively, if your font doesn't support diacritic characters, you may use this variant:
Quote from: undefinedTons of Add-ons licensed under BSD License 2.0, Copyright (c) Boris "Blizzard" Mikic, KK20, Fantasist, NAMKCOR, Zan, game_guy, TerreAqua, Heretic
In general other similar variants are allowed as long as it is clear who the creator is (e.g. "Tons of Add-ons created by Blizzard and other authors" is acceptable). But if possible, prefer to use one of the two variants listed above.
If you fail to give credit and/or claim that this work was created by you, this may result in legal action and/or payment of damages even though this work is free of charge to use normally.
FeaturesGraphic (make your game look nice):- Better Tilemap update (will update autotiles faster)
- Animated Title (have an animated title screen without .gifs)
- Center Battler (they will be centered instead of lined next to each other)
- HP/SP/EXP gradient/slant bars (including 7 styles, opacity and least lag)
- Location Names (shows pictures or names of the location the player visits)
- Black Fade (shows a black screen when changing the map or before battle)
- Simple Shaded Text (draws a shadow behind your text)
- Blizz-Art lagless HUD (Heads Up Display using either HP/SP/EXP or simple)
- Screen Tremble (makes your screen shake vertically, too)
- Animation Stack (shows animation of all inflicted status effects)
- Simple Facesets (shows a face instead of the spriteset in the main menu)
- Caterpillar (party members follow you on the map)
- Arrow over Player (shows arrow over player's head if he's "behind")
- Animated Battle Background (animates battle backgrounds)
- Map as Battleback (map is the battle backgrounds)
- Facesets for DSS (shows a face instead of the spriteset in the status menu)
- Status Effects as Icons (displays status effects as icons)
- Animated Battlers Non-Action BS (animates battlers in battle systems)
- Enhanced Battle Cursor (plays animations upon cursors in battle)
- Death Image (displays an image instead of nothing for dead actors)
- Terrain Battlebacks (different battlebacks for different terrains)
Utility (make your game more unique and better/help you during debug):- Custom Game Controls (set up your own game controls)
- FPS Modulator (increase the fps rate up 3 times like in an emulator)
- Speed Modulator (change the main character's speed on the map)
- Fullscreen? (asks the player at game start if he wishes to switch to full)
- Death Toll (counts killed enemies and actor deaths)
- Multi-Drop (makes enemies drop more than just one item)
- Window_BattleResult (displays gained items in a different, but better way)
- Unique Skill Commands (different name for the Skill command for each class)
- Ultimate Font Override (will override the font from any RMXP version)
- Heal at LvlUp (heals characters who level up)
- Weapon/Armor HP/SP Plus (max HP and max SP can also be increased)
- EQUAP Skills (equipment skills, equip to learn + AP system like FF9)
- Picture Movie Scene (easily create picture based cutscenes)
- Target 'em all! (make skills target all battlers)
- Quick Passability Test (let's you debug maps faster and more convenient)
- Blizz-ABS Minimap (never was a minimap so easy to use)
- Enemy Status in Battle (displays enemies' HP, SP and state)
- Passive Skills (modify attributes when learned)
- Different Difficulties (like "Easy", "Normal", "Hard")
- Skill Separation System (like "White Magic", "Black Magic", "Technic", etc.)
- Multi-Hit (make weapons/skills/enemies hit more than once)
- Scene_Item calling Items (make items call special item scenes)
- Plug-in Save Point (create your own save point system within minutes)
- Equipment Requirement System (Diablo II style requirements)
- Item Requirement for Skills (skills require and consume items upon use)
- HP/SP Crush (weapons consume HP/SP when attacking)
- Roulette (allows random targets with a nice animation)
- Chain Status Effects (status effects have other states as precondition)
- Actor-specific Item Usability (deny item effects on specific actors)
- Percentage Health States (states added/removed on specific HP percentages)
- Monster Areas (different encounters at different areas in the same map)
- Realistic Ladders (turn upwards when using ladders)
- Event Z-Index Controller (render events flat and change their Z-Index)
Status Effect (non-standard status effects)- Zombie Status (Healing items will hurt and light attacks are effective)
- Regen Status (progressive healing aka poison, but the other way)
- Auto-Revive Status (or Auto-Life, will be automatically revived after dieing)
- Fury Status (if a specific character dies, another one will become Fury)
- Invincible Status (this status will nullify ANY DAMAGE done by enemies)
- SP Cost Mod Status (this status will change SP cost to percentages or fixed values)
- Frozen Status (dies instantly if getting damaged)
- Blue Magic Status (can learn enemies'/other actors' skills)
- Doom Status (countdown to death)
Skill (non-standard skills):- Absorb HP/SP Skill (with considering undead enemies)
- State Breaker Skill (changes available status effects forcefully)
- Blue Magic Skill (can learn enemies'/other actors' skills)
- Demi Skill (deals damage equal to a percentage of the remaining HP)
- Revenge Skill (does damage equal to MAX_HP - CURRENT_HP)
- Destructor Skill (kills self to achieve various effects)
- SP Damage Skill (skills that damage / heal SP instead of HP)
- Charge Skill (skills that count down before usage)
- Master Thief Skill (steals weapon, armors, items and gold from enemies)
- HP Consuming Skill (consumes HP upon usage)
Item (non-standard items):- Skill Teaching Item (items that teach actors skills)
- Level Up/Down Item (items that level up/down actors)
Version history inside the script!
ScreenshotsN/A for this sort of script
DemoN/A
ScriptJust make 3 new scripts above main and paste the code from the 3 files into them in the correct order.
Script Part 1 Download (https://downloads.chaos-project.com/scripts/Tons of Add-ons 1.txt)
Script Part 2 Download (https://downloads.chaos-project.com/scripts/Tons of Add-ons 2.txt)
Script Part 3 Download (https://downloads.chaos-project.com/scripts/Tons of Add-ons 3.txt)
InstructionsInside the script in the first comment. Note the most add-ons have their own instructions.
Compatibility90% compatible with SDK v1.x. 80% compatible with SDK v2.x. Some add-ons will corrupt your old savegames. If you experience the "Stack level too deep" error, you might already use one of these add-ons. All of these add-ons here work with each other with a success rate of 99%. This add-on collection itself WILL corrupt your old savegames. May cause incompatibility issues with following systems:
- exotic CBS-ex
- exotic CMS-es
- skill learning systems
- exotic graphic systems on the map
- weapon/armor changing systems
- enhanced equipment systems
This add-on collection is semantically compatible with RTAB v1.16 with all Plugins, though, several add-ons will not work:
- Center Battler - will cause a crash (it's rather useless in Side-View RTAB anyway)
- Multi-Hit - will not react at all if RTAB is being used due to the heavy changes in the methods supported by the DBS
- Charge Skill - the countdown will be start at 0 and the skill will be executed right away
It is possible that more add-ons don't work, but it is very unlikely.
Credits and Thanks- 63 add-ons by Blizzard
- 1 add-on by Blizzard, KK20
- 2 add-ons by Fantasist
- 1 add-on by NAMKCOR
- 1 add-on by Zan
- 6 add-ons by game_guy
- 1 add-on by TerreAqua
- 1 add-on by Heretic
Ideas by:- Boris "Blizzard" Mikić
- GuardianAngelX72
- BanisherOfEden
- italianstal1ion
- indinera
- Yami
- blazinhandle
- Arrow-1
- Caro La Rushe
- Zan
- shahafyz57
- Echo
- Cid
- Fantasist
- Ceaon
- NAMKCOR
- mumerus
- chino69
- game_guy
- TerreAqua
- Subsonic_Noise
- Heretic
Author's NotesTons of Add-ons
HAS TO be used as a 3-part script because of a weird behavior of RMXP during bug detection. Insert the 3 parts in the correct order and the system should work without problems.
DO NOT remove any of the parts! Tons of Add-ons
NEEDS ALL 3 PARTS to work properly and with other systems.
These add-ons were mostly tested in a different environment or not at all.
If you find any bugs, please report them here:
http://forum.chaos-project.com
That's it! N-Joy! =D
@Blizard Could you add my location script to this? Btw theres a bug with your hud script. It won't dislay the gold name properly. (The gold test is off) Edit and I also can't turn it off during gameplay. But I can turn it on kinda weird.
I'll look into it.
Hey, I have looked into this is, and it is very nice indeed. I was curious if you could somehow 'extract' the minimap segment of the script and use it separately. I was hoping to add that feature into a project I have been working on, and don't even know how to start creating one. I played the 'Chronicles of Sir Lag-a-Lot', and have attempted to use the entire 'tons of add-ons', but it clashes with some of the scripts I have written.
If you could help me with this, I would very much appreciate it.
~Leon
couldn't u just extract it out of tons urself? and remove the true stuff I don't think would be too hard
I tried, but failed. I am not sure where to look for all the pieces, honestly. I am better with menu systems over map systems.
k well he might be able help than when he gets on and yeah I still haven'treally tried anything complex scripting so can't help you :(
sooo many addons.. lol, if there were more scripted spells... :P
The minimap add-ons requires the the passability check. You can extract it simply by removing the lines that check if they are turned on, it's really easy.
I really like many features from Blizz-ABS, but it's too complex for my lazy mind to explore on the fly.
I can't believe I missed that. Thanks, man.
Blizz your map as battleback doesn't seem to work if you have catepillar on and you turn player non visible I think it would be pretty hard to do it, so don't worry anyway as if I do use map as battleback I'll be just taking screenshots of a map and use them as trees ect get in the way is use random battle..
It wouldn't. I'll make that work in the next release.
yeah I didn't think would ty :)
EDIT: an easy little scriptlet maybe should add?
Random battle music and transitions
you would just edit Scene_Map and add a rand fuction to the bgm_play
Audio.bgm_play("Audio/BGM/battlemusic" + rand(3).to_s, 100, 100)
dnt see why I posted an example I'm sure you know how to did it :P
Hey Blizz, maybe it's just me but I think you forgot to add an on/off switch for changing difficulty settings. If you could have a look at that and fix it, i would appreciate it. :)
Umm...
He definitely didn't
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
# #
# ### ### # # ##### # #### # # #### ### ##### # ### # # #
# # # # # ## # # # # # # # # # # # # # # ## # #
# # # # # # # #### # # ## # # #### # # # # # # # # # #
# # # # # # ## # # # # # # # # ##### # # # # # ## #
# ### ### # # # # #### ### # # # # # # ### # # #
# #
#:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::#
$DUMMY_ELEMENTS = [] # add any dummy element IDs other scripts might use
$DUMMY_STATES = [] # add any dummy state IDs other scripts might use
module TONS_OF_ADDONS
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 1
#
# You can enable/disable any add-on here if you wish. Set the value to false
# to disable it. These features CANNOT be turned on/off during the game.
#
# NAME_OF_THE_ADDON = true
# NAME_OF_THE_ADDON = false
#
# where NAME_OF_THE_ADDON is the same variable as the one used below.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# the graphic add-ons
ANIMATED_TITLE = false
# the utility add-ons
CUSTOM_CONTROLS = false
FULLSCREEN = false
MULTI_DROP = false
ULTIMATE_FONT_OVERRIDE = false
EQUAP_SKILLS = false
DIFFICULTY = false <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
ITEMCALL = false
SAVEPOINT = false
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Thanks Calintz. Sorry for not seeing it. Must be going blind :o. Now I can add difficulity. Yay!
NP...Thats why we're here!! ;D
Tons v6.03b is out. :)
Awesome script man! :o ;D :D ;) :)
*Grabs, grabs, grabs*
hey... im really bad at using scripts... whenever i test-play my game, i get this erroe message:
Script 'tons of addons' line 2616: NameError occurred.
undefined method 'refresh' for class 'Game_Player'
how do i fix this? i have no knowledge of scripts what-so-ever...
Hm... Which custom scripts are you using? This is definitely a conflict.
Have you read this topic, BTW?
http://forum.chaos-project.com/index.php?topic=23.0
oh... thanks... it was just in the wrong order...
I thought so. :) Happens often that people need to put a couple of my scripts into the right order to make them work.
ok... now im having problems with two otehr buttons:
select
cancel
i get an error message whenever i hit these keys... if you need to see the error, ask me...
Yeah, always post the error message. Are you using the Custom Controls even though you are using Blizz-ABS maybe?
These are my custom controls:
Up: Up Arrow
Left: Left Arrow
Down: Down Arrow
Right: Right Arrow
Previous: <
Next >
Confirm: Enter
Cancel: Z
Attack: W
Defend: D
Skill: S
Item: I
Select: A
HUD: H
Hotkey: X
Minimap: Tab
Run: Shift
Sneak: Ctrl
Jump: Space
Turn: U
my problem is with Cancel: Z
Script 'Standard Development Kit' line 1687: NameError occurred.
uninitialized constant Input::Letters
and select: A
Script 'blizz abs 2' line 1005: NoMethodError occurred.
undefined method `+' for nil:NilClass
There is no "Letters" in the configuration. You need to use Let and not Letters. I used Let to make the configuration easier to overview.
I dont get it... i do use Let before i use letters like A or Z... what do i need to do?
I'm having problems with the picture scenes.
I'd like to make it where I can make it autorun right after the title screen before the gameplay begins but instead, I see the starting area I'm in for a second and then the picture. I'd like to make it where I can see the picture first after starting a new game and then begin gameplay.
You can do that easily in a different way. Use a parallel process in the first map that tints the screen black, then show the picture and remove the tint. You don't need the pictures scene for something like that.
I set "Change Screen Color" to black as the first and then I threw in the show picture command but that don't seem to fix anything. I need it to be cutscene-like. No matter how many "change colors to black" I put in, I still see the map and the hud and everything else for a brief second before the pictures are suppose to show up.
Also, if I set it to black, the picture won't show up either.
Basically, what I'm trying to do is make it be alot like Sir Lagalot's intro right after hitting "start game".
Besides, the show picture command requires manual centering while the picture scene completely centers it.
Oh, that's a custom script in Sir Lag-A-Lot.
Ok, try it this way. In Scene_Title where it says:
in def command_newgame, change it to the call of the pictures scene and set the returning scene to be Scene_Map. Then it will first play the intro and activate the map afterwards.
Or you can use a completely empty map and set the hero's characterset to none just for the beginning of the game and simply call the picture scene before the game really starts. Basically, you need to make the event a parallel process, if you didn't do that, it can cause problems, too.
Thank you so much, it worked alot.
Btw, just for future versions of Tons. You may want to throw that in the "how to" for Picture Scenes seeing I didn't exactly see it there. Kind of like you already explain with intros before title screens in there, I think having a "how to" for picture scenes after the title screen would be a good idea too for everyone else that may not know.
Yeah, that's a good idea. I'll remember that.
I changed my controls back to the normal ones and i still have the error messages...
SDK is just being stupid. You can't use A and Z for whatever reason obviously. There are built-in controls like Input::A and Input::Z which are not the letters A and Z. Well, making the ABS compatible with SDK is a hell of a job, because SDK messes up everything that can be messed up. I'm sorry, I can't help you here. Either use SDK or Blizz-ABS, both of them obviously don't work.
Or go ask Seph if he can fix the SDK instead. I mean why should always I make my stuff compatible with his SDK, how about him doing me a favor for a change? (-_-')
i dont know where to find Seph... honestly, ive never talked to him ever... im not exactly active on main rpg websites with tons of members... unless hes on here... i have no idea...
LOL! He's active on rmxp.org usually. xD
Hey Blizzard :D
I'm just some random guy that came across your wonderful Add-ons script. Anyway, there's this bug that's sort of annoying me. I think it's an incompatibility glitch between the Death Roulette and the Target 'Em All.
Basically, when I try and use the Death Roulette skill, it tells me:
Script 'Blizz Add-Ons' line 5637:Argument Error occurred.
Wrong number of arguments(1 for 0)
And here's line 5637:
make_skill_action_result_target_all_later(battler)
Which is for some reason, in "Target 'Em All" :-\
I don't even have "Target 'Em All" on, so I don't see why it should have a problem there. I'm pretty sure my configuration is correct, but it keeps going error on me. Could you find out and fix the problem?
Thanks
Regimos
Hey Blizz, I got another suggestion for you to put in Tons.
The facesets are really nice to have on the menu screen and status screen but I was thinking of having it where you can have them show up when characters are talking to eachother. Now, you may have an add on for this but I'm not so sure(haven't seen every one of them lol). I think this would be a great idea as it looks cool in most games.
just use Ccoa's UMS or slipknots script
Yeah, simply use an AMS/UMS. I also suggets ccoa's.
@Regimos: What's the point in using Death Roulette and Target'em all on the same skill? -_- They are semantically simply incompatible. I mean why making a skill that kills a random battler target all battlers? xD
Or are you getting that error when you simply use both add-ons at the same time? I remember somebody mentioning something similar to me once...
EDIT: Nvm, I didn't take a good look at the error giving line. For some reason it thinks that you are using RTAB. I'll look into it. If you actually do, you should put Tons BELOW RTAB. Otherwise you can delete that whole add-on in for now so it works.
I'm not using both at the same time; I have Target 'em All disabled, yet the error still ocurs...
And no, I'm not using RTAB either :o
Simply delete the code of that add-on and it will work fine. I'll see what's wrong and release a fix ASAP.
i see the new version of Tons is up but while i was reading the script (before i download it) it only says about and upgrade to one of the addons so i just need to make sure if the bug i reported on the last forum have been fixed
Bug 1: when Center Battlers is on, the HP and all of that is centered but the Battler is still on the left, this is with only one person in the party, i don't know about more if it works when there is more
Bug 2: when i'm in a battle, (with center battlers off) i go to select attack and i get the following error
on line 1716 there's a TypeError, cannot convert nil into String
on line 1716 i have : draw_text_shaded_later(x, y, w, h, text, a)
i tryed deleting the entire addon but that didn't work cause i got the same error but in the window help script
Bug 3: when Catapiller is on, none of the other characters show up in the line, so 2 character, only one is shown, 3 characters, same thing, didn't get to 4 but most likely it'll do the same thing
it would be a waist of time for me to downlaod the schipt, fix it up with all the settings for my game and then only to find out i'm getting the same problems, so are these bugs fixed
Those are not bugs, but incompatibility issues. The center battler is most probably not compatible with your status display for whatever reason. Same goes for the battle command window and most probably for the caterpillar sprites as well.
Ok, I've fixed some stuff and put up a version 6.1b.
@Juan: Remember the HUD bug? Use
instead of
Yes, it does matter. There's a bug in the RGSS interpreter or in the eval command.
@Nortos: You said the Caterpillar won't work with Map as Battleback? It works fine with me. Did you know that you can let the player and/or the party members stay on the map when you go into battle? You need to set REMOVE_CLASSES to [] and everything will be displayed.
Theres a typo in tons of add ons part the save point script. Btw I did forgot about the hud window.
line 3377
should be
if @command_window.index == BlizzCFG::SCENE_NAMES.size
instead of
if @command_window.index == SCENE_NAMES.size
ty :) I decided not to use maps as battlebacks anyway didn't look good during day time with some of the custom tilesets using
Quote from: Juan on February 20, 2008, 12:01:49 am
Theres a typo in tons of add ons part the save point script. Btw I did forgot about the hud window.
line 3377
should be
if @command_window.index == BlizzCFG::SCENE_NAMES.size
instead of
if @command_window.index == SCENE_NAMES.size
>.< *puts up v6.11b*
I had to fix a bug with this caterpillar and Blizz-ABS, v6.12b is out. :3
EDIT:
v6.13b is out. :3
:P I was getting that error when checking out my hud with ABS and addons but I forgot to post about it
Um, bringing up an addon reccomendation from the old forum:
Damage Moderation: Damage limits for Attacks and Skills, and configuration for some skills to break the limit and for status effects that also permit the breaking of the damage limits.
@Blizzard
Theres a caterpillar bug
(http://img165.imageshack.us/img165/3914/caterpillarbugwu9.jpg)
@GuardianAngelX72 Yea that sounds interesting.
Dammit. <_<; I'll look into it.
@Nortos: Can you remember the error message? I remember updating the HUD recently, I might have fixed it already.
@GAX: I have to that already in the to-do list.
you did I meant that it was the catepillar with the ABS :P
Major error with the picture scenes.
QuoteScript '2' line 1951: NoMethodError occurred
undefined method `new' for #<Scene_Title:0x3fb7d68 @counter=0, @frame=0>
If you are going to use the 2nd one and picture scenes, replace the script with the picture scenes in 2 with this for right now.
class Scene_Pictures
def initialize(p, d, h, i = true, f = nil, s = Scene_Map.new)
$game_system = Game_System.new if $game_system == nil
@names, @delay, @hold, @int, @file, @next_scene = p, d, h, i, f, s
end
def main
$scene, @next_scene = @next_scene, nil
Graphics.transition
Graphics.freeze
delaying(true)
Audio.bgm_stop
if @file != nil
Audio.bgm_play("Audio/BGM/#{@file}", 100, 100)
@file = nil
end
i = 1
loop do
break if there_are_no_more_files(@names + i.to_s)
@pic = RPG::Sprite.new
@pic.bitmap = RPG::Cache.picture("Scene/#{@names}#{i}")
@pic.x, @pic.y = 320 - @pic.bitmap.width/2, 240 - @pic.bitmap.height/2
Graphics.transition(12)
break if delaying
Graphics.freeze
@pic.dispose
@pic = nil
Graphics.transition(12)
break if delaying(true)
Graphics.freeze
i += 1
end
unless @pic == nil || @pic.disposed?
@pic.dispose
Graphics.transition(12)
else
Graphics.transition(4)
end
delaying(true)
Audio.bgm_fade(800)
Graphics.freeze
end
def delaying(just_hold = false)
(0...(just_hold ? @hold : @delay)*40).each {|i|
Graphics.update
if @int
Input.update
return true if Input.press?(Input::C) || Input.press?(Input::B)
end}
return false
end
def there_are_no_more_files(name)
return (!FileTest.exist?("Graphics/Pictures/Scene/#{name}.png") &&
!FileTest.exist?("Graphics/Pictures/Scene/#{name}.jpg"))
end
end
I changed the script a little bit. Now you don't use "..., Scene_Title.new)" when you call it, but "..., Scene_Title)".
im getting an error with the loacation names addon it works fine on my first map but the next 1 it says it file graphics/pictures/names/map002_pic not found
@Blizzard the Caterpillar script for some reason don't work if you turn it on ingame. But if the scripts settings is on already it works a bit weirdYou need to configurate the following in the location banes script.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Location Database
#
# Use this template to configure this add-on:
#
# when ID then name = 'FILE_NAME'
#
# ID - map ID where the picture should be displayed
# FILE_NAME - the file name of the picture file in the Pictures/Names folder
#
# If you don't have a picture and want the name displayed anyway, please use:
#
# when ID then name = nil
#
# Instead of an image normal text will be displayed in the chosen font.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
I'll look into the problem with the caterpillar. I remember having a hard time to make the caterpillar disablable (lol, is that even a word?) in Blizz-ABS. I remember having problems with that earlier already.
This isn't exactly an error but the bars on Tons do not work on the newest version of the ABS but they do work on version 1.89 of the ABS yet not the newest version.
1 question is there a way on the loacation mane script to just make it show just the text on all the maps or do i have to add the when 1 then name = nil for every map i make
Actually, I was hoping when Blizz got enough spare time if he could make a configuration program for tons like he did for Blizz-ABS.
I mean it's just such an awesome array of different addons it sometimes can get combersum to go through the code for the configurations.
I don't see why he should, I mean, Ton's Configuration is easier than his ABS =/
I doubt that I will do that as this would be pretty bothersome, since I had to redesign the application everytime I add a new add-on. Other than that I lack the time to make yet another application like that. And just like DAS said, it's much easier to configure.
@Sin86: How unusual... I remember doing some slight changes in the HUD, maybe I messed up. But it works with me just fine. O_o Does it work if you remove Blizz-ABS?
@nathmatt: Change this:
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Location Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
else
return nil
end
to this:
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Location Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
name = nil
@Sin86: How unusual... I remember doing some slight changes in the HUD, maybe I messed up. But it works with me just fine. O_o Does it work if you remove Blizz-ABS?
[/quote]
All I've done was disabled BlizzABS HUD and turned on Bars on Tons and it worked in version 1.89 yet it won't in 1.96.
You disabled the HUD and turned on the bars, right? I will try that and fix it in 1.97.
i'm getting an error when i'm in a battle and i select "attack"
in Tons of Addons part 1 on line 1699 there's a TypeError
cannot convert nil to String
what i ahve on that line is
draw_text_shaded_later(x, y, w, h, text, a)
thing is that, it only does this on attack when i start a new game (you fight a battle at the very begining), when i load the game, i can do battles just fine with no problems
Are you using the shaded font add-on? Try turning it on/off. I remember somebody else having the same problem and I remember that I was able to fix it by setting up the right script order. I also think it has to do with yeyinde's font add-on which is causing the trouble together with SDK. Do you have all scripts in the right order?
I think shaded font did have some trouble with SDK I remember when I had to use it for a while than decided to get rid of it cos the script wasn't worth it lol
an update on my error, i had to start a new game to get some scripts working so now the probelm as affected the entire game, also, i deleted every custom script, sdk and all leaving only tons and what happens, same error so that means none of the custom scripts i'm using (or the sdk) and the problem is in tons itself
also when i turned it on (it was off) i got the same error but on line 1694 and on that line i have
draw_text_shaded_later(x+1, y+1, w, h, text, a)
so i get the error weather it's on or off got any ideas
first try it in a new project just that script alone if it works fine there I think sdk stuffed up the shaded text you have latest update of course?
Quote from: Memor-X on March 12, 2008, 06:27:59 pmi deleted every custom script, sdk and all leaving only tons and what happens, same error so that means none of the custom scripts i'm using (or the sdk) and the problem is in tons itself
also when i turned it on (it was off) i got the same error but on line 1694 and on that line i have
draw_text_shaded_later(x+1, y+1, w, h, text, a)
so i get the error weather it's on or off got any ideas
i think i did that, i was using 2.X as my SDK but thing is that before i got the latest edition of Tons, i didn't get any problems, i had to chnage cause the old version i was using kept showing up an error when i tried and use a Title Screen over-ride script so i could have a cutscene before the game started
It is NOT a problem with shaded text. I have seen that fricking error message every time I accidentally have the text for drawing not a string, like a number or something. It just means that something is trying to draw text without a string 0_o
Eh, sorry Blizz, I wasn't saying you "had to do it!" I was just thinking that it would be pretty nice for things like Multi-Drop where you have to establish a database for it to work.
Though I could just get my lazy ass off the chair and search for the lines for the database.
Lol, ok.
Quote from: WcW on March 13, 2008, 07:47:51 pm
It is NOT a problem with shaded text. I have seen that fricking error message every time I accidentally have the text for drawing not a string, like a number or something. It just means that something is trying to draw text without a string 0_o
Yeah, WcW is right. If you are getting an error at that line even though you removed every other script, then you have some custom edits there that mess it up. Remove the add-on completely and it will point to the right location of the bug the next time.
Quote from: Blizzard on March 14, 2008, 07:24:50 am
Lol, ok.
Quote from: WcW on March 13, 2008, 07:47:51 pm
It is NOT a problem with shaded text. I have seen that fricking error message every time I accidentally have the text for drawing not a string, like a number or something. It just means that something is trying to draw text without a string 0_o
Yeah, WcW is right. If you are getting an error at that line even though you removed every other script, then you have some custom edits there that mess it up. Remove the add-on completely and it will point to the right location of the bug the next time.
ahhh, my old may in deleeting the dam addon doesn't work, i delete it
anyway i deleted the addon, the error showed up heres the line that was the problem, it was found in Window_Help
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
This could be a script conflict. What scripts are you using?
I think it's SDK than unless you've muddled with Window_Help urself I used SDK for a bit and sometimes had this problem I can't remember how to fix it sorry
Before that line add this:
text == '' if ! text.is_a?(String)
@Juan and Nortos: like i said in an earlyer post, i had deleted every custom script apart from tons to isolate the problem to see if it was the sdk or whatever and i still got the error
@WcW: i added that line above all 3 lines of probelm code i had (the 2 in Tons, one for the addon being on and one for the addon being off) and also in Window_Help and i still got the error, i even deleted the addon and checked it out and still the same erroe showed up
i know but even after you delete SDK it sometimes infects a game's scripts it acts almost like a virus I dnt know much more about it and dnt really wnt to sorry
0_o That should fix the nil problem.
Quote from: WcW on March 17, 2008, 03:44:37 pm
Before that line add this:
text = '' if !text.is_a?(String)
Fixed
ok now it's working, but not in my Black Core Game but then again, i can't work on it fully at my uni cause i get this strange ass error when i try to run the game when i have the SDK 2.x, but my Rose Core game is working with it (even with SDK 1.5) but now when i go to select the enemy to attack, there's no text, in that window, and i know the monster's name is supposed to show up
I was able to fix that problem in a different script once, I can do it in Tons as well.
EDIT: Tons 6.2 is up.
on the show map name script where the x,y on it i want to move it to the center of the map & make it bigger
This here:
bitmap = Bitmap.new(320, LOCATION_SIZE + 16)
The 320 is the width, the LOCATION_SIZE + 16 is the width. You can just change it to
bitmap = Bitmap.new(640, 480)
and have it fullscreen. Now this line:
self.bitmap == nil ? self.dispose : self.x = 640 - self.bitmap.width
Change it to
if self.bitmap == nil
self.dispose
else
self.x = 0
end
to put the fullscreen picture in the center or this:
if self.bitmap == nil
self.dispose
else
self.x = X
self.y = Y
end
to put it at a custom position. I recommend
if self.bitmap == nil
self.dispose
else
self.x = 320 - self.width/2
self.y = 240 - self.height/2
end
if you want the image centered regardless of the size.
im getting an error it says 1505 ??? nameerror ?????????
undifined method update for class name_sprite::spriteset_map
hers that section
#----------------------------------------------------------------------------
# update
# Added name sprite appearing/disappearing animation control.
#----------------------------------------------------------------------------
alias upd_name_later update
def update
# if sprite exists
if @name != nil
# if sprite not disposed
unless @name.disposed?
@name.timer += 1
# if appearing
if @name.timer < 16
@name.opacity += 15
# if disappearing
elsif @name.timer > 16 + 40 * LOCATION_DISPLAY_TIME
@name.opacity -= 15
end
# if gone
if @name.opacity == 0
# remove completely
@name.dispose
@name = nil
end
else
# set to nil
@name = nil
end
end
upd_name_later
end
#---------------------------
I think that you messed up the code... Download a fresh copy of Tons and copy-paste the code of that add-on again and it should work. Then apply the changes.
is this to move ther picture or the just the text because im not using pictures
Then you shouldn't increase the size, you should just use that extra code I gave you.
i did that but it still doesn't center it i want it right in the middle
QuoteThis here:
Code:
bitmap = Bitmap.new(320, LOCATION_SIZE + 16)
The 320 is the width, the LOCATION_SIZE + 16 is the width. You can just change it to
Code:
bitmap = Bitmap.new(640, 480)
Quote from: Blizzard on March 27, 2008, 06:31:30 am
Now this line:
self.bitmap == nil ? self.dispose : self.x = 640 - self.bitmap.width
Change it to
if self.bitmap == nil
self.dispose
else
self.x = 0
end
to put the fullscreen picture in the center or this:
if self.bitmap == nil
self.dispose
else
self.x = X
self.y = Y
end
to put it at a custom position. I recommend
if self.bitmap == nil
self.dispose
else
self.x = 320 - self.width/2
self.y = 240 - self.height/2
end
if you want the image centered regardless of the size.
(-_-')
I'm not sure if I should remove this part out myself but I noticed that in Tons 2, on "Equap skills" and "skill seperation", I see a ! next to false. Would it be a good idea to get rid of that ! or not?
Never mind, you may remove the ! or else you won't beable to equip skills in the ABS. I got an error with the ! being there but I removed it and now the error is gone.
is it possible to prevent some characters from learning specific skills? if so, how?
and Is it possible for you (or instruct me) to add stuff such as Status Immunities, counter attack, 2x item power, armour element/status protection activation and weapon status activation.
What I mean is something called MANA or something, equal to magic stones in FF9, so you can customise your characters more. The abilities would be learnt as skills but activated with something
Stuff that would be nice:
Status adds (HP, MP, STR etc. when activated)
EXP add (example 50% more exp when activated)
Money add (example 50% more money when act.)
Counter attack (with certain % of using)
Weapon status activation (if weapon has status on it, you need to activate this passive skill to use it)
Armour status activation (same as weapon, but you need to activate to increase the protection)
Armour element activation (activate to raise the element def of your char)
is this possible? Like the materia system, but with MANA/magic stones?
I think you could use the same method as Difficulty when creating the EXP and money add's.
well I kno it's a big request but I need this :F I can only edit the EXP and gold myself (by setting common event that changes the difficulty that alters the money/exp, but EXP add on works for all chars then....)
///////////////////
and one more thing
You know any stealing system that works with this script? or can you make your own ^^
Actually, you can make a lot of that with events by using status effects. If you make a status effect cancel out other effects, they can't be added while having those special status effects.
A money-add would be rather easy.
class Game_Enemy
alias gold_addon_later gold
def gold
return RATE * gold_addon_later
end
end
Same for EXP from enemies:
class Game_Enemy
alias exp_addon_later exp
def exp
return RATE * exp_addon_later
end
end
Counter attack was a planned add-on, I was going to use a status effect for it. Something like "when STATUS_ID then return COUNTER_PROBABILITY", I just didn't have time yet.
The weapon status would be easy as well.
class Game_Actor
alias element_set_addon_later element_set
def element_set
return element_set_addon_later if @states.include?(STATUS_ID)
return []
end
end
The armor status protection would be a little more complicated as well as the armor element protection. I have implemented element absorbtions into CP (comes in the later part of the game) and I found out that it's a rather confusing system that isn't so compatible with other stuff.
Those mini-systems themselves are not so complicated, but the whole Mana stone system of FF9 would be quite a messy script with many compatibiliy issues.
Oh, if you want a Materia system, Seph made one long time ago.
I think I'll make my own Steal for Tons as I know that Trickster's Steal is merged with his Scan. I should be easy using the Multi Drop code as reference.
@Sin86: I forgot to set those add-ons to false. !false is the same as true, just quicker to type. xD Simply remove the exclamation marks to turn those add-ons off.
k thanks, I'll take a look at the status stuff later. And I'm planning to do a mana system of my own that uses variables and modified Scene_Shop, until I'll learn more.
Thanks again ; )
Hi!
I only want the simple faces in the menue. But there sooo many scripts in this script. I dont no what i have to delete and what not.
I delete all but not the face script but then it came a error message... Give it a trick or the script simple anywhere?
Heres my code. I tried aliasing the face set script and it worked. I also looked on how blizzard did it so it can be compatable with tons This script goes under tons if you are using it.
#==============================================================================
# module Juan_Configuration
#==============================================================================
module Juan_Configuration
Face_Sets = true # true/false if you want to use facesets
end
#==============================================================================
# Window_Base
#==============================================================================
class Window_Base < Window
alias draw_actor_graphic_juan_cms_later draw_actor_graphic
def draw_actor_graphic(actor, x, y)
if actor != nil && actor.character_name != ''
if self.is_a?(Window_MenuStatus) && Juan_Configuration::Face_Sets
bitmap = RPG::Cache.character("#{actor.character_name}_face", actor.character_hue)
x -= bitmap.width / 2
y -= bitmap.height
draw_actor_face_juan_cms(actor, x, y)
else
draw_actor_graphic_juan_cms_later(actor, x, y)
end
end
end
def draw_actor_face_juan_cms(actor, x, y)
if $tons_version == nil || $tons_version < 3.71 || !FACE_HUE
hue = 0
else
hue = (FACE_HUE ? actor.character_hue : 0)
end
bitmap = RPG::Cache.character("#{actor.character_name}_face", hue)
src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
self.contents.blt(x, y, bitmap, src_rect)
end
end
You don't have to delete anything, you can turn on/off in the script what you are using and what not.
With RTAB caterpillar script part errored even when it wasn't on.
Tons v6.4b is out. I hope I fixed the problematic bugs. :3
Well well :)
I'd like to know sum more about the "Some characters can't learn specific skills".
This too is similiar to FF9. How to edit these lines so they prevent some classes from learning skills.
#--------------------------------------------------------------------------
# * Determine if Equippable
# item : item
#--------------------------------------------------------------------------
def equippable?(item)
# If weapon
if item.is_a?(RPG::Weapon)
# If included among equippable weapons in current class
if $data_classes[@class_id].weapon_set.include?(item.id)
return true
end
end
# If armor
if item.is_a?(RPG::Armor)
# If included among equippable armor in current class
if $data_classes[@class_id].armor_set.include?(item.id)
return true
end
end
return false
end
You mean for EQUAP? If yes, I'll remember to add that in the next version.
Death_Image bugs with RTAB even when it's value is set to false
Yes it's still Equap :D Thanks
@Photi Do you use animated battlers? If you do, place that addon between =begin and =end.
If not it's out of my skills to fix :f
And hey
I'm getting an error on every Shaded Text-lines when choosing "Gradient opacity" in the ST Menu.. it's a 'cannot convert Nil into string' error (or Type Error... dunno how it changes)
Scripts I'm using are Tons of Add Ons, Analysis system, StormTronics menu and CPSaveLayout.
no, I'm not using animated battlers, or animated battlers for DBS
I'm using static battlers.
I don't even have Death pose on.
I'll check that. I haven't tested Death Image with RTAB.
BTW, I noticed that a couple of the reported errors before were caused because you haven't read the instructions:
Quote# add-ons here work with each other with a success rate of 99%. This add-on
# collection itself WILL corrupt your old savegames. May cause
is there a call script or somthing i could use to call the show map name script in the ring menu im useing
Its actually pretty easy to call the map name.
First use this mini script and call with $game_map.map_name
#==============================================================================
# ** Juan's Map_Name
#------------------------------------------------------------------------------
# by Juan
# Version 1.0
# Type: Mini Script
# Made 4/22/08
#==============================================================================
#
#
# Compatibility
# This is 100% perchant compatable with the sdk and any other script.
#
#
# Features
# Call the map name
#
# Version History
#
# Version 1.0
# -> This script was first made.
#
#
# Instructions
# To call the map name use $game_map.map_name
# FAQ (Frequently Asked Questions):
# None yet
#
#
# Author's Notes
# Any bugs email me juanpena1111@yahoo.com or post in the topic
# Credit me and enjoy.
#
#
#==============================================================================
# Scene_Title
#==============================================================================
class Scene_Title
alias main_juan_cms_later main
def main
$map_infos = load_data('Data/MapInfos.rxdata')
$map_infos.keys.each {|key| $map_infos[key] = $map_infos[key].name}
main_juan_cms_later
end
end
#==============================================================================
# Game_Map
#==============================================================================
class Game_Map
def map_name
return $map_infos[@map_id]
end
end
that now what i need exactly im using this script tring to make it in the exact spot as urs
#------------------------------------------------------------------------------
# Ring_Menu
#------------------------------------------------------------------------------
# By: XRXS, Dubealex, and Hypershadow180
#------------------------------------------------------------------------------
class Scene_Menu
#------------------------------------------------------------------------------
# Initialize
#------------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
$location_text=[]
$gold_text=[]
$window_size=[]
$ring_menu_text=[]
$chara_select=[]
@window_opacity=[]
@chara_select=[]
@window_position=[]
# create HUD if HUD_ENABLED is turned on and HUD active
@hud = Hud.new if BlizzABS::Config::HUD_ENABLED && $game_system.hud
$location_text[0]="Blackadder ITC" # Font Type
$location_text[1]=42# Font Size
$location_text[2]=9 # Location Title Color
$location_text[4]=9 # Map Name Color
$location_text[3]="" # Text
@window_opacity[0]=0 # Border Opacity
@window_opacity[1]=0 # Background Opacity
$window_location_skin="001-Blue01" # Location Windowskin
$window_gold_skin="001-Blue01" # Gold Windowskin
@window_position[0]=478 # X Axis Position
@window_position[1]=0 # Location Y Axis Position
@window_position[2]=384 # Gold Y Axis Position
$window_size[0]=160 # Length
$window_size[1]=96 # Height
$ring_menu_text[0]="Arial Black" # Font Type
$ring_menu_text[9]=8 # Font Color
$ring_menu_text[8]=20 # Font Size
$ring_menu_text[1]="Items"
$ring_menu_text[2]="Skills"
$ring_menu_text[3]="Equip"
$ring_menu_text[4]="Stats"
$ring_menu_text[5]="Controls"
$ring_menu_text[6]="Save"
$ring_menu_text[7]="Quit"
@chara_select[0]=408 # X Axis Position
@chara_select[1]=0 # Y Axis Position
$chara_select[0]="Arial Black" # Font Type
$chara_select[1]=0 # Font Color
$chara_select[5]=24 # Font Size
$chara_select[2]=255 # Border Opacity
$chara_select[3]=130 # Background Opacity
$chara_select[4]="001-Blue01" # Windowskin
end
#------------------------------------------------------------------------------
# Main
#------------------------------------------------------------------------------
def main
@window_location = Window_Location.new
@window_location.x = @window_position[0]
@window_location.y = @window_position[1]
@window_location.opacity = @window_opacity[0]
@window_location.back_opacity = @window_opacity[1]
@spriteset = Spriteset_Map.new
px = 320
py = 280
@command_window = Window_RingMenu.new(px,py)
@command_window.index = @menu_index
if $game_party.actors.size == 0
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
@command_window.z = 100
if $game_system.save_disabled
@command_window.disable_item(4)
end
@status_window = Window_RingMenuStatus.new
@status_window.x = @chara_select[0]
@status_window.y = @chara_select[1]
@status_window.z = 200
@status_window.opacity=$chara_select[2]
@status_window.back_opacity=$chara_select[3]
@status_window.visible = false
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@spriteset.dispose
@window_location.dispose
@command_window.dispose
@status_window.dispose
# delete HUD if HUD exists
@hud.dispose if @hud != nil
end
#------------------------------------------------------------------------------
# Update
#------------------------------------------------------------------------------
def update
@window_location.update
@command_window.update
@status_window.update
if @command_window.active
update_command
return
end
if @status_window.active
update_status
return
end
end
#------------------------------------------------------------------------------
# Update Comman
#------------------------------------------------------------------------------
def update_command
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Map.new
return
end
if Input.trigger?(Input::C)
if $game_party.actors.size == 0 and @command_window.index < 4
$game_system.se_play($data_system.buzzer_se)
return
end
case @command_window.index
when 0
$game_system.se_play($data_system.decision_se)
$scene = Scene_Item.new
when 1
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Skill.new(@status_window.index)
when 2
$game_system.se_play($data_system.decision_se)
$scene = Scene_Equip.new(@status_window.index)
when 3
$game_system.se_play($data_system.decision_se)
$scene = Scene_Status.new(@status_window.index)
when 4
$game_system.se_play($data_system.decision_se)
$scene = Scene_Controls.new
when 5
if $game_system.save_disabled
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Save.new
when 6
$game_system.se_play($data_system.decision_se)
$scene = Scene_End.new
end
return
end
return if @command_window.animation?
if Input.press?(Input::UP) or Input.press?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@command_window.setup_move_move(Window_RingMenu::MODE_MOVEL)
return
end
if Input.press?(Input::DOWN) or Input.press?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@command_window.setup_move_move(Window_RingMenu::MODE_MOVER)
return
end
end
#------------------------------------------------------------------------------
# Update Status
#------------------------------------------------------------------------------
def update_status
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@command_window.active = true
@status_window.active = false
@status_window.visible = false
@status_window.index = -1
return
end
if Input.trigger?(Input::C)
case @command_window.index
when 1
if $game_party.actors[@status_window.index].restriction >= 2
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
$scene = Scene_Skill.new(@status_window.index)
when 2
$game_system.se_play($data_system.decision_se)
$scene = Scene_Equip.new(@status_window.index)
when 3
$game_system.se_play($data_system.decision_se)
$scene = Scene_Status.new(@status_window.index)
end
return
end
end
end
#------------------------------------------------------------------------------
# Window_RingMenu
#------------------------------------------------------------------------------
class Window_RingMenu < Window_Base
STARTUP_FRAMES = 20
MOVING_FRAMES = 5
RING_R = 64
ICON_ITEM = RPG::Cache.icon("034-Item03")
ICON_SKILL = RPG::Cache.icon("044-Skill01")
ICON_EQUIP = RPG::Cache.icon("001-Weapon01")
ICON_STATUS = RPG::Cache.icon("050-Skill07")
ICON_CONTROLS = RPG::Cache.icon("039-Item08")
ICON_SAVE = RPG::Cache.icon("038-Item07")
ICON_EXIT = RPG::Cache.icon("046-Skill03")
ICON_DISABLE= RPG::Cache.icon("")
SE_STARTUP = "056-Right02"
MODE_START = 1
MODE_WAIT = 2
MODE_MOVER = 3
MODE_MOVEL = 4
attr_accessor :index
#------------------------------------------------------------------------------
# Initialize
#------------------------------------------------------------------------------
def initialize( center_x, center_y )
super(0, 0, 640, 480)
self.contents = Bitmap.new(width-32, height-32)
self.contents.font.name = $ring_menu_text[0]
self.contents.font.color = text_color($ring_menu_text[9])
self.contents.font.size = $ring_menu_text[8]
self.opacity = 0
self.back_opacity = 0
s1 = $ring_menu_text[1]
s2 = $ring_menu_text[2]
s3 = $ring_menu_text[3]
s4 = $ring_menu_text[4]
s5 = $ring_menu_text[5]
s6 = $ring_menu_text[6]
s7 = $ring_menu_text[7]
@commands = [ s1, s2, s3, s4, s5, s6, s7]
@item_max = 7
@index = 0
@items = [ ICON_ITEM, ICON_SKILL, ICON_EQUIP, ICON_STATUS, ICON_CONTROLS, ICON_SAVE, ICON_EXIT ]
@disabled = [ false, false, false, false, false, false, false]
@cx = center_x - 16
@cy = center_y - 16
setup_move_start
refresh
end
#------------------------------------------------------------------------------
# Update
#------------------------------------------------------------------------------
def update
super
refresh
end
#------------------------------------------------------------------------------
# Refresh
#------------------------------------------------------------------------------
def refresh
self.contents.clear
case @mode
when MODE_START
refresh_start
when MODE_WAIT
refresh_wait
when MODE_MOVER
refresh_move(1)
when MODE_MOVEL
refresh_move(0)
end
rect = Rect.new(@cx - 272, @cy + 24, self.contents.width-32, 32)
self.contents.draw_text(rect, @commands[@index],1)
end
#------------------------------------------------------------------------------
# Refresh Start
#------------------------------------------------------------------------------
def refresh_start
d1 = 2.0 * Math::PI / @item_max
d2 = 1.0 * Math::PI / STARTUP_FRAMES
r = RING_R - 1.0 * RING_R * @steps / STARTUP_FRAMES
for i in 0...@item_max
j = i - @index
d = d1 * j + d2 * @steps
x = @cx + ( r * Math.sin( d ) ).to_i
y = @cy - ( r * Math.cos( d ) ).to_i
draw_item(x, y, i)
end
@steps -= 1
if @steps < 1
@mode = MODE_WAIT
end
end
#------------------------------------------------------------------------------
# Refresh Wait
#------------------------------------------------------------------------------
def refresh_wait
d = 2.0 * Math::PI / @item_max
for i in 0...@item_max
j = i - @index
x = @cx + ( RING_R * Math.sin( d * j ) ).to_i
y = @cy - ( RING_R * Math.cos( d * j ) ).to_i
draw_item(x, y, i)
end
end
#------------------------------------------------------------------------------
# Refresh Move
#------------------------------------------------------------------------------
def refresh_move( mode )
d1 = 2.0 * Math::PI / @item_max
d2 = d1 / MOVING_FRAMES
d2 *= -1 if mode != 0
for i in 0...@item_max
j = i - @index
d = d1 * j + d2 * @steps
x = @cx + ( RING_R * Math.sin( d ) ).to_i
y = @cy - ( RING_R * Math.cos( d ) ).to_i
draw_item(x, y, i)
end
@steps -= 1
if @steps < 1
@mode = MODE_WAIT
end
end
#------------------------------------------------------------------------------
# Draw Item
#------------------------------------------------------------------------------
def draw_item(x, y, i)
rect = Rect.new(0, 0, @items[i].width, @items[i].height)
if @index == i
self.contents.blt( x, y, @items[i], rect )
if @disabled[@index]
self.contents.blt( x, y, ICON_DISABLE, rect )
end
else
self.contents.blt( x, y, @items[i], rect, 128 )
if @disabled[@index]
self.contents.blt( x, y, ICON_DISABLE, rect, 128 )
end
end
end
#------------------------------------------------------------------------------
# Disable Item
#------------------------------------------------------------------------------
def disable_item(index)
@disabled[index] = true
end
#------------------------------------------------------------------------------
# Setup Move Start
#------------------------------------------------------------------------------
def setup_move_start
@mode = MODE_START
@steps = STARTUP_FRAMES
if SE_STARTUP != nil and SE_STARTUP != ""
Audio.se_play("Audio/SE/" + SE_STARTUP, 80, 100)
end
end
#------------------------------------------------------------------------------
# Setup Move Move
#------------------------------------------------------------------------------
def setup_move_move(mode)
if mode == MODE_MOVER
@index -= 1
@index = @items.size - 1 if @index < 0
elsif mode == MODE_MOVEL
@index += 1
@index = 0 if @index >= @items.size
else
return
end
@mode = mode
@steps = MOVING_FRAMES
end
#------------------------------------------------------------------------------
# Animation
#------------------------------------------------------------------------------
def animation?
return @mode != MODE_WAIT
end
end
#------------------------------------------------------------------------------
# Window_RingMenuStatus
#------------------------------------------------------------------------------
class Window_RingMenuStatus < Window_Selectable
#------------------------------------------------------------------------------
# Initialize
#------------------------------------------------------------------------------
def initialize
super(204, 64, 232, 352)
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.size = $chara_select[5]
refresh
self.active = false
self.index = -1
end
#------------------------------------------------------------------------------
# Refresh
#------------------------------------------------------------------------------
def refresh
self.contents.clear
self.windowskin = RPG::Cache.windowskin($chara_select[4])
self.contents.font.name = $chara_select[0]
self.contents.font.color = text_color($chara_select[1])
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
x = 80
y = 80 * i
actor = $game_party.actors[i]
draw_actor_graphic(actor, x - 60, y + 65)
draw_actor_name(actor, x, y + 2)
draw_actor_hp(actor, x - 40, y + 26)
draw_actor_sp(actor, x - 40, y + 50)
end
end
#------------------------------------------------------------------------------
# Update Cursor Rect
#------------------------------------------------------------------------------
def update_cursor_rect
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(0, @index * 80, self.width - 32, 80)
end
end
end
#------------------------------------------------------------------------------
# Game_Map
#------------------------------------------------------------------------------
class Game_Map
#------------------------------------------------------------------------------
# Name
#------------------------------------------------------------------------------
def name
$map_infos[@map_id]
end
end
#------------------------------------------------------------------------------
# Scene_Title
#------------------------------------------------------------------------------
class Scene_Title
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
end
#------------------------------------------------------------------------------
# Window_Location
#------------------------------------------------------------------------------
class Window_Location < Window_Base
#------------------------------------------------------------------------------
# Initialize
#------------------------------------------------------------------------------
def initialize
super(0, 0, $window_size[0], $window_size[1])
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $location_text[0]
self.contents.font.size = $location_text[1]
refresh
end
#------------------------------------------------------------------------------
# Refresh
#------------------------------------------------------------------------------
def refresh
self.contents.clear
self.windowskin = RPG::Cache.windowskin($window_location_skin)
self.contents.font.color = text_color($location_text[2])
self.contents.draw_text(0, 0, 120, 32, $location_text[3])
self.contents.font.color = text_color($location_text[4])
self.contents.draw_text(0, -1, 130, 32, $game_map.name, 2)
end
end
#------------------------------------------------------------------------------
# Window_MenuGold
#------------------------------------------------------------------------------
class Window_MenuGold < Window_Base
#------------------------------------------------------------------------------
# Initialize
#------------------------------------------------------------------------------
def initialize
super(0, 0, $window_size[0], $window_size[1])
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = $gold_text[0]
self.contents.font.size = $gold_text[1]
refresh
end
#------------------------------------------------------------------------------
# Refresh
#------------------------------------------------------------------------------
def refresh
self.contents.clear
self.windowskin = RPG::Cache.windowskin($window_gold_skin)
self.contents.font.color = text_color($gold_text[2])
self.contents.draw_text(4, 0, 120, 32, $gold_text[4])
self.contents.font.color = text_color($gold_text[3])
self.contents.draw_text(4, 32, 120, 32, $game_party.gold.to_s, 2)
end
end
i have been messing with it alot its realy close to urs but not quit there
Alright, pitching this addon again because it's something that's kinda needed for any RPG.
Damage Limit:
Let the player set a primary damage limit and an "absolute" damage limit. Also, the ability to setup specific skills that don't have a damage limit, and also the ability to configure weapons that can break damage limits (ones that can break the primary damage limit, and in some cases the "absolute" limit). Also, there should be status effects that can do this, just to add functionality.
Example:
Final Fantasy's usual Damage Limit is 9999, the default HP limit for basic characters. The absolute damage limit is always 99999 (avoids HOLY SH- Skills), the Break Damage Limit ability has always been a staple of the "Ultimate" weapons, and some attacks (albiet rare ones, usually the best skills in the game) are able to break the absolute damage limit.
Isn't that now the third time you mentioned that? xD
As I said, I have all suggestions ever made in a file (even many of the bad suggestions), but I never have the time to actually add them.
i get an error in battle, i get this error whenever i target an enemy with any status affect on, the error i get is
in Part 1 of Tons, one line 3354 there's a NameError
undefined local varible of method 'w' for #<Window_Help:0x3d00260>
and on that line i have
x = self.contents.width/2 - w/2
when i delete the line, i don't get an erroe but the down side is that the enemies name doesn't show up unless they are affected by a status affect and really that's isn't a good thing to have
So, why was this script split into 3 sections??
There seems to be a problem with RMXP that points to the wrong line when a bug happens if the script exceeds a specific number of lines. Same reason why Blizz-ABS got split up. The problem appear to happen somewhere after 7000 or 8000 lines since I never had problems with scripts less than that.
@Memor-X: I'll fix that as soon as I can.
Death toll doesn't seem to work with BABS ::)
ORLY?! :V
hey can someone explain Picture Movie Scenes script to me? i wanna do like an intro thingy. but i get confused reading the directions for that script.
like when it says
"# If you want to use this scene an intro before the Title, you have to apply
# the syntax mentioned above in the Main script. Just change the
# $scene = Scene_Title.new
# to the desired syntax and don't forget to set its returning to Scene_Title."
do i edit the script named "Main"? cause i was told by a friend to never touch that script or I'll ruin my game haha.
You shouldn't touch it if you don't know what you're doing. But since I left exact instructions what you need to edit, you will be fine if you follow them. :) In other words: You can modify it without ruining your game.
Hey Blizzard, someone is using your script to show off on youtube and isnt crediting you...
http://www.youtube.com/watch?v=iYtq3HFFfBs
hey Blizzard thanks for the help. sorry to be a bother but i have another question. are you able to play background sound along with background music at the same time with the picture movie scene script?
I haven't build that in already? O_o I'll do that ASAP.
@mumerus: Thanks, I just posted there. :3
Hey everyone...
Blizzard, just how far has this script come since the beginning of all the sites changes??
Not too far. I had barely time to work on it. I think that v6.0x was still on the old CP site.
Yeah, but still...That means I need to update sometime.
Ideas:
Counter state (able to change percent of doing a counter and how much percent of the damage will be returned)
Absorbing HP/MP weapons
Discharge (absorbs all the damage for the same battle, then releases the total amount of damage given to the user, ie, if a enemy attack Jason and cause 5000 and another enemy hit him and causes 1000, then when Jason use Discharge it causes 6000 damage regardless of defense and resistance)
Heh, as soon as the stuff I'm waiting to see is put into Tons of Addons, I'm gonna go crazy ^^
Chaotic Fury is using v. 6.02, and it's doing pretty well at the moment.
Keep up the good work Blizz-man, be expecting a big thanks in the credits for the demo...which I better get my ass working on, eh?
Lol, yeah. I'm currently revamping Blizz-ABS Config for 2.0. It will have a much better object model standing behind the application and be made much better for future expansions. I will also implement a full reader and writer for Ruby's Marshal format which I will use to save the cfg files. ^_^ It might even support a multiple document interface.
After I'm done I'll work on Blizz-ABS 1.99. Then comes a new Tons and some fixes and extras for a couple of other scripts (like the compatibility plugin for CLRS and Blizz-ABS <3). And then I will continue working on CP. ^_^ When Blizz-ABS 2.0 with the new Blizz-ABS Config comes out is not decided yet.
oh blizz I'm not sure if this question ask been asked already but how easy is it to extract individual add-ons form this script so you can use the ones you want and avoid compatibility errors from others??
for example I managed to De-SDK a pixel movement script but it has issues with tons, it throws an error when the pixel movement script tries to check passibility.
You can just delete the code of the add-ons. That's why every add-on was separated.
Really? none of them use part of another? well that makes it really simple! thank for the help!
Minimap uses Quick Passability and Hud can use the Bars, but that's already it.
Update to v6.54b.
A small error in 'Status Effects as Icons' where draw_text gets a nil for the string (which is the enemy name), somewhere around line 3367 in Part 1.
end
if enemy.states.size > 0
---->text = enemy.name<-----
s = enemy.states.find_all {|i| $data_states[i].rating > 0}
EDIT:
Something wrong with Passability addons (Quick Pass. Test => minimap)
(http://img136.imageshack.us/img136/1746/clipboard01nt0.th.jpg) (http://img136.imageshack.us/my.php?image=clipboard01nt0.jpg)
A bug with Blizz-Art in Tons of addons, making an error with STCMS when trying to change bar opacity:
def bar_opacity=(alpha)
@bar_opacity = [[alpha, 0].max, 255].max
end
That problem with enemy name must be a custom script. enemy.states.size couldn't be more than 0 if enemy.name doesn't work.
Not in this case. That if block has an else case in which 'text' is not defines, but 'set_text(text, 1)' is called later, which throws a type error with draw_text (can't convert nil to string). 'text' should be defined before that 'if' line.
I'll look into it.
Also, how much effort will it take to integrate BlizzABS's minimap into tons? I particularly want the that autotile rendering feature instead of just blocks. I'm actually downloading BABS as I speak to try it out.
You need to take the Minimap class out. You need the part of the Game_Map that creates @virtual_passability, you might need the code for it as well. It should take an hour or less which I lack. -_-
And which I have, about 6 times over :woot: I'll be on it then.
Great!
here's another idea for an addon to tons:
Icons for the DBS Main Menu Options...[Graphics]
No. It's too custom and incompatible because it would affect all other scripts using the command window.
YAY! :D :clap:
Im so glad i was able to find you, blizzard.
Thnx, for leaving your website... lucky for me you left it, even if... well... i better not talk about things i dont know
Anyway... I truly love your scripts. They are... most of the time easy to understand and modify to some point.
Gotta see all the new stuff you added to it.
BTW, i know your location... :ninja:
or at leats an old one XD
Keep up the good work! :up:
hey... i was just thinking some ideas to add to your compilation...
1) Elements endow, just like ragnarok
that way your normal attack can gain the property of an element for a limited time or turns
it actually could be cool somehow for a support type character, like a bard or a....magical bard... or a perverted priest perphaps
2) Cover (Cover in FF, Sacrifice in iRo? kRo?)
basically, you take damage for another character...
those are some ideas, hope they are usefull
well, I didnt saw those scripts in there or maybe i miss them, or maybe they are already made...
Both add-ons will cause complications with CBS-es. So no.
could I sagest an add on to an add on? :)
the equip skills add on. would it be possible to make it so that if you use the skill that the equipment gives that bothe the skill and the effects of the equipment are disabled (like the equipment was unequipped) for 'x' number of turns and then after 'x' turns or the battle ended the skill and equipment effects are re enabled?
Possible yes, recommended no. Same reason like I described in my post above. There are several equipment systems which mess around with the equipping code and that can cause complications.
hmm too bad would have been a nice add on...
For some reason, the link takes me to blank text files. Is this just my comp?
I know, you're not the only one. Me and a few other are getting a similar error. (-_-') My host is really a bitch. Just try later again, that's all I can say for now. =/
Suggestion also...
How about visual equipment? is it possible and can it be compatible also to BABS?
Thanks.
Blizz, if you upload a zip of them to megaupload or sendspace, I'll download them and host them on one of my sites. (I have infinite webspace and bandwith on Celenath.com)
Not necessary. My actual problem is my monthly bandwidth. Uploading all my stuff twice each time (once my site, once yours) would eat it away even faster. -_-
@drahc: Would complicated thing imensely. Even if I manage that system, it would lag like hell.
:^_^': Is a Counter-Attack script still possible or it's too big?
:uhm: btw, I have a question with the Animated Battlers for the default battlesystem, see as it uses frames, does it uses frames only for standing or you can put also frames to attack, use spell, get hit, etc.?
I was just curious to it.
:x &, will I have to make more copies of the battlers pictures if I use the same sheet for monsters in a different color?
~ Caro Ru Lushe
I haven't had the time to add a counter attack script.
No, only standing frames, hence the name "Non-Action BS".
And no, you won't.
Question: Does the passive skill also give stats? When its
- its auto-grant and when its [-] it grows a little resistant?
They apply an additional effect. Every other effect is unaffected. That means that both effects apply. If you have equipment with extra STR, you will get both bonuses, if they are of the opposite sign, they subtract from each other.
Quote from: Blizzard on August 10, 2008, 09:06:53 pm
Not necessary. My actual problem is my monthly bandwidth. Uploading all my stuff twice each time (once my site, once yours) would eat it away even faster. -_-
@drahc: Would complicated thing imensely. Even if I manage that system, it would lag like hell.
maybe i was dreaming to much hehehehe. Well how about a minigame like a card battle or something is it possible? i think it's a great addition to your BABS. Thanks.
This is a completely differemt system. But you actually can use an additional battle system if it's carried out in the battle scene. i.e. you can easily use the DBS.
Bug Report: Death Image not working with Center Battlers, image is not being centered.
I'll fix it in the next release. :3
when i go into the menu then options and try to change bar opicity in game is comes up with an error wich is
Tons of addons part 1 line 1744
cannot convert nil into string.
Quote from: shadonking on August 19, 2008, 03:57:08 pm
when i go into the menu then options and try to change bar opicity in game is comes up with an error wich is
Tons of addons part 1 line 1744
cannot convert nil into string.
I get errors like that a lot when I put scripts in the wrong order, are you sure you have it in the right place?
And have you configured everything? (those are what causes 80% of my issues)
Also don't forget that it sorrupts your old savegames and you have to use it with a new game after adding the scripts.
i have put it in the correct order and place and its nothing to to with the saves, its the extra feature in options with the different types of bars wich works and the bar opacity which doesnt. and i have changed nothing in the script.
Remove that add-on temporarily / comment it out to find the real cause of the bug and post the new error message. I have to make text shading add-on that way so you can't disable it in-game. -_- It just catches too often the errors of other scripts.
It is. I got the same error message and forgot to report it. When I took out the opacity option, I never got it again. So the error IS caused by the opacity setting
The questions is which part of it.
what part of the script should i comment/ delete. i cant find the correct area
Quote from: Blizzard on August 19, 2008, 06:54:15 pm
Remove that add-on temporarily / comment it out to find the real cause of the bug and post the new error message. I have to make text shading add-on that way so you can't disable it in-game. -_- It just catches too often the errors of other scripts.
Or have you forgotten where you are getting the error?
Quote from: Blizzard on August 19, 2008, 06:54:15 pm
Remove that add-on temporarily / comment it out to find the real cause of the bug and post the new error message. I have to make text shading add-on that way so you can't disable it in-game. -_- It just catches too often the errors of other scripts.
no i nidnt know where the bar opasity was in the script but its ok becuase iv found it now and iv disabled it and its working fine now
Quote from: shadonking on August 19, 2008, 03:57:08 pm
Tons of addons part 1 line 1744
This is the
Simple Text Shade add-on,
NOT the bar opacity whatever because there is no "bar opacity" add-on. (-_-) Well, when people don't care to read what I say or do what I say to fix a bug, then I should stop wasting my time by posting.
to fix the bug, you just remove the bar opacity option in storm-tronics, just search through the code until you find the "options" section.
Quote from: shadonking on August 20, 2008, 09:42:52 am
no i nidnt know where the bar opasity was in the script but its ok becuase iv found it now and iv disabled it and its working fine now
He already did instead of helping me identify the bug.
The SP damage addon doesn't seem to correctly restore SP when used on allies/self. It just destroys SP as if you were an enemy.
Set the power to a negative number and it should work fine.
Ah, well I figured out how to get it to restore SP, but it seems like sometimes at random (I have no idea what causes it) but the abilities will damage/heal HP instead of SP. Not sure what would cause the issue, as it is random.
EDIT: After trying to recreate the bug, I think I determined that it just happened the first time I'd modify the ability. After that it seems to work correctly.
For the caterpillar portion of the script, if you have it set to remove someone from the caterpillar after they die does that only work for the people who aren't forced to be in the party?
I'm not sure I understand what you mean. This works for all actors in the party.
With the SP damage skill, if you heal SP to a target with full health, it will cast a heal to their hit points instead of SP. Using version 6.54b
SPKILL_IDS = [58, 59, 60]
You need to add the skills ID to this array, otherwise it won't be recognized as skill that affects SP. And you have to turn it on.
I've done those steps. The thing is, it works just fine if the target is not at full health.
Basically, if I'm casting an ability to recover SP on Battler A, if Battler A is NOT at full health, he will gain SP. If he is at full health, the ability will heal him for HP (and heal him for nothing anyways since he's at full health.) I haven't tested it with dealing damage to SP, only restoring SP. I'm not a scripter but I suspect it has something to do with Game Battler handling heals at full health differently, and as such bypasses the SP Damage script.
Ok. I updated Tons, but I haven't tested it. Try it out now.
I just tested it, and if the target of the SP recover skill is at full health, it no longer heals HP nor SP, it simply does has no effect. =/ It still works if the target has less than full health.
By the way, the SP text was bugged which is not really a big deal, it would show -SP when I was recovering SP, and vice versa. I fixed it by changing
self.damage = sprintf('%+d %s', self.damage, $data_system.words.sp)
into
self.damage = sprintf('%+d %s', self.damage*-1, $data_system.words.sp)
=]
Ok, I put up another fix.
If I knew how to insert the skill IDs into Multi-Hit, this would be awesome. XD
But I won't pester you now, I won't need that until the third demo of my game or so.
Quote from: Blizzard on September 04, 2008, 09:18:56 pm
Ok, I put up another fix.
Hmm, new version is back to original problem of healing HP when target at full health.
It's hard to think clearly at 3am. There you go, I fixed it.
@Pokol:
# Further there are 3 configurations. Configuration 1 is for weapons,
# Configuration 2 is for skills and Configuration 3 is for normal enemy
# attacks. Use following template to set up how many hits should be done:
#
# when ID then return HITS
#
# ID - ID of weapon, skill or enemy, depending on the configuration number
# HITS - number of hits
...
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 3
when 2 then return 4
when 3 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
...
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 57 then return 3
when 58 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
...
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Is there a conspiracy in the RM community? Something like
Quote from: Leader of the conspiracyNEVER READ SCRIPT INSTRUCTIONS! WE WILL ANNOY THE HECK OUT OF SCRIPTERS WITH IRRELEVANT, ALREADY ANSWERED QUESTIONS!
Quote from: Blizzard on September 04, 2008, 09:42:15 pm
It's hard to think clearly at 3am. There you go, I fixed it.
@Pokol:
[code]# Further there are 3 configurations. Configuration 1 is for weapons,
# Configuration 2 is for skills and Configuration 3 is for normal enemy
# attacks. Use following template to set up how many hits should be done:
#
# when ID then return HITS
#
# ID - ID of weapon, skill or enemy, depending on the configuration number
# HITS - number of hits
...
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 3
when 2 then return 4
when 3 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
...
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 57 then return 3
when 58 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
...
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Is there a conspiracy in the RM community? Something like
Quote from: Leader of the conspiracyNEVER READ SCRIPT INSTRUCTIONS! WE WILL ANNOY THE HECK OUT OF SCRIPTERS WITH IRRELEVANT, ALREADY ANSWERED QUESTIONS!
[/code]
Actually, there's a READ SCRIPT INSTRUCTIONS, BUT DON'T UNDERSTAND THEM AND ASK ANYWAYS conspiracy. XD
Thanks so much for the fix Blizz, worked perfect =]
And to answer your question about MultiHit, look at this section
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 57 then return 3
when 58 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Basically you set up your multi hit skills with
x being the ID of the skill you want to multicast (the ID is the number of the skill in the database) and y being the number of times it is cast. Also remember to set @MULTI_HIT to true, or the entire script won't work =P Be sure to delete any of the default set ups.
I notice something awckward, dunno if it was intentional or not, but whenever I use passive skills, the effect stays even after battle.
& They don't work unless the character receives damage <___<
Was this intentional?
First: Yes.
Second: No.
Passive skills work always, that's why they are passive skills. I can add an "ONLY_IN_BATTLE" option, though.
Can you be more specific with the damage part? I can't figure out what could be causing that, but I could be misunderstanding what you mean.
An "Only_in_Battle" option would be neat. :x
=/ What I meant in the damage part, The passive skill says "miss" all the time, I add damage in the database, and the skill works, but the character takes damage, I took the damage off & it continues to miss, I check if it happened in the menu, the status won't raise, I put "receive 1 damage" in the database, test and the passive skill works fine, except the player looses HP. -__-;; Hope I was clear
Just as it says: Passive skills, you can't use them. :P Best you just set the usage "Occasion" to "Never". Those skills are similar to status effects. In fact maybe people would be better of using status effects. -_-
But putting them to "Never" would be kinda pointless in my opinion, .___.;; I know Status effects could be better, but, a skill with the effect to rise the Attack during battle only & can continue to be raised is more enjoyable. It could also be neat to have skills that are passive skills that lower the enemy's stats or vice versa =p
:< It would be quite revolutionary. :3
Well, you don't have to. But you need to set them up right or they won't do any damage. A normal skill setup should work fine.
Hello Blizzard,
I'm getting an error using the Multi-Hit addon portion of your tons of addons. Right after a battle the screen remains black and I get an error: Script SDK line 6791: No Method Error occurred. Undefined method 'attack effect' for # <Array:0x38c1b20>
I know its something that's not just SDK because if I take out that script it targets the Scene_Battle_4 line 213 with the same error. It doesn't happen when I turn the Multi-hit mod off. What I think happens is that it hangs up when there is still another hit to be made by one of the battlers in your party, but all the enemies are vanquished.
Any fix to this?
Interesting, I will look into that error. Which other scripts are you using, BTW?
I am using the following scripts:
Soul Rage system
Quest system
Crafting system
Dragon Quest VII Class Change
(and of course tons of addons )
<3 your tons of addons btw. Your scripts I trust the most out of anyone's not to mention they are easy as hell to use. I can tell you take steps to make them script user friendly.
You don't seem to have them in the right order...
Read this topic and rearrange your scripts first. Then try out if you are still getting that error.
http://forum.chaos-project.com/index.php/topic,23.0.html
Also, is that an old version of Soul Rage? You should use the newest versions of my scripts to ensure maximum compatibility.
Here are the script versions listed in the order I have placed them:
SDK 2.3
Crafting System 1.3
Quest System 2.0
Alignment (unknown version LOL)
Blood Mage 1.5.9
TEST (just a test page used with the DQ Menu)
Dragon Quest Menu (last update 11/12/07)
Tons of Addons Part 1 6.59b
Tons of Addons Part 2
Tons of Addons Part 3
Chaos Rage Limit System 6.04
Dragon Quest VII Class Change** 1.7
I have done battle tests and when all attacks are completed on the battler the battle will end accordingly, gold and exp is distributed etc. However, when there are still attacks to be made it will trigger the error. The script line it targets is: target.attack_effect(@active_battler). So if I can find a way to maybe shut down the attack if all enemies are killed it will fix it.
**was placed above the Dragon Quest Menu script following your script order page but caused an error so I put it back down below. I did the battle tests with it above and it still triggerred the multi-hit error so I put it back down.
I see... Hm, its probably one of the other scripts because they change something that Multi-Hit uses or it's Multi-Hit itself. Can you upload your Scripts.rxdata (from your Data folder) to sendspace.com and post a download link? I will look into that problem directly.
Here is the address:
http://www.sendspace.com/file/r7c1j8 (http://www.sendspace.com/file/r7c1j8)
I have checked and I think the problem is simply caused because "Dragon Quest VII Class Change" is below Tons of Add-ons because it overwrites stuff that Tons uses. Also, have you turned on the Multi-Hit script?
BTW, Tons v6.6b is out. :naughty:
Thanks Blizz I will check it out. I'll try it without the dragon quest class change script. And yes I did have multi-hit turned on. I'm aware since there's a lot of addons bundled into that its all set on false as a default. Also I'll be sure to download the new version. Because OMG this is my favorite script lol.
Like I said you made the thing so easy to use and edit with specific instructions. For an amateur RGSS programmer like me, that's great :D
hey, i read the comments but it wasnt written, for LOCATION_NAMES how do i turn it off and on via script? My intro cinimatic pans over various maps and I dont want the location names to show during it.
Are you sure that it wasn't written? ;)
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 1-2, GRAPHIC add-ons
#
# You can enable/disable any add-on here if you wish. Set the value to false
# to disable it initially. To turn it on/off ingame, just use the Call script
# command with one of these syntaxes:
#
# $game_system.NAME_OF_THE_ADDON = true
# $game_system.NAME_OF_THE_ADDON = false
#
# where NAME_OF_THE_ADDON is the same variable as the one used below.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
oh it was in that block, i was looking in the location names section comments
im sorry i had no idea that the same command worked with all your scripts, i learned something new thanks :)
I am actually surprised this isn't a Sticky topic already. I think it's actually even more used than BlizzABS.
I think I stickied Blizz-ABS because I noticed that stickied topics are more often displayed in Google Search results. I'll sticky this here as well then. :P
iv just gotten the newer version of tons of addons and i keep getting an error. its weird becuase i havent even touched the script.
(http://img236.imageshack.us/img236/7557/errorve3.png)
This Tons doesn't have Death Roulette anymore since it can be created by combining the Roulette and the Status Breaker Skill add-ons. I will put up a slightly edited version of 1.99 so the new Tons of Add-ons can work nomally, but random targets won't work for now.
ok, i'll get the edited version of 1.99 tomorow (will it be ready then?). thanks
http://forum.chaos-project.com/index.php?topic=106.msg41131#msg41131
You don't have to redownload, just add the patch code right below Blizz-ABS.
EDIT: Tons v6.61b is up. I finally managed to fix that issue with repeated cursor moving and playing of sound effects in my own game so I used the same trick to update Custom Controls here and in Blizz-ABS. Of course this fix in Blizz-ABS will come with v2.0. I also added a fix that prevents you from using Custom Controls when Blizz-ABS is installed as well.
EDIT: Tons v6.7b is up. There you go chino69.
Blizz,
Thanks so much for putting the Chain Status Effects and including that in Tons!
OMG the script works beautifully in my game! Kudos to you! When my game gets released I will be sure to credit you. Thanks so much for being the still existing foundation of the RMXP world (that I came late into).
I came into it quite late as well. But it was still not too late for me. xD
I recently found a little "glitch" in the caterpillar portion of the script: When caterpillar is turned to false via the call script function, rather than have the shown caterpillar members disappear
the shown caterpillar members will freeze in position. If the caterpillar script is set to true again while on the same map, they will resume mimicking the players movements from the location they were frozen in. This "glitch" only happens in v2.11b. I've used an early virsion of the caterpillar script (v2.0b) to test for the same problem. But it works fine.
I hate reporting bugs because it's a great script, best caterpillar script I've found actually. On the other hand I hope this helps prefect the script!
:)
i got a simular problem with the hud, when i turn it to false the game freezes, the turn on and off scripts are exactly the same only one is true and one is false so i dont know where im going wrong
works fine
freezes the game
It has to be
False /has/ to go on next line.
You forgot my script call fix found here (http://forum.chaos-project.com/index.php?topic=938.0).
thanks juan i'll check it out
that false thing is really wierd, how come it doesnt need to be the same for true?
Unfortunately the problem still occurs with the caterpillar script even with the Interpreter Script Call Fix installed (above Tons of Add-ons). I double checked the syntaxes that I used to make the script false. False is on a separate line.
Hope this helps.
:)
Link, you misunderstood what his problem was.
@Colinoliver: It has probably something to do with a bug fix I provided in a version after 2.0. I will look into it in a couple of minutes, fix the problem and put up a new version.
EDIT: There you go.
Awesome! Problem solved. Thanks a megaton!
I found a huge problem with the picture movie scenes. If you encrypt a project, you won't get any picture movie scenes after you not only start up the game.exe file but also after you click new game.
The strange thing is, you can see the scenes in a non-encrypted project or on the RPG editor yet not on a encrypted version. This is with the latest version.
O_O I'll take a look at it.
I got a favor of you to ask. If you can, could you post a hotfix for the picture scene in encrypted projects(that is if you can find one) and then put it in the newest version later? I probably won't be online next week. Now, I'm not trying to rush you or anything but if you can, could you please do so? Thanks.
im trying to change the font using your ultimate font overide but the font wont change.
i made a topic here about it.
http://forum.chaos-project.com/index.php?topic=2131.0
I fixed both problems in v6.73b. Also get the new STCMS v5.33b.
Hey Bliz, is there any way to make "passive skills" only show up in the main menu, and not in the skill window during battle? Since they're passive they don't really need to be there. They just clutter the place up.
Great stuff, though. I've been wanting to add passive skills to my game for ages.
Get a custom skill menu for battle which doesn't display the skills that simply can't be used in battle (occassion is "only in menu" or "never"). Just post a script request, somebody will solve it for you. It's a fairly simple edit.
EDIT: Update to v6.8b.
Just a wee question. Is there any way to have the Effects of a Passive Skill to be removed when the Passive Skill itself is removed?
For my case I am using the "Equap Skills" linked with a passive skill that increased HP. But if that item is removed the passive effect still remains.
Any thoughts or help?
Thanks. :)
EDIT: I just realized I could just use the "HP,SP Plus" script :P. *slaps face*
ANOTHER EDIT: I had to go to work so I didn't get a chance to test this. If instead of HP plus I use da Gold multiply passive effect. Yes the effect still lingers when the skill is gone.
Any thoughts?
It could be an error. Basically the effects are calculated out of the existing skills so the effect should disappear when the skills disappears. Are you sure that the skill is gone?
I use a number of these in my game.
Very useful package.
Problem all fixed up.
I knew it was something I did. I did not set the required skill AP to a negative integer. So the skill was automatically learned upon equip.
Thanks for the heads up Blizzard. I would not have noticed the skill was not removed unless you mentioned.
:)
No problem. I'm glad that you like the add-ons. :)
ok, i have a little problem with Different Difficulties.
i have a custom title screen and when you click new game the difficulties come up and every thing is fine but when you press cancel it makes a window box with ?????????? that instead of new game, continue, quite.
i was wondering where in the part of the script that can be changed to stop the window for opening with the ????? in them.
if you need to see the custom title script im using just say and i'll post it.
Have you tried putting that custom title script above/below Tons? And yeah, post the script. It's probably messing up what my add-on is trying to do.
here is the script im using. and it replaces Scene_Title
=begin
=========================================
Professional Title Screen ver. 2.0 English Translation
Script by ???, Edited by Kio !! :D
SFS Patch by shdwlink1993
http://rpg.para.s3p.net/
-->Released and translated by Sonicia.
Search for my name (Sonicia)for the customizing place where you can arange the
graphics where you want them. Please credit Kio, who orginally made this script
compatable, and me for translating, releasing, and finding out how to use it.
Note, in a few rare spots there is still Japanese, since it was code I didnt
change it for fear of messing it up. All comments are translated by Sonicia.
Note: you need continue.png, continue_active.png, newgame.png,
newgame_active.png, shutdown.png, shutdown_active.png, newgameplus.png, and
newgameplus_active.png in your game's graphics\title folder. The graphics must
be the same size, both active and inactive. This means that if you have an
arrow or text make that one first, duplicate, then erase the arrow and edit
the rest of the picture or it will be set off.
=========================================
=========================================
Title menu picture
=========================================
=end
module PARA_TITLE_CUSTOM
# Menu command picture, (true/false)
IMG_MENU = true
#?---Menu command picture Setting---
#Character string of menu command
#MENU_NEWGAME = "new game" # new game
MENU_NEWGAME = '??????' # ??????
#MENU_LOAD = "continuing" # continuing
MENU_LOAD = '???????' # ???????
#MENU_END = "shutdown" # shutdown
MENU_END = '???????' # ???????
MENU_NEWGAMEPLUS = 'new game plus' #new game plus
# window frame (true/false)
WINDOW_TRANS = false
#Transparency of the window frame
WINDOW_OPACITY = 160
#Side size (horizontal?) of # window
WINDOW_WIDTH = 192
#Vertical position of window (0: Coordinate appointment/
#1: The left edge/2: Center/3: Right hand edge)
WINDOW_ALIGN = 2
#When # "coordinate appointment" being, abscissa of the window
WINDOW_POS_X = 0
#Vertical position of # window (0: Coordinate appointment/
#1: Top/2: Center/3: Bottom)
WINDOW_VALIGN = 0
#When "coordinate appointment" being, ordinate of the window
WINDOW_POS_Y = 288
#==========================================
#=begin
#Sonicia
#Customize the location and the graphics make sure you change
#only the numbers, 250 is approxamtely the center of
#the vertical screen.
#Make sure that the command pictures are in the "Graphics/Titles" folder
#=end
#==========================================
#=begin
#New Game Graphic
#IMG_NEWGAME = ['newgame','newgame_active']
#IMG_NEWGAME_X = 100 # Horizontal position
#IMG_NEWGAME_Y = 160 # Vertical position
#Continue Graphic
#IMG_LOAD = ['continue','continue_active']
#IMG_LOAD_X = 250 # Horizontal position
#IMG_LOAD_Y = 160 # Vertical position
#Shut Down Graphic
#IMG_END = ['shutdown','shutdown_active']
#IMG_END_X = 400 # Horizontal position
#IMG_END_Y = 160 # Vertical position
#=end
#My orginal settings for reference Copy and paste if you need to
#New Game Graphic
IMG_NEWGAME = ['newgame','newgame_active']
IMG_NEWGAME_X = 250 # Horizontal position
IMG_NEWGAME_Y = 290 # Vertical position
#New Game Plus Graphic
IMG_NEWGAMEPLUS = ['newgameplus','newgameplus_active']
IMG_NEWGAMEPLUS_X = 250 # Horizontal position
IMG_NEWGAMEPLUS_Y = 290 # Vertical position
#Continue Graphic
IMG_LOAD = ['continue','continue_active']
IMG_LOAD_X = 250 # Horizontal position
IMG_LOAD_Y = 330 # Vertical position
#Shut Down Graphic
IMG_END = ['shutdown','shutdown_active']
IMG_END_X = 245 # Horizontal position
IMG_END_Y = 370 # Vertical position
#END CUSTOMIZABLE AREA
#============================================
#Synthetic method of picture (0: Usually/1: Addition/2: Subtraction)
BLEND_TYPE = 0
end
#------------------------------------------------------------------------------
#======================================
# ? Scene_Title
#======================================
class Scene_Title
#--------------------------------------------------------------------------
# - Main processing
#--------------------------------------------------------------------------
def main
#If battle test
if $BTEST
battle_test
return
end
# Load database
$data_actors = load_data('Data/Actors.rxdata')
$data_classes = load_data('Data/Classes.rxdata')
$data_skills = load_data('Data/Skills.rxdata')
$data_items = load_data('Data/Items.rxdata')
$data_weapons = load_data('Data/Weapons.rxdata')
$data_armors = load_data('Data/Armors.rxdata')
$data_enemies = load_data('Data/Enemies.rxdata')
$data_troops = load_data('Data/Troops.rxdata')
$data_states = load_data('Data/States.rxdata')
$data_animations = load_data('Data/Animations.rxdata')
$data_tilesets = load_data('Data/Tilesets.rxdata')
$data_common_events = load_data('Data/CommonEvents.rxdata')
$data_system = load_data('Data/System.rxdata')
# Make system object
$game_system = Game_System.new
# Make title graphic
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)
# Make command window
s1 = PARA_TITLE_CUSTOM::MENU_NEWGAME
if SL93::NGP
s2 = PARA_TITLE_CUSTOM::MENU_NEWGAMEPLUS
s3 = PARA_TITLE_CUSTOM::MENU_LOAD
s4 = PARA_TITLE_CUSTOM::MENU_END
else
s2 = PARA_TITLE_CUSTOM::MENU_LOAD
s3 = PARA_TITLE_CUSTOM::MENU_END
end
w = PARA_TITLE_CUSTOM::WINDOW_WIDTH
if SL93::NGP
@command_window = Window_Command.new(w, [s1, s2, s3, s4])
else
@command_window = Window_Command.new(w, [s1, s2, s3])
end
if PARA_TITLE_CUSTOM::WINDOW_TRANS
@command_window.opacity = 0
else
@command_window.back_opacity = PARA_TITLE_CUSTOM::WINDOW_OPACITY
end
# Position of the window
case PARA_TITLE_CUSTOM::WINDOW_ALIGN
when 0 then @command_window.x = PARA_TITLE_CUSTOM::WINDOW_POS_X
when 1 then @command_window.x = 0
when 2 then @command_window.x = ( 640 - @command_window.width ) / 2
when 3 then @command_window.x = 640 - @command_window.width
end
case PARA_TITLE_CUSTOM::WINDOW_VALIGN
when 0 then @command_window.y = PARA_TITLE_CUSTOM::WINDOW_POS_Y
when 1 then @command_window.y = 0
when 2 then @command_window.y = ( 480 - @command_window.height ) / 2
when 3 then @command_window.y = 480 - @command_window.height
end
# Continue enabled determinant
# Check if at least one save file exists
# If enabled, make @continue_enabled true; if disabled, make it false
@continue_enabled = (0..SL93::SAVE_FILES-1).any? {|i|
if SL93::DREAM
FileTest.exist?("#{SAVE_NAME}#{file_index + 1}.dream4") if SL93::DREAM
else
FileTest.exist?("Save#{i+1}.rxdata") if !SL93::DREAM
end
}
@newgameplus_enabled = (0..8).any? {|i|
FileTest.exist?("Complete#{i+1}.ngp")
} if SL93::NGP
@newgame_enabled = true
@newgame_enabled = (SL93::CURRENT_DISK == 1) if SL93::MDS
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
@command_window.disable_item(0) if !@newgame_enabled && SL93::MDS
@command_window.disable_item(1) if !@newgameplus_enabled && SL93::NGP
if @continue_enabled
@command_window.index = 1
else
if SL93::NGP
@command_window.disable_item(2)
else
@command_window.disable_item(1)
end
end
# Command Picture
if PARA_TITLE_CUSTOM::IMG_MENU
@command_window.visible = false
@command_img1 = Sprite.new
@command_img1.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img1.x = PARA_TITLE_CUSTOM::IMG_NEWGAME_X
@command_img1.y = PARA_TITLE_CUSTOM::IMG_NEWGAME_Y
@command_img2 = Sprite.new
@command_img2.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
@command_img2.x = PARA_TITLE_CUSTOM::IMG_LOAD_X
@command_img2.y = PARA_TITLE_CUSTOM::IMG_LOAD_Y
@command_img3 = Sprite.new
@command_img3.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
@command_img3.x = PARA_TITLE_CUSTOM::IMG_END_X
@command_img3.y = PARA_TITLE_CUSTOM::IMG_END_Y
if SL93::NGP
@command_img4 = Sprite.new
@command_img4.blend_type = PARA_TITLE_CUSTOM::BLEND_TYPE
@command_img4.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAMEPLUS[0])
@command_img4.x = PARA_TITLE_CUSTOM::IMG_NEWGAMEPLUS_X
@command_img4.y = PARA_TITLE_CUSTOM::IMG_NEWGAMEPLUS_Y
end
# If continue is enabled, move cursor to "Continue"
# If disabled, display "Continue" text in gray
@command_img1.opacity = 160 if SL93::MDS && !@newgame_enabled
@command_img4.opacity = 160 if SL93::NGP && !@newgameplus_enabled
if @continue_enabled
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[1])
else
@command_img2.opacity = 160
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[1])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
end
end
# Play title BGM
$game_system.bgm_play($data_system.title_bgm)
# Stop playing ME and BGS
Audio.me_stop
Audio.bgs_stop
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
break if $scene != self
end
# Prepare for transition
Graphics.freeze
# Dispose of command window
@command_window.dispose
if PARA_TITLE_CUSTOM::IMG_MENU
@command_img1.dispose
@command_img2.dispose
@command_img3.dispose
@command_img4.dispose if SL93::NGP
end
# Graphics Dispose
@sprite.bitmap.dispose
@sprite.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update command window
@command_window.update
# If C button was pressed
if Input.trigger?(Input::C)
if SL93::NGP
# Branch by command window cursor position
case @command_window.index
when 0 then command_new_game # New game
when 1 then command_continue # Continue
when 2 then command_shutdown # Shutdown
end
else
# Branch by command window cursor position
case @command_window.index
when 0 then command_new_game # New game
when 1 then command_continue # Continue
when 2 then command_shutdown # Shutdown
end
end
end
if PARA_TITLE_CUSTOM::IMG_MENU
if Input.repeat?(Input::UP) || Input.repeat?(Input::DOWN)
if SL93::NGP
case @command_window.index
when 0 # New Game
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[1])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
@command_img4.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAMEPLUS[0])
when 1 # New Game Plus
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[1])
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
@command_img4.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAMEPLUS[1])
when 2 # Continue Game
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[1])
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
@command_img4.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAMEPLUS[0])
when 3 # End Game
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[1])
@command_img4.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAMEPLUS[0])
end
else
case @command_window.index
when 0 # New Game
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[1])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
when 1 # Continue Game
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[1])
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[0])
when 2 # End Game
@command_img1.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_NEWGAME[0])
@command_img2.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_LOAD[0])
@command_img3.bitmap = RPG::Cache.title(PARA_TITLE_CUSTOM::IMG_END[1])
end
end
end
end
end
#--------------------------------------------------------------------------
# * Command: New Game
#--------------------------------------------------------------------------
def command_new_game
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Stop BGM
Audio.bgm_stop
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each type of game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up initial party
$game_party.setup_starting_members
# Set up initial map position
$game_map.setup($data_system.start_map_id)
# Move player to initial position
$game_player.moveto($data_system.start_x, $data_system.start_y)
# Refresh player
$game_player.refresh
# Run automatic change for BGM and BGS set with map
$game_map.autoplay
# Update map (run parallel process event)
$game_map.update
# Switch to map screen
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# * Command: Continue
#--------------------------------------------------------------------------
def command_continue
# If continue is disabled
unless @continue_enabled
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to load screen
$scene = Scene_Load.new
end
#--------------------------------------------------------------------------
# * Command: Shutdown
#--------------------------------------------------------------------------
def command_shutdown
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Shutdown
$scene = nil
end
#--------------------------------------------------------------------------
# * Battle Test
#--------------------------------------------------------------------------
def battle_test
# Load database (for battle test)
$data_actors = load_data('Data/BT_Actors.rxdata')
$data_classes = load_data('Data/BT_Classes.rxdata')
$data_skills = load_data('Data/BT_Skills.rxdata')
$data_items = load_data('Data/BT_Items.rxdata')
$data_weapons = load_data('Data/BT_Weapons.rxdata')
$data_armors = load_data('Data/BT_Armors.rxdata')
$data_enemies = load_data('Data/BT_Enemies.rxdata')
$data_troops = load_data('Data/BT_Troops.rxdata')
$data_states = load_data('Data/BT_States.rxdata')
$data_animations = load_data('Data/BT_Animations.rxdata')
$data_tilesets = load_data('Data/BT_Tilesets.rxdata')
$data_common_events = load_data('Data/BT_CommonEvents.rxdata')
$data_system = load_data('Data/BT_System.rxdata')
# Reset frame count for measuring play time
Graphics.frame_count = 0
# Make each game object
$game_temp = Game_Temp.new
$game_system = Game_System.new
$game_switches = Game_Switches.new
$game_variables = Game_Variables.new
$game_self_switches = Game_SelfSwitches.new
$game_screen = Game_Screen.new
$game_actors = Game_Actors.new
$game_party = Game_Party.new
$game_troop = Game_Troop.new
$game_map = Game_Map.new
$game_player = Game_Player.new
# Set up party for battle test
$game_party.setup_battle_test_members
# Set troop ID, can escape flag, and battleback
$game_temp.battle_troop_id = $data_system.test_troop_id
$game_temp.battle_can_escape = true
$game_map.battleback_name = $data_system.battleback_name
# Play battle start SE
$game_system.se_play($data_system.battle_start_se)
# Play battle BGM
$game_system.bgm_play($game_system.battle_bgm)
# Switch to battle screen
$scene = Scene_Battle.new
end
end
Maybe it would be better if you put a demo together... #_#
would it be ok just to send my scrips data file.
I guess that could work.
just got home, i did a demo anyway. i'll send it by pm
edit
bu the way i did send it, have you been able to look at it
No, I didn't get any PM from you.
bugger :???:
i'll send another.
edit
iv sent it.
Got it. I'll take a look at it ASAP.
EDIT: v6.81b is out.
Hi
I found one bug with the Version: 6.81b
I cant change the players Opacity.
Is there aWay I can fix this?
Thanks
Remove the caterpillar add-on completely, run the game. After it crashes, the editor will take you to a line saying "REMOVE_CLASSES = [Game_Player, Game_Member]". Change it to "REMOVE_CLASSES = [Game_Player]" and that's it.
Thanx worked 100%
So I cant use the caterpillar ever when I change the players Opacity?
THanks keep up the good work
Yeah. It's because of the feature that you can turn on where dead allies in the caterpillar look like ghosts. I modifies the opacity value so I had to disallow that it's changed externally for convenience.
iv just gotten the updated version of tons of addons but i still have the problem, sorry
I don't think I actually fixed it. >.<
Hey everyone,
I have a little problem with the Caterpillar script and it's compatibility with another script I would really like to use in my game.
I wasn't sure which author to ask, but the other guy seems a bit inactive so I was hoping you could help me out instead.
The script can be found here:
http://www.creationasylum.net/index.php?showtopic=23671&hl=emotions
It's a script to show an emotion bubble animation above the player's head (apparently like in VX).
HOWEVER, it doesn't seem to work with the caterpillar script in the Add-ons package - the emotion pops up over the last character in the caterpillar trail.
I hope I'm not just being n00bish... am I missing something? :???:
Thanks in advance!
~Reno-s--Joker
[Btw, Blizzard - I absolutely love your scripts - they are the simplest, no-fussiest, awesomest scripts I have come across in my hours of trawling through internet archives. :haha:
Thank you so much!!]
The script was messy coded. It assumes that the last character sprite is the player. In fact, it identifies all character sprites with the event ID. That's very inconvenient. -_-
In the other script find this line:
@frames = @character_sprites[@character_sprites.size - 1].emotion(id,ig,wt)
Change it to:
player_sprite = (@character_sprites.find_all {|s| s.character == $game_player})[0]
@frames = player_sprite.emotion(id,ig,wt)
Let's also completely ignore the fact that emoticons like that can be made with animations and absolutely no scripting knowledge.
EDIT: Actually, you might wanna change this entire section here:
if ev.to_i > -1
@frames = @character_sprites[ev].emotion (id,ig,wt)
else
@frames = @character_sprites[@character_sprites.size - 1].emotion(id,ig,wt)
end
return @frames
to this one:
if ev.to_i > -1
character = $game_map.events[id]
else
character = $game_player
end
sprite = (@character_sprites.find_all {|s| s.character == character})[0]
@frames = sprite.emotion(id, ig, wt)
return @frames
:haha: Awesome! It works wonders now, thank you!
EDIT: Whoops.... I didn't want to double post but I was wondering what was meant by this:
QuoteIf you experience the "Stack level too deep" error, you might already use one of these add-ons.
The first time I start a new game, I don't get this error, but when I press F12 to return to the title screen and try a second New Game, I always get this error. Am I missing something again or is it unavoidable?
Thanks so much for your help again......
This is because Tons of Add-ons was originally loaded up at the first part, but F12 resets everything, though not everything needs to reload. Tons loads up twice or something and causes the Stack level too deep error because you have more add-ons. Don't worry; this always happens with Enterbrain's lame F12.
Zeriab made a solution to this F12 fix here, so follow the link:
http://www.rmrevolution.com/50/rmxp-f12-fix/
Ahhh... thanks! Now I understand. :D
And the fix works awesome - thanks so much for the help and the link! :haha:
6.81 I can't use with RTAB.
Please check. Thank you vemy much.
I love Blizzard script for my Thai game.
And how am I supposed to fix it if I don't even know what error you are getting? Have you actually even read the instructions? I mentioned a few add-ons that don't work with RTAB because they are semantically incompatible.
I'm sorry :^_^':
that link is picture -v-
http://photos2.hi5.com/0072/957/949/r44Vzr957949-02.jpg
it error when attack.
http://forum.chaos-project.com/index.php?topic=23.0
Hey! Awesome script(s) here! I was using an older version of this, and there was a strange glitch I couldn't get rid of...none of my characters skills consumed SP! Totally bogus! So I searched for an newer version and found this much improved one here! (without the strange infinite SP glitch!)
But there's still one add-on that bothers me...the Multi-Hit script. It's more of a personal thing, but I think it looks really funky to have a 4-hit skill get four hits because the character uses the skill four times consecutively. I don't know, I just think there might be some other way, like say just throw all the hits in at the end? Or something? I'm no scripter, so I don't know how this all works. If this isn't the right place to ask about this, I apologize!
You mean like 4 times the damage display? The point of Multi-Hit actually is to attack more than once or use a skill more than once. What you want would be a Multi-Damage script. I refrained from creating one as it's quite specific and could cause major compatibiliy issues. You can post a script request, though. Maybe someone has the time to make one for you.
???
When use "Custom Control" with "Mog's scene Equip"
the status don't update if had many Equip
http://community.thaiware.com/uploads/monthly_01_2009/post-266170-1232726237_thumb.jpg
I'm try many way... But I can't do it. :(
Haha...Like a fine wine, Tons gets better with time ;)
- Great new updates since the last time I checked...
Does the "Absorb HP/SP Skill" add-on work with Blizz-ABS? It doesn't seem to. Maybe I'm just doing something stupid.
Got last versions of both, activate it, configure... And it doesn't work. Can anyone help me? :^_^':
(http://img166.imageshack.us/img166/3403/blizzabshc6.png)
It says it's compatible...
Do you have the scripts in the right order?
Check here (http://forum.chaos-project.com/index.php?topic=23.0).
If not are you sure you configured it right?
Quote from: Landith on February 01, 2009, 09:08:04 pm
(http://img166.imageshack.us/img166/3403/blizzabshc6.png)
It says it's compatible...
Weird...
Quote from: Landith on February 01, 2009, 09:08:04 pm
Do you have the scripts in the right order?
Check here (http://forum.chaos-project.com/index.php?topic=23.0).
Yes, just like that.
Quote from: Landith on February 01, 2009, 09:08:04 pm
If not are you sure you configured it right?
I guess that can be the only problem, then.
Let's see. I turn the variable to '= true' and put the ID of the skill in the []'s. Anything I'm missing? :???:
Nope, I just tried it out myself and It didn't work.
I even got an error when I tried to use the absorb SP and nothing when I tried to use the Absorb HP...
Bug?
Possible. I changed parts of the system earlier, I might have messed up something. I'll be sure to fix it in the next release.
Alright, if you want the error I got when I used the SP Skill I'll post it.
I don't think it's necessary. I should be getting the same error as soon as I try to use it.
Oh yeah I forgot about that...
For some reason...
The show location name add on does not work for me...
Did you set it up right? Did you turn it on?
As far as I know, I did everything as instructed...
Maybe I didn't turn it on...Let me try again just to make sure.
aww looks like blizz messed up:P
Oh, not necessarily...
It may be a simple incompatibility issue, or "I" could be doing numerous things wrong myself...
Post a demo, I can take a look at it.
Just let me run a quick test, and it the results are positive, then I will a little later tonight. Thank you. I will get back to you very soon with this.
Yesterday was when I discovered that I was experiencing problems with this, but I was on my laptop when I posted my comment. RMXP does not work on my laptop correctly for some reason...
I will get on my Desktop and test this tonight...Thank you.
Having a bit of a problem. Actually, I've been meaning to bring this up for a while now. :^_^':
Basically, I've changed the font my game uses in the "Main" script, and everything's fine and dandy for message displays. But my menu and battles still use the default font. I checked all of my scripts and Tons appears to be the cause. As soon as I remove it the problem goes away. Any ideas?
Get rid of the code in the main script that is controlling the font, and use Blizzard's ultimate font override in tons'. I think that should work...
You simply need to set up the Ultimate Font Override properly and it will work fine.
Ah, yes. Cheers for that.
is there a way to change the difficulty in game instead of the title.
$game_system.init_difficulty(INDEX)
INDEX is the index of the difficulty in the configuration. i.e. The default configuration is:
DIFFICULTIES = [['n00b', 200, 200, 200, 50],
['Novice', 150, 150, 150, 75],
['Average', 100, 100, 100, 100],
['Extreme', 75, 75, 75, 150],
['Annihilating', 50, 50, 50, 200]]
So the indices would be:
0: n00b
1: Novice
2: Average
3: Extreme
4: Annihilating
okay thanks blizz, also does it have to be enabled for that to work.
Yes.
i see, is there a way to stop it asking what difficulty you want at the title screen and just use those script commands to change it.
Remove the part regarding "Scene_Title" of the add-on.
okay, thanks for the help. :)
Is there an addon that makes a skill use HP instead of MP?
is there a way to make the immortal stat permanent
can't you just make it so it stays after battle and and doesn't end after taking damage or turns?
iv done that but after a while it disapears.
Quote from: Shadonking on March 08, 2009, 05:17:37 am
iv done that but after a while it disapears.
When you use "Recover all", the states disappear. Either use an accessory with the state or call the method for the state infliction as if it is an accessory:
actor.add_state(STATE_ID, true)
This will make the state permanent until you call:
actor.remove_state(STATE_ID, true)
Quote from: WhiteDemon15 on March 07, 2009, 11:07:27 am
Is there an addon that makes a skill use HP instead of MP?
Blood Mage.
EDIT: Weird, I thought added it already to Tons. Anyway, you can get the script seperately here at the forum.
thanks blizz, that solved my problem
Is there a way to make certain enemies immune to Demi skills?
Just have the Demi skill an element of Demi and make the enemies have resistance to it.
Yeah, I've tried that. It doesn't work.
Ok one question with your custom controls, how do we check it see if a button is being pressed? Is it the same as blizz abs?
if Input.trigger?(Input::Key['Arrow Up'])
Is that it?
Yes.
Okay thanks blizzard. One more question if I'm not being too much of a bother
woud this be the correct syntax to see if two buttons are being pressed?
Input.trigger?(Input::Key['A'] && Input::Key['S'])
If not could you tell me what it is please?
Input.trigger?(Input::Key['A']) && Input.trigger?(Input::Key['S'])
:'( dont meen to bug you again :( but that didnt work. But I just wont use it for what I am about to release
Nvm I fixed it I forgot to add the last )
I get the following error:
Script 'Part 2' line 6685: NameError occurred.
undefined method 'setup' for class 'Interpreter'
What do I do here...?
Methinks:
1) You're using a script that modifies the interpreter
or 2) You've go the script in the wrong place (in this case above Interpreter)
Hello. I just downloaded your script (it's amazing) but, for now, I only want to use the Custom Keyboard script. Which parts of the script do I extract to use it? I tried extracting only the script which obviously applied to it at the beginning of Part 2, but it didn't work. I'm sorry if this has been asked already.
Note: I placed the script in Main and the errors don't occur until the script gets to the parts in the Scene_X where the Input.trigger? has been physically changed. For example, in Scene_Title, Input.trigger?(Input::C) makes the default Action button controls work (Spacebar, Enter, etc.), whereas Input.trigger?(Input::Key['C']) ends up with a syntax error.
Thank you for the help in advance.
--Miyu
1. You don't extract the script.
2. It should be "Keys", not "Key".
3. You need to activate the script by setting the appropriate variable in the configuration to true. It's all explained in the instructions.
4. "Input.trigger?(Input::Keys['C'])" is checking really for the C button. If you want i.e. Space, then you use "Input.trigger?(Input::Keys['Space'])". You can use more than one condition disjunctive like:
if Input.trigger?(Input::Keys['Space']) or Input.trigger?(Input::Keys['Enter'])
Or:
if Input.trigger?(Input::Keys['Space']) || Input.trigger?(Input::Keys['Enter'])
Thanks for the help and the extra suggestion. I changed my Key to Keys (and checked again to make sure the condition was set to true), but it still doesn't work.
The code I have in Main is from here...
module TONS_OF_ADDONS
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 2-1, UTILITY add-ons, cont'd...
CUSTOM_CONTROLS = true
...Until the beginning of the FPS Modulation script. By having only this in there, am I making the script not work?
I'm sorry for all the questions and thanks for the help.
--Miyu
Actually that's only to turn it on. In the add-on itself you can set up the configuration. There's an option to completely disable RMXP's normal controls. Just press CTRL+F to use the search function.
Thank you for all the help.
--Miyu
Hey, Blizzard, small question. I'm using your gradient bars, but I need them to be skinnier in height. What line do I modify for that?
There's a height parameter somewhere in the script during the calls. It should be located in the aliased draw_actor_hp, draw_actor_sp and draw_actor_exp.
Got it, thanks!
mhm... I wonder... Is there a way when using EQUAP-Skills that the actors keep skills they naturally learnt before won't forget if the same skill is attached to some equipment that actor is wearing?
Quote from: Viviatus on April 02, 2009, 07:17:29 am
mhm... I wonder... Is there a way when using EQUAP-Skills that the actors keep skills they naturally learnt before won't forget if the same skill is attached to some equipment that actor is wearing?
seems like an interesting bug.
Quote from: NAMKCOR on April 02, 2009, 11:07:05 am
seems like an interesting bug.
Well, I'm sure it isn't really a bug. It just more logical, that you won't forget skill you learnt the usual way before. Hence I'd thought there might me something to prevent this.
If you use the AP system, you can manually increase the AP so the skill has been properly learnt. Other than that I actually said that the skills need to be separated since they will bug if they are normal skills and EQUAP skills at the same time. You need to make either duplicate skills or do it using the AP system.
Um... This is most likely impossible, but I have to know for sure; can the Map as Battleback feature work with Mode 7? I would really like it to, but I can't figure out how.
Also, for the caterpillar feature, instead of removing a character from the party or setting them as a "ghost", can there be a set character graphic for dead party members? Like, for each player who is dead, their place in the caterpillar is replaced by a coffin or something.
I'm not entirely sure, but I think it could work. Best you simply try it with Mode 7 and see what happens.
Yes, it would be possible to replace dead actors with coffins rather than make them ghostlike. But I suggest you rather do that with a parallel process common event. Scripting it would complicate the caterpillar system a lot while an event would be very simple.
Blizz, i got a question about the change speed. In instructions you say
Quote
Pressing Q/W will allow you to speed up the main character. Pressing SHIFT
# will reset his speed immediately. Remove the triple commented lines (###)
# to allow this feature even in the normal game, not only the Debug mode.
So, does that mean that i need to remove the line completly or just the triple comments? And sorry if this has been asked all ready. I just didn´t have the nerves to check seventeen pages...
In the code:
class Game_Player
alias upd_speed_later update
def update
if $game_system.SPEED_MODULATOR
if $DEBUG ###
if Input.trigger?(Input::A)
@move_speed = 4
elsif !Input.press?(Input::A) && !Input.press?(Input::X) &&
Input.trigger?(Input::R)
@move_speed += 1 unless @move_speed == 6
elsif !Input.press?(Input::A) && !Input.press?(Input::X) &&
Input.trigger?(Input::L)
@move_speed -= 1 unless @move_speed == 1
end
end ###
end
upd_speed_later
end
end
Remove the parts with the ###.
It'll have one less condition.
class Game_Player
alias upd_speed_later update
def update
if $game_system.SPEED_MODULATOR
if Input.trigger?(Input::A)
@move_speed = 4
elsif !Input.press?(Input::A) && !Input.press?(Input::X) &&
Input.trigger?(Input::R)
@move_speed += 1 unless @move_speed == 6
elsif !Input.press?(Input::A) && !Input.press?(Input::X) &&
Input.trigger?(Input::L)
@move_speed -= 1 unless @move_speed == 1
end
end
upd_speed_later
end
end
It'll look like that, yeah.
So remove the lines. Removing the triple commented lines don't actually do anything I believe.
Quote from: Doris on April 09, 2009, 04:36:56 am
I'm not entirely sure, but I think it could work. Best you simply try it with Mode 7 and see what happens.
Yes, it would be possible to replace dead actors with coffins rather than make them ghostlike. But I suggest you rather do that with a parallel process common event. Scripting it would complicate the caterpillar system a lot while an event would be very simple.
I did try it out (Map as Battleback with Mode 7) and I got this error:
Script 'Neo Mode 7 Part 3' line 265: NoMethodError occurred.
undefined method `spritesheet' for #<Scene_Battle:0x74039f0>
So... Yeah. My plan was to have the map as the battleback, and then have this rectangular overlay with a white background for the, like, stage for the monsters. But I never know how to get the stage to show up behind the monsters. The best I could do was have the map as the battleback, and then show the stage using the Sprite.new command or whatever it is, but that shows up over everything. So if I can fix the Map as Battleback with Mode 7, then I'd also like to know how to show the stage thing (which is technically a secondary battleback?).
Um... Using a parallel process event thing would most likely cause the graphics of the actors in the menu to be coffins as well. I think. I guess I could have a conditional branch stating that if the scene is the map, then the actors are coffins and then elsewhere (menu, shop, etc.) they'd be their regular selves. I'll try that and report back to you, unless you have a better idea.
There was something else, but I forgot. Oh well.
Looks like "spritesheet" is something used by Mode 7 that maybe wasn't necessary. ._.; Sorry, I can't help you, then. I hope you can get it working or figure out something else.
Okay. It's fine. I have a Plan B.
Alright, v6.83 is up. I reworked the Minimap.
Great script, but I have a few questions. Somewhere in the script, there's a bug with death. Not an error it's just that, when the first character dies, everything works fine. If a different character dies (for example character #2) then no one will get exp. They'll still get money but they'll get 0 exp. My other question is about the skill separation part of the script. Is there any way to make it so that only certain characters can learn certain skills? (ex. Black Mage learns Black Magic and Soldier doesn't)
What I meant was could I do that while using the EQUAP skills script? I'm making something similar to FF9 and that's why I wanted to know if there was a way to have only the black mage learn black magic.
Yes there is. Just make weapons that others cant use but the black mage can.
I figured out what's wrong with the death and no exp for entire party thing. In the script, add where it's in bold to the script. Now, if someone dies, everyone that's alive will get exp like they're supposed to.
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias start_phase5_difficulty_later start_phase5
def start_phase5
unless TONS_OF_ADDONS::DIFFICULTY
start_phase5_difficulty_later
return
end
old_gold, old_exp = $game_party.gold, []
$game_party.actors.each {|actor| old_exp.push(actor.exp)}
start_phase5_difficulty_later
new_gold = $game_party.gold - old_gold
$game_party.lose_gold(new_gold)
@result_window.gold = new_gold * $game_system.gold_rate / 100
$game_party.gain_gold(@result_window.gold)
new_exp = 0
$game_party.actors.each_index {|i|
new_exp = $game_party.actors[i].exp - old_exp[i] [b]+ new_exp[/b]
$game_party.actors[i].exp = old_exp[i]}
@result_window.exp = new_exp * $game_system.exp_rate / 100
@result_window.refresh
$game_party.actors.each_index {|i|
@status_window.level_up_flags[i] = false
unless $game_party.actors[i].cant_get_exp?
last_level = $game_party.actors[i].level
$game_party.actors[i].exp += @result_window.exp
@status_window.level_up(i) if $game_party.actors[i].level > last_level
end}
end
end
Also, in FF9, you could equip the same item as someone else and not learn abilities. Garnet could equip a hat that Vivi could equip and not learn the black magic. If only I could explain it easier. >_<
Flawless logic Shadowzero, but remember that the [code] tags remove all BBCodes in its thing.
Quote#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias start_phase5_difficulty_later start_phase5
def start_phase5
unless TONS_OF_ADDONS::DIFFICULTY
start_phase5_difficulty_later
return
end
old_gold, old_exp = $game_party.gold, []
$game_party.actors.each {|actor| old_exp.push(actor.exp)}
start_phase5_difficulty_later
new_gold = $game_party.gold - old_gold
$game_party.lose_gold(new_gold)
@result_window.gold = new_gold * $game_system.gold_rate / 100
$game_party.gain_gold(@result_window.gold)
new_exp = 0
$game_party.actors.each_index {|i|
new_exp = $game_party.actors.exp - old_exp + new_exp
$game_party.actors.exp = old_exp}
@result_window.exp = new_exp * $game_system.exp_rate / 100
@result_window.refresh
$game_party.actors.each_index {|i|
@status_window.level_up_flags = false
unless $game_party.actors.cant_get_exp?
last_level = $game_party.actors.level
$game_party.actors.exp += @result_window.exp
@status_window.level_up(i) if $game_party.actors.level > last_level
end}
end
I know it isn't the best way to show code and all...but eh, just easier to make it seen.
I'm pretty sure no one would like to do this for good o' me. But if soemone could whip me up what add ons dont work with Minkoff's Animated Battlers. Thanks in advanced :D
Since you didn't post what is happening, I won't be testing every single add-on to find out what's wrong.
@Shadowzero: I'll fix that.
EDIT: I think I found the problem. I'll put up a fix in a few minutes.
EDIT: Done. v6.85b is up.
Quote from: game_guy on April 17, 2009, 05:33:37 pm
Yes there is. Just make weapons that others cant use but the black mage can.
That's not what he's talking about, though. He wants to have weapons offer different things to different characters. ie: a Fire Sword with Fire (mages only) and Flame Slash (warriors only). If a character can't learn an ability it will just be greyed out.
As Shadowzero said, it was used in FFIX. But an even better example would be Final Fantasy Tactics Advance. (Since it has loads of classes which share weapons)
Make copies of weapons, same name, same stats, etc. but different settings in script I duno
That's a rather messy workaround, and it still doesn't produce the desired effect.
I'm getting an error with the new script (part 2):
line 2683: NoMethodError occurred. Undefined method xsize' for nil:NilClass
There's something wrong with the minimap system. Give me a couple of minutes to fix it.
EDIT: There you go, v6.86b. And LOL! The exact moment I was typing "EDIT" a female voice in the song I'm listening to said "edit". xD
It could be messy, even if it was organized. There has to be some way to make it so that only certain characters learn certain skills. The skill separation makes black magic different from white magic. If only I knew enough of the ruby syntax, I could figure out how to make sure that the black mage can't learn white magic. Hmm... :uhm:
I'm going to include that, don't worry. I just didn't have time the last few days because of the other scripts.
EDIT: There you go.
Thank you so much Blizzard! You are a scripting genius!!! ^_^
The system is so versatile that I only had to add 1 line, edit 2 lines and add a configuration section. ^_^
@skills.each {|id|
maxap = $game_system.maxap(id)
forget_skill(id) if maxap < 0 || self.ap(id) < maxap}
weapons, armors = prepare_equap
skill_ids = []
weapons.each {|id| skill_ids += $game_system.eq_database(id, true)}
armors.each {|id| skill_ids += $game_system.eq_database(id, false)}
skill_ids.each {|id| learn_skill(id)}
non_learnable = BlizzCFG.equap_nonlearnable_skills(self.id)
(@skills - non_learnable).each {|id|
maxap = $game_system.maxap(id)
forget_skill(id) if maxap < 0 || self.ap(id) < maxap}
weapons, armors = prepare_equap
skill_ids = []
weapons.each {|id| skill_ids += $game_system.eq_database(id, true)}
armors.each {|id| skill_ids += $game_system.eq_database(id, false)}
(skill_ids - non_learnable).each {|id| learn_skill(id)}
xD
I'm getting an error. The error says: "Script 'Tons of Add-ons Part 2' line 1989: SyntaxError occurred." Line 1989 is the line where I state which skills actor 1 can't learn. For some reason it's not working.
Copy-paste the script again. It looks like you messed up the configuration section.
I see what I did wrong. I forgot to paste the code right above where it says the "Start of NONLEARNABLE SKILLS Database" now it's fixed. Thank you Blizzard. ^_^
Hmm, I think I'll use that system for my skills now. 8) Nice update.
Regarding passive skills: would it be much hassle to add the option of increasing stats by a percentage instead of whole numbers? That way a stat-boosting skill will be just as useful by the end of the game as when you learnt it. (Strength +10 might be handy at one point yet barely noticeable later, whereas strength +10% will always be +10% of whatever you have)
It actually would. :/ You don't have weapons/armors that increase stats on a percentage base either anyway. :P
It's not complicated and probably a 5 minutes job, but I want to avoid it since it could screw up something else. You could ask somebody for a mod if you really need it.
Yeah, but you're constantly upgrading weapons and armour right up to the end of the game. :P So nothing will ever get the chance to become severely outdated.
S'alright, though. It was only a suggestion. As you said I can always make a request later if I really need it.
You could always add more passive skills. xD
This IS the best addon compilation I have ever used Blizz. But for my game I am using a deep and dark theme, which doesn't suit my bars scripts basic color scheme. Can you just point me EXACTLY where the option for changing the bar color. Most of my techniques gave me errors :shy:
You could also happen to help me with converting a array to string. I love using your menu system but I don't want to have to stick to one specific windowskin for my AMS.
Just find the bar script. The methods are in Window_Base and are called "draw_actor_hp", "draw_actor_sp" and "draw_actor_exp". The components calculating the color are (RED, GREEN, BLUE).
How do you want to array to a string? It might be enough for you if you used ".to_s" or ".inspect".
Just like in STCBS there is a neat section where you can add your specific window skins. The same exists in my AMS in a neat section. I took a mental note of how you seperated the skins and added it like so..
@message_box_opacity = 160
@message_box_skin =['Original' , 'Chaos Project Skin']
@name_box_skin = "Original"
Then I got an error once I activated a text event. Incase you might be interested in the entire code. This code isn't from CP however. I am not 100% sure you can help me cause this code is from Creative Asylum.
#===================================================
# ■ AMS - Advanced Message Script - R4 [Update #2]
#===================================================
# For more infos and update, visit:
# www.dubealex.com (Creation Asylum)
#
# Edited, Fixed and Enhanced by: Dubealex
# Original Script Core by: XRXS Scripter (Jap Dudes)
# HTML Hexadecimal color feature from: Phylomorphis
#
# Special Thanks:
# Rabu: For enabling the Show Face feature in an encrypted project
#
# To found all my new features, search the following: #NEW
# To configure the button to skip the dialog, search: #SKIP_TEXT_CODE
#
# May 18, 2005
#===================================================
LETTER_BY_LETTER_MODE = true #Set the letter by letter mode ON/OFF
#===================================================
# ▼ CLASS AMS Begins
#===================================================
class AMS
attr_accessor :name_box_x_offset
attr_accessor :name_box_y_offset
attr_accessor :font_type
attr_accessor :name_font_type
attr_accessor :font_size
attr_accessor :name_font_size
attr_accessor :message_box_opacity
attr_accessor :name_box_skin
attr_accessor :name_box_text_color
attr_accessor :message_box_text_color
attr_accessor :message_box_skin
attr_accessor :name_box_width
attr_accessor :name_box_height
attr_accessor :message_width
attr_accessor :message_height
attr_accessor :message_x
attr_accessor :message_y_bottom
attr_accessor :message_y_middle
attr_accessor :message_y_top
attr_accessor :event_message_x_ofset
attr_accessor :event_message_y_ofset
def initialize
@name_box_x_offset = 0 #Choose the X axis offset of the name bos. default= 0
@name_box_y_offset = -10 #Choose the Y axis offset of the name bos. default= -10
@name_box_width = 8 #Choose the width of the Name Box. default= 8
@name_box_height = 26 #Choose the height of the Name Box. default= 26
@font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for message box
@name_font_type = "Tahoma" #Choose the Font Name (Case Sensitive) for Name Box
@font_size = 22 #Choose the default Font Size for message box text
@name_font_size = 22 #Choose the deafault Font Size for Name Box text
@name_box_text_color=0 #Choose the Text Color of the Name Box
@message_box_text_color=0 #Choose the Text Color of the Message Box
@message_box_opacity = 160 #Choose the opacity of the message window. Default=160
@message_box_skin =['Original' , 'Chaos Project'] #Choose the WindowSkin for the Message Box
@name_box_skin = "Original" #Choose the WindowSkin for the Name Box
@message_width = 480 #Choose the width size of the message box. Default=480
@message_height = 160 #Choose the height size of the message box. Default=160
@message_x = 80 #Choose the X position of the message box. Default=80
@message_y_bottom = 304 #Choose the Y bottom position of the message box. Default=304
@message_y_middle = 160 #Choose the Y middle position of the message box. Default=160
@message_y_top = 16 #Choose the Y top position of the message box. Default=16
@event_message_x_ofset = 0 #Choose the X position offset of the event message. Default=0
@event_message_y_ofset = 48 #Choose the Y position offset of the event message. Default=48
end
end
#===================================================
# ▲ CLASS AMS Ends
#===================================================
#===================================================
# ▼ Class Window_Message Begins
#===================================================
class Window_Message < Window_Selectable
alias xrxs9_initialize initialize
def initialize
@alex_skip = false
xrxs9_initialize
if $soundname_on_speak == nil then
$soundname_on_speak = ""
end
$gaiji_file = "./Graphics/Gaiji/sample.png"
if FileTest.exist?($gaiji_file)
@gaiji_cache = Bitmap.new($gaiji_file)
else
@gaigi_cache = nil
end
@opacity_text_buf = Bitmap.new(32, 32)
end
#--------------------------------------------------------------------------
alias xrxs9_terminate_message terminate_message
def terminate_message
if @name_window_frame != nil
@name_window_frame.dispose
@name_window_frame = nil
end
if @name_window_text != nil
@name_window_text.dispose
@name_window_text = nil
end
xrxs9_terminate_message
end
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.windowskin = RPG::Cache.windowskin($ams.message_box_skin)
@x = @y = @max_x = @max_y = @indent = @lines = 0
@face_indent = 0
@opacity = 255
@cursor_width = 0
@write_speed = 0
@write_wait = 0
@mid_stop = false
@face_file = nil
@popchar = -2
if $game_temp.choice_start == 0
@x = 8
end
if $game_temp.message_text != nil
@now_text = $game_temp.message_text
if (/\A\\[Ff]\[(.+?)\]/.match(@now_text))!=nil then
@face_file = $1 + ".png"
@x = @face_indent = 128
if FileTest.exist?("Graphics/Pictures/" + $1 + ".png")
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
@now_text.gsub!(/\\[Ff]\[(.*?)\]/) { "" }
end
begin
last_text = @now_text.clone
@now_text.gsub!(/\\[Vv]\[([IiWwAaSs]?)([0-9]+)\]/) { convart_value($1, $2.to_i) }
end until @now_text == last_text
@now_text.gsub!(/\\[Nn]\[([0-9]+)\]/) do
$game_actors[$1.to_i] != nil ? $game_actors[$1.to_i].name : ""
end
#NEW
#Dubealex's Stop Skip Text ON-OFF
@now_text.gsub!(/\\[%]/) { "\100" }
#End new command
#NEW
#Dubealex's Show Monster Name Feature
@now_text.gsub!(/\\[Mm]\[([0-9]+)\]/) do
$data_enemies[$1.to_i] != nil ? $data_enemies[$1.to_i].name : ""
end
#End new command
#NEW
#Dubealex's Show Item Price Feature
@now_text.gsub!(/\\[Pp]rice\[([0-9]+)\]/) do
$data_items[$1.to_i] != nil ? $data_items[$1.to_i].price : ""
end
#End new command
#NEW
#Dubealex's Show Hero Class Name Feature
@now_text.gsub!(/\\[Cc]lass\[([0-9]+)\]/) do
$data_classes[$data_actors[$1.to_i].class_id] != nil ? $data_classes[$data_actors[$1.to_i].class_id].name : ""
end
#End new command
#NEW
#Dubealex's Show Current Map Name Feature
@now_text.gsub!(/\\[Mm]ap/) do
$game_map.name != nil ? $game_map.name : ""
end
#End new command
#NEW
#Dubealex's Choose Name Box Text Color
@now_text.gsub!(/\\[Zz]\[([0-9]+)\]/) do
$ams.name_box_text_color=$1.to_i
@now_text.sub!(/\\[Zz]\[([0-9]+)\]/) { "" }
end
#End new command
name_window_set = false
if (/\\[Nn]ame\[(.+?)\]/.match(@now_text)) != nil
name_window_set = true
name_text = $1
@now_text.sub!(/\\[Nn]ame\[(.*?)\]/) { "" }
end
if (/\\[Pp]\[([-1,0-9]+)\]/.match(@now_text))!=nil then
@popchar = $1.to_i
if @popchar == -1
@x = @indent = 48
@y = 4
end
@now_text.gsub!(/\\[Pp]\[([-1,0-9]+)\]/) { "" }
end
@max_choice_x = 0
if @popchar >= 0
@text_save = @now_text.clone
@max_x = 0
@max_y = 4
for i in 0..3
line = @now_text.split(/\n/)[3-i]
@max_y -= 1 if line == nil and @max_y <= 4-i
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
@max_x = cx if cx > @max_x
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
self.width = @max_x + 32 + @face_indent
self.height = (@max_y - 1) * 32 + 64
@max_choice_x -= 68
@max_choice_x -= @face_indent*216/128
else
@max_x = self.width - 32 - @face_indent
for i in 0..3
line = @now_text.split(/\n/)[i]
next if line == nil
line.gsub!(/\\\w\[(\w+)\]/) { "" }
cx = contents.text_size(line).width
if i >= $game_temp.choice_start
@max_choice_x = cx if cx > @max_choice_x
end
end
@max_choice_x += 8
end
@cursor_width = 0
@now_text.gsub!(/\\\\/) { "\000" }
@now_text.gsub!(/\\[Cc]\[([0123456789ABCDEF#]+)\]/) { "\001[#{$1}]" }
@now_text.gsub!(/\\[Gg]/) { "\002" }
@now_text.gsub!(/\\[Ss]\[([0-9]+)\]/) { "\003[#{$1}]" }
@now_text.gsub!(/\\[Aa]\[(.*?)\]/) { "\004[#{$1}]" }
#NEW
#Dubealex's Permanent Color Change
@now_text.gsub!(/\\[Cc]olor\[([0-9]+)\]/) do
$ams.message_box_text_color= $1.to_i
@now_text.sub!(/\\[Cc]\[([0-9]+)\]/) { "" }
end
#End of new command
#NEW
#Dubealex's Font Change Feature
@now_text.gsub(/\\[Tt]\[(.*?)\]/) do
buftxt = $1.to_s
$ams.font_type = buftxt
@now_text.sub!(/\\[Tt]\[(.*?)\]/) { "" }
end
#End of new command
@now_text.gsub!(/\\[.]/) { "\005" }
@now_text.gsub!(/\\[|]/) { "\006" }
@now_text.gsub!(/\\[>]/) { "\016" }
@now_text.gsub!(/\\[<]/) { "\017" }
@now_text.gsub!(/\\[!]/) { "\020" }
@now_text.gsub!(/\\[~]/) { "\021" }
@now_text.gsub!(/\\[Ee]\[([0-9]+)\]/) { "\022[#{$1}]" }
@now_text.gsub!(/\\[Ii]/) { "\023" }
@now_text.gsub!(/\\[Oo]\[([0-9]+)\]/) { "\024[#{$1}]" }
@now_text.gsub!(/\\[Hh]\[([0-9]+)\]/) { "\025[#{$1}]" }
@now_text.gsub!(/\\[Bb]\[([0-9]+)\]/) { "\026[#{$1}]" }
@now_text.gsub!(/\\[Rr]\[(.*?)\]/) { "\027[#{$1}]" }
reset_window
if name_window_set
color=$ams.name_box_text_color
off_x = $ams.name_box_x_offset
off_y = $ams.name_box_y_offset
space = 2
x = self.x + off_x - space / 2
y = self.y + off_y - space / 2
w = self.contents.text_size(name_text).width + $ams.name_box_width + space
h = $ams.name_box_height + space
@name_window_frame = Window_Frame.new(x, y, w, h)
@name_window_frame.z = self.z + 1
x = self.x + off_x + 4
y = self.y + off_y
@name_window_text = Air_Text.new(x, y, name_text, color)
@name_window_text.z = self.z + 2
end
end
reset_window
if $game_temp.choice_max > 0
@item_max = $game_temp.choice_max
self.active = true
self.index = 0
end
if $game_temp.num_input_variable_id > 0
digits_max = $game_temp.num_input_digits_max
number = $game_variables[$game_temp.num_input_variable_id]
@input_number_window = Window_InputNumber.new(digits_max)
@input_number_window.number = number
@input_number_window.x = self.x + 8
@input_number_window.y = self.y + $game_temp.num_input_start * 32
end
end
#--------------------------------------------------------------------------
def update
super
if @fade_in
self.contents_opacity += 24
if @input_number_window != nil
@input_number_window.contents_opacity += 24
end
if self.contents_opacity == 255
@fade_in = false
end
return
end
@now_text = nil if @now_text == ""
if @now_text != nil and @mid_stop == false
if @write_wait > 0
@write_wait -= 1
return
end
text_not_skip = LETTER_BY_LETTER_MODE
while true
@max_x = @x if @max_x < @x
@max_y = @y if @max_y < @y
if (c = @now_text.slice!(/./m)) != nil
if c == "\000"
c = "\\"
end
if c == "\001"
@now_text.sub!(/\[([0123456789ABCDEF#]+)\]/, "")
temp_color = $1
color = temp_color.to_i
leading_x = temp_color.to_s.slice!(/./m)
if leading_x == "#"
self.contents.font.color = hex_color(temp_color)
next
end
if color >= 0 and color <= 7
self.contents.font.color = text_color(color)
end
next
end
if c == "\002"
if @gold_window == nil and @popchar <= 0
@gold_window = Window_Gold.new
@gold_window.x = 560 - @gold_window.width
if $game_temp.in_battle
@gold_window.y = 192
else
@gold_window.y = self.y >= 128 ? 32 : 384
end
@gold_window.opacity = self.opacity
@gold_window.back_opacity = self.back_opacity
end
c = ""
end
if c == "\003"
@now_text.sub!(/\[([0-9]+)\]/, "")
speed = $1.to_i
if speed >= 0 and speed <= 19
@write_speed = speed
end
c = ""
end
if c == "\004"
@now_text.sub!(/\[(.*?)\]/, "")
buftxt = $1.dup.to_s
if buftxt.match(/\//) == nil and buftxt != "" then
$soundname_on_speak = "Audio/SE/" + buftxt
else
$soundname_on_speak = buftxt.dup
end
c = ""
elsif c == "\004"
c = ""
end
if c == "\005"
@write_wait += 5
c = ""
end
if c == "\006"
@write_wait += 20
c = ""
end
if c == "\016"
text_not_skip = false
c = ""
end
if c == "\017"
text_not_skip = true
c = ""
end
if c == "\020"
@mid_stop = true
c = ""
end
if c == "\021"
terminate_message
return
end
if c == "\023"
@indent = @x
c = ""
end
if c == "\024"
@now_text.sub!(/\[([0-9]+)\]/, "")
@opacity = $1.to_i
color = self.contents.font.color
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
self.contents.font.color = Color.new(color.red, color.green, color.blue, color.alpha * @opacity / 255)
c = ""
end
if c == "\025"
@now_text.sub!(/\[([0-9]+)\]/, "")
self.contents.font.size = [[$1.to_i, 6].max, 32].min
c = ""
end
if c == "\026"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += $1.to_i
c = ""
end
if c == "\027"
@now_text.sub!(/\[(.*?)\]/, "")
@x += ruby_draw_text(self.contents, @x, @y * line_height + (line_height - self.contents.font.size), $1, @opacity)
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
c = ""
end
if c == "\030"
@now_text.sub!(/\[(.*?)\]/, "")
self.contents.blt(@x , @y * line_height + 8, RPG::Cache.icon($1), Rect.new(0, 0, 24, 24))
if $soundname_on_speak != ""
Audio.se_play($soundname_on_speak)
end
@x += 24
c = ""
end
if c == "\n"
@lines += 1
@y += 1
@x = 0 + @indent + @face_indent
if @lines >= $game_temp.choice_start
@x = 8 + @indent + @face_indent
@cursor_width = @max_choice_x
end
c = ""
end
if c == "\022"
@now_text.sub!(/\[([0-9]+)\]/, "")
@x += gaiji_draw(4 + @x, @y * line_height + (line_height - self.contents.font.size), $1.to_i)
c = ""
end
#NEW
#Dubealex's Text Skip On/OFF Command
if c == "\100"
if @alex_skip==false
@alex_skip=true
else
@alex_skip=false
end
c = ""
end
#end of new command
if c != ""
self.contents.draw_text(0+@x, 32 * @y, 40, 32, c)
@x += self.contents.text_size(c).width
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
end
#SKIP_TEXT_CODE
# B = Escape, 0 (On The NumPad), X
# C = Enter, Space Bar and C
# A = Shift, Z
if Input.press?(Input::C) # <-- Change the value on that line
if @alex_skip==false
text_not_skip = false
end
end
else
text_not_skip = true
break
end
if text_not_skip
break
end
end
@write_wait += @write_speed
return
end
if @input_number_window != nil
@input_number_window.update
if Input.trigger?(Input::C)
$game_system.se_play($data_system.decision_se)
$game_variables[$game_temp.num_input_variable_id] =
@input_number_window.number
$game_map.need_refresh = true
@input_number_window.dispose
@input_number_window = nil
terminate_message
end
return
end
if @contents_showing
if $game_temp.choice_max == 0
self.pause = true
end
if Input.trigger?(Input::B)
if $game_temp.choice_max > 0 and $game_temp.choice_cancel_type > 0
$game_system.se_play($data_system.cancel_se)
$game_temp.choice_proc.call($game_temp.choice_cancel_type - 1)
terminate_message
end
end
if Input.trigger?(Input::C)
if $game_temp.choice_max > 0
$game_system.se_play($data_system.decision_se)
$game_temp.choice_proc.call(self.index)
end
if @mid_stop
@mid_stop = false
return
else
terminate_message
end
end
return
end
if @fade_out == false and $game_temp.message_text != nil
@contents_showing = true
$game_temp.message_window_showing = true
refresh
Graphics.frame_reset
self.visible = true
self.contents_opacity = 0
if @input_number_window != nil
@input_number_window.contents_opacity = 0
end
@fade_in = true
return
end
if self.visible
@fade_out = true
self.opacity -= 48
if self.opacity == 0
self.visible = false
@fade_out = false
$game_temp.message_window_showing = false
end
return
end
end
#--------------------------------------------------------------------------
def get_character(parameter)
case parameter
when 0
return $game_player
else
events = $game_map.events
return events == nil ? nil : events[parameter]
end
end
#--------------------------------------------------------------------------
def reset_window
#MESSAGE_SIZE
#MESSAGE_POSITION
if @popchar >= 0
events = $game_map.events
if events != nil
character = get_character(@popchar)
x = [[character.screen_x - $ams.event_message_x_ofset - self.width / 2, 4].max, 636 - self.width].min
y = [[character.screen_y - $ams.event_message_y_ofset - self.height, 4].max, 476 - self.height].min
self.x = x
self.y = y
end
elsif @popchar == -1
self.x = -4
self.y = -4
self.width = 648
self.height = 488
else
if $game_temp.in_battle
self.y = 16
else
case $game_system.message_position
when 0
self.y = $ams.message_y_top
when 1
self.y = $ams.message_y_middle
when 2
self.y = $ams.message_y_bottom
end
self.x = $ams.message_x
if @face_file == nil
self.width = $ams.message_width
self.x = $ams.message_x
else
if self.width <= 600
self.width = 600
self.x -=60
end
end
self.height = $ams.message_height
end
end
self.contents = Bitmap.new(self.width - 32, self.height - 32)
self.contents.font.color = text_color($ams.message_box_text_color)
self.contents.font.name = $ams.font_type
self.contents.font.size = $ams.font_size
if @face_file != nil
self.contents.blt(16, 16, RPG::Cache.picture(@face_file), Rect.new(0, 0, 96, 96))
end
if @popchar == -1
self.opacity = 255
self.back_opacity = 0
elsif $game_system.message_frame == 0
self.opacity = 255
self.back_opacity = $ams.message_box_opacity
else
self.opacity = 0
self.back_opacity = $ams.message_box_opacity
end
end
#--------------------------------------------------------------------------
def gaiji_draw(x, y, num)
if @gaiji_cache == nil
return 0
else
if @gaiji_cache.width < num * 24
return 0
end
if self.contents.font.size >= 20 and self.contents.font.size <= 24
size = 24
else
size = self.contents.font.size * 100 * 24 / 2200
end
self.contents.stretch_blt(Rect.new(x, y, size, size), @gaiji_cache, Rect.new(num * 24, 0, 24, 24))
if $soundname_on_speak != "" then
Audio.se_play($soundname_on_speak)
end
return size
end
end
#--------------------------------------------------------------------------
def line_height
return 32
if self.contents.font.size >= 20 and self.contents.font.size <= 24
return 32
else
return self.contents.font.size * 15 / 10
end
end
#--------------------------------------------------------------------------
def ruby_draw_text(target, x, y, str,opacity)
sizeback = target.font.size
target.font.size * 3 / 2 > 32 ? rubysize = 32 - target.font.size : rubysize = target.font.size / 2
rubysize = [rubysize, 6].max
opacity = [[opacity, 0].max, 255].min
split_s = str.split(/,/)
split_s[0] == nil ? split_s[0] = "" : nil
split_s[1] == nil ? split_s[1] = "" : nil
height = sizeback + rubysize
width = target.text_size(split_s[0]).width
target.font.size = rubysize
ruby_width = target.text_size(split_s[1]).width
target.font.size = sizeback
buf_width = [target.text_size(split_s[0]).width, ruby_width].max
width - ruby_width != 0 ? sub_x = (width - ruby_width) / 2 : sub_x = 0
if opacity == 255
target.font.size = rubysize
target.draw_text(x + sub_x, y - target.font.size, target.text_size(split_s[1]).width, target.font.size, split_s[1])
target.font.size = sizeback
target.draw_text(x, y, width, target.font.size, split_s[0])
return width
else
if @opacity_text_buf.width < buf_width or @opacity_text_buf.height < height
@opacity_text_buf.dispose
@opacity_text_buf = Bitmap.new(buf_width, height)
else
@opacity_text_buf.clear
end
@opacity_text_buf.font.size = rubysize
@opacity_text_buf.draw_text(0 , 0, buf_width, rubysize, split_s[1], 1)
@opacity_text_buf.font.size = sizeback
@opacity_text_buf.draw_text(0 , rubysize, buf_width, sizeback, split_s[0], 1)
if sub_x >= 0
target.blt(x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
else
target.blt(x + sub_x, y - rubysize, @opacity_text_buf, Rect.new(0, 0, buf_width, height), opacity)
end
return width
end
end
#--------------------------------------------------------------------------
def convart_value(option, index)
option == nil ? option = "" : nil
option.downcase!
case option
when "i"
unless $data_items[index].name == nil
r = sprintf("\030[%s]%s", $data_items[index].icon_name, $data_items[index].name)
end
when "w"
unless $data_weapons[index].name == nil
r = sprintf("\030[%s]%s", $data_weapons[index].icon_name, $data_weapons[index].name)
end
when "a"
unless $data_armors[index].name == nil
r = sprintf("\030[%s]%s", $data_armors[index].icon_name, $data_armors[index].name)
end
when "s"
unless $data_skills[index].name == nil
r = sprintf("\030[%s]%s", $data_skills[index].icon_name, $data_skills[index].name)
end
else
r = $game_variables[index]
end
r == nil ? r = "" : nil
return r
end
#--------------------------------------------------------------------------
def dispose
terminate_message
if @gaiji_cache != nil
unless @gaiji_cache.disposed?
@gaiji_cache.dispose
end
end
unless @opacity_text_buf.disposed?
@opacity_text_buf.dispose
end
$game_temp.message_window_showing = false
if @input_number_window != nil
@input_number_window.dispose
end
super
end
#--------------------------------------------------------------------------
def update_cursor_rect
if @index >= 0
n = $game_temp.choice_start + @index
self.cursor_rect.set(8 + @indent + @face_indent, n * 32, @cursor_width, 32)
else
self.cursor_rect.empty
end
end
end
#=========================================
# ▲ CLASS Window_Message Ends
#=========================================
#=========================================
# ▼ Class Window_Frame Begins
#=========================================
class Window_Frame < Window_Base
def initialize(x, y, width, height)
super(x, y, width, height)
self.windowskin = RPG::Cache.windowskin($ams.name_box_skin)
self.contents = nil
end
#--------------------------------------------------------------------------
def dispose
super
end
end
#=========================================
# ▲ CLASS Window_Frame Ends
#=========================================
#=========================================
# ▼ CLASS Game_Map Additional Code Begins
#=========================================
class Game_Map
#Dubealex's Addition (from XRXS) to show Map Name on screen
def name
$map_infos[@map_id]
end
end
#=========================================
# ▲ CLASS Game_Map Additional Code Ends
#=========================================
#=========================================
# ▼ CLASS Scene_Title Additional Code Begins
#=========================================
class Scene_Title
#Dubealex's Addition (from XRXS) to show Map Name on screen
$map_infos = load_data("Data/MapInfos.rxdata")
for key in $map_infos.keys
$map_infos[key] = $map_infos[key].name
end
#Dubealex's addition to save data from the AMS in the save files
$ams = AMS.new
end
#=========================================
# ▲ CLASS Scene_Title Additional Code Ends
#=========================================
#=========================================
# ▼ CLASS Window_Base Additional Code Begins
#=========================================
class Window_Base < Window
#Dubealex Addition (from Phylomorphis) to use HTML Hex Code Colors
def hex_color(string)
red = 0
green = 0
blue = 0
if string.size != 6
print("Hex strings must be six characters long.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
for i in 1..6
s = string.slice!(/./m)
if s == "#"
print("Hex color string may not contain the \"#\" character.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
value = hex_convert(s)
if value == -1
print("Error converting hex value.")
print("White text will be used.")
return Color.new(255, 255, 255, 255)
end
case i
when 1
red += value * 16
when 2
red += value
when 3
green += value * 16
when 4
green += value
when 5
blue += value * 16
when 6
blue += value
end
end
return Color.new(red, green, blue, 255)
end
#--------------------------------------------------------------------------
def hex_convert(character)
case character
when "0"
return 0
when "1"
return 1
when "2"
return 2
when "3"
return 3
when "4"
return 4
when "5"
return 5
when "6"
return 6
when "7"
return 7
when "8"
return 8
when "9"
return 9
when "A"
return 10
when "B"
return 11
when "C"
return 12
when "D"
return 13
when "E"
return 14
when "F"
return 15
end
return -1
end
end
#=========================================
# ▲ CLASS Window_Base Additional Code Ends
#=========================================
#=========================================
# ▼ Class Air_Text Begins
#=========================================
class Air_Text < Window_Base
def initialize(x, y, designate_text, color=0)
super(x-16, y-16, 32 + designate_text.size * 12, 56)
self.opacity = 0
self.back_opacity = 0
self.contents = Bitmap.new(self.width - 32, self.height - 32)
w = self.contents.width
h = self.contents.height
self.contents.font.name = $ams.name_font_type
self.contents.font.size = $ams.name_font_size
self.contents.font.color = text_color(color)
self.contents.draw_text(0, 0, w, h, designate_text)
end
#--------------------------------------------------------------------------
def dispose
self.contents.clear
super
end
end
#==========================================
# ▲ CLASS Air_Text Ends
#==========================================
#===================================================
# ▼ CLASS Scene_Save Additional Code Begins
#===================================================
class Scene_Save < Scene_File
alias ams_original_write_save_data write_save_data
def write_save_data(file)
ams_original_write_save_data(file)
Marshal.dump($ams, file)
end
end
#===================================================
# ▲ CLASS Scene_Save Additional Code Ends
#===================================================
#===================================================
# ▼ CLASS Scene_Load Additional Code Begins
#===================================================
class Scene_Load < Scene_File
alias ams_original_read_save_data read_save_data
def read_save_data(file)
ams_original_read_save_data(file)
$ams = Marshal.load(file)
end
end
#===================================================
# ▲ CLASS Scene_Load Additional Code Ends
#===================================================
Ah, I see what you are trying to do. Change this:
@message_box_skin = ['Original', 'Chaos Project Skin']
back to this:
@message_box_skin = 'Original'
Now insert this code below my STCMS:
class Scene_Menu
alias update_options_amsfix_later update_options
def update_options
update_options_amsfix_later
$ams.font_type = $game_system.fontname
$ams.name_font_type = $game_system.fontname
$ams.font_size = $game_system.fontsize
$ams.name_font_size = $game_system.fontsize
$ams.message_box_skin = $game_system.windowskin_name
$ams.name_box_skin = $game_system.windowskin_name
end
end
That's it.
:clap: Hurray for Blizzard :clap: PWNage Potion for everyone *nods*
EDIT: I know I am the worst at scripting but I cannot find the RGB part of your code. All I do gives me errors, or does something I can't possibly understand
I'll show you the code of draw_actor_hp and you will understand how it works.
if rate > 0.6
color1 = Color.new(80 - 150 * (rate-0.6), 80, 50 * (rate-0.6), 192)
color2 = Color.new(240 - 450 * (rate-0.6), 240, 150 * (rate-0.6), 192)
elsif rate > 0.2 && rate <= 0.6
color1 = Color.new(80, 200 * (rate-0.2), 0, 192)
color2 = Color.new(240, 600 * (rate-0.2), 0, 192)
elsif rate <= 0.2
color1 = Color.new(400 * rate, 0, 0, 192)
color2 = Color.new(240, 0, 0, 192)
end
# background color
color3 = Color.new(0, 80, 0, 192)
There are 3 colors being used. color1 is the darker main color, color2 is the main bar color and color3 is the background color of the empty bar. My code changes the color so it needs to calculate colors depending on the filling rate.
I'll explain this line specifically:
Quote color2 = Color.new(240 - 450 * (rate-0.6), 240, 150 * (rate-0.6), 192)
I have colored the color components. When the bar is filled between 60% and 100%, the red component slowly increases, the green component stays the same and the blue component also slowly decreases. This formula gives a change from green to yellow when the filling rate drops from 100% to 60%.
The important thing here is that you can either edit the formulas or you can simple replace it with fixed colors.
color1 = Color.new(0, 80, 0, 192)
color2 = Color.new(0, 240, 0, 192)
color3 = Color.new(0, 80, 0, 192)
color1 = Color.new(80, 0, 0, 192)
color2 = Color.new(240, 0, 0, 192)
color3 = Color.new(80, 0, 0, 192)
Um, In one of my projects I'm trying to use the Item Scene addon but it just isn't working.
I was trying to set up a diary that would get pages added to it as you progressed through the game, but the pages show up in my inventory and the diary does nothing even though I have the Itemcall query set to True.
So, I don't know what's going on. :P
There aren't any error messages to report either.
And another question related but unrelated to the rest of my post: What scope would you suggest I set the Diary to, Blizz? The User, All Allies, etc...
There could be problems if you are using a CMS. :/
I get en error with Equap skills
Script ToA 2 NoMethodError Occured
undefined method equap_learnable_skills for BlizzCFG:Module
Did you delete the configuration part of EQUAP? Yes, you did. You deleted that method as well.
Quote from: Rival Blizzard on May 04, 2009, 05:39:43 am
Did you delete the configuration part of EQUAP? Yes, you did. You deleted that method as well.
What I didnt erase anything. I simply set it to true and tested it and I got that error.
Or was you talking to yourself.
If you are getting that error, you don't have that method defined. Post your EQUAP configuration.
I didnt even configure it. I set it to true to test it out with Blizz ABS.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# EQUAP Skills by Blizzard
# Version: 4.2b
# Type: Skill System
# Date: 28.05.2006
# Date v2.0: 13.06.2006
# Date v2.02b: 16.1.2007
# Date v3.0b: 19.2.2007
# Date v3.02b: 7.3.2007
# Date v4.0b: 13.7.2008
# Date v4.1b: 19.10.2008
# Date v4.2b: 22.10.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Explanation:
#
# This add-on will allow you to bound skills to equipment. Equip it and you
# learn the skill, unequip it and you will forget it. The AP system allows to
# gain AP for skills and learn the permanently if the max AP for the skill
# are gathered. (This system is a very similar one to FF9's AP Skill System.)
#
#
# v2.0:
# - fixed bug, that appeared, when more equipment parts had the same skill
# - new multi-skill support
#
# v2.02b:
# - improved coding a little bit
#
# v3.0b:
# - completely overworked and added optional AP system (similar to FF9)
# (I want to mention here I made this especially for blazinhandle =) )
#
# v3.02b:
# - fixed bugs
#
# v4.0b:
# - fixed a critical bug
# - no more EQUAP element
# - skills that have less than 0 max AP cannot be learned
# - compatible with Guilamme777's Multi-Slot Equipment System
# - works more convenient
# - better coding
#
# v4.1b:
# - fixed problems with gaining AP
#
# v4.2b:
# - added functionality to prevent some characters from learning certain
# skills
#
#
# Compatibility:
#
# 99% compatible with SDK v1.x. 60% compatible with SDK v2.x. WILL cause
# incompatibility with custom equipment scripts but there are instructions
# how to configure the script. Compatible with Guilamme777's Multi-Slot
# Equipment System. Please note, that this script depends on the layout of
# your Equip Screen and needs to be put UNDER a CMS script if you are using
# one. WILL corrupt your old savegames. Might not work with some CMS-es.
#
#
# Instructions:
#
# - Configuration:
#
# Press CRTL+SHIFT+F and type into the window one of the following:
#
# Start EQ Database
# Start MAXAP Database
# Start GAINAP Database
#
# You can jump now to the database directly. There are more instructions.
#
# - Merge with a Custom Equipment System:
#
# To make this system work with any custom equipment script, you need to
# edit the method "prepare_equap" which fetches all current weapon IDs and
# armor IDs.
#
#
# NOTE:
#
# DO NOT USE EQUAP SKILLS AS NORMAL SKILLS! THE SYSTEM WORKS WITH TEMPORARY
# LEARNING AND FORGETTING THE EQUAP SKILL. IF YOU LET YOUR CHARACTER LEARN AN
# EQUAP SKILL BY NORMAL MEANS, HE WILL FORGET IT AFTER HE UNEQUIPS THE
# APPROPRIATE EQUIPMENT!
#
#
# If you find any bugs, please report them here:
# http://forum.chaos-project.com/
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
if TONS_OF_ADDONS::EQUAP_SKILLS
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start EQUAP General Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DISPLAY_AP_GAIN = true # uses a modified Battle Result to display gained AP
DISPLAY_AP_REQ = true # shows CURRENT_AP/NEEDED_AP in the skill's name
DISPLAY_AP_ZERO = true # shows 0/0 if the skill can't be learned
GAIN_DEAD = false # dead actor also gain AP, no matter what
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End EQUAP General Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Game_System
#==============================================================================
class Game_System
def maxap(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of MAXAP Database
#
# Here you can define the APs needed to learn a skill. If you add no skills
# here the AP system is automatically disabled. Configure it like this
# template:
#
# when SKILL_ID then return MAXAP
#
# SKILL_ID - the ID of the skill that will be learned with AP
# MAXAP - how many AP are required to learn the skill
#
# If you give a skill negative max AP, the skill will be completely bound to
# the equipment part and will be forgotten when it is unequipped.
#
# Note:
#
# Don't forget to assign your AP skills to equipment in the EQ Database
# below. Every skill with 0 AP (default) is a normal skill.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return -1
when 2 then return 10
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of MAXAP Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 0
end
def gainap(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of GAINAP Database
#
# Here you can define how many AP you will get from enemy troops. Configure
# it like this template:
#
# when TROOP_ID then return GAINAP
#
# TROOP_ID - the ID of the enemy troop
# GAINAP - how many AP will the player get from this troop.
#
# Note:
#
# This will automatically be disabled if there are no AP skills.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of MAXAP Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 0
end
def eq_database(id, weapon = true)
skill_ids = []
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of EQ Database
#
# This is your equipment database. To add one or more new EQUAP skills to a
# weapon is very simple. Add another "when"-branch in the script snipplet
# below (they have comments next to it). Configure it like this template:
#
# when WEAPON_ID
# @skill_ids.push(EQUAP_SKILL_ID1)
# @skill_ids.push(EQUAP_SKILL_ID2)
#
# The same works for armors:
#
# when ARMOR_ID
# @skill_ids.push(EQUAP_SKILL_ID1)
# @skill_ids.push(EQUAP_SKILL_ID2)
#
# The lines are commented below so you should have no problems with the script.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if weapon
case id
when 1 # weapon ID
skill_ids.push(10) # EQUAP skill ID
skill_ids.push(11) # EQUAP skill ID
when 5
skill_ids.push(8)
skill_ids.push(12)
when 9
skill_ids.push(1)
skill_ids.push(3)
end
else
case id
when 1 # armor ID
skill_ids.push(1) # EQUAP skill ID
skill_ids.push(25) # EQUAP skill ID
when 3
skill_ids.push(7)
skill_ids.push(4)
when 5
skill_ids.push(15)
when 8
skill_ids.push(32)
skill_ids.push(29)
when 13
skill_ids.push(2)
skill_ids.push(25)
when 18
skill_ids.push(27)
when 19
skill_ids.push(25)
when 29
skill_ids.push(10)
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of EQ Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return skill_ids
end
def equap_nonlearnable_skills(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of NONLEARNABLE SKILLS Database
#
# Here you can define skills that can't be learned by certain actors at all.
# Configure it like this template:
#
# when ACTOR_ID then return [SKILL_ID1, SKILL_ID2, ...]
#
# ACTOR_ID - the ID of the enemy troop
# SKILL_ID - the ID of the skill this actor can't learn through EQUAP
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return [59, 60]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of NONLEARNABLE SKILLS Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return []
end
end
#==============================================================================
# Game_Actor
#==============================================================================
class Game_Actor
alias setup_equap_later setup
def setup(id)
@ap = {}
setup_equap_later(id)
test_equap
end
alias equip_equap_later equip
def equip(equip_type, id)
equip_equap_later(equip_type, id)
test_equap
end
def add_ap(val)
@skills.each {|id| @ap[id] = 0 if @ap[id] == nil}
@ap.each_key {|id|
@ap[id] = self.ap(id) + val
@ap[id] = 0 if self.ap(id) < 0
maxap = $game_system.maxap(id)
@ap[id] = maxap if self.ap(id) > maxap}
end
def ap(id)
return (@ap[id] == nil ? 0 : @ap[id])
end
def prepare_equap ### edit this method for custom equipment support
# Guilamme777 compatibility switch
return self.weapon_ids, self.armor_ids if defined?(G7_MS_MOD)
weapons = [@weapon_id]
armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return weapons, armors
end
def test_equap
non_learnable = BlizzCFG.equap_nonlearnable_skills(self.id)
(@skills - non_learnable).each {|id|
maxap = $game_system.maxap(id)
forget_skill(id) if maxap < 0 || self.ap(id) < maxap}
weapons, armors = prepare_equap
skill_ids = []
weapons.each {|id| skill_ids += $game_system.eq_database(id, true)}
armors.each {|id| skill_ids += $game_system.eq_database(id, false)}
(skill_ids - non_learnable).each {|id| learn_skill(id)}
end
end
#==============================================================================
# Game_Troop
#==============================================================================
class Game_Troop
attr_reader :id
alias setup_equap_later setup
def setup(troop_id)
setup_equap_later(troop_id)
@id = troop_id
end
end
#==============================================================================
# Window_BattleResult
#==============================================================================
class Window_BattleResult
def refresh_extra(aps)
self.contents.fill_rect(0, 0, self.width, 32, Color.new(0, 0, 0, 0))
x = 4
self.contents.font.color = normal_color
cx = contents.text_size(@exp.to_s).width
self.contents.draw_text(x, 0, cx, 32, @exp.to_s)
x += cx + 4
self.contents.font.color = system_color
cx = contents.text_size('EXP').width
self.contents.draw_text(x, 0, 64, 32, 'EXP')
x += cx + 16
self.contents.font.color = normal_color
cx = contents.text_size(@gold.to_s).width
self.contents.draw_text(x, 0, cx, 32, @gold.to_s)
x += cx + 4
self.contents.font.color = system_color
cx = contents.text_size($data_system.words.gold).width
self.contents.draw_text(x, 0, 128, 32, $data_system.words.gold)
x += cx + 16
self.contents.font.color = normal_color
cx = contents.text_size(aps.to_s).width
self.contents.draw_text(x, 0, cx, 32, aps.to_s)
x += cx + 4
self.contents.font.color = system_color
self.contents.draw_text(x, 0, 128, 32, 'AP')
end
end
#==============================================================================
# Window_Skill
#==============================================================================
class Window_Skill
alias draw_item_equap_later draw_item
def draw_item(index)
skill = @data[index]
aps = $game_system.maxap(skill.id)
if DISPLAY_AP_REQ && !$scene.is_a?(Scene_Battle) &&
(aps > 0 || aps != 0 && DISPLAY_AP_ZERO)
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x, y = 4+index%2*320, index/2*32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
text = skill.name
if aps > 0
text += " (#{@actor.ap(skill.id)}/#{aps})"
elsif DISPLAY_AP_ZERO
text += ' (0/0)'
end
self.contents.draw_text(x + 28, y, 204, 32, text, 0)
self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
else
draw_item_equap_later(index)
end
end
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias start_phase5_equap_later start_phase5
def start_phase5
start_phase5_equap_later
aps = $game_system.gainap($game_troop.id)
@result_window.refresh_extra(aps) if DISPLAY_AP_GAIN
$game_party.actors.each {|a| a.add_ap(aps) if !a.dead? || GAIN_DEAD}
end
end
end
EDIT:
Umm I fixed it blizz. You musta not noticed but the non_learnable_skills is under $game_system not BlizzCFG.
line 1788 needs to be
non_learnable = $game_system.equap_nonlearnable_skills(self.id)
EDIT 2:
I'm not gettin AP when I kill enemies in babs
Hi, awesome addon as always, I updated to the latest version 6.88b and now my status icons arnt working properly. They work on the player fine but on the monster they appear over the middle of their name, any way I can get it to offset to the right or left?
(http://i123.photobucket.com/albums/o296/MightyLink/icons-1.jpg)
I'll look into that. I might have messed up something.
Quote from: Youngster Gi Gi on May 04, 2009, 09:50:58 am
I didnt even configure it. I set it to true to test it out with Blizz ABS.
EDIT:
Umm I fixed it blizz. You musta not noticed but the non_learnable_skills is under $game_system not BlizzCFG.
line 1788 needs to be
non_learnable = $game_system.equap_nonlearnable_skills(self.id)
._.;
Quote from: Youngster Gi Gi on May 04, 2009, 09:50:58 am
EDIT 2:
I'm not gettin AP when I kill enemies in babs
._.;;; I'll fix that when I have time. I'll probably change it so each enemy gives AP.
Sorry for taking so long to get back.
The only CMS i'm using is yours, Blizz. :P
I also have another problem. I'm trying to use Multi-hit in another project using the newest version of add-ons but it won't work. I'm using the default battle system and the only changes I can think of that were done to it was Juan's battle icons.
It's set to true and everything, I went inside and set up the script, and even tried it on different weapons and skills.
No difference at all. :(
That's really all I know.
Other than that as far as I know those are the only problem's I'm having. It's no emergency so i'll just use a common event for now. Lemme know if you need to know anything else.
I've found another critical error in the newest edition of Addons that makes my game crash right after opening up the game and selecting "New Game"
(http://i302.photobucket.com/albums/nn118/ShiningRiku/ERRORMESSAGE1.png)
I tried cutting the nonlearnable skills thing out but didn't save the script. Didn't change anything.
It hates me, so I'm gonna use an older version of the equap thing that I have that actually has the AP thing fixed without the nonlearnable stuff.
I know it at least won't crash my game, if it'll even work. I feel like I'm being ignored and treated as a brainless n00b sometimes, but I understand that you're very very busy, Blizz, and I wish you the best of luck with your life. Sorry If i'm such a helpless person, but I don't have your knowledge to fix this problem...
Quote from: Youngster Gi Gi on May 04, 2009, 09:50:58 am
I didnt even configure it. I set it to true to test it out with Blizz ABS.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# EQUAP Skills by Blizzard
# Version: 4.2b
# Type: Skill System
# Date: 28.05.2006
# Date v2.0: 13.06.2006
# Date v2.02b: 16.1.2007
# Date v3.0b: 19.2.2007
# Date v3.02b: 7.3.2007
# Date v4.0b: 13.7.2008
# Date v4.1b: 19.10.2008
# Date v4.2b: 22.10.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Explanation:
#
# This add-on will allow you to bound skills to equipment. Equip it and you
# learn the skill, unequip it and you will forget it. The AP system allows to
# gain AP for skills and learn the permanently if the max AP for the skill
# are gathered. (This system is a very similar one to FF9's AP Skill System.)
#
#
# v2.0:
# - fixed bug, that appeared, when more equipment parts had the same skill
# - new multi-skill support
#
# v2.02b:
# - improved coding a little bit
#
# v3.0b:
# - completely overworked and added optional AP system (similar to FF9)
# (I want to mention here I made this especially for blazinhandle =) )
#
# v3.02b:
# - fixed bugs
#
# v4.0b:
# - fixed a critical bug
# - no more EQUAP element
# - skills that have less than 0 max AP cannot be learned
# - compatible with Guilamme777's Multi-Slot Equipment System
# - works more convenient
# - better coding
#
# v4.1b:
# - fixed problems with gaining AP
#
# v4.2b:
# - added functionality to prevent some characters from learning certain
# skills
#
#
# Compatibility:
#
# 99% compatible with SDK v1.x. 60% compatible with SDK v2.x. WILL cause
# incompatibility with custom equipment scripts but there are instructions
# how to configure the script. Compatible with Guilamme777's Multi-Slot
# Equipment System. Please note, that this script depends on the layout of
# your Equip Screen and needs to be put UNDER a CMS script if you are using
# one. WILL corrupt your old savegames. Might not work with some CMS-es.
#
#
# Instructions:
#
# - Configuration:
#
# Press CRTL+SHIFT+F and type into the window one of the following:
#
# Start EQ Database
# Start MAXAP Database
# Start GAINAP Database
#
# You can jump now to the database directly. There are more instructions.
#
# - Merge with a Custom Equipment System:
#
# To make this system work with any custom equipment script, you need to
# edit the method "prepare_equap" which fetches all current weapon IDs and
# armor IDs.
#
#
# NOTE:
#
# DO NOT USE EQUAP SKILLS AS NORMAL SKILLS! THE SYSTEM WORKS WITH TEMPORARY
# LEARNING AND FORGETTING THE EQUAP SKILL. IF YOU LET YOUR CHARACTER LEARN AN
# EQUAP SKILL BY NORMAL MEANS, HE WILL FORGET IT AFTER HE UNEQUIPS THE
# APPROPRIATE EQUIPMENT!
#
#
# If you find any bugs, please report them here:
# http://forum.chaos-project.com/
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
if TONS_OF_ADDONS::EQUAP_SKILLS
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start EQUAP General Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DISPLAY_AP_GAIN = true # uses a modified Battle Result to display gained AP
DISPLAY_AP_REQ = true # shows CURRENT_AP/NEEDED_AP in the skill's name
DISPLAY_AP_ZERO = true # shows 0/0 if the skill can't be learned
GAIN_DEAD = false # dead actor also gain AP, no matter what
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End EQUAP General Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Game_System
#==============================================================================
class Game_System
def maxap(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of MAXAP Database
#
# Here you can define the APs needed to learn a skill. If you add no skills
# here the AP system is automatically disabled. Configure it like this
# template:
#
# when SKILL_ID then return MAXAP
#
# SKILL_ID - the ID of the skill that will be learned with AP
# MAXAP - how many AP are required to learn the skill
#
# If you give a skill negative max AP, the skill will be completely bound to
# the equipment part and will be forgotten when it is unequipped.
#
# Note:
#
# Don't forget to assign your AP skills to equipment in the EQ Database
# below. Every skill with 0 AP (default) is a normal skill.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return -1
when 2 then return 10
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of MAXAP Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 0
end
def gainap(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of GAINAP Database
#
# Here you can define how many AP you will get from enemy troops. Configure
# it like this template:
#
# when TROOP_ID then return GAINAP
#
# TROOP_ID - the ID of the enemy troop
# GAINAP - how many AP will the player get from this troop.
#
# Note:
#
# This will automatically be disabled if there are no AP skills.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of MAXAP Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 0
end
def eq_database(id, weapon = true)
skill_ids = []
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of EQ Database
#
# This is your equipment database. To add one or more new EQUAP skills to a
# weapon is very simple. Add another "when"-branch in the script snipplet
# below (they have comments next to it). Configure it like this template:
#
# when WEAPON_ID
# @skill_ids.push(EQUAP_SKILL_ID1)
# @skill_ids.push(EQUAP_SKILL_ID2)
#
# The same works for armors:
#
# when ARMOR_ID
# @skill_ids.push(EQUAP_SKILL_ID1)
# @skill_ids.push(EQUAP_SKILL_ID2)
#
# The lines are commented below so you should have no problems with the script.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if weapon
case id
when 1 # weapon ID
skill_ids.push(10) # EQUAP skill ID
skill_ids.push(11) # EQUAP skill ID
when 5
skill_ids.push(8)
skill_ids.push(12)
when 9
skill_ids.push(1)
skill_ids.push(3)
end
else
case id
when 1 # armor ID
skill_ids.push(1) # EQUAP skill ID
skill_ids.push(25) # EQUAP skill ID
when 3
skill_ids.push(7)
skill_ids.push(4)
when 5
skill_ids.push(15)
when 8
skill_ids.push(32)
skill_ids.push(29)
when 13
skill_ids.push(2)
skill_ids.push(25)
when 18
skill_ids.push(27)
when 19
skill_ids.push(25)
when 29
skill_ids.push(10)
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of EQ Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return skill_ids
end
def equap_nonlearnable_skills(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of NONLEARNABLE SKILLS Database
#
# Here you can define skills that can't be learned by certain actors at all.
# Configure it like this template:
#
# when ACTOR_ID then return [SKILL_ID1, SKILL_ID2, ...]
#
# ACTOR_ID - the ID of the enemy troop
# SKILL_ID - the ID of the skill this actor can't learn through EQUAP
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return [59, 60]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of NONLEARNABLE SKILLS Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return []
end
end
#==============================================================================
# Game_Actor
#==============================================================================
class Game_Actor
alias setup_equap_later setup
def setup(id)
@ap = {}
setup_equap_later(id)
test_equap
end
alias equip_equap_later equip
def equip(equip_type, id)
equip_equap_later(equip_type, id)
test_equap
end
def add_ap(val)
@skills.each {|id| @ap[id] = 0 if @ap[id] == nil}
@ap.each_key {|id|
@ap[id] = self.ap(id) + val
@ap[id] = 0 if self.ap(id) < 0
maxap = $game_system.maxap(id)
@ap[id] = maxap if self.ap(id) > maxap}
end
def ap(id)
return (@ap[id] == nil ? 0 : @ap[id])
end
def prepare_equap ### edit this method for custom equipment support
# Guilamme777 compatibility switch
return self.weapon_ids, self.armor_ids if defined?(G7_MS_MOD)
weapons = [@weapon_id]
armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return weapons, armors
end
def test_equap
non_learnable = BlizzCFG.equap_nonlearnable_skills(self.id)
(@skills - non_learnable).each {|id|
maxap = $game_system.maxap(id)
forget_skill(id) if maxap < 0 || self.ap(id) < maxap}
weapons, armors = prepare_equap
skill_ids = []
weapons.each {|id| skill_ids += $game_system.eq_database(id, true)}
armors.each {|id| skill_ids += $game_system.eq_database(id, false)}
(skill_ids - non_learnable).each {|id| learn_skill(id)}
end
end
#==============================================================================
# Game_Troop
#==============================================================================
class Game_Troop
attr_reader :id
alias setup_equap_later setup
def setup(troop_id)
setup_equap_later(troop_id)
@id = troop_id
end
end
#==============================================================================
# Window_BattleResult
#==============================================================================
class Window_BattleResult
def refresh_extra(aps)
self.contents.fill_rect(0, 0, self.width, 32, Color.new(0, 0, 0, 0))
x = 4
self.contents.font.color = normal_color
cx = contents.text_size(@exp.to_s).width
self.contents.draw_text(x, 0, cx, 32, @exp.to_s)
x += cx + 4
self.contents.font.color = system_color
cx = contents.text_size('EXP').width
self.contents.draw_text(x, 0, 64, 32, 'EXP')
x += cx + 16
self.contents.font.color = normal_color
cx = contents.text_size(@gold.to_s).width
self.contents.draw_text(x, 0, cx, 32, @gold.to_s)
x += cx + 4
self.contents.font.color = system_color
cx = contents.text_size($data_system.words.gold).width
self.contents.draw_text(x, 0, 128, 32, $data_system.words.gold)
x += cx + 16
self.contents.font.color = normal_color
cx = contents.text_size(aps.to_s).width
self.contents.draw_text(x, 0, cx, 32, aps.to_s)
x += cx + 4
self.contents.font.color = system_color
self.contents.draw_text(x, 0, 128, 32, 'AP')
end
end
#==============================================================================
# Window_Skill
#==============================================================================
class Window_Skill
alias draw_item_equap_later draw_item
def draw_item(index)
skill = @data[index]
aps = $game_system.maxap(skill.id)
if DISPLAY_AP_REQ && !$scene.is_a?(Scene_Battle) &&
(aps > 0 || aps != 0 && DISPLAY_AP_ZERO)
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x, y = 4+index%2*320, index/2*32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
text = skill.name
if aps > 0
text += " (#{@actor.ap(skill.id)}/#{aps})"
elsif DISPLAY_AP_ZERO
text += ' (0/0)'
end
self.contents.draw_text(x + 28, y, 204, 32, text, 0)
self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
else
draw_item_equap_later(index)
end
end
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias start_phase5_equap_later start_phase5
def start_phase5
start_phase5_equap_later
aps = $game_system.gainap($game_troop.id)
@result_window.refresh_extra(aps) if DISPLAY_AP_GAIN
$game_party.actors.each {|a| a.add_ap(aps) if !a.dead? || GAIN_DEAD}
end
end
end
EDIT:
Umm I fixed it blizz. You musta not noticed but the non_learnable_skills is under $game_system not BlizzCFG.
line 1788 needs to be
non_learnable = $game_system.equap_nonlearnable_skills(self.id)
EDIT 2:
I'm not gettin AP when I kill enemies in babs
In case you didnt notice I posted the fix for it already...in fact awhile ago....
What GG said. I just didn't have time to fix it yet.
Oh....Ok.
I'm sorry.
I can fix that easy.
I'm really good at wasting people's time it would appear. :bag:
Any updates coming yet? I really look forward to the Equap Skills fix for babs.
Quote from: game_guy on May 24, 2009, 11:07:03 pm
Any updates coming yet? I really look forward to the Equap Skills fix for babs.
I have a problem with some add-ons. The EQUAP Skill crashes the game when the party is not empyt and the fullscreen doesn't work.
The EQUAP Error is: "undefined method 'equap_nonlearbable_skills' for BlizzCFG:Module".
When I start the game with no actors, it works normaly. The error appears when I add a actor to the party.
I use the Blizz-ABS 2.24. Please help me. ^^
The fullscreen add-on does work. It only works in normal play.
Oh f**k, that`s true. Sorry, I'm newbie..... :wacko:
Thank you Juan.
And the problem with Equap Skills? Anyone can help??
Quote from: game_guy on May 16, 2009, 09:18:47 pm
Quote from: Youngster Gi Gi on May 04, 2009, 09:50:58 am
I didnt even configure it. I set it to true to test it out with Blizz ABS.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# EQUAP Skills by Blizzard
# Version: 4.2b
# Type: Skill System
# Date: 28.05.2006
# Date v2.0: 13.06.2006
# Date v2.02b: 16.1.2007
# Date v3.0b: 19.2.2007
# Date v3.02b: 7.3.2007
# Date v4.0b: 13.7.2008
# Date v4.1b: 19.10.2008
# Date v4.2b: 22.10.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Explanation:
#
# This add-on will allow you to bound skills to equipment. Equip it and you
# learn the skill, unequip it and you will forget it. The AP system allows to
# gain AP for skills and learn the permanently if the max AP for the skill
# are gathered. (This system is a very similar one to FF9's AP Skill System.)
#
#
# v2.0:
# - fixed bug, that appeared, when more equipment parts had the same skill
# - new multi-skill support
#
# v2.02b:
# - improved coding a little bit
#
# v3.0b:
# - completely overworked and added optional AP system (similar to FF9)
# (I want to mention here I made this especially for blazinhandle =) )
#
# v3.02b:
# - fixed bugs
#
# v4.0b:
# - fixed a critical bug
# - no more EQUAP element
# - skills that have less than 0 max AP cannot be learned
# - compatible with Guilamme777's Multi-Slot Equipment System
# - works more convenient
# - better coding
#
# v4.1b:
# - fixed problems with gaining AP
#
# v4.2b:
# - added functionality to prevent some characters from learning certain
# skills
#
#
# Compatibility:
#
# 99% compatible with SDK v1.x. 60% compatible with SDK v2.x. WILL cause
# incompatibility with custom equipment scripts but there are instructions
# how to configure the script. Compatible with Guilamme777's Multi-Slot
# Equipment System. Please note, that this script depends on the layout of
# your Equip Screen and needs to be put UNDER a CMS script if you are using
# one. WILL corrupt your old savegames. Might not work with some CMS-es.
#
#
# Instructions:
#
# - Configuration:
#
# Press CRTL+SHIFT+F and type into the window one of the following:
#
# Start EQ Database
# Start MAXAP Database
# Start GAINAP Database
#
# You can jump now to the database directly. There are more instructions.
#
# - Merge with a Custom Equipment System:
#
# To make this system work with any custom equipment script, you need to
# edit the method "prepare_equap" which fetches all current weapon IDs and
# armor IDs.
#
#
# NOTE:
#
# DO NOT USE EQUAP SKILLS AS NORMAL SKILLS! THE SYSTEM WORKS WITH TEMPORARY
# LEARNING AND FORGETTING THE EQUAP SKILL. IF YOU LET YOUR CHARACTER LEARN AN
# EQUAP SKILL BY NORMAL MEANS, HE WILL FORGET IT AFTER HE UNEQUIPS THE
# APPROPRIATE EQUIPMENT!
#
#
# If you find any bugs, please report them here:
# http://forum.chaos-project.com/
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
if TONS_OF_ADDONS::EQUAP_SKILLS
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start EQUAP General Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DISPLAY_AP_GAIN = true # uses a modified Battle Result to display gained AP
DISPLAY_AP_REQ = true # shows CURRENT_AP/NEEDED_AP in the skill's name
DISPLAY_AP_ZERO = true # shows 0/0 if the skill can't be learned
GAIN_DEAD = false # dead actor also gain AP, no matter what
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End EQUAP General Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Game_System
#==============================================================================
class Game_System
def maxap(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of MAXAP Database
#
# Here you can define the APs needed to learn a skill. If you add no skills
# here the AP system is automatically disabled. Configure it like this
# template:
#
# when SKILL_ID then return MAXAP
#
# SKILL_ID - the ID of the skill that will be learned with AP
# MAXAP - how many AP are required to learn the skill
#
# If you give a skill negative max AP, the skill will be completely bound to
# the equipment part and will be forgotten when it is unequipped.
#
# Note:
#
# Don't forget to assign your AP skills to equipment in the EQ Database
# below. Every skill with 0 AP (default) is a normal skill.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return -1
when 2 then return 10
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of MAXAP Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 0
end
def gainap(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of GAINAP Database
#
# Here you can define how many AP you will get from enemy troops. Configure
# it like this template:
#
# when TROOP_ID then return GAINAP
#
# TROOP_ID - the ID of the enemy troop
# GAINAP - how many AP will the player get from this troop.
#
# Note:
#
# This will automatically be disabled if there are no AP skills.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of MAXAP Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 0
end
def eq_database(id, weapon = true)
skill_ids = []
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of EQ Database
#
# This is your equipment database. To add one or more new EQUAP skills to a
# weapon is very simple. Add another "when"-branch in the script snipplet
# below (they have comments next to it). Configure it like this template:
#
# when WEAPON_ID
# @skill_ids.push(EQUAP_SKILL_ID1)
# @skill_ids.push(EQUAP_SKILL_ID2)
#
# The same works for armors:
#
# when ARMOR_ID
# @skill_ids.push(EQUAP_SKILL_ID1)
# @skill_ids.push(EQUAP_SKILL_ID2)
#
# The lines are commented below so you should have no problems with the script.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
if weapon
case id
when 1 # weapon ID
skill_ids.push(10) # EQUAP skill ID
skill_ids.push(11) # EQUAP skill ID
when 5
skill_ids.push(8)
skill_ids.push(12)
when 9
skill_ids.push(1)
skill_ids.push(3)
end
else
case id
when 1 # armor ID
skill_ids.push(1) # EQUAP skill ID
skill_ids.push(25) # EQUAP skill ID
when 3
skill_ids.push(7)
skill_ids.push(4)
when 5
skill_ids.push(15)
when 8
skill_ids.push(32)
skill_ids.push(29)
when 13
skill_ids.push(2)
skill_ids.push(25)
when 18
skill_ids.push(27)
when 19
skill_ids.push(25)
when 29
skill_ids.push(10)
end
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of EQ Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return skill_ids
end
def equap_nonlearnable_skills(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start of NONLEARNABLE SKILLS Database
#
# Here you can define skills that can't be learned by certain actors at all.
# Configure it like this template:
#
# when ACTOR_ID then return [SKILL_ID1, SKILL_ID2, ...]
#
# ACTOR_ID - the ID of the enemy troop
# SKILL_ID - the ID of the skill this actor can't learn through EQUAP
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return [59, 60]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End of NONLEARNABLE SKILLS Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return []
end
end
#==============================================================================
# Game_Actor
#==============================================================================
class Game_Actor
alias setup_equap_later setup
def setup(id)
@ap = {}
setup_equap_later(id)
test_equap
end
alias equip_equap_later equip
def equip(equip_type, id)
equip_equap_later(equip_type, id)
test_equap
end
def add_ap(val)
@skills.each {|id| @ap[id] = 0 if @ap[id] == nil}
@ap.each_key {|id|
@ap[id] = self.ap(id) + val
@ap[id] = 0 if self.ap(id) < 0
maxap = $game_system.maxap(id)
@ap[id] = maxap if self.ap(id) > maxap}
end
def ap(id)
return (@ap[id] == nil ? 0 : @ap[id])
end
def prepare_equap ### edit this method for custom equipment support
# Guilamme777 compatibility switch
return self.weapon_ids, self.armor_ids if defined?(G7_MS_MOD)
weapons = [@weapon_id]
armors = [@armor1_id, @armor2_id, @armor3_id, @armor4_id]
return weapons, armors
end
def test_equap
non_learnable = BlizzCFG.equap_nonlearnable_skills(self.id)
(@skills - non_learnable).each {|id|
maxap = $game_system.maxap(id)
forget_skill(id) if maxap < 0 || self.ap(id) < maxap}
weapons, armors = prepare_equap
skill_ids = []
weapons.each {|id| skill_ids += $game_system.eq_database(id, true)}
armors.each {|id| skill_ids += $game_system.eq_database(id, false)}
(skill_ids - non_learnable).each {|id| learn_skill(id)}
end
end
#==============================================================================
# Game_Troop
#==============================================================================
class Game_Troop
attr_reader :id
alias setup_equap_later setup
def setup(troop_id)
setup_equap_later(troop_id)
@id = troop_id
end
end
#==============================================================================
# Window_BattleResult
#==============================================================================
class Window_BattleResult
def refresh_extra(aps)
self.contents.fill_rect(0, 0, self.width, 32, Color.new(0, 0, 0, 0))
x = 4
self.contents.font.color = normal_color
cx = contents.text_size(@exp.to_s).width
self.contents.draw_text(x, 0, cx, 32, @exp.to_s)
x += cx + 4
self.contents.font.color = system_color
cx = contents.text_size('EXP').width
self.contents.draw_text(x, 0, 64, 32, 'EXP')
x += cx + 16
self.contents.font.color = normal_color
cx = contents.text_size(@gold.to_s).width
self.contents.draw_text(x, 0, cx, 32, @gold.to_s)
x += cx + 4
self.contents.font.color = system_color
cx = contents.text_size($data_system.words.gold).width
self.contents.draw_text(x, 0, 128, 32, $data_system.words.gold)
x += cx + 16
self.contents.font.color = normal_color
cx = contents.text_size(aps.to_s).width
self.contents.draw_text(x, 0, cx, 32, aps.to_s)
x += cx + 4
self.contents.font.color = system_color
self.contents.draw_text(x, 0, 128, 32, 'AP')
end
end
#==============================================================================
# Window_Skill
#==============================================================================
class Window_Skill
alias draw_item_equap_later draw_item
def draw_item(index)
skill = @data[index]
aps = $game_system.maxap(skill.id)
if DISPLAY_AP_REQ && !$scene.is_a?(Scene_Battle) &&
(aps > 0 || aps != 0 && DISPLAY_AP_ZERO)
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x, y = 4+index%2*320, index/2*32
rect = Rect.new(x, y, self.width / @column_max - 32, 32)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
text = skill.name
if aps > 0
text += " (#{@actor.ap(skill.id)}/#{aps})"
elsif DISPLAY_AP_ZERO
text += ' (0/0)'
end
self.contents.draw_text(x + 28, y, 204, 32, text, 0)
self.contents.draw_text(x + 232, y, 48, 32, skill.sp_cost.to_s, 2)
else
draw_item_equap_later(index)
end
end
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias start_phase5_equap_later start_phase5
def start_phase5
start_phase5_equap_later
aps = $game_system.gainap($game_troop.id)
@result_window.refresh_extra(aps) if DISPLAY_AP_GAIN
$game_party.actors.each {|a| a.add_ap(aps) if !a.dead? || GAIN_DEAD}
end
end
end
EDIT:
Umm I fixed it blizz. You musta not noticed but the non_learnable_skills is under $game_system not BlizzCFG.
line 1788 needs to be
non_learnable = $game_system.equap_nonlearnable_skills(self.id)
EDIT 2:
I'm not gettin AP when I kill enemies in babs
In case you didnt notice I posted the fix for it already...in fact awhile ago....
Works!!! Thank you Blizz. Your ABS is awesome!
any way to modify your Custom Controls Add On to make it where each key adds to a variable? I'd make it myself but I dont want to have a bunch of if branches so I figured there might be a way to modify the script to make a certain input add to a variable.
Like, when you press a button on the map, it would add 1 to some variable? Something like a press counter?
Yea but each letter adds a certain number according to the letter pressed. I just want it for letters.
a would add 1
b would add 2
c would add 3
d would add 4
etc.
Input::Key[LETTER] - 1000
This will give you the ASCII value of each key. i.e.
$game_variables[Input::Key['A'] - 1000] += 1
Even though I would rather suggest to use another hash somewhere like Game_Temp or Game_System because your lovely Game_Variables are horribly limited as you can see. :P
Input::Key.each_key {|key|
if Input.trigger?(key)
if $game_system.key_counters.has_key?(key)
$game_system.key_counters[key] += 1
else
$game_system.key_counters[key] = 1
end
end
}
Quote from: Blizzard on June 18, 2009, 10:25:52 am
Input::Key[LETTER] - 1000
This will give you the ASCII value of each key. i.e.
$game_variables[Input::Key['A'] - 1000] += 1
Even though I would rather suggest to use another hash somewhere like Game_Temp or Game_System because your lovely Game_Variables are horribly limited as you can see. :P
Input::Key.each_key {|key|
if Input.trigger?(key)
if $game_system.key_counters.has_key?(key)
$game_system.key_counters[key] += 1
else
$game_system.key_counters[key] = 1
end
end
}
Why use a hash when you can just use an array?
Input::Keys.each do |key|
key = key[0] # Gets number version of ASCII value
$game_system.key_counters[key] = $game_system.key_counters[key] ? $game_system.key_counters[key] + 1 : 1
end
Processing redundancy and you can't iterate properly through it.
ary.each {|element|
if element != nil
do_stuff
end
}
hash.each_value {|element|
do_stuff
}
Also, easy access.
ary[Input::Key[LETTER] - 1000]
hash[LETTER]
Input::Key.each_key {|key|
if Input.trigger?(key)
if $game_system.key_counters.has_key?(key)
$game_system.key_counters[key] += 1
else
$game_system.key_counters[key] = 1
end
end
}
So would I place this in a new script then or in your custom controls? I'll use the key counters thing
You could put it in Scene_Map for map logs only. Or if you put it in "def Input.update" in Tons, it would log everything. Just make sure that you check if $game_system isn't nil first before you execute this code. Best thing about this way:
$game_system.key_counters.each_key {|key|
p key + ' was pressed ' + $game_system.key_counters[key] + ' times.'
}
Or:
$game_system.key_counters.each {|key, value|
p key + ' was pressed ' + value + ' times.'
}
EDIT: Ah crap. I totally forgot to post that I put up v7.3. ;_;
Blargh. Makes me miss C arrays somewhat X|
Still redundant memory usage. xD
When you're already wasting memory like that, you can simply use a hash, make your code look nice and make the job easier on yourself. xD
Quote from: Blizzard on June 18, 2009, 01:00:38 pm
Still redundant memory usage. xD
When you're already wasting memory like that, you can simply use a hash, make your code look nice and make the job easier on yourself. xD
Really, though, how hard would it have been for Matz to just include some kind of static (or resizable, but only by called array.resize, similar to a C++ vectors) array, really?
You don't get what I mean at all.
This array will get filled with nils from index 0 to 999999. You are wasting loads of memory for nothing.
Ruby array IS like a vector in C++. It even resizes itself if necessary.
Yes, but you can set vectors to only resize when you want them to. Scrap that, though, I just want a static array >_<
hey,
im new here and a total noob to RPG Maker. First of all id like to say awesome script- its absolutely amazing and very user friendly.(even for a noob :evil:).
I do have a problem however, If it is at all possible for anyone to address. im using the "Tons of Add-ons by Blizzard" script version 7.30b, "Stat Distribution System by Blizzard" script version 1.33b "StormTronics CMS by Blizzard" script version 5.38b.
My Problem seems to be that when i turn on the EQUAP_SKILLS part of the tons of add on script and i try and access skills from the menu i get an error: Script ' (*) STCMS - Hybrid Edition' line 1412: NoMethodError occured. undefined method 'maxap' for #<Game_System:0x3d34720>
This only seems to happen when i have EQUAP_SKILLS on and i use the CMS, maybe im missing something- i'd appreciate it if someone could provide a solution to my problem and sorry for the ignorance (still tryna learn :P)
Also i wanted to find out if it is at all possible to have a CMS that shows the skills to be learned from equipining something (weapon or armour-using the EQUAP_SKILLS) i.e. under the equip tag of the menu, when u choose to equip your character with a weapon a little side window pops up showing what skills can be learned from that weapon and how much AP such skill costs. And further more is it also possible to display the icon of the weapon/armour from where that skill originates next to the AP amount. e.g. for "Cross Cut" skill: have the skill07 icon to the left, then the name of the skill (Cross Cut), then the AP count (0/10), then an icon of the weapon from which the skill originated on the right?
I know i am probably asking for a lot, but if anyone has the time to see to my problem i would really appreciate it :) Thanx in advance (and for putting up with my ignorance :P)
http://forum.chaos-project.com/index.php?topic=23.0
Have them in the right order?
I uploaded v5.39 of STCMS. Now it should work.
Quote from: Blizzard on June 24, 2009, 05:46:32 pm
I uploaded v5.39 of STCMS. Now it should work.
Hey Thanx so much :) it works now!
refering back to my previous question is it possible to have a menu that shows weapons and armour and their learnable skills (using the EQUAP_SKILLS script)? I dont really know anything about scripting so any help would be much appeciated. Maybe even under the equip menu one can have the skills that the character will learn from the given equipment. Maybe even toggle menus so it works with the StormTronics CMS? i.e. have the layout of the StormTronics CMS (show all the attributes on the left side, equipment on the right hand side) but also have a toggle function so that you can toggle between the attributes and the skills (e.g. how much the weapon increases a certain attribute and then press the toggle button and one can then view what skills that weapon would offer when equpied) maybe even show added skills in Blue/Green (if you equip the weapon) and show lost skills in red (by unequiping the previous weapon, if you did not learn all the skills from that weapon).
That way if a person is using the StormTronics CMS they can disable/enable the toggle function if they are/ or are not using the EQUAP_SKILLS part of the Tons of Add-ons script?
Sorry I know you guys are extremely busy with other things, but if this could at least be considered :)
I avoided doing that because it would complicate the script and make it much less compatible with CMS-es. You have descriptions for the equipment parts, use them.
:)
Ok, i understand- Thank you very much for all the help.
I don't know about the rest of you, but I managed to separate the tons of addons scripts and kept it to only the few I needed, and now the HP consuming works well enough for me, so I think I'm going to finish up the very last bit of chapter 2 and release that... probably by the end of the week.
Quote from: Blizzard on January 09, 2008, 08:50:47 am
Author's Notes
Tons of Add-ons now has to be used as 3-parts script because of a weird behavior of RMXP during bug detection. Insert the 3 parts in the correct order and the system should work without problems. Do NOT remove any of the parts, the script NEEDS all 3 parts to work with other systems.
These add-ons were mostly tested in a different environment or not at all.
If you find any bugs, please report them here:
http://forum.chaos-project.com
That's it! N-Joy! =D
Quote from: Blizzard on July 15, 2009, 04:15:22 pm
Quote from: Blizzard on January 09, 2008, 08:50:47 am
Author's Notes
Tons of Add-ons now has to be used as 3-parts script because of a weird behavior of RMXP during bug detection. Insert the 3 parts in the correct order and the system should work without problems. Do NOT remove any of the parts, the script NEEDS all 3 parts to work with other systems.
These add-ons were mostly tested in a different environment or not at all.
If you find any bugs, please report them here:
http://forum.chaos-project.com
That's it! N-Joy! =D
Is it not allowed? Or just not recommended? The way I've done it was to take the initialize part and only put the ones of the scripts I'm using in there, and also the attr_accessor parts for the scripts, and place it in the first script, then place all other tons scripts in their own script under the first one where I have the initializing stuff.
The only reason I did that was because my game was having problems with the full package, even with everything set to false :^_^':
It's not recommended. If there's a problem related to your scripts, we might not be able to help considering you already fragmented a lot of the Tons of Add-Ons, which might be involved in any of those...
Of course, it may not be allowed...haha...but it's definitely not recommended~
As I said, my only reason for fragmenting it is that it caused problems with my other scripts even when no addons were activated.
The scripts in my game are always in some kind of delicate balancing act.
Then you should have posted so the problem gets fixed. What makes you think that it was Tons' fault? I have come across numerous scripts that mess up Tons. You don't delete parts of other scripts either, do you? "OMG, that script just caused an error! I'll just delete the line that is causing the error!" Yeah, right.
Really deleting add-ons from Tons of Add-ons should only be done if it's practically the best solution to do this. I have told several people already to delete the caterpillar script because they had a major conflict with another script. But that is only one controlled add-on that isn't necessary in any other scripts. But you don't just randomly remove any add-on you like. I can almost guarantee that you will come across errors if using some of my other scripts. It's not just recommended to use the entire script, it's VERY RECOMMENDED. i.e. If you deleted the HP/SP/EXP bar script, you can completely mess up several of my other other scripts including CRLS, EOS and Blizz-ABS.
Quote from: Blizzard on July 16, 2009, 04:24:52 am
Then you should have posted so the problem gets fixed. What makes you think that it was Tons' fault?
I didn't presume it was the fault of the script (in fact, the
reason I didn't post in this thread about the problems I was having was because I knew tons wasn't exactly the source of the issues), there were problems when I had the entire collection of scripts, then I took only the ones I needed, and there were no more problems. I don't see the issue here, as I likely won't be using CRLS, EOS, or Blizz ABS in my game at this point, and a conflict with those scripts won't be an issue (and hasn't so far with some of your other scripts I'm using like the party switcher and the reflection status).
The addons I've used thus far are as follows.
Shaded Text
Centered Battler
Better Tilemap Update
Caterpillar
Screen Tremble
And the HP drain skills script
I might use more later on, but all relevant credits will be given, even for authors whos scripts are part of tons that I didn't use.
Lesson to be learned: The more you mess with other people's code, the more error-prone and the less compatible it gets.
Alright. If you can run it all without problem, then you're lucky. winkio pretty much already said what I was going to say. The only thing that I can add is that you shouldn't be surprised if you start getting weird errors, that's all. You need to be careful with stuff like that if you don't really know what you're doing (as in: you're not a scripter).
EDIT: v7.31b is out. It now has the best Input module for RMXP there is. >:3
These add ons are very cool and useful, but I cannot get the full screen add on to work no matter what I do for some reason. Do you know why it may not be working or help me figure out why?
Maybe you are trying in debug. I think that only work in .exe >_<
Nice job on the Input module Blizz :) FINALLY an Input.release? function for the RMXP Input module. I'm not really concerned with the language layout, but I'm sure I'll soon realize it's importance. *levels up*
EDIT: wow! I've taken a look at the implementation and I see you got rid of arrays! I've started working on a key simulator addon for your Input module and that's when I realized this. I've seen this implementation in one of the PyGame libraries. I've tested this and it causes NO lag whatsoever, the game runs at 38-40 FPS.
PS: Say, are you planning to implement this into CP and release an update? (Pretty please? :shy:)
Quote from: Fantasist on July 21, 2009, 07:25:05 am
FINALLY an Input.release? function for the RMXP Input module.
I tell you, I was THIS close to remove it again. xD But I guess I can make use of it in Blizz-ABS when implementing the combo system.
Quote from: Fantasist on July 21, 2009, 07:25:05 amI'm not really concerned with the language layout, but I'm sure I'll soon realize it's importance. *levels up*
Direct text input like in RMX-OS. :P
Quote from: Fantasist on July 21, 2009, 07:25:05 am
EDIT: wow! I've taken a look at the implementation and I see you got rid of arrays! I've started working on a key simulator addon for your Input module and that's when I realized this. I've seen this implementation in one of the PyGame libraries. I've tested this and it causes NO lag whatsoever, the game runs at 38-40 FPS. *levels up again*
Yeah, I figured that I should use fixed size arrays. It might take some more memory, but it's faster because no resizing of arrays is necessary and checking a key has a complexity of O(1) instead of O(size_of_array). It's not like the arrays were big, but still.
Quote from: Fantasist on July 21, 2009, 07:25:05 am
PS: Say, are you planning to implement this into CP and release an update? (Pretty please? :shy:)
Maybe. I don't think it currently checks for the keyboard layout properly. In any case not before Beta 2 because the next planned release is Beta 2.
Quote from: Rose Guardian on July 20, 2009, 06:14:02 pm
These add ons are very cool and useful, but I cannot get the full screen add on to work no matter what I do for some reason. Do you know why it may not be working or help me figure out why?
What Darok said. If it still won't work, are you sure that you turned it on?
QuoteI tell you, I was THIS close to remove it again. xD But I guess I can make use of it in Blizz-ABS when implementing the combo system.
But c'mon! it's pretty useful!
QuoteYeah, I figured that I should use fixed size arrays. It might take some more memory, but it's faster because no resizing of arrays is necessary and checking a key has a complexity of O(1) instead of O(size_of_array). It's not like the arrays were big, but still.
Yeah, more memory is a good trade-off for the speed boost in this case.
btw, I have a question for the key simulator addon. What exactly is the nature of elements in @state? For now, I simulated keys by setting @triggred[key]=true, etc, but to evaluate them, the @state & DOWN_STATE_MASK are checked, right? The values when keys are 128, 129 and 1. What do they mean? If I set @state[key] to 128 along with @triggered[key]=true, is that the right way of doing it?
Quote from: Fantasist on July 21, 2009, 09:15:20 am
btw, I have a question for the key simulator addon. What exactly is the nature of elements in @state? For now, I simulated keys by setting @triggred[key]=true, etc, but to evaluate them, the @state & DOWN_STATE_MASK are checked, right? The values when keys are 128, 129 and 1. What do they mean? If I set @state[key] to 128 along with @triggered[key]=true, is that the right way of doing it?
@state is a string of length 256. Each byte represents the state of one virtual key. It is passed as argument to GetKeyboardState which then writes the keyboard state as an array of 256 bytes. Since a string actually represents a series of bytes, it's usually used for this purpose.
"@state[key] & DOWN_STATE_MASK" applies masking of the bits on one given byte (the key'th byte of the string state) using 0x80 (DOWN_STATE_MASK, maybe I should have called it DOWN_STATE_BIT_MASK). When the 7th bit is set to 1, then the key is down, otherwise it's up. As for the 0th bit, it indicates the toggle state of a key (like CAPS LOCK). I didn't check for the 0th bit as toggling doesn't concern me.
QuoteWhen the function returns, each member of the array pointed to by the lpKeyState parameter contains status data for a virtual key. If the high-order bit is 1, the key is down; otherwise, it is up. If the key is a toggle key, for example CAPS LOCK, then the low-order bit is 1 when the key is toggled and is 0 if the key is untoggled. The low-order bit is meaningless for non-toggle keys. A toggle key is said to be toggled when it is turned on. A toggle key's indicator light (if any) on the keyboard will be on when the key is toggled, and off when the key is untoggled.
http://msdn.microsoft.com/en-us/library/ms646299(VS.85).aspx
And yes, using "@triggered[key] = true" would pretty much activate the trigger key for one update loop. It had to be called as soon as possible after Input.update, though. Keep in mind that this doesn't really press the keyboard key on an OS level, but rather it only simulates that the key was pressed only in RMXP.
That helped, thanks Blizz :)
Hello, hello!
Any way I can make the Equap Skills compatible with Blizz ABS? I notice I'm not gaining any AP when killing enemies. Obviously Equap skills AP gain is set in battle scene not on the map layout.
Anything that can be done? I'd really appreciate the help again :shy:
Thanks.
Quote from: The Holy ManualEQUAP Skills
Compatible: Yes.
Tested: Yes.
Notes: There is no reason why it shouldn't work with Blizz-ABS. Full compatibility was added in an earlier version already.
But it looks like the code isn't there anymore. I must've accidently deleted it.
Cool :^_^':
Is is it updated?
Blizz is gone for a few days, read here (http://forum.chaos-project.com/index.php?topic=4263.0).
So I doubt he'll update it until he's back :P
Oh cool! :)
I hope he has fun then.
Hello!
Just got a quick question regarding the multi-drop script. Is it possible the use like 13,8 % drop rate or 0,5 % drop rate? I
tried with 99.9 % and I didnt get an error atleast :) I used a . (period) when I put in 99.9...
I just wanna know if low % chanses work, but I dont feel like looting a drop rate of 0.5 % until I see it work :)
thanks
Decimal percentages are not really supported, it will be simply rounded down. So 0.5 will be rounded down to 0 and it's practically impossible to get that item.
@Colinoliver: I'll add it in Blizz-ABS 2.57.
Awesome thanks. I'll keep an eye on that for the update.
Blizz, something in Tons seems to be messing with my attributes. Weaknesses and resistances are being completely ignored, even if I switch all add-ons off. Deleting Tons corrects it.
I'll take a look at it.
EDIT: I tried it and everything works fine for me. Maybe one of your custom scripts in addition to Tons messes it up.
Hmm, I copied Tons into a blank project and it still does it. :???:
Are you using an add-on that uses dummy elements? Maybe you configured it wrongly.
When I use Tons, it all works fine. i.e. I make an enemy absorb an element or be immune to it, it works fine. I make a skill add states, it also works fine. :/
Nope. At the moment I'm only using Shaded Text and Ultimate Font Override, but even if I disable every add-on it still won't work. I only recently switched to the latest version of Tons, too. So the only thing I've configured is Ultimate Font Override. Everything else is set to default.
Alright, I'll need a demo then. :/
Zing (http://www.sendspace.com/file/lq0lj5)
Everything's set up exactly how I've been testing it.
I'll check it ASAP.
EDIT: It is as I said. The elements you use are configured as dummy elements in one of the add-ons by default. -_- *points to Skill Separation System*
Alright, that's done the trick. Cheers.
You asked if I was using an add-on with dummy elements. I assumed that since I hadn't touched anything (and all add-ons were switched off), the game should've run as normal.
Yeah, but config is config. I can't make it so the config alters itself during runtime if you want to be able to switch the add-on on/off during the game. Either switching on/off during game or config that doesn't apply if the add-on isn't used. Both is pactically impossible (without messing up the code a lot).
Quote from: Blizzard on August 24, 2009, 01:27:28 pm
Yeah, but config is config. I can't make it so the config alters itself during runtime if you want to be able to switch the add-on on/off during the game. Either switching on/off during game or config that doesn't apply if the add-on isn't used. Both is pactically impossible (without messing up the code a lot).
Technically, since you
can redefine methods, it's possible to turn add-ons on/off, but it's very impractical and very, very incompatible.
As I said, impossible without messing up the code a lot.
Just a question. How do you use different death images for each character when Death Image is set to true? I want my characters to have their own death image.
I didn't implement that feature, because I use that in my own game. :P
Sorry I never played your game so I didn't know.
No problem. I'm just saying that I won't implement it here.
Would it be possible to add attribute and status resistances for Passive Skills? ie: "Absorb Fire", "Null Sleep", etc. I don't know how difficult that would be, or whether you're even interested in doing it. I'm just throwing it out there.
I'm too lazy.
I admire your honesty.
Quote
Quote from: Blizzard on August 25, 2009, 10:22:16 am
I'm too lazy.
Quote from: Cid on August 25, 2009, 10:38:17 am
I admire your honesty.
:rofl: *levels up Blizz*
@Rose Guardian: I can give you some code and instructions to get the effect you achieve (only if Blizz is OK with it though ._.)
Don't worry, I'm fine with it. xD
@rose or you could use AnTBS not only dose it now allow for death images but it allows for ANIMATED death images! :D
Sorry if this has been asked already, but I wanted to know if it was possible to hide the HP for bosses with the Enemy Status Battle add-on. (I did a quick search for Enemy Status Battle, didn't pull anything up, so...)
I still want to use the bar for boss battles, but hide the exact HP with question marks (a la Mana Khemia). I think it should be simple, but I really don't know anything about scripting, so...
You can turn the add-on simply off before a boss fight (I explained in the instruction how to turn add-ons on/off during the game), but that won't show anything since I didn't implement something like that. It's supposed to be a simple add-on that everybody can use. You'll have to edit it yourself or ask somebody to edit it for you if you want that feature.
i am trying to use the blue magic skill on a game i am making with the blizz-abs script but keep getting a message saying
"script 'abs2' line 2152: NoMethodError occurred.
unidentified method 'learn_skill' for #<Game_Enemy:0x3bc64b0>
i have the most recent of both versions. plz help
You gave an enemy a Blue Magic Skill. You don't do that.
well how do i fix this, in the tons of add ons script 2 it ask me what skill_1d i want to use and thats all i enter
Don't give enemies skills that you defined in the script to be Blue Magic Skills.
When I escape a battle or a battle ends,it says:
Script"Addons 1"line 4064:NoMethodError occured
undefined method `each'for nil:NilClass
probably wrong script order
look at this post:
http://forum.chaos-project.com/index.php?topic=23.0
Quick question on the difficulties add-on [[yes I'm still fiddling with it :p]] is there a way to use a call script to set the difficulty to another difficulty? like say:
$game_system.difficulty.set_name == 'blah blah blah'
$game_system.init_difficulty(INDEX)
Using 0 as index will apply the the first option, 1 will change to the second, etc.
Ahh yes just what I needed! Thank you very much Blizz *lv+*
Not sure if its worth finishing other then get 35$ out of my friend but its a complete Tons of Add-Ons Config App this is part of the layout and its got alot of work...
(http://i678.photobucket.com/albums/vv143/GameGuysProjects/toaconfig.png)
Not sure if its even a good idea making it but I get 35 bucks from my friend from doing it. I started charging him for scripts and programs I make for him because he asks for so many.
He's paying you $35 just so he can be lazy? O.o
Yup pretty much, anyone think its a good idea?
I thought it was ok but seriously theres only so much lazyness you can have...or is there?
this is weird, no matter what I do whenever I use a Revenge skill it pops up "Miss"
edit: same with Demi moves, they always miss :/
Quote from: Aqua on September 25, 2009, 10:19:59 pm
He's paying you $35 just so he can be lazy? O.o
Why do you think people hire computer technicians and commuter support? The majority of my money comes from doing really simple tasks that the company is too lazy to do/figure out for themselves. lol. Game_Guy, finish the project with as much speed as possible (while keeping the work good), it it might appeal to his lazy side so much that he'll ask you for more work.
lol nvm
I used a revenge skill and it healed my opponent ._.
rofl
self.damage = self.maxhp - user.hp
doesn't work if enemies use a Revenge skill.
I changed it to
self.damage = user.maxhp - user.hp
now it does
._.;;;
EDIT: Fixed. Funny that nobody noticed it so far.
This should likely be more appropriate being posted in the Script Troubleshooting subforum, but it only came up with the most recent version of Tons of Scripts.
Thus far I have been using your pack with version 6.xb, and upon downloading 7.x (I had been absent in the RPG Maker for several months) found that each battle crashes the game upon my characters turn.
Script 'AddOn Pack 2' line 3814: ArgumentError occurred.
wrong number of arguments(0 for 1)
The position of the script in the Script Editor hierarchy does not change anything. Complete list of scripts below. (No I am not using any SDK scripts.)
AddOn Pack 1
AddOn Pack 2
AddOn Pack 3
Emoticon Event (By Nechigawara Sanzenin)
Damaging and Healing Floor Tiles (Author unknown?)
Sideview Battle System Version 2.1xp (By Enu, Atoa, Kylock, Mr. Bubble, cairn)
* SBS Config
* Sideview 1
* Sideview 2
Advanced Collapse (By Enu)
Leon's Shopping System
Kylock's Gun-AddOn
Example Skills (By Atoa and Enu I think...)
Ehh... If this truly is related to your AddOn collection and not a compatability issue, you can just ignore it :^_^':
It's the SBS making a method differently.
You'd have to provide the method that Tons is erroring on and that same method that's in the SBS for a fix...
(Or if you want a fix yourself...
The method in the SBS should have something like "method_name(something_here = default_value)" while Tons only has "method_name".
Change Tons to "method_name(something_here = default_value) to fix the problem.
I'll try fixing it myself for two reasons: One, because it's kinda my fault to begin with having two complex systems in one game, and Two: I need to learn how Ruby works if I'm ever going to understand it :)
This is the section that the message referred to, in any case.
#==============================================================================
# Game_Battler
#==============================================================================
class Game_Battler
alias elements_correct_sss_later elements_correct
def elements_correct(elements)
return elements_correct_sss_later if !$game_system.SKILL_SEPARATION #This part the error referred to...
multiplier = size = 0
elements.each {|i|
unless $DUMMY_ELEMENTS.include?(i)
multiplier += self.element_rate(i)
size += 1
end}
return (size == 0 ? 100 : multiplier / size)
end
end
I'm afraid I found another bug.
Now, when I put the latest version of addons underneath all my other scripts (including RTAB), it gives me the following error when I attack a monster:
Script 'Real Time Active Battle' line 1569: ArgumentError occurred
wrong number of arguments (1 for 0)
The code it's referring to is as follows:
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Action renewal (main phase)
#--------------------------------------------------------------------------
def action_phase(battler)
# When action 1 is, verification whether or not the battler while acting
if @action == 1 and battler.phase <= 3
for target in battler.target
speller = synthe?(target)
if speller == nil
# When the target is in the midst of usual acting,
if @action_battlers.include?(target)
if target.phase > 2 and battler.phase < 3
return
end
end
else
# When the target is in the midst of cooperation skill moving,
for spell in speller
if @action_battlers.include?(spell)
if spell.phase > 2
return
end
end
end
end
end
end
case battler.phase
when 1
update_phase4_step1(battler)
when 2
update_phase4_step2(battler)
when 3
update_phase4_step3(battler)
when 4
update_phase4_step4(battler)
when 5
update_phase4_step5(battler) <--- This line
when 6
update_phase4_step6(battler)
end
end
end
I CTRL-F'ed update_phase4_step5 and found that several methods in the second and third part of the addons set batter to nil. Perhaps that's doing it? I don't know...I'm a little out of my depth here.
I'll take a look at it.
@Rezca: That has been fixed in v7.37b.
EDIT: Update to v7.39b.
@sam: Thanks for testing it with RTAB. I didn't have time to test the newest add-ons with RTAB properly so this RTAB bug hunt is helping out quite a bit. xD
Blizzard,
No, thank YOU :)
Anyway, it works! You rock! I can now place it underneath RTAB and all my other scripts and it doesn't bug out in battle.
However, another problem remains...the majority of the status and skill scripts don't work. Most of them don't output any errors, they just simply don't do anything even when turned on and properly configured. I have a LOT of scripts, so this makes me think it's just a general compatability/overwriting error. I've managed to duplicate the effects of a lot of these skill add-ons using event systems anyway, so it shouldn't be a huge problem. There is one add-on, Unique Battle Commands, that I wanted to use so very much but that also doesn't do anything. I'd like to ask you if you could help fix that but without a frame of reference (i.e. an error message) it seems like it'd be like finding a needle in a haystack.
Here's one error for you...when I use the Regen Status add-on, as soon as I cast Regen on a character, it gives me the following error:
Script 'Tons of Addons' line 359: NoMethodError occurred
undefined method '+' for {}:Hash
That is this code:
#==============================================================================
# Game_Battler
#==============================================================================
class Game_Battler
alias slip_damage_regen_later? slip_damage?
def slip_damage?
if $game_system.REGEN_STATUS && !$scene.is_a?(Scene_Map) &&
(HP_REGEN_IDS + SP_REGEN_IDS + SP_POISON_IDS).any? {|i| @states.include?(i)}
return true
end
return slip_damage_regen_later?
end
alias slip_damage_effect_regen_later slip_damage_effect
def slip_damage_effect
if $game_system.REGEN_STATUS
if !(HP_REGEN_IDS.any? {|i| @states.include?(i)}) &&
slip_damage_regen_later?
slip_damage_effect_regen_later
elsif (HP_REGEN_IDS.any? {|i| @states.include?(i)}) &&
!slip_damage_regen_later?
dam = -self.maxhp / 10
if dam.abs > 0
amp = [dam.abs * 15 / 100, 1].max
dam -= rand(amp+1) + rand(amp+1) - amp
end
self.hp -= dam
self.damage = 0 if self.damage == nil
self.damage += dam <---THIS LINE
end
if (SP_REGEN_IDS.any? {|i| @states.include?(i)}) !=
(SP_POISON_IDS.any? {|i| @states.include?(i)})
dam = self.maxsp / 10
if dam > 0
amp = [dam * 15 / 100, 1].max
dam += rand(amp+1) + rand(amp+1) + amp
end
dam = -dam if SP_REGEN_IDS.any? {|i| @states.include?(i)}
self.sp -= dam
self.damage = 0 if self.damage == nil
self.damage += dam
end
else
slip_damage_effect_regen_later
end
end
I tried setting the Regen skill to using Slip Damage, and then the error went away but it simply didn't do anything like the other skill add-ons.
I'm guessing this is just conflicts with my multitude of other scripts, but is there something I'm missing? Thanks again!
Hm... There is simply a general problem with RTAB. I should have some free time by the end of the week. I'll go through all add-ons that could be causing problems and test them with RTAB properly.
Do you think you could add the beserk skill??
Enraged characters with automated attacks??
You could do this by setting up pre-defined tendencies within the script much like in the enemy database.
Using numbers 1-100 you could emulate percentage to set priorities ...
That could be easily evented in a common event... like this:
if chr a status bersek inflicted force action attack
add just a boost to stat´s if needed... Or is there a special reason you´d want it to be in a script?
Using that method, would he continue to force those actions until the status broke??
You are so lucky that I'm in a good mood right now or else I'd let hell rain over you for that question.
(http://img203.imageshack.us/img203/2527/snap995.png)
LMFAO YOU HAVE GOT TO SETTLE DOWN!!
I'm sorry, I haven't experimented with the status tab in the database. So, nevermind.
I just knew beserk wasn't a ailment.
Lol, I thought somebody who's been working with RMXP for over a year would know something like that.
I guess I should have, but I never really established my battle system, so I never got around to things like that.
Hi,
First: Thank You for this amazing collection of scripts!
I've a problem with it using it in my project. Because I can't search this thread it is possible that this problem has been already solved,
if that's the case it would be nice of you if you could tell me the page or give me a link to the post with the solution.
But now to my problem:
When I set my actors graphic to (none), I get a picture of the default hero (ID001) with a white background.
It only happens when I include part 1 of the collection. When I comment it out, there's no problem.
Something similar occurs when I create a completly new project. I can't change my actors graphic to anything else. If I remove the script with Part 1 it works fine.
Any idea why this error occurs?
Thanks alot,
Lord
I'm not sure why this happens. Can you make a small demo so I can look into it?
Sure, here it is: Run to the tree stomp to trigger the effect. Remove or comment out the first part to make it work correctly.
http://www.megaupload.com/?d=KAXRF8IA
This is a weird error ...
I don't think we've come across anything like this with tons in the past.
Hm, at first as I used it in my original Project it thought it conflited with one of the other scripts.
But as it also happend, when I put it in a completly new project I'm a little bit confused...
But thanks to all for looking into it.
it can be me but I'm unable to recreate the error.
the demo seems to work like it should be.
(only thing I did was put tons in the right order)
Right order? I thought I did that.
Is the correct order:
Part3
Part2
Part1
Main
or
Part1
Part2
Part3
Main
?
part1
part2
part3
other scripts
main
Hm ok, i just changed it that way but it still doesn't work correctly.
Could you try the following for me, please:
Create an event which is triggered via Action Button.
Insert an "Set move route" which changes the graphic of the player to "(none)".
And try out if the player gets invisible.
Do you mean by other scripts user scripts or all other game scripts?
part1
part2
part3
Game_Temp
....
Main
This is where you need to go for script ordering ...
http://forum.chaos-project.com/index.php?topic=23.0
That thread will tell you everything you need to know about ordering the scripts that you've already added to your game.
hmm.. by changing the graphic with change move route and part 1 on it seem to not change
let me check
edit:
also would not use the change graphic in the move route command
would use the change player graphic command (in the 3th tab)
Wait, you are changing the PLAYER graphic to (none)? Well, that's where the problem is. To allow the additional graphic features of the caterpillar script, I had to script it that way so you actually can't use direct commands to change the player's appearance. I misunderstood what you said was happening when you execute the command. Just delete the caterpillar add-on.
And you should put the scripts in the right order anyway.
So if someone were to use your caterpillar script, then they lose the ability to change the character's graphics throughout events??
by testing I indeed found out that the Caterpillar by Blizzard the problem is. :P
@Calintz: that's what the master says.
Wouldn't that make it extremely hard to show emotion??
Like, when I event cut scenes, I change the main character's graphic a lot for specific reasons.
Example ...
I had a cut scene where the main character was playing hide and seek with his younger sister, and I had him leaning against a tree in the woods to count. Another scene was where he was leaning over the well where she "supposedly" fell into and drown 2years prior.
These kind of features would become unavailable if I decided to use the caterpillar script!?
Just change the first party actor's graphic.
yep
I'll make sure in the next version this doesn't happen anymore if you're not using the Caterpillar at all.
Great! It works now, it was the caterpillar script(luckily I didn't plan to use it). It now works fine with no white background and my character can go invisible via "set move route".
Thanks a lot to all of you!
As a tip for others who use this script package, I would include an example of the correct order in the first post, because for me the correct order was the way the scripts get proccessed.
Thanks again for the help,
so long
Lord
Hmm ...
Alright ...
I'd have to edit over 30 topics each time a new script is edited. No way I am going to do that. I think the stickied topic here (http://forum.chaos-project.com/index.php?topic=23.0) is quite enough.
I actually gave him that link on the last page ...
I'd still have to edit a lot of topics.
If somebody is that lazy to take a look at the stickied topics, maybe they deserve that it's not working for them. :/ If I put it in the first post, people will get errors and ask anyway because people don't read instructions. So I think ultimately it's pointless.
I think you might be right ... O_o.
I do believe that all are guilty at some point though. Well, maybe not you seeing as how you wrote the rules, (plus, you're the most active moderator I know) but the important thing is to really learn to improve after you've been confronted.
That said, we expect not to see the same mistake mister LordofThunder :V:.
:yesmaster:
Never will make this mistake again!
Good!! >:( ... :V:
I'm happy that you have everything running smoothly.
Yeah, me too. I feared first that I wouldn't be able to use Part 1 in my game because I thought it interferes with some of my other scripts.
But now, with this Addon-Pack my game will become real a eye candy. :-)
When I ever publish it, you will all get credits for the help, I promise!
cya
Lord
I didn't do a damn thing, Lol.
Don't put me in the credits ... O_o.
You gave me the link on how to sort the scripts, isn't that enough?
But if you don't want to...
Nah, that's not enough, Lol, but thanks for the offer. =).
->Sir, I've got a problem... The charge skill doesn't seem to work on me... How exactly do I use it and what the Trigger & Execution skill's effects should be? Like where should I put the attack's power?
BTW, can I request a passive skill that increases resistance to certain elements only and other passive skills that passively gives a chance to inflict a status ailment to the target?
Please & thanks!!! :plz:
†
Well, there is a description in which everything is explained. What is it that you don't understand there? :???:
->Say I make a skill called "Charge Attack" that charges for 2 turns, it is supposed to be a trigger skill which inflicts a "Charging Up" status to the caster... When the 2 turns are over, isn't it supposed to use a skill, say "Unleash", that executes the effect of the "Charge Attack"? I was wondering where I should put the damage of the skill, in "Charge Attack" or "Unleash"?
This is the other problem:
When I use the skill, it executes immediately without charging... And it uses the "Charge Attack" skill instead of the "Unleash" skill... Could it be in conflict with any of my other scripts?
Here are the scripts I use (in order):
*Advanced Shop Status Window by RPG Advocate
*One Man CMS by Rune
*Tons of Add-Ons by Blizzard (Passive Skills & Charge Skill activated)
*Stat Distribution System by Blizzard
*RO Job/Skill System by Blizzard
*Main
I'm not telling you to do it, I'm just requesting if you have the interest or time... Anyway, please help me... :plz:
Please & thanks!!! ^^
Quote from: ShadowPierce on October 16, 2009, 07:12:53 am
->Say I make a skill called "Charge Attack" that charges for 2 turns, it is supposed to be a trigger skill which inflicts a "Charging Up" status to the caster... When the 2 turns are over, isn't it supposed to use a skill, say "Unleash", that executes the effect of the "Charge Attack"? I was wondering where I should put the damage of the skill, in "Charge Attack" or "Unleash"?
This is the other problem:
When I use the skill, it executes immediately without charging... And it uses the "Charge Attack" skill instead of the "Unleash" skill... Could it be in conflict with any of my other scripts?
If you use "Charge Attack", after 2 turns "Unleash" will be executed, not the effect of "Charge Attack" with the name "Unleash" (which would kind of defeat the entire purpose of trigger and execution skills since trigger activates the charging and execution is the actual skill used in the end).
Make sure that you have configured the script properly (since you have it already turned on) and remember to use a new game, not an old saved game (because in the old save game the script isn't turned on). I think that the problem should be in the config if there is no charging at all. Also, does the skill inflict the state properly? If not, I'm pretty sure it's the configuration since the other scripts you have shouldn't interfere.
Quote from: ShadowPierce on October 16, 2009, 07:12:53 am
I'm not telling you to do it, I'm just requesting if you have the interest or time... Anyway, please help me... :plz:
I probably won't do it since I don't really have time for it, especially because of the infinite amount of possible combinations of elements and resistances/absorptions.
when TRIGGER_ID then return [TURNS, EXECUTE_ID]
TRIGGER_ID is the ID of the skill which is called when you choose it in battle
TURNS explains itself
EXECUTE_ID is the id of the skill which is called after the specified number of turns have passed.
So, lets say to cast you need to "Gather Energy". Further Mass Heal needs 2 turns for charging up and then it is executed.
The line which you put in the script would be:
when x("ID of Skill Gather Energy") then [2,3]
The power of the skills is defined in the database.
If it conflicts with one of your other skills I can't say, because I don't know them, sry.
->Maybe I'm not explaining myself so well... Well, I'll try to tell it as straight & clear as I can...
What should be the effects of the "Gather Energy" skill? Should it inflict a "Charging Up" state to my character or have the effects of "Mass Heal" skill, which is -300? That is my problem because I've got this skill called "Giga Strike" which needs to charge for 2 turns & targets only 1 enemy... If I set the trigger skill to inflict the "Charging Up" state to my character, how can I target the enemy? When I don't set the state, the execute skill "Unleash" isn't used... Instead, the trigger skill is used immediately with 0 ATK...
Am I being too pushy? Please don't think I am, I just want help IF possible... If you will help me, I will swear eternal allegiance to you... :bow: (or something like that... ^^)
†
"Giga Strike" should inflict the state and target the enemy. "Unleash" is the actual skill that is used in the end with the predefined target of "Giga Strike". I just said that in my post before.
->How can I inflict the status to myself if I have to target the enemy? When I use the script and make the trigger target the enemy, when I start a new game & I use "Giga Strike", the character uses "Giga Strike" but inflicts 0 damage to the intro enemy & the character doesn't get the "Charging Up" state... I'd be really happy if you'll be able to help me...
Please & thanks!!! ^^
†
Then you didn't configure it right. The status effect is optional. Trigger skills automatically inflict the status effect on your character without the need to target that character. A trigger skill only activates the charge. If it doesn't, then you didn't configure it right or you didn't turn on the add-on. There is no other explanation.
Maybe you overlooked the constant "CHARGE_ID" which is defined between the Start Configuration block.
I just tried it out and it works fine. The only disturbing thing is that the effect-animation is running all the time.
To test I choosed "Sharp"-Animation and it's a little bit disturbing that it'S played all the time untile the turns are zero.
->Maybe I have, here are some of the configurations that might matter:
*Passive skills & Charge Skill Add-ons activated(Passive skill working fine...)
*Giga Strike skill does nothing but activate an animation for the skill... (Learned by Brawler class)
*Charging Up state is set to Can't move, has 100% chance to wear off after 2 turns & is removed after battle...
*Unleash skill has 600 ATK & targets one enemy... (Not learned by Brawler Class)
I might be forgetting something or Unleash has to be learned by my Brawler class first?
†
No, I took care of that. If an actor doesn't have a skill, he learns it temporarily. Maybe the best would be if you make a demo and upload it.
->Awright, thanks for trying to fix this peronally... :yesmaster:
http://www.sendspace.com/file/ylmk18 (http://www.sendspace.com/file/ylmk18)
Thank you very much!!! :haha:
†
You put all 3 parts into 1 script slot. -_-
Also, I meant a demo demonstratiing the problem, not a demo of your game.
->So I should separate each part to 3 scripts? So maybe that's why it's wrong... Alrighty, gonna try it out now...Sorry for bothering you... :^_^':
Thanks again!!! ^^
†
->Thanks for the awesome script!
Now if only I can make Madam Aqua's Weapon Specific Skills work... (~_~)
Thanks again!!! ^^
†
No double posting please. ~G_GEDITED: Take note that Aqua's a female. ~G_G
...
I'm not a sir! >.>
You can't blame him, you never put up your gender.
I always thought Aqua was a girl myself. Wonder why he's so gender confused...
Who's gender confused...? o.o
*confused in general*
Quote from: Aqua on October 18, 2009, 09:23:20 pm
Who's gender confused...? o.o
*confused in general*
ShadowPierce.
This isn't Tons of Off-Topic Posts here; it's Tons of Add-ons! Chop chop, *clap*~
And holy crap, I wonder what will happen when the update log becomes too long for this script. xD
I hope to retire before that happens. >.<
->Aqua's a ma'am?! :O.o: Still, thanks for the help... And I don't have the right time setting here to see if I posted after 24 hours... :sorry:
†
You can always edit your post. *points to "Modify" option*
Ah, the magnificent moderator in action. XD.
BTW:
Tons in a nifty add-on.
I just wish I had a more creative brain to come up with some ideas to throw in, because RPGs can do so much ...
Update:
Hey Blizzard ...
Have you ever thought of adding a section for simple battle mods to tons??
That's pretty much the purpose of Tons, small add-ons. I just decided to categorize them in this way because it's easier to overview.
Cool, cool ...
Have you ever played Dragonquest VIII??
Do you think you could add the "hyper / focus / tense up" feature thing to tons??
Haven't played it. What does it do?
Psyche Up. It's basically a "charge" type ability that can stack with itself up to four times to increase the damage dealt/HP healed by attacks and skills. I don't know the exact multipliers, but it seems to be something like:
First Psyche Up = x2
Second Psyche Up = x3
Third Psyche Up = x5
Fourth Psyche Up = x7
Your stored "tension" will disappear as soon as you break the chain of Psyche Ups, or if an enemy uses a skill that dispels it. The one exception is if you use a skill that isn't affected by the multipliers (ie: Full Heal, which heals 100% HP no matter what).
Also, in DQVIII you only have a chance of increasing to level 4 tension each time you attempt a Psyche Up. If you fail it will simply remain at level 3.
*points the Chain Status Effects*
Oooh, you're a sneaky little bastard Blizzard!! XD
Can I suggest a new version for your Blue Magic, both via Skills and Status ?
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Blue Magic via Status Effect by Blizzard and edited by Xelias
# Version: 1.1
# Type: Skill Learning Status Effect
# Date: 02.11.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# This actor will learn the enemy's skill he was attacked with while this
# status effect is inflicted. If an actor is inflicted with more than one
# "learning" status effect at the same time, every one of them contributes
# to the chance of learning the skill.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#==============================================================================
# module BlizzCFG
#==============================================================================
module BlizzCFG
def self.blue_states(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Blue Status Database
#
# Set up the database below using following template:
#
# when STATE_ID then return [CHANCE, GROUP_1, GROUP_2, ...]
#
# STATE_ID - the state ID in the database
# CHANCE - the probability in % that the skill will be learned
# GROUP - "class" from which skills can be learned
#
# Every status effect that is not defined here has a chance of 0% to make the
# attacked actor learn the skill of the attacker. Depending on the state,
# only enemies', actors' or both groups' skills can be learned. Add one or
# more of the following classes after the probability factor:
#
# Game_Enemy - represents enemies
# Game_Actor - represents actors
#
# Keep in mind that you need at least one group from which skills can be
# learned.
#
# LEARNING_SKILL_IDS - include any IDs of Skills that can be learned by Blue Magic and separate them with
# commas (i.e. [20, 21]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 27 then return [100, Game_Enemy] # 50% chance to learn from enemies
when 28 then return [10, Game_Actor, Game_Enemy] # 10% chance to learn from enemies or actors
when 29 then return [20, Game_Actor] # 20% chance to learn from actors
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Blue Status Database
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return [0]
end
end
LEARNING_SKILLS_IDS = [20,21]
#==============================================================================
# Game_Battler
#==============================================================================
class Game_Battler
alias skill_effect_bluestatus_later skill_effect
def skill_effect(user, skill)
if $game_system.BLUE_MAGIC_STATUS && self.is_a?(Game_Actor)
@states.each {|id|
data = BlizzCFG.blue_states(id)
if data.size > 1 && rand(100) < data[0] &&
data[1, data.size-1].include?(user.class)
if LEARNING_SKILLS_IDS.include?(skill.id)
learn_skill(skill.id)
break
end
end}
end
return skill_effect_bluestatus_later(user, skill)
end
end
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Blue Magic via Skill by Blizzard and edited by Xelias
# Version: 1.6
# Type: Skill Learning Skill
# Date: 14.11.2006
# Date v1.6: 02.11.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# This actor will learn one of the target's skills. Making this skill target
# all allies/enemies, ONLY ONE SKILL WILL BE LEARNED FROM A RANDOM TARGET!
# Make the skill do no damage to the target and use the hit rate to determine
# the success chance of the skill.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
BLUE_MAGIC_IDS = [65] # add any Skill IDs and separate them with commas
BLUESKILLS_SKILLS_IDS = [66] #add any Skill IDS of skills that can be learned via BM Skills.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias make_skill_action_result_blue_later make_skill_action_result
def make_skill_action_result(battler = nil, plus_id = nil)
if battler == nil
make_skill_action_result_blue_later
battler, targets = @active_battler, @target_battlers
elsif plus_id == nil
make_skill_action_result_blue_later(battler)
targets = battler.target
else
make_skill_action_result_blue_later(battler, plus_id)
targets = battler.target
end
if $game_system.BLUE_MAGIC_SKILL &&
BLUE_MAGIC_IDS.include?(battler.current_action.skill_id)
targets.each {|target| target.damage = nil}
target = targets[rand(targets.size)]
if rand(100) < $data_skills[battler.current_action.skill_id].hit
if target.is_a?(Game_Enemy)
ids = []
target.actions.each {|act| ids.push(act.skill_id) if act.kind == 1}
elsif target.is_a?(Game_Actor)
ids = target.skills.clone
end
if ids.size > 0
skill = $data_skills[ids[rand(ids.size)]]
if battler.skills.include?(skill.id)
target.damage = "#{skill.name} known"
else
if BLUESKILLS_SKILLS_IDS.include?(skill.id)
battler.learn_skill(skill.id)
target.damage = "#{skill.name} learned"
end
end
else
target.damage = 'None available'
end
else
target.damage = 'Miss'
end
end
end
end
Now you can choose which skills you can learn via Skills/Status. Of course, you can setup different learnable. skills for Skills and Status. Is it worth an update ?
I'll just leave it as it is.
Okay Thanks
Hey
Long time since the last time i posted in this forums lol. But now i'm back (just a little XD)
Well, i was testing this and found a glitch. Is in one of the oldest script in Toons (i think). The Death Toll one. Testing the variable values with F9, the variable assigned for every actor works well as far as i know, but the main variable for defeated enemy is the one that glitch. If you enter a battle and then escape if you look at the variable you can see it count as if you defeated the enemies. This can generate a way of statboosting if you want to give treasures (or something) to the player when he defeats X number of enemies :naughty: xDDDD.
It's easy to understand isn't it? You fight Ghostx2 while variable "Death Toll" is 0, then in anytime during the battle you escape selecting "escape" (obviously XDD) and then.. oh! look! now the variable "Death Toll" has a new value "2".
(Yeah i like to put everything as examples lol)
I'll take a look at that. I made it years ago in 5 minutes so it's possible that I made a mistake. Funny that nobody ever noticed.
Thanks!
I like to test everything that interest me ^^. That's why i couldn't test untill now, cuz is now when i'm inserting scripts in my game. (something similar happened with your RO Job/Skill system when nobody noticed that enemies couldn't use skills. Then i came to report that error lol. At least i'm good at testing (instead of scripting :(). It's usual that we just look at the script functionallity but didn't test it that's why things like this happens :P
Quick question about the centered battlers script. With how many party members does it work properly with? So, will it look good if i had it on, and then went to a fight with five guys in my party?
Four.
I guess i´ll have to just use four members...
Or change the script. It's like a few lines of editing.
I´m getting an error with TONS part 2 when i try to reset using F12. Been getting it for some time, and dicided to see what causes it, and it looks like tons is colliding with itself, because i moved all other scripts after it under main. The problem appears to be something with font override. I´ll give you a pic of the error messge.
(http://img69.imageshack.us/img69/4239/errortons.png)
So, what causes this, and how do i fix it? And Font override isn´t even on, and it still gives me that error.
Normal F12 crash. Just get the F12 fix. It's something Enterbrain messed up with RMXP and it can't be fixed.
The general problem with F12 is that instead of resetting the entire application, the scripts stay untouched. If you have used an alias anywhere, RMXP will do the alias again and on first occasion where the aliased method should be called, the crash happens.
Oh, ok. Well, thanks. It´s good to know that it´s not something with Tons, or i´ve got a messed up version of RMXP. I´ll go get the patch now.
Except, that the site has apparently moved. (or was it RMXP.org that became HBgames...?) So, if anyone has this, please send me a download link via PM or something.
It was RMXP.org that became HBgames.
I thought Zeriab or me posted his F12 fix here. O_o
Well, i´ll give it a better look, but at least the search didn´t find it when i used F12 as the search prhase.
I can't find it either so it's probably not here. Just take mine.
if $game_exists
Thread.new {system('Game')}
exit
end
$game_exists = true
Put it ABOVE all of your scripts.
Great, thank you Blizzard. You´re the best.
Yo blizz-dude,
I've tryed this script out and I keep getting this error:
"script 'Blizz-ABS2' line 3007: Argument error uccured.
Wrong number of arguments(1 for 0)"
I've no idee what it means, but maybe you do?
Firstly, you posted in the wrong topic, second, are you sure that your scripts are in the right order?
No I don't think I'm in the wrong topic.
I'm having this error only when I put the add-ons in my script editor.
And I do think so...
Furst the normal blizz-abs, then the add-ons, right?
(edit: nvrmnd, i fixd it)
I am currently using both this and the RTAB v1.16, and for some reason, very time I try to use one of the skills involving HP in the add ons (Energy Skill, revenge, hp consuming skill, etc) I get this error- Script 'RTAB' line 2671: NoMethodError occured.
undefined method 'each' for 340:Fixnum
the line in the RTAB is here:
#--------------------------------------------------------------------------
# * Remaining HP estimate
#--------------------------------------------------------------------------
def rest_hp
# Substituting reality HP to rest_hp
rest_hp = @hp
# All damage which the battler receives is made to reflect on rest_hp
for pre_damage in @damage
if pre_damage[1].is_a?(Numeric)
rest_hp -= pre_damage[1]
end
end
return rest_hp
end
And yes, I triple checked and my scripts ARE in the correct order. Any help with this would be greatly appreciated. Thank you!
That add-on is completely incompatible with Tons of Add-ons (and basically any other battle related script that was not made for RTAB in existence). I'm sorry.
Oh. Well, that would explain it then! Thanks for letting me know!
I'm having an issue with the caterpillar script that it looks like others have had before. While testing my game I found that the 'change player opacity' didn't work.
Other people who have had this issue have been told to turn off the caterpillar script (which works). However, since I'd like to keep the script, I tried disabling it in my event before changing the opacity (and the re-enabling it afterward). In theory I thought it would work fine. When I tested it though the caterpillar was disabled successfully, but the player character became frozen.
The other option I have would be to change the character's graphics, rather than the player character's. I'd rather not have to do this if I didn't have to, as it may frequently be possible that I would then need to change the character's graphic back to any number of graphics based on different variables (it would be much easier to use the opacity).
So, I guess my question is whether of not the Caterpillar script can really be enabled and/or disabled in-game. If so, what is my hang up?
Thanks :)
I posted an answer just several posts ago.
In any case, I'm going to remove the ghost display feature so the caterpillar stops annoying people.
Great work Blizzard on this tremendous script.
But I seem to be having problems using it -- I'm getting a weird error with the passive skills addon every time a battle ends.
I've tried making a new project and re-copying the scripts from this thread, but it still doesn't work.
(http://img163.imageshack.us/img163/1909/errorlup.png)
Check your script order.
Now, i have a question. Via using Equap skills and a special equipment system (like Guilames, or someone elses)
would i be able to make a skill i´d call dual wielding. The dual wielding would be an equap skill, and together with the equip system, would allow equiping a second weapon insted of a shield. Ofcourse only when the dual wielding is on. When it´s off, it would only allow equiping shields, and not secondary weapons.
Thanks for your suggestion, Pyhankoski, but I did state that I
Quote from: Myselftried making a new project and re-copying the scripts from this thread, but it still doesn't work.
And yes, all three parts were in their correct order.
It's a typing mistake. Three lines above that one should be:
old_gold, old_exp, old_levels = $game_party.gold, [], []
Change it to:
old_gold, old_exp, old_level = $game_party.gold, [], []
Thank you, Blizzard. It works now. ^^
What about my question? If needed i will provide the scripts that form Guillaume777's multi slot equipment.
Sorry, I accidentally overlooked it.
Isn't it possible to change equipment modes for actors in Guillaume's script already? All you would need then is a parallel process common event that checks if the skill was learned.
I think so. I just wanted your professional opinion of wheter or not it was even possible. I´ll give it a try sometime later. Thanks B ;)
->Hey, Pierce here... It's good to be back... BTW, I just wanted to ask if the Fullscreen add-on has compatibility issues with other add-ons or scripts? While working on my project, I realized that I was using tons v5.0b so I updated it to the latest version... When I replaced it & activated the add-ons I was using in v5.0b, it doesn't ask to switch to fullscreen in the beginning... Maybe because I used to have a save using v5.0b? I erased it now anyway... I currently have the gradient bar, blackfade, animation stack & caterpillar add-ons turned on together with fullscreen... I'm planning to turn on other status effect & skill add-ons some time soon... Well, I hope someone can help me coz I'm using the v5.0b again... Please & thanks!!! ^^
Merry xmas everyone!!! ^^
†
Maybe you just need to update your other scripts as well.
hmm was just wondering if you still wanted to add this script to TONS, http://forum.chaos-project.com/index.php/topic,4996.0.html (http://forum.chaos-project.com/index.php/topic,4996.0.html)
Of course I do. I just didn't have time yet to add it.
Oh my bad :^_^': I just wasn't sure if you had forgot or something.
The Z-HUD but I find a conflict between that and Location Names from Tons.
The buttons for items and magic appear right in front of the text for the location names and it looks rather weird. The text is behind the buttons. I know it seems like I'm talking about the Z-HUD but this is more about Tons' Location Names and how it conflicts with Z-HUD.
Put the text box somewhere else then.
Hi I see a Bug.
I cant change the players opacity in game. I tryed all kinds of ways no luck.But When I removed tons of addons It works I can change the players opacity.
Disable the caterpillar add on then. A lot of people has mentioned the same problem. It has to do with the Caterpillar. If it bugs you that much then disable it, if you want to keep it then don't change the opacity of the player.
It was off
Then I dunno. Sorry I tried to help. =\
Delete the caterpillar add-on, don't just disable it.
Uhm.. the Multi-Hit, can I make it so it hits the opponent multiple times instead of multiple enemies?
Didn't I include an option to hit the same or a different target multiple times?
Quote from: Blizzard on January 07, 2010, 02:28:03 pm
Put the text box somewhere else then.
Yes but how do I move the text box for location names to a different spot on the screen.
Change the x/y coordinate.
Is it just me? Or is it that when HPSP plus is used in conjunction with the new Stat Distribution (including HP), the raised HP is unaffected by the dynamic bonus?
IE:
I have a piece of armor that raises HP by 50%.
I have 60 maxHP currently.
My armor raises my maxHP to 90 as it should.
however, if I was to raise it up to 100 via the blizz-stat-distribution...
the armor that raises my HP by 50% will not raise it to 150 like it should, but instead only 130 :huh:
So umm, is that a bug? Or is that just me?
I noticed that bug myself in CP. I'll fix it here as well ASAP.
Hi Blizzard, love this compilation, especially the Ultimate Font Override. I've been searching the net high and low and just couldn't find exactly what I need, drove me nuts. :wacko: Just wondering though, is it only certain fonts that work with it? I tried using Arial Bold and it came up blank when I tested the game.
Arial Bold isn't a font; it's just Arial D:
(with bold weight)
I think you mean Arial Black.
Ahaha I'm such a ditz! :^_^': I honestly has no clue Arial Bold wasn't a completely separate font. Thanks for clearing that up, I've got that problem fixed now. I was also wondering, does changing the font size apply to messages as well? I did what Blizzard says in the instructions about using a "Call script" to change it but when the message comes up, it's still the default size I've set in the Ultimate Font Override. Doesn't it apply or am I doing something wrong? :???:
Hey umm idk if i am doing something wrong or what but when i enable caterpillar in the game then try to disable it ingame all the buttons stop working like i cant walk or call up any menues or anything? :S could some one plz help me on this? :) thx
Don't use this:
Use this instead:
RMXP has a problem with one-line false assignments of variables in script calls.
@DarkOsprey: It should work with the message box if you're not using a custom message system that has it's own font handling.
THX, lol i would never have figuered that out myself
Quote from: Blizzard on January 28, 2010, 05:50:21 am
Don't use this:
Use this instead:
RMXP has a problem with one-line false assignments of variables in script calls.
@DarkOsprey: It should work with the message box if you're not using a custom message system that has it's own font handling.
I'm not using a custom message system as far as I know, maybe I'm just setting it up incorrectly. Would you be able to tell me the correct way to set it up so it changes the message? I'd really appreciate it. :D
Actually this should already set it up. Are you sure you set it up right? You need to change the default ones in the script and you need to change $fontface/$defaultfonttype and $fontsize/$defaultfontsize in your main script if you are having problems. That should basically do it.
hey umm would it be possible to use ur key mapping part of the tons script to mace it so when i hit a certain key it will turn on and off the HUD or vice versa with catterpiller?
Sure. Just make a event branch condition with a script (4th tab in the condition selection window) like this:
Input.trigger?(Input::Key['T'])
You can use this piece of code for triggering:
$game_system.HUD =
!$game_system.HUD
and
$game_system.CATERPILLAR =
!$game_system.CATERPILLAR
Best you put all of this in a parallel process common event with a switch condition. Then you can disable those button controls by simply turning of the switch.
Idont know why but the add-ons are having an error :(
After ihave putted the add-on scripts the normal ABS script is having a problem:
(http://cubeupload.com/files/656000sd.png)
Idont know whats wrong :wacko: idid everything right! :'(
Please help me! (btw: thats the greatest ABS ever! :D)
Thanks alot, Ariel.
http://forum.chaos-project.com/index.php/topic,23.0.html
Make sure it's in the right order and make sure you configured it right
I'm getting a really, really weird error with this script. Otherwise it's insanely amazing.
All the add-ons I'm using work fine, however when I hit F12 to reset, it gives me the following error on line 1285...
Script 'Add-On 2' line 1285: SystemStackError occurred.
stack level too deep
See, I'm not even using the add-on on 1285. (it's the font adjuster) Again, it only happens when I reset with F12 so it's not fatal, but it's just weird and mildly annoying in playtesting. Anyone have any idea what might be causing it?
And on another note, I'm having trouble geting the Revenge skill to work. Whenever I use the skill associated with it, it always, always missed the target. Could someone help me with that possibly? Thanks.
this is the classic F12 error known to almost every scripter. the fix is simple
create a new script at the top of the editor and paste this code into it
#==============================================================================
# F12 fix
#==============================================================================
if $game_exists
Thread.new {system('Game')}
exit
end
$game_exists = true
Ah thank you muchly. I'm not that well versed in scripting. Didn't know it was that easy, haha. But yeah thanks, I owe you one.
Now has anyone seen the problem with the Revenge skill missing all the time? Is there a certain setup I have to give it in the database?
If you set the power of a skill to 0, it will keep missing. Just set it to 1 or something.
Hey, first of all I'd like to thank the scripters that worked on this great collection; fantastic work everyone :)
Although I'm having a little bit of difficulty getting two of the scripts to work with each other and was hoping someone could help me out, or at least point me in the right direction.
Basically what I'm trying to do is have all magic spells in the game learned by using scrolls, I'm using "Skill Teaching Item" by game_guy to do this, and it works fine... BUT, I also want to make sure that only certain characters can use these scrolls, so I tried using "Actor-specific Item Usability" by Fantasist to prevent certain characters from using the scrolls; I've used this script before and it works fine on normal items (potions etc.) but it doesn't seem to work on any item that's been set up to teach a skill with the first script.
eg. (hypothetical for testing purposes) I set up character 1 to be unable to use potions, this works fine. but if I modify "potion" so that it teaches "cure", suddenly character 1 is able to use potions! The normal healing effect of the potion is not activated, however the potion is still consumed and the skill is still learned. :^_^':
If anyone knows of a way to get these 2 scripts working together, or knows of another script that allows for class or character specific item based skill learning I'd really appreciate the help.
It should actually work. Make sure you set up the items properly in the script and in the RMXP database.
Quote from: Blizzard on February 11, 2010, 02:23:43 am
It should actually work. Make sure you set up the items properly in the script and in the RMXP database.
I was wracking my brain for hours trying to see if I'd made any mistakes here, but in the end it turns out me problem was something totally different; it seems that the actor specific item usability was being overridden my the skill teaching item script due to the order they were in.
I was able to solve the problem by cutting the actor specific item usability script and pasting it below the skill teaching item script (I probably should have thought of that earlier XD)
Just thought I'd share that incase anyone else has simmilar issues.
Oh lol! You should check your script order (http://forum.chaos-project.com/index.php/topic,23.0.html) in any case.
I hate to constantly coming back asking for help, but I'm having troule getting Game Guy's 'Skill-Teching Item' script. I know one brought it up a few posts ago, so I figure why not.
In the comments it says to make a new element named Skill Item, then says "change the 17 below in the module to the id
of the element you just made."
I'm not sure if I'm reading it wrong or theres a typo in the script, since in Game Guy's original version of it, there was a class called ElementID or something that was set to 17 default and there's nothing like that in this version. But either way, I can't get the items to work now since I couldn't figure out where to place the element's ID in the script. Would anyone be able to help me out quick?
I think that I removed the element ID when I reviewed his script since it was unnecessary. Best is you make a small demo and G_G takes a look at it.
Ah, never mind. After a day or so of fiddling around with my other scripts I was able to get it working. Thanks though!
I just need the multi-drop part. I copy and pasted the multi-drop stuff from part2 into a new script in my game. What do i do next? How do i customize this to fit my needs in the game? I tried making sense of the info it gave me but where do i put the stuff it said like 'when 1 then return [[1, 2, 50], [3, 15, 10], [2, 4, 5]]'
Quote from: Champion Blizzard on January 09, 2008, 08:50:47 am
Author's Notes
Tons of Add-ons now has to be used as 3-parts script because of a weird behavior of RMXP during bug detection. Insert the 3 parts in the correct order and the system should work without problems. Do NOT remove any of the parts, the script NEEDS all 3 parts to work with other systems.
I don't know if this is supposed to come here but you already have a script that edits the slip damage.
Is is possible to have multiple different poison states, with each one with different damage.
As far as I know the normal slip damage is 1/10 of the health +- random value. Is it possible to add customizable amount of customizable slip damage states? (in addition to the HP/SP Regen/dmg script in this pack)
Okay, i have all of the scripts. For the multi-drop thing, if i want an enemy(ID 42) to have a 100 percent drop of a item with ID 1, a 100 percent drop of a item with ID 2, and a 100 percent drop of item ID 3, is this right? when 42 then return [[1, 1, 100], [1, 2, 100], [1, 3, 100]]
I put it in line 869 of script 2, below the example or the one already there;
when 1 then return [[1, 2, 50], [3, 15, 10], [2, 4, 5]]
All that right?
This works with an action battle system right?
It works with Blizz-ABS. I don't know about other Action Battle Systems (most probably not).
Using Minkoff's animated battlers, I noticed that on the enemy staus in battle, it only displays on the first turn. Which script is tha error in? Also, it will display if you move enemies, but there is nothing you can do about it if there is only one.
@Sase:
http://forum.chaos-project.com/index.php?topic=2481.0
*gasp*
Quote from: Elite Four Aqua on March 15, 2010, 07:40:15 pm
@Sase:
http://forum.chaos-project.com/index.php?topic=2481.0
*gasp*
Danke!
Wow, this is just awesome! This is some really good shit out here! 8)
First off, thanks to each and every developer that contributed to this list... it's a fantastic collection and it's one of the most user-friendly compilations I've encountered.
That said, I have to sheepishly admit that I'm having problems with Blizzard's Arrow over Player script.
Walking over a specific segment of my map causes a crash that's 100% reproducible, but oddly... doesn't seem to cause a crash with other instances of that tile. The transparency / priority settings on the tile are normal. I disabled all other scripts for testing, in case of a compatibility issue.
It breaks on line 3162 on the first part of the Tons of Add-ons script:
if tile_id != nil && tile_id != 0 && $game_map.priorities[tile_id] > 1
With the error:
Script 'Tons of Addons Pt. 1' line 3162: NoMethodError occurred.
undefined method '>' for nil:NilClass
Your maps are out of date. It's trying to check a tile on the map that doesn't exist in the tileset anymore. (e.g. when you resize the tileset graphic file)
Quote from: Champion Blizzard on March 23, 2010, 02:42:39 am
Your maps are out of date. It's trying to check a tile on the map that doesn't exist in the tileset anymore. (e.g. when you resize the tileset graphic file)
That's strange. I'm using an RTP tileset and haven't modified it in any way. I'll try importing the tileset from a different project and see if it changes anything.
At any rate, thanks for the reply.
Edit: Hmmm. I've tried manually overwriting the tiles (on all possible layers,) reverting to an imported copy of the original RTP tileset file (I never modified it, was using the one internally packaged with the project,) and shifting the map to an entirely different tileset.
The same co-ordinate always causes a crash. X:11, Y:5 every time.
Sorry if I'm just not getting what you're suggesting here, Blizzard, but short of scrapping the entire map I'm at a loss.
Then try overwriting that single tile only. I never had any problems with that add-on in my own game.
Yeah, that was basically the first thing I tried. I finally gave up, deleted the map, and remade it from scratch.
It seems like it was a bizarre one-time glitch that seemed to be with RMXP not updating the tile, not your script. For that matter, I've noticed RMXP has problems updating chipset/maps in general... ie: I'll create a map, then adjust the priority or passability settings and they simply won't change unless I make a new map.
Well... If you are using Blizz-ABS with INTELLIGENT_PASSABILITY on, it won't update all your maps when you edit the tileset. You have to either edit all the affected maps in at least a bit and save them or delete Data/MapData.abs and let the game recreate the passability file the next time you run the game in DEBUG mode.
For the record, I wasn't using BABS or any other ABS add-on, and I seemed to have this problem after disabling all scripts other than Tons of Add-ons.
I'm at a complete loss for what was finally causing it. In the end, it was faster to just remake the map.
is there a way I can make it so that enemies drop XXXX item given a switch/variable condition?
I tried something like this::
when 1 && $game_switches[90] == true then return [[1,1,100]]
but it didn't work, nor did::
when 1 then return [[1,1,100]] if $game_switches[90]
I tried to make it an if/else statement as well, but I just can't get it to work.
Effectively, the idea is that enemies won't drop said quest item or whatever until the quest is activated.
Or that enemies won't drop said rare item unless you learned about it first.
Or that people who are battling on higher difficulty modes could possibley yield unique drops.
numerous possibilities with this idea, but my scripting knowledge is faililng me.
Someone push me in the right direction?
I noticed that the caterpillar script is designed to prevent other events from moving through the other characters. What changes should I make to the script if I want to change this? I want monsters to be able to walk up to the main character and start the battle using an event touch. If the monster cannot walk through the characters in the caterpillar, then the player could use the characters as a shield from the monsters.
I know you retired from RMXP, so I'm asking, are you still going to add any add-ons to this at all? Like other peoples scripts or not? Just wondering.
If not then oh well. If so then yay?
I'll add them for now until somebody takes over my job.
Can we submit small scripts to you? And see if you approve them?
I've made a couple I thought might be suitable and useful for people. Both are pretty small.
Yeah. That was kinda the original idea behind Tons. It's just that I was the only one contributing. :P
In that case, here are some scripts you might want to add. Check them out when you can. :D
Element Attack Armors
http://forum.chaos-project.com/index.php/topic,5681.msg98917.html#msg98917
Strike First States
http://forum.chaos-project.com/index.php/topic,6062.0.html
Poison/Regen Overtime
http://forum.chaos-project.com/index.php/topic,5963.0.html
wow... my post was completely ignored...
what changes should I make to the caterpillar script if I want events to walk through the other members? I cannot simply tick "through" on the events because I don't want them walking through EVERYTHING. I just don't want the members to shield the main character from monsters who chase the main character
EDIT: Nevermind... I figured it out... All I had to do was delete the Game_Character portion of the script
I accidentally overlooked it, sorry. >.<
I get an error whever I try to activate the Custom Controls add-on. I deleted BlizzABS as I wasn't using most of its features, and tried to use this one for the Custom Controls thing. However, something's messed up, cuz everytime I try to move on the map, I get an error saying:
"Script 'Game_Map' line 212: NoMethodError ocurred
undefined method `/' for [i] Array"
Where "i" is the number that the key has on your module Input. This just happens with the movement keys, all the other keys seems to work just fine (at least, whenever I changed the keys for B, they worked). I tried making a new project and using the script, and it ran with no problem, so I'm guessing it has something to do with one of the 200 scripts I got on my project <.< Because I don't remember editing the Game_Map script.
Anyways, the string on Game_Map that throws the error ir this:
# Change direction (0,2,4,6,8,10) to obstacle bit (0,1,2,4,8,0)
bit = (1 << (d / 2 - 1)) & 0x0f
I know it's hard to ask for a solution if I you don't know what scripts I got, but if you could give me some advice on where to look for incompatibilities...
Quote from: game_guy on April 08, 2010, 05:10:46 pm
In that case, here are some scripts you might want to add. Check them out when you can. :D
Element Attack Armors
http://forum.chaos-project.com/index.php/topic,5681.msg98917.html#msg98917
Strike First States
http://forum.chaos-project.com/index.php/topic,6062.0.html
Poison/Regen Overtime
http://forum.chaos-project.com/index.php/topic,5963.0.html
In cased you missed it.
Also a new one perhaps.
First Strike Skills
http://forum.chaos-project.com/index.php/topic,6084.0.html
is this System Compatible with the Sideview Battle System Version 2.1xp
Quote from: bigace on May 01, 2010, 12:21:04 pm
is this System Compatible with the Sideview Battle System Version 2.1xp
I would imagine that not every Add-On would work properly with a custom battle system, but many of them should work without issue.
Last question does matter if its above the SBS or below it.
Yes. Better put it below.
Generally refer to this topic: http://forum.chaos-project.com/index.php/topic,23.0.html
Okay cool thx :)
What do I need to change in the EQUAP in order to make it work with G777 Multislots? Does anyone know?
Quote# Compatibility:
#
# 99% compatible with SDK v1.x. 60% compatible with SDK v2.x. WILL cause
# incompatibility with custom equipment scripts but there are instructions
# how to configure the script. Compatible with Guilamme777's Multi-Slot
# Equipment System. Please note, that this script depends on the layout of
# your Equip Screen and needs to be put UNDER a CMS script if you are using
# one. WILL corrupt your old savegames. Might not work with some CMS-es.
Hello everybody....... well here is my question....
Im using NeoMode7 + Blizzabs script...... but one very important add on (Location Name/Picture) dont work with this combination....
Somebody know how i can do compatible both things, because i create all pictures of all my maps and i dont want lose my work T_T
Why not create an event on every map you have a picture for, show picture command outside of the screen, move picture into the screen, then erase it after a certain amount of frames?
You don't need a script for that, Blizz just made a shortcut for you. And you can use the same event for all the pictures just make sure that you change what picture it is.
Man, this has been 7.39 forever.
I was hoping to see the day it hit 10.0 T-T
I suggested a few add-ons that would help but I guess they weren't worthy enough .__.
First time I open this topic! :O.o:
You're the best, Blizz! Really, really, really, really good work.
I have only some question for you, not hard, relax. ;)
In my project I'm using A LOT of script (and trust me, are a great number, someone self made). I would like to know... if I disable one add-on, it still could give me compatibiliy issues, or it could give it only if I activate it?
I know this archive is make to work as an Add-on type, but should I extract one or some script instead using all of this? Is it possible? If it is, could you explain me how can I do that?
Thanks a lot for the help, man! 8)
*points to signature*
*points to first post*
Quote from: Blizzard on January 09, 2008, 08:50:47 am
Insert the 3 parts in the correct order and the system should work without problems. Do NOT remove any of the parts, the script NEEDS all 3 parts to work with other systems.
Quote from: Blizzard on June 03, 2010, 07:16:45 am
*points to signature*
*points to first post*
Quote from: Blizzard on January 09, 2008, 08:50:47 am
Insert the 3 parts in the correct order and the system should work without problems. Do NOT remove any of the parts, the script NEEDS all 3 parts to work with other systems.
Oh, sorry, haven't seen...
Only a question, if I may...
What does it mean 90% compatibility with SDK 1.x, 80% with SDK 2.x?
That 9 times to 10 a script doesn't work? Or what?
Thanks for the help. :)
I think its saying 90% of the add-ons work with sdk 1. While only 80% of them work with sdk 2.
It's more like "90% of the code might need to have some changes so it works properly with SDK", but G_G got it pretty well.
how about this only problem is it requires custom controls
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Name Input Update Script by Nathmatt
# Version: 1.00
# Type: Add On
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# This work is protected by the following license:
# #----------------------------------------------------------------------------
# #
# # Creative Commons - Attribution-NonCommercial-ShareAlike 3.0 Unported
# # ( http://creativecommons.org/licenses/by-nc-sa/3.0/ )
# #
# # You are free:
# #
# # to Share - to copy, distribute and transmit the work
# # to Remix - to adapt the work
# #
# # Under the following conditions:
# #
# # Attribution. You must attribute the work in the manner specified by the
# # author or licensor (but not in any way that suggests that they endorse you
# # or your use of the work).
# #
# # Noncommercial. You may not use this work for commercial purposes.
# #
# # Share alike. If you alter, transform, or build upon this work, you may
# # distribute the resulting work only under the same or similar license to
# # this one.
# #
# # - For any reuse or distribution, you must make clear to others the license
# # terms of this work. The best way to do this is with a link to this web
# # page.
# #
# # - Any of the above conditions can be waived if you get permission from the
# # copyright holder.
# #
# # - Nothing in this license impairs or restricts the author's moral rights.
# #
# #----------------------------------------------------------------------------
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
if $tons_version != nil && $tons_version >= 6.4 && TONS_OF_ADDONS::CUSTOM_CONTROLS
class Scene_Name
alias name_input_update update
def update
(65...91).each{|i|
if Input.trigger?(i)
$game_system.se_play($data_system.decision_se)
let = Input::Key.index(i)
let = let.downcase unless Input.press?(Input::Key['Shift'])
@edit_window.add(let)
end}
if Input.trigger?(Input::Key['Backspace'])
$game_system.se_play($data_system.cancel_se)
@edit_window.back
end
if Input.trigger?(Input::Key['Enter'])
@actor.name = @edit_window.name
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to map screen
$scene = Scene_Map.new
end
name_input_update
end
end
end
?!??!?!?! how the he** can we put blue magic on!? :???: :???: :???: ???????????
Quote from: cortash55 on June 17, 2010, 03:37:28 pm
?!??!?!?! how the he** can we put blue magic on!? :???: :???: :???: ???????????
If you're asking how to enable it, just change the default "false" to "true" in the config at the beginning of Tons part 3 for either Blue Magic via Status Effect or Blue Magic via Skill. If you're asking how to use it, it is explained well in the respective config sections in Tons. Just read the commented header before the config for the add-on.
thanks WhiteRose! :) :)
Quote from: cortash55 on June 17, 2010, 03:37:28 pm
?!??!?!?! how the he** can we put blue magic on!? :???: :???: :???: ???????????
You didn't put enough question marks, I barely noticed it was a question like this.
How the fuck would I go about setting up immunity to Demi Skill? Seriously, I used Demi on a superboss and took out more damage than all but one of my other attacks.
Just guessing here, place in element in the demi skills called Demi. Go into the enemies and mark the element Demo to an E
I don't think it will work.
It doesn't =O
i get this error when i level up w/ passive skill
(http://img193.imageshack.us/img193/3496/screenshot0607201031118.png)
other scripts im using
-Easy overdrive system
-bestiary
Quote from: megapoopy on July 06, 2010, 06:17:57 pm
i get this error when i level up w/ passive skill
(http://img193.imageshack.us/img193/3496/screenshot0607201031118.png)
other scripts im using
-Easy overdrive system
-bestiary
Are you sure the scripts are in the right order, or are you using an old save file?
Quote from: WhiteRose on July 06, 2010, 06:30:10 pm
Quote from: megapoopy on July 06, 2010, 06:17:57 pm
i get this error when i level up w/ passive skill
(http://img193.imageshack.us/img193/3496/screenshot0607201031118.png)
other scripts im using
-Easy overdrive system
-bestiary
Are you sure the scripts are in the right order, or are you using an old save file?
yes they are in order, no im not using an old save file, it happens with both old save/new game
edit: ok... i turned everything off (except passive skills of course), and all other scripts, and im
STILL GETTING THE ERROR!
Are you sure you have it configured correctly?
no theres a missing variable or method "old_level" that blizz messed up on. I can look into it real fast.
EDIT Fixed.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Passive Skills by Blizzard
# Version: 1.2b
# Type: Game Alteration
# Date: 13.7.2008
# Date v1.0b: 21.7.2008
# Date v1.1b: 19.10.2008
# Date v1.2b: 18.4.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# This add-on allows that skills passively change attributes and gold/exp
# rates. It is recommended that you make those skills be never usable.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
module BlizzCFG
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# will cause skills to only be effective during battle
BATTLE_ONLY = false
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
def self.passkl_database(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Passive Skills Database
#
# Use following template to configure your database below:
#
# when ID then return [HP, SP, STR, DEX, AGI, INT, ATK, PD, MD, EVA, G, EXP]
#
# ID - ID of the skill
# HP - change of max HP (added)
# SP - change of max SP (added)
# STR - change of STR (added)
# DEX - change of DEX (added)
# AGI - change of AGI (added)
# INT - change of INT (added)
# ATK - change of ATK (added)
# PD - change of PDEF (added)
# MD - change of MDEF (added)
# EVA - change of EVA (added)
# G - change of gold (multiplied)
# EXP - change of EXP (multiplied)
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return [100, 100, 10, 10, 10, 10, 0, 0, 0, 0, 1.0, 1.0]
when 2 then return [0, 0, 0, 0, 0, 0, 10, -10, -10, 10, 1.0, 1.0]
when 3 then return [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.5, 1.0]
when 4 then return [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 1.2]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Passive Skills
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 1.0]
end
end
#==============================================================================
# Game_Actor
#==============================================================================
class Game_Actor
alias base_maxhp_passkl_later base_maxhp
def base_maxhp
result = base_maxhp_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[0]}
end
return result
end
alias base_maxsp_passkl_later base_maxsp
def base_maxsp
result = base_maxsp_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[1]}
end
return result
end
alias base_str_passkl_later base_str
def base_str
result = base_str_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[2]}
end
return result
end
alias base_dex_passkl_later base_dex
def base_dex
result = base_dex_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[3]}
end
return result
end
alias base_agi_passkl_later base_agi
def base_agi
result = base_agi_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[4]}
end
return result
end
alias base_int_passkl_later base_int
def base_int
result = base_int_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[5]}
end
return result
end
alias base_atk_passkl_later base_atk
def base_atk
result = base_atk_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[6]}
end
return result
end
alias base_pdef_passkl_later base_pdef
def base_pdef
result = base_pdef_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[7]}
end
return result
end
alias base_mdef_passkl_later base_mdef
def base_mdef
result = base_mdef_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[8]}
end
return result
end
alias base_eva_passkl_later base_eva
def base_eva
result = base_eva_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[9]}
end
return result
end
def gold_rate
return 1 if BlizzCFG::BATTLE_ONLY && !$game_temp.in_battle
result = 1.0
@skills.each {|id| result *= BlizzCFG.passkl_database(id)[10]}
return result
end
def exp_rate
return 1 if BlizzCFG::BATTLE_ONLY && !$game_temp.in_battle
result = 1.0
@skills.each {|id| result *= BlizzCFG.passkl_database(id)[11]}
return result
end
end
#==============================================================================
# Window_BattleResult
#==============================================================================
class Window_BattleResult
attr_accessor :gold
attr_accessor :exp
end
#==============================================================================
# Window_BattleStatus
#==============================================================================
class Window_BattleStatus
attr_accessor :level_up_flags
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias start_phase5_passkl_later start_phase5
def start_phase5
unless $game_system.PASSIVE_SKILLS
start_phase5_passkl_later
return
end
old_gold, old_exp, old_level = $game_party.gold, [], []
$game_party.actors.each {|actor|
old_exp.push(actor.exp)
old_level.push(actor.level)}
start_phase5_passkl_later
new_gold = $game_party.gold - old_gold
$game_party.lose_gold(new_gold)
gold_rate = 100
$game_party.actors.each {|actor| gold_rate *= actor.gold_rate}
@result_window.gold = (new_gold * gold_rate / 100).to_i
$game_party.gain_gold(@result_window.gold)
new_exp = 0
$game_party.actors.each_index {|i|
if $game_party.actors[i].exp - old_exp[i] > 0
new_exp = $game_party.actors[i].exp - old_exp[i]
end
$game_party.actors[i].exp = old_exp[i]}
exp_rate = 100
$game_party.actors.each {|actor| exp_rate *= actor.exp_rate}
@result_window.exp = (new_exp * exp_rate / 100).to_i
@result_window.refresh
$game_party.actors.each_index {|i|
@status_window.level_up_flags[i] = false
unless $game_party.actors[i].cant_get_exp?
$game_party.actors[i].exp += @result_window.exp
@status_window.level_up(i) if $game_party.actors[i].level > old_level[i]
end}
end
end
Replace the passive skills add-on in there with this one.
Don't use old save files, start a new game.
That wasn't the problem blizzard. You had this line setup.
old_gold, old_levels, old_exp = 0, [], []
When it should have been
old_gold, old_level, old_exp = 0, [], []
Because in the rest of the add-on you used old_level
instead of old_levels
Oh, lol!
Even the scripting god makes mistakes.
*cowers* Dont ban me! :V
Quick question. I am attempting to utilize the death toll counter and have the variable set at the default 26. After I complete a battle I am getting an undefined method `-' for nil:NilClass." I have attempted to play around a bit with this line (it seems to be the only line in the script that is giving me trouble, because once it is removed I get no errors (but the counter obviously does not work). I am using Tenkantai's side-view ABS. I think that would be the only script that would be interfering with the death toll script... although perhaps I am overlooking something.
Here is the line in question (2728):
$game_variables[DT_ID] += @td_flag - count
Does anyone have any ideas? Thanks in advance, any help is greatly appreciated.
I'm getting error: Script 'Game character 2' line 23: NoMethodError occured.
Undifined method * for nil:NilClass
Somebody help me
i have a question....
i want to edit a skill from mage the fire 1
i want it to be like a fire shot or just increase the range :O.o:
i already changed the type, the combo and the range.... doesnt work !
what do i have to do :???:
thanks for YOUR HELP!!!!!!!!??????? >:(
What do you expect when you don't post in the right topic?
Quote from: Blizzard on August 04, 2010, 06:21:01 am
What do you expect when you don't post in the right topic?
k gonna uninstall it, thanks
i dont want to waste my time with that damn nonsense
Dude, you posted a Blizz-ABS problem in the Tons of Add-ons topic. Don't expect to get help if you post in the wrong topic and on top of that you are being rude. I could care less, I gain nothing from people using my scripts. It's you who's on the loss here.
@Ruminyauee: Don't use old save games, start a new game.
@shadeo11: Make sure your script order is right. Also, what I said to Ruminyauee.
Quote from: Blizzard on August 04, 2010, 06:59:49 am
Dude, you posted a Blizz-ABS problem in the Tons of Add-ons topic. Don't expect to get help if you post in the wrong topic and on top of that you are being rude. I could care less, I gain nothing from people using my scripts. It's you who's on the loss here.
Well said. People seem to forget that sometimes.
Quote from: earthnite on August 05, 2010, 10:46:49 pm
Lag-less Hud!
(http://a.imageshack.us/img716/917/42870584.png) (http://img716.imageshack.us/i/42870584.png/)
What.
Did you have a question or something? I'm having difficulty understand your post.
He's saying the lagless hud is causing lag
RPG maker games tend to lag when porn is in the background.
Quote from: Adjutant game_guy on August 05, 2010, 11:06:21 pm
He's saying the lagless hud is causing lag
I've used the lagless HUD in a couple of projects and it's never had any trouble. I doubt Blizz would have the audacity to call it the Lagless HUD if it really did cause excessive lag like you seem to be suggesting it does.
Quote from: earthnite on August 05, 2010, 10:46:49 pm
Lag-less Hud!
(http://a.imageshack.us/img716/917/42870584.png) (http://img716.imageshack.us/i/42870584.png/)
You may have uneccessary events running, too many programs running, or like Jek said, no porn in the background.
Or you photoshoped it, or you used this script call
So yea
Quote from: Adjutant game_guy on August 06, 2010, 12:45:29 am
You may have uneccessary events running, too many programs running, or like Jek said, no porn in the background.
Yeah, I've had that problem before. Pull up a few windows of porn, and the problem should sort itself right out.
Thats what I said.
Quote from: earthnite on August 06, 2010, 08:50:57 am
No movement, one event-change money, change hp, repeat
Repeat? If you mean what I think you mean, that is your problem right there.
I've been having a problem with the minimap, it doesn't display events other than teleports, and the caterpillar (Sort of... on one map it's only half there.)
But running from a new file only the caterpillar and teleports show, do I need a separate script for it to work, such as SDK?
I have both the minimap and quick passability enabled.
Well, that's what it's supposed to do. If you want other events to appear on the minimap, you have to mark them. You should read the instructions of the script.
Quote from: Blizzard on August 11, 2010, 05:24:58 am
Well, that's what it's supposed to do. If you want other events to appear on the minimap, you have to mark them. You should read the instructions of the script.
The instructions don't say anything about marking them though.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Blizz-ABS Minimap by Blizzard
# Version: 2.0
# Type: Game Playability Improvement
# Date: 7.2.2007
# Date v2.0: 16.4.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
# 95% compatible with SDK v1.x. 60% compatible with SDK v2.x. This add-on
# NEEDS "Quick Passability Test" by Blizzard. WILL corrupt your old
# savegames. Might not work with special map add-ons. Does NOT work with
# pixel-movement without changing the code.
#
#
# Why this minimap script better is than any other (aka features):
#
# - simple display to avoid lag
# - custom size, position and opacity, changeable even during the game
# - no bitmaps, no pictures to import, only plain script
# - automatically makes use of Blizz-ABSEAL if installed to decrease lag even
# further
#
#
# Explanation:
#
# This add-on will draw a real-time minimap on the specified X and Y
# coordinate on your screen. It will show the player, events that do NOT have
# a comment in their code that says "\nomap", that are not parallel
# process and that are not auto-start and that are not erased yet. Events
# with a teleport/transfer player command will be shown in a different color.
# Any event with and comment with "\spc" in their code will be also
# displayed differently. Blizz-ABS disables this add-on automatically and
# uses the built-in version of the Blizz-ABS Minimap.
#
#
# Instructions:
#
# You can trigger the minimap visible/invisible with F5 during the game.
# Set up the starting configuration below. The colors follow a template of:
#
# WHAT_COLOR = Color.new(R, G, B)
#
# R - red
# G - green
# B - blue
#
# Change the colors of the dots on the map as you prefer it.
#
# PLAYER_COLOR - the player on the minimap
# EVENT_COLOR - any event on the minimap that is not erased, is not
# auto-start, is not parallel process and does not have a
# comment in its code with the word "no_minimap"
# TELEPORT_COLOR - any event like the one above, but that has a teleport/
# transfer_player command
# SPECIAL_COLOR - any event with a comment with the word "special"
# MINIMAP_X - default X of the minimap on the screen
# MINIMAP_Y - default Y of the minimap on the screen
# MINIMAP_WIDTH - default maximal allowed width of the minimap
# MINIMAP_HEIGHT - default maximal allowed height of the minimap
# MINIMAP_OPACITY - default opacity of the minimap on the screen
#
# You have the possibility to change the minimap's size, coordinates and
# opacity during the game process. The command you need to type in into a
# "Call Script" command window are:
#
# $game_system.set_minimap_coordinates(X, Y)
# $game_system.set_minimap_size(W, H)
# $game_system.set_minimap_opacity(A)
#
# X - new X
# Y - new Y
# W - new width
# H - new height
# A - new opacity
#
# Any changes will be applied instantly. Note that you don't need to use ALL
# commands.
# The minimap mode can be changed using this code:
#
# $game_system.minimap_mode = MODE
#
# MODE - new mode (0 = off; 1 = on; 2 = full map)
#
#
# Note:
#
# Changing X, Y and opacity during the game will result in just moving the
# sprite. The minimap will not work if the maximal allowed size is smaller
# than the map size. (i.e. if your minimap is 160x120, maps like 170x130,
# 180x15 or 20x140 will not work.)
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Start Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PLAYER_COLOR = Color.new(0, 255, 0)
EVENT_COLOR = Color.new(0, 128, 255)
TELEPORT_COLOR = Color.new(255, 255, 0)
SPECIAL_COLOR = Color.new(255, 0, 0)
MINIMAP_X = 0
MINIMAP_Y = 0
MINIMAP_WIDTH = 160
MINIMAP_HEIGHT = 160
MINIMAP_OPACITY = 160
MAP_MOVE_BUTTON = Input::Z
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# End Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# Any event with and comment with "\spc" in their code will be also
# displayed differently. Blizz-ABS disables this add-on automatically and
# uses the built-in version of the Blizz-ABS Minimap.
Read that a few times.
Ah my bad, I didn't know you had to put the comment in the name of the event, I was using the comment command.
Thanks for the help.
Quote from: SilverShadow737 on August 11, 2010, 09:14:46 pm
Ah my bad, I didn't know you had to put the comment in the name of the event, I was using the comment command.
Thanks for the help.
No problem. 8)
Guys I'm having a problem with Tons of Add-ons. It will not allow me to "add a party member" can you tell me what's happening(or what's the cause of this)
If I set up all enemies to give me different AP amounts (using EQUAP skills)
Is there any reason under the sun that two events bearing the same enemy.id would give different APs?
(using in conjunction with BlizzABS)
Essentially I copy pasted an event with the name of \e[3] or whatever, so I could have a number of the same sort of enemy in an area, but for some reason, each event seems to give different amounts of AP. These amounts are fixed to the event, as if I change the ID in the name, the amount of AP received does not change.
I utterly cannot figure this out. At all. Seemingly, the database of AP values that I set up against the enemy.ids have no relevance to what the game gives me in AP. :\
EDIT:: After closer inspection, I noticed that enemies are giving their respect Event_ID in AP.
...wtf? I look in the "additional_result" method of BlizzABS p2, and I see this:
def additional_result(enemy)
# if Tons of Add-ons there and EQUAP active
if $tons_version != nil && $tons_version >= 7.32 &&
TONS_OF_ADDONS::EQUAP_SKILLS
# get AP result
ap = BlizzCFG.gainap(enemy.id) <---------------------------------------------------
# for each actor
$BlizzABS.battlers.each {|battler|
# if actor can gain AP
if battler.valid? && (!battler.battler.dead? || GAIN_DEAD)
# add AP
battler.battler.add_ap(ap)
end}
end
end
Which indicates that it should be drawing the ID of the enemy, not the event, right?
Hmm.
EDIT-BEFORE-FINISHED-POSTING::
Replaced the line:
ap = BlizzCFG.gainap(enemy.id)
with this:
ap = BlizzCFG.gainap(enemy.battler.id)
and it seems to work.
[shrugs]
Was it always like that?
--J
Yes, that's correct. Remind winkio to fix that. Also, use this as it is a bit safer:
ap = BlizzCFG.gainap(enemy.battler_id)
whats the difference?
If battler is nil for some reason, it will crash (method id undefined for nil class). My code will prevent that crash as battler_id returns simply 0 if the battler is nil.
I have a question about Blizzard's Animated Battlers for Non-Action BS.
Using the same name the pictures in order method, is it possible to add an attack animation as well?
like: hero1_a1, hero1_a2
It can be done, but it's not supported by that add-on.
Quote from: Zolnova on October 05, 2010, 02:59:39 pm
I have a question about Blizzard's Animated Battlers for Non-Action BS.
Using the same name the pictures in order method, is it possible to add an attack animation as well?
like: hero1_a1, hero1_a2
my battle system AnTBS has this feature, I uses the tones version to create it so it works the same way
If I wanted to only apply the effects of a passive skill after it is learned completely (AP-wise),
what sort of modifications would I make?
Not including all the modifications I made, I tried something like this:
if aps == @actor.ap(@skill.id)
@skills.each {|id| result *= BlizzCFG.passkl_database_mult(id)[0]}
end
but it drops an error about undefined ap for nilclass :\
Any suggestions?
--J
Quote from: Ryexander on October 05, 2010, 03:28:27 pm
Quote from: Zolnova on October 05, 2010, 02:59:39 pm
I have a question about Blizzard's Animated Battlers for Non-Action BS.
Using the same name the pictures in order method, is it possible to add an attack animation as well?
like: hero1_a1, hero1_a2
my battle system AnTBS has this feature, I uses the tones version to create it so it works the same way
yes!!!!
Thats what I need for definite!!
thanks!!!
The only problem is that i see a large black rectangle at the top of the battle screen whet I use the psudo 3d camera script.
Any way of eliminating it?
I'd like to keep the 'zoom in on the enemy when you attack' in the game. looks so awesome!
the scripts are incompatable
i was wondering something,
i'd like to use map as battleback(cause it would look kinda like the snes lufia(the first one) ),but to make it work out i was wondering how i could fade it to a grey and after the battles are over have it go back to normal.
Change the screen tone. They even have an event for it.
well i know how to do it through events, i was just curious of how one would do it through scripting
a = Tone.new(-255.0, 255.0, -122.5, 0.0)
b = 20
$game_screen.start_tone_change(a,b)
I'd like to recommend an add-on http://forum.chaos-project.com/index.php/topic,7790.0.html
Quote from: game_guy on November 23, 2010, 12:21:38 pm
I'd like to recommend an add-on http://forum.chaos-project.com/index.php/topic,7790.0.html
sorry to I guess "nag" the topic but is ToA not gonna be updated anymore? I think there are a few scripts in the database that could be added. If needed I could edit the script in on my own and give you a link to the text document.
Somebody else will have to do it.
if I add in my addon in the right part, would I be able to send it to say winkio and he can upload it or what?
Sure. You can edit my first post then to match the new version.
EDIT: There we go, v7.4 is up.
Hey, somebody reported an error with this script: http://rmrk.net/index.php/topic,40930.msg468940.html#msg468940
I didn't look at it in-depth, but it seemed like game_guy just forgot to add an attr_accessor for :MONSTER_AREAS in Game_System. Anyway, figured you'd want to know.
Thanks for the report, I quickly fixed it. This was G_G's first add-on that he added himself into Tons, don't be too hard on him. xD
haha, no! I am very disappointed in him and intend to come down on him with the crushing force of a sledgehammer for this egregious error :P
Not really sure if you'll care to fix it or not but...
The death toll increases when you escape a battle.
For example if you encounter 3 enemies and you escape the death toll will increase by 3, no matter how many enemies you killed.
When i turn on the caterpillar add-on and get a new party member in the game i have to wait about 5-7 seconds for him to come running from above and then running all the places i have been before he walks uo behind the main character. How do i fix this? I just want him to appear behind the mmain character.
Im creating a snipe skill which is my way of making precision sniping with targeting. I was using the EQUAP skills so that the Snipe skill only appears when you equip the sniper rifle (of course).
Is there a way though that it can be used in conjunction with an item so that the rifle still uses up ammo when fired?
Updated Battlebacks Add-On Added support for battlebacks for different tilesets.
#==============================================================================
# Terrain Battlebacks
# Author: game_guy
# Type: Battle Background Changer
# Version: 1.0
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# - code reviewed, optimized, integrated into Tons of Add-ons, freed from
# potential bugs and beta tested by Blizzard
# - this add-on is part of Tons of Add-ons with full permission of the original
# author(s)
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#==============================================================================
module GameGuy
#====================================================
# You first need to define all default terrains.
# Set terrains. Then later you can set specific
# terrains for tilesets.
# Terrain[TERRAIN_ID] = "battleback_name"
#====================================================
Terrain = []
Terrain[0] = '001-Grassland01'
Terrain[1] = '001-Grassland01'
Terrain[2] = '002-Woods01'
Terrain[3] = '003-Forest01'
Terrain[4] = '004-Mountain01'
Terrain[5] = '004-Mountain01'
Terrain[6] = '004-Mountain01'
Terrain[7] = '004-Mountain01'
#====================================================
# Here you can define specific battlebacks for each
# tileset. If a terrain is not defined for a tileset
# it will use one of the default ones defined above.
#
# First set the tileset id to an array.
# Tilesets[tileset_id] = []
# Then start adding your terrains like this.
# Tilesets[tile_id][terrain_id] = "battleback_name"
# Examples below.
#====================================================
Tilesets = []
Tilesets[1] = [] # Tilesets one, grasslands
Tilesets[1][0] = "002-Woods01" # tileset 1, terrain 0
Tilesets[1][1] = "003-Forest01" # tileset 1, terrain 1
#====================================================
# As you can see, the other terrains for this tileset
# are'nt defined. So it will use one of the default
# terrains defined above.
#
# If a tileset terrain and a default terrain is not
# defined, it will use the tilesets original
# battleback.
#====================================================
end
#==============================================================================
# Game_Map
#==============================================================================
class Game_Map
def battleback_name
if $game_system.TERRAIN_BATTLEBACKS
if GameGuy::Tilesets[@map.tileset_id] != nil &&
GameGuy::Tilesets[@map.tileset_id][$game_player.terrain_tag] != nil
return GameGuy::Tilesets[@map.tileset_id][$game_player.terrain_tag]
elsif GameGuy::Terrain[$game_player.terrain_tag] != nil
return GameGuy::Terrain[$game_player.terrain_tag]
end
end
return @battleback_name
end
end
I have updated the script.
Quote from: monkeydash on January 16, 2011, 11:20:49 am
Im creating a snipe skill which is my way of making precision sniping with targeting. I was using the EQUAP skills so that the Snipe skill only appears when you equip the sniper rifle (of course).
Is there a way though that it can be used in conjunction with an item so that the rifle still uses up ammo when fired?
There should be in the second part of the collection a script named Item Requirements for Skills, or something similar. Using that, you should be able to set which skills use which items, and how many of them are used.
Thanks. I'll have another look at that.
There are TONS of addons so its taking time to get through them all!
EDIT: Had a bit of a look and found it thanks. Did some editing and while testing I got an error with Blizzabs Part 2 saying I had a stacking error. This happened when trying to change equipment. What could this mean?
It would help if you told us what you edited.
I edited the item requirement for skills, the multi hit and master thief.
I have an error in Window_EquipItem here on the return line which appeared when I tried to equip an item.
#--------------------------------------------------------------------------
# * Item Acquisition
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
The item is a Sniper Rifle, which when equipped should have the actor learn the skill 'Snipe' which requires one sniper rifle ammo to be used.
I also have set up a common event where if the sniper rifle is equipped, the ammo is automatically hotkeyed.
I havnt tested any other items as Im trying to get this one to work before I make others.
EDIT: I tested again and got a different stack error. On the itemskill line.
class Scene_Equip
alias update_item_ers_later update_item
def update_item
itemskill = Xelias.ers_config(@item_window.item)
if Input.trigger?(Input::C)
unless (@actor.skill_learn?(itemskill[0]))
$game_system.se_play($data_system.buzzer_se)
return
and this in Xelias passive skills on the case line:
module Xelias
def self.ers_config(item)
# weapon configuration
if item.is_a?(RPG::Weapon)
case item.id
# START Weapon Configuration
when 2 then return [100]
# END Weapon Configuration
end
Checking over the passive skills instructions again, it says that every weapon needs to be set to a skill, which is probably why the new weapon isnt working as I havnt done that yet...
EDIT: Or maybe not...
Hm. I'm sure there may be a simple fix for this, but: I'm using the Multi-Drop (which is amazing, btw) and I'm also using the "Active-Action" script which displays the attack and the items you picked up. ("Received 1x Cloth" etc)
The only problem is, with MULTI DROP, if it randomly selects that I get nothing, AA still reports "Received 1x" AND I get a blank item in my inventory. What am I doing wrong?
Nudder add-on, maybe?
http://forum.chaos-project.com/index.php/topic,8747.new.html#new
EDIT: Blizz, there are 74 add-ons. I added that one add-on Monster Areas. But in the version history it does not mention it. D: And not including my ladders I think that would make 6 add-ons maybe? I'll count em.
I think there are only 73. You can check if you want.
Ah there is. You still forgot to mention Added Monster Areas by game_guy in the version history >:U
:V
I thought you added Monster Areas. D:
EDIT: Added Monster Areas and Realistic Ladders.
I...I require assistance on game_guy's "Skill Teaching Items" add-on...I have added the three pages of add-ons, in order, as requested. I also changed @SKILL_TEACHING_ITEM into "true"
class RPG::Item
def skills
return [] if !$game_system.SKILL_TEACHING_ITEM
case id
# CONFIG use
# when x return [y, z]
# x = item id, y = skill id, z = skill id
# when 2 then return [13, 12]
# The above will make item id 2 make an actor learn the skill id of 13 and
# skill id of 12
# You can add as many IDs as you want, separate them with commas
when 2 then return [13, 12]
when 1 then return [1]
end
return []
end
end
However, when I tested with a high-potion (Item ID 2), it didn't teach a skill at all...? Even with items I created and changing values, the actor simply isn't learning skills.
Have you checked that the skill exists? Also, i don't really think it matters, but try to change the order so that they're in numerical order...
Quote from: DesPKP on April 09, 2011, 02:15:29 am
Have you checked that the skill exists? Also, i don't really think it matters, but try to change the order so that they're in numerical order...
I have figured it out, but thanks for taking time to answer me :3
Alright Blizzard, I screwed up I think. The HP Consuming skills add-on tries to activate even though it was set to false. I checked the add-on, theres in if statement seeing if HP_SKILLS is true. Also, maybe I'm wrong, but wouldn't it be way more compatible if we had skill_effect do the hp cost? This way it won't screw with anyones custom menu or custom battle system.
Quote from: game_guy on April 11, 2011, 01:36:43 am
Alright Blizzard, I screwed up I think. The HP Consuming skills add-on tries to activate even though it was set to false. I checked the add-on, theres in if statement seeing if HP_SKILLS is true. Also, maybe I'm wrong, but wouldn't it be way more compatible if we had skill_effect do the hp cost? This way it won't screw with anyones custom menu or custom battle system.
?
Just want verification that way I know just to make a few edits or just a quick revamp.
Can I get help on the Multi-Drop addon? Is it possible to make items drop on different x axis value? Right now if an enemy drops 3 items for example, they all are on the same square, and that's odd because you can't see all of them.
(I'm asking for x axis changes because I'm doing a side-view rpg, but if it can be done with y axis too it will be more useful)
Edit: Problem solved by making enemies drop only one of the items from the list (or nothing) using a rand() and a case.
Is there a way that I could get the Multi-Hit script without using the rest of the scripts?
Please get back to me!
Only turn on that script. See the instructions.
Tons worthy? http://forum.chaos-project.com/index.php/topic,9460.0.html
Anyone know how I would go implementing a "Input.any_number?" method and have it return the number that was pressed?
I'm having a few problems with the minimap add-on.
1. Changing the color of markers doesn't work.
2. If there is a teleport event in a map, then the player marker disappears.
3. Only events with \spc is shown on the map, despite the explanation claiming that all events without \nomap or autorun/paralell process are shown as well.
4. If the teleport event is the last of the events, it is shown as an arrow pointing down.
I have quick passability test and the scripts are in the correct order.
Nobody has probably tested the minimap ever since I refactored the code the last time.
I am retired from RMXP and I usually don't give support for my scripts anymore, but if you could put a demo together that would demonstrate the problems right away, I'd be willing to take a look at it and fix the problems.
As for the \spc and \nomap conflict, I think that's because I have changed that during the last refactoring as well and didn't properly update the instructions or forgot to do it.
While making a demo I found out that the problem with the player marker disappearing happens when the teleport event (or a \spc event) have no graphic. But the color still won't change but I can live with that.
Quote from: game_guy on May 20, 2011, 10:47:22 pm
Anyone know how I would go implementing a "Input.any_number?" method and have it return the number that was pressed?
like this ? or actual numbers
module Input
def self.any_number?
(0...256).each{|key|return key if self.trigger?(key)}
end
end
if you want to return the actual number pressed then
module Input
def self.any_number?
(48...56).each{|data|return Key.key(data).to_i if self.trigger?(data)}
end
end
Hello!
I think the "Tons of Add-Ons" comp is excellent. It's awesome to have all of these features conveniently packaged into a single item (well, 3). It would take hours or even days to individually locate similar scripts online. Thanks to everyone involved in creating and editing these scripts, especially Blizzard. Even after a year of using it, I'd still consider myself a RMXP novice when it comes to scripts and gameplay functions (though I've been told that I'm pretty deft with dialogue and graphical items, esp. sprites). I only had one major problem with "Tons of Add-Ons"... none of the State and Skill Effect scripts in Part III I have tried seem to do anything.
The scripts don't cause any errors when switched on, and do not seem to be conflicting with any other scripts I'm using. To prove this, I copied all 3 parts into a new game with an unaltered script, and encountered the same problem. I have not removed any item from Tons of Add-Ons, either. This is disappointing, because the status/skill mods were some of the most interesting, in my opinion. I was really looking forward to implementing them.
Specifically, I've tried Zombie, Regen, Auto Revive, Invincibility, and HP/SP Absorb, and none of these add ons worked. I'll try a few others later, but I expect to encounter the same problem. I noticed that a handful of other people in this thread had similar troubles with Part III, but no solutions seemed to have been brought forth. The previous portions of Tons of Add-Ons are excellent enough that I won't miss these additions too much, but I'd really like some help on this if anyone is willing.
Thanks!
Have you made sure that you have configured all scripts properly? Most scripts have their own additional configuration that allows you to set up all the skills and status effects.
Be aware that if you turn on one of the add-ons, this change will only be reflected in new games. If you load a saved game, it will have the add-on on/off state from when you started that game. You have to either start a new game after turning the add-ons on or you have to use a script call during the game to turn them on.
---Bugs found---
Nr.: 01
Name: Location Names with Pictures or Text by Blizzard
Description: If I use ID then name = nil I get a big error msg box by changing to the map.
it works with pictures
(using with rmx-os) in the text is written that it corrupts savegames so i made a new account but didnt help.. (drop table shouldn't help?!)
(http://img638.imageshack.us/img638/1128/bughd.png)
Nr.: 02
Name: Animated Title by Blizzard
Description: not working at all.. not compatible with the rmx-os start menu??
QuoteDELAY = 2 # change the delay
PICS = 9 # number of pictures/frames
I followed the instructions.
1. It's not directly compatible with RMX-OS. Add this piece of code to make it work:
#==============================================================================
# Scene_Title
#==============================================================================
class Scene_Servers
alias main_location_later main
def main
$map_names = load_data('Data/MapInfos.rxdata')
$map_names.each_key {|key| $map_names[key] = $map_names[key].name}
main_location_later
end
end
2. Similar error like 1. You have to change the Scene_Title declaration in the script to Scene_Network.
Game doesn't start.
undefined method..
i changed the code like you said..
and the other scene_title I also tried.. and why Scene_Servers at first and Scene_Network on second..
Quote from: James McCloud on June 04, 2011, 06:46:24 am
Have you made sure that you have configured all scripts properly? Most scripts have their own additional configuration that allows you to set up all the skills and status effects.
Be aware that if you turn on one of the add-ons, this change will only be reflected in new games. If you load a saved game, it will have the add-on on/off state from when you started that game. You have to either start a new game after turning the add-ons on or you have to use a script call during the game to turn them on.
I have the scripts configured and the state/skill IDs assigned. I've also tested the new skills/states in the battle tester and in a new game, rather than a continued save file. For all I know, this could just be one of those instances where it just won't work for some unknown reason. It's happened to me, and other people, before, I'm sure.
Actually that didn't really happen to other people. o.o; Make a demo and I can take a quick look at it.
EDIT:
@Vaelen: Scene_Servers is the scene where you select the server and Scene_Network are all scenes regarding server connection (server selection, login, registration). The map data needs to be loaded only once so using Scene_Servers is enough.
There might be a problem with the second script and RMX-OS in general or another script is actually messing with RMX-OS. Are you getting the same error as before?
Allo, You have nice collection of scripts.Drain/regen skill could be useful to my game, but I couldn`t understand anything from how I could work it properly :facepalm: , it just drives me crazy... :wacko:
could you bright how this works, please???
Yo!
Got a little question about ENEMY_STATUS in page 2 of the script.
You mention in the description that i can turn OFF and ON this "in game" by using a call script:
ENEMY_STATUS = true
ENEMY_STATUS = false
There is a problem with that.
If i turn off ENEMY_STATUS in the script editor then use call script "ENEMY_STATUS = true" in game then everthing will work fine, the health-bars suddenly show up in battles and the script becomes active.
but...
When i use "ENEMY_STATUS = false" to turn it off for boss battles the whole game freezes.
Just as soon as the code is called the whole game just stops working and you can't move your charakter in any direction, you can't press start or anything. (The music still plays though)
Any solutions to this problem? :)
[so basicaly the game freezes when the Call Scrip "ENEMY_STATUS = false" in the game is used]
hi there i testet your animated title screen, its very similar to moghunters celia edition.
but both have a big and a small problem... (the same)
they begin to lagg with big ammounts of pictures...
i have 800 pics for my animation :naughty:
at frame 300-400 it begann to lagg hard so is there a way to add a line to delete old chaced pics ?
or another way to use it without lagg ?
the second thing is, is there a way to add a function to stop the animation at frame X,
so that it dont loops ?!
thx
800 pictures should take about 1 GB memory. This means that the graphics card can't take it and has to swap out the textures too often so it starts lagging. Another thing is that the game probably starts using the page file and swaps out data from RAM to the HDD and vice versa. Very stupid to use 800 pictures.
my grafic card has 2gb ram and my pc too so i have enough for them when its really 1gb !
and the pics are not even 4,5 mb because i convertet them to jpeg, copressed 60% ca.
so why should they be 1gb ??
and even when its impossible to have so much pics without lagg is there an alternative way to make that possible ?
maybe i can use a gif script (ive heard that there some out there) and make 4 or 8 gifs from that 800 pics ?!
if theres really no way to get this working can you pls add a line to stop the animation at frame X ??
edit:
maybe theres a way to load all images before the scene_title starts, i mean when the game starts a lil script cache all the pics before main gets executet ?? (i dont ask you to made that, its only a question)
I did that with my animated title script, but there is no reason to use 800 pics like Blizz said.
Even if your PC can handle it without lag, I guarantee that if you ever decide to release your game, it will lag on the majority of others'.
ok but which ammount i can use maximum ?
and can anyone pls add an stop frame at x command for me :shy:
You shouldn't go over 50. I mean, obviously you can put in any number you want, but it will have consequences. This would be already 64 MB required VRAM for graphics cards and including the rest of your graphic stuff, you will probably get together easily over 200 MB of required graphics memory.
damn, ignored :facepalm:
Just reminding that i'm here, is there a way to fixing that problem i asked about?
A simple Yes/no would be nice ^^
Either get Juan's interpreter fix or instead of this:
use this:
use this:
I can't BELIEVE that worked out with a single press of a button! :O.o:
Thanks Blizzard! :haha:
Tons worthy? I think so.
http://forum.chaos-project.com/index.php/topic,10113.0.html
Still waiting for that other script I sent you. :V (take your time)
Laziness. ._.;
I got problem with Multi-Hit script. When Actor uses Multi-hit skills, if he finishes the mob at the first hit, then the game will crash and show the error :(
And the maximum hits of a skill just 2 (even if I set it to 3 or more).
It seem to affects to class Scene_battle.
I use CBS (CCOA 3.04 RTA), and also test on default battle system. Both of them show the error.
When you use tons of add-ons, you're not using every single add-on that comes with it. For the add-ons you want enabled, you have to set it to true.
Just a heads up, this is NOT compatible with Blizz-abs 2.84, which sucks T_T
...this is the time, I would usually regret switching from 2.79, but this isn't that big of a deal. There were a few things I wanted from tons, but I can do without them :/ So this is just a heads up to anyone.
Quote from: Magus on October 13, 2011, 02:41:01 pm
Just a heads up, this is NOT compatible with Blizz-abs 2.84, which sucks T_T
...this is the time, I would usually regret switching from 2.79, but this isn't that big of a deal. There were a few things I wanted from tons, but I can do without them :/ So this is just a heads up to anyone.
:???:What isn't compatible? I'm using Babs 2.84 and tons and haven't had any problems.
Quote from: Boba Fett Link on October 13, 2011, 03:46:30 pm
Quote from: Magus on October 13, 2011, 02:41:01 pm
Just a heads up, this is NOT compatible with Blizz-abs 2.84, which sucks T_T
...this is the time, I would usually regret switching from 2.79, but this isn't that big of a deal. There were a few things I wanted from tons, but I can do without them :/ So this is just a heads up to anyone.
Seriously!?!?! Weird. I install it, I get argument errors, regardless of where I place the script..T_T Hmm.. There is one place I have tried yet, I'll move all three parts below that script :/
:???:What isn't compatible? I'm using Babs 2.84 and tons and haven't had any problems.
I have Babs after Tons. What specific add-ons are you using?
Okay, it doesn't give me the errors anymore. But yeah.. I can't get difficulties to work :/ damn.
UH...
Damn... It's because of the "Now Loading..." script. If I want difficulty, I have to get rid of it... BUT I NEED IT...
-_- Game_Guy.... is there anyway I can make your script compatible with Ton's Difficulties.
Why do you need the "Now Loading" script? It just makes it take more time to actually continue to play. I myself don't see much of a point in it. Except that it looks cool, but I don't think that is anything that should be added if it actually isn't necessary.
Quote from: stripe103 on October 14, 2011, 12:12:34 pm
Why do you need the "Now Loading" script? It just makes it take more time to actually continue to play. I myself don't see much of a point in it. Except that it looks cool, but I don't think that is anything that should be added if it actually isn't necessary.
Well you see, my rpg can't change its screen color tone all the way to black anymore due to another script, so I use the Now Loading script somewhat as a replacement. It works well with automatic cutscenes. (example, character is simply walking and then suddenly, it says "now loading," signaling an approaching cutscene)
You can simply use a black picture picture with 640x480 dimensions and change the opacity.
Or just do what I did in CP. I'm fading in movie strips when a cutscene is about to start- You don't need a script for that.
Quote from: Blizzard on October 14, 2011, 04:25:13 pm
Or just do what I did in CP. I'm fading in movie strips when a cutscene is about to start- You don't need a script for that.
That is true @Zero. @Blizzard; Movie strips. Good idea. Did you use pictures to do the strips?
Yeah. I think I even posted mine a long time ago. It could be in the Resource Database or the normal Resources section.
Hey Bliz for the Mulit-Hit Script in the Tons, I was wondering if you can add a percentage rating for how freqenetly the player's weapon attacks instead of always multi-hiting. Also the lower the Actor's HP the more frequent he'll use Multi-Hit.
{Ex. 25% chance Weapon Id 1 will multi-hit.}
I have a problem with Connected Attacking Ver 1.03
when I add part 2,and use item, error in "Connected Attacking Ver 1.03" in line: target.item_effect(@item, battler)
when I add part 3, and use skill, error in line: make_skill_action_result(battler, attack[1] - 100)
Perhaps the Connected Attacking script isn't compatible with Tons of Add-ons? I'm not really sure what to say of this because I don't really know what this script is myself.
I assume it's this script.
http://save-point.org/showthread.php?tid=2652
If that is the script you're using, then note that it's made for RTAB... There's a few compatibility issues when it comes to that.
QuoteThis add-on collection is semantically compatible with RTAB v1.16 with all Plugins, though, several add-ons will not work:
Center Battler - will cause a crash (it's rather useless in Side-View RTAB anyway)
Multi-Hit - will not react at all if RTAB is being used due to the heavy changes in the methods supported by the DBS
Charge Skill - the countdown will be start at 0 and the skill will be executed right away
It is possible that more add-ons don't work, but it is very unlikely.
Though I'm not sure if that's a related item in this case... Perhaps it's related to the Multi-Hit issue?
http://forum.chaos-project.com/index.php/topic,23.0.html
http://save-point.org/showthread.php?tid=2652 <<< Yes, that is the script I'm using, and I found my problem:
In part 2, I deleted "Actor-specific Item Usability", and it don't cause error anymore when actor use item.
In part 3, I deleted "HP Consuming Skill", and the error when I use skill was solved,too.
Hello guys,
I have a small problem here. I've activated the @ENEMY_STATUS script (Tons of Add-ons part 2) but when I chose 'ATTACK' prior of using a skill, it does not show the Enemy status in the Help Window. Anyone knows how to fix this please? :)
Here is the scripts:
For @ENEMY_STATUS:#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Enemy Status in Battle by Blizzard
# Version: 1.0b
# Type: Information Display Alteration
# Date: 17.2.2007
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
# 99% compatible with SDK v1.x. 90% compatible with SDK v2.x. Might cause
# incompatibility issues with exotic CBS-es, CMS-es and custom enemy status
# displays.
#
#
# Explanation:
#
# This add-on will not only show enemies' names, but even HP, SP and status
# in the help window during battle.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#==============================================================================
# Window_Help
#==============================================================================
class Window_Help
alias set_enemy_status_later set_enemy
def set_enemy(enemy)
$game_system.ENEMY_STATUS ? set_actor(enemy) : set_enemy_status_later(enemy)
end
end
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Passive Skills by Blizzard
# Version: 1.2b
# Type: Game Alteration
# Date: 13.7.2008
# Date v1.0b: 21.7.2008
# Date v1.1b: 19.10.2008
# Date v1.2b: 18.4.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# This add-on allows that skills passively change attributes and gold/exp
# rates. It is recommended that you make those skills be never usable.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
module BlizzCFG
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# will cause skills to only be effective during battle
BATTLE_ONLY = false
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
def self.passkl_database(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Passive Skills Database
#
# Use following template to configure your database below:
#
# when ID then return [HP, SP, STR, DEX, AGI, INT, ATK, PD, MD, EVA, G, EXP]
#
# ID - ID of the skill
# HP - change of max HP (added)
# SP - change of max SP (added)
# STR - change of STR (added)
# DEX - change of DEX (added)
# AGI - change of AGI (added)
# INT - change of INT (added)
# ATK - change of ATK (added)
# PD - change of PDEF (added)
# MD - change of MDEF (added)
# EVA - change of EVA (added)
# G - change of gold (multiplied)
# EXP - change of EXP (multiplied)
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return [100, 100, 10, 10, 10, 10, 0, 0, 0, 0, 1.0, 1.0]
when 2 then return [0, 0, 0, 0, 0, 0, 10, -10, -10, 10, 1.0, 1.0]
when 3 then return [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.5, 1.0]
when 4 then return [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 1.2]
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Passive Skills
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.0, 1.0]
end
end
#==============================================================================
# Game_Actor
#==============================================================================
class Game_Actor
alias base_maxhp_passkl_later base_maxhp
def base_maxhp
result = base_maxhp_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[0]}
end
return result
end
alias base_maxsp_passkl_later base_maxsp
def base_maxsp
result = base_maxsp_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[1]}
end
return result
end
alias base_str_passkl_later base_str
def base_str
result = base_str_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[2]}
end
return result
end
alias base_dex_passkl_later base_dex
def base_dex
result = base_dex_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[3]}
end
return result
end
alias base_agi_passkl_later base_agi
def base_agi
result = base_agi_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[4]}
end
return result
end
alias base_int_passkl_later base_int
def base_int
result = base_int_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[5]}
end
return result
end
alias base_atk_passkl_later base_atk
def base_atk
result = base_atk_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[6]}
end
return result
end
alias base_pdef_passkl_later base_pdef
def base_pdef
result = base_pdef_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[7]}
end
return result
end
alias base_mdef_passkl_later base_mdef
def base_mdef
result = base_mdef_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[8]}
end
return result
end
alias base_eva_passkl_later base_eva
def base_eva
result = base_eva_passkl_later
if $game_system.PASSIVE_SKILLS &&
(!BlizzCFG::BATTLE_ONLY || $game_temp.in_battle)
@skills.each {|id| result += BlizzCFG.passkl_database(id)[9]}
end
return result
end
def gold_rate
return 1 if BlizzCFG::BATTLE_ONLY && !$game_temp.in_battle
result = 1.0
@skills.each {|id| result *= BlizzCFG.passkl_database(id)[10]}
return result
end
def exp_rate
return 1 if BlizzCFG::BATTLE_ONLY && !$game_temp.in_battle
result = 1.0
@skills.each {|id| result *= BlizzCFG.passkl_database(id)[11]}
return result
end
end
#==============================================================================
# Window_BattleResult
#==============================================================================
class Window_BattleResult
attr_accessor :gold
attr_accessor :exp
end
#==============================================================================
# Window_BattleStatus
#==============================================================================
class Window_BattleStatus
attr_accessor :level_up_flags
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias start_phase5_passkl_later start_phase5
def start_phase5
unless $game_system.PASSIVE_SKILLS
start_phase5_passkl_later
return
end
old_gold, old_exp, old_levels = $game_party.gold, [], []
$game_party.actors.each {|actor|
old_exp.push(actor.exp)
old_level.push(actor.level)}
start_phase5_passkl_later
new_gold = $game_party.gold - old_gold
$game_party.lose_gold(new_gold)
gold_rate = 100
$game_party.actors.each {|actor| gold_rate *= actor.gold_rate}
@result_window.gold = (new_gold * gold_rate / 100).to_i
$game_party.gain_gold(@result_window.gold)
new_exp = 0
$game_party.actors.each_index {|i|
if $game_party.actors[i].exp - old_exp[i] > 0
new_exp = $game_party.actors[i].exp - old_exp[i]
end
$game_party.actors[i].exp = old_exp[i]}
exp_rate = 100
$game_party.actors.each {|actor| exp_rate *= actor.exp_rate}
@result_window.exp = (new_exp * exp_rate / 100).to_i
@result_window.refresh
$game_party.actors.each_index {|i|
@status_window.level_up_flags[i] = false
unless $game_party.actors[i].cant_get_exp?
$game_party.actors[i].exp += @result_window.exp
@status_window.level_up(i) if $game_party.actors[i].level > old_level[i]
end}
end
end
For Window_Help:(Maybe this is where the problem is)
#==============================================================================
# ** Window_Help
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================
class Window_Help < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 640, 64)
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(4, 0, self.width - 40, 32, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
#--------------------------------------------------------------------------
# * Set Actor
# actor : status displaying actor
#--------------------------------------------------------------------------
def set_actor(actor)
if actor != @actor
self.contents.clear
draw_actor_name(actor, 4, 0)
draw_actor_state(actor, 140, 0)
draw_actor_hp(actor, 284, 0)
draw_actor_sp(actor, 460, 0)
@actor = actor
@text = nil
self.visible = true
end
end
#--------------------------------------------------------------------------
# * Set Enemy
# enemy : name and status displaying enemy
#--------------------------------------------------------------------------
def set_enemy(enemy)
text = enemy.name
state_text = make_battler_state_text(enemy, 112, false)
if state_text != ""
text += " " + state_text
end
set_text(text, 1)
end
end
class Window_Help
alias set_enemy_status_later set_enemy
def set_enemy(enemy)
$game_system.ENEMY_STATUS ? set_actor(enemy) : set_enemy_status_later(enemy)
end
end
Please use [code][/code] tags when posting code. ~ G_G
Quote from: bigace on December 22, 2011, 02:00:59 am
Hey Bliz for the Mulit-Hit Script in the Tons, I was wondering if you can add a percentage rating for how freqenetly the player's weapon attacks instead of always multi-hiting. Also the lower the Actor's HP the more frequent he'll use Multi-Hit.
{Ex. 25% chance Weapon Id 1 will multi-hit.}
I guess this can't be done?
Can i make an cemetery (like a spawn point where you respawn after dead) with Auto-Revive Status?
Quote from: Little.Dot on January 10, 2012, 01:55:43 pm
Can i make an cemetery (like a spawn point where you respawn after dead) with Auto-Revive Status?
That's not what Auto-Life/Revive does. What you are asking for is something completely unrelated to ToA. You can event that actually.
Quote from: KK20 on January 10, 2012, 04:37:50 pm
Quote from: Little.Dot on January 10, 2012, 01:55:43 pm
Can i make an cemetery (like a spawn point where you respawn after dead) with Auto-Revive Status?
That's not what Auto-Life/Revive does. What you are asking for is something completely unrelated to ToA. You can event that actually.
Oh i see ... thanks for the replay btw :)
Hello!
I see this perfect script , it's include many thing I have needied it.
but I want to suggest a small addition to "Blue Magic via Status Effect" category,I need it.
-Where attacked battler be attacked and succed in learning a skill, then a text should displayed in Window Mwssage shows : " X succed to learn Y"
where X is the attacked battker.
Y is the learned skill.
If this can be done then I'm very thank you, but maybe the new script can easily replaced with the old one,wich starts at LINE:825 of Part3 of whole script.
Anyway thanks for everyone contributed to make that perfect script.
i'm trying to make a class like alchemy so i am trying to make a skill use one or more items... unfortunately when i put a skill use 1 item it works but doesn't use an item... :( same happens when i try using 2 items
can aneyone help pls
is there a way to get the hud to work with blizz abs? i want to have the hud display the info for every ally, and i cant use winkio's hud, cuz it needs actor1 to always be in the party, and i need that to not be true.
O_o This HUD is Blizz-ABS's HUD.
kinda. the two HUDs are different, but only because the tons of add-ons hud shows info for every party member, and the abs hud doesn't
i've been looking around, and couldn't find anything that would work.
thanks, i'll see what i can find
edit: another difference between the two HUDs is that the add-ons hud has an EXP bar, and it shows the player's money. i have the script that adds an EXP bar, but my point is, they're different.
edit again: couldn't find anything.
Quote from: Hero92 on March 20, 2012, 10:03:09 am
Try this my friend.. 8)
http://atelier-rgss.com/RGSS/Menu/XP_Menu17.html (http://atelier-rgss.com/RGSS/Menu/XP_Menu17.html)
I think he needs a HUD showing all party members...
Quote from: Boba Fett Link on March 20, 2012, 04:32:59 pm
Quote from: Hero92 on March 20, 2012, 10:03:09 am
Try this my friend.. 8)
http://atelier-rgss.com/RGSS/Menu/XP_Menu17.html (http://atelier-rgss.com/RGSS/Menu/XP_Menu17.html)
I think he needs a HUD showing all party members...
If that's the case, I believe Winkio created a hud like that.
Quote from: Magus on March 20, 2012, 04:53:46 pm
If that's the case, I believe Winkio created a hud like that.
He can't use it:
Quote from: Bob423 on March 16, 2012, 08:22:21 pm
i want to have the hud display the info for every ally, and i cant use winkio's hud, cuz it needs actor1 to always be in the party, and i need that to not be true.
yea boba fett is right, you both told me about things i've already seen.
Quote from: Bob423 on March 16, 2012, 08:22:21 pm
is there a way to get the hud to work with blizz abs? i want to have the hud display the info for every ally, and i cant use winkio's hud, cuz it needs actor1 to always be in the party, and i need that to not be true.
You could just use Winkio's HUD and hide actor 1. I'm using the HUD, and for my intro cutscene I just made him have no sprite. Also you don't always need actor 1, you do need an actor of some kind at all times though.
Always to that during a cutscene that doesn't involve the actor. <Rule #??
Quote from: Hero92 on March 22, 2012, 07:07:35 am
The problem now that the guy needs to face is how to hide the hud manually as well.
Make a common event and put these scripts in.
$game_system.hud = false
$game_system.hotkeys = false
$game_system.minimap = 0
$game_system.attack_button = false
$game_system.defend_button = false
$game_system.skill_button = false
$game_system.item_button = false
Anytime you want to turn the HUD off for a cutscene, just use the common event. Make a separate common event that's the opposite to turn the HUD and all buttons back on.
I've been having trouble with the Unique Skill Commands script. I get no error message and the game does not crash, but it never pulls up the skills window. I've tried this in a new game, I've made sure I have scripts in the right order, I've read and re-read the instructions, but I can't seem to figure out the problem.
For example: Actor 3 is set up with the command 'Powers'. In running the game, the command shows up properly, but nothing happens when I select the command. The SE plays, but it never produces the window.
I've had little to no trouble with all other scripts in this package. I've been able to solve any other problem I've come across with the exception of the USC problem above. I must be missing something.
Quote from: Hero92 on March 22, 2012, 01:17:03 pm
Quote from: Kirye on March 22, 2012, 10:08:31 am
Quote from: Hero92 on March 22, 2012, 07:07:35 am
The problem now that the guy needs to face is how to hide the hud manually as well.
Make a common event and put these scripts in.
$game_system.hud = false
$game_system.hotkeys = false
$game_system.minimap = 0
$game_system.attack_button = false
$game_system.defend_button = false
$game_system.skill_button = false
$game_system.item_button = false
Anytime you want to turn the HUD off for a cutscene, just use the common event. Make a separate common event that's the opposite to turn the HUD and all buttons back on.
Cool, thanks...I hope the member's problem is solved now. :naughty:
awesome, thanks guys.
so...will this work, if actor #1 isnt in the party at all for most of the game? up to a certain part, you can only get to lvl 8 in my game, then after you can reach lvl 99
so im kinda confused about what exactly i need to do
Quote from: Bob423 on April 03, 2012, 10:01:10 pmup to a certain part, you can only get to lvl 8 in my game, then after you can reach lvl 99
so im kinda confused about what exactly i need to do
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Constant
#--------------------------------------------------------------------------
SWITCH_LIMIT_LEVEL = 1
LIMIT_LEVEL = 8
#--------------------------------------------------------------------------
# * Change Level
# level : new level
#--------------------------------------------------------------------------
def level=(level)
# Check up and down limits
if $game_switches[SWITCH_LIMIT_LEVEL]
level = [[level, $data_actors[@actor_id].final_level].min, 1].max
else
level = [[level, LIMIT_LEVEL].min, 1].max
end
# Change EXP
self.exp = @exp_list[level]
end
end
Quote from: LiTTleDRAgo on April 04, 2012, 01:08:02 am
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Constant
#--------------------------------------------------------------------------
SWITCH_LIMIT_LEVEL = 1
LIMIT_LEVEL = 8
#--------------------------------------------------------------------------
# * Change Level
# level : new level
#--------------------------------------------------------------------------
def level=(level)
# Check up and down limits
if $game_switches[SWITCH_LIMIT_LEVEL]
level = [[level, $data_actors[@actor_id].final_level].min, 1].max
else
level = [[level, LIMIT_LEVEL].min, 1].max
end
# Change EXP
self.exp = @exp_list[level]
end
end
also, when you get to that part, the stats of the player change, and i cant just say "atk + 5" or whatever, since it affects more than the current stat. it's like an upgrade
I updated all 3 parts myself and included my Taunt States (http://forum.chaos-project.com/index.php/topic,11614.0.html) script.
http://pastebin.com/bJgRtBdN (Part 1)
http://pastebin.com/MwAkrNni (Part 2)
http://pastebin.com/dkQtBPps (Part 3)
Whenever winkio or Blizzard gets the chance, maybe overlook it and upload it if of course you approve.
lol Part 2 and Part 3 are the same links G_G. :haha:
lul. Thanks, its fixed now. >.<
HI
Maybe someone got a simple multi-hit script ?
I just need that one for standard rpgxp battle style
(im big newbie) pls help
Quote from: dragon997 on April 14, 2012, 08:44:26 pm
Maybe someone got a simple multi-hit script ?
I just need that one for standard rpgxp battle style
Uh...its in there. And yes, it is meant for the standard battle system.
General Suggestion
How about something to allow large sprites to render as Flat? You know this graphic?
(http://www.775.net/~heretic/downloads/rmxp/images/trouble_sprite.jpg)
...and it always seems to do this:
(http://www.775.net/~heretic/downloads/rmxp/images/trouble_sprite2.jpg)
Make it render like this!
(http://www.775.net/~heretic/downloads/rmxp/images/trouble_sprite3.jpg)
I managed to get a version of that to work great, but it is deeply embedded in another script and fully redefines screen_z instead of aliasing, which I think can cause what I did to be incompatible with other scripts. Im also just curious to see how someone else might pull it off...
I know it's in there, that why i post here... ;p i just need only simple multi-attack script
when I cut them out from this script its doesn't work as i said im a beginner and I no have idea how i can fix that problem :( som1 can make just multi-hit for standard rpg xp? I was stuck in my project :(
i want add moore hits to my skills/spells (like omnislash in FF7)
pls help
sry for bad "inglish"
@dragon997 You can't extract the script. Each separate script in TONS can be turned on or off. Just turn off all the ones you don't want.
can u say how :D ? Im rly newbie :( i only want turn on multi attack :P
i dont understand instruction :
Set up the following constants to configure the script:
#
# WEAPON_RANDOM - add any weapon IDs here and separate them with commas to
# make those specific weapons attack another random target
# for each other hit than the first
# SKILL_RANDOM - add any skill IDs here and separate them with commas to
# make those specific skills attack another random target
# for each other hit than the first
# ITEM_RANDOM - add any item IDs here and separate them with commas to
# make those specific items attack another random target
# for each other hit than the first
# ENEMY_RANDOM - add any enemy IDs here and separate them with commas to
# make those specific enemies attack another random target
# for each other hit than the first
#
# Further there are 4 configurations. Configuration 1 is for weapons,
# Configuration 2 is for skills, Configuration 3 is for items and
# Configuration 3 is for normal enemy attacks. Use following template to set
# up how many hits should be done:
#
# when ID then return HITS
#
# ID - ID of weapon, skill, item or enemy, depending on the configuration
# number
# HITS - number of hits
(its in 2nd script around 4000 lane)
can i get simple explain how turn on or how cfg it? :C when i change any numers here :
# START Basic Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WEAPON_RANDOM = [1, 5]
SKILL_RANDOM = [57]
ITEM_RANDOM = [12]
ENEMY_RANDOM = []
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Basic Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
def self.weapon_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 3
when 2 then return 4
when 3 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.skill_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 57 then return 3
when 58 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.item_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 12 then return 3
when 13 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.enemy_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 4
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 4
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Then i get error :/
what its mean when 1 then 2 ? when 12 then 13? what is that numer ?
its ID skill or what ? plz help
Spoilers and code tags are your friend.
EDIT:
Also, here's just that script properly ripped from the other ones.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Multi-Hit by Blizzard
# Version: 1.51b
# Type: Weapon/Skill/Enemy Enhancement
# Date: 12.8.2007
# Date 1.3b: 23.2.2008
# Date 1.4b: 23.7.2008
# Date 1.5b: 19.10.2008
# Date 1.51b: 6.10.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
# 95% compatible with SDK 1.x. 70% compatible with SDK 2.x. Might be
# incompatible with exotic skills and/or CBS-es. Compatible with CRLS 5.1b or
# higher.
#
#
# Explanation:
#
# This add-on will allow that skills, weapons and enemies attack more than
# once.
#
# new in v1.3b:
# - now you can define weapons/skills/enemies which's other attacks will
# target a random target instead of the originally chosen target
# - now beta
#
# new in v1.4b:
# - better compatibility with SP Cost Mod
# - improved coding
#
# new in v1.5b:
# - added Multi-Hit items
#
#
# Configuration:
#
# Set up the following constants to configure the script:
#
# WEAPON_RANDOM - add any weapon IDs here and separate them with commas to
# make those specific weapons attack another random target
# for each other hit than the first
# SKILL_RANDOM - add any skill IDs here and separate them with commas to
# make those specific skills attack another random target
# for each other hit than the first
# ITEM_RANDOM - add any item IDs here and separate them with commas to
# make those specific items attack another random target
# for each other hit than the first
# ENEMY_RANDOM - add any enemy IDs here and separate them with commas to
# make those specific enemies attack another random target
# for each other hit than the first
#
# Further there are 4 configurations. Configuration 1 is for weapons,
# Configuration 2 is for skills, Configuration 3 is for items and
# Configuration 3 is for normal enemy attacks. Use following template to set
# up how many hits should be done:
#
# when ID then return HITS
#
# ID - ID of weapon, skill, item or enemy, depending on the configuration
# number
# HITS - number of hits
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#==============================================================================
# module BlizzCFG
#==============================================================================
module BlizzCFG
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Basic Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WEAPON_RANDOM = [1, 2]
SKILL_RANDOM = [57]
ITEM_RANDOM = [12]
ENEMY_RANDOM = []
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Basic Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
def self.weapon_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 3
when 2 then return 4
when 3 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.skill_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 57 then return 3
when 58 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.item_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 12 then return 3
when 13 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.enemy_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 4
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 4
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias update_phase4_step1_multi_hit_later update_phase4_step1
def update_phase4_step1(battler = nil)
if battler != nil
update_phase4_step1_multi_hit_later(battler)
return
end
update_phase4_step1_multi_hit_later
@repeat = [1, 1, 0]
return unless @active_battler != nil
if @active_battler.current_action.kind == 0
if @active_battler.current_action.basic == 0
if @active_battler.is_a?(Game_Actor)
hits = BlizzCFG.weapon_hits(@active_battler.weapon_id)
elsif @active_battler.is_a?(Game_Enemy)
hits = BlizzCFG.enemy_hits(@active_battler.id)
end
@repeat = [hits, hits, 2]
end
elsif @active_battler.current_action.kind == 1
@repeat[2] = 3
elsif @active_battler.current_action.kind == 2
@repeat[2] = 4
end
end
alias update_phase4_step2_multi_hit_later update_phase4_step2
def update_phase4_step2(battler = nil)
if battler != nil
update_phase4_step2_multi_hit_later(battler)
return
end
update_phase4_step2_multi_hit_later
if @phase4_step != 1
if @repeat[2] == 3
hits = BlizzCFG.skill_hits(@skill.id)
@repeat = [hits, hits+1, 4]
elsif @repeat[2] == 4
hits = BlizzCFG.item_hits(@item.id)
@repeat = [hits, hits+1, 4]
end
end
end
alias update_phase4_step5_multi_hit_later update_phase4_step5
def update_phase4_step5(battler = nil)
if battler != nil
update_phase4_step5_multi_hit_later(battler)
return
end
update_phase4_step5_multi_hit_later
if @active_battler.current_action.kind == 1
if BlizzCFG::SKILL_RANDOM.include?(@skill.id)
if @active_battler.is_a?(Game_Actor)
@active_battler.current_action.decide_random_target_for_actor
elsif @active_battler.is_a?(Game_Enemy)
@active_battler.current_action.decide_random_target_for_enemy
end
end
elsif @active_battler.current_action.kind == 2
if BlizzCFG::ITEM_RANDOM.include?(@item.id)
if @active_battler.is_a?(Game_Actor)
@active_battler.current_action.decide_random_target_for_actor
elsif @active_battler.is_a?(Game_Enemy)
@active_battler.current_action.decide_random_target_for_enemy
end
end
elsif @active_battler.is_a?(Game_Actor)
if BlizzCFG::WEAPON_RANDOM.include?(@active_battler.weapon_id)
@active_battler.current_action.decide_random_target_for_actor
end
elsif @active_battler.is_a?(Game_Enemy)
if BlizzCFG::ENEMY_RANDOM.include?(@active_battler.id)
@active_battler.current_action.decide_random_target_for_enemy
end
end
@phase4_step = 2 if @repeat[0] > 1 && @repeat[2] > 0
@repeat[0] -= 1
end
alias make_skill_action_result_multi_hit_later make_skill_action_result
def make_skill_action_result(battler = nil, plus_id = nil)
if battler != nil
if plus_id != nil
make_skill_action_result_multi_hit_later(battler, plus_id)
else
make_skill_action_result_multi_hit_later(battler)
end
return
end
make_skill_action_result_multi_hit_later
if @repeat[2] > 3
@active_battler.sp += @skill.sp_cost
@status_window.refresh
end
end
end
as i said its not woring without all Scripts together :/ i need explain how to configurate it :/ where put ID skill where number of hits etc :C dont know why its not work fine for me i need simple example
The script comes with a basic example.
How would you guys feel about including my small contribution?
I dont think there are any scripts out there that do what this does at this time. Basically, you know how the Ground Portal Sprites dont render quite right? The script I put together adds the ability to make them render as flat on the ground. By default, RMXP "thinks" that any event is standing up. Minor oversight as 99% of the Events are standing up, but for things that need to look like they are laying flat on the ground that takes up more than 32 pixels, it makes those Events stand up straight as well. So if you have a large event sprite, maybe used for something like a Flying Carpet, or a Boat, or something like that, the characters need to render on TOP without assigning "Always On Top" to the characters.
Ground Portal is the best one I can think of as an example, and I think the only example included in RMXP that has this issue. Kind of like a reverse way to do "Always On Top", as the "Flat" property makes them render "Always On Bottom", if that makes any sense.
Flat Sprites# ----------------------------------------------------------------------------
# FLAT SPRITES by Heretic
# ----------------------------------------------------------------------------
# Flat-Z allows you to make large sprites look like they are laying flat
# on the ground.
#
# --- EVENT NAME RELATED---
#
# EV001\z_flat
# EV001\z_add[32]
#
# To make an Event always render as flat, change its Name to "event001\z_flat"
#
# To make an Event always have an adjusted Z-Index, name it "ev\z_add[Int]"
#
# --- SCRIPTED EVENT RELATED ---
# To change a Standing Sprite to render as flat, use a Move Route Script
# for that event "set_flat". Useful for when changing graphics of Events
#
# To specify a higher or lower Z-Index, use the optional parameter:
# such as "event001\z_flat[32]"
#
# To Reset a Sprite that is flat to stand up
# use a Move Route Script "reset_z"
# "reset_z" will check the name again for special name related Z-Index commands
#
# To make a Manual Adjustment to a sprites Z-Index, use set_z(Int)
# and I recommend incrementing the Int by 32 either way.
#
# To clear any special Z-Index Related properties, run a script
# "clear_z"
#
# NOTE \z_add[0] will be treated as a request for a FLAT SPRITE
#
# NOTE 2: Special Properties like "\foo" in an Events Name appear
# to NOT COPY AND PASTE CORRECTLY at all times in RMXP Editor
# if you COPY AND PASTE an Event.
DISPLAY_DEVELOPER_ERRORS = true
class Game_Event < Game_Character
unless self.method_defined?('flat_sprite_initialize')
alias flat_sprite_initialize :initialize
end
def initialize(map_id, event, *args)
check_flat_sprites(event)
flat_sprite_initialize(map_id, event, *args)
end
#----------------------------------------------------------------------------
# * Check Each Event for a \z_flat or \z_add flag
#----------------------------------------------------------------------------
def check_flat_sprites(event)
# Options
#
# "Name\z_flat"
# "Name\z_add[32]" for characters higher than 32 pixels high
event.name.gsub(/\\z_flat\[([-]?[0-9]+)\]|\\z_flat/i) {@z_flat = $1.to_i }
return if @z_flat
event.name.gsub(/\\z_add\[([-]?[0-9]+)\]/i) {@z_add = $1.to_i + 32 }
return if @z_add
end
#----------------------------------------------------------------------------
# * Sets a sprite to render as Flat by saying its screen_z is 0 by default
#----------------------------------------------------------------------------
def set_flat
# Always Render as Flat regardless of size
@z_flat = 0
@z_add = nil
end
#----------------------------------------------------------------------------
# * Sets the Z-Index of an Event via a Script instead of a Name
#----------------------------------------------------------------------------
def set_z(new_z)
# If Error Reporting is On and not a Release Game
if $DEBUG and DISPLAY_DEVELOPER_ERRORS
if new_z.nil?
print "Warning! \"set_z(int)\" expects an \"Argument\" of \"int\"!\n",
"\"(int)\" should be a Number!\n\n",
"I.E. set_z(32) or set_z(-64)"
return
elsif not new_z.is_a? Numeric
print "Warning! \"", new_z, "\" is not an Number!\n",
"set_flat(int) expects \"int\" to be a Number!\n\n",
"I.E. set_z(32) or set_z(-65)"
return
end
end
# Expects new_z as an Argument. It adds whatever that value is to new number
if new_z != 0
# Manual Adjustment to Z-Index
@z_add = new_z + 32
@z_flat = nil
else
# Always Render as Flat regardless of size
@z_flat = 0
@z_add = nil
end
end
#----------------------------------------------------------------------------
# * Resets the Z-Index of an Event via a Script to get Name Properties
#----------------------------------------------------------------------------
def reset_z
# Resets Z-Index adjusting Properties
@z_flat = nil
@z_add = nil
# Reset this Event's Z-Index to be Name Based
@event.name.gsub(/\\z_flat\[([-]?[0-9]+)\]|\\z_flat/i) {@z_flat = $1.to_i }
return if @z_flat
@event.name.gsub(/\\z_add\[([-]?[0-9]+)\]/i) {@z_add = $1.to_i }
@z_add + 32 if @z_add
return if @z_add
end
#----------------------------------------------------------------------------
# * Clears all Z-Index Related Properties. Will reset when a map is reloaded
#----------------------------------------------------------------------------
def clear_z
@z_flat = nil
@z_add = nil
end
#----------------------------------------------------------------------------
# * Redefine screen_z for Flat Sprites
#----------------------------------------------------------------------------
unless method_defined?(:caterpillar_screen_z)
# Alias the Original
alias :flat_sprite_screen_z :screen_z
end
def screen_z(height = 0)
if @always_on_top
return 999
end
# This adds the feature of adjusting an events Z-Index on the fly
# \z_flat[int]
# Compensates for Sprite Height in Pixels
if not @z_flat.nil? and !@always_on_top
# Consider the Sprites Size and Adjust for it, check nil for no graphic
flat_height = (height != 0 and not height.nil?) ? height : 0
# Calculate new Z-Index with Adjustments
adjusted_z = (@real_y - $game_map.display_y + 3) / 4 - flat_height
# Make sure those Characters stay Visible, < 0 they Disappear!
adjusted_z = 0 if adjusted_z < 0
# Return the Adjusted Z-Index Value
return adjusted_z
end
# \z_add[int]
# Allows for an adjusted Z-Index which may not always be flat
if not @z_add.nil? and !@always_on_top
# Consider the Sprites Size and Adjust for it, check nil for no graphic
flat_height = (height.nil? and not height != 0) ? height : 0
# Calculate new Z-Index with Adjustments
adjusted_z = (@real_y - $game_map.display_y + 3) / 4 + flat_height + @z_add + 32 + ((flat_height > 32) ? 31 : 0)
# Make sure those Characters stay Visible, < 0 they Disappear!
adjusted_z = 0 if adjusted_z < 0
# Return the Adjusted Z-Index Value
return adjusted_z
end
# If Normal Tile - Dont Adjust again!
if @tile_id > 0
# Add tile priority * 32
return (@real_y - $game_map.display_y + 3) / 4 + 32 + $game_map.priorities[@tile_id] * 32
# If character
else
# Calculates Original Screen-Z adjusted for Party Size so Party is Always On Top
return (@real_y - $game_map.display_y + 3) / 4 + 32 + ((height > 32) ? 31 : 0)
end
end
end
#-----------------------
# Interpreter
#-----------------------
# I use this section to let the developer know if they are using the script
# incorrectly, usually by calling a command from the wrong Script Window
# since there are two of them.
#
# Edit Event -> Scripts and Edit Event -> Set Move Route -> Scripts are DIFFERENT!
class Interpreter
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def reset_z(*args)
if $DEBUG and DISPLAY_DEVELOPER_ERRORS == true
print "Please call \"reset_z\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def set_flat(*args)
if $DEBUG and DISPLAY_DEVELOPER_ERRORS == true
print "Please call \"set_flat\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def set_z(*args)
if $DEBUG and DISPLAY_DEVELOPER_ERRORS == true
print "Please call \"set_z(", args, ")\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def clear_z(*args) #args prevents any args from being used
if $DEBUG and DISPLAY_DEVELOPER_ERRORS == true
print "Please call \"clear_z\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
end
Edit: Pulled out unneeded code.
Not sure what I would need to do to allow this to be incorporated, but I can provide a more comprehensive demo if you guys want...
While a demo is not necessary for the final product, I'd appreciate it if you could make a simple demo so I can test and optimize the script. Then you can test it once more to see if everything is working right as it was working previously and I will add the final pieces of code to make it work fully with the rest of Tons.
I haven't looked through the script yet so I don't know how exactly it works, but it's possible that I might change a few small things (e.g. make it apply to sprites that have some text added in their event name) to make it easier to use.
Of course, only if all of that is fine with you. You will retain all the credit for your script. I will only add a small section on top that says "optimized by Blizzard for Tons of Add-ons" like I did with all the other scripts that were not made by me.
The funny thing is that I have some code in CP that I wrote myself that does exactly the same thing. xD All I have to do is add "TileY" to an event name and the sprite would be rendered flat.
That reminds me, I was supposed to add a few scripts by G_G there as well. ._. Maybe I should also take a look at some of the bugs people have reported. ._.;
I'll put together a simple demo. I might work on it tomorrow, getting kind of tired tonight...
Just a generic grass covered map with 2-3 example events is totally enough. Take your time.
Ok, Demo, cleaned up code and pulled out some extra stuff that wasnt needed.
http://www.775.net/~heretic/downloads/rmxp/FlatSpritesDemo.exe
I tested heavily. One thing I did was to make some Super Large Sprites, and they work as expected.
Honestly, that seem overly complicated.
All you really need is a couple simple methods. Here's what I mean, though it could be refined a bit more...
class Game_Event
attr_accessor :custom_z
alias flat_sprite_init initialize
def initialize(*args)
flat_sprite_init(*args)
if @event.name =~ /\\[Zz]\[([0-9]+)\]/
@custom_z = $1.to_i
end
end
end
class Game_Character
alias flat_sprite_z screen_z
def screen_z(height)
return @custom_z != nil ? @custom_z : flat_sprite_z(height)
end
end
class Interpreter
def reset_z(id = @event_id)
character = id == -1 ? $game_player : $game_map.events[@event_id]
character.custom_z = nil
end
def set_z(z_value, id = @event_id)
character = id == -1 ? $game_player : $game_map.events[@event_id]
character.custom_z = z_value
end
end
Leave the optimization up to me, F0. ;)
It wasn't an "optimization", I was showing a different way of handling it that is simpler.
I had no plans on submitting that code for this script.
My "optimization" would have probably come down to a piece of code very similar to yours.
Here is the final script.
# ----------------------------------------------------------------------------
# FLAT SPRITES by Heretic
# ----------------------------------------------------------------------------
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# - code reviewed, optimized, integrated into Tons of Add-ons, freed from
# potential bugs and beta tested by Blizzard
# - this add-on is part of Tons of Add-ons with full permission of the original
# author(s)
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Flat Sprites allows you to make large sprites look like they are laying flat
# on the ground.
#
# --- EVENT NAME RELATED---
#
# EV001\z_flat
# EV001\z_flat[32]
# EV001\z_add[32]
#
# To make an Event always have an adjusted Z-Index, add to its name "\z_add[Int]".
#
# To make an Event always render as flat, add to its nane "\z_flat".
#
# To make an Event always render as flat, but with an altered Z-Index,
# add to its name "\z_flat[Int]" (this is an equivalent to using \z_flat and
# \z_add[Int] together).
#
# --- SCRIPTED EVENT RELATED ---
#
# To change a Standing Sprite to render as flat, use a Move Route Script
# for that event "set_flat". Useful for when changing graphics of Events.
#
# To specify a higher or lower Z-Index, use the optional parameter:
# such as "set_flat(Int)".
#
# To Reset a Sprite that is flat to stand up use a Move Route Script "reset_z".
# "reset_z" will check the name again for special name related Z-Index commands.
#
# To make a Manual Adjustment to a sprites Z-Index, use set_z(Int)
# and I recommend incrementing the Int by 32 either way.
#
# To clear any special Z-Index Related properties, run a script "clear_z".
#
# NOTE \z_add[0] will NOT be treated as a request for a FLAT SPRITE.
#
# NOTE 2: Special Properties like "\foo" in an Events Name appear
# to NOT COPY AND PASTE CORRECTLY at all times in RMXP Editor
# if you COPY AND PASTE an Event.
# ----------------------------------------------------------------------------
DISPLAY_DEVELOPER_ERRORS = true
#==============================================================================
# Game_Event
#==============================================================================
class Game_Event
#----------------------------------------------------------------------------
# * Redefine initialize for new variables
#----------------------------------------------------------------------------
unless self.method_defined?(:flat_sprite_initialize)
alias :flat_sprite_initialize :initialize
end
def initialize(map_id, event, *args)
@z_flat = false
@z_add = 0
check_flat_sprites(event)
flat_sprite_initialize(map_id, event, *args)
end
#----------------------------------------------------------------------------
# * Check Each Event for a \z_flat and \z_add flag
#----------------------------------------------------------------------------
def check_flat_sprites(event)
# Initialize
@z_flag = false
@z_add = 0
# Check z_flat and use z_add if necessary
@z_flat = (event.name.clone.sub!(/\\z_flat\[[-]{0,1}(\d+)\]/i) {@z_add = $1.to_i} != nil)
# If z_flat was not defined with optional z
if !@z_flat
# Check default z_flat
@z_flat = (event.name.match(/\\z_flat/i) != nil)
# Check default z_add
event.name.sub(/\\z_add\[[-]{0,1}(\d+)\]/i) {@z_add = $1.to_i}
end
end
#----------------------------------------------------------------------------
# * Sets a sprite to render as Flat by saying its screen_z is 0 by default
#----------------------------------------------------------------------------
def set_flat(new_z = nil)
# Always Render as Flat regardless of size
@z_flat = true
# Set optional Z-Index override
@z_add = new_z if new_z.is_a?(Numeric)
end
#----------------------------------------------------------------------------
# * Sets the Z-Index of an Event via a Script instead of a Name
#----------------------------------------------------------------------------
def set_z(new_z)
# If Error Reporting is On and not a Release Game
if $DEBUG && DISPLAY_DEVELOPER_ERRORS
if !new_z.is_a?(Numeric)
p "Warning! \"#{new_z}\" is not an Number!\n",
"set_flat(int) expects \"int\" to be a Number!\n\n",
"I.E. set_z(32) or set_z(-65)"
return
end
end
# Expects new_z as an Argument. It adds whatever that value is to new number
if new_z != 0
# Manual Adjustment to Z-Index
@z_flat = false
@z_add = new_z
else
# Always Render as Flat regardless of size
set_flat
end
end
#----------------------------------------------------------------------------
# * Resets the Z-Index of an Event via a Script to get Name Properties
#----------------------------------------------------------------------------
def reset_z
check_flat_sprites(@event)
end
#----------------------------------------------------------------------------
# * Clears all Z-Index Related Properties. Will reset when a map is reloaded
#----------------------------------------------------------------------------
def clear_z
@z_flat = false
@z_add = 0
end
#----------------------------------------------------------------------------
# * Redefine screen_z for Flat Sprites
#----------------------------------------------------------------------------
unless self.method_defined?(:flat_sprite_screen_z)
alias :flat_sprite_screen_z :screen_z
end
def screen_z(height = 0)
# Just skip the whole thing if always-on-top is on
return flat_sprite_screen_z(height) if @always_on_top
# If using z_flag or z_add
if @z_flat || @z_add != 0
# Consider the Sprites Size and Adjust for it, check nil for no graphic
height = (height != 0 && height != nil) ? height : 0
end
# If using z_flag or z_add
z = flat_sprite_screen_z(height)
# Add flat correction value if using z_flat
z -= 32 + height if @z_flat
# Add Z-Index adjustment
z += @z_add
# Make sure those Characters stay Visible, < 0 they Disappear!
return (z >= 0 ? z : 0)
end
end
#==============================================================================
# Interpreter
#==============================================================================
# I use this section to let the developer know if they are using the script
# incorrectly, usually by calling a command from the wrong Script Window
# since there are two of them.
#
# Edit Event -> Scripts and Edit Event -> Set Move Route -> Scripts are DIFFERENT!
#==============================================================================
class Interpreter
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def reset_z(*args)
if $DEBUG && DISPLAY_DEVELOPER_ERRORS
p "Please call \"reset_z\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def set_flat(*args)
if $DEBUG && DISPLAY_DEVELOPER_ERRORS
p "Please call \"set_flat\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def set_z(*args)
if $DEBUG and DISPLAY_DEVELOPER_ERRORS
p "Please call \"set_z(#{args})\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
# DEBUG Msg here indicates Mapper needs to call from the right window, however...
def clear_z(*args) #args prevents any args from being used
if $DEBUG and DISPLAY_DEVELOPER_ERRORS
p "Please call \"clear_z\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
end
There are a few things I want you to know before you go ahead and check everything:
1. I have changed only one feature. In the instructions it was mentioned that using z_add would force a sprite to be rendered flat which makes no sense as z_add only is supposed to alter the Z on a specific event while z_flat was supposed to alter the Z automatically in such a way that it appears flat on the floor.
2. Technically it is enough to return a Z of 1 if you want flat sprites. But this is your implementation so I have left the code like in the original.
3. Previously z_flat and z_add were working together in a kind of weird and confusing way. Honestly, I was not exactly able to tell when one overrides the other. I have changed that. They now work independently and they can work together.
4. If you now use \z_flat[Int], it works just like \z_flat with \z_add[Int] together.
5. Your method naming (reset_z, clear_z, set_z) is ambiguous. IMO you should have just added set_z_flat(Bool), set_z_add(Int) and reset_flat_sprites. This is much more congruent with your script as it is exactly clear what parameters are being modified. set_z might be confused with changing some other Z values. Also, set_z is functionally incoherent as the execution depends on the parameters, especially since both z_flat and z_add are being modified in a way that they are mutually exclusive. If you set it to 0, a "completely different" execution path is executed. That's why I suggested set_z_flat and set_z_add since it's exactly clear what they do to someone who doesn't understand the script.
6. You have a note in the instructions that say that event names or events don't copy-paste properly. I have never experienced such a problem in all my years while working in RMXP. Are you 100% that you didn't accidentally mess up something and you actually just didn't copy-paste it right?
7. I have left your developer errors even though I feel they are kind of overkill for such a simple script. The ones at the bottom in Interpreter I can understand, but I don't really see the point of the one in set_z.
8. I would actually remove the optional parameter DISPLAY_DEVELOPER_ERRORS completely and the if-condition with $DEBUG. If somebody's game isn't working right, it would be good that certain error message stay in the release build as well and are displayed to the user if things go haywire. There's nothing worse than somebody reporting a bud without any kind of error message.
9. Other than that I have retained all the functionality in your script. Even though the name is actually inaccurate as this script does not only make sprites flat. "Event Z-Index Controller" or something like that would be a more accurate name for the script. It may not sound as fancy, but it tells you what it does.
Alright, this is all. Once we have solved these issues, I can finalize the script and add it to Tons.
EDIT: @F0: Your script alters the Z in absolute values. Making a sprite flat would require you to simply set its Z to 1, but your script doesn't allow to alter the current Z, e.g. add 32 to an event's Z. Of course, your script could be altered to support that as well. But then it would look almost like Heretic's script since you need one Z value for relative adding and one that would force absolute values. And you still wouldn't be able to combine these two functionalities. In Heretic's script you can do that (or at least in the version I have edited).
I'll do some more cleaning on it and take those things in mind.
One quick thing for F0, in the effort to trim the fat on the racecar, you pulled out the brakes! Some stuff is kind of necessary. One line specifically where it checked < 0, which fixed an issue with an Event Sprite disappearing because ground appears to render at a Z of 0. Rendering Sprites as Flat needs to subtract the height from its normal Z-Index, so they end up being able to go < 0 depending on the size of the sprite. Of course, it was an example, but no biggie.
I am still trying to learn this, so I am also stuck at having bad habits that I dont even know are bad yet, as well as not having a 100% understanding of how the syntax works. Never had any form of formal education in computer related anything, as I've never had a job that was willing to train me. I dont need a job to learn, or need to pay someone money I dont have to read a book to me I can read myself. Im not illegitimate, I know who my parents are! :P What I do need are projects. A goal. Something to accomplish. And I find those when I think something else can be improved. And many a times, I do have a need for a human being to explain something to me that I didnt grasp quite right or didnt know before. So I dont expect anything from anyone, and when I do ask for a bit of help, or advice is offered, I do try to take it and try not to be a burden on someone that offered me their advice.
Got some stuff to do today, so let me work with it when I get a chance and I'll see what I can improve.
I personally didn't feel the need for checking if something is less than 0.
I leave those things to the person making there game to make sure that script calls don't mess up the game. I find it better to simply instruct the user what could happen if they do this and this, but leave the ability there. There are a lot of other scripts out there, and they may for whatever reason have the need for a Z of less than 0. Neither way is in this particular example is incorrect, but you can fill a whole script making sure everyone makes a perfect script call with additional checks and exceptions just in case. I will often times clamp out of range values, but rarely do I make it throw exceptions unless there are a lot of advanced script calls that could be easily confused.
Anyways, good job on your script, I hope to see more! :D Level++
@Heretic: Don't you worry about that. Everything comes with experience. The knowledge that I have now is also the result of a lot of work. I am happy to share my knowledge and experience with others as you can see. :)
As for improving, you don't need to worry about that too much either. As I said, I have basically altered the script to my own maximum capabilities so it works the best I can make it work. You just check on some stuff here and there and tell me if you're fine with the rest of the things that I listed in my previous post and I'll put in the compatibility code for Tons and add it to Tons then. :)
@F0: Neither do I usually use a < 0 check, but in this case it causes a bug if it's not there. The minimum Z for a tile on the tilemap is 0. If you have a sprite with z < 0, it will be behind the tilemap and it will be invisible (except if it is in another viewport obviously). Basically if you put a sprite off the map (e.g. an event at (0, 0) that has a sprite higher than 32 pixels), it will disappear because it will have a negative Z instead of it being flat on the floor.
Thats only if there are tiles. If you wanted something below the tilemap, but above the panorama, the z could be lower.
True.
Actually, I think you have a point Z0.
It could be kind of useful to have an event with a < 0 Z-Index with Panoramas. For example, standing on top of a cliff with a Panorama, and an event sails off into the distance might need a negtive Z-Index. I dont want to try implementing at this
time because Panoramas move differently, and doing it like that may require messing with event movement. Over my head at this point. Might be useful for background birds, but not for Boats without more event movement stuff.
The 0 bug I came across I found happened while the player moved around on a bit larger maps. Events were disappearing as soon as I stepped below them, but reappeared when I walked back to my original position. Again, it could be useful in specific cutscenes with Panoramas.
I think Blizzard has a better idea of just returning 1 for flat sprites, way faster, but again, it takes away control of the stack order, like 2 flat sprites that stack on top of each other would revert to no direct control for the mapper to adjust, and it would be controlled by the Event ID for which ever one got the higher Event ID would be on top. What I wanted to accomplish was to give mappers more control than just surrendering to Event ID order.
In regards to comment #6 bug, got an example. http://www.775.net/~heretic/downloads/rmxp/cat.php (http://www.775.net/~heretic/downloads/rmxp/cat.php) Map #4, Event at 9, 15, cut and paste, name disappears.
Im confused on the names bit. I'll trust your experience if you feel like renaming them to be less confusing to others.
Change Log:
Updated Comments for better explanations.
Pulled out set_z error msg, but left in error msgs in interpreter.
Pulled out developer errors. Errors just display in non Debug games as well.
Changed Title to "Event Z-Index Controller"
Revised Version
# ----------------------------------------------------------------------------
# Event Z-Index Controller by Heretic
# ----------------------------------------------------------------------------
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# - code reviewed, optimized, integrated into Tons of Add-ons, freed from
# potential bugs and beta tested by Blizzard
# - this add-on is part of Tons of Add-ons with full permission of the original
# author(s)
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Flat Sprites allows you to make large sprites look like they are laying flat
# on the ground. All EVENTS cover flat sprites. Non priority tiles will
# appear beneath a Flat Sprite Event.
#
# Added Controls added to allow Mappers more control over Event Z-Index, which
# is useful for Stacking Events or Event Layering. Event ID's used to determine
# which event would render on top of another. The Z-Index controls allow a
# mapper to determine which event will be on top of another without needing to
# fight with Event ID's.
#
# 32: Each Tile in RMXP is 32 pixels tall. If you need to adjust an
# events Z-Index, I recommend trying increments of 32 at first to get you
# closer to your goal. If you need to, you can specify any whole number
# that you wish.
#
# --- EVENT NAME RELATED---
#
# EV001\z_flat
# EV001\z_flat[32]
# EV001\z_add[32]
#
# To make an Event always render as flat, add to its nane "\z_flat".
#
# To make an Event always have an adjusted Z-Index, add to its name "\z_add[Int]".
#
# To make an Event always render as flat, but with an altered Z-Index,
# add to its name "\z_flat[Int]" (this is an equivalent to using \z_flat and
# \z_add[Int] together). Imagine having one graphic that has flat parts and
# other parts that should be standing.
#
# --- SCRIPTED EVENT RELATED ---
#
# To change a Standing Sprite to render as flat, use a Move Route Script
# for that event "set_flat". Useful for when changing graphics of Events.
#
# To specify a higher or lower Z-Index, use the optional parameter:
# such as "set_flat(Int)".
#
# To Reset a Sprite that is flat to stand up use a Move Route Script "reset_z".
# "reset_z" will check the name again for special name related Z-Index commands.
#
# To make a Manual Adjustment to a sprites Z-Index, use set_z(Int)
# and I recommend incrementing the Int by 32 either way.
#
# To clear any special Z-Index Related properties, run a script "clear_z".
#
# NOTE \z_add[0] will NOT be treated as a request for a FLAT SPRITE.
#
# NOTE 2: Special Properties like "\foo" in an Events Name appear
# to NOT COPY AND PASTE CORRECTLY at all times in RMXP Editor
# if you COPY AND PASTE an Event.
#
# This bug is difficult to reproduce. One project this bug occurs all the time
# but other projects it never occurs. Just be aware when moving events.
# ----------------------------------------------------------------------------
#==============================================================================
# Game_Event
#==============================================================================
class Game_Event
#----------------------------------------------------------------------------
# * Redefine initialize for new variables
#----------------------------------------------------------------------------
unless self.method_defined?(:flat_sprite_initialize)
alias :flat_sprite_initialize :initialize
end
def initialize(map_id, event, *args)
@z_flat = false
@z_add = 0
check_flat_sprites(event)
flat_sprite_initialize(map_id, event, *args)
end
#----------------------------------------------------------------------------
# * Check Each Event for a \z_flat and \z_add flag
#----------------------------------------------------------------------------
def check_flat_sprites(event)
# Initialize
@z_flag = false
@z_add = 0
# Check z_flat and use z_add if necessary
@z_flat = (event.name.clone.sub!(/\\z_flat\[[-]{0,1}(\d+)\]/i) {@z_add = $1.to_i} != nil)
# If z_flat was not defined with optional z
if !@z_flat
# Check default z_flat
@z_flat = (event.name.match(/\\z_flat/i) != nil)
# Check default z_add
event.name.sub(/\\z_add\[[-]{0,1}(\d+)\]/i) {@z_add = $1.to_i}
end
end
#----------------------------------------------------------------------------
# * Sets a sprite to render as Flat by saying its screen_z is 0 by default
#----------------------------------------------------------------------------
def set_flat(new_z = nil)
# Always Render as Flat regardless of size
@z_flat = true
# Set optional Z-Index override
@z_add = new_z if new_z.is_a?(Numeric)
end
#----------------------------------------------------------------------------
# * Sets the Z-Index of an Event via a Script instead of a Name
#----------------------------------------------------------------------------
def set_z(new_z)
# Expects new_z as an Argument. It adds whatever that value is to new number
if new_z != 0 and new_z.is_a?(Numeric)
# Manual Adjustment to Z-Index
@z_flat = false
@z_add = new_z
else
# Always Render as Flat regardless of size
set_flat
end
end
#----------------------------------------------------------------------------
# * Resets the Z-Index of an Event via a Script to get Name Properties
#----------------------------------------------------------------------------
def reset_z
check_flat_sprites(@event)
end
#----------------------------------------------------------------------------
# * Clears all Z-Index Related Properties. Will reset when a map is reloaded
#----------------------------------------------------------------------------
def clear_z
@z_flat = false
@z_add = 0
end
#----------------------------------------------------------------------------
# * Redefine screen_z for Flat Sprites
#----------------------------------------------------------------------------
unless self.method_defined?(:flat_sprite_screen_z)
alias :flat_sprite_screen_z :screen_z
end
def screen_z(height = 0)
# Just skip the whole thing if always-on-top is on
return flat_sprite_screen_z(height) if @always_on_top
# If using z_flag or z_add
if @z_flat || @z_add != 0
# Consider the Sprites Size and Adjust for it, check nil for no graphic
height = (height != 0 && height != nil) ? height : 0
end
# If using z_flag or z_add
z = flat_sprite_screen_z(height)
# Add flat correction value if using z_flat
z -= 32 + height if @z_flat
# Add Z-Index adjustment
z += @z_add
# Make sure those Characters stay Visible, < 0 they Disappear!
return (z >= 0 ? z : 0)
end
end
#==============================================================================
# Interpreter
#==============================================================================
# I use this section to let the developer know if they are using the script
# incorrectly, usually by calling a command from the wrong Script Window
# since there are two of them.
#
# Edit Event -> Scripts
# Edit Event -> Set Move Route -> Scripts
# are DIFFERENT! Edit Event -> Scirpts doesnt specify the Event.
#==============================================================================
class Interpreter
# DEBUG Msg here indicates Mapper needs to call from the right window.
def reset_z(*args)
p "Please call \"reset_z\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
# DEBUG Msg here indicates Mapper needs to call from the right window.
def set_flat(*args)
p "Please call \"set_flat\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
# DEBUG Msg here indicates Mapper needs to call from the right window
def set_z(*args)
p "Please call \"set_z(#{args})\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
# DEBUG Msg here indicates Mapper needs to call from the right window
def clear_z(*args) #args prevents any args from being used
p "Please call \"clear_z\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
Off Topic, do you have anything in TONS for Fading Events in and out like a Fog can do? If you dont, would that be another worthwhile addition?
Ok, heres the script for Fade Events, as promised. Separate post to keep topics a bit more organized. If there is already something included in TONS, this is unnecessary.
Fade Events# Heretic's Object Fade v1.0
#
# Super simple to use. Put above Main somewhere.
# Pretty much anywhere between Scene_Debug and Main should be fine
# In the Editor, in Edit Events, go to Set Move Route, and hit Script
# in that window, enter "fade_event(255, 20)" without the quotes
# and adjust 255 for Not Transparent to 0 for Fully Invisible
# the second number is the number of Frames for the Transition
module Fade_Events #(for including in any new or custom classes)
#--------------------------------------------------------------------------
# * Fade Event - (Opacity 0 to 255, Duration in Frames)
#--------------------------------------------------------------------------
def fade_event(arg_opacity_target, arg_opacity_duration)
if arg_opacity_target.nil? or arg_opacity_duration.nil?
print "fade_event(opacity, duration) expects Two Arguments\n"
return
elsif not arg_opacity_target.is_a? Numeric
print "\"", arg_opacity_target, "\" is not an Number!\n",
"Both Arguments should be Numbers!\n\n",
"I.E. fade_event(255,20)"
return
elsif not arg_opacity_duration.is_a? Numeric
print "\"", arg_opacity_duration, "\" is not an Number!\n",
"Both Arguments should be Numbers!\n\n",
"I.E. fade_event(255,20)"
return
elsif arg_opacity_target < 0 or arg_opacity_target > 255
print "\"", arg_opacity_target, "\" Opacity Out of Range\n",
"Valid Range: 0 - 255"
elsif arg_opacity_duration < 0
print "\"", arg_opacity_target, "\" Duration Out of Range\n",
"Valid Range: Any Positive Number or 0"
end
self.opacity_target = arg_opacity_target * 1.0
self.opacity_duration = arg_opacity_duration
if self.opacity_duration == 0
self.opacity = self.opacity_target.clone
end
end
#-----------------------------------------------------------------------------
# * Change Event Opacity
#-----------------------------------------------------------------------------
def change_event_opacity
# Manage change in Event Opacity Level
if @opacity_duration >= 1
d = @opacity_duration
@opacity = (@opacity * (d - 1) + @opacity_target) / d
@opacity_duration -= 1
end
end
end
#==============================================================================
# ** Game_Character
#------------------------------------------------------------------------------
class Game_Character
attr_accessor :opacity_target
attr_accessor :opacity_duration
attr_accessor :original_opacity
unless self.method_defined?('fade_events_initialize')
alias fade_events_initialize initialize
end
def initialize
# Initilaize Original First
fade_events_initialize
# Added Properties
@opacity_target = 255
@opacity_duration = 0
@original_opacity = @opacity
end
# IF the method hasn't been defined yet
unless self.method_defined?('fade_events_update')
alias fade_events_update update
end
# Redefine Updater
def update
# Run Original First
fade_events_update
if @opacity_duration >= 1
# Manages the Events Current Opacity
change_event_opacity
end
end
# Check if the Fade_Event is already Defined (prevents errors)
unless Game_Character.included_modules.include? (Fade_Events)
# Make the functions inside the Module available to this class
include Fade_Events
end
end
class Interpreter
def fade_event(opacity, duration)
print "Please call \"fade_event\" from\n",
"\"Edit Event\" -> \"Set Move Route\" -> Scripts Window\n",
"instead of \n\"Edit Event\" -> Scripts Window"
end
end
IMO this script is not really necessary as you can change the opacity through event commands. It's not like you have events that fade that often.
Portals?
Can still be done with a few event commands. I did it every time in CP.
EDIT: It is done. v7.6 is out.
Cool! Thank you sir!
No biggie on Fading Events. I'll just submit it as a Standalone Script instead.
Sure thing. :)
Would it be possible to make asmall script for commercial use with only these things(as i cant script very well,)
(and i found multiple scripts that work like most under here, just a small problem that most dont work togheter nad have a very low Compatibility with teh other scripts)
Location Names (shows pictures or names of the location the player visits)
Death Image (displays an image instead of nothing for dead actors)
Target 'em all! (make skills target all battlers)
Passive Skills (modify attributes when learned)
Different Difficulties (like "Easy", "Normal", "Hard")
Multi-Hit (make weapons/skills/enemies hit more than once)
HP/SP Crush (weapons consume HP/SP when attacking)
Percentage Health States (states added/removed on specific HP percentages)
Zombie Status (Healing items will hurt and light attacks are effective)
Regen Status (progressive healing aka poison, but the other way)
Fury Status (if a specific character dies, another one will become Fury)
Invincible Status (this status will nullify ANY DAMAGE done by enemies)
SP Cost Mod Status (this status will change SP cost to percentages or fixed values)
Doom Status (countdown to death)
Absorb HP/SP Skill (with considering undead enemies)
Demi Skill (deals damage equal to a percentage of the remaining HP)
Revenge Skill (does damage equal to MAX_HP - CURRENT_HP)
Destructor Skill (kills self to achieve various effects)
SP Damage Skill (skills that damage / heal SP instead of HP)
Charge Skill (skills that count down before usage)
Master Thief Skill (steals weapon, armors, items and gold from enemies)
HP Consuming Skill (consumes HP upon usage)
There's one for Sub's sig...
So I am looking for some help with the Caterpillar script portion of TONS,basically I am trying to increase the spacing between the party members.I have tried messing with it but I am unable to get any results.If anyone knows what I should be editing to go about please let me know.
@ruiran1: Send me an email at blizzard@chaos-project.com with a request to use Tons in a commercial game and I will give you permission. It's no problem.
Hey, um, real quick, F12 Reset is causing stack level too deep on script 2 line 1291...
Quote from: Blizzard on December 03, 2009, 03:04:51 pm
Normal F12 crash. Just get the F12 fix. It's something Enterbrain messed up with RMXP and it can't be fixed.
The general problem with F12 is that instead of resetting the entire application, the scripts stay untouched. If you have used an alias anywhere, RMXP will do the alias again and on first occasion where the aliased method should be called, the crash happens.
Use this:
Quote from: Ryex on February 06, 2010, 09:10:43 pm
this is the classic F12 error known to almost every scripter. the fix is simple
create a new script at the top of the editor and paste this code into it
#==============================================================================
# F12 fix
#==============================================================================
if $game_exists
Thread.new {system('Game')}
exit
end
$game_exists = true
Change "Game" to if you renamed "Game.exe".
EDIT: I have uploaded v7.61b with an improved Input module.
Bug report:
Custom Game Controls
"Number pad 0"doesn't work as input::B
but "Insert" does
Turn on/off NUM-LOCK. If I remember right, turning on NUM-LOCK should make 0 be used instead of Insert.
"Number pad 0" works when NUM LOCK is on
But "Insert" works no matter NUM LOCK is on or off
That's expected behavior. Numberpad keys usually don't work as number unless you turn on NUM-LOCK.
Also, on some keyboards "Numberpad 0" should work as "Insert" if NUM-LOCK is off.
I am still confused.
My question is : I cannot turn on the menu when the NUM LOCK light is ON.
When NUM-LOCK is on and you press "Numberpad 0", it will give you the "0" character.
When NUM-LOCK is off and you press "Numberpad 0", it will give you the "Insert" character.
So you are saying that you cannot turn it on with NUM-LOCK on which makes sense, because it's been turned into the "0" character and it's not really "Numberpad 0" anymore.
NUM-LOCK is quite confusing so you should probably avoid using Numberpad keys.
I'm getting an error with the Master Thief skill.
"Script 'Tons of Addons part 3' line 2144 no method error occurred.
undefined method `size' for nil:NilClass"
2144 should be at the part that says "return nil if @loot.size == 0"
Also, I set the part under items to be like this under the item loot database just to let you know that I'm doing it with items. Also, I'm using Blizz ABS 2.84.
"when 3 then return [[10, 3, 50]]"
Make sure you're not using an old save file. That's the only thing that comes to my mind right off the bat.
Not on a save file at all, totally new game with no saves.
For some reason it wouldn't do what it should bust instead I get this error.
Are you using any other scripts? Only thing I can think of is somewhere below ToA, you have a script that does not alias the initialize method of Game_Enemy.
Only scripts below Tons of Addons is Blizz ABS and Main.
Called it. \(O 3o)/
Quote from: Blizz ABS User ManualMaster Thief Skill
Compatible: No.
Tested: No.
Notes: The system is mainly incompatible because of the handling in the battle scene where the actual change in the inventory happens.
I really need help finding the line to edit in the Caterpillar script part in Tons
I have been trying on and off for a good bit now and still fail.(I have no idea on what to change)
Here is an example as to why I need to edit the spacing a bit if it helps show my problem.
(http://i59.photobucket.com/albums/g281/Spoofus/SHOWFORCATAPILLAREDIT.png)
it looks as if the Player and Arcanine have been Joined at the head in it.
I think there are other caterpillar scripts that already have the option to space sprites out. If you search around a bit you might find one.
I have looked at many other Caterpillar scripts and I have not found a way to increase the spacing between actor sprites in any of them.
some of them seem to use almost the same coding with each other, and I have tried to mess with anything I could think of that would increase the spacing, and fail at every attempt.
There's a big difference between wanting to increase the distance between members and preventing sprite overlap amongst the members. The latter is practically impossible in a 2D environment.
So... what is the specific request?
I am wanting to increase the distance between the members. ( i just now realized i did not mention that in the other post :facepalm: )
the screenshot was to show that I was needing help on increasing the spacing/distance between the party members,it wasn't meant for the overlapping,I have no problem with that.
I try edit in class class Game_Member < Game_Character
maybe this is a silly way, and a lot of glitch.
def update
refresh
@transparent = $game_player.transparent
@move_speed = $game_player.move_speed
unless moving? || @buffer.size <= @index && @force_movement <= 0
if @buffer.size > 0
move = @buffer.shift
if move.is_a?(Array)
jump(move[0], move[1])
else
pluz = @character_name == '010-Lancer02' ? @index*1.5 : nil
gp_d, xxx, yyy = $game_player.direction, $game_player.x, $game_player.y
return if !pluz.nil? &&
(gp_d == 4 && direction == 6 && @x - pluz <= xxx ||
gp_d == 6 && direction == 4 && @x + pluz >= xxx ||
gp_d == 2 && direction == 8 && @y + pluz >= yyy ||
gp_d == 8 && direction == 2 && @y - pluz <= yyy)
case move
when 1 then move_lower_left
when 2 then move_down(true)
when 3 then move_lower_right
when 4 then move_left(true)
when 6 then move_right(true)
when 7 then move_upper_left
when 8 then move_up(true)
when 9 then move_upper_right
end
if !pluz.nil?
@x = xxx + (direction == 4 ? pluz : direction == 6 ? -pluz : 0)
@y = yyy + (direction == 8 ? pluz : direction == 2 ? -pluz : 0)
@y, @x = @y - 1, @x + pluz if gp_d == 2 && direction == 6
@y, @x = @y - 1, @x - pluz if gp_d == 2 && direction == 4
@y, @x = @y + 1, @x + pluz if gp_d == 8 && direction == 6
@y, @x = @y + 1, @x - pluz if gp_d == 8 && direction == 4
@y, @x = @y - pluz, @x + 1 if gp_d == 4 && direction == 8
@y, @x = @y + pluz, @x + 1 if gp_d == 4 && direction == 2
@y, @x = @y - pluz, @x - 1 if gp_d == 6 && direction == 8
@y, @x = @y + pluz, @x - 1 if gp_d == 6 && direction == 2
end
end
@force_movement -= 1 if @force_movement > 0
end
end
super
@step_anime = (ANIMATED_IDS.include?($game_party.actors[@index].id))
end
but it's work :^_^':
just setting at
pluz = @character_name == '010-Lancer02' ? @index*1.5 : nil
replace character name
Thanks to that ^^^ I figured out that @index plays a huge roll in this.
If you want all your characters to be 1 character space apart, locate this line under
def update in
Game_Member:
unless moving? || @buffer.size <= @index && @force_movement <= 0
Just multiply @index by 2 like so:
unless moving? || @buffer.size <= @index*2 && @force_movement <= 0
Yes I do believe that works out just perfect for me.as I have tested it and it is exactly what i was wanting.
I honestly never would of thought that index was the part that needed edited, I tried every thing involving the x,y stuff.
anyway I could kiss you both, who wants the first one.
@KK20 : wow.. you're awesome. :D
@Spoofus : (http://r17.imgfast.net/users/1712/29/57/59/smiles/906951.gif)
kiss yourself.
Can someone help with the master steal skill script i saw there was someone who posted something about there being an error when using this addon with the abs system but i dont get that error mine allows me to use my skill but does nothing when it is used. it wont let me steal anything. some one please help me.
Quote from: KK20 on September 02, 2012, 01:15:13 am
Quote from: Blizz ABS User ManualMaster Thief Skill
Compatible: No.
Tested: No.
Notes: The system is mainly incompatible because of the handling in the battle scene where the actual change in the inventory happens.
If you want these to be compatible, it will require an edit.
Yes i knew it wasnt compatible. What i meant was that id like help to make it compatible. I only started learning how to script recently so im prretty clueless i meant i figure the script needs to change the class where you can steal in a battle from an enemy to where you can steal from an enemy based on \e[1] <- that method but i dont know how to do it. :(
So I've been thinking about ANIBATTLERS_NON_ACTION_BS in Tons of Addons 1 a bit. Is it possible to edit the script a bit so that you can define an enemy ID to have a different animation speed? Instead of everyone having the same frame speed you can actually adjust the animation speed for specific enemies that has a lot of animation frames.
Being snowed in gives you a lot of free time. xD Here ya go Mark. Find the add-on in the original part 1 and replace it with this.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Animated Battlers for Non-Action BS by Blizzard
# Version: 1.3b
# Type: Battle Graphic Improvement
# Date: 5.5.2007
# Date v1.3b: 13.8.2007
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# new in v1.3b:
# - fixed the flicking glitch that appeared when a battler was dying
# - improved coding, now executed over Sprite_Battler instead of
# Spriteset_Battle and due to that increased compatibility and shorter code
#
#
# Compatibility:
#
# 95% compatible with SDK v1.x. 70% compatible with SDK v2.x. Not compatible
# exotic action CBS-es that need special battler animation.
#
#
# Explanation:
#
# This will animate battlers in the default battle system. To animate them,
# you MUST HAVE the appropriate picture files. You can name them however you
# like, but you need to give them numbers. Every other frame than the first
# has to have a number higher than the one before. If one number is skipped,
# the animation will loop until it reaches the highest number available
# before the skipped number. Not that this works for actors AND for enemies.
#
# Examples:
#
# 1)
# Arshes.png
# Arshes1.png
# Arshes2.png
# Arshes3.png
# - all frames will be shown
#
# 2)
# Arshes.png
# Arshes1.png
# Arshes3.png
# Arshes4.png
# - only the 1st and 2nd frame will be shown
#
# 3)
# Arshes.png
# Arshes3.png
# Arshes4.png
# Arshes5.png
# - no animation at all
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# how many REAL frames that should be skipped before updating the battlers,
# note that using anything below 2 is not recommended and that using low values
# can increase lag dramatically
B_SPEED = 4
# Now you can define speeds for each individual actor/enemy!
A_SPEEDS = {
1 => 6,
# actor_id => speed,
}
E_SPEEDS = {
1 => 8,
2 => 10,
# enemy_id => speed,
}
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Game_Battler
#==============================================================================
class Game_Battler
attr_accessor :frame
attr_accessor :max_frame
attr_accessor :origin_name
attr_accessor :battler_name
def get_speed
speed = self.is_a?(Game_Enemy) ? E_SPEEDS[self.id] : A_SPEEDS[self.id]
return speed == nil ? B_SPEED : speed
end
end
#==============================================================================
# Sprite_Battler
#==============================================================================
class Sprite_Battler
alias upd_animated_battlers_dbs_later update
def update
if $game_system.ANIBATTLERS_NON_ACTION_BS && @battler != nil
setup_battler if @battler.origin_name != @battler.battler_name
if Graphics.frame_count % @battler.get_speed == 0
@battler.frame = (@battler.frame + 1) % @battler.max_frame
end
if @frame != @battler.frame
@frame = @battler.frame
name = @battler.origin_name
name += @frame.to_s if @frame > 0
self.bitmap = RPG::Cache.battler(name, @battler.battler_hue)
@width = bitmap.width
@height = bitmap.height
self.ox = @width / 2
self.oy = @height
end
end
upd_animated_battlers_dbs_later
end
def setup_battler
@battler.origin_name = @battler.battler_name
@battler.frame = @frame = 0
@battler.max_frame = 1
loop do
name = @battler.origin_name + @battler.max_frame.to_s
if FileTest.exist?("Graphics/Battlers/#{name}.jpg") ||
FileTest.exist?("Graphics/Battlers/#{name}.png")
@battler.max_frame += 1
else
break
end
end
end
def setup_battleback
@battler.origin_name = @battler.battler_name
@battler.frame, @frame, @battler.max_frame = 0, 0, 1
name = @battler.origin_name + @battler.max_frame.to_s
while FileTest.exist?("Graphics/Battlers/#{name}.jpg") ||
FileTest.exist?("Graphics/Battlers/#{name}.png")
@battler.max_frame += 1
name = @battler.origin_name + @battler.max_frame.to_s
end
end
end
Tested and working! Thanks man, you rock! :haha:
Hey just a quick question.
I want to use these states, but how to I determine which state is going to have this effect?
I'm trying to look for how to configure it but all I can find it setting it as true or falls.
is it already set up for a certain State ID? or do I need to set it up somehow?
Quote from: Shalaren on July 28, 2013, 10:47:08 am
Hey just a quick question.
I want to use these states, but how to I determine which state is going to have this effect?
I'm trying to look for how to configure it but all I can find it setting it as true or falls.
is it already set up for a certain State ID? or do I need to set it up somehow?
Each add-on has its own configuration. After turning it to true on the top, scroll down to the actual code for that add-on, and you'll see an additional configuration section where you can set up which states have this effect, and so on. :)
I've been trying to utilize these add-ons, but whenever I go to an old game, it pops up with an error and crashes, or whenever I press F12, so that it instantly goes back to the main menu, it pops up with an error and crashes.
Why is this happening?
Quote from: Blizzard on January 09, 2008, 08:50:47 am
Compatibility
90% compatible with SDK v1.x. 80% compatible with SDK v2.x. Some add-ons will corrupt your old savegames. If you experience the "Stack level too deep" error, you might already use one of these add-ons. All of these add-ons here work with each other with a success rate of 99%. This add-on collection itself WILL corrupt your old savegames.
EDIT: TO fix the F12 thing, put this above all your other scripts:
if $game_exists
Thread.new {system('Game')}
exit
end
$game_exists = true
This script has to stay the topmost script, no matter what.
The crash happens because of a problem in RMXP when using aliasing of already existing methods to improve compatibility between scripts.
but it's only in old loaded games that this happens. If I start a new game, all of the add-ons are there.
Quote from: Blizzard on September 24, 2013, 11:07:08 am
This add-on collection itself WILL corrupt your old savegames.
I don't know how we can make this any clearer. The reason is due to a variable not being initialized when called upon. Starting a new game will initialize the variable and the game knows it exists. Loading an old game SKIPS this initializing process and the game DOESN'T know the variable exists.
In short, if you wish to use Tons, you will have to delete your 'old loaded games'.
I'm making this game for a friend though, and he's already done so much in the game, and I thought there might be a way to have it able to work without him starting all over again.
There technically is, but it would require too much editing of all the scripts.
you can try to dismantle it if you're only using specific add-on
So could I, for example, take out one utilization of the script, like HUD, and come into contact with no problems?
I tried it with the map names and I just wrote "when x then name = nil" where x -> (1,300) so that it would display all my map's names every time you would walk into them, but it had an error.
try this edited version
_http://pastebin.com/NbPUT512
_http://pastebin.com/aUF3zSJN
_http://pastebin.com/wLHtjCZx
Thank you for helping me, but when I try to run, it says "Script ' ' line 2887: NoMethodError occurred. Undefined method 'each' for nil:NilClass
try redownload the script (all of them)
edit : it seems I have a trouble with my connection, the script got cut out
*fixed*
I get "Script ' ' line 2608: TypeError occurred. No implicit conversion from nil to integer."
what script did you use, can you pm me the script.rxdata?
I used all 3, but when I don't even touch any of them, it automatically redirects me to that line in the 1st script.
I actually feel like this is probably an obvious answer, but I'm trying to use the fullscreen script. I have it enabled, and I don't see any configuration options that make much sense. It doesn't ask if you want to play in full screen, so, I'm obviously doing something wrong :P help?
There is no configuration required for that. From what I can guess, you might have a script below Tons that rewrites Scene_Title rather than aliases it.
Nope. TOA is the bottommost script I'm using currently..
Screenshot: http://www.tiikoni.com/tis/view/?id=e9d3b8a in case something doesn't look right to you? I use minimal scripts right now.
You wouldn't happen to be playtesting, would you?
if TONS_OF_ADDONS::FULLSCREEN && !$DEBUG #<=== That guy.
Quote from: firevenge007 on September 25, 2013, 02:55:00 am
I used all 3, but when I don't even touch any of them, it automatically redirects me to that line in the 1st script.
try redownload the script again
Quote from: Blizzard on September 24, 2013, 11:07:08 am
Quote from: Blizzard on January 09, 2008, 08:50:47 am
Compatibility
90% compatible with SDK v1.x. 80% compatible with SDK v2.x. Some add-ons will corrupt your old savegames. If you experience the "Stack level too deep" error, you might already use one of these add-ons. All of these add-ons here work with each other with a success rate of 99%. This add-on collection itself WILL corrupt your old savegames.
EDIT: TO fix the F12 thing, put this above all your other scripts:
if $game_exists
Thread.new {system('Game')}
exit
end
$game_exists = true
This script has to stay the topmost script, no matter what.
The crash happens because of a problem in RMXP when using aliasing of already existing methods to improve compatibility between scripts.
I tried doing that, but it just keeps opening new windows for the game every second
No, I tried it in both playtest, and, in installed mode.
Quote from: firevenge007 on September 26, 2013, 02:20:31 pm
I tried doing that, but it just keeps opening new windows for the game every second
this will solve your problem
http://forum.chaos-project.com/index.php/topic,3613.0.html
Quote from: DigitalSoul on September 26, 2013, 09:19:35 pm
No, I tried it in both playtest, and, in installed mode.
probably somewhere in your custom script(s), exist something like
$DEBUG = true
Quote from: LiTTleDRAgo on September 26, 2013, 09:36:07 pm
probably somewhere in your custom script(s), exist something like $DEBUG = true
And if not that, it's either you have
$game_started = true somewhere or you never activated the script in the first place (lol--please don't be that)
Quote from: LiTTleDRAgo on September 26, 2013, 09:36:07 pm
Quote from: firevenge007 on September 26, 2013, 02:20:31 pm
I tried doing that, but it just keeps opening new windows for the game every second
this will solve your problem
http://forum.chaos-project.com/index.php/topic,3613.0.html
Quote from: DigitalSoul on September 26, 2013, 09:19:35 pm
No, I tried it in both playtest, and, in installed mode.
probably somewhere in your custom script(s), exist something like $DEBUG = true
All this seems to do to me is pause the game.
Yeah, setting $DEBUG to true in release mode will freeze the game so don't do that.
Quote from: firevenge007 on September 27, 2013, 12:06:54 am
All this seems to do to me is pause the game.
yeah, there aren't any solution that can fix f12 bug right now,
so, you should just disable it, problem solved
Greeting and salutations. I'm currently using a standalone version of Blizzard's Multi hit script. For some odd reason it stopped working when I tested it today. There's the script:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Multi-Hit by Blizzard
# Version: 1.51b
# Type: Weapon/Skill/Enemy Enhancement
# Date: 12.8.2007
# Date 1.3b: 23.2.2008
# Date 1.4b: 23.7.2008
# Date 1.5b: 19.10.2008
# Date 1.51b: 6.10.2009
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Compatibility:
#
# 95% compatible with SDK 1.x. 70% compatible with SDK 2.x. Might be
# incompatible with exotic skills and/or CBS-es. Compatible with CRLS 5.1b or
# higher.
#
#
# Explanation:
#
# This add-on will allow that skills, weapons and enemies attack more than
# once.
#
# new in v1.3b:
# - now you can define weapons/skills/enemies which's other attacks will
# target a random target instead of the originally chosen target
# - now beta
#
# new in v1.4b:
# - better compatibility with SP Cost Mod
# - improved coding
#
# new in v1.5b:
# - added Multi-Hit items
#
#
# Configuration:
#
# Set up the following constants to configure the script:
#
# WEAPON_RANDOM - add any weapon IDs here and separate them with commas to
# make those specific weapons attack another random target
# for each other hit than the first
# SKILL_RANDOM - add any skill IDs here and separate them with commas to
# make those specific skills attack another random target
# for each other hit than the first
# ITEM_RANDOM - add any item IDs here and separate them with commas to
# make those specific items attack another random target
# for each other hit than the first
# ENEMY_RANDOM - add any enemy IDs here and separate them with commas to
# make those specific enemies attack another random target
# for each other hit than the first
#
# Further there are 4 configurations. Configuration 1 is for weapons,
# Configuration 2 is for skills, Configuration 3 is for items and
# Configuration 3 is for normal enemy attacks. Use following template to set
# up how many hits should be done:
#
# when ID then return HITS
#
# ID - ID of weapon, skill, item or enemy, depending on the configuration
# number
# HITS - number of hits
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#==============================================================================
# module BlizzCFG
#==============================================================================
module BlizzCFG
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Basic Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
WEAPON_RANDOM = [1, 2]
SKILL_RANDOM = [89, 98, 127]
ITEM_RANDOM = [12]
ENEMY_RANDOM = []
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Basic Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
def self.weapon_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 3
when 2 then return 4
when 3 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 1
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.skill_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 89 then return 2
when 98 then return 2
when 127 then return 3
when 132 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.item_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 3
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
def self.enemy_hits(id)
case id
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration 4
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
when 1 then return 2
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration 4
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end
return 1
end
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias update_phase4_step1_multi_hit_later update_phase4_step1
def update_phase4_step1(battler = nil)
if battler != nil
update_phase4_step1_multi_hit_later(battler)
return
end
update_phase4_step1_multi_hit_later
@repeat = [1, 1, 0]
return unless @active_battler != nil
if @active_battler.current_action.kind == 0
if @active_battler.current_action.basic == 0
if @active_battler.is_a?(Game_Actor)
hits = BlizzCFG.weapon_hits(@active_battler.weapon_id)
elsif @active_battler.is_a?(Game_Enemy)
hits = BlizzCFG.enemy_hits(@active_battler.id)
end
@repeat = [hits, hits, 2]
end
elsif @active_battler.current_action.kind == 1
@repeat[2] = 3
elsif @active_battler.current_action.kind == 2
@repeat[2] = 4
end
end
alias update_phase4_step2_multi_hit_later update_phase4_step2
def update_phase4_step2(battler = nil)
if battler != nil
update_phase4_step2_multi_hit_later(battler)
return
end
update_phase4_step2_multi_hit_later
if @phase4_step != 1
if @repeat[2] == 3
hits = BlizzCFG.skill_hits(@skill.id)
@repeat = [hits, hits+1, 4]
elsif @repeat[2] == 4
hits = BlizzCFG.item_hits(@item.id)
@repeat = [hits, hits+1, 4]
end
end
end
alias update_phase4_step5_multi_hit_later update_phase4_step5
def update_phase4_step5(battler = nil)
if battler != nil
update_phase4_step5_multi_hit_later(battler)
return
end
update_phase4_step5_multi_hit_later
if @active_battler.current_action.kind == 1
if BlizzCFG::SKILL_RANDOM.include?(@skill.id)
if @active_battler.is_a?(Game_Actor)
@active_battler.current_action.decide_random_target_for_actor
elsif @active_battler.is_a?(Game_Enemy)
@active_battler.current_action.decide_random_target_for_enemy
end
end
elsif @active_battler.current_action.kind == 2
if BlizzCFG::ITEM_RANDOM.include?(@item.id)
if @active_battler.is_a?(Game_Actor)
@active_battler.current_action.decide_random_target_for_actor
elsif @active_battler.is_a?(Game_Enemy)
@active_battler.current_action.decide_random_target_for_enemy
end
end
elsif @active_battler.is_a?(Game_Actor)
if BlizzCFG::WEAPON_RANDOM.include?(@active_battler.weapon_id)
@active_battler.current_action.decide_random_target_for_actor
end
elsif @active_battler.is_a?(Game_Enemy)
if BlizzCFG::ENEMY_RANDOM.include?(@active_battler.id)
@active_battler.current_action.decide_random_target_for_enemy
end
end
@phase4_step = 2 if @repeat[0] > 1 && @repeat[2] > 0
@repeat[0] -= 1
end
alias make_skill_action_result_multi_hit_later make_skill_action_result
def make_skill_action_result(battler = nil, plus_id = nil)
if battler != nil
if plus_id != nil
make_skill_action_result_multi_hit_later(battler, plus_id)
else
make_skill_action_result_multi_hit_later(battler)
end
return
end
make_skill_action_result_multi_hit_later
@help_window.visible = false if (@repeat[1] - @repeat[0]) > 1 #<======================================= Add this here
if @repeat[2] > 3
sp_cost = @skill.sp_cost
#----- you can remove these 3 lines if you want----
#--------------------------------------------------
@active_battler.sp += sp_cost
@status_window.refresh
end
end
end
Skill 127 only hits twice rather than 3 times ands skill 132 only hit once as opposed to twice. What could possibly be causing the problem?
I guess no one likes to use Multi-Hit all that much; it's not working correctly on my end. Even tested it with all the TONS scripts. Testing all the configuration options and it's all wonky. Items are being used repetitively until zero are left, skills hitting either twice or until all enemies are dead...
... I should've asked for a brand new script.
Thanks to your reports, you have now brought attention to a script that really deserves fixing.
I can probably take a stab at it some time this weekend.
Glad to know that at least something good will most likely come out of this whole mess.
How do I configure the blue magic via skill? I don't know how to script :^_^':
Open up your Database and look at your Skills tab. Make a skill called "Blue Magic: Learn" or something like that. Make it target one or all enemies, do zero damage, and adjust its hit rate (i.e. success rate of learning). Memorize the skill ID.
Then go into your Scripts. Find this line in Part 3 of TONS.
BLUE_MAGIC_IDS = [92] # add any Skill IDs and separate them with commas
Change the 92 to whatever the skill ID of your "Learn" skill is. For example, Heal's skill ID is 1. Cross Cut's skill ID is 57. Don't put any leading zeroes (even though it says in the skill database
001, just put
1).
Im getting a error when using the Arrow Over Player add. popup msg says:
Script 'Tons_of_adds_1' line 3218 NoMethodErro occurred. undefined method'>' for nil:NilClass.
Make sure you are bot using old save games.
Issue here is i dont have any savefiles. its just during testplay. Nor does it occur on evry tile i walk over but it does keep reoccuring on the same tiles over and over again.
Could it be an issue that some parts of my maps are literal copys of other parts?
Then make sure to check this topic: http://forum.chaos-project.com/index.php/topic,23.0.html
Hello, my apologies for posting on this old thread but my request seems relevant here. I was wondering if I could get a separated version of your animated battle background script since this is the only one I need. I've looked online for a separated script but I've had no luck since RPG Maker XP isn't as big as it used to be.
You can easily use the whole script. It won't change anything in your game if you don't explicitly activate it. So activate only the animated battle background script.
I tried that but even with everything set to false, my eight direction walking script gives off an error. It doesn't do it without your scripts though.
Have you made sure the order is fine? http://forum.chaos-project.com/index.php/topic,23.0.html
Yes, it is all in order and it is strange because there are currently no addons activated right now. BTW, it isn't just a walking script also also allows you to use eight frames in a character animation. The line that is returning the error is this...
and the error is this...
(http://i.imgur.com/GKcXo5z.png)
I'd like to know whether it is your scripts or the walking script that is causing these errors. I find it peculiar that it only does it while your scripts are inserted even though everything is turned off.
What's the walking script?
Hero and Event Frame Script 1.1 by The Sleeping Leonhart
If you're not using the caterpillar script in Tons, then this will suffice. Just change the if-statement to this (line 38):
if @character.is_a?(Game_Event) || @character.is_a?(Game_Member)
I guess both scripts are to blame. Tons initializes Game_Member objects (related to caterpillar script) which creates Sprite_Character objects as well, regardless if Caterpillar is being used or not. The frames script only checks if the Sprite_Character is attached to a Game_Event or a Game_Player--it really should have a "if not either, then use a default value" or something to make it more compatible with exotic scripts.
Ah, thank-you! It worked perfectly, I may post my topic when I have enough to post about.
My apologies for the double post but Wachunga's Multiple Message Windows script is now saying this...
(http://i.imgur.com/GmKTs5q.png)
This line of code is giving the error and it is because of the tons of addons scripts.
Where'd you get your script from? The one here in the Script Database (http://forum.chaos-project.com/index.php/topic,5907.0.html) appears to work fine using the demo.
I'm using the same one, but it isn't a problem with the script. I think it is a compatibility issue with the tons of add-ons as it starts working as soon as I take the scripts out...
Could you be more specific as to what you're doing to cause the detection. Like I said, I downloaded the demo, put all three Tons above the script (nothing turned on), and was able to talk to a few events just fine.
Oh, yeah... It's whenever I get it to display text.
Well that doesn't really help me considering I was able to do that. Clearly you're leaving something out. Upload a demo or your Scripts.rxdata.
I can't do that as I've been given permission to use the scripts of somebody that doesn't want them to be used. I may have to figure it out on my own if that's the case. If it helps, here are some scripts I'm calling the the events...
(http://i.imgur.com/o1yuvqZ.png)
Sorry for being so vague, I've been busy with college and haven't had time to give a full detailed response.
Here, I'll just separate the Animated Backgrounds already.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Animated Battle Background by Blizzard
# Version: 1.1b
# Type: Game Graphic Design Improvement
# Date: 12.3.2007
# Date v1.1b: 12.8.2007
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# new in v1.1b:
# - shorter code, increased performance and increased compatiblity
#
#
# Explanation:
#
# This will animate battle backgrounds. To animate them, you MUST HAVE the
# appropriate picture files. You can name them however you like, but you need
# to give them numbers. Every other frame than the first has to have a number
# higher than the one before. If one number is skipped, the animation will
# loop until it reaches the highest number available before the skipped
# number.
#
# Examples:
#
# 1)
# Temple.png
# Temple1.png
# Temple2.png
# Temple3.png
# - all frames will be shown
#
# 2)
# Temple.png
# Temple1.png
# Temple3.png
# Temple4.png
# - only the 1st and 2nd frame will be shown
#
# 3)
# Temple.png
# Temple3.png
# Temple4.png
# Temple5.png
# - no animation at all
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#==============================================================================
# Spriteset_Battle
#==============================================================================
class Spriteset_Battle
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# how many REAL frames that should be skipped before updating the background,
# note that using anything below 8 is not recommended and that using low values
# can increase lag dramatically
SPEED = 8
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
alias init_animated_battle_background_later initialize
def initialize
setup_battleback
init_animated_battle_background_later
end
alias upd_animated_battle_background_later update
def update
setup_battleback if @origin_name != $game_temp.battleback_name
@frame = (@frame + 1) % @max_frame if Graphics.frame_count % SPEED == 0
$game_temp.battleback_name = @origin_name + (@frame > 0 ? @frame.to_s : '')
upd_animated_battle_background_later
$game_temp.battleback_name = @origin_name
end
def setup_battleback
@origin_name = $game_temp.battleback_name
@frame, @max_frame = 0, 1
name = @origin_name + @max_frame.to_s
while FileTest.exist?("Graphics/Battlebacks/#{name}.jpg") ||
FileTest.exist?("Graphics/Battlebacks/#{name}.png")
@max_frame += 1
name = @origin_name + @max_frame.to_s
end
end
end
Not sure which topic to post this in so apologies if it's in the wrong place. But there's an error when used with the Downward Ice sliding script (http://forum.chaos-project.com/index.php/topic,14996.0.html).
The game crashes upon loading a new game with the following error:
QuoteScript "Downward ice Sliding" line 677:NoMethodError occured.
undefined method '[]' for nil:NilClass
This occurs in a fresh project with only those two scripts (Tons + both required ice scripts). There are no changes made to either or any script activated with tons of addons. Altering the order of the scripts makes no difference.
I am experiencing a quirky quirk with the Regen Status bit.
When a character is recovering both HP and SP at the same time, it heals the right amount, and everything is fine and dandy... except that it displays oddly. It adds the amount of HP and SP recovered together, and displays it as a single number.
I am not the best at scripts, so I've been struggling to figure out how to fix this, but I figured I ought to report it, either way.
This is because in RMXP only one damage text can be displayed at the time. There isn't really a way around this except changing some of the fundamentals on how damage is handled and displayed.
How difficult would it be to cancel the normal output and just do it manually? The only alternative I can think of is to just not display the SP healing at all.
Part 3 of the script, lines 370 and 371:
self.damage = 0 if self.damage == nil
self.damage += dam
Just change them to:
#self.damage = 0 if self.damage == nil
#self.damage += dam
You could also change them to this:
if self.damage == nil
self.damage = 0 if self.damage == nil
self.damage += dam
end
This would show the SP gain only if there was no HP gain at the same time.
Yeah, I've just commented out that bit, for now. While not ideal, it works in the game I'm working on right now, because everyone just constantly heals SP, every turn, so displaying the HP Regen is more important.
Thanks for the help!
Hey, so... it's me again, with another query.
How would I go about using the Custom Controls, but disabling just the movement part? I'd prefer just using the default movement, where pressing a new directional key overrides the old key, rather than having certain directions have priority over others.
Alternatively, making the movement work like that, but with custom controls, would be ideal... but I imagine that'd be way more work.
Thanks for the awesome scripts, anyway! :clap:
It's not that simple. Instead of checking each button, the directional values would have to be checked separately and override the "current direction" each time. This will also cause problems with 8-directional movement and there's most likely no way to make it work properly.
Yeah. I figured it'd be difficult.
Is there a not-too-intense way to just disable the movement part of the Custom Controls and have the default stuff handle it? I haven't actually changed that part of the controls, anyway.
I first tried just commenting out the dir4 section, but that just disabled all movement. I then went about searching the default scripts, looking for where this happens normally. I figured maybe I'd just copy it over to the TONS script, but I've yet to find it.
1. Comment out dir4.
2. Add a module alias for update before self.update.
3. Call the aliased update method within self.update.
That might do the trick. I can't remember from the top of my head how to alias a module method, but Zeriab did it in his F12 fix so just dig it up.
How to do #2 and 3:
class << self
alias call_orig_update update
end
def self.update
#...CODE IS HERE...
call_orig_update
end
The reason you can't find it in the original scripts is because module Input is hidden within the RGSS file. There are many classes like this that are hidden such as Window, Tilemap, Sprite, Bitmap, Plane, Viewport, Graphics...
Yeah, that's how you do it.
Rad. That totally works. Thanks!
Good day to all,
Animated Title from this collection crushed my game, when I try to on full screen. What could be the problem? Thanks in advance.
Error contains: "Script Part 1 line 488: System StackError occurred. stack level too deep"
Firstly this: http://forum.chaos-project.com/index.php/topic,23.0.html
Secondly make sure you don't have any duplicate scripts.
Quote from: Blizzard on January 28, 2017, 02:14:47 pm
Firstly this: http://forum.chaos-project.com/index.php/topic,23.0.html
Secondly make sure you don't have any duplicate scripts.
But I have only three parts of "Tons of Add-ons" above "Main" script and that's all.
Brand new empty project.
Line 488 on Tons of Add-ons is a comment line. Clearly you did some editing to the scripts.
Can you provide the scripts.rxdata file?
Quote from: KK20 on January 28, 2017, 02:54:05 pm
Line 488 on Tons of Add-ons is a comment line. Clearly you did some editing to the scripts.
Can you provide the scripts.rxdata file?
I just copied all three parts of the script from "Download" section.
Also, I noticed something. When I have only part 1, the error is in line 488. But when I use all three parts, the error is in line 1328 of part 2.
Okaaay. I just install "F12 Pause", but there is no way to switch the game in full screen mode? :C
Can you just upload the scripts.rxdata
Quote from: KK20 on January 28, 2017, 03:47:21 pm
Can you just upload the scripts.rxdata
Of course, but there is nothing special here. I don't even activate none of the scripts from "Tons of Add-ons" in this new project.
https://www.mediafire.com/?8d8g22v5v9f4z5c (https://www.mediafire.com/?8d8g22v5v9f4z5c)
I kinda expected that, when I inserted the scripts file into a new project and pressed run, I would have received an error message. But the game started fine.
Hi long time no talk :^_^\':
I am having problem with one particular aspect in compatibility which is bugging me. So I use a modified Game_Battler 3 (the one by Xelias), and tailored it so most of the mechanics can be more interesting to make up for the lack of interesting ones in RMXP, and I am sure I put everything in the right order. But depending on where I put the script, some features bug out, while others work when I put the modified Game_Battler 3 elsewhere. In the end I decided on this order, because only one feature is bugged for me at the moment.
(http://i.imgur.com/XRUDUQN.png)
It is the Absorb HP/SP script, where it does its own thing, and ignores everything else I modified from Game_Battler 3. Namely it would break through MP Shield, and when one of my character uses it, its damage is incredibly wonky, with the multi-hit script by DerVVulfman it does 0 on multiple hits. Yeah it is weird. Do I need to fix anything in the absorb script to cater to Game_Battler_3? The Game_Battler 3 script is here (https://pastebin.com/6i9UD6M6)
Thank you.
It would be easier if you could provide a demo with reproducible steps. With that many scripts modifying the same classes and methods, it could be a number of problems.
My apologies, good sir.
Here it is.
https://www.sendspace.com/file/fuj7fa
The drain skills in question is 60 and 61, MP Shield is I think 402, which I just put there to test, as drain goes through it. It is really only drain skills that are wonky, displays weird, etc. It is probably because I have fiddled around with the battle formula too much to enhance on the battle system that was provided.
I'm just gonna conclude that Absorb skills and Multi_Strike scripts are incompatible--the game will run, but they do not function as intended.
First off, Xelias's Passive Augments (god that script was terribly done...) completely re-writes methods in Game_Battler, specifically
skill_effect. Because of this, any scripts ABOVE it that make additions or changes to
skill_effect will be completely ignored. In your script list, that would be any modifications you did to Game_Battler 3 and G_G's State Affect Skills.
Continuing with this script, your configuration for all the constant variables is incorrect. When you do this:
MASTERY_BOWKNIFE_ID =
OMNI_MASTERY_ID =
BLUE_SKILLS = (2..113).to_a
you are effectively stating that MASTERY_BOWKNIFE_ID and OMNI_MASTERY_ID will both equal (2..113).to_a as well. You need to put zeroes at the end of those equations if you don't want to use them.
The reason for the zeroes in the damage pop-ups is due to the way the Absorb script works. If the target has 200 HP, but your attack could potentially do 500 HP, you're only going to be doing 200 HP and healing for 200 HP. Because of the multi-hit script, you are reducing the target's HP with each hit. If you completely kill the target i.e. they have 0 HP, there's nothing left to drain, so damage becomes 0.
But the problem now is how the user's HP is healed. I'm sure you've noticed that the Multi-hit script does one last hit after the animation is over. It's at this point the Absorb script will heal the user, and ONLY for this last hit. Since you've effectively killed the Bee in your demo project, the last hit will do 0 damage and heal for 0 HP.
I didn't look into MP Shield as I felt the above was the main issue going on in your game.
I see. I thought that script was outdated, because it made things unnecessarily complicated. I am no scripter so it is really the best I can do at the moment before any optimisation can come through. I even mixed many scripts together into that one page to make things compatible. So I guess I could move G_G's State Affect Skills down.
That makes sense for the drain thing. The multi-hit was testing, so I can just not make absorb moves multi-hit and see how that functions.
The only problem with the MP Shield is that drain moves hit through it ignoring it. If I put that ugly Xelias Script below Blizzard's the MP Shield works but everything else breaks, which is not worth it, so I am just looking into the absorb script at the moment.
Thank you though.
Replace the Game_Battler in the Absorb script to this
class Game_Battler
alias skill_effect_hpsp_absorb_later skill_effect
def skill_effect(user, skill)
last_hp = self.hp
last_sr = self.sr if $crls && self.is_a?(Game_Actor)
result = skill_effect_hpsp_absorb_later(user, skill)
if $game_system.ABSORB_HP_SP && self.damage.is_a?(Numeric)
if SKILL_IDS_SP.include?(skill.id)
self.sr = last_sr if $crls && self.is_a?(Game_Actor)
if user != self
if self.is_a?(Game_Enemy) && UNDEAD_SP.include?(self.id)
self.damage = -self.damage
end
if self.sp >= self.damage
self.sp -= self.damage
else
self.damage, self.sp = self.sp, 0
end
else
self.damage = 0
end
elsif SKILL_IDS_HP.include?(skill.id)
lost_hp = last_hp - self.hp
self.sr = last_sr if $crls && self.is_a?(Game_Actor)
if user != self
if self.is_a?(Game_Enemy) && UNDEAD_IDS.include?(self.id)
self.damage = -self.damage
end
self.damage = lost_hp
else
self.damage = 0
end
end
end
return result
end
end
Since the MP shield appears to apply one-tenth of the damage to HP, the damage pop-up on the target and the amount healed by the user will be that one-tenth amount.
Thank you! I will try this out and see how things work. I see there is a new variable lost_hp.
Sorry if this has already been answered before, but I don't have the patience to search through nearly a decade of posts.
I'm trying out the EQUAP system and have set up my actor with a weapon and armor which teach separate skills, just as a test for now. For argument's sake, let's say my armor teaches me 'Cure' and my weapon teaches 'Fire'. If I start gaining AP on both skills and then unequip my armor, I still gain AP on 'Cure', despite not having that skill equipped: when I re-equip after a couple more battles, my AP for 'Cure' and 'Fire' are the same, as if I'd never unequipped my armor.
Has this been noticed before? And is there a way I can fix it?
(I also understand this is 6 months since the last post, but I figured it'd be okay since it's relevant)
Do you have any custom scripts that could conflict? Looking at my code, the Game_Actor#equip method is implemented properly, but what you are experiencing could happen if it didn't work right. Do you use any custom equipment systems? Also, have you checked this topic yet? http://forum.chaos-project.com/index.php/topic,23.0.html
I've had a look at what scripts I have, but the only scripts I have so far are your three Tons scripts, your Analyze script (placed below Tons), one which turns off the battle music change, and one to give element and status effects to enemies' physical attacks. (Plus a stack level fix at the top for good measure). They all seem to be in the right order and to my knowledge I haven't altered Game_Actor; I wouldn't know how.
Actually Blizz, looking at it logically, there is a problem.
def add_ap(val)
@skills.each {|id| @ap[id] = 0 if @ap[id] == nil}
@ap.each_key {|id|
@ap[id] = self.ap(id) + val
@ap[id] = 0 if self.ap(id) < 0
maxap = BlizzCFG.maxap(id)
@ap[id] = maxap if self.ap(id) > maxap}
end
You're adding AP to skills that have their IDs stored in the @ap hash table. This occurs for every skill the actor ever comes in contact with as seen in the first line of the method.
Might be as easy as just changing it from @ap.each_key to @skills.each
I think you're right. >_>
@Kaiph: Feel free to fix it manually on your end. I'll upload a fixed version ASAP.
That seems to have worked, thanks :)
Is the Passive Skills script restricted to stat and Gold/EXP changes or is it possible to have a skill that defends against status effects and elements?
In other words, could I use EQUAP and Passive together to teach my character to resist poison passively, or would that need an extension of the script to work?
It would require some edits to support status effects and elements.
A little request for anyone willing to try: is there a way to configure "Blue Magic Skill" add-on to have untargetable skills? As in skills that will never be learned by a blue magic skill. Thank you in advance.
According to
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Blue Status Database
#
# Set up the database below using following template:
#
# when STATE_ID then return [CHANCE, GROUP_1, GROUP_2, ...]
#
# STATE_ID - the state ID in the database
# CHANCE - the probability in % that the skill will be learned
# GROUP - "class" from which skills can be learned
#
# Every status effect that is not defined here has a chance of 0% to make the
# attacked actor learn the skill of the attacker. Depending on the state,
# only enemies', actors' or both groups' skills can be learned. Add one or
# more of the following classes after the probability factor:
#
# Game_Enemy - represents enemies
# Game_Actor - represents actors
#
# Keep in mind that you need at least one group from which skills can be
# learned.
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
yes, it sounds like you can.
Or I just don't understand your question.
Sorry. I will clarify. There are actually two Blue Magic addon in Tons: Blue Magic States and Blue Magic Skill. The one you posted is the state, and the groups that are defined are "Actors" and "Enemies". What I was asking was the following:
Suppose you use the blue magic skill (or be in a state, whichever addon is used) on an enemy that knows Fire and Heal. However, let's say in this scenario Heal cannot be copied by Blue Magic. I was asking if we can define skills that can never be copied by Blue Magic in any way, as in a list of exceptions by skill ID one can configure. Blue Magic addons currently do not have such parameters and will copy anything enemies and actors may have when targeted.
I see now.
You could just add a new config like
BLUE_MAGIC_UNLEARNABLE_SKILLS = [1]
And edit the appropriate area in the two scripts to look like
if rand(100) < $data_skills[battler.current_action.skill_id].hit
ids = []
if target.is_a?(Game_Enemy)
target.actions.each {|act| ids.push(act.skill_id) if act.kind == 1 && !BLUE_MAGIC_UNLEARNABLE_SKILLS.include?(act.skill_id) }
elsif target.is_a?(Game_Actor)
target.skills.each {|skl| ids.push(skl) if !BLUE_MAGIC_UNLEARNABLE_SKILLS.include?(skl) }
end
Thank you. It works perfectly! I'd give the level up if I could, but apparently it no longer exists.
Hello
Can I ask for support using Blizzard's Minimap?
I think Ton of Add-ons is amazing (I'm using some of its features). The minimap script I've using until now is proving to be more a more unreliable the grater my project becomes, so I wanted to use this one because it's so smooth.
If it were possible to ask for help, here are my troubles:
The script auto-detects my 'transfer events' and creates a purple square in the minimap. But sometimes, it instead creates a purple arrow and I don't know how to make sure it always creates a square. If I have more than one transfer event one after another, it sometimes shows the majority as purple squares, and one as a purple arrow.
Can you choose to not auto-detect so I can specify when/where to show in the minimap? And can you make that this purple squares are borderless? For events it's great to have a border, but if I want to have a large transfer area, I would like to show it as a large rectangle, and not as a line of squares
Also, maybe it's completely my fault, but I don't know how to create different kind of minimap events like, show enemies like this, npcs like that, treasures in a different way, etc...
It would be great if it were possible to use images for this little events, as I already have some nice ones.
It's probably not important, but I don't know what Game_Member is. I think it breaks my game, so I'm just removing it.
And finally, player arrow is somehow erratic. Sometimes it works, sometimes it isn't shown. But when it does work, if you change to the large version of the minimap (pressing F5 again), the green arrow just doesn't move, even if you do.
Thanks
Quote from: SolarisSpell on May 31, 2021, 02:12:36 pmThe script auto-detects my 'transfer events' and creates a purple square in the minimap. But sometimes, it instead creates a purple arrow and I don't know how to make sure it always creates a square. If I have more than one transfer event one after another, it sometimes shows the majority as purple squares, and one as a purple arrow.
This is a bug. Locate the following in the script and make sure it looks like this:
def check_events
events, names = [$game_player], [nil]
Quote from: SolarisSpell on May 31, 2021, 02:12:36 pmCan you choose to not auto-detect so I can specify when/where to show in the minimap?
I don't know what you mean by this question. If you don't want an event to show up on the minimap, you just put \nomap in its name.
Quote from: SolarisSpell on May 31, 2021, 02:12:36 pmAnd can you make that this purple squares are borderless?
This is how the square is being made:
if @names[i] == '' || @events[i].name.clone.gsub!('\box') {''}
sprite.bitmap = Bitmap.new(8, 8)
sprite.bitmap.fill_rect(0, 0, 8, 8, Color.new(0, 0, 0, 128))
sprite.bitmap.fill_rect(1, 1, 6, 6, color)
The border is made by the first fill_rect call, the second creates the colored square. Thus the obvious solution is to do this:
if @names[i] == '' || @events[i].name.clone.gsub!('\box') {''}
sprite.bitmap = Bitmap.new(8, 8)
sprite.bitmap.fill_rect(0, 0, 8, 8, color)
Just know that this will affect all events that are to be drawn as a box, not just teleport spots. Maybe you can do this instead:
if @events[i].teleport
sprite.bitmap = Bitmap.new(8, 8)
sprite.bitmap.fill_rect(0, 0, 8, 8, color)
elsif @names[i] == '' || @events[i].name.clone.gsub!('\box') {''}
sprite.bitmap = Bitmap.new(8, 8)
sprite.bitmap.fill_rect(0, 0, 8, 8, Color.new(0, 0, 0, 128))
sprite.bitmap.fill_rect(1, 1, 6, 6, color)
else
sprite.bitmap = Bitmap.new(56, 14)
sprite.bitmap.blt(0, 0, $tons_cache.get_image(arrow), rect, 128)
end
Quote from: SolarisSpell on May 31, 2021, 02:12:36 pmAlso, maybe it's completely my fault, but I don't know how to create different kind of minimap events like, show enemies like this, npcs like that, treasures in a different way, etc...
# Any event with and comment with "\spc" in their code will be also
# displayed differently.
With the default configuration, it shows the event as a yellow arrow.
Quote from: SolarisSpell on May 31, 2021, 02:12:36 pmIt would be great if it were possible to use images for this little events, as I already have some nice ones.
That's more suited for a script request. This script creates its own graphics for the minimap entirely in RGSS.
Quote from: SolarisSpell on May 31, 2021, 02:12:36 pmIt's probably not important, but I don't know what Game_Member is. I think it breaks my game, so I'm just removing it.
It's part of the caterpillar script, which is in Part 1 of Tons. IDK how you're saying it's breaking your game unless you don't have Part 1 in your game. Tons requires all 3 parts to ensure nothing breaks. Granted, if you know what you're doing, then removing the offending line isn't a big deal.
Quote from: SolarisSpell on May 31, 2021, 02:12:36 pmAnd finally, player arrow is somehow erratic. Sometimes it works, sometimes it isn't shown. But when it does work, if you change to the large version of the minimap (pressing F5 again), the green arrow just doesn't move, even if you do.
Don't know how to reproduce the arrow not being shown.
As for the map being moved to the middle of the screen, I don't know if not updating the events in real-time is a bug or intended. When you hold down the Z button and move with the arrow keys on larger maps, it is supposed to scroll the minimap.
Thanks for the help.
def check_events
events, names = [$game_player], [nil]
This solved the problem of some transfer events being show as a square, but one as an arrow.
Now it always differentiates some events as arrows and some as squares. I've come to the conclusion that it depends if the events can face different directions (for example, the end of the map is a transfer event with nothing more, so it's a square, but a door is an arrow). I'm still trying to make it so that it is always a square.
The problem with the player arrow disappearing in some maps was fixed just increasing sprite.z
It's strange, but this script is giving a lot of problems, and I'm even thinking that maybe something in my project is affecting it.
For example, all the customizations options seems to not have any effect:
PLAYER_COLOR = Color.new(0, 255, 0)
EVENT_COLOR = Color.new(0, 128, 255)
TELEPORT_COLOR = Color.new(255, 255, 0)
SPECIAL_COLOR = Color.new(255, 0, 0)
MINIMAP_X = 0
MINIMAP_Y = 0
MINIMAP_WIDTH = 160
MINIMAP_HEIGHT = 160
MINIMAP_OPACITY = 160
MAP_MOVE_BUTTON = Input::Z
If I change these vales, nothing happen. I even tried using script calls as it says in the instructions with no result.
If I add \spc as a comment in an event, nothing happens, but if I add it in its name, it is shown. Right now, I can only see the player arrow, transfer events and these \spc in name events. I don't know if it should work any different (as I'd like to show with different colors events if they are enemies, npc, treasures, etc)
I'll try messing around with the code, but it seems the script is just not being fully compatible with my game
Quote from: SolarisSpell on June 01, 2021, 04:52:07 pmIf I change these vales, nothing happen. I even tried using script calls as it says in the instructions with no result.
-squints-
-CTRL + F's the script-...Blizzard what the fuck. How did no one ever report this?
Quote from: SolarisSpell on June 01, 2021, 04:52:07 pmI've come to the conclusion that it depends if the events can face different directions (for example, the end of the map is a transfer event with nothing more, so it's a square, but a door is an arrow).
Yes, that is how it works.
Quote from: SolarisSpell on June 01, 2021, 04:52:07 pmI'm still trying to make it so that it is always a square.
You put
\box in the event name. You should have been able to infer that from my previous post, though I will admit it's not documented anywhere.
Quote from: SolarisSpell on June 01, 2021, 04:52:07 pmRight now, I can only see the player arrow, transfer events and these \spc in name events. I don't know if it should work any different
No, that's all it does. They will all be marked the same color.
Quote from: SolarisSpell on June 01, 2021, 04:52:07 pm(as I'd like to show with different colors events if they are enemies, npc, treasures, etc)
Again, that is a script request.
Quote from: SolarisSpell on June 01, 2021, 04:52:07 pmbut it seems the script is just not being fully compatible with my game
...or do you mean "doesn't fulfill your needs"?
Incompatible would mean it doesn't work with another script.
Quote...or do you mean "doesn't fulfill your needs"?
Incompatible would mean it doesn't work with another script.
Sorry, I didn't mean to be pretentious. I just was sure something had to be wrong with my game, as I tried following the instructions and some things weren't responding, so I thought some other script were messing the code. (And when restarting the game with F12, the minimap changed. It was there, but blocky instead of drawing diagonals).
QuoteYou put \box in the event name. You should have been able to infer that from my previous post, though I will admit it's not documented anywhere.
It's so simple... argh. I did try it, but I only created an event with \box in it's name with no result. I didn't try to create a '\spc \box' or add it to the transfer event... I've done it now and have seen that it works perfectly.
Thanks again. It works and it was just me not knowing how to implement it in the game.
Hello
I have an odd error when i display the MiniMap with F5.
The map shows everything except the green arrow for the player, but strangely it shows the arrows of the followers.
Any tip for me?
EDIT: i found out that if i've no Transfer scripts with the 'Player touch' Tag, the players arrow is shown. But when i activate the Event the arrow is Not shown. Also, when i have the caterpillar activated and for example two Transfer Events, than only two follower arrows are being shown.
What the hell did i Do wrong? xD
Replace the relevant minimap methods with these
def check_events
events, names = [$game_player], [nil]
if $game_system.CATERPILLAR
$game_player.members.each {|event|
if event.character_name != ''
events.push(event)
names.push(event.character_name)
end
}
end
$game_map.events.each_value {|event|
next if event.name.clone.gsub!('\nomap') {''}
if event.is_a?(Game_Event) && !event.erased && (event.teleport ||
event.name.clone.gsub!('\spc') {''})
events.push(event)
names.push(event.character_name)
end}
return events, names
end
def create_sevents
@sevents = []
@events.each_index {|i|
sprite = Sprite.new(viewport)
rect = Rect.new(0, 0, 56, 14)
if @events[i] == $game_player
if @names[i] != ''
sprite.bitmap = Bitmap.new(56, 14)
sprite.bitmap.blt(0, 0, $tons_cache.get_image('green_arrow'), rect, 128)
end
sprite.z = 100
elsif @events[i].is_a?(Game_Member)
if @names[i] != ''
sprite.bitmap = Bitmap.new(56, 14)
sprite.bitmap.blt(0, 0, $tons_cache.get_image('blue_arrow'), rect, 128)
end
sprite.z = 80
elsif @events[i].is_a?(Game_Event)
if @events[i].name.clone.gsub!('\spc') {''}
color, arrow, sprite.z = Color.new(255, 255, 0, 128), 'yellow_arrow', 60
elsif @events[i].teleport
color, arrow, sprite.z = Color.new(128, 0, 255, 128), 'violet_arrow', 40
end
if @names[i] == '' || @events[i].name.clone.gsub!('\box') {''}
sprite.bitmap = Bitmap.new(8, 8)
sprite.bitmap.fill_rect(0, 0, 8, 8, Color.new(0, 0, 0, 128))
sprite.bitmap.fill_rect(1, 1, 6, 6, color)
else
sprite.bitmap = Bitmap.new(56, 14)
sprite.bitmap.blt(0, 0, $tons_cache.get_image(arrow), rect, 128)
end
elsif @names[i] == '' || @events[i].name.clone.gsub!('\box') {''}
sprite.bitmap = Bitmap.new(8, 8)
sprite.bitmap.fill_rect(0, 0, 8, 8, Color.new(0, 0, 0, 128))
sprite.bitmap.fill_rect(1, 1, 6, 6, Color.new(255, 255, 255, 128))
else
sprite.bitmap = Bitmap.new(56, 14)
sprite.bitmap.blt(0, 0, $tons_cache.get_image('white_arrow'), Rect.new(0, 0, 56, 14), 128)
end
sprite.bitmap = Bitmap.new(1, 1) if sprite.bitmap == nil
sprite.ox = sprite.oy = 64
if sprite.bitmap.width != 8
sprite.src_rect.set((@events[i].direction-2)*7, 0, 14, 14)
end
@sevents.push(sprite)}
end
These are clearly bugs, so hopefully Blizz sees this and updates accordingly.
That did it!
Thank you!
Uploaded a new version with KK20's fix.
Yay it's me again! xD
Some issue with the minimap again.
When i Look At the the whole minimap by pressing F5 two Times the Green arrow for the Player freezes and doesn't move anymore.
Any fix for that?
Quote from: KK20 on June 01, 2021, 01:51:22 amAs for the map being moved to the middle of the screen, I don't know if not updating the events in real-time is a bug or intended. When you hold down the Z button and move with the arrow keys on larger maps, it is supposed to scroll the minimap.
Oh no it's thommy again xD
I habe a Problem with the location namens.
I put in a Script for a custom title screen from this
https://www.neoseeker.com/forums/22121/t667163-ssbms-custom-title-screen/
Website and now i get an error everytime i enter a map where the Name should be shown. I already Figuren out that it Has to Do something with the
$scene = Scene_Title.new line in Main wich isn't included anymore after i replaced it with the script.
Any idea to help an Idiot in Scripting? xD
Either use a different method/script for making a map a title screen, or post what the error is.
Oh sorry i forgot.
When i enter a map where the Name is supposes to Show i get those:
Script 'Blizzard -> 1' line 1684: NoMethodError occured.
Undefined method '[]' for nil:NilClass
I hope this helps
The variable responsible for storing the map names was never initialized. That's handled when Scene_Title is called, but since you're skipping that, it never calls it.
You need to add this somewhere before your game starts, like in Main
$map_names = load_data('Data/MapInfos.rxdata')
$map_names.each_key {|key| $map_names[key] = $map_names[key].name}
That fixed it. Thank you very much =)
Going back to the particular script for Blue Magic learn skill for Tons, I noticed that I would get a NoMethodError for 'damage' if the Blue Magic User uses the skill but has no MP to cast it at that time (for example if enemy deals MP damage to the caster).
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Blue Magic via Skill by Blizzard
# Version: 1.5
# Type: Skill Learning Skill
# Date: 14.11.2006
# Date v1.5: 17.2.2008
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# This actor will learn one of the target's skills. Making this skill target
# all allies/enemies, ONLY ONE SKILL WILL BE LEARNED FROM A RANDOM TARGET!
# Make the skill do no damage to the target and use the hit rate to determine
# the success chance of the skill.
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
BLUE_MAGIC_IDS = [92] # add any Skill IDs and separate them with commas
BLUE_MAGIC_UNLEARNABLE_SKILLS = [1,2,3,4,5,6,7,8,9,10] #Unlearnable blue magic skills
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
alias make_skill_action_result_blue_later make_skill_action_result
def make_skill_action_result(battler = nil, plus_id = nil)
if battler == nil
make_skill_action_result_blue_later
battler, targets = @active_battler, @target_battlers
elsif plus_id == nil
make_skill_action_result_blue_later(battler)
targets = battler.target
else
make_skill_action_result_blue_later(battler, plus_id)
targets = battler.target
end
if $game_system.BLUE_MAGIC_SKILL &&
BLUE_MAGIC_IDS.include?(battler.current_action.skill_id)
targets.each {|target| target.damage = nil}
target = targets[rand(targets.size)]
#if rand(100) < $data_skills[battler.current_action.skill_id].hit
#if target.is_a?(Game_Enemy)
#ids = []
#target.actions.each {|act| ids.push(act.skill_id) if act.kind == 1}
#elsif target.is_a?(Game_Actor)
#ids = target.skills.clone
#end
if rand(100) < $data_skills[battler.current_action.skill_id].hit
ids = []
if target.is_a?(Game_Enemy)
target.actions.each {|act| ids.push(act.skill_id) if act.kind == 1 &&!BLUE_MAGIC_UNLEARNABLE_SKILLS.include?(act.skill_id) }
elsif target.is_a?(Game_Actor)
target.skills.each {|skl| ids.push(skl) if !BLUE_MAGIC_UNLEARNABLE_SKILLS.include?(skl) }
end
if ids.size > 0
skill = $data_skills[ids[rand(ids.size)]]
if battler.skills.include?(skill.id)
target.damage = "#{skill.name} known!"
else
battler.learn_skill(skill.id)
target.damage = "#{skill.name} learned"
end
else
target.damage = 'None available'
end
else
target.damage = 'Miss'
end
end
end
end
Here's a slightly modified version made by KK20 where one can define which skills are unlearnable by caster. The error is on 'target.damage = 'None available'' line when playtesting. This can be replicated by turning on SP damage, having caster slower than the enemy, taking SP damage, and trying to cast blue magic learn skill. Is there a way to fix this? Thank you.
if $game_system.BLUE_MAGIC_SKILL &&
BLUE_MAGIC_IDS.include?(battler.current_action.skill_id) &&
targets.any?
Wow it was such a simple fix. Thank you as always!
Also I wasn't sure how to edit the Blue Magic by Status skill to have a configuration to ignore certain skills as the Blue Magic as skills one.
class Game_Battler
alias skill_effect_bluestatus_later skill_effect
def skill_effect(user, skill)
if $game_system.BLUE_MAGIC_STATUS && self.is_a?(Game_Actor)
@states.each {|id|
data = BlizzCFG.blue_states(id)
if data.size > 1 && rand(100) < data[0] &&
data[1, data.size-1].include?(user.class)
learn_skill(skill.id)
break
end}
end
return skill_effect_bluestatus_later(user, skill)
end
end
I assume it was editable here but it didn't seem to carry over the configs from the skill version sadly so any attacks that connect gets learnt. How would I do this one?
It should just be
if $game_system.BLUE_MAGIC_STATUS && self.is_a?(Game_Actor) && !BLUE_MAGIC_UNLEARNABLE_SKILLS.include?(skill.id)
Do I need to fix anything on my end in the original script?
Quote from: Blizzard on June 26, 2022, 05:16:47 pmDo I need to fix anything on my end in the original script?
I think only the targets.any? fix. If the user is unable to use the skill in make_skill_action_result, the alias still returns an empty list of targets, I think.
There might be a bug with this particular fix and I haven't quite pinpointed it yet but it only affects the blue magic user. At some points, using any skill may direct the wrong targets. For example, using an item gets used on the enemy (imagine my surprise using a 100% HP/MP item on a major boss!) or using an offensive skill attacks your party instead! It seems to have only happened since this fix was implemented, but I'll keep testing to see what exactly triggers this. It's not as noticeable as the 'not enough MP' bug from earlier.
The targets.any? addition should only be applied to Blue Magic Skill IDs, not just any skill. You should be able to confirm this easily by putting a print statement below it
if BLUE_MAGIC_IDS.include?(battler.current_action.skill_id) && targets.any?
print 'blue magic used!'
targets.each {|target| target.damage = nil}
If you ever figure out how to reproduce it (even if not consistently), you should provide your scripts file. I'm leaning towards a different script being the problem.
Quote from: KK20 on June 26, 2022, 08:39:02 pmQuote from: Blizzard on June 26, 2022, 05:16:47 pmDo I need to fix anything on my end in the original script?
I think only the targets.any? fix. If the user is unable to use the skill in make_skill_action_result, the alias still returns an empty list of targets, I think.
I guess I can take a look at it. Or feel free to just post a fixed version here and I'll update the main script with it.
Also, what about this:
Quote from: KK20 on June 02, 2021, 03:29:39 amQuote from: SolarisSpell on June 01, 2021, 04:52:07 pmIf I change these vales, nothing happen. I even tried using script calls as it says in the instructions with no result.
-squints-
-CTRL + F's the script-
...Blizzard what the fuck. How did no one ever report this?
Good question. O_o I never tried changing those colors. Maybe I just defined the constants and never really implemented their usage.
EDIT: Ok, I will add the targets.any? fix and add the unlearnable skills array for Blue Magic Status. I will also fix the Minimap colors. The new version will be up later today.
Quote from: KK20 on June 30, 2022, 12:13:27 amThe targets.any? addition should only be applied to Blue Magic Skill IDs, not just any skill. You should be able to confirm this easily by putting a print statement below it
if BLUE_MAGIC_IDS.include?(battler.current_action.skill_id) && targets.any?
print 'blue magic used!'
targets.each {|target| target.damage = nil}
If you ever figure out how to reproduce it (even if not consistently), you should provide your scripts file. I'm leaning towards a different script being the problem.
Actually, yeah I don't think it has anything to do with Tons so it probably doesn't belong here. I think I found the culprit. It was the 'Target Anyone' script that I put in and I made it so that the Blue Magic skill can target either ally or foe. I also made some adjustments to make it usable with Wecoc's VX Ace Target Scope. I haven't found a way to fix it but there definitely are weird things that happen sometimes with the blue magic user, and I think it happens when I am using a potion at low HP or something and it goes to the enemy. Still inconsistent with replicating the bug however but I'll probably post some other thread if I figure it out completely.
=begin
===============================================================================
Target Anyone Scope
Version 1.0
By KK20
===============================================================================
-[ Introduction ]-
This small script allows the player to make single target scopes reverse its
intended target. In other words, you can now choose to Heal a monster or one
of your allies.
-[ Instructions ]-
1.) Scroll down to the configurations and locate Constant TARGET_ANYONE_TAG.
Change the string associated with it if you like.
2.) Create a new element in the Database. Name this new element the same as you
have TARGET_ANYONE_TAG assigned to.
3.) Apply this new element to skills or items that you wish to have this
effect.
~ NOTE: The effect will only work if you set the scope to "One Enemy"
or "One Ally".
-[ Compatibility ]-
* This script was made with the default battle system in mind. Custom battle
scripts will most likely not work with this script without edits.
* Not tested with SDK
* Changes made to Game_Actor, Game_Battler, and Scene_Battle
Heretic Additions:
Bugfixes: Fixed a bug that selected wrong Target Type by cancelling, then
reselecting the same Item or Skill.
===============================================================================
Credits:
KK20 - Writing this script
Charlie Fleed - For the idea
===============================================================================
=end
#===========#
# Configure #
#===========#
# The element ID's name that allows the user to target any one battler
TARGET_ANYONE_TAG = "DoubleTarget"
#===============#
# End Configure #
#===============#
#-------------------------------------------------------------------------
# Class Game Actor
#-------------------------------------------------------------------------
class Game_Actor < Game_Battler
attr_accessor :changed_scope
alias call_init_again initialize
def initialize(actor_id)
@changed_scope = false
call_init_again(actor_id)
end
def clear
super
@changed_scope = false
@target_type = nil
end
end
#-------------------------------------------------------------------------
# Class Game Battler
#-------------------------------------------------------------------------
class Game_Battler
#--------------------------------------------------------------------------
# * Calculating Element Correction
# element_set : element
#--------------------------------------------------------------------------
def elements_correct(element_set)
# If not an element
if element_set == []
# Return 100
return 100
end
# Return the weakest object among the elements given
# * "element_rate" method is defined by Game_Actor and Game_Enemy classes,
# which inherit from this class.
weakest = -100
for i in element_set
# Skips the "Target anyone" element to avoid damage miscalculations
next if i == $data_system.elements.index(TARGET_ANYONE_TAG)
weakest = [weakest, self.element_rate(i)].max
end
return weakest
end
end
#-------------------------------------------------------------------------
# Class Scene Battle
#-------------------------------------------------------------------------
class Scene_Battle
#--------------------------------------------------------------------------
# * Frame Update (actor command phase : skill selection)
#--------------------------------------------------------------------------
def update_phase3_skill_select
# Make skill window visible
@skill_window.visible = true
# Update skill window
@skill_window.update
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# End skill selection
end_skill_select
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get currently selected data on the skill window
@skill = @skill_window.skill
# If it can't be used
if @skill == nil or not @active_battler.skill_can_use?(@skill.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.skill_id = @skill.id
# Make skill window invisible
@skill_window.visible = false
# If effect scope is single enemy or single ally and can target anyone
if @skill.element_set.include?($data_system.elements.index(TARGET_ANYONE_TAG)) and
(@skill.scope == 1 or @skill.scope == 3)
# Define starting position of the arrow
@orig_scope = @skill.scope
start_enemy_select if @skill.scope == 1
start_actor_select if @skill.scope == 3
@any_target = true
elsif @skill.scope == 1
# Start enemy selection
start_enemy_select
# If effect scope is single ally
elsif @skill.scope == 3 or @skill.scope == 5
# Start actor selection
start_actor_select
# If scope is all enemies or allies
elsif [2,4,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28].include?(@skill.scope)
start_select_all(@skill.scope)
@any_target = true if @skill.element_set.include?($data_system.elements.index(TARGET_ANYONE_TAG))
# If effect scope is not single
else
# End skill selection
end_skill_select
# Go to command input for next actor
phase3_next_actor
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (actor command phase : item selection)
#--------------------------------------------------------------------------
def update_phase3_item_select
# Make item window visible
@item_window.visible = true
# Update item window
@item_window.update
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# End item selection
end_item_select
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get currently selected data on the item window
@item = @item_window.item
# If it can't be used
unless $game_party.item_can_use?(@item.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.item_id = @item.id
# Make item window invisible
@item_window.visible = false
# If effect scope is single enemy or single ally and can target anyone
if @item.element_set.include?($data_system.elements.index(TARGET_ANYONE_TAG)) and
(@item.scope == 1 or @item.scope == 3)
# Define starting position of the arrow
@orig_scope = @item.scope
start_enemy_select if @item.scope == 1
start_actor_select if @item.scope == 3
@any_target = true
# If effect scope is single enemy
elsif @item.scope == 1
# Start enemy selection
start_enemy_select
# If effect scope is single ally
elsif @item.scope == 3 or @item.scope == 5
# Start actor selection
start_actor_select
# If scope is all enemies or allies
elsif [2,4,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28].include?(@item.scope)
start_select_all(@item.scope)
@any_target = true if @item.element_set.include?($data_system.elements.index(TARGET_ANYONE_TAG))
# If effect scope is not single
else
# End item selection
end_item_select
# Go to command input for next actor
phase3_next_actor
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (actor command phase : enemy selection)
#--------------------------------------------------------------------------
def update_phase3_enemy_select
# Update enemy arrow
@enemy_arrow.update
# If this skill/item can target anyone
if @any_target == true
# If player pressed the key to change targets
if Input.trigger?(Input::DOWN)
# Play decision SE
$game_system.se_play($data_system.cursor_se)
# Initialize actor select, end enemy select
end_enemy_select
if [2,4].include?(@skill_window != nil ? @skill.scope : @item.scope)
start_select_all(4)
else
start_actor_select
end
@active_battler.changed_scope = !@active_battler.changed_scope
# Stop processing
return
end
end
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# End enemy selection
end_enemy_select
@active_battler.changed_scope = false
@any_target = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.target_index = @enemy_arrow.index
# End enemy selection
end_enemy_select
# If skill window is showing
if @skill_window != nil
# End skill selection
end_skill_select
end
# If item window is showing
if @item_window != nil
# End item selection
end_item_select
end
@any_target = false
# Go to command input for next actor
phase3_next_actor
end
end
#--------------------------------------------------------------------------
# * Frame Update (actor command phase : actor selection)
#--------------------------------------------------------------------------
def update_phase3_actor_select
# Update actor arrow
@actor_arrow.update
# If this skill/item can target anyone
if @any_target == true
# If player pressed the key to change targets
if Input.trigger?(Input::UP)
# Play decision SE
$game_system.se_play($data_system.cursor_se)
# Initialize actor select, end enemy select
end_actor_select
if [2,4].include?(@skill_window != nil ? @skill.scope : @item.scope)
start_select_all(2)
else
start_enemy_select
end
@active_battler.changed_scope = !@active_battler.changed_scope
# Stop processing
return
end
end
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# End actor selection
end_actor_select
@active_battler.changed_scope = false
@any_target = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Set action
@active_battler.current_action.target_index = @actor_arrow.index
# End actor selection
end_actor_select
# If skill window is showing
if @skill_window != nil
# End skill selection
end_skill_select
end
# If item window is showing
if @item_window != nil
# End item selection
end_item_select
end
@any_target = false
# Go to command input for next actor
phase3_next_actor
end
end
#--------------------------------------------------------------------------
# * Set Targeted Battler for Skill or Item
# scope : effect scope for skill or item
#--------------------------------------------------------------------------
alias modded_scopes_change_targets set_target_battlers
def set_target_battlers(scope)
# If the actor has changed the scope of the skill/item
if @active_battler.is_a?(Game_Actor) and @active_battler.changed_scope
# Reset the variable
@active_battler.changed_scope = false
# Determine targets
case scope
when 1 # single ally
index = @active_battler.current_action.target_index
@target_battlers.push($game_party.smooth_target_actor(index))
when 2 # allies
for actor in $game_party.actors
if actor.exist?
@target_battlers.push(actor)
end
end
when 3 # single enemy
index = @active_battler.current_action.target_index
@target_battlers.push($game_troop.smooth_target_enemy(index))
when 4 # troop
for enemy in $game_troop.enemies
if enemy.exist?
@target_battlers.push(enemy)
end
end
end
else
# Call original method
modded_scopes_change_targets(scope)
end
end
#--------------------------------------------------------------------------
# * Battle Ends
# result : results (0:win 1:lose 2:escape)
#--------------------------------------------------------------------------
alias reset_changed_scopes battle_end
def battle_end(result)
# Reset all the actors' changed_scope variable
for actor in $game_party.actors
actor.changed_scope = false
end
# Call alias
reset_changed_scopes(result)
end
end
#===========================
#==============================================================================
# ** Arrow_Base
#------------------------------------------------------------------------------
# This sprite is used as an arrow cursor for the battle screen. This class
# is used as a superclass for the Arrow_Enemy and Arrow_Actor classes.
#==============================================================================
class Arrow_Base < Sprite
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :target_all # Cursor Targets All
#--------------------------------------------------------------------------
# * Object Initialization
# viewport : viewport
#--------------------------------------------------------------------------
alias arrow_all_initialize initialize
def initialize(viewport)
# Call Original
arrow_all_initialize(viewport)
# New Variable
@target_all = false
end
end
#==============================================================================
# ** Scene_Battle (part 1)
#------------------------------------------------------------------------------
# This class performs battle screen processing.
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Start All Selection
#--------------------------------------------------------------------------
def start_select_all(scope)
# If Scope is All Enemies
if scope == 2 or scope == 8 or scope == 9 or scope == 10 or scope == 11 or scope == 12 or scope == 13 or scope == 14
# Make enemy arrow
@enemy_arrow = Arrow_Enemy.new(@spriteset.viewport1)
# Cycle Arrow over each Enemy
@enemy_arrow.target_all = true
# Associate help window
@enemy_arrow.help_window = @help_window
# Disable actor command window
@actor_command_window.active = false
@actor_command_window.visible = false
# IF Scope is All Allies
elsif scope == 4 or scope == 15 or scope == 16 or scope == 17 or scope == 18 or scope == 19 or scope == 20 or scope == 21
# Make actor arrow
@actor_arrow = Arrow_Actor.new(@spriteset.viewport2)
# Cycle Arrow over each Enemy
@actor_arrow.target_all = true
# Associate help window
@actor_arrow.help_window = @help_window
# Disable actor command window
@actor_command_window.active = false
@actor_command_window.visible = false
end
end
end
#==============================================================================
# ** Arrow_Actor
#------------------------------------------------------------------------------
# This arrow cursor is used to choose an actor. This class inherits from the
# Arrow_Base class.
#==============================================================================
class Arrow_Actor < Arrow_Base
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# If Entire Party
if @target_all
self.visible = true
@index += 1
@index %= $game_party.actors.size
# Set sprite coordinates
if self.actor != nil
self.x = self.actor.screen_x
self.y = self.actor.screen_y
end
# Prevent Input
return
end
# Cursor right
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@index += 1
@index %= $game_party.actors.size
end
# Cursor left
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@index += $game_party.actors.size - 1
@index %= $game_party.actors.size
end
# Set sprite coordinates
if self.actor != nil
self.x = self.actor.screen_x
self.y = self.actor.screen_y
end
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
# If targetting All Allies
if @target_all
# Display Entire Party in Help Window, 1 = Center
@help_window.set_text("All Allies", 1)
else
# Display actor status in help window
@help_window.set_actor(self.actor)
end
end
end
#==============================================================================
# ** Arrow_Enemy
#------------------------------------------------------------------------------
# This arrow cursor is used to choose enemies. This class inherits from the
# Arrow_Base class.
#==============================================================================
class Arrow_Enemy < Arrow_Base
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
# If All Enemies
if @target_all
self.visible = true
@index += 1
@index %= $game_troop.enemies.size
# Skip if indicating a nonexistant enemy
$game_troop.enemies.size.times do
break if self.enemy.exist?
@index += 1
@index %= $game_troop.enemies.size
end
# Set sprite coordinates
if self.enemy != nil
self.x = self.enemy.screen_x
self.y = self.enemy.screen_y
end
# Prevent Input
return
end
# Skip if indicating a nonexistant enemy
$game_troop.enemies.size.times do
break if self.enemy.exist?
@index += 1
@index %= $game_troop.enemies.size
end
# Cursor right
if Input.repeat?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# Cursor left
if Input.repeat?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
$game_troop.enemies.size.times do
@index += $game_troop.enemies.size - 1
@index %= $game_troop.enemies.size
break if self.enemy.exist?
end
end
# Set sprite coordinates
if self.enemy != nil
self.x = self.enemy.screen_x
self.y = self.enemy.screen_y
end
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
# If targetting All Enemies
if @target_all
# Display Entire Party in Help Window, 1 = Center
@help_window.set_text("All Enemies", 1)
else
# Display enemy name and state in the help window
@help_window.set_enemy(self.enemy)
end
end
end