[XP] Blizz-ABS

Started by Blizzard, January 09, 2008, 08:21:56 am

Previous topic - Next topic

MindOnFire

Everything's good now. Almost had a meltdown afterward, when I got into the game and the controls wouldn't work, but then discovered I had screwed up mapping the controls in the config app so that both the up and down arrow keys went down. xD I'm sure I'll be back to beg for assistance before long, but until then, thanks guys.  :bow:
Then.
Now.
Forever.

Sylphe

AheĆ¹m HEY GUYS WHATUP !?
Me ? I'm chilling B-|

But well !  This time I'm looking for a script that allows a negative knockback with BABS because :
This would be cool to have a skill like the UNION in Kingdom Hearts  that make an attractive zone for nearest enemies

So I'm about to make it

I searched what I need to change - I think it is the lines where you make the enemy make a forced movement due to knockback -
and I found this method line 6082 :

Spoiler: ShowHide
 #--------------------------------------------------------------------------
    # update
    #  char - the map character
    #  This is the first phase of the AI update. It determines whether a
    #  character is able to act at all or if an exception has occured and
    #  needs to expire first.
    #--------------------------------------------------------------------------
    def prepare(char)
      # temporary variables
      x, y, ai = char.x, char.y, char.ai
      # if char was attacked - Stanley's add => != 0 ?
      if char.attacked > 0
        # set state
        ai.state = Knockback
        # stop if force moving knockback already
        return if char.moving?
        # if forced to move
        if char.move_type == 3
          # delete pending movement commands
          char.force_move = []
        # if not moving already
        elsif !char.moving?
          # add throw back moving commands
          char.force_move = [Cache::FDirs[10 - char.direction]]
        end
        # cancel action
        char.in_action = 0
        # decrease attacked counter
        char.attacked -= 1
      # if char in action
      elsif char.in_action > 0
        # set state
        ai.state = Abort
        # if defending
        if char.ai.act.defend?
          # decrease shock count
          char.in_action -= 1
          # set state
          ai.state = Defend
        # if not freeze action and no action sprite
        elsif !char.freeze_action && char.current_sprite == ''
          # decrease shock count
          char.in_action -= 1
        end
      # if char is moving or restricted to move
      elsif char.moving? || char.restriction == 4
        # set state
        ai.state = (char.ai.act.escape? ? Escape : Abort)
      # if char needs to move
      elsif char.force_move.size > 0
        # set state
        ai.state = (char.ai.act.escape? ? Escape : MoveOnly)
      # if target exists
      elsif ai.target != nil
        # set pre-state
        ai.state = Ready
      else
        # set pre-state
        ai.state = Return
      end
    end


And more precisely this line :
Spoiler: ShowHide
# add throw back moving commands
          char.force_move = [Cache::FDirs[10 - char.direction]]


I don't really get what it does but I think this is important part to change in order to do what I want

... But I'm not sure so I summon WINKIO or BLIZZARD or ANYONE WHO KNOW BABS WELL please help xD

:-*
blindly follow his heart can lead to the loss

Sylphe, descendant of Zoldik Family.
Quote from: TedBearTRY KEEP UP

Greaves

June 09, 2015, 09:15:12 pm #5322 Last Edit: June 09, 2015, 09:31:24 pm by Greaves
Quote from: Sylphe on June 09, 2015, 01:48:21 pm

And more precisely this line :
Spoiler: ShowHide
# add throw back moving commands
         char.force_move = [Cache::FDirs[10 - char.direction]]


I don't really get what it does but I think this is important part to change in order to do what I want

... But I'm not sure so I summon WINKIO or BLIZZARD or ANYONE WHO KNOW BABS WELL please help xD

:-*


Hey, new here but that (the 10 - char.direction) basically just takes the direction your facing and makes it backwards, so up will go down, right will go left, etc. To make it go forward you could just change the '10 - char.direction' to just 'char.direction'. I didn't look at the rest of the code so I'm not sure if that by itself will help out of context.

Greaves

June 12, 2015, 05:37:33 pm #5323 Last Edit: June 12, 2015, 06:09:29 pm by Greaves
Errm... I have a question too. :???:

I was trying to implement blocking as an event name command where if you put \block[*array of directions*] corresponding to the
event's direction facing the damage source, it would block all damage (like full defend of attacks/skills) to that event. It would be
ideal for enemies with big shields in front of them, so you'd have to attack them from the sides or the back.

I copied one of Blizz's commands in check_event_name to check for the array of directions to block from.

# if dmg is blocked from certain directions (2 is front, 8 is back of enemy)
if event.name.clone.gsub!(/\\block\[([\d, ]+)\]/) {"#[$1]"}
# temporary variable for array of IDs
block_dir = eval("[#{$1}]")
end


Yet I'm not sure where to actually implement the blocking in the code.

P.S. This was how I was thinking directions would work:
Spoiler: ShowHide

2 is for the front of the enemy
4 is for the left side of the enemy
6 is for the right side of the enemy
8 is for the back

So if the enemy was facing left it would look like this:




4
28 or 0
6


Possibly using this:




(char.direction + 2) % 8
char.direction % 8(char.direction + 6) % 8
(char.direction + 4) % 8


Btw let me know if there is a better way to calculate directions that excludes the mod 8 :D


Any help is appreciated :s



Edit: Nevermind, figured it out thanks to this :) http://forum.chaos-project.com/index.php/topic,11163.msg169995.html#msg169995

Sylphe

June 15, 2015, 03:00:20 pm #5324 Last Edit: June 16, 2015, 05:40:12 pm by Sylphe
Hey guys I didn't found a script that limit running with a jauge and compatible BABS, do I have to make it ?  8)
But I'm not in ease with those Jauge things, I expect the code to say f*ck you first

EDIT : Well the jauge is no problem now, it is the place where I should init my variables....
I changed first lines of class Controller in module BlizzABS like that :

  • 2 accessors (runTime and runWait)

  • 2 initialisations in initialize method



Spoiler: ShowHide

class Controller
   
   # Center screen x-coordinate * 4
   CX = (320 - 16) * 4
   # Center screen y-coordinate * 4
   CY = (240 - 16) * 4
   
   # set all accessible variables
   attr_accessor :encounter_count
   # stanley's change
   attr_accessor :runTime
   attr_accessor :runWait
   #--------------------------------------------------------------------------
   # Initialization
   #--------------------------------------------------------------------------
   def initialize
     # set memory jump
     @memory_jump = false
     @runTime = 100
     @runWait = 0
  #   print "ok?"+@runWait.to_s
   end


and yeah it does the low print with value so I think it is okay :)

And I also want to modify a method in this class so I logically do this (in MY script) :

Spoiler: ShowHide



module BlizzABS
 
 #============================================================================
 # BlizzABS::Controller
 #----------------------------------------------------------------------------
 #  This class is a special controller that controls the party leader.  Some
 #  input is processed instantly, while some is converted into commands to be
 #  given to the player character.
 #============================================================================
 
 class Controller
#--------------------------------------------------------------------------
   # update_control
   #  Processes player control.
   #--------------------------------------------------------------------------
   def update_control
     # ETC.
    end
  end
end


BUT THEN I want to use my small variable in the hud class with this simple line :

Spoiler: ShowHide

draw_runj if @runTime != BlizzABS::Controller.runTime


and there we are : there is no method runTime for Controller bitch
blindly follow his heart can lead to the loss

Sylphe, descendant of Zoldik Family.
Quote from: TedBearTRY KEEP UP

Greaves

Quote from: Sylphe on June 15, 2015, 03:00:20 pm

BUT THEN I want to use my small variable in the hud class with this simple line :

Spoiler: ShowHide

draw_runj if @runTime != BlizzABS::Controller.runTime


and there we are : there is no method runTime for Controller bitch


That's not the call you're supposed to use. The runTime variable that you are actually updating is inside an instance of the controller class as opposed to the class itself. That controller class instance, player, is in the processor class which is the global variable $BlizzABS. So you should be using "if @runTime != $BlizzABS.player.runTime" instead.

Sylphe

June 17, 2015, 01:38:06 pm #5326 Last Edit: June 18, 2015, 09:39:20 am by Sylphe
You right thx !! Didn't notice the low @player = Controller.new ! :3

So I'm good my running limit system for BABS works well ... And now what I was afraid of is happening : My jauge said  
QuoteFuck you I won't show up !


EDIT :
Ok I found out why x)  ... The BABS Hud don't let me place my jauge at the bottom left of screen :/
blindly follow his heart can lead to the loss

Sylphe, descendant of Zoldik Family.
Quote from: TedBearTRY KEEP UP

almog99

Quote from: almog99 on March 30, 2015, 04:19:21 am
is there chance to set speed per class? i mean like a thief class will get 6 speed and warrior class 3.
in the movement tab its set for all classes as 1 i guess, anything i can do ?
thanks.
never mind after i figured it out i feel stupid xD.
but there is another question now , i want to make a skill that can make the player dash x squares and dmg the monsters in the way , and a skill
that a player can teleport behide an enemy and damage him.
edit2:another question lol sry for so many questions , is there any way to use a double/triple slash and double/triple shot(shoot 3 projectiles at 1 time ).
Thanks alot.


its been quite a while (few months) and i figured most of it out but i still havent got a clue how to create the teleport to a enemy skill , dmg the enemy and  teleport back to the original position.
how can i create this teleport behide the enemy action ?
Thanks in advance.
Dragon Ball Z Another Timeline
https://www.youtube.com/watch?v=jHOi4sUPsDw

Sylphe

It's hard to do since the entire party is teleported when you make your player teleport. Even with $game_player.moveto(x, y) :/
but I guess you can try things with the common event calling when using your skill + the BABS skill combo system (that is a little bit glitchy... but lol)
blindly follow his heart can lead to the loss

Sylphe, descendant of Zoldik Family.
Quote from: TedBearTRY KEEP UP

KK20

Agreed. There really is no easy way to make it. Even with eventing power, I believe it's too much overhead in which you will need to actually code it yourself.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

almog99

sorry for many questions im working on my project for quiet a while and want to do the best i can and more so for this more i need you guys lol , 
anyways , is there anyway to do a beam clash ? (when im using a beam and a enemy using a beam in the same direction and it will trigger something(push the z button minigame))
and is there a way to change the beam to work like , i can hold the skill button and the beam stays on and dealing dmg everysecond?
Thanks alot in advance.
Dragon Ball Z Another Timeline
https://www.youtube.com/watch?v=jHOi4sUPsDw

KK20

Clashing beams is pretty much a script request that is too complex for the original design of BABS. For starters, beams are not represented as an entity in the game (i.e. there is no class object for them unlike projectiles) so you would have to make it first be able to detect two beams are even clashing. Then you would need to modify the main update method to allow this clashing scene to occur. It gets way too specific that it does not fit the needs of the majority.

As for holding down the skill key, there's a script that allows rapid-fire use: http://forum.chaos-project.com/index.php/topic,5053.0.html

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

almog99

August 13, 2015, 01:21:29 am #5332 Last Edit: August 19, 2015, 12:08:45 pm by almog99
Quote from: KK20 on August 12, 2015, 04:31:12 pm
Clashing beams is pretty much a script request that is too complex for the original design of BABS. For starters, beams are not represented as an entity in the game (i.e. there is no class object for them unlike projectiles) so you would have to make it first be able to detect two beams are even clashing. Then you would need to modify the main update method to allow this clashing scene to occur. It gets way too specific that it does not fit the needs of the majority.

As for holding down the skill key, there's a script that allows rapid-fire use: http://forum.chaos-project.com/index.php/topic,5053.0.html


thank you so much for always helping  :)
edit:also how can i make my enemy change sprite if he get hit by certain skill ?
Dragon Ball Z Another Timeline
https://www.youtube.com/watch?v=jHOi4sUPsDw

CloseRange

So I looked everywhere for this and I don't know if it's obvious or not but it's bugging me and it's one of the only things making me reconsider using blizz abs.
So I understand :'( that their are 2 options for the skill bar 1 where you click the spell/item and it goes to a mini hot bar below your name and health. And another where you just cast the spell/ skill straight from your main hot bar. That's the option I use
My problem is when I use items you can't tell weather you have any more of that item left it's just blank and when you run out of the item it stays their. I was hoping their was a way for it to display on the hot bar how many of the item you have left or when you run out of it then it disappears from hot bar/turns grey. Or both of those of possible. Please help I'm so lost   :'(
Thanks in advance

KK20

Thankfully I remember doing this for someone before a while back. Their HUD was positioned differently so I had to fiddle with the numbers again to get it back to default:

class Hotkey_Assignment < Sprite
 
 def initialize(viewport = nil)
   # call superclass
   super
   # create bitmap
   self.bitmap = Bitmap.new(320, 32)
   # set font to bold
   self.bitmap.font.bold = true
   # decrease font size
   self.bitmap.font.size -= 8
   # set font color
   self.bitmap.font.color = system_color
   # Item quantities (set-up properties) ====================
   @item_qty_sprite = Sprite.new(viewport)
   @item_qty_sprite.bitmap = Bitmap.new(320, 32)
   @item_qty_sprite.x = 164
   @item_qty_sprite.y = 0
   @item_qty_sprite.bitmap.font.name = "Arial"
   @item_qty_sprite.bitmap.font.color = Color.new(255,255,255,255)
   @item_qty_sprite.bitmap.font.size = 12
   @old_qty = {}
   # End =====================================================
   # set x and y position
   self.x, self.y, self.z = 160, 0, 1100
   # skill IDs on hotkeys
   @skills = BlizzABS::Cache::EmptyKeys
   # item IDs on hotkeys
   @items = BlizzABS::Cache::EmptyKeys
   # update display
   update
 end
 
 alias set_qty_z z=
 def z=(amt)
   @item_qty_sprite.z = amt + 100
   set_qty_z(amt)
 end
 
   def draw(index = nil)
   # iterate through all hotkeys
   (index == nil ? BlizzABS::Cache::HotkeyRange : [index]).each {|i|
       # if hotkey is skill hotkey
       if $game_player.skill_hotkeys[i%10] != 0
         # temporary object
         object = $data_skills[$game_player.skill_hotkeys[i%10]]
       # if hotkey is item hotkey
       elsif $game_player.item_hotkeys[i%10] != 0
         # temporary object
         object = $data_items[$game_player.item_hotkeys[i%10]]
         qty = $game_party.item_number(object.id)
       end
       # if any change applied (10 is used for 0)
       if @items[i%10] != $game_player.item_hotkeys[i%10] ||
           @skills[i%10] != $game_player.skill_hotkeys[i%10]
         # remove this icon
         self.bitmap.fill_rect(32*(i-1), 0, 32, 32, Color.new(0, 0, 0, 0))
         # fill icon bachground
         self.bitmap.fill_rect(32*(i-1)+4, 4, 24, 24, Color.new(0, 0, 0, 128))
         # if object exists
         if object != nil
           # load bitmap
           bitmap = RPG::Cache.icon(object.icon_name)
           # Draw item quantity
           if qty != nil
             @old_qty[object.id] = -1
             update_item_qty(i)
           else
             @item_qty_sprite.bitmap.fill_rect(32*(i-1), 10, 32, 32, Color.new(0,0,0,0))
           end
           # draw bitmap
           self.bitmap.blt(32*(i-1)+4, 4, bitmap, Rect.new(0, 0, 24, 24))
         end
         # draw hotkey number
         self.bitmap.draw_text_full(32*(i-1), 10, 30, 32, (i%10).to_s, 2)
       end}
   # set new items
   @items = $game_player.item_hotkeys.clone
   # set new skills
   @skills = $game_player.skill_hotkeys.clone
 end
 
 def update_item_qty(index = nil)
   items_done = []
   (index == nil ? BlizzABS::Cache::HotkeyRange : [index]).each {|i|
     if $game_player.item_hotkeys[i%10] != 0
       object_id = $game_player.item_hotkeys[i%10]
       qty = $game_party.item_number(object_id)
       if items_done.include?(object_id) || qty != @old_qty[object_id]
         # Set new quantity
         @old_qty[object_id] = qty
         # Clear old quantity number
         @item_qty_sprite.bitmap.fill_rect(32*(i-1), 10, 32, 32, Color.new(0,0,0,0))
         @item_qty_sprite.bitmap.draw_text_full(32*(i-1)+1, 10, 32, 32, qty.to_s)
         # If this item has any duplicates in hotkeys, make changes to them too
         items_done.push(object_id)
       end
     end
   }
 end
 
 alias dispose_all_sprites dispose
 def dispose
   @item_qty_sprite.dispose
   dispose_all_sprites
 end
 
 alias hud_update update
 def update
   $game_system.hotkeys = $game_system.hud
   @item_qty_sprite.visible = $game_system.hud
   update_item_qty if @item_qty_sprite.visible
   hud_update
 end
 
end

Paste below BlizzABS scripts.

Other Projects
RPG Maker XP Ace  Upgrade RMXP to RMVXA performance!
XPA Tilemap  Tilemap rewrite with many features, including custom resolution!

Nintendo Switch Friend Code: 8310-1917-5318
Discord: KK20 Tyler#8901

Join the CP Discord Server!

almog99

August 25, 2015, 07:18:17 pm #5335 Last Edit: August 26, 2015, 04:27:52 am by almog99
something really weird , i started new project aside my current one and i using same scripts exactly and same config exactly(copy pasted Scripts.dat) and when an enemy die in my new project the events running as parallel proccess and in my main project its running like erase event(which is what i want)
for example in the new one when an enemy die and i want to use show text:"example" so its keep repeating "example" as a parallel proccess would , but in my main project(the original) it will just run once :"example" and thats it.
any ideas why its happening because im really confused... :wacko:
after playing with the files for a while something i did fixed it , no clue what but at least its ok now lol
Dragon Ball Z Another Timeline
https://www.youtube.com/watch?v=jHOi4sUPsDw

G_G

Not entirely sure what's going on, may be a Windows 10 issue, but when I open the help file, every page is completely blank.

Spoiler: ShowHide


Any ideas from anyone?

Blizzard

Tried this yet?

Quote from: Blizzard on January 09, 2008, 08:21:56 am
If you have problems opening the .chm manual file, please read this article: http://blogs.technet.com/seanearp/archive/2007/05/28/can-t-read-chm-compiled-help-on-vista-xp-2003.aspx
The solution is at the bottom, you don't need to read the whole article.


I think it's a security issue or something. :/
Check out Daygames and our games:

King of Booze 2      King of Booze: Never Ever
Drinking Game for Android      Never have I ever for Android
Drinking Game for iOS      Never have I ever for iOS


Quote from: winkioI do not speak to bricks, either as individuals or in wall form.

Quote from: Barney StinsonWhen I get sad, I stop being sad and be awesome instead. True story.

G_G

Woo! That worked, thank you. xD

Marauder93

I have a serious problem w/ Blizz ABS v2.84 that has stopped my entire game.

Killing enemies does not give any EXP when the Destruction Engine Emulator death animation option is on, which I'd love to keep on! But when its on, no EXP is given to the main character or other party members. What's going on here? What do I have to do to get around it?

I couldn't see a post new topic option in the main forums. Figured this would be the next best place.

I hope someone can help me out. I hope it's an easy fix. Huge thanks...