Jump to content

Jonne

Members
  • Posts

    149
  • Joined

  • Last visited

Posts posted by Jonne

  1.  

     

     

    Dividing by 3 would make it a double which is 8 Byte = 64Bit. Same size.

     

     

    Er, it's integer division, so it wouldn't be made into a double precision floating point number. It will still be 64 bits because damage itself is declared as an int64 though, so it's kinda moot. Why is that cast even there?

     

    Oh yea, that might be. Maybe it gave warnings on some compiler systems? Dunno

  2.  

    Hello!

    I was looking through the src and stumbled upon this:

    #ifndef RENEWAL
    if( sc->data[SC_ASSUMPTIO] ) {
    if( map_flag_vs(bl->m) )
    damage = (int64)damage*2/3; //Receive 66% damage
    else
    damage >>= 1; //Receive 50% damage
    }
    #endif

    So why not divide the damage by 3, then multiply it by 2? this way a 64 bit int woulnd't be required.

    #ifndef RENEWAL
    if( sc->data[SC_ASSUMPTIO] ) {
    if( map_flag_vs(bl->m) )
    damage = damage/3*2; //Receive 66% damage
    else
    damage >>= 1; //Receive 50% damage
    }
    #endif

     

    Dividing by 3 would make it a double which is 8 Byte = 64Bit. Same size.

  3. Error 1 error LNK2019: unresolved external symbol _achievement_update_explore referenced in function _clif_parse_LoadEndAck clif.obj map-server_sql
    Error 2 error LNK2019: unresolved external symbol _do_final_achievement referenced in function _do_final map.obj map-server_sql
    Error 3 error LNK2019: unresolved external symbol _do_init_achievement referenced in function _do_init map.obj map-server_sql
    Error 4 error LNK2019: unresolved external symbol _achievement_update_mob referenced in function _mob_dead mob.obj map-server_sql
    Error 5 error LNK2019: unresolved external symbol _achievement_loadTracker referenced in function _pc_authok pc.obj map-server_sql
    Error 6 error LNK2019: unresolved external symbol _achievement_update_itemfind referenced in function _pc_additem pc.obj map-server_sql
    Error 7 error LNK2019: unresolved external symbol _achievement_update_itemuse referenced in function _pc_useitem pc.obj map-server_sql
    Error 8 error LNK2019: unresolved external symbol _achievement_update_quest referenced in function _quest_update_status quest.obj map-server_sql
    Error 9 error LNK2019: unresolved external symbol _achievement_searchTrackerIndex referenced in function _buildin_getachievementinfo script.obj map-server_sql
    Error 10 error LNK2019: unresolved external symbol _achievement_exists referenced in function _buildin_getachievementinfo script.obj map-server_sql
    Error 11 error LNK2019: unresolved external symbol _achievement_achieve referenced in function _buildin_achieve script.obj map-server_sql
    Error 12 fatal error LNK1120: 11 unresolved externals ..map-server_sql.exe map-server_sql
    

    Is there have a solution?

    Add to Makefile or your VS C++ Project.

  4. 
    Index: src/map/battle.c
    ===================================================================
    --- src/map/battle.c (revision 15627)
    +++ src/map/battle.c (working copy)
    @@ -4285,7 +4285,7 @@
     switch( target->type )
     { // Checks on actual target
     case BL_PC:
    - if (((TBL_PC*)target)->invincible_timer != INVALID_TIMER || pc_isinvisible((TBL_PC*)target) || ((TBL_PC*)target)->sc.data[sC__MANHOLE])
    + if ((((TBL_PC*)target)->invincible_timer != INVALID_TIMER && src->type == BL_MOB) || pc_isinvisible((TBL_PC*)target) || ((TBL_PC*)target)->sc.data[sC__MANHOLE])
     return -1; //Cannot be targeted yet.
     break;
     case BL_MOB:
    

    Like this?

  5. Thanks for your help, guys. I found out the key things i had to do:

    Most of the files that I really cared about (ie: configurations, NPCs, etc) were just copy pasta. Other key things (the client, for example. i wasnt sure if it was still compatible with what i had..) i lucked out on. Everything is working fine..... almost ><

    At first, the FluxCP i have started going bonkers. I fixed it by adding a new column to my login database named "level" so it had backwards compatibility. I just gotta remember to set both for my admins.

    The latest issue that I have now is the Experience. My rates are 150kx/100kx. The job exp seems to be just fine, but the base exp isnt. On average, the experience payout is sometimes 1% of what it should be. An example is Rybio:

    SHOULD be giving out 236250000 base experience. He gives 1/10th of that.

    Isilla is another example. Should be giving 518400000. She gives 8890327 (which is roughly 1.5% of what it should be giving.)

    This is causing my players to complain a LOT about leveling, and its becoming rather annoying. If you have any suggestions or fixes, please let me know. I have no issues if it requires editing the source, as I am a developer.

    Requesting a mod to close this topic now. I'm going to move the new issue to a new topic as appropriate.

    You get much less EXP when the monsters are out of your Level Range. See renewal.h in sourcecode. You can disable it there and also get information in the Wiki(there is link in the file) about the system.

  6. ./conf/import - about everything except atcommand related things.

    pull a diff from ./src/common/ & ./src/map/ and see what you can apply.

    Char Server is now full SQL, so you can't do it via diff, you need to apply changes manualy. login table changed, so go to your current login table and change 'level' column to 'group_id'. The rest is about the same in the SQL DB, just that *_re was added, but it won't conflict with eA afaik.

  7. It's neither FLEE nor HIT. It's the hitrate calculation which is outdated. RE defines only a Dodgerate which is: 100% - (HIT - FLEE). Athena calculates Hitrate instead, so you need to change the formula to: Hitrate = HIT - FLEE.

    Here is a diff:

    
    Index: src/map/battle.c
    ===================================================================
    --- src/map/battle.c (revision 15627)
    +++ src/map/battle.c (working copy)
    @@ -1391,7 +1391,7 @@
     { //Hit/Flee calculation
     short
     flee = tstatus->flee,
    - hitrate=80; //Default hitrate
    + hitrate;
    
     if(battle_config.agi_penalty_type &&
     battle_config.agi_penalty_target&target->type)
    @@ -1408,7 +1408,7 @@
     }
     }
    
    - hitrate+= sstatus->hit - flee;
    + hitrate = sstatus->hit - flee;
    
     if(wd.flag&BF_LONG && !skill_num && //Fogwall's hit penalty is only for normal ranged attacks.
     tsc && tsc->data[sC_FOGWALL])
    

  8. Here is a diff. I didn't test it, but it should work and do what you want it to do:

    
    Index: src/map/clif.c
    ===================================================================
    --- src/map/clif.c (revision 15627)
    +++ src/map/clif.c (working copy)
    @@ -9218,6 +9218,16 @@
    
     mail_clear(sd);
    
    + { // Check if through equip if item is allowed on map [Jonne]
    + int i;
    +
    + for (i = 0; i < EQI_MAX; ++i) {
    + if (sd->equip_index[i] >= 0 && !pc_isequip(sd, sd->equip_index[i]))
    + pc_unequipitem(sd, sd->equip_index[i], 2);
    + }
    + }
    +
    +
     if(map[sd->bl.m].flag.loadevent) // Lance
     npc_script_event(sd, NPCE_LOADMAP);
    
    
    

  9. That was my hope. It seems like a small, but very useful addition, but I lack the skills necessary to do a legitimate @latency command.

    But as Pekkle said, it would be as easy as.

    @Latency

    Server Sends Packet--(lag)-->Client Responds--(lag)-->Divide by 2.

    So it does not work like this:

    Client uses Command--(lag)-->Server Reponds--(lag)-->Divide by 2?

    Both seems legit, now we have to analyze the packet with which this is possible.

  10. Ok so I was checking a little npc script and I realize we didn't had a proper way to check if we had enought place on storage for more then 1 item.

    I'll explain by an exemple :

    let say we have 500 extra weight left;

    itemx = 5 n1 = 100 ok we have enought place.

    itemy = 6, n2 = 3 ok we also have enought place.

    But how to know if we have both ? if(checkwieght(itemx,n1) && checkwieght(itemy,n2)). we can sadly see that this condition wont fit in our case =/

    Of course we could solve probably this by fetching both item weight (getiteminfo()) + our courrent weight and compare to our maxweight, but uh sound painfull, plus we won't even know if we still have place in inventory etc...

    So I tought of upgrading chekweight to read not 1 item but as many as we want.

    Here my base : http://pastebin.com/TK0dRs3s

    Yet I'm not fully satisfied, I'd be sweet if instead reading 1 at the time we could send arrays as parameter.

    Hope it's be usefull.

    Your code looks strange. You also hand out the items at the end. I think Kenpachi is right: This is rather a Change you can throw into the Release section than something everybody needs.

  11. Another thing that i'm studying at moment is the possibility of having YOURS repo (saving your changes), but also syncronized with original repo (rAthena). Its good for me, so i can have my private modifications saved on a repositorie, and still receiving updates from original repo. I know thats someone will hate this because of "private" of a public thing, but...

    I'm actually doing this myself with subversion, where I just merge the changes from the original repository to my own (with conflicts coming up now and then). Is it correct to believe that GIT does not have this conflicts? If it has them, why is it better than SVN?

    You don't need to create one folder for the original Repo and one for your own repo. It all works together.

    Also, tools involved with git sounds better for me.

    On what os are you developing? I'm on windows and don't want to miss something like TortoiseSVN's integration into the explorer. Has GIT similiar tools or what tools sound better than those for SVN?

    TortoiseGIT. Same as TortoiseSVN just for GIT.

    You create Sub-Branches without creating a whole new folder with all files (save disk space) and can work in it while the Main-Branch still keeps getting updated. You can then merge your changes to the Main-Branch. The Main-Branch could be a "Stable" release whereas the other one is a developing version. Every developer can have "unlimited" amounts of branches etc. Also there is the possibility of the team to share Diff's directly instead of commiting and fetching from the Main-Server but rather Commit to a teammember into his Branch.

    Isn't this also possible with SVN, even easier?

    You have to create a folder for every branch. This is not the case in GIT. It saves Disc-Space and still keeps it clean.

  12. Just because Linus Torvalds is involved with GIT or because of the hype?

    So, another suggestion I would like to make. Converting from SVN to GIT. GIT has more functionality and has stronger compression methods. I heard when Mozilla moved FireFox from SVN to GIT they saved 80% of memory. Also it seems to be faster, it's easier to work in teams and the branching makes it possible to work on something while still getting updates and also creating hotfixxes.

    I might not be a GIT-Guru, so could you clarify some of your arguments? What functionalities and compression methods has GIT? How would a project, such as rAthena, benefit of using GIT instead of Subversion? Can you give a link where it is written down, that Mozilla really saved 80% of memory? Is this related to the compression methods (just out of curiosity)? What exactly seems to be faster? I thought Subversion is popular for their definition of "branching", where does GIT differ from Subversion in this case? Why is it easier to work in teams? How does the merging work like? What do you mean with "still getting updates and also creating hotfixxes"?

    I aprove to change svn to git. I think everyone knows the benefics of changing the systems.

    Seems like I'm quite a noob, so could you explain this benefits in details from your personal experience with GIT?

    As I would, concerning the "compression methods", just quote this anyways, here is a link. A small sum up: Both, SVN and GIT, use the same compression algorithm, but SVN keeps some files uncompressed whereas GIT doesn't. The Post also explains how it keeps up its speed anyways (even speeds up).

    It is easier to work in teams because of the forking that SkzBR mentioned. You create Sub-Branches without creating a whole new folder with all files (save disk space) and can work in it while the Main-Branch still keeps getting updated. You can then merge your changes to the Main-Branch. The Main-Branch could be a "Stable" release whereas the other one is a developing version. Every developer can have "unlimited" amounts of branches etc. Also there is the possibility of the team to share Diff's directly instead of commiting and fetching from the Main-Server but rather Commit to a teammember into his Branch. GIT proves to have taken SVN as draft but added lots of functionality.

  13. So, another suggestion I would like to make. Converting from SVN to GIT. GIT has more functionality and has stronger compression methods. I heard when Mozilla moved FireFox from SVN to GIT they saved 80% of memory. Also it seems to be faster, it's easier to work in teams and the branching makes it possible to work on something while still getting updates and also creating hotfixxes.

    Opinions?

    P.S.: There are tools to convert SVN to GIT. I think it's called GIT-SVN under Linux.

    • Upvote 2
  14. src/map/Makefile.in

    Add achievement.o in MAP_OBJ

    Add achievement.h in MAP_H

    I did this but still it gives me this error

    
    obj_sql/map.o: In function `do_final':
    /opt/3ceamV1/src/map/map.c:3665: undefined reference to `do_final_achievement'
    obj_sql/map.o: In function `do_init':
    /opt/3ceamV1/src/map/map.c:3904: undefined reference to `do_init_achievement'
    obj_sql/clif.o: In function `clif_parse_LoadEndAck':
    /opt/3ceamV1/src/map/clif.c:9087: undefined reference to `achievement_update_explore'
    obj_sql/pc.o: In function `pc_authok':
    /opt/3ceamV1/src/map/pc.c:1197: undefined reference to `achievement_loadTracker'
    obj_sql/pc.o: In function `pc_useitem':
    /opt/3ceamV1/src/map/pc.c:4162: undefined reference to `achievement_update_itemuse'
    obj_sql/pc.o: In function `pc_additem':
    /opt/3ceamV1/src/map/pc.c:3720: undefined reference to `achievement_update_itemfind'
    obj_sql/mob.o: In function `mob_dead':
    /opt/3ceamV1/src/map/mob.c:2050: undefined reference to `achievement_update_mob'
    obj_sql/script.o: In function `buildin_getachievementcutin':
    /opt/3ceamV1/src/map/script.c:15154: undefined reference to `achievement_exists'
    obj_sql/script.o: In function `buildin_achieve':
    /opt/3ceamV1/src/map/script.c:15131: undefined reference to `achievement_exists'
    /opt/3ceamV1/src/map/script.c:15143: undefined reference to `achievement_achieve'
    obj_sql/script.o: In function `buildin_getachievementname':
    /opt/3ceamV1/src/map/script.c:15099: undefined reference to `achievement_exists'
    obj_sql/script.o: In function `buildin_getachievementinfo':
    /opt/3ceamV1/src/map/script.c:15047: undefined reference to `achievement_exists'
    /opt/3ceamV1/src/map/script.c:15081: undefined reference to `achievement_searchTrackerIndex'
    obj_sql/atcommand.o: In function `atcommand_achieve':
    /opt/3ceamV1/src/map/atcommand.c:9285: undefined reference to `achievement_exists'
    /opt/3ceamV1/src/map/atcommand.c:9298: undefined reference to `achievement_achieve'
    obj_sql/atcommand.o: In function `atcommand_reloadachievement':
    /opt/3ceamV1/src/map/atcommand.c:9259: undefined reference to `reload_achievementDB'
    obj_sql/quest.o: In function `quest_update_status':
    /opt/3ceamV1/src/map/quest.c:254: undefined reference to `achievement_update_quest'
    collect2: ld returned 1 exit status
    make[1]: *** [map-server_sql] Error 1
    
    

    You are using 3CeAM. I'm not sure whether this is compatible at all.

×
×
  • Create New...