cJei
-
Content Count
164 -
Joined
-
Last visited
Reputation Activity
-
-
cJei reacted to Haru in Mob DB file structure overhaul
Mob DB file structure overhaul
Hello~!
Just like the Item DB, the Mob DB has a less than optimal (read: terrible) format, that doesn't play well with Git or any other Version Control System.
For example, this is a snippet from the current file:
1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,11013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,578,600,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,578,600,0,0,0,0,4022,11015,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1 Can you tell, at a glance, if any of these mobs drops a Strawberry? You certainly can't (unless you already know).
Now, after locating the Strawberry drop, what happens if we want to remove it?
1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,11013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,0,0,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,0,0,0,0,0,4022,11015,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1 How many Strawberry entries did I remove and from which lines? Can you tell at a glance? Certainly not.
What happens if we try to diff it? (this is the output of 'git diff' with the modified file)
@@ -16,8 +16,8 @@ 1010,WILOW,Willow,Willow,4,95,0,5,4,1,9,12,5,15,1,4,8,30,9,10,10,12,1,3,22,0x81,200,1672,672,432,0,0,0,0,0,0,0,902,9000,1019,100,907,1500,516,700,1068,3500,1067,2000,1066,1000,0,0,0,0,4010,1 1011,CHONCHON,Chonchon,Chonchon,4,67,0,5,4,1,10,13,10,0,1,10,4,5,12,2,10,12,0,4,24,0x181,200,1076,576,480,0,0,0,0,0,0,0,998,50,935,6500,909,1500,1205,55,601,100,742,5,1002,150,0,0,0,0,4009,1 1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,1 -1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,578,600,0,0,0,0,4029,1 -1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,578,600,0,0,0,0,4022,1 +1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,0,0,0,0,0,0,4029,1 +1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,0,0,0,0,0,4022,1 1015,ZOMBIE,Zombie,Zombie,15,534,0,50,33,1,67,79,0,10,1,8,7,0,15,0,10,12,1,1,29,0x3885,400,2612,912,288,0,0,0,0,0,0,0,957,9000,724,5,938,1000,958,50,727,70,0,0,0,0,0,0,0,0,4038,1 1016,ARCHER_SKELETON,Archer Skeleton,Archer Skeleton,31,3040,0,483,283,9,128,153,0,0,1,8,14,5,90,5,10,12,1,1,29,0x2085,300,2864,864,576,0,0,0,0,0,0,0,932,4500,756,70,2285,3,1708,35,1752,1000,507,1800,1701,150,0,0,0,0,4094,1 //1017,THIEF_BUG_FEMALE,Thief Bug Female,Thief Bug Female,10,170,0,35,18,1,33,40,5,5,1,15,10,5,23,5,10,12,1,4,27,0x651,200,988,288,768,0,0,0,0,0,0,0,955,3500,910,250,1108,15,928,200,507,400,716,50,1002,400,0,0,0,0,4026,1 Oh, so two lines were modified. Now, to locate the entry that was changed. By the way, you didn't notice that I purposely introduced a syntax error, did you? (hint: count the commas in the SPORE line: there's one less entry!)
Now what happens if someone else changes the file (on a nearby, but unrelated line), and you pull the change?
<<<<<<< HEAD 1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,0,0,0,0,0,0,0,0,4014,1 1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,0,0,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,108,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,0,0,0,0,0,4022,1 =======1012,RODA_FROG,Roda Frog,Roda Frog,5,133,0,6,5,1,11,14,0,5,1,5,5,5,10,5,10,12,1,5,21,0x81,200,2016,816,288,0,0,0,0,0,0,0,918,9000,908,500,511,300,721,7,713,2000,578,600,0,0,0,0,0,0,4014,1 1013,WOLF,Wolf,Wolf,25,919,0,329,199,1,37,46,0,0,1,20,28,15,32,20,10,12,1,2,22,0x1089,200,1054,504,432,0,0,0,0,0,0,0,1011,20,920,9000,2308,10,517,650,528,1050,919,5500,578,600,0,0,0,0,4029,1 1014,SPORE,Spore,Spore,16,510,0,66,106,1,24,48,0,5,1,12,12,5,19,8,10,12,1,3,21,0x81,200,1872,672,288,0,0,0,0,0,0,0,0,921,9000,507,800,510,50,743,10,2220,40,7033,5,578,600,0,0,0,0,4022,1 >>>>>>> upstream change Well, have fun figuring out how to merge it! (hint: a Strawberry drop was added to RODA_FROG -- could you tell? And now, are you sure nothing else was changed? Doublecheck? Would you believe it if I said that SPORE's Job EXP was also decreased by two? Anything else? I'll leave that as homework.)
How do we fix it?
Once again, we're switching to a different file format. Just like last time, it'll be libconfig. We're aware there are plenty of other suitable file formats out there (who said yaml?), but unfortunately this is not the time and place to change what was already started, and we'll have to stick with libconfig for the time being. (we'll see about writing some tools that leverage the Hercules libconfig parser to lessen everyone's pain).
Some highlights:
There is no need for those annoying sequences of zeros. If a mob drops less than 10 items, only the needed entries will be there. The mob_db2 entries can be left incomplete and set to inherit the original mob_db entry. If you want your SPORE to have higher Attack, , you can just write that in your mob_db2, and let it read the other values from the mob_db, so that if we update them, you get the update automatically We can finally add more fields (to support new features) to the file at any time, easily and without having to edit all the lines (or force you to edit all the lines of your custom mob_db2)! What does it look like?
Each entry follows this structure:
{ // =================== Mandatory fields =============================== Id: ID (int) SpriteName: "SPRITE_NAME" (string) Name: "Mob name" (string) // =================== Optional fields ================================ Lv: level (int, defaults to 1) Hp: health (int, defaults to 1) Sp: mana (int, defaults to 0) Exp: basic experience (int, defaults to 0) JExp: job experience (int, defaults to 0) AttackRange: attack range (int, defaults to 1) Attack: [attack1, attack2] (int, defaults to 0) Def: defence (int, defaults to 0) Mdef: magic defence (int, defaults to 0) Stats: { Str: strength (int, defaults to 0) Agi: agility (int, defaults to 0) Vit: vitality (int, defaults to 0) Int: intelligence (int, defaults to 0) Dex: dexterity (int, defaults to 0) Luk: luck (int, defaults to 0) } ViewRange: view range (int, defaults to 1) ChaseRange: chase range (int, defaults to 1) Size: size (int, defaults to 1) Race: race (int, defaults to 0) Element: (type, level) Mode: { CanMove: true/false (bool) Looter: true/false (bool) Aggressive: true/false (bool) Assist: true/false (bool) CastSensorIdle:true/false (bool) Boss: true/false (bool) Plant: true/false (bool) CanAttack: true/false (bool) Detector: true/false (bool) CastSensorChase: true/false (bool) ChangeChase: true/false (bool) Angry: true/false (bool) ChangeTargetMelee: true/false (bool) ChangeTargetChase: true/false (bool) TargetWeak: true/false (bool) } MoveSpeed: move speed (int, defaults to 0) AttackDelay: attack delay (int, defaults to 4000) AttackMotion: attack motion (int, defaults to 2000) DamageMotion: damage motion (int, defaults to 0) MvpExp: mvp experience (int, defaults to 0) MvpDrops: { AegisName: chance (string: int) ... } Drops: { AegisName: chance (string: int) ... } } Here's a PORING in the old format:
1002,PORING,Poring,Poring,1,50,0,2,1,1,7,10,0,5,1,1,1,0,6,30,10,12,1,3,21,0x83,400,1872,672,480,0,0,0,0,0,0,0,909,7000,1202,100,938,400,512,1000,713,1500,512,150,619,20,0,0,0,0,4001,1 And here's the same PORING in the new format:
{ Id: 1002 SpriteName: "PORING" Name: "Poring" Lv: 1 Hp: 50 Sp: 0 Exp: 2 JExp: 1 AttackRange: 1 Attack: [7, 10] Def: 0 Mdef: 5 Stats: { Str: 1 Agi: 1 Vit: 1 Int: 0 Dex: 6 Luk: 30 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 3 Element: (1, 1) Mode: { CanMove: true Looter: true CanAttack: true } MoveSpeed: 400 AttackDelay: 1872 AttackMotion: 672 DamageMotion: 480 MvpExp: 0 Drops: { Jellopy: 7000 Knife_: 100 Sticky_Mucus: 400 Apple: 1000 Empty_Bottle: 1500 Apple: 150 Unripe_Apple: 20 Poring_Card: 1 } }, Not convinced yet it's better?
Do you like Strawberries? Irrelevant? Not really:
{ Id: 1012 SpriteName: "RODA_FROG" Name: "Roda Frog" Lv: 5 Hp: 133 Sp: 0 Exp: 6 JExp: 5 AttackRange: 1 Attack: [11, 14] Def: 0 Mdef: 5 Stats: { Str: 1 Agi: 5 Vit: 5 Int: 5 Dex: 10 Luk: 5 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 5 Element: (1, 1) Mode: { CanMove: true CanAttack: true } MoveSpeed: 200 AttackDelay: 2016 AttackMotion: 816 DamageMotion: 288 MvpExp: 0 Drops: { Sticky_Webfoot: 9000 Spawn: 500 Green_Herb: 300 Azure_Jewel: 7 Empty_Bottle: 2000 Roda_Frog_Card: 1 } }, { Id: 1013 SpriteName: "WOLF" Name: "Wolf" Lv: 25 Hp: 919 Sp: 0 Exp: 329 JExp: 199 AttackRange: 1 Attack: [37, 46] Def: 0 Mdef: 0 Stats: { Str: 1 Agi: 20 Vit: 28 Int: 15 Dex: 32 Luk: 20 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 2 Element: (2, 1) Mode: { CanMove: true Assist: true CanAttack: true ChangeTargetMelee: true } MoveSpeed: 200 AttackDelay: 1054 AttackMotion: 504 DamageMotion: 432 MvpExp: 0 Drops: { Emveretarcon: 20 Claw_Of_Wolves: 9000 Mantle_: 10 Meat: 650 Monster's_Feed: 1050 Animal's_Skin: 5500 Strawberry: 600 Wolf_Card: 1 } }, { Id: 1014 SpriteName: "SPORE" Name: "Spore" Lv: 16 Hp: 510 Sp: 0 Exp: 66 JExp: 108 AttackRange: 1 Attack: [24, 48] Def: 0 Mdef: 5 Stats: { Str: 1 Agi: 12 Vit: 12 Int: 5 Dex: 19 Luk: 8 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 3 Element: (1, 1) Mode: { CanMove: true CanAttack: true } MoveSpeed: 200 AttackDelay: 1872 AttackMotion: 672 DamageMotion: 288 MvpExp: 0 Drops: { Mushroom_Spore: 9000 Red_Herb: 800 Blue_Herb: 50 Spore_Doll: 10 Hat: 40 Poison_Spore: 5 Strawberry: 600 Spore_Card: 1 } }, { Id: 1015 SpriteName: "ZOMBIE" Name: "Zombie" Lv: 15 Hp: 534 Sp: 0 Exp: 50 JExp: 33 AttackRange: 1 Attack: [67, 79] Def: 0 Mdef: 10 Stats: { Str: 1 Agi: 8 Vit: 7 Int: 0 Dex: 15 Luk: 0 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 1 Element: (9, 1) Mode: { CanMove: true Aggressive: true CanAttack: true Angry: true ChangeTargetMelee: true ChangeTargetChase: true } MoveSpeed: 400 AttackDelay: 2612 AttackMotion: 912 DamageMotion: 288 MvpExp: 0 Drops: { Decayed_Nail: 9000 Cardinal_Jewel_: 5 Sticky_Mucus: 1000 Horrendous_Mouth: 50 White_Jewel: 70 Zombie_Card: 1 } }, Is it easier to spot all the Strawberry there? I bet.
{ Id: 1012 SpriteName: "RODA_FROG" Name: "Roda Frog" Lv: 5 Hp: 133 Sp: 0 Exp: 6 JExp: 5 AttackRange: 1 Attack: [11, 14] Def: 0 Mdef: 5 Stats: { Str: 1 Agi: 5 Vit: 5 Int: 5 Dex: 10 Luk: 5 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 5 Element: (1, 1) Mode: { CanMove: true CanAttack: true } MoveSpeed: 200 AttackDelay: 2016 AttackMotion: 816 DamageMotion: 288 MvpExp: 0 Drops: { Sticky_Webfoot: 9000 Spawn: 500 Green_Herb: 300 Azure_Jewel: 7 Empty_Bottle: 2000 Roda_Frog_Card: 1 } }, { Id: 1013 SpriteName: "WOLF" Name: "Wolf" Lv: 25 Hp: 919 Sp: 0 Exp: 329 JExp: 199 AttackRange: 1 Attack: [37, 46] Def: 0 Mdef: 0 Stats: { Str: 1 Agi: 20 Vit: 28 Int: 15 Dex: 32 Luk: 20 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 2 Element: (2, 1) Mode: { CanMove: true Assist: true CanAttack: true ChangeTargetMelee: true } MoveSpeed: 200 AttackDelay: 1054 AttackMotion: 504 DamageMotion: 432 MvpExp: 0 Drops: { Emveretarcon: 20 Claw_Of_Wolves: 9000 Mantle_: 10 Meat: 650 Monster's_Feed: 1050 Animal's_Skin: 5500 Wolf_Card: 1 } }, { Id: 1014 SpriteName: "SPORE" Name: "Spore" Lv: 16 Hp: 510 Sp: 0 Exp: 66 JExp: 108 AttackRange: 1 Attack: [24, 48] Def: 0 Mdef: 5 Stats: { Str: 1 Agi: 12 Vit: 12 Int: 5 Dex: 19 Luk: 8 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 3 Element: (1, 1) Mode: { CanMove: true CanAttack: true } MoveSpeed: 200 AttackDelay: 1872 AttackMotion: 672 DamageMotion: 288 MvpExp: 0 Drops: { Mushroom_Spore: 9000 Red_Herb: 800 Blue_Herb: 50 Spore_Doll: 10 Hat: 40 Poison_Spore: 5 Spore_Card: 1 } }, { Id: 1015 SpriteName: "ZOMBIE" Name: "Zombie" Lv: 15 Hp: 534 Sp: 0 Exp: 50 JExp: 33 AttackRange: 1 Attack: [67, 79] Def: 0 Mdef: 10 Stats: { Str: 1 Agi: 8 Vit: 7 Int: 0 Dex: 15 Luk: 0 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 1 Element: (9, 1) Mode: { CanMove: true Aggressive: true CanAttack: true Angry: true ChangeTargetMelee: true ChangeTargetChase: true } MoveSpeed: 400 AttackDelay: 2612 AttackMotion: 912 DamageMotion: 288 MvpExp: 0 Drops: { Decayed_Nail: 9000 Cardinal_Jewel_: 5 Sticky_Mucus: 1000 Horrendous_Mouth: 50 White_Jewel: 70 Zombie_Card: 1 } }, Removed them all? Yup.
Want to see a diff? sure:
diff --git a/db/pre-re/mob_db.conf b/db/pre-re/mob_db.confindex 0ac34d7..ff4f0bd 100644--- a/db/pre-re/mob_db.conf+++ b/db/pre-re/mob_db.conf @@ -588,7 +588,6 @@ mob_db: ( Meat: 650 Monster's_Feed: 1050 Animal's_Skin: 5500- Strawberry: 600 Wolf_Card: 1 } }, @@ -634,7 +633,6 @@ mob_db: ( Spore_Doll: 10 Hat: 40 Poison_Spore: 5- Strawberry: 600 Spore_Card: 1 } }, Looks pretty? Very much so.
What happens if we pull a commit like the one before?
{ Id: 1012 SpriteName: "RODA_FROG" Name: "Roda Frog" Lv: 5 Hp: 133 Sp: 0 Exp: 6 JExp: 5 AttackRange: 1 Attack: [11, 14] Def: 0 Mdef: 5 Stats: { Str: 1 Agi: 5 Vit: 5 Int: 5 Dex: 10 Luk: 5 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 5 Element: (1, 1) Mode: { CanMove: true CanAttack: true } MoveSpeed: 200 AttackDelay: 2016 AttackMotion: 816 DamageMotion: 288 MvpExp: 0 Drops: { Sticky_Webfoot: 9000 Spawn: 500 Green_Herb: 300 Azure_Jewel: 7 Empty_Bottle: 2000 Strawberry: 600 Roda_Frog_Card: 1 } }, { Id: 1013 SpriteName: "WOLF" Name: "Wolf" Lv: 25 Hp: 919 Sp: 0 Exp: 329 JExp: 199 AttackRange: 1 Attack: [37, 46] Def: 0 Mdef: 0 Stats: { Str: 1 Agi: 20 Vit: 28 Int: 15 Dex: 32 Luk: 20 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 2 Element: (2, 1) Mode: { CanMove: true Assist: true CanAttack: true ChangeTargetMelee: true } MoveSpeed: 200 AttackDelay: 1054 AttackMotion: 504 DamageMotion: 432 MvpExp: 0 Drops: { Emveretarcon: 20 Claw_Of_Wolves: 9000 Mantle_: 10 Meat: 650 Monster's_Feed: 1050 Animal's_Skin: 5500 Wolf_Card: 1 } }, { Id: 1014 SpriteName: "SPORE" Name: "Spore" Lv: 16 Hp: 510 Sp: 0 Exp: 66 JExp: 106 AttackRange: 1 Attack: [24, 48] Def: 0 Mdef: 5 Stats: { Str: 1 Agi: 12 Vit: 12 Int: 5 Dex: 19 Luk: 8 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 3 Element: (1, 1) Mode: { CanMove: true CanAttack: true } MoveSpeed: 200 AttackDelay: 1872 AttackMotion: 672 DamageMotion: 288 MvpExp: 0 Drops: { Mushroom_Spore: 9000 Red_Herb: 800 Blue_Herb: 50 Spore_Doll: 10 Hat: 40 Poison_Spore: 5 Spore_Card: 1 } }, { Id: 1015 SpriteName: "ZOMBIE" Name: "Zombie" Lv: 15 Hp: 534 Sp: 0 Exp: 50 JExp: 33 AttackRange: 1 Attack: [67, 79] Def: 0 Mdef: 10 Stats: { Str: 1 Agi: 8 Vit: 7 Int: 0 Dex: 15 Luk: 0 } ViewRange: 10 ChaseRange: 12 Size: 1 Race: 1 Element: (9, 1) Mode: { CanMove: true Aggressive: true CanAttack: true Angry: true ChangeTargetMelee: true ChangeTargetChase: true } MoveSpeed: 400 AttackDelay: 2612 AttackMotion: 912 DamageMotion: 288 MvpExp: 0 Drops: { Decayed_Nail: 9000 Cardinal_Jewel_: 5 Sticky_Mucus: 1000 Horrendous_Mouth: 50 White_Jewel: 70 Zombie_Card: 1 } }, What do you expect? No conflicts.
What's changed? Here:
diff --git a/db/pre-re/mob_db.conf b/db/pre-re/mob_db.confindex 0ac34d7..59a53b6 100644--- a/db/pre-re/mob_db.conf+++ b/db/pre-re/mob_db.conf @@ -541,6 +541,7 @@ mob_db: ( Green_Herb: 300 Azure_Jewel: 7 Empty_Bottle: 2000 + Strawberry: 600 Roda_Frog_Card: 1 } }, @@ -588,7 +589,6 @@ mob_db: ( Meat: 650 Monster's_Feed: 1050 Animal's_Skin: 5500 - Strawberry: 600 Wolf_Card: 1 } }, @@ -600,7 +600,7 @@ mob_db: ( Hp: 510 Sp: 0 Exp: 66 - JExp: 108 + JExp: 106 AttackRange: 1 Attack: [24, 48] Def: 0 @@ -634,7 +634,6 @@ mob_db: ( Spore_Doll: 10 Hat: 40 Poison_Spore: 5 - Strawberry: 600 Spore_Card: 1 } }, But... I have several custom mobs, do I have to manually convert all of them...?
It's true that you need to convert your item database to the new format, but we can do it for you!
Go to http://haru.ws/hercules/mobdbconverter/ and paste (or upload) your mob_db2.txt (or even your mob_db.txt if you have custom entries there), pick between renewal or pre-renewal (or upload your item_db if it's customized), press the Convert button, wait a few seconds and you're done! It's already converted for you. Easy, isn't it? Don't trust us? No, no, we don't need your custom mobs, you can sleep safe... But if you still don't want to paste anything on a website... well, we have provided the source code of the converter script! It's in the 'tools' folder of the Hercules repository. All you need is a Python interpreter, version 2.6 or newer (and if you're running Linux or Mac OS, on either your server or your own computer, it's almost certain that you already have that). All you have to do is run it (example: python tools/mobdbconverter.py pre-re . < db/mob_db2.txt > db/mob_db2.conf), and your item database will be converted in a split second! What if I was using SQL mob databases?
Well, you're out of luck. It was deprecated long ago and it's being removed. It'll stay available for website/control panel purposes though. An automated converter (much like the db2sql plugin for the item db) will be available soon, and even executed automatically whenever we update the mob db, to keep the sql counterpart in sync!
I have this event mob entry that came with an old script I downloaded...
No worries, you can get it converted. Use the same script (or the provided web page) you'd use to convert an entire mob database, it'll work just fine even for a mob or two!
Special thanks
To Ind, for bringing up the idea, a long time ago. To Andrei Karas for actually doing it, after picking up this project from the bottom of our forgotten items box. To me, for putting this at the bottom of the forgotten items box, and burying it with several other things so that it'd stay there until now (sigh) Links
Merged pull request. Web-based converter. -
cJei reacted to Tokeiburu in GRF Editor
File Name: GRF Editor
File Submitter: Tokeiburu
File Submitted: 20 Jun 2014
File Category: Client Resources
** This program has been orignally uploaded on rAthena; it's been uploaded on Hercules due to multiple requests. If you have suggestions or feedback and you want a quick response, please contact me via rAthena. I will respond on Hercules' forum as well, but it'll take a bit longer .
Hey everyone,
This is a GRF tool I started to develop for my own personnal use, but I thought I'd share it since I've upgraded the UI. Its primary goal is to be easy to use while offering a wide variety of options and customizations. The software is quite stable and can handle large operations easily.
How to install
Download the zip archive provided from the download link at the bottom of this description or directly from there : http://www.mediafire.com/?aflylbhblrzpz0h
Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it.
Once you are done, you can start the program from the link on your desktop.
Key features
Overall speed is faster (or at least equal) than any GRF tool.
Common operations : add, delete, merge, extract, preview, save.
Undo and redo for any operation.
It can open any GRF file.
Clean and very interactive interface.
Saving formats supported : 0x200, 0x103 and 0x102 (through the Settings page).
Instant filter and search options (example : "map .gat").
File association and context menus integration for .grf, .gpf and .rgz (through the Settings page).
Can rebuild separated images into one file easily.
Lub decompilation (in beta, but it can decompile almost any lub file so far).
Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer.
Tools
Sprite editor : a simple sprite editor with powerful features. Semi-transparent images can be added, you can easily change the order or replace images, etc. This tool can convert images in the wrong type by showing you multiple solutions (merging a new palette, dithering the image by using current palette, using the closest color, and a few more).
Grf validation : allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more.
Flat maps maker : generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time.
Patch maker : generates a GRF patch based on two different GRFs.
Hash viewer : shows the hash code (both CRC32 and MD5) for files.
Image converter : converts an image to any format requested (BMP, PNG, JPG, TGA).
GrfCL : used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well.
Palette recolorer : creates new sprites by changing their colors (this tool is now deprecated).
Client database editor : allows modifications of the database client files (txt and lua) with easy and simple tools. Work in progress.
Grf encryption
The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2014-02-05. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though!
Technical stuff
Requires .Net Framework 3.5 (SP1) Client Profile to run (3.5 or more will work as well).
Automatically converts file name encoding to their proper values (you can change the encoding).
Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded.
Right-clicking an item will bring up the available options with that file.
Preview file formats : txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna and wav.
Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions.
Operations can be cancelled by clicking on the button near the progress bar.
The warning level can be changed to avoid messages like "Please select a folder first."
When prompted with an error, use Ctrl-C to copy the current dialog's content.
Some screenshots!
1) Previewing an act file, while showing the search feature
2) Preview of a model file (rsm)
3) Preview of GrfCL with the MakeGrf command
4) Preview of the Client Database Editor
5) Preview of Grf validation
6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor)
Sources : http://www.mediafire.com/download.php?7z6hkdag4ayj8rs
Got a feedback? I'd gladly hear you out and fix issues you have with the program. If you want new features to be added, don't hesitate to ask!
Click here to download this file
-
cJei reacted to fxfreitas in [Showcase + DL] Hairstyles
UPDATED, NOW HAVE 72 HEADS
UPDATED, NOW HAVE 84 HEADS !!!!!
Here a Compiliation of basic customs Hairs from Ragnarok Online, This include the 29 oficial heads.
All of these heads aren't made be me, with exception of #68, #69, #70 and #71 male heads and female #70 and #71 heads, this pack cames from internet and a bit of search, the authors put the credit on Spr files...
But who diferent on that pack?
- Repeated Heads Removed;
- Missaligned Heads Fixed; (like #48 and #61)
- 6 Unique Heads.
- Now this pack is mixed with smokim pack (from cronus)
- No Female Heads in Male pack, with exception of classic #43
I'm Still Working On this Pack to change female heads into male heads (like #43, #55, #56 etc - Male Hairstyles), to make all heads in Oficial Collors (1~7 to work with them), To Increase this into 100 Hairstyles Pack.
Preview:
DOWNLOAD: 84 Heads.zip
Mirror 4Shared
Mirror MediaFire
-
cJei reacted to Mystery in November Digest 2014
Hi everyone! I would just like to apologize for the wait on this digest... I was busy last week finishing up assignments and handing them in before our christmas break begins. So, here it is!
November Digest 2014
The following digest covers the month of November 1st - November 30th 2014.
Team Changes
[*]None
Development Highlights
[*]Introduction of 2014-10-22, Roulette, and Per-Char Gender! (Commit) (Topic) [*]Roulette rewards can be defined in db/roulette_db.conf [*]As we understand the coins are points that you obtain by consuming an item, while such an item is not yet available (will be in a upcoming commit), you can set these values with @set command, they're TmpRouletteBronze,TmpRouletteSilver and TmpRouletteGold -- e.g. @set TmpRouletteBronze 5 [*]Requires PACKETVER 20141022 or higher [*]Sex is now a character table field, which can be defined as 'M', 'F' or 'U'. 'U' being the default value, meaning undefined, which means the accounts gender takes precedence [*](upcoming) a script command to change a characters gender [*]Requires PACKETVER 20141022 or higher
[*]Missing 'type' field in itemdb now defaults to IT_ETC (Commit) [*]Added missing type check to skill_delunitgroup (Commit) [*]Re-issuing conflicted-out content on battle.c (see history/follow up) (Commit) [*]No cell stacking implemented (official version) (Commit) [*]Function for creating NPC (Commit) [*]Removal of certain commands: jump_zero, petheal, checkquest [*]Various Additions / Fixes authored by 4144 (Andrei Karas). Here are some:
[*]Allow use all char server interfaces from plugins (Commit) [*]Added missing interface methods initialization in char.c (Commit) [*]Added ability to add deprecated commands from scripts and plugins (Commit) [*]Add function for parse or report about unknown object in parsing script file (Commit)
Scripting Highlights
[*]Fixed Typo in breeder.txt (Commit)
Database Highlights
[*]Addition of Roulette Items (Commit#1, Commit#2)
November Statistics
[*]During the period there were 141 Commits. [*]Of these 141 commits, 6 included bug-fixes. [*]17 Commits from Pull Requests [*]In this month, there were 31,717 Additions and 12,154 Deletions.
-
cJei reacted to jaBote in Dastgir's Services
Topic approved. Best of luck!
P.S.: I can assure you he's one of the best guaranteed paid services to date: you just have to check his previous career, and the reputation, dedication and past contributions he's had here at Hercules.
-
cJei reacted to Dastgir in Dastgir's Services
Hello Hercules Community,
I am offering my Services to you @ some expense of money.
Works for Emulator: Hercules/rAthena/Others(if any)
Services:
Scripting. (Min Price:5$ ) Source Modification(/Addition).(Min Price: 5$) Converting to/Creating a Plugin[Hercules Specific].(Min Price: 5$) Migrating Your Server. (Min Price: 10$) Adding Custom Items/Maps/Mobs. (Min Price: 5$) Creating/Adding New Skills. (Min Price: 10$) Changing of Emulator (Min Price: 10$) ClientSide Things. (Min Price: 5$) Fixing Errors. (Min Price: 5$) Script Review. Consulting And Anything else, that you want, just drop me a PM
Maximum Price: Depends on Complexity of the Work
What Else:
Free Support for Service bought from me.
Contact Info:
Post Here Via PM Payment Methods:
PayPal Only PM me if you want any other payment method, and I might check If I can have it.
Status: AVAILABLE
-
cJei reacted to Yommy in 2014-10-22 Client Download
Hello Hercules, its been a while
here i present a new client, which requires a fully updated kRO and Hercules.
https://mega.co.nz/#!kYRAFRqJ!GF4vLIcOKQHsIQkCgZ2oGbXiJaxRsmn1ldohBgOXi3I
its already patched with some options, which i needed for testing..
..Disable Ahnlab
..Disable ragexe filename check
..Read msgstringtable
..Read datafolder first
NEMO Patcher should work for most things, but there may be some patches that are broken.
<3
-
cJei reacted to Dastgir in kRO Introduces Pet Evolution System, Roulette Game,RoDex
Pet Evolution:
Patch released on 8th October:
More Info on http://ro.gnjoy.com/news/update/View.asp?seq=158&curpage=1
Roulette:
kRO Introduced Roulette System
Preview:
(Directly Fetched from GRF)
Those buttons are animated,(since they have .spr files too).
The boxes contains item drop sprite, and can get those items,(still no idea what those coins are on the right)
More Info: http://ro.gnjoy.com/news/update/View.asp?seq=157&curpage=1
RoDex:
Its nothing more than a Mail System(Maybe a Revamped Mail System?)
It adds a new icon just like cash shop and a new menu on left side(the button I mean)
Some Info: You can send 5 items from this mail system along with zeny .
Achievement System:
See this for more info
Seems like kRO Fetching *Athena Suggestion forum
but atleast they added some of the nice features.
-
cJei reacted to Ind in 2014-10-22, Roulette and per-char gender!
2014-10-22 Client, Roulette and per-char gender!
Made Possible Thanks to Yommy
We're only able to provide you with this patch thanks to Yommy, Thank you very much!
Roulette
During test period it will be disabled by default, to enable you must edit conf/battle/feature.conf // Roulette (Note 1)// Requires: 2014-10-22bRagexe or later// Off by default while test version is out; enable at your own risk -- the mean dev.feature.roulette: off Roulette rewards can be defined in db/roulette_db.conf As we understand the coins are points that you obtain by consuming an item, while such an item is not yet available (will be in a upcoming commit), you can set these values with @set command, they're TmpRouletteBronze,TmpRouletteSilver and TmpRouletteGold -- e.g. @set TmpRouletteBronze 5 Requires PACKETVER 20141022 or higher. Where you can get such client? Here (Again, Thanks to Yommy!) In action: http://herc.ws/board/damocles/ind/screenHercules136.jpg
Per-Character Gender
Sex is now a character table field, which can be defined as 'M', 'F' or 'U'. 'U' being the default value, meaning undefined, which means the accounts gender takes precedence (upcoming) a script command to change a characters gender Requires PACKETVER 20141022 or higher. Where you can get such client? Here (Again, Thanks to Yommy!) In action: http://herc.ws/board/damocles/ind/screenHercules137.jpg
Special Thanks to
Yommy ..Yommy ...The all-awesome Yommy~! Thank you again! Ziu for extra roulette information (some yet to be applied) Haruna
Link~u!
Commit 2014-10-22 client -
cJei reacted to Dastgir in Scripting Tutorials & Guides
Just 3 things for now to say
1) Encourage constants to be used (making it easy to read, like sprite 936, i would have no idea what it is, but replacing 936 by 4_F_ARUNA_POP would give me idea about what sprite that is and so same applies to monster and item constants to be used (for future tuts))
2) make if condition more readable if you want to use it.
ex, instead of
if( Zeny < 1000 && @menu == 1 || Zeny < 5000 && @menu == 2 ) {
Have
if( (Zeny < 1000 && @menu == 1) || (Zeny < 5000 && @menu == 2) ) {
This make clear about what condition is.
3) Direction constants
DIR_NORTH 0
DIR_NORTHWEST 1
DIR_WEST 2
DIR_SOUTHWEST 3
DIR_SOUTH 4
DIR_SOUTHEAST 5
DIR_EAST 6
DIR_NORTHEAST 7
-
cJei reacted to GmOcean in Scripting Tutorials & Guides
Scripting Tutorials and Guides
I'm going to attempt to help everyone here with their scripts while not being directly involved in helping you with them xD.
This will also help future/current scripters get some fresh info and maybe inspire innovative ideas towards scripting.
So that we can prove that us " Scripters " are the superior ragnarok emulation race! Take that Source Code writers!! Jk lol, we need you too .
What I'm going to do, is write detailed tutorials on how to write a few scripts. Starting from the basics to more advanced scripts.
This way everyone can follow along. And hopefully this will help everyone understand how to write a few scripts and even troubleshoot their own scripts.
Also please read: Scripting Standards.
It will help you understand how to read some of the syntax and way people script things.
// A list of <sprite id>s can be found here: Sprite_IDs Credits: Ai4rei
Scripting Tutorials & Guides
In this section you will learn how to write scripts ranging from Complete Begginer Level Scripts ( Me and Some of you ) -> Expert Level Scripts ( Think, Developer Status O.o; )
- Beginner Scripts -
Scripts for complete beginners and novice scripters.
- Intermediate Scripts -
Scripts for intermediate level scripters. If you completed my beginner script series, then you are ready for this section.
- Advanced Scripts -
Scripts for advanced level scripters. If you completed my intermediate script series and have made a few of your own intermediate scripts, then you are ready for this section.
The idea behind this topic, is for new users, and current ones, to have a (second)place they can go to for reference when trying to write a script if they can't figure it out with script_commands.txt file. It will also help people learn how to write scripts. While hopefully, keeping script writing techniques to a ' very ' similar structure!
*Read Me* - I have updated the links on this post to link to the oldboard so these guides can be viewed. However, do note that the script_commands.txt links within those guides are no longer accurate. Enjoy your scripting.
-
cJei reacted to Mhalicot in Scripting Tutorials & Guides
Hello Ocean,
Your topic seems helpful and received a lots of positive feedback. Please continue to support and update your topic
(Topic Pinned)
Int'l Moderator,
Mhalicot
-
cJei reacted to Mystery in August Digest 2014
August Digest 2014
The following digest covers the month of August 1st - August 31st 2014.
Development Highlights
[*]Fixed several issues with SO_EL_SYMPATHY (b791b66) [*]Corrected an issue that caused the elemental's HP and SP would
_decrease to_ summon_level*5% instead of _increasing by_ said amount. [*]Corrected an issue that decreased the SP cost of summon elemental
skills by 5% even when the Spirit Sympathy skill wasn't present. [*]Added/renamed some variables to prevent confusion. Please don't reuse
'i' variables for things that aren't array indices. Or don't reuse
variables altogether for different purposes than their original one.
[*]Add MAX_REFINE as hard-coded constant (bac319d)
[*]MAX_REFINE has different value for renewal(20) and non-renewal(10) and some server even adjust this value so its better to add this constant so there's no need to add a configuration when making custom refiner scripts
[*]New Optional Configuration for unequipped disabled equipments (33a43e) [*]Fixed an issue when Token_Of_Siegfried is used, under certain conditions (b29402) [*]Extended item_check to also add unique_ids to any non-stackable items (49d604) [*]Fixed official devotion behaviour, various cleanups (e7be725) [*]Fixed a crash when a mercenary warps back to its master (7f4d6fc) [*]Battle config option for knockback style when on same tile (2b8d501) [*]sc_config.txt Update! (ec0272) [*]Fixed some MSVC incompatibilities () [*]Corrected several format-string errors through the code (c45e3fa) [*]Fixes on 3rd class skills ! (356a83b)
[*]When under Mind Break Matk Effect and Mdef reduction should not show on ALT Q(bug:7915) [*]Plagiarism should not copy New 3rd class skills. Thanks to OmegaRed (bug:8118) [*]Update Runstone Lux Anima to official formula (bug:8285) [*]Add official formula for Demonic Fire [*]Update damage formula for Unlimit, apply Def and Mdef to 1 during the skill and adjust the cooldown to official. (bug:8227) [*]Flash Combo should not consume hp-sp and the skill not ignore the distance. [*]Fix a bug with Full Throttle that not consuming sp correctly and adjust the cooldown to official. [*]All WoE items are inactive outside WoE or PVP [*]Add bonus3 bSPVanishRate for Vellum Items. [*]Script Vellum Items. [*]Add 2 new bonus bSetDefRace and bSetMDefRace for the Vellum Items. (rAthena c046668034) [*]Fixed Bowling Bash, Brandish Spear, Grand Darkness and Meteor Assault reducing def during cast; the only skill that does this officially is Grand Cross (rAthena 6947190) [*]Implemented official Bowling Bash with all its special behaviors including the gutter line [*]As many servers probably want to remove the gutter line problem, it is configurable; just adjust the bowling_bash_area setting in skill.conf (Bug:4209) [*]Sonic Blow now has a fixed range of 1, even for monsters; a monster can't use this skill if you tank it from farther away (rAthena a15cee0)
Database Highlights
[*]Massive renewal mob_db update! (0fadf3) [*]Some item fixes (5145cd) [*]Fix some incorrect card effect rate (f8e0227) [*]Update some official mob spawn info (b4bea48)
August Statistics
[*]During the period there were 52 Commits. [*]Of these 52 commits, 23 included bug-fixes. [*]15 Commits from Pull Requests [*]In this month, there were 14,771 Additions and 12,889 Deletions.
-
cJei reacted to Judas in How to remove cap sanctuary heal display in client
According to other posts, it has to do with the client as well as making adjustments in the src code it seems
-
cJei reacted to AnnieRuru in Vendor Control (rewrite)
I think I'm going to start a "New Script Festival" LOL
I have so many scripts in my hard-disk ...
so I just have to post them 1 at a time ... everyday ! -> keep my fan base happy
-
cJei reacted to AnnieRuru in King of Emperium Hill
I think its better to have a release topic for this instead of me update the script across separate topics
Download: Hercules 1.3
Script
Plugin for Hercules
Download: rAthena 1.2
Script.
Patch for rAthena
what this event do ? ( huh ? so popular script and I still need to explain ? )
1. make a guild
2. join this event
3. whack the emperium
4. defends it until times up
hahaha ....
How to configure the time:
L_start: <-- the label to start the event
change OnClock2000: into OnSat2000: to start this event on Saturday 8pm
L_end: <-- the label to end the event
change OnClock2030: into OnSat2030: to end this event on Saturday 8:30pm,
effectively makes this event runs 30 minutes
Frequently Asked Questions:
Question : why the Guild member can hit their own Emperium ?
Answer : because you didn't patch and recompile
Question: there is an exploit in this event, guild master can use Emergency Recall to abuse the prize
Answer : I already fixed it in this topic, now the prize reward will be given after the winner warp outside the map
original topic from eathena forum
http://www.eathena.ws/board/index.php?showtopic=174222
yeah ... I have been fixing this script since 7 years ago
-
cJei reacted to Mumbles in Coin Trader
Utility: Coin Trader
As per @karazu's request: http://herc.ws/board/topic/4157-mithrill-to-gold-to-silver-coins-vice-versa-trader/
Description:
Allows players to purchase coins with zeny, exchange coins for zeny, and convert coins to more valuable or lesser coins. See configuration to customise coin values.
Download:
https://github.com/datmumbles/Scripts/raw/master/util/cointrader.txt
-
cJei reacted to Dastgir in MVP Ladder game help
have you really changed all hp to Hp , (case-sensitive, h should be capital (H) and p should be small (p).)
I don't see any error on script except that..
You can check script at http://haru.ws/scriptchecker/ for any error/warnings.
-
cJei reacted to Mystery in May Digest 2014
May Digest 2014
The following digest covers the month of May 1st - May 31st 2014.
Hello everyone! I apologize for the delay on bringing this topic to the community! Was caught up in a few things
Development Highlights
[*]Corrected GM level override checks for Nouse and Trade (e9b9764) [*]Updated db2sql converter to match changes (0e1f7bb) [*]Added April 2014 Client Packet Data (3750df9) [*]Implemented MD_RANDOMTARGET, see doc/mob_db_mode_list.txt for more information (10e6f1a) [*]Added guild_castle_invite and guild_castle_expulsion to guild.conf, they determine how invite/expel work inside castles during WoE/GvG (407502a) [*]Improved CFLAGS/CPPFLAGS handling (b7373b6) [*]Improved @go command (67d5e67) [*]Changed battle_config definition to extern to avoid mistakes in plugins (d350bfe) [*]Removed trailing whitespace (sources) (5d67f33) [*]Fixed some charset issues (3bd57cf) [*]Travis Improvements (23f7856) [*]Changed set_reg behavior on pc_setparam failure, now it won't simply end the script, if a dialog window is open it'll also CLOSE it (d689201) [*]Moved MAX_CARTS and NEW_CARTS defines into common/mmo.h (65e43c2) [*]Small changes in NPC loading/reloading (a2dec94) [*]Homunculus S Update (f4f4b33)
Scripting Highlights
[*]Corrected Bioethics quest checks in the Biochemist NPC (bd86d05) [*]Fixed an exploit in custom job master (ed9dd7c) [*]Added missing changequest commands on Alchemist Job Change Quest (4b4e573) [*]Removed trailing whitespace (scripts) (c030940) [*]Wolfchev's Laboratory Instance Release (1a477c4) (Clean ups: 108705a) [*]Optimized THQS_TTShop.txt and corrected a minor mistake (90c8d73) [*]Added documentation regarding trader objects (6d4ae76)
Database Highlights
[*]Extended ItemDB! Supports several other formats (P1: 49500a5) (P2: 244985a) (P3 File Deletions: 43d96e8) [*]Updated item_db.conf to match AEGIS (ae289d6) (Fixes: 7bb8db2) [*]Removed enchantments from const (ddc16a0)
May Statistics
[*]During the period there were 89 Commits. [*]Of these 89 commits, 14 included bug-fixes. [*]9 Commits from Pull Requests [*]In this month, there were 87,778 Additions and 61,228 Deletions.
-
cJei reacted to Mystery in Additional settings in guild.conf
This has been added in: https://github.com/HerculesWS/Hercules/commit/407502abc921bb4cf06ff462ab6e2f23a327e950
-
cJei reacted to Gepard in Flux Control Panel for Hercules
Flux Control Panel for Hercules
Flux CP is now officialy available for Hercules!
It is fully working with both pre-Renewal and Renewal Hercules servers. We will continue developing it, so it is always up-to-date and compatible with latest Hercules.
New theme
Hercules' Flux CP comes with a brand new theme. It's a grey-ish modern and clean HTML5 theme, called Emphaino.
It has a nice dropdown menu located on top of the screen, and a customizable footer area, where you can put some stuff that should be visible all the time (like links to social media, forums etc.).
A picture is worth a thousand words:
It's a HTML5 theme, so it requires a decent browser, or IE9+ (if you insist on using that).
Theme selection
Having two themes is great, but until now it was impossible to make use of them both. That's why theme selector has been added to both themes, so your users can pick whichever theme they like more.
Again, preview:
Extra credits
Authors of original FluxCP & FluxCP-rA. Authors of Emphaino theme (originally for Wordpress).
Download
Hercules' FluxCP Github repository: https://github.com/HerculesWS/FluxCP
Issues
Bug reports, questions and suggestions are all welcome directly on GitHub: https://github.com/HerculesWS/FluxCP/issues
Enjoy~
-
-
-
cJei reacted to Mhalicot in Costume System v1
~ Originally script by Rebel, Zephyrus [rAthena]. ~ Hindi ko pag aari ang script na ito, ginawa ko lang itong tugma sa Hercules. Kung sakaling magustuhan nyo, pindutin lamang ang bilang pasasalamat. ~ [Original Topic] http://goo.gl/YU1Z7o ~ 100% compatible in (revision 12624) ~ Requested by karazu
~ Download: http://herc.ws/board/files/file/51-costume-system/ ~ Maraming salamat sa pag suporta. Bigyan ng rate ang download kung gumana. Note: Inilagay ko sya sa Download para makita rin ng iba kung sakaling matabunan ang topic na to. Salamat sa pang unawa.