
##MAIN
name Axel
type player
height 74
float xPos = openborvariant("xpos");
float yPos = openborvariant("ypos");
float screen = openborvariant("gfx_y_offset");
int x = getentityproperty(self, "x");
int y = getentityproperty(self, "y");
int z = getentityproperty(self, "z");
int height = getentityproperty(self, "height");
int xDif = 4;
int yDif = 16;
x = x-xPos-xDif; //CALCULATE X POSITION TO BIND PARROW IN THE ENTITY, OFFSET IS ALWAYS THE CENTER
y = z-yPos+screen-y-height-yDif; //CALCULATE Y POSITION TO BIND PARROW IN THE ENTITY
Is it the 'height' part of (Entity=Character)****.txt?The partner menu uses the character's height to adjust the cursor position automatically. Usually, I use the idle sprite to define the height.
Once you declare it at the character header, the cursor will be adjusted automatically.
View attachment 1585
This is how the character's height is configured
Code:##MAIN name Axel type player height 74
This is cursor's position formula in the script.
C:float xPos = openborvariant("xpos"); float yPos = openborvariant("ypos"); float screen = openborvariant("gfx_y_offset"); int x = getentityproperty(self, "x"); int y = getentityproperty(self, "y"); int z = getentityproperty(self, "z"); int height = getentityproperty(self, "height"); int xDif = 4; int yDif = 16; x = x-xPos-xDif; //CALCULATE X POSITION TO BIND PARROW IN THE ENTITY, OFFSET IS ALWAYS THE CENTER y = z-yPos+screen-y-height-yDif; //CALCULATE Y POSITION TO BIND PARROW IN THE ENTITY
Yes, the "height" is one of the main character properties, usually called as "character's header".Is it the 'height' part of (Entity=Character)****.txt?
I solved it. I was looking for something like this without knowing it, and somehow it was solved.예, "높이"는 일반적으로 "문자 헤더"라고 하는 주요 문자 속성 중 하나입니다.

void partnerArrow()
{//Draw custom parrow in the screen for NPC PARTNERS, entity binded like RPG games
if(openborvariant("in_level")){ //IN ANY LEVEL??
void self = getlocalvar("self");
void type = getentityproperty(self, "type");
if(type == openborconstant("TYPE_NPC")){
void cursor = ";";
float time = openborvariant("elapsed_time");
float xPos = openborvariant("xpos");
float yPos = openborvariant("ypos");
float screen = openborvariant("gfx_y_offset");
int blink = getentityproperty(self, "blink");
int life = getentityproperty(self, "health");
int x = getentityproperty(self, "x");
int y = getentityproperty(self, "y");
int z = getentityproperty(self, "z");
int height = getentityproperty(self, "height");
int xDif = 4;
int yDif = 16;
int font0 = 0;
int font1 = 4;
int xCall = 8;
int yCall = 10;
//NORMAL ARROW, SAME AS PLAYERS, USED DURING CALL MESSAGE OR IF PLAYER ARROW IS ENABLED
if(life > 0 && !blink){
x = x-xPos-xDif; //CALCULATE X POSITION TO BIND PARROW IN THE ENTITY, OFFSET IS ALWAYS THE CENTER
y = z-yPos+screen-y-height-yDif; //CALCULATE Y POSITION TO BIND PARROW IN THE ENTITY
//PLAYER ARROW IS ENABLED AND NOT BLINKING??
if(getglobalvar("playerArrow") == "on"){
drawstring(x, y, font1, cursor, z); //DRAW PARROW
}
//PARTNER CALL BUTTON IS HELD AND NOT BLINKING??
if(getglobalvar("partnerParrow") == "call"){
drawstring(x-xCall, y-yCall, font0, "call", z); //DRAW CALL MESSAGE
drawstring(x, y, font1, cursor, z); //DRAW PARROW
}
}
//BIG ARROW, SAME AS PLAYERS, USED DURING PARTNER'S RESPAWN
if(life > 0 && blink){
xDif = 15;
yDif = 150;
setdrawmethod(NULL(),0,256,256,0,0,0,0);
x = x-xPos-xDif; //CALCULATE X POSITION TO BIND PARROW IN THE ENTITY, OFFSET IS ALWAYS THE CENTER
y = z-yPos+screen-y-yDif; //CALCULATE Y POSITION TO BIND PARROW IN THE ENTITY
drawsprite(getglobalvar("parrow5"), x, y, z); //DRAW PARROW
}
}
}
}
@DD Tokki
After seeing your image, now I understand the problem. The partner's script uses height only for the small arrow, not for the big arrow.
The big one uses a default distance from the character, same as the native engine arrow.
If you take a look at the original script I created, you can confirm it.
C:void partnerArrow() {//Draw custom parrow in the screen for NPC PARTNERS, entity binded like RPG games if(openborvariant("in_level")){ //IN ANY LEVEL?? void self = getlocalvar("self"); void type = getentityproperty(self, "type"); if(type == openborconstant("TYPE_NPC")){ void cursor = ";"; float time = openborvariant("elapsed_time"); float xPos = openborvariant("xpos"); float yPos = openborvariant("ypos"); float screen = openborvariant("gfx_y_offset"); int blink = getentityproperty(self, "blink"); int life = getentityproperty(self, "health"); int x = getentityproperty(self, "x"); int y = getentityproperty(self, "y"); int z = getentityproperty(self, "z"); int height = getentityproperty(self, "height"); int xDif = 4; int yDif = 16; int font0 = 0; int font1 = 4; int xCall = 8; int yCall = 10; //플레이어와 동일한 일반 화살표, 호출 메시지 중 또는 플레이어 화살표가 활성화된 경우 사용 if(life > 0 && !blink){ x = x-xPos-xDif; //엔티티에서 앵무새를 바인딩할 X 위치를 계산합니다. 오프셋은 항상 중심입니다. y = z-yPos+화면-y-높이-yDif; //엔티티에서 PARROW를 바인딩하기 위한 Y 위치 계산 //플레이어 화살표가 활성화되고 깜박이지 않습니까? if(getglobalvar("playerArrow") == "켜기"){ drawstring(x, y, font1, 커서, z); // 패로우 그리기 } //파트너 콜 버튼이 깜박이지 않고 유지됨?? if(getglobalvar("partnerParrow") == "호출"){ drawstring(x-xCall, y-yCall, font0, "호출", z); //통화 메시지 그리기 drawstring(x, y, font1, 커서, z); // 패로우 그리기 } } //큰 화살표, 플레이어와 동일, 파트너 리스폰 시 사용 if(생명 > 0 && 깜박임){ xDif = 15; yDif = 150; setdraw 메서드(NULL(),0,256,256,0,0,0,0); x = x-xPos-xDif; //엔티티에서 앵무새를 바인딩할 X 위치를 계산합니다. 오프셋은 항상 중심입니다. y = z-yPos+스크린-y-yDif; //엔티티에서 PARROW를 바인딩하기 위한 Y 위치 계산 drawsprite(getglobalvar("parrow5"), x, y, z); // 패로우 그리기 } } } }[/암호] 작동하는 height 속성은 다음과 같습니다. [MEDIA=youtube]I1WerjOCGL[/MEDIA] [/QUOTE]
It was only for text composed of fonts.@DD Tokki
After seeing your image, now I understand the problem. The partner's script uses height only for the small arrow, not for the big arrow.
The big one uses a default distance from the character, same as the native engine arrow.
If you take a look at the original script I created, you can confirm it.
C:void partnerArrow() {//Draw custom parrow in the screen for NPC PARTNERS, entity binded like RPG games if(openborvariant("in_level")){ //IN ANY LEVEL?? void self = getlocalvar("self"); void type = getentityproperty(self, "type"); if(type == openborconstant("TYPE_NPC")){ void cursor = ";"; float time = openborvariant("elapsed_time"); float xPos = openborvariant("xpos"); float yPos = openborvariant("ypos"); float screen = openborvariant("gfx_y_offset"); int blink = getentityproperty(self, "blink"); int life = getentityproperty(self, "health"); int x = getentityproperty(self, "x"); int y = getentityproperty(self, "y"); int z = getentityproperty(self, "z"); int height = getentityproperty(self, "height"); int xDif = 4; int yDif = 16; int font0 = 0; int font1 = 4; int xCall = 8; int yCall = 10; //NORMAL ARROW, SAME AS PLAYERS, USED DURING CALL MESSAGE OR IF PLAYER ARROW IS ENABLED if(life > 0 && !blink){ x = x-xPos-xDif; //CALCULATE X POSITION TO BIND PARROW IN THE ENTITY, OFFSET IS ALWAYS THE CENTER y = z-yPos+screen-y-height-yDif; //CALCULATE Y POSITION TO BIND PARROW IN THE ENTITY //PLAYER ARROW IS ENABLED AND NOT BLINKING?? if(getglobalvar("playerArrow") == "on"){ drawstring(x, y, font1, cursor, z); //DRAW PARROW } //PARTNER CALL BUTTON IS HELD AND NOT BLINKING?? if(getglobalvar("partnerParrow") == "call"){ drawstring(x-xCall, y-yCall, font0, "call", z); //DRAW CALL MESSAGE drawstring(x, y, font1, cursor, z); //DRAW PARROW } } //BIG ARROW, SAME AS PLAYERS, USED DURING PARTNER'S RESPAWN if(life > 0 && blink){ xDif = 15; yDif = 150; setdrawmethod(NULL(),0,256,256,0,0,0,0); x = x-xPos-xDif; //CALCULATE X POSITION TO BIND PARROW IN THE ENTITY, OFFSET IS ALWAYS THE CENTER y = z-yPos+screen-y-yDif; //CALCULATE Y POSITION TO BIND PARROW IN THE ENTITY drawsprite(getglobalvar("parrow5"), x, y, z); //DRAW PARROW } } } }
Here's the height property working:
No problem, I forgot to mention this detail about the big/small arrows in my previous postIt was only for text composed of fonts.
Thanks to you, I am also learning