-
Posts
509 -
Joined
-
Last visited
-
Days Won
9
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by Kichi
-
Permanent Status Effect? What's the maximum time?
Kichi replied to Yuka's question in Scripting Support
forever status sc_start SC_EXPBOOST,-1,100; -
how can i make 7items that MvP bonus Drop
Kichi replied to Kariton Revolution's question in Source Support
ID,Sprite_Name,kROName,iROName,LV,HP,SP,EXP,JEXP,Range1,ATK1,ATK2, DEF,MDEF,STR,AGI,VIT,INT,DEX,LUK,Range2,Range3,Scale,Race,Element,Mode,Speed,aDelay,aMotion,dMotion, MEXP,MVP1id,MVP1per,MVP2id,MVP2per,MVP3id,MVP3per,Drop1id,Drop1per,Drop2id,Drop2per,Drop3id,Drop3per,Drop4id,Drop4per,Drop5id,Drop5per,Drop6id,Drop6per,Drop7id,Drop7per,Drop8id,Drop8per,Drop9id,Drop9per,DropCardid,DropCardper 1313,BEELZEBUB_,Beelzebub,Beelzebub,255,10000000,0,6666666,6666666,2,180027,170627, 0,0,2050,555,355,355,1000,355,20,12,2,6,88,0x37B5,100,111,30,432, 3333333,10000,0,5500,0,0,0,5000,0,5000,0,2000,20516,05,2000,2000,2702,2000,985,5432,742,5500,0,0,0,0,0,1 for extend mvp drop become 7 you have to edit src and all mob_db. i recomend to get the mvp id once mvp killed and give a random chance for 4/5/6/7 items -
skill.c find: // New guild skills [Celest] case GD_BATTLEORDER: if(flag&1) { if (status_get_guild_id(src) == status_get_guild_id(bl)) sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id, skill_lv)); } else if (status_get_guild_id(src)) { clif_skill_nodamage(src,bl,skill_id,skill_lv,1); map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill_castend_nodamage_id); if (sd) guild_block_skill(sd,skill_get_time2(skill_id,skill_lv)); } break; case GD_REGENERATION: if(flag&1) { if (status_get_guild_id(src) == status_get_guild_id(bl)) sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id, skill_lv)); } else if (status_get_guild_id(src)) { clif_skill_nodamage(src,bl,skill_id,skill_lv,1); map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill_castend_nodamage_id); if (sd) guild_block_skill(sd,skill_get_time2(skill_id,skill_lv)); } break; case GD_RESTORE: if(flag&1) { if (status_get_guild_id(src) == status_get_guild_id(bl)) clif_skill_nodamage(src,bl,AL_HEAL,status_percent_heal(bl,90,90),1); } else if (status_get_guild_id(src)) { clif_skill_nodamage(src,bl,skill_id,skill_lv,1); map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill_castend_nodamage_id); if (sd) guild_block_skill(sd,skill_get_time2(skill_id,skill_lv)); } break; case GD_EMERGENCYCALL: case GD_ITEMEMERGENCYCALL: { int8 dx[9] = {-1, 1, 0, 0,-1, 1,-1, 1, 0}; int8 dy[9] = { 0, 0, 1,-1, 1,-1,-1, 1, 0}; uint8 j = 0, calls = 0, called = 0; struct guild *g; // i don't know if it actually summons in a circle, but oh well. ;P g = sd?sd->guild:guild_search(status_get_guild_id(src)); if (!g) break; if (skill_id == GD_ITEMEMERGENCYCALL) switch (skill_lv) { case 1: calls = 7; break; case 2: calls = 12; break; case 3: calls = 20; break; default: calls = 0; break; } clif_skill_nodamage(src,bl,skill_id,skill_lv,1); for (i = 0; i < g->max_member && (!calls || (calls && called < calls)); i++, j++) { if (j > 8) j = 0; if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade && !pc_isdead(dstsd)) { if (map[dstsd->bl.m].flag.nowarp && !map_flag_gvg2(dstsd->bl.m)) continue; if(map_getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH)) dx[j] = dy[j] = 0; pc_setpos(dstsd, map_id2index(src->m), src->x+dx[j], src->y+dy[j], CLR_RESPAWN); called++; } } if (sd) guild_block_skill(sd,skill_get_time2(skill_id,skill_lv)); } break; replace with : // New guild skills [Celest] case GD_BATTLEORDER: if(flag&1) { if (status_get_guild_id(src) == status_get_guild_id(bl)) sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id, skill_lv)); } else if (status_get_guild_id(src)) { clif_skill_nodamage(src,bl,skill_id,skill_lv,1); map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill_castend_nodamage_id); if (sd) skill_blockpc_start(sd, skill_id, time); } break; case GD_REGENERATION: if(flag&1) { if (status_get_guild_id(src) == status_get_guild_id(bl)) sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id, skill_lv)); } else if (status_get_guild_id(src)) { clif_skill_nodamage(src,bl,skill_id,skill_lv,1); map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill_castend_nodamage_id); if (sd) skill_blockpc_start(sd, skill_id, time); } break; case GD_RESTORE: if(flag&1) { if (status_get_guild_id(src) == status_get_guild_id(bl)) clif_skill_nodamage(src,bl,AL_HEAL,status_percent_heal(bl,90,90),1); } else if (status_get_guild_id(src)) { clif_skill_nodamage(src,bl,skill_id,skill_lv,1); map_foreachinrange(skill_area_sub, src, skill_get_splash(skill_id, skill_lv), BL_PC, src,skill_id,skill_lv,tick, flag|BCT_GUILD|1, skill_castend_nodamage_id); if (sd) skill_blockpc_start(sd, skill_id, time); } break; case GD_EMERGENCYCALL: case GD_ITEMEMERGENCYCALL: { int8 dx[9] = {-1, 1, 0, 0,-1, 1,-1, 1, 0}; int8 dy[9] = { 0, 0, 1,-1, 1,-1,-1, 1, 0}; uint8 j = 0, calls = 0, called = 0; struct guild *g; // i don't know if it actually summons in a circle, but oh well. ;P g = sd?sd->guild:guild_search(status_get_guild_id(src)); if (!g) break; if (skill_id == GD_ITEMEMERGENCYCALL) switch (skill_lv) { case 1: calls = 7; break; case 2: calls = 12; break; case 3: calls = 20; break; default: calls = 0; break; } clif_skill_nodamage(src,bl,skill_id,skill_lv,1); for (i = 0; i < g->max_member && (!calls || (calls && called < calls)); i++, j++) { if (j > 8) j = 0; if ((dstsd = g->member[i].sd) != NULL && sd != dstsd && !dstsd->state.autotrade && !pc_isdead(dstsd)) { if (map[dstsd->bl.m].flag.nowarp && !map_flag_gvg2(dstsd->bl.m)) continue; if(map_getcell(src->m,src->x+dx[j],src->y+dy[j],CELL_CHKNOREACH)) dx[j] = dy[j] = 0; pc_setpos(dstsd, map_id2index(src->m), src->x+dx[j], src->y+dy[j], CLR_RESPAWN); called++; } } if (sd) skill_blockpc_start(sd, skill_id, time); } break; untested
-
oh oke, thanks for the explaination. feel not qualified enough
-
at the end of registration step i got "error you don't have permission to access this page" does it mean i have already submitted?
-
[501] = { unidentifiedDisplayName = "Red Potion", unidentifiedResourceName = "»¡°£Æ÷¼Ç", unidentifiedDescriptionName = { "A potion made from", "grinded Red Herbs that", "restores ^000088about 45 HP^000000.", "^ffffff_^000000", "Weight: ^7777777^000000" }, identifiedDisplayName = "Red Potion", identifiedResourceName = "»¡°£Æ÷¼Ç", identifiedDescriptionName = { "A potion made from", "grinded Red Herbs that", "restores ^000088about 45 HP^000000.", "^ffffff_^000000", "Weight: ^7777777^000000" }, slotCount = 0, ClassNum = 0 }, add your item's info by the format above.
-
yes if your client below 2013 use this http://rathena.org/board/topic/70005-guide-adding-custom-item-renewal/ if no just pass the idnum* but add the item info to system/itemInfo.lub / .lua
-
maybe you made a mistake when applying the diff, there are 2 type of 2012 04 10 -Ragexe and RagexeRe or extreme way, block same IP to login (it will affect to user who play in cafe)
-
diff your client with (disable dual login)
-
Q>How to enable blind effect even if effect is off?
Kichi replied to miczster's question in Source Requests
i think blind isn't effect (/effect > disappear) it still visible even your effect off CMIIW -
[Release+Guide] Common Ailment Status Icon
Kichi replied to Shade's topic in Other Graphics Showcase
status.c find: /* Other SC which are not necessarily associated to skills */ add above StatusIconChangeTable[SC_STONE] = SI_STONE; StatusIconChangeTable[SC_FREEZE] = SI_FREEZE; StatusIconChangeTable[SC_STUN] = SI_STUN; StatusIconChangeTable[SC_SLEEP] = SI_SLEEP; StatusIconChangeTable[SC_POISON] = SI_POISON; StatusIconChangeTable[SC_CURSE] = SI_CURSE; StatusIconChangeTable[SC_SILENCE] = SI_SILENCE; StatusIconChangeTable[SC_CONFUSION] = SI_CONFUSION; StatusIconChangeTable[SC_BLIND] = SI_BLIND; StatusIconChangeTable[SC_DPOISON] = SI_DPOISON; -
status.c find: if( sc->count && sc->data[SC_ITEMSCRIPT] ) { struct item_data *data = itemdb_exists(sc->data[SC_ITEMSCRIPT]->val1); if( data && data->script ) run_script(data->script,0,sd->bl.id,0); } add : if( sc->count && sc->data[SC_PERFECTAIM] ) { pc_bonus2 (sd,SP_SKILL_VARIABLECAST,SN_FALCONASSAULT,-1000); } it will reduce cast time by 1 sec but add the SC_PERFECTAIM with SCB_ALL to read another condition this is quick way CMIIW
- 1 reply
-
- 1
-
-
mapindex_name2id: Map "schg_cas01" not found in index list!
Kichi replied to johnbond's question in Database Support
everyscript with name of the castle map cause the first Error (Script,Mapflag) i just look into yours the second came from core that tries to load all castle data (Removed on maps data, but still defined on core side) -
mapindex_name2id: Map "schg_cas01" not found in index list!
Kichi replied to johnbond's question in Database Support
you are remove the the map but there are script tries to access those maps -
Yes. i have been post my contributions to my old thread HERE. would you like to check? and tell me if i made mistake or i have to give more contribution Thank you in advance
-
There's a handful I assume: http://rathena.org/board/forum/210-awaiting-contributions/ i think forum admin still busy and don't have time to process CMIIW
-
oh yeah sorry, but same method, change MAGIC to WEAPON
-
Add new item requirement for skills(eg:- Acid Demo)
Kichi replied to Veracious's question in Source Support
db/(re/pre-re)/skill_require_db.txt // 485,0,0,15,0,0,600:700:800:900:1000:1100:1200:1300:1400:1500,0:1:2:3:4:5:6:7:8:9:10:12:13:14:15:16:17:18:19:20:21:22,0,0,none,SC_CARTBOOST,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 //WS_CARTTERMINATION## RED = Zeny Cost BLUE = Item Required & Item Amount there are no way except edit the source. You should extend ....,RequiredItemID10,RequiredItemAmount10,RequiredEquipment,ReqItemID11,ReqItemAmount11 which 11 is for WOE/BG purpose or something you like. -
rathena has provided most usefull script "OnPCStatCalcEvent:" you may use that Label to give a temporer skill bonus OnPCStatCalcEvent: if (time > .@now) skill "AL_TELEPORT",1; end; time = perma variable to char .@now = datetimenow this would be more simple and easy to use
-
this is source related. the code exist in older rathena CMIIW
-
rollback isn't like a feature of ragnarok so you have to make system for you backup example, you set auto backup on certain time / day -day 1, backup to folder a -day 2, backup to folder b -day 3, backup to folder c from my example you may rollback to specific day
-
all SI_ are kind of package from client side. we can't add / modify that package yet (I've tried it). CMIIW to add an effect to character you may use existing SI_ or clif_
-
item script not working something wrong help plz
Kichi replied to JassMax's question in Database Support
yes to escape the character -
item script not working something wrong help plz
Kichi replied to JassMax's question in Database Support
yes. autobonus "{ sc_start \"SC_INCBASEATK\",9000,3000; heal -500,0; }",10,BF_WEAPON;