[Guide] Adding New Status Icons

Dastgir

Core Developer
Messages
3,805
Points
0
Discord
Dastgir#1460
IRC Nickname
Dastgir
Github
dastgirp
Emulator
Client Version
2019-02-28 RE
Hello Hercules Community,

Here's a Guide to Add a New Custom Status Icons(the one displayed on the right)

What you Need?

  • Knowledge of Editing and Compiling Server(and ofcourse custom icons)


1) Server Side Edits:

open

src/map/status.h

Find

SC_MAX 
Add Before

SC_MYCUSTOMBUTTON,


Find

SI_MAX,
Add Before

SI_MYCUSTOMBUTTON = ID_OF_BUTTON,
(ID of Button can be any, but I suggest to have them > 2000, so not to avoid any updates with kRO(which is at 900) now)

P.S: Remember that ID_OF_BUTTON, we gonna need them later.

src/map/status.c

Find

status->IconChangeTable[SC_DECORATION_OF_MUSIC] = SI_DECORATION_OF_MUSIC;
Add Below

status->IconChangeTable[SC_MYCUSTOMBUTTON] = SI_MYCUSTOMBUTTON;

Recompile 

2) ClientSide Edits

Get a CleanCopy of statusicon folder (https://github.com/ROClientSide/Translation/tree/master/Data/luafiles514/lua%20files/stateicon)

Open efstids.lub

Find:

__newindex = function()error("unknown state")
Before it add,

EFST_MYCUSTOMBUTTON = ID_OF_BUTTON, 
P.S: ID_OF_BUTTON should match the one on source(status.h)

Open  stateiconinfo.lub

Find

StateIconList[EFST_IDs.EFST_JUMPINGCLAN] = { 
Add Before

StateIconList[EFST_IDs.EFST_MYCUSTOMBUTTON] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { { "My Custom Button Heading", COLOR_TITLE_BUFF }, {"%s", COLOR_TIME}, --do not edit this, this shows time remaining { "Description 1" }, { "Description 2" }, { "Description 3" } }}
Open

stateiconimginfo.lua

Find

[PRIORITY_GOLD] = {
OR

[PRIORITY_RED] = { 
OR
[PRIORITY_BLUE] = { 
OR
[PRIORITY_GREEN] = { 
OR
[PRIORITY_WHITE] = { 
(Depending on what background your Custom Button is)

Add below

[EFST_IDs.EFST_MYCUSTOMBUTTON] = "MYCUSTOMBUTTONFILE.TGA", 
P.S: Your Button File must be in .TGA form only.

.tga file must go to data/texture/effect/ Folder

And Its DONE!!!
NOTE: Replace MYCUSTOMBUTTON with your own Icon/Effect Name

 
Last edited by a moderator:
Awesome, I've been looking around for one of these. Now I don't have to memorize the process. Just click->search-> read
default_biggrin.png
lol. More space in my tiny head to do other things now =P

 
Thanks for sharing, Is it possible to include your guide in Hercules WIKI?

 
Hello Hercules Community,

Here's a Guide to Add a New Custom Status Icons(the one displayed on the right)

What you Need?

  • Knowledge of Editing and Compiling Server(and ofcourse custom icons)


1) Server Side Edits:

open

src/map/status.h

Find

SC_MAX 
Add Before

SC_MYCUSTOMBUTTON,


Find

SI_MAX,
Add Before

SI_MYCUSTOMBUTTON = ID_OF_BUTTON,
(ID of Button can be any, but I suggest to have them > 2000, so not to avoid any updates with kRO(which is at 900) now)

P.S: Remember that ID_OF_BUTTON, we gonna need them later.

src/map/status.c

Find

status->IconChangeTable[SC_DECORATION_OF_MUSIC] = SI_DECORATION_OF_MUSIC;
Add Below

status->IconChangeTable[SC_MYCUSTOMBUTTON] = SI_MYCUSTOMBUTTON;

Recompile 

2) ClientSide Edits

Get a CleanCopy of statusicon folder (https://github.com/ROClientSide/Translation/tree/master/Data/luafiles514/lua%20files/stateicon)

Open efstids.lub

Find:

__newindex = function()error("unknown state")
Before it add,

EFST_MYCUSTOMBUTTON = ID_OF_BUTTON, 
P.S: ID_OF_BUTTON should match the one on source(status.h)

Open  stateiconinfo.lub

Find

StateIconList[EFST_IDs.EFST_JUMPINGCLAN] = { 
Add Before

StateIconList[EFST_IDs.EFST_MYCUSTOMBUTTON] = { haveTimeLimit = 1, posTimeLimitStr = 2, descript = { { "My Custom Button Heading", COLOR_TITLE_BUFF }, {"%s", COLOR_TIME}, --do not edit this, this shows time remaining { "Description 1" }, { "Description 2" }, { "Description 3" } }}
Open

stateiconimginfo.lua

Find

[PRIORITY_GOLD] = {
OR


[PRIORITY_RED] = { 
OR
[PRIORITY_BLUE] = { 
OR
[PRIORITY_GREEN] = { 
OR
[PRIORITY_WHITE] = { 
(Depending on what background your Custom Button is)

Add below

[EFST_IDs.EFST_MYCUSTOMBUTTON] = "MYCUSTOMBUTTONFILE.TGA", 
P.S: Your Button File must be in .TGA form only.

.tga file must go to data/texture/effect/ Folder

And Its DONE!!!
NOTE: Replace MYCUSTOMBUTTON with your own Icon/Effect Name
where I went wrong?

status.c

status->IconChangeTable[sC_DECORATION_OF_MUSIC] = SI_DECORATION_OF_MUSIC;
status->IconChangeTable[sC_STATUS_CONVERT_AGUA] = SI_STATUS_CONVERT_AGUA;
 
status.h

SI_STATUS_CONVERT_AGUA                   = 2000,
 
SI_MAX,
};
recompiled
data:
efstids.lub:

EFST_AKAITSUKI = 660,
EFST_STATUS_CONVERT_AGUA = 2000,
__newindex = function()
error("unknown state")
end
}
stateiconinfo.lub:
StateIconList[EFST_IDs.EFST_STATUS_CONVERT_AGUA] = {
  haveTimeLimit = 1,
  posTimeLimitStr = 2,
  descript = {
    {"Conversor de água Ativado",COLOR_TITLE_BUFF},
    {"%s", COLOR_TIME},
    {"Bônus contra a propriedade Fogo"},
    {"Penalidade de Dano contra água by:Ravnos"}
  }
}
stateiconimginfo.lub:
PRIORITY_BLUE = {
[EFST_IDs.EFST_STATUS_CONVERT_AGUA] = "STATUSAGUA.TGA"
item_db.conf
{
Id: 12115
AegisName: "Elemental_Water"
Name: "Elemental Converter"
Type: 11
Buy: 2
Weight: 10
BuyingStore: true
Script: <" sc_start SC_STATUS_CONVERT_AGUA,10000,1; itemskill ITEM_ENCHANTARMS,2; ">
},
poatRhL.jpg

?
 
Do I need to put somewhere in itemdb to make the status icon appear after using an item, example Cursed Water?

 
Last edited by a moderator:
@stiflerxx

you missed something..if you will use the SC statuses to scripts or item you need it to declare in 'db/const' for it to work...

@Zirius

yup..or you can use @displaystatus just to test if its really working...

default_ani_meow.gif


 
really nice
default_happy.png


how to run in this part:

StateIconList[EFST_IDs.EFST_MOVHASTE_INFINITY] = {
 haveTimeLimit = 1, posTimeLimitStr = 1, descript = {
   {"%s", COLOR_TIME},
   {"Increases Movement Speed"}
 }
}
 

Prob: the time doesnt show instead %s only (ingame)

 
really nice ^_^how to run in this part: StateIconList[EFST_IDs.EFST_MOVHASTE_INFINITY] = {  haveTimeLimit = 1, posTimeLimitStr = 1, descript = {    {"%s", COLOR_TIME},    {"Increases Movement Speed"}  }} Prob: the time doesnt show instead %s only (ingame)
First one in descript should always be title, timer can go on 2nd or greater .

 
Hmm, it seems like some status icons are hardcoded? Cloaking exceed is using a wrong icon (poison smoke) but changing it absolutely doesn't work.

 
Last edited by a moderator:
Hello @Dastgir i'm trying to make status icon for Energency Call delay

Like this

To view this content we will need your consent to set third party cookies.
For more detailed information, see our cookies page.

But how can i trigger it?

 
Quazi said:
please help me with this one guys.. i followed all the instructions above.. 

please tell me what's wrong with this..

View attachment 4900
Did you add 1006i.tga?

What's the problem?

 
I cannot replicate the examples in the current emulator.

 
Hi, Anyone can tell about updated version )) I'm tried all what i can... but Nothing
I'm tried with RA... and all it's ok. So in client i haven't any problem... But In server i can't find all what writed on Guide... Anyone help please)

 
Back
Top