Jump to content

Jonne

Members
  • Posts

    149
  • Joined

  • Last visited

Everything posted by Jonne

  1. Try this. It adds a new Cell which is called cell_nowarpportal. You can't cast warp portals onto those cells. diff --git a/db/const.txt b/db/const.txt index 76926dc..9320e38 100644 --- a/db/const.txt +++ b/db/const.txt @@ -388,6 +388,7 @@ cell_basilica 4 cell_landprotector 5 cell_novending 6 cell_nochat 7 +cell_nowarpportal 10 //cell_gettype 0 cell_chkwall 1 diff --git a/src/map/map.c b/src/map/map.c index 2c8bf35..176d2d1 100644 --- a/src/map/map.c +++ b/src/map/map.c @@ -2664,6 +2664,8 @@ int map_getcellp(struct map_data* m,int16 x,int16 y,cell_chk cellchk) return (cell.maelstrom); case CELL_CHKICEWALL: return (cell.icewall); + case CELL_CHKNOWARPPORTAL: + return (cell.nowarpportal); // special checks case CELL_CHKPASS: @@ -2718,6 +2720,8 @@ void map_setcell(int16 m, int16 x, int16 y, cell_t cell, bool flag) case CELL_NOCHAT: map[m].cell[j].nochat = flag; break; case CELL_MAELSTROM: map[m].cell[j].maelstrom = flag; break; case CELL_ICEWALL: map[m].cell[j].icewall = flag; break; + case CELL_NOWARPPORTAL: map[m].cell[j].nowarpportal = flag; break; + default: ShowWarning("map_setcell: invalid cell type '%d'\n", (int)cell); break; diff --git a/src/map/map.h b/src/map/map.h index c584671..56bd72c 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -460,6 +460,7 @@ typedef enum { CELL_NOCHAT, CELL_MAELSTROM, CELL_ICEWALL, + CELL_NOWARPPORTAL, } cell_t; @@ -484,6 +485,7 @@ typedef enum { CELL_CHKNOCHAT, CELL_CHKMAELSTROM, CELL_CHKICEWALL, + CELL_CHKNOWARPPORTAL, } cell_chk; @@ -503,7 +505,8 @@ struct mapcell novending : 1, nochat : 1, maelstrom : 1, - icewall : 1; + icewall : 1, + nowarpportal : 1; #ifdef CELL_NOSTACK unsigned char cell_bl; //Holds amount of bls in this cell. diff --git a/src/map/skill.c b/src/map/skill.c index 117c0a7..d5ff5bd 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -13397,6 +13397,12 @@ int skill_check_condition_castbegin(struct map_session_data* sd, uint16 skill_id clif_displaymessage(sd->fd, output); //"Duel: Can't use %s in duel." return 0; } + if (map_getcell(sd->bl.m, sd->bl.x, sd->bl.y, CELL_CHKNOWARPPORTAL)) { + char output[128]; + sprintf(output, msg_txt(sd, 1404), skill_get_name(AL_WARP)); + clif_displaymessage(sd->fd, output); //"Warpportal failed." + return 0; + } break; case MO_CALLSPIRITS: if(sc && sc->data[SC_RAISINGDRAGON])
  2. Jonne

    NPC_STOP

    You mean to only freeze the target, not the caster?
  3. 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
  4. Dividing by 3 would make it a double which is 8 Byte = 64Bit. Same size.
  5. using custom name, can you? just look like : [uncommon] Knife, [Ancient] Knife before name? Namelength limitation (50, btw) = Long Item names can't be rare
  6. if((skill=pc_checkskill(sd,MO_DODGE))>0) status->flee += skill*3;
  7. src/map/statuc: if((skill=pc_checkskill(sd,MO_DODGE))>0) status->flee += (skill*3)>>1; The Formula does: (SkillLevel * 3) / 2 because >> 1 acts like / 2
  8. Add to Makefile or your VS C++ Project.
  9. 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?
  10. 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.
  11. The player is fully invincible for the time. But it is turned of when the player starts moving or attacking w/e. You want to create a server and don't even know this...?
  12. But hasn't there been new Icons for Equip granted Endure etc. Though rAthena never added them.
  13. ./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.
  14. 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])
  15. Oh, that wasn't the case long ago afaik. Well then this whole thread is meaningless.
  16. He wants it to be removed when someone moves onto the map with an item equipped that shoudln't be used on the map.
  17. 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);
  18. Isn't setting a battle config better/easier. It is more variable for users. Also I'd recommend the possibility of changing it via script. (Not that I need this system, just suggestions).
  19. Can't point my figner at it, sorry. But something seems odd. Dunno. Maybe just me having a bad day
  20. 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.
  21. 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.
  22. Jonne

    Convert to GIT

    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. 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. 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.
  23. Jonne

    Convert to GIT

    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"? 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.
  24. This is Support, not Request. And the thing you might want to know is how to check after the Level: if (BaseLevel == 99 && JobLevel == 70) { // warp } else { // don't }
  25. 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.
×
×
  • Create New...