Jump to content

Doch

Members
  • Content Count

    39
  • Joined

  • Last visited


Reputation Activity

  1. Upvote
    Doch 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.
  2. Upvote
    Doch reacted to jaBote in Servidor oficial de Ragnarök Online para España   
    Realmente no me molesta tanto el hecho de que hayan quitado el dominio a Melfina y poner ellos su web. El dominio era suyo y que sepa, podría objetar transferírselo o revenderlo a un precio superior porque no ha sido usado con fines especulativos ni ilegales dentro de la legislación española. Aún así, estando yo en el lugar de Melfina y siendo una persona sin apenas medios y ellos una empresa pues entiendo que el dominio haya sido cedido sin más, aunque lo que espero y deseo que lo haya revendido y a un precio bien alto.
     
    Ahora bien, lo que me enerva y me hace perder la templanza, es la GUARRADA que han hecho con la página de los tops. No solo es moralmente reprochable reproducir la página (incluye datos de webs de terceros que querían promocionarse) eliminando además el contenido de copyright en el pie de la página sin permiso del dueño original, sino que es de tener poco estilo que hayan hecho eso como una sucia treta para conseguir mercado. Estoy prácticamente seguro de que van a guardar registros de entrada de todas las votaciones entrantes de los tops (actualmente da un error 300 pero todo acceso se sigue guardando en los logs de apache a menos que se desactiven) y de los clicks que se hagan de salida (¿de ahí el campo pixeltracking que se envía por GET?), que es lo que más me preocupa de todo esto. Rastrean el tráfico de entrada y salida para saber qué usuarios vienen de qué webs, y luego si haces click en ellos saben a qué servidor pretendías dirigirte (aunque te redirijan a su "nueva web") y viendo lo que ya han hecho son perfectamente capaces de "tomar medidas", que ya me imagino yo lo que serán.
     
    Por cierto, lo digo y me reafirmo: Los servidores privados son algo alegal salvo que se utilice un cliente suyo original o modificado, que es cuando estaría en contra de los términos del servicio de casi cualquier empresa que explote algún software privativo y ya sí que roza los términos de la ilegalidad.
     
    Pero claro, aunque hagan algo ya no solo de mal gusto y rozando la competencia desleal si los servidores privados fueran legales (porque lo del top es conseguir usuarios educadamente, ¿verdad?) sino que quiénes van a denunciarlo, ¿los que tienen un servidor privado al margen de la ley? ¿Para que luego arremetan contra esos mismos servidores? ¡ANDA YA! Es más, como son ellos quienes tienen la "legalidad" de su mano, somos nosotros a ojos de la ley quienes les hacemos competencia desleal.
     
    Nos vendieron un servidor oficial español y lo que tenemos es una burda traducción que de momento no deja de ser poco más que (en mi opinión) una farsa y lo único que veo es están haciendo es tratar de hundir el panorama del Ragnarök Online hispano, porque seguro que también tratarán de hacerse notar en servidores de América Latina de alguna forma. Si eres el dueño de un servidor hispanohablante de fuera de España y desconoces la extensión geográfica de su licencia, ¿qué harías si te llegara una carta de cese y desista? Yo no sabría qué hacer.
     
    En serio, no doy crédito a lo que ven mis ojos. Antes no me preocupaba su presencia (incluso me alegraba descontando la gran torpeza con que se hizo el tráiler de presentación), pero ahora no tanto después de ver qué tan rastrero se puede llegar a ser.
     
    Por cierto: por si le da a algún respetable miembro de la empresa idc-games por pasarse por aquí, recuerdo que los posts vertidos en los foros (y, en particular, este mismo) son meras opiniones. Que ponga a parir las guarradas que EN MI OPINIÓN se han hecho en la empresa no constituye aún ningún delito en España (ni tan siquiera difamación porque no estoy mintiendo), por suerte .
     
    Mi recomendación para quien desee jugar al fRO en español (o en lo que se supone que es español actualmente, digo) y no esté de acuerdo con estas políticas es que se haga una cuenta desde la web OFICIAL de fRO (http://www.ragnarokeurope.com) y evite usar la plataforma de IDC-GAMES en el registro y para cualquier otra cosa. Luego puede escoger cambiar el idioma del cliente al iniciarlo, y el de los textos de NPC hablando con los NPC traductores que hay en las ciudades principales, al menos. Y las compras, al fRO oficial y todo en inglés o en francés según lo que se te de mejor, para que les deje menos comisiones. Y a ver si logramos que se vayan por donde han venido. O también hacer las cosas por Steam puede ser una alternativa.
     
    Al menos si desaparecen o dejan de ofrecer el RO la traducción española se quedará y podremos usarla. O al menos si tiene arreglo.
     
    Un saludo.
  3. Upvote
    Doch reacted to Macrox in Yourolist - new RO list/database/tools webpage, soon :]   
    Don't you like a logo like this one?
     
     
  4. Upvote
    Doch reacted to Hadeszeus in Yourolist - new RO list/database/tools webpage, soon :]   
    Congrats to this project! My only suggestion to you is to make the look and feel clean.
  5. Upvote
    Doch reacted to keough in Flux addon: Facebook Share for points   
    Hello Hercules community!
     
    Maybe some of you are interested with this idea, well the idea was like a vote for points.
    But instead of choosing a voting site buttons for points, players will click a share button with a daily basis duration just like the vote for points system.
     
    For example your server have a event or promo you can use the facebook share for the event and the players will have points in-game just like the vote for points.
    but the link that is shared must be automatically shared in public status so some of their mutual friends will saw the shared links or photo promotion for your server and more players will come to your server!
     
    I hope this idea will implemented.
     
    btw the idea was like this, http://apps.baphomet.in.th/reward and i think its a great addons if implemented, it can help server population even more.
     
    What do you think guys? I do not know how to do it but maybe someone in this community can
     
    Hoping for a reply
  6. Upvote
    Doch got a reaction from GameOnhost in Choose your own Rates?   
    low rates 4 ever. high rates is stupid (at least for me), and mid rates in my opinion breaks the market (things worth much more less and you can get things easily)
  7. Upvote
    Doch reacted to GmOcean in Item Search   
    File Name: Item Search
    File Submitter: GmOcean
    File Submitted: 13 Oct 2014
    File Category: Utility
     
    =============================================================
    Description
    =============================================================
    This script will allow users to search information about an
    item in-game. Supports both renewal/non-renewal items. It
    will show the exact item if using the search directory
    function. If however using the input method, this script will
    will run a broadened search, or pull up the exact item if an
    item ID is given instead of a name.
    =============================================================
    Features
    =============================================================
    Choose between what website you want your server to use.
    Or simply leave that upto your players by enabling all sites.
    =============================================================
    NOTE - Requires a client from 2011-10-10aRagexe.exe onwards.
    NOTE2 - RateMyServer Link does not support custom items.
    =============================================================
     
    Click here to download this file
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.