• All, I am currently in the process of migrating domain registrations. During this time there may be some intermittent outages or slowdowns. Please contact staff if you have any questions.

OBCharEditor

Nice editing tool. I like this. I like how that tool gives response to entities. But there's some error I found which causes a crash It's where you put this # after the frame path. When I put # in there, it pops up as error. I use # after the frame path because there would be so many frames I would use in a single animation like up to 100 and so on.

Code:
anim    jump
#@script
       int player = getlocalvar("player"); // This calls the entity
       int self = getentityproperty(player, "entity"); // This one calls for player index
       int attack2 = playerkeys(self, 1, "attack2"); // With player index in, attack2 button can be activated with a press if it's being called
       if(frame == 0 && frame < 5){ // WATCH OUT FOR FRAME COUNTS
          if(attack2){
             performattack(self, openborconstant("ANI_FREESPECIAL19"));
          }
       }
    @end_script    
    bbox    147 96 28 108
    offset    162 202
    delay    10
#    cancel    0 4 0 a2 freespecial19
    loop    1 3 5
    landframe    5
    frame    data/chars/billy/jump01.png # 0 as first frame
    bbox    142 101 49 90
    frame    data/chars/billy/jump02.png # 1 as second frame
    bbox    142 114 47 50
    frame    data/chars/billy/jump03.png # 2 as third frame
    bbox    147 96 28 108
    frame    data/chars/billy/jump04.png # 3
    frame    data/chars/billy/jump05.png # 4
    frame    data/chars/billy/land03.png # 5
     frame    data/chars/billy/land04.png # 6

Also, I notice there's animationscript listed in the Anims box as first. It goes like this "ation data/scripts/script.c". You should leave the animationscript in the character header and have others (last ones) be listed along with animationscript there.

Code:
name    Billy #name {name}
type    player #type {type}
gfxshadow 1 #gfxshadow {bi}
health    100 #health {int}
speed    10 #speed {int}
running    19 4 2 1 1 #running {speed} {height} {length} {move} {land}
turndelay  1  #turndelay {int}
atchain    1 1 2 7 #atchain {number} {number} {number} {number} {number} ......
combostyle 1 #combostyle {bool} bool 0 (default); old chain system; max attacks: 5... bool 1; new chain system; max attacks: 12
mp         100 #mp {value}
holdblock 1 #holdblock {bi}
palette    data/chars/billy/cvsmap.png #palette {path}
alternatepal data/chars/billy/idle01.png #alternatepal {path}
projectilehit enemy

jumpheight 8
com d f a freespecial #com {direction} {direction}..... {action} {freespecial#}
com d b a freespecial2
animationscript data/scripts/script.c
com a2 freespecial3
com d u d u a freespecial9
#keyscript data/scripts/walljump.c
#script data/scripts/playerent.c
onmoveascript data/chars/platform/movea.c
onblockwscript data/chars/platform/wall.c
#ondrawscript data/scripts/DEBUG_GRAB.c

I suggest you allow # next to the frame path, so users can use it if they're going to put as many frames they want/cant to put in an animation.

Notice I scrolled all the way down in the header section. It doesn't show the last ones after animationscript.
 

Attachments

  • obcharedit-error0000.png
    obcharedit-error0000.png
    73 KB · Views: 47
  • obcharedit-error0001.png
    obcharedit-error0001.png
    76.5 KB · Views: 47
thanks for the report, any other report will be welcome too.

I attached a new version with those three detected problems are fixed.
 
Last edited:
Nice editing tool. I like this. I like how that tool gives response to entities. But there's some error I found which causes a crash It's where you put this # after the frame path. When I put # in there, it pops up as error. I use # after the frame path because there would be so many frames I would use in a single animation like up to 100 and so on.

Code:
anim    jump
#@script
       int player = getlocalvar("player"); // This calls the entity
       int self = getentityproperty(player, "entity"); // This one calls for player index
       int attack2 = playerkeys(self, 1, "attack2"); // With player index in, attack2 button can be activated with a press if it's being called
       if(frame == 0 && frame < 5){ // WATCH OUT FOR FRAME COUNTS
          if(attack2){
             performattack(self, openborconstant("ANI_FREESPECIAL19"));
          }
       }
    @end_script   
    bbox    147 96 28 108
    offset    162 202
    delay    10
#    cancel    0 4 0 a2 freespecial19
    loop    1 3 5
    landframe    5
    frame    data/chars/billy/jump01.png # 0 as first frame
    bbox    142 101 49 90
    frame    data/chars/billy/jump02.png # 1 as second frame
    bbox    142 114 47 50
    frame    data/chars/billy/jump03.png # 2 as third frame
    bbox    147 96 28 108
    frame    data/chars/billy/jump04.png # 3
    frame    data/chars/billy/jump05.png # 4
    frame    data/chars/billy/land03.png # 5
     frame    data/chars/billy/land04.png # 6

Also, I notice there's animationscript listed in the Anims box as first. It goes like this "ation data/scripts/script.c". You should leave the animationscript in the character header and have others (last ones) be listed along with animationscript there.

Code:
name    Billy #name {name}
type    player #type {type}
gfxshadow 1 #gfxshadow {bi}
health    100 #health {int}
speed    10 #speed {int}
running    19 4 2 1 1 #running {speed} {height} {length} {move} {land}
turndelay  1  #turndelay {int}
atchain    1 1 2 7 #atchain {number} {number} {number} {number} {number} ......
combostyle 1 #combostyle {bool} bool 0 (default); old chain system; max attacks: 5... bool 1; new chain system; max attacks: 12
mp         100 #mp {value}
holdblock 1 #holdblock {bi}
palette    data/chars/billy/cvsmap.png #palette {path}
alternatepal data/chars/billy/idle01.png #alternatepal {path}
projectilehit enemy

jumpheight 8
com d f a freespecial #com {direction} {direction}..... {action} {freespecial#}
com d b a freespecial2
animationscript data/scripts/script.c
com a2 freespecial3
com d u d u a freespecial9
#keyscript data/scripts/walljump.c
#script data/scripts/playerent.c
onmoveascript data/chars/platform/movea.c
onblockwscript data/chars/platform/wall.c
#ondrawscript data/scripts/DEBUG_GRAB.c

I suggest you allow # next to the frame path, so users can use it if they're going to put as many frames they want/cant to put in an animation.

Notice I scrolled all the way down in the header section. It doesn't show the last ones after animationscript.
hi, maxman, have you tried latest version?
 
I did. I just found another error which pops up. I can see that program only reads through one certain character txt directly from the character folder in code every time you open a character txt. As in Billy character in the billy.txt, with billy folder, but with other folder names in code, it gets error. Is it from the certain character folder or is it to avoid having colors getting mixed badly? For example, I use empty.gif from the misc folder because I use that as a blank image for making the char not being seen in certain animations before changing frames to make the sprites show.

Code:
anim    respawn
@script
    void self = getlocalvar("self");
    setglobalvar("JJ" + self, 40);
    setglobalvar("Max" + self, 40);
    int x = getindexedvar(0); //Get respawn x coordinate
    int z = getentityproperty(self,"z"); //Get character's z coordinate
    int a = getindexedvar(1); //Get respawn a coordinate

    if(x==NULL()){
      x = getentityproperty(self, "x");
    }

    if(a!=NULL()){
      if(frame == 1){
        changeentityproperty(self, "position", x, z, a);
      }
    }
    @end_script   
    delay 20
    offset 1 1
    frame    data/chars/misc/empty.gif
    delay    1
    offset    25 79
    frame    data/chars/jj/idle01.png
    @cmd    setglobalvar "last_player_spawned" getlocalvar("self")
    frame    data/chars/jj/idle01.png

Yeah, that empty.gif only has one color box (indexed mode) and it's got only a transparent background color. It's 1x1 pixel image.
 
Last edited:
I did. I just found another error which pops up. I can see that program only reads through one certain character txt directly from the character folder in code every time you open a character txt. As in Billy character in the billy.txt, with billy folder, but with other folder names in code, it gets error. Is it from the certain character folder or is it to avoid having colors getting mixed badly? For example, I use empty.gif from the misc folder because I use that as a blank image for making the char not being seen in certain animations before changing frames to make the sprites show.

Code:
anim    respawn
@script
    void self = getlocalvar("self");
    setglobalvar("JJ" + self, 40);
    setglobalvar("Max" + self, 40);
    int x = getindexedvar(0); //Get respawn x coordinate
    int z = getentityproperty(self,"z"); //Get character's z coordinate
    int a = getindexedvar(1); //Get respawn a coordinate

    if(x==NULL()){
      x = getentityproperty(self, "x");
    }

    if(a!=NULL()){
      if(frame == 1){
        changeentityproperty(self, "position", x, z, a);
      }
    }
    @end_script  
    delay 20
    offset 1 1
    frame    data/chars/misc/empty.gif
    delay    1
    offset    25 79
    frame    data/chars/jj/idle01.png
    @cmd    setglobalvar "last_player_spawned" getlocalvar("self")
    frame    data/chars/jj/idle01.png

Yeah, that empty.gif only has one color box (indexed mode) and it's got only a transparent background color. It's 1x1 pixel image.
thanks for the new report, again .
I attached a new version with that problem is fixed.
 
Tested it... prety cool , as of now theres really no extra funcionality besides seeing animations play , so for now its a text editor and anim viewer/player.
Id make all anims loop when playing, clicking just to play once can be irritating after awhile especially with short anims.
Shortcuts to play would help.
Having full txt file visible as an option would be nice to copy/paste multiple frames between anims easier. IMO that place where you see header txt stuff needs entire txt file visible/editable, not just header.
Good start , I like the split of commands/functions for each frame so i hope it wont delete things it does not know and will leave all scripts and all weird symbols intact. even if theyre random blabbing, dont make it "clean up" txt files
Also i recommend that you make people specify data folder to load models,txt, and then pick their txt with character to edit or something similar, cause a lot of times different characters have files that come from all over the place in data folder , we dont use just that one character folder for everything.
 
Last edited:
Tested it... prety cool , as of now theres really no extra funcionality besides seeing animations play , so for now its a text editor and anim viewer/player.
Id make all anims loop when playing, clicking just to play once can be irritating after awhile especially with short anims.
Shortcuts to play would help.
Having full txt file visible as an option would be nice to copy/paste multiple frames between anims easier. IMO that place where you see header txt stuff needs entire txt file visible/editable, not just header.
Good start , I like the split of commands/functions for each frame so i hope it wont delete things it does not know and will leave all scripts and all weird symbols intact. even if theyre random blabbing, dont make it "clean up" txt files
Also i recommend that you make people specify data folder to load models,txt, and then pick their txt with character to edit or something similar, cause a lot of times different characters have files that come from all over the place in data folder , we dont use just that one character folder for everything.
thanks for the report.
I had in mind to add some things that you said here.
The program try to touch only the neccesary lines of the code leaving the rest of the lines unaltered so you shouldn't lose anything, comments, scripts or anywere.
 
I will stick with chronocrash modders tools as its cross platform and open souce.

No offence its just if you make a tool people like then you dissappear people will be stuck with a nice tool that cant be updated as it was closed source. I have seen it happen before. Plus i use Linux as my main desktop.
 
I like this OBeitor 1.5.9 However, it crashes very often and there is no way to reset it without going to the Regedit. Is there a new version of this? Thank you
 
I like this OBeitor 1.5.9 However, it crashes very often and there is no way to reset it without going to the Regedit. Is there a new version of this? Thank you
@Bruce:

You should tag the original poster: @dcelso. He hasn't logged in for a few months, but will hopefully come back around. I think this editor has some potential.

DC
 
Can you explain it in more detail?
Picolo has been updating his Chronocrash Modders Tools and on going updates. I think It is much more stable. I'll just stick with it
Thank you for your hardwork anyway
 
Last edited:
Back
Top Bottom