Bringer
-
Posts
745 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Posts posted by Bringer
-
-
10 hours ago, playniks said:
Sir @Bringer just a question. How to make a converted costume be enchantable?
check this https://github.com/llchrisll/rAthena-Scripts/blob/master/requests/costume_enchant.txt
-
11 hours ago, Winterfox said:
- script MVP_EVENT FAKE_NPC,{ OnInit: // Mobinfo .mob = 1159; .map$ = "prontera"; .x = 150; .y = 150; .respawn_time = 15; // Respawntime in minutes .percent = 10; // Item drop every x hp percent. // Dropiteminfo .item = 7959; .amount = 5; OnSpawn: monster(.map$, .x, .y, strmobinfo(1, .mob), .mob, 1); .@gid = $@mobid[0]; getunitdata(.@gid, .@mvp_data); .@max_hp = .@mvp_data[UMOB_MAXHP]; freeloop(1); while(unitexists(.@gid)) { getunitdata(.@gid, .@mvp_data); .@curr_hp_percent = ceil((.@mvp_data[UMOB_HP] * 100 / .@max_hp) - .percent, .percent); if(.@curr_hp_percent == .@last_hp_percent) { sleep(500); continue; } if(.@curr_hp_percent > .@last_hp_percent) .@next_drop_percent = .@curr_hp_percent - .percent; .@last_hp_percent = .@curr_hp_percent; if(.@next_drop_percent >= .@curr_hp_percent) { makeitem(.item, .amount, mapid2name(.@mvp_data[UMOB_MAPID]), .@mvp_data[UMOB_X], .@mvp_data[UMOB_Y], 1); .@next_drop_percent -= .percent; } sleep(500); } freeloop(0); sleep(1000 * 60 * .respawn_time); donpcevent("MVP_EVENT::OnSpawn"); end; }
on my orignal trunk i got this error FIXED ERROR https://github.com/rathena/rathena/commit/2eebafb70330e37dd69a384ce0af52570b4956c2
so test latest rathena is working but
monster just like normal summon
i can request to monster using unitwalk just like on the video monster only WALKING so monster walk only the giving coordinate
1st Respawn.map$ = "new_1-4"; .x = 11; .y = 188;
once summoned monster will move
1st waypoint then 2nd waypoint and so on then repeat until the monster reach last waypoint then repeat again the loop2nd Request
can you make it drop shower? tell say 5x5 ? -
37 minutes ago, playniks said:
Hi, Sir @Bringer ! I tried to apply the patch but I'm having issues with the script.cpp part giving this error.
Can you help me sir how we can solve this?
try
item_data = item_db.searchname(item_name)
-
i want to request a walking MVP just walking around on maps
like this on Video
mvp should drop items on the floor every time mvp loses 10% of its total HP
once MVP Dead Timer will be 15mins
here is the idea reference
https://youtu.be/TaQt_cNKbfM?t=592 -
-
10 hours ago, Yukaiii said:
Is there any way to make an NPC multilingual,
with option to choose the language?I say when the person clicks on the npc, show the option
example:
English
Spanishcheck this
https://rathena.org/board/topic/126106-multi-language-system-npcs-compact-npc-system/ -
WoW i hope this release for free
-
14 hours ago, Speedrun said:
If this map get 50 hearts reaction I will post the version 2 with insane 3D models never seen before
if reach 50 hearts make for version 2 with MVP and PVP Statues too hehe
- 1
-
@Zell Hello is this same on this command?
-
strcharinfo(3) == "prontera"
prontera? not WoE MAP
and try to useisequipped
you can check script_commands.txt for more details
Check this Topic About Auto Kick
https://rathena.org/board/topic/104887-no-guild-autokicker/?do=findComment&comment=297667 -
-
try this
skill.cpp if( sc && sc->data[SC_CURSEDCIRCLE_ATKER] ) //Should only remove after the skill has been casted. status_change_end(src,SC_CURSEDCIRCLE_ATKER,INVALID_TIMER); return 0; // not to consume item. + case MO_BODYRELOCATION: + if (battle_config.lock && sd && (sd->sc.data[SC_ANKLE] || sd->sc.data[SC_SPIDERWEB])) { + clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); + break; + } Find skill_blown(src,bl,skill_get_blewcount(skill_id,skill_lv),unit_getdir(bl),(enum e_skill_blown)(BLOWN_IGNORE_NO_KNOCKBACK #ifdef RENEWAL ADD THIS ABOVE + case TF_BACKSLIDING: //This is the correct implementation as per packet logging information. [Skotlex] + if (battle_config.lock && sd && (sd->sc.data[SC_ANKLE] || sd->sc.data[SC_SPIDERWEB])) { + clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); + break; + + } battle.hpp + int lock; #include "../custom/battle_config_struct.inc" }; battle.cpp + { "lock", &battle_config.lock, 0, 0, 1, }, #include "../custom/battle_config_init.inc" trunk\conf\import\battle_conf.txt +// If set to false, will not be enabled.) +lock: true
i try this code i dont have any error
+ if (skill_id == MO_EXTREMITYFIST && ((sd->spiritball == 0 && battle_config.asura_absorb_cast_cancel) || (!sd->sc.data[SC_EXPLOSIONSPIRITS] && battle_config.asura_dispell_cast_cancel))) { + clif_skill_fail(sd, skill_id, USESKILL_FAIL_LEVEL, 0); + return 0; + } switch( sd->menuskill_id ) { case AM_PHARMACY:
-
31 minutes ago, BabaVoss said:
it can still be bypass, by lastest titan grfs
Really? Better ask @Functor
-
Do you have gepard shield?
-
-
On 5/1/2023 at 10:46 AM, joecalis said:
In the latest version of Rathena this is already implemented.
If you're using an older version you might have to diff patch the itemlink commands by Cydh.The older rathena versions supports the "itemlink-20190319-e6f1f21d.diff"
Then you would have to edit the atcommand.cpp in ACMD_FUNC(mobinfo)
Find:
for (i = 0; i < MAX_MOB_DROP_TOTAL; i++) { int droprate; if (mob->dropitem[i].nameid <= 0 || mob->dropitem[i].p < 1 || (item_data = itemdb_exists(mob->dropitem[i].nameid)) == NULL) continue; droprate = mob->dropitem[i].p; #ifdef RENEWAL_DROP if( battle_config.atcommand_mobinfo_type ) { droprate = droprate * pc_level_penalty_mod(mob->lv - sd->status.base_level, mob->status.class_, mob->status.mode, 2) / 100; if (droprate <= 0 && !battle_config.drop_rate0item) droprate = 1; } #endif if (pc_isvip(sd)) // Display drop rate increase for VIP droprate += (droprate * battle_config.vip_drop_increase) / 100; if (item_data->slot) sprintf(atcmd_output2, " - %s[%d] %02.02f%%", item_data->jname, item_data->slot, (float)droprate / 100); else sprintf(atcmd_output2, " - %s %02.02f%%", item_data->jname, (float)droprate / 100); strcat(atcmd_output, atcmd_output2); if (++j % 3 == 0) { clif_displaymessage(fd, atcmd_output); strcpy(atcmd_output, " "); } } if (j == 0) clif_displaymessage(fd, msg_txt(sd,1246)); // This monster has no drops. else if (j % 3 != 0) clif_displaymessage(fd, atcmd_output); // mvp if (mob->mexp) { float mvppercent, mvpremain; sprintf(atcmd_output, msg_txt(sd,1247), mob->mexp); // MVP Bonus EXP:%u clif_displaymessage(fd, atcmd_output); strcpy(atcmd_output, msg_txt(sd,1248)); // MVP Items: mvpremain = 100.0; //Remaining drop chance for official mvp drop mode j = 0; for (i = 0; i < MAX_MVP_DROP_TOTAL; i++) { if (mob->mvpitem[i].nameid <= 0 || (item_data = itemdb_exists(mob->mvpitem[i].nameid)) == NULL) continue; //Because if there are 3 MVP drops at 50%, the first has a chance of 50%, the second 25% and the third 12.5% mvppercent = (float)mob->mvpitem[i].p * mvpremain / 10000.0f; if(battle_config.item_drop_mvp_mode == 0) { mvpremain -= mvppercent; } if (mvppercent > 0) { j++; if (j == 1) { if (item_data->slot) sprintf(atcmd_output2, " %s[%d] %02.02f%%", item_data->jname, item_data->slot, mvppercent); else sprintf(atcmd_output2, " %s %02.02f%%", item_data->jname, mvppercent); } else { if (item_data->slot) sprintf(atcmd_output2, " - %s[%d] %02.02f%%", item_data->jname, item_data->slot, mvppercent); else sprintf(atcmd_output2, " - %s %02.02f%%", item_data->jname, mvppercent); } strcat(atcmd_output, atcmd_output2); } } if (j == 0) clif_displaymessage(fd, msg_txt(sd,1249)); // This monster has no MVP prizes. else clif_displaymessage(fd, atcmd_output); }
Change to:
for (i = 0; i < MAX_MOB_DROP_TOTAL; i++) { int droprate; int dropbonus = 0; if (mob->dropitem[i].nameid <= 0 || mob->dropitem[i].p < 1 || (item_data = itemdb_exists(mob->dropitem[i].nameid)) == NULL) continue; droprate = mob->dropitem[i].p; #ifdef RENEWAL_DROP if( battle_config.atcommand_mobinfo_type ) { droprate = droprate * pc_level_penalty_mod(mob->lv - sd->status.base_level, mob->status.class_, mob->status.mode, 2) / 100; if (droprate <= 0 && !battle_config.drop_rate0item) droprate = 1; } #endif if((sd->sc.count && sd->sc.data[SC_ITEMBOOST])) // Display drop rate increase for SC_ITEMBOOST eg. Bubblegum dropbonus += (droprate * sd->sc.data[SC_ITEMBOOST]->val1) / 100; if (pc_isvip(sd)) // Display drop rate increase for VIP dropbonus += (droprate * battle_config.vip_drop_increase) / 100; if (dropbonus) sprintf(atcmd_output2, " %s %02.02f%% + (%02.02f%%)", createItemLink(item_data->nameid, 0, NULL).c_str(), (float)droprate / 100, (float)dropbonus / 100); else sprintf(atcmd_output2, " %s %02.02f%%", createItemLink(item_data->nameid, 0, NULL).c_str(), (float)droprate / 100); strcat(atcmd_output, atcmd_output2); j++; clif_displaymessage(fd, atcmd_output); strcpy(atcmd_output, " "); } if (j == 0) clif_displaymessage(fd, msg_txt(sd,1246)); // This monster has no drops. // mvp if (mob->mexp) { float mvppercent, mvpremain; sprintf(atcmd_output, msg_txt(sd,1247), mob->mexp); // MVP Bonus EXP:%u clif_displaymessage(fd, atcmd_output); strcpy(atcmd_output, msg_txt(sd,1248)); // MVP Items: clif_displaymessage(fd, atcmd_output); strcpy(atcmd_output, " "); mvpremain = 100.0; //Remaining drop chance for official mvp drop mode j = 0; for (i = 0; i < MAX_MVP_DROP_TOTAL; i++) { if (mob->mvpitem[i].nameid <= 0 || (item_data = itemdb_exists(mob->mvpitem[i].nameid)) == NULL) continue; //Because if there are 3 MVP drops at 50%, the first has a chance of 50%, the second 25% and the third 12.5% mvppercent = (float)mob->mvpitem[i].p * mvpremain / 10000.0f; if(battle_config.item_drop_mvp_mode == 0) { mvpremain -= mvppercent; } if (mvppercent > 0) { j++; sprintf(atcmd_output2, " %s %02.02f%%", createItemLink(item_data->nameid, 0, NULL).c_str(), mvppercent); strcat(atcmd_output, atcmd_output2); clif_displaymessage(fd, atcmd_output); strcpy(atcmd_output, " "); } } if (j == 0) clif_displaymessage(fd, msg_txt(sd,1249)); // This monster has no MVP prizes. }
thanks for this Working 100%
i'm using itemlink-20190319-e6f1f21d.diff
- 1
-
4 hours ago, RandomUser45678 said:
skill_delay_attack_enable is already 1, since that is the default. I tried no but that didnt change anything
the video is from 10 years ago we dont know if that server have anti cheat or anti 0 delay GRF
-
skill.conf
// Will normal attacks be able to ignore the delay after skills? (Note 1)
skill_delay_attack_enable: yes
-
8 hours ago, RandomUser45678 said:
Hey everyone, wondering how this is being done from a server point of view?
Notice the priest can spam very fast when being hit. but when not hit there is regular cooldown.
// The rate of time it takes to cast a spell (Note 2, 0 = No casting time)
casting_rate: 100
// Delay time after casting (Note 2)
delay_rate: 0
// Does the delay time depend on the caster's DEX and/or AGI? (Note 1)
// Note: On Official servers, neither Dex nor Agi affect delay time
delay_dependon_dex: no
delay_dependon_agi: yes
// Minimum allowed delay for ANY skills after castbegin (in milliseconds) (Note 1)
// Note: Setting this to anything above 0 can stop speedhacks.
min_skill_delay_limit: 10
// This delay is the min 'can't walk delay' of all skills.
// NOTE: Do not set this too low, if a character starts moving too soon after
// doing a skill, the client will not update this, and the player/mob will
// appear to "teleport" afterwards.
default_walk_delay: 80
Try this settings your skill. Conf
-
56 minutes ago, ProjectX said:
this is killed by mobs. i mean pvp map after he died.
did you try the mapflag?
//= Mapflag: Nightmare mode.
//= Players drop items/equipment on death.
-
2 hours ago, ProjectX said:
when he dies, some of his items and the inventory will automatically drop one . let's say the chance is 25%
https://github.com/rathena/rathena/blob/master/npc/mapflag/nightmare.txt
-
try check this
on latest rathena
https://github.com/rathena/rathena/blob/master/src/map/pc.cpp#L7289
/** * Check if we still have the correct weapon to continue the skill (actually status) * If not ending it * @param sd * @return 0:error, 1:check done */ static void pc_checkallowskill(struct map_session_data *sd) { const enum sc_type scw_list[] = { SC_TWOHANDQUICKEN, SC_ONEHAND, SC_AURABLADE, SC_PARRYING, SC_SPEARQUICKEN, SC_ADRENALINE, SC_ADRENALINE2, SC_DANCING, SC_GATLINGFEVER, }; uint8 i; nullpo_retv(sd); if(!sd->sc.count) return; for (i = 0; i < ARRAYLENGTH(scw_list); i++) { // Skills requiring specific weapon types if( scw_list[i] == SC_DANCING && !battle_config.dancing_weaponswitch_fix ) continue; if(sd->sc.data[scw_list[i]] && !pc_check_weapontype(sd,skill_get_weapontype(status_sc2skill(scw_list[i])))) status_change_end(&sd->bl, scw_list[i], INVALID_TIMER); } if(sd->sc.data[SC_SPURT] && sd->status.weapon) // Spurt requires bare hands (feet, in fact xD) status_change_end(&sd->bl, SC_SPURT, INVALID_TIMER); if(sd->status.shield <= 0) { // Skills requiring a shield const enum sc_type scs_list[] = { SC_AUTOGUARD, SC_DEFENDER, SC_REFLECTSHIELD, SC_REFLECTDAMAGE }; for (i = 0; i < ARRAYLENGTH(scs_list); i++) if(sd->sc.data[scs_list[i]]) status_change_end(&sd->bl, scs_list[i], INVALID_TIMER); } }
-
On 11/26/2022 at 7:54 PM, mastersancheszue said:
Hello @Bringer what did you config to again that kind of asura? only Skill.c / Skill_db?
Code for slide skill.cpp
-
Walking MVP Dropping items on Floor
in Script Requests
Posted
100% Working Thank So Much !!
my Custom mob Setup Can Move No Random Walk MVP Knockback Immune Status Immune
dMotion = 0
how long it is before the monster/player can move again. Endure is dMotion = 0, obviously.