Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/02/12 in Posts

  1. 2/3 chance plant the Critical stickybomb http://i.imgur.com/2oqnr.jpg Download Source Code STICKYBOMB.rar Download .GRF STICKYBOMB.grf db\\mob_db2.txt 2127,SOCCER_BALL,stickbomb,stickbomb,1,2000,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,3,86,0x0040,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 db\\mob_avail.txt 2127,1792 data\\lua files\\skillinfoz\\skillid.lua STICKYBOMB = 999, STICKYBOMBBOMB = 998, data\\lua files\\skillinfoz\\skillinfolist.lua [sKID.STICKYBOMB] = { "STICKYBOMB"; SkillName = "STICKYBOMB", MaxLv = 10, SpAmount = { 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 }, }, [sKID.STICKYBOMBBOMB] = { "STICKYBOMBBOMB"; SkillName = "STICKYBOMBBOMB", }, battle.c http://pastebin.com/....php?i=5VizNY5g Find this function. int battle_calc_damage(struct block_l... go to the end. status_damage(src, s_bl, damage, 0, clif_damage(s_bl, s_bl, gettick(), 500, 500, damage, -1, 0, 0), 0); return ATK_NONE; } } } return damage; } add damage=stickybombdamage(src, bl, damage); top the return damage; and add new function int stickybombdamage(struct block_list *src, struct block_list *bl, int damage) { int _far=0, i=0; if(src->sbp==bl->sbp) return 0; for(i=0;i<=MAX_STICKYBOMB;i++) if(src->stickbomb[i]!=-1) break; if(i==MAX_STICKYBOMB) damage = damage*3; else { _far = distance_xy(src->x,src->y,bl->x,bl->y)+1; _far = _far >= 10 ? 10 : _far ; damage = damage/_far; } return damage; } map.c http://pastebin.com/....php?i=aKRM2P9V pc_makesavestatus(sd); pc_clean_skilltree(sd); chrif_save(sd,1); unit_free_pc(sd); killstickybmob(sd,0); //Add return 0; map.h http://pastebin.com/....php?i=UuyR67YF struct block_list { struct block_list *next,*prev; int id, sbp; //Add short m,x,y; enum bl_type type; int stickbomb[MAX_STICKYBOMB]; //Add }; mmo.h #define MAX_STICKYBOMB 8 //Add pc.c http://pastebin.com/....php?i=H2zxukgJ Add this function. void killstickybmob(struct map_session_data* sd, int t) { struct block_list *mb = NULL; int i=0; if(sd==NULL) return; for(;i <= MAX_STICKYBOMB ;i++) { mb=map_id2bl(sd->bl.stickbomb[i]); if(mb!=NULL) if(!t) status_kill(mb); else unit_skilluse_id(mb, mb->id, 173, 1); else continue; } return; } pc.h Add this define. void killstickybmob(struct map_session_data* sd, int t); skill.c http://pastebin.com/....php?i=4dGTqDri Add this function. void _STICKYBOMB(struct block_list *src, struct block_list *bl, int skillid, int skilllv) { int _x=0, _y=0, i=0, id=0; struct block_list *mb = NULL; switch(unit_getdir(bl)) { case 0: _x = 0; _y = 1; break; case 1: _x = -1; _y = 1; break; case 2: _x = -1; _y = 0; break; case 3: _x = -1; _y = -1; break; case 4: _x = 0; _y = -1; break; case 5: _x = 1; _y = -1; break; case 6: _x = 1; _y = 0; break; case 7: _x = 1; _y = 1; break; } _x = _x*(skilllv-1); _y = _y*(skilllv-1); clif_skill_nodamage(src,bl,skillid,skilllv,0); id=mob_once_spawn(BL_CAST(BL_PC, src),src->m,src->x+_x,src->y+_y,"StickBomb",2127,1,""); src->sbp++; if(src->sbp==MAX_STICKYBOMB) src->sbp=0; mb=map_id2bl(src->stickbomb[src->sbp]); if(mb!=NULL) unit_skilluse_id(mb, mb->id, 173, 1); src->stickbomb[src->sbp]=id; mb=map_id2bl(src->stickbomb[src->sbp]); mb->sbp=src->id; if(rand()%3) { for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=-1; clif_specialeffect(mb, 47,AREA); }else for(i=0;i<MAX_STICKYBOMB;i++) mb->stickbomb[i]=0; return; } Go to this function int skill_castend_nodamage_id find this case SM_ENDURE: and add below case STICKYBOMB: _STICKYBOMB(src, bl, skillid, skilllv); break; case STICKYBOMBBOMB: clif_skill_nodamage(src,bl,skillid,skilllv,0); killstickybmob(map_id2sd(src->id),1); break; skill.h enum e_skill { STICKYBOMB = 999, //Add STICKYBOMBBOMB = 998, //Add NV_BASIC = 1, db\\skill_cast_db.txt 999,0,0,1000:1500:2000:2500:3000:3500:4000:4500:5000:5500,0,0,0 //Add db\\skill_require_db.txt 999,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //STICKYBOMB //Add 998,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //STICKYBOMBBOMB //Add
    2 points
  2. * Request * Do Not Post These Links on eAthena.ws // Paradox has made it quite clear that he thinks we are attacking his server with a ddos attempts, and I feel the need to disperse from there entirely now. Few Small Samples from eAthenaTutorials (Youtube Account Me and Any Other Video Developers Would Like to Host On) I apologize if my voice sounds bad ( Allergies are kicking my ass ) NPC Scripting for Dummies (Audio / Video Tutorial) Please Note, Everything is in Spoiler Tags to Prevent Super Page Stretching The Curriculum:
    1 point
  3. I would check your palettes as well, you can also edit the client.conf in conf/battle folder incase you changed anything in there.
    1 point
  4. I don't recommend XAMPP nor any similar packages. To run rAthena in Windows you only need MySQL server. Webserver or PHP is not required. For local test installations, even rAsql is sufficient.
    1 point
  5. Seriously... That's from MysteriousRO's source. We're not the RO police. I suggest you contact them, if they won't remove it, report them to their webhost.
    1 point
  6. This one? --> http://i56.tinypic.com/rvakih.jpg Oh yes, that is mine one of my first ones. And I'm the owner too. Contact me by PM if you need it.
    1 point
  7. Considering trailing semicolons are optional, I vote yes for libconfig. It may also help to make new atcommand alias reading cleaner.
    1 point
  8. Hai. I'm here to give you guys a explanation on r15390. We, developers, spent a reasonable amount of time discussing what'd be a more organized, less cluttered, manner to work with pre-re and re files, and thats' what we came with. If the changeset is not clear to you, run a svn update and see how it is now. should you have any comments regarding this you'd like to share, post below.
    1 point
  9. The issue with this is that people could then possibly upload malicious content after their initial submission was approved. This is done, presumably, to protect users potentially downloading content that will damage their system, or be exploitable. As troublesome as it is, I feel it's in place to ensure file integrity as well as quality of service is not compromised. This is a firm "No" from me, should my vote count for anything.
    1 point
  10. I agree with Gepard, this is how I always did. If don't there is some official information from kRO, just wait new updates in iRO. The only significant difference of kRO for iRO is the formula of ASPD and there are small differences as the formula for MATK, with a difference of 2 points, but this is not relevant. About skill updates, no need to be constantly updated. It is preferable to wait and get the informations in iRO, because kRO have constant changes and this would be a work for nothing.
    1 point
  11. I think it's actually quite simple. Every time it's possible, we should follow kRO, in other case follow iRO. To be precise, if we have exact and complete info how something works in kRO, just do it this way. If we don't have enough info, it's better to have iRO version of a feature implemented (hopefully temporarily until kRO data is gathered) than nothing at all.
    1 point
×
×
  • Create New...