-
Posts
509 -
Joined
-
Last visited
-
Days Won
9
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Kichi
-
-
use git instead of svn
-
if (!mobcount(strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak")) { monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Emperium",1288,1,"Agit#"+strnpcinfo(2)+"::OnAgitBreak"; } else(!mobcount(strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak")){ monster strnpcinfo(2),.@emproom[2],.@emproom[3],"Emperium",4000,1,"Agi#"+strnpcinfo(2)+"::OnAgitBreak"; } end;
you can't give an argument to else,
if (!mobcount(strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak")) { monster strnpcinfo(2),.@emproom[0],.@emproom[1],"Emperium",1288,1,"Agit#"+strnpcinfo(2)+"::OnAgitBreak"; }
means, if there are no monster emperium. it will spawn a new one
else(!mobcount(strnpcinfo(2),"Agit#"+strnpcinfo(2)+"::OnAgitBreak")){ monster strnpcinfo(2),.@emproom[2],.@emproom[3],"Emperium",4000,1,"Agi#"+strnpcinfo(2)+"::OnAgitBreak"; }
and this isn't correct, even correct it will be spawn new emperium event the other emperium still in castle
- 1
-
you can't do this by script
status->amotion = ((sd->class_&MAPID_UPPERMASK) == MAPID_ASSASSIN)? 198:190)
assassin and upper will have max aspd 198 else 190
-
same with default,
have you change this skill before?
or maybe try to remove you custom card if you had
-
ah i see, single skill kill monsters in a map
i can't reproduce this,
on default svnor maybe you've changed the skill range it self
paste here your overbrand line inside skill_db.txt -
ah i see, single skill kill monsters in a map
i can't reproduce this,
on default svnor maybe you've changed the skill range it self
paste here your overbrand line inside skill_db.txt -
yep right configuration
-
what client are you using?
-
smooth recolor
can i requestblack / dark garm
black / dark vagabond wolf
thanks -
"Overbrand",
"MAX Lv : 5",
"^777777Skill Requirement : Moonslasher 3 / Pinpoint Attack 1 ^000000",
"Skill Form : ^777777Active / Damage ^000000",
"Description : ^777777Draws a cross on the ground to cause damage at a range of up to 6x6. Enemies that receive damage are knocked back. If targets are pushed into a wall or obstacles, they receive additional damage.^000000",
"[Lv 1] : ^777777Piercing Atk 400% / Smashing Atk 300% ^000000",
"[Lv 2] : ^777777Piercing Atk 800% / Smashing Atk 600% ^000000",
"[Lv 3] : ^777777Piercing Atk 1200% / Smashing Atk 900% ^000000",
"[Lv 4] : ^777777Piercing Atk 1600% / Smashing Atk 1200% ^000000",
"[Lv 5] : ^777777Piercing Atk 2000% / Smashing Atk 1500% ^000000"
if you disagree
you can change the skill become target skill instead of ground skill
-
like old configuration
max level 255max stats 250
max job 90
-
read the skill desc carefully
it does 20x damage
and it is ground skill,also your server max level is 999
can you imagine how much damage will produced from this skill?
i think its normal -
try @changelook 688
if (it work)
set you item view id become 688
elseyou have to add the sprite set to your client
-
map.h
#define MAX_VENDING 12
------------------------------------------------------
take a look at the blacksmith head, his facing to a npc.
i thought goddam use script_command to open vending -
it is client related you can't modify it from source.
use old cash shop, it will check #cashpoint instead of zeny
-
change to:
case BL_PC: { struct map_session_data *sd; struct map_session_data *sds; if( t_bl == s_bl ) break; sd = BL_CAST(BL_PC, t_bl); sds = BL_CAST(BL_PC, s_bl); if( sd->state.monster_ignore && flag&BCT_ENEMY ) return 0; // Global inminuty only to Attacks if( sd->status.karma && s_bl->type == BL_PC && ((TBL_PC*)s_bl)->status.karma ) state |= BCT_ENEMY; // Characters with bad karma may fight amongst them if( sds->state.killable && sd->state.killable ) { state |= BCT_ENEMY; // Everything can kill it strip_enemy = 0; } break; }
untested
- 1
-
what is your client date
and should match with server packet version
#ifndef PACKETVER #define PACKETVER 20130807 //#define PACKETVER 20120410 #endif
- 1
-
you able to add the sprite to client
but you can't make the client to read the spriteanother way is replace another job sprite with hanbook
- 1
-
bonus2 bSubEle,e,x; +x% damage reduction against element e
* Element (e) Ele_Neutral, Ele_Water, Ele_Earth, Ele_Fire, Ele_Wind, Ele_Poison, Ele_Holy, Ele_Dark, Ele_Ghost, Ele_Undead, Ele_All
bonus bSubEle,Ele_Neutral,100;
will make the user immune againt neutral element attack
-
you can learn from
conf/battle.player.conf
// Same as max_aspd, but for 3rd classes. (Default 193, Highest allowed 199) max_third_aspd: 193 // Maximum walk speed rate (200 would be capped to twice the normal speed) max_walk_speed: 300
and edit
status.c
// ----- ASPD CALCULATION ----- /// Unlike other stats, ASPD rate modifiers from skills/SCs/items/etc are first all added together, then the final modifier is applied // Basic ASPD value i = status_base_amotion_pc(sd,status); status->amotion = cap_value(i,((sd->class_&JOBL_THIRD) ? battle_config.max_third_aspd : battle_config.max_aspd),2000);
-
forever status
sc_start SC_EXPBOOST,-1,100;
-
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,1for 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
-
the application you submit is submitted to staff forum for review, where regular member like you are not authorized to visit.
oh oke, thanks for the explaination.
feel not qualified enough
Another EMPERIUM
in Scripting Support
Posted
its possible