How to use 8-dirrections IDLE,WALK,ATTACK animations?

WALK (players, enemies, projectiles)

    ~Optional for non-moving enemies. They won't use it, so why give it to them?
    ~The animation for an entity walking left or right.
    ~If a character does not have UP and DOWN animations, they will use this instead when walking up or down.
    ~Projectiles only use this if they are homing projectiles. For this purpose, 'range' is supported.
    ~Entity can have more WALK animations, see below.


WALK#

    ~Played if there's opponent within set 'range' while in WALK.
    ~Works just like IDLE# above except it's for WALK.
    ~Before using this, increase the maximum number of WALK with 'maxwalks' in models.txt (see Models.txt above).


WALKOFF {players, enemies}

    ~Optional
    ~This animation is played when entity walks off platforms or walls
    ~WALK animation usually won't look good when entity is falling while walking so use this animation too to make entity look better :)


BACKWALK {players, enemies}

    ~Optional.
    ~Players play this only if they have 'facing' set.
    ~Enemies will play this if they move backwards while facing players.
    ~Entity can have more BACKWALK animations, see below.


BACKWALK#

    ~Played if there's opponent within set 'range' while in BACKWALK.
    ~Works just like IDLE# above except it's for BACKWALK.
    ~Before using this, increase the maximum number of BACKWALK with 'maxbackwalks' in models.txt (see Models.txt above).


TURN

    ~Optional.
    ~For players and enemies.
    ~This animation will be played when players or enemies turn back after walking backwards with BACKWALK.


UP {players, enemies}

    ~Optional.
    ~Played when the character walk up, up-left, or up-right.
    ~For this animation to work correctly, it must have the same number of frames as the WALK animation.
    ~Entity can have more UP animations, see below.


UP#

    ~Played if there's opponent within set 'range' while in UP.
    ~Works just like IDLE# above except it's for UP.
    ~Before using this, increase the maximum number of UP with 'maxups' in models.txt (see Models.txt above).


DOWN {players, enemies}

    ~Optional.
    ~Played when the character walk down, down-left, or down-right.
    ~For this animation to work correctly, it must have the same number of frames as the WALK animation.
    ~Entity can have more DOWN animations, see below.


DOWN#

    ~Played if there's opponent within set 'range' while in DOWN.
    ~Works just like IDLE# above except it's for DOWN.
    ~Before using this, increase the maximum number of DOWN with 'maxdowns' in models.txt (see Models.txt above).

This is from the instructions,

so it seems that yo have to use

DOWN

down 1

down 2

so by default openBOr can do 4 directions,
so for example down
its going to be tricky to set up down 1  & down 2 to work well tho
 
ITs not just that, he will need idle different for each direction, then pain different for each direction if used and attack different for each direction, all animations, and you need to make a lot of variables to prevent default behaviours jumping in.
 
Bloodbane said:
Let me confirm this: are you making top down view game?
Yes, something like RockNRoll Racing ingame camera...


oldyz said:
so by default openBOr can do 4 directions,
Thanks to trying to help, I already use 4 dirrections to walk, but it needs more...

bWWd said:
ITs not just that, he will need idle different for each direction, then pain different for each direction if used and attack different for each direction, all animations, and you need to make a lot of variables to prevent default behaviours jumping in.
Yes, it needs to use 8 dirrections to IDLE, 8 to WALK, 8 to JUMP, 8 to ATTACK and 2 to PAIN (left&right, its already done)... and it needs to make soft turn to all 8 dirrections
 
You would need variables enabled when being in all 8 directions , then do checks in onpainscript to go to correct pain, of course if you have more than 1 player you need playerindex to separate them so each player has his own variable.
DC said globalvars arent needed most of the time , i guess you could use local.
Code:
@cmd	setlocalvar("down", 1)
Code:
@cmd	setlocalvar("downleft", 1)
Code:
@cmd	setlocalvar("left", 1)
Code:
@cmd	setlocalvar("leftup", 1)
Code:
@cmd	setlocalvar("up", 1)
Code:
@cmd	setlocalvar("upright", 1)
Code:
@cmd	setlocalvar("right", 1)
Code:
@cmd	setlocalvar("rightdown", 1)

Varialbes are required to read by onpainscript for example so they change anim immediately to correct one.

So... IF you would have downloadable very small demo with only 1 player and required frames for all directions, and one enemy so stage wouldnt close, then maybe people would be willing to tinker with it and create it, but helping with this remotely without actually trying what works, would be hard.
In short - this is something you would have to code from ground up and actually not use default openbor mechanics that much  besides header c scripts to detect correct directions and switch.

I also made this with help of bloodbanes method for contra long time ago, its like a racing car movement

Code:
name       carw
type	    		none
health				100
speed    0
mp  0
shadow				0
noquake				1
cantgrab			1
notgrab				1
nodieblink			1
makeinv				1	0
falldie				2
riseinv				1	1
jugglepoints		15
nolife				1
atchain 0
modelflag   3
weaploss 3
weapnum    1
nomove  1 1
 candamage  enemy
 animationscript    data/sprites/script.c
 nopain  1
 nodrop  1
 subject_to_platform  1
 subject_to_screen  1
gfxshadow 1
 icon  	data/sprites/micon.gif   





anim	follow10
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -3 ,1);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 2 ,-0.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -120
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW11" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW9" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW11" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW9" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow11
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -2.5 ,2.5);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 1.5 ,-1.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -135
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW12" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW10" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW12" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW10" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow12
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -1 ,3);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 0.5 ,-2);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -160
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow13" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW11" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW13" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW11" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow13
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 0 ,4);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 0 ,-2.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 180
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow14" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW12" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW14" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW12" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow14
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 1 ,3);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -0.5 ,-2);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 160
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow15" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW13" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW15" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW13" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow15
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 2.5 ,2.5);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -1.5 ,-1.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 135
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow16" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW14" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW16" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW14" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow16
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 3 ,1);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -2 ,-0.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 120
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_jumpdelay" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW15" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_jumpdelay" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW15" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow2
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 3 ,-1);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -2 ,0.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	drawmethod	rotate 70
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW3" 1 "L" 0
	@cmd	keyint "ANI_JUMPDELAY" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW3" 2 "L" 0
	@cmd	keyint "ANI_JUMPDELAY" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow3
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 2.5 ,-2.5);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -1.5 ,1.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	drawmethod	rotate 45
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow4" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW2" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	offset	47 58
	bbox	6 5 83 98
	@cmd	keyint "ANI_follow4" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW2" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
		
anim	follow4
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 1 ,-3);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -0.5 ,2);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 20
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow5" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW3" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	offset	47 58
	bbox	6 5 83 98
	@cmd	keyint "ANI_follow5" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW3" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
		
anim	follow5
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 0 ,-4);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 0 ,2.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow6" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW4" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow6" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW4" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow6
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -1 ,-3);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 0.5 ,2);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	drawmethod	rotate -20
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW7" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW5" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW7" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW5" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow7
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -2.5,-2.5);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 1.5 ,1.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	drawmethod	rotate -45
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW8" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW6" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW8" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW6" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow8
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -3 ,-1);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 2 ,0.5);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -70
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW9" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW7" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	46 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW9" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW7" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow9
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -4 ,0);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 2.5 ,0);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -90
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW10" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW8" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW10" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW8" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	idle
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                         void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 4 ,0);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		        if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -2.5 ,0);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 90
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	46 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	jump
	loop	1
	offset	9 12
	bbox	5 1 4 9
	delay	2
	drawmethod	rotate 90
	drawmethod	fliprotate 1
	frame	data/sprites/car.gif
		
anim	jumpdelay
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                         void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 4 ,0);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		        if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -2.5 ,0);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 90
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	46 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	pain1
	loop	0
	offset	46 58
	bbox	6 5 83 98
	delay	50
	frame	data/sprites/mark.gif
	delay	15
	frame	data/sprites/mark.gif
		
anim	spawn
	loop	0
    @script
    void self = getlocalvar("self");
    int x = getindexedvar(0); //Get respawn x coordinate
    int z = getindexedvar(1); //Get respawn a coordinate
     if(frame >= 0 ){
     changeentityproperty(self, "position", x, z);
     }
	@end_script	
	offset	46 58
	bbox	6 5 83 98
	delay	2
	frame	data/sprites/0.gif
	frame	data/sprites/0.gif

		
#|edited by openBor Stats v 0.67
 
bWWd said:
You would need variables enabled when being in all 8 directions , then do checks in onpainscript to go to correct pain, of course if you have more than 1 player you need playerindex to separate them so each player has his own variable.
DC said globalvars arent needed most of the time , i guess you could use local.
Code:
@cmd	setlocalvar("down", 1)
Code:
@cmd	setlocalvar("downleft", 1)
Code:
@cmd	setlocalvar("left", 1)
Code:
@cmd	setlocalvar("leftup", 1)
Code:
@cmd	setlocalvar("up", 1)
Code:
@cmd	setlocalvar("upright", 1)
Code:
@cmd	setlocalvar("right", 1)
Code:
@cmd	setlocalvar("rightdown", 1)

Varialbes are required to read by onpainscript for example so they change anim immediately to correct one.

So... IF you would have downloadable very small demo with only 1 player and required frames for all directions, and one empty enemy so stage wouldnt close, then maybe people would be willing to tinker with it and create it, but helping with this remotely without actually trying what works, would be hard.

i suppose this is better, i had a silly idea where up left , up right, down left, & downright "spawn" or summon linked floating invisible entities that makes your walk , idles, etc activate their frames through range detection.

i would upload a picture, but i have found out that uploading to the forum "breaks" my internet connection so here is a text representation:

UL                                UR


                X


DL                                DR

so every time player presses UR, the UR entity appears at the exact range that activates your UR variants, if you press any other direction direction it dissapears....
(i cant remember the word used for "linked" entities, like a skate board, or an angel's halo or floating orbs that move along with you)
 
animscript c:
Code:
// Script for players



void keyint(void Ani, int Frame, void Key, int Hflag, int Vx, int Vz)
{// Change current animation if proper key is pressed or released
// Animation is changed to attack mode

    void self = getlocalvar("self");
    int Dir = getentityproperty(self, "direction");
    int iPIndex = getentityproperty(self,"playerindex"); //Get player index
    void iRKey;

      if (Key=="U"){ //Up Required?
        iRKey = playerkeys(iPIndex, 0, "moveup"); // "Up"
      } else if (Key=="D"){ //Down Required?
        iRKey = playerkeys(iPIndex, 0, "movedown"); // "Down"
      } else if (Key=="L"){ //Left Required?
        iRKey = (playerkeys(iPIndex, 0, "moveleft")&&playerkeys(iPIndex, 0, "jump")); // "Left"
      } else if (Key=="R"){ //Right Required?
        iRKey = (playerkeys(iPIndex, 0, "moveright")&&playerkeys(iPIndex, 0, "jump")); // "Right"
      } else if (Key=="F"){ //Forward Required?
        if (Dir == 0){ // Facing Left?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Right
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="B"){ //Backward Required?
        if (Dir == 1){ // Facing Right?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Left
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="J"){ //Jump Required?
        iRKey = playerkeys(iPIndex, 0, "jump"); // "Jump"
      } else if (Key=="A"){ //Attack Required?
        iRKey = playerkeys(iPIndex, 0, "attack"); // "Attack"
      } else if (Key=="S"){ //Special Required?
        iRKey = playerkeys(iPIndex, 0, "special"); // "Special"
      }

      if (Hflag==1){ //Not holding the button case?
        iRKey = !iRKey; //Take the opposite condition
      }

      if (iRKey){
        dasher( Vx, 0, Vz, 1 ); //Move!
        if (Ani=="ANI_IDLE"){ // Going idle?
          setidle(self, openborconstant("ANI_IDLE")); //Be idle!
        } else {
          performattack(self, openborconstant(Ani)); //Change the animation
        }
//        updateframe(self, Frame); //Change frame
          changeentityproperty(self, "animpos", Frame); //Change frame
      }
}


void dasher( float Vx, float Vy, float Vz, int Flip)
{// Dash with desired speed!
    void self = getlocalvar("self");
    int dir = getentityproperty(self,"direction");

    if(dir==0 && Flip==1){ // Facing left?
      Vx = -Vx ;
    }

    changeentityproperty(self, "velocity", Vx, Vz, Vy); //Move!
}
Oldyz its generally better to justcode it like it is, detect correct states and change anims accordingly instead of faking it around with invisible stuff.
 
bWWd said:
animscript c:
Code:
// Script for players



void keyint(void Ani, int Frame, void Key, int Hflag, int Vx, int Vz)
{// Change current animation if proper key is pressed or released
// Animation is changed to attack mode

    void self = getlocalvar("self");
    int Dir = getentityproperty(self, "direction");
    int iPIndex = getentityproperty(self,"playerindex"); //Get player index
    void iRKey;

      if (Key=="U"){ //Up Required?
        iRKey = playerkeys(iPIndex, 0, "moveup"); // "Up"
      } else if (Key=="D"){ //Down Required?
        iRKey = playerkeys(iPIndex, 0, "movedown"); // "Down"
      } else if (Key=="L"){ //Left Required?
        iRKey = (playerkeys(iPIndex, 0, "moveleft")&&playerkeys(iPIndex, 0, "jump")); // "Left"
      } else if (Key=="R"){ //Right Required?
        iRKey = (playerkeys(iPIndex, 0, "moveright")&&playerkeys(iPIndex, 0, "jump")); // "Right"
      } else if (Key=="F"){ //Forward Required?
        if (Dir == 0){ // Facing Left?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Right
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="B"){ //Backward Required?
        if (Dir == 1){ // Facing Right?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Left
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="J"){ //Jump Required?
        iRKey = playerkeys(iPIndex, 0, "jump"); // "Jump"
      } else if (Key=="A"){ //Attack Required?
        iRKey = playerkeys(iPIndex, 0, "attack"); // "Attack"
      } else if (Key=="S"){ //Special Required?
        iRKey = playerkeys(iPIndex, 0, "special"); // "Special"
      }

      if (Hflag==1){ //Not holding the button case?
        iRKey = !iRKey; //Take the opposite condition
      }

      if (iRKey){
        dasher( Vx, 0, Vz, 1 ); //Move!
        if (Ani=="ANI_IDLE"){ // Going idle?
          setidle(self, openborconstant("ANI_IDLE")); //Be idle!
        } else {
          performattack(self, openborconstant(Ani)); //Change the animation
        }
//        updateframe(self, Frame); //Change frame
          changeentityproperty(self, "animpos", Frame); //Change frame
      }
}


void dasher( float Vx, float Vy, float Vz, int Flip)
{// Dash with desired speed!
    void self = getlocalvar("self");
    int dir = getentityproperty(self,"direction");

    if(dir==0 && Flip==1){ // Facing left?
      Vx = -Vx ;
    }

    changeentityproperty(self, "velocity", Vx, Vz, Vy); //Move!
}
Oldyz its generally better to justcode it like it is, detect correct states and change anims accordingly instead of faking it around with invisible stuff.Its bindentity, it could work but its strange way to do it, you would have to take into account what will happen when that other entity disappears in some circumstances .

 
bWWd said:
bWWd said:
animscript c:
Code:
// Script for players



void keyint(void Ani, int Frame, void Key, int Hflag, int Vx, int Vz)
{// Change current animation if proper key is pressed or released
// Animation is changed to attack mode

    void self = getlocalvar("self");
    int Dir = getentityproperty(self, "direction");
    int iPIndex = getentityproperty(self,"playerindex"); //Get player index
    void iRKey;

      if (Key=="U"){ //Up Required?
        iRKey = playerkeys(iPIndex, 0, "moveup"); // "Up"
      } else if (Key=="D"){ //Down Required?
        iRKey = playerkeys(iPIndex, 0, "movedown"); // "Down"
      } else if (Key=="L"){ //Left Required?
        iRKey = (playerkeys(iPIndex, 0, "moveleft")&&playerkeys(iPIndex, 0, "jump")); // "Left"
      } else if (Key=="R"){ //Right Required?
        iRKey = (playerkeys(iPIndex, 0, "moveright")&&playerkeys(iPIndex, 0, "jump")); // "Right"
      } else if (Key=="F"){ //Forward Required?
        if (Dir == 0){ // Facing Left?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Right
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="B"){ //Backward Required?
        if (Dir == 1){ // Facing Right?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Left
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="J"){ //Jump Required?
        iRKey = playerkeys(iPIndex, 0, "jump"); // "Jump"
      } else if (Key=="A"){ //Attack Required?
        iRKey = playerkeys(iPIndex, 0, "attack"); // "Attack"
      } else if (Key=="S"){ //Special Required?
        iRKey = playerkeys(iPIndex, 0, "special"); // "Special"
      }

      if (Hflag==1){ //Not holding the button case?
        iRKey = !iRKey; //Take the opposite condition
      }

      if (iRKey){
        dasher( Vx, 0, Vz, 1 ); //Move!
        if (Ani=="ANI_IDLE"){ // Going idle?
          setidle(self, openborconstant("ANI_IDLE")); //Be idle!
        } else {
          performattack(self, openborconstant(Ani)); //Change the animation
        }
//        updateframe(self, Frame); //Change frame
          changeentityproperty(self, "animpos", Frame); //Change frame
      }
}


void dasher( float Vx, float Vy, float Vz, int Flip)
{// Dash with desired speed!
    void self = getlocalvar("self");
    int dir = getentityproperty(self,"direction");

    if(dir==0 && Flip==1){ // Facing left?
      Vx = -Vx ;
    }

    changeentityproperty(self, "velocity", Vx, Vz, Vy); //Move!
}
Oldyz its generally better to justcode it like it is, detect correct states and change anims accordingly instead of faking it around with invisible stuff.Its bindentity, it could work but its strange way to do it, you would have to take into account what will happen when that other entity disappears in some circumstances .

bWWd
indeed, i hope the OP posts a brief tutorial of how he got it working, my main problem with scripts is that i don't know when they are supposed to go on a folder , or when they are supposed to be added to an entitie's .txt file directly, & other 2 ways that i think i see in NS, so after a while it gets frustrating....
 
bWWd said:
You would need variables enabled when being in all 8 directions , then do checks in onpainscript to go to correct pain, of course if you have more than 1 player you need playerindex to separate them so each player has his own variable.
DC said globalvars arent needed most of the time , i guess you could use local.
Code:
@cmd   setlocalvar("down", 1)
Code:
@cmd   setlocalvar("downleft", 1)
Code:
@cmd   setlocalvar("left", 1)
Code:
@cmd   setlocalvar("leftup", 1)
Code:
@cmd   setlocalvar("up", 1)
Code:
@cmd   setlocalvar("upright", 1)
Code:
@cmd   setlocalvar("right", 1)
Code:
@cmd   setlocalvar("rightdown", 1)

Varialbes are required to read by onpainscript for example so they change anim immediately to correct one.

So... IF you would have downloadable very small demo with only 1 player and required frames for all directions, and one enemy so stage wouldnt close, then maybe people would be willing to tinker with it and create it, but helping with this remotely without actually trying what works, would be hard.
In short - this is something you would have to code from ground up and actually not use default openbor mechanics that much  besides header c scripts to detect correct directions and switch.

I also made this with help of bloodbanes method for contra long time ago, its like a racing car movement

Sorry for my bad English... but one standart PAIN animation to both dirrections is compleate enoth to this character (and all enother too) in my project. I actually needs to use default Openbor mechanics to most characters, but needs 8dirrections mechanic only to one new character.
This character must be maximally portable as maximum can be real (minimum enhancement default Engine mechanics and files).

I cant upload my mod in current state, it have many disfinnished things and spoilers. If i start to cut project, it may not be runnable in short time

If You can and want to help with examle, please use blank Engine or any BOR mod and this sprites:
77597.png

images
 
I posted solution for you , check my posts above with code in them, this is animation txt file for a car entity, just replace images with your own, and check if its what you wanted.
 
bWWd said:
I posted solution for you , check my posts above with code in them, this is animation txt file for a car entity, just replace images with your own, and check if its what you wanted.
Here is a test Openbor:
https://drive.google.com/file/d/1Q8zLPKI1kUUbbQusxxU4ne71QxqsqAVS/view?usp=sharing
I just create craw character with Your txt settings, and put gif's, already add character in models.txt

OBOR error is script.c file not found...
Can I see Your script.c and car.gif files?
 
Code:
name       carw
type	    		player
health				100
speed    20
mp  0
shadow				0
noquake				1
cantgrab			1
notgrab				1
nodieblink			1
makeinv				1	0
falldie				2
riseinv				1	1
jugglepoints		15
nolife				1

 animationscript    data/sprites/script.c
 nopain  1
 nodrop  1
 subject_to_platform  1
 subject_to_screen  1
gfxshadow 1
 icon  	data/sprites/car.gif   










		
anim	idle
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
				 int sped = getentityproperty(self, "speed");
                         void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,0);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		        if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,0);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 90
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	46 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif





anim	follow10
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
				 int sped = getentityproperty(self, "speed");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped ,1);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", sped ,-sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -120
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW11" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW9" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW11" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW9" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow11
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
				  int sped = getentityproperty(self, "speed");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped ,sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", sped ,-sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -135
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW12" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW10" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW12" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW10" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow12
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
				 int sped = getentityproperty(self, "speed");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped ,sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity",sped ,-sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -160
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow13" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW11" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW13" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW11" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow13
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 0 ,sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 0 ,-sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 180
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow14" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW12" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW14" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW12" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow14
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,-sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 160
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow15" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW13" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW15" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW13" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow15
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,-sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 135
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow16" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW14" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW16" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW14" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow16
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,-sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 120
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_jumpdelay" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW15" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_jumpdelay" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW15" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow2
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,-sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	drawmethod	rotate 70
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW3" 1 "L" 0
	@cmd	keyint "ANI_JUMPDELAY" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW3" 2 "L" 0
	@cmd	keyint "ANI_JUMPDELAY" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow3
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,-sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	drawmethod	rotate 45
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow4" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW2" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	offset	47 58
	bbox	6 5 83 98
	@cmd	keyint "ANI_follow4" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW2" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
		
anim	follow4
		@script
               			   void self = getlocalvar("self");
						    int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,-sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 20
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow5" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW3" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	offset	47 58
	bbox	6 5 83 98
	@cmd	keyint "ANI_follow5" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW3" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
		
anim	follow5
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", 0 ,-sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", 0 ,sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow6" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW4" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_follow6" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW4" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow6
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped ,-sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", sped ,sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	drawmethod	rotate -20
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW7" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW5" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW7" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW5" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow7
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped,-sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", sped ,sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	platform	8 25 -10 -10 11 11 8 24
	drawmethod	rotate -45
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW8" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW6" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW8" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW6" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow8
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped ,-sped);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", sped ,sped);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -70
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW9" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW7" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	46 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW9" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW7" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	follow9
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped ,0);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", sped ,0);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate -90
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW10" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW8" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW10" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW8" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif

		
anim	jump
	loop	1
	offset	9 12
	bbox	5 1 4 9
	delay	2
	drawmethod	rotate 90
	drawmethod	fliprotate 1
	frame	data/sprites/car.gif
		
anim	jumpdelay
		@script
                void self = getlocalvar("self");
				 int sped = getentityproperty(self, "speed");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
				    int sped = getentityproperty(self, "speed");
                         void d1 = playerkeys(iPIndex, 0, "movedown");
                 if ( a1 ){
                changeentityproperty(self, "velocity", sped ,0);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		        if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", -sped ,0);
		}
	@end_script	
	loop	1 1
	offset	46 58
	bbox	6 5 83 98
	delay	6
	drawmethod	rotate 90
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 1 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 1 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	46 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
	@cmd	keyint "ANI_FOLLOW2" 2 "L" 0
	@cmd	keyint "ANI_FOLLOW16" 2 "R" 0
	platform	8 25 -10 -10 11 11 8 24
	offset	47 58
	bbox	6 5 83 98
	frame	data/sprites/car.gif
		
anim	pain1
	loop	0
	offset	46 58
	bbox	6 5 83 98
	delay	50
	frame	data/sprites/car.gif
	delay	15
	frame	data/sprites/car.gif
		
anim	spawn
	loop	0
    @script
    void self = getlocalvar("self");
    int x = getindexedvar(0); //Get respawn x coordinate
    int z = getindexedvar(1); //Get respawn a coordinate
     if(frame >= 0 ){
     changeentityproperty(self, "position", x, z);
     }
	@end_script	
	offset	46 58
	bbox	6 5 83 98
	delay	2
	frame	NONE
	frame	NONE

		
#|edited by openBor Stats v 0.67

HEre it is again, you need car.gif and change it in dofferent image in different follow anims to show different directions
 
script.c :
Code:
// Script for players



void keyint(void Ani, int Frame, void Key, int Hflag, int Vx, int Vz)
{// Change current animation if proper key is pressed or released
// Animation is changed to attack mode

    void self = getlocalvar("self");
    int Dir = getentityproperty(self, "direction");
    int iPIndex = getentityproperty(self,"playerindex"); //Get player index
    void iRKey;

      if (Key=="U"){ //Up Required?
        iRKey = playerkeys(iPIndex, 0, "moveup"); // "Up"
      } else if (Key=="D"){ //Down Required?
        iRKey = playerkeys(iPIndex, 0, "movedown"); // "Down"
      } else if (Key=="L"){ //Left Required?
        iRKey = (playerkeys(iPIndex, 0, "moveleft")&&playerkeys(iPIndex, 0, "jump")); // "Left"
      } else if (Key=="R"){ //Right Required?
        iRKey = (playerkeys(iPIndex, 0, "moveright")&&playerkeys(iPIndex, 0, "jump")); // "Right"
      } else if (Key=="F"){ //Forward Required?
        if (Dir == 0){ // Facing Left?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Right
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="B"){ //Backward Required?
        if (Dir == 1){ // Facing Right?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Left
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="J"){ //Jump Required?
        iRKey = playerkeys(iPIndex, 0, "jump"); // "Jump"
      } else if (Key=="A"){ //Attack Required?
        iRKey = playerkeys(iPIndex, 0, "attack"); // "Attack"
      } else if (Key=="S"){ //Special Required?
        iRKey = playerkeys(iPIndex, 0, "special"); // "Special"
      }

      if (Hflag==1){ //Not holding the button case?
        iRKey = !iRKey; //Take the opposite condition
      }

      if (iRKey){
        dasher( Vx, 0, Vz, 1 ); //Move!
        if (Ani=="ANI_IDLE"){ // Going idle?
          setidle(self, openborconstant("ANI_IDLE")); //Be idle!
        } else {
          performattack(self, openborconstant(Ani)); //Change the animation
        }
//        updateframe(self, Frame); //Change frame
          changeentityproperty(self, "animpos", Frame); //Change frame
      }
}


void dasher( float Vx, float Vy, float Vz, int Flip)
{// Dash with desired speed!
    void self = getlocalvar("self");
    int dir = getentityproperty(self,"direction");

    if(dir==0 && Flip==1){ // Facing left?
      Vx = -Vx ;
    }

    changeentityproperty(self, "velocity", Vx, Vz, Vy); //Move!
}

you know what, i dont think c script is working , it doesnt change anims, need to fix this
 
This works , but i have it setup in a way that you need to hold attack to drive it
Code:
// Script for players


void keyint(void Ani, int Frame, void Key, int Hflag, int Vx)
{// Change current animation if proper key is pressed or released
// Animation is changed to attack mode

    void self = getlocalvar("self");
    int Dir = getentityproperty(self, "direction");
    int iPIndex = getentityproperty(self,"playerindex"); //Get player index
    void iRKey;

      if (Key=="U"){ //Up Required?
        iRKey = playerkeys(iPIndex, 0, "moveup"); // "Up"
      } else if (Key=="D"){ //Down Required?
        iRKey = playerkeys(iPIndex, 0, "movedown"); // "Down"
      } else if (Key=="L"){ //Left Required?
        iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
      } else if (Key=="R"){ //Right Required?
        iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
      } else if (Key=="F"){ //Forward Required?
        if (Dir == 0){ // Facing Left?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Right
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="B"){ //Backward Required?
        if (Dir == 1){ // Facing Right?
          iRKey = playerkeys(iPIndex, 0, "moveleft"); // "Left"
        } else { // Facing Left
          iRKey = playerkeys(iPIndex, 0, "moveright"); // "Right"
        }
      } else if (Key=="J"){ //Jump Required?
        iRKey = playerkeys(iPIndex, 0, "jump"); // "Jump"
      } else if (Key=="A"){ //Attack Required?
        iRKey = playerkeys(iPIndex, 0, "attack"); // "Attack"
      } else if (Key=="S"){ //Special Required?
        iRKey = playerkeys(iPIndex, 0, "special"); // "Special"
      }

      if (Hflag==1){ //Not holding the button case?
        iRKey = !iRKey; //Take the opposite condition
      }

      if (iRKey){
        dasher( Vx, 0, 0, 1 ); //Move!
        if (Ani=="ANI_IDLE"){ // Going idle?
          setidle(self, openborconstant("ANI_IDLE")); //Be idle!
        } else {
          performattack(self, openborconstant(Ani)); //Change the animation
        }
//        updateframe(self, Frame); //Change frame
          changeentityproperty(self, "animpos", Frame); //Change frame
      }
}


void dasher( float Vx, float Vy, float Vz, int Flip)
{// Dash with desired speed!
    void self = getlocalvar("self");
    int dir = getentityproperty(self,"direction");

    if(dir==0 && Flip==1){ // Facing left?
      Vx = -Vx ;
    }

    changeentityproperty(self, "velocity", Vx, Vz, Vy); //Move!
}

Also its for 12 directions cause i wanted rotation to be smooth.You would have to delete some and setup for your needs.I think for diagonal speed good formula is "sped/1.35"
Code:
		@script
                void self = getlocalvar("self");
                int iPIndex = getentityproperty(self,"playerindex"); //Get player index
                void a1 = playerkeys(iPIndex, 0, "jump");
                 void d1 = playerkeys(iPIndex, 0, "movedown");
				   settextobj(1, 150 , 100 , 1, 1, "foll11", openborvariant("elapsed_time")+2000);	
				  int sped = getentityproperty(self, "speed");
                 if ( a1 ){
                changeentityproperty(self, "velocity", -sped/1.35 ,sped/1.35);
		}
		           if ( !a1 ){
                changeentityproperty(self, "velocity", 0 ,0);
		}
		 if (( d1 )&&(a1)){
                changeentityproperty(self, "velocity", sped/1.35 ,-sped/1.35);
		}
	@end_script
 
Puted Your script.c file, maked diffirent gifs, and when I want to test changed car.gif to any mine in follow10 animation, Engine wont start:
https://drive.google.com/file/d/1CKtq8TN00oxqalkJ35vV4ZHJ-Ykqb7Sg/view?usp=sharing
 
OK, Youre not reading what  im posting, you used old text file with animations that i posted as first one, use new one that i posted later.
Come on, put some effort into it.
This stuff, what youre trying to do is pretty complex , im not sure if you wille be able to pull it off with this kind of "effort".
SoI dont think anyone did this before in openbor.So this task is probably too big for you.
I managed to make 8 directional walk and idles with help of bloodbanes contra scripts and i made it into 12 directions but thres still a lot missing.
The issue is file mark.gif and 0.gif , you dont have them in folder and its shutting down but my new version already took care of this problem and i posted it for you a few days ago.
So my advice would be, lower your expectations and maybe use something like rpgmaker ?
I know its harsh but thats just too big of a task for You to be able to control it from what i see.
Its kinda similar thing if you would go to adventure game maker forums and ask how you can make platformer mario clone, its just not what it was made for, you could probably do it if you would be advanced user with scripting knowledge and you would be able to control it but i think its just misunderstanding, You want gameplay mechanics that you would have to code in from ground up.We could probably crack if if you had better understanding of scripting and debugging but at this moment i dont think thats the case.
So, to make it easier heres what i have, looks crap but works:
36pzU.png


https://drive.google.com/file/d/1sSFeM2wjyL_qFp-1qEFbVQ76UdGq9mM4/view?usp=sharing
 
bWWd said:
OK, Youre not reading what  im posting, you used old text file with animations that i posted as first one, use new one that i posted later.
Come on, put some effort into it.
This stuff, what youre trying to do is pretty complex , im not sure if you wille be able to pull it off with this kind of "effort".
I dont think anyone did this before in openbor.So this task is probably too big for you.
I managed to make 8 directional walk and idles with help of bloodbanes contra scripts and i made it into 12 directions but thres still a lot missing.
The issue is file mark.gif and 0.gif , you dont have them in folder and its shutting down but my new version already took care of this problem and i posted it for you a few days ago.
So my advice would be, lower your expectations and maybe use something like rpgmaker ?
I know its harsh but thats just too big of a task for You to be able to control it from what i see.
Its kinda similar thing if you would go to adventure game maker forums and ask how you can make platformer mario clone, its just not what it was made for, you could probably do it if you would be advanced user with scripting knowledge and you would be able to control it but i think its just misunderstanding, You want gameplay mechanics that you would have to code in from ground up.We could probably crack if if you had better understanding of scripting and debugging but at this moment i dont think thats the case.

I Just putted new one animation text, and Engine not start, please try to run my test3 version (mark.gif and 0.gif I tryed replace from Your first animation text first of all then tryed first run test without script.c file). I think issue is file script.c is exist in scripts folder, Engine not start with it and have no errors in log.
https://drive.google.com/file/d/1wE7pBoYUZ9Pw3PxKtdkG9rqrh3jpmUxe/view?usp=sharing
---------------
original small test version to compire: https://github.com/DCurrent/openbor-example-tinting

ALL my enchancments is:

1)Put script.c in data/script folder
2)Put animation text ang gifs for craw character
3)Add character to models.txt file
4)Change filepaths to script and gifs in craw.txt

I trying to understand and learn to learn openbor and scripting, but I can do it only on real tasks, becouse they fill me entusiasm to do or learn something.
 
Back
Top Bottom