

Bringer
-
Posts
748 -
Joined
-
Last visited
-
Days Won
1
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Posts posted by Bringer
-
-
4 hours ago, GM Winter said:
in the future better update your makeitem we got same error i just diff this commit https://github.com/rathena/rathena/commit/2eebafb70330e37dd69a384ce0af52570b4956c2
-
@Winterfox question is possible when they pickup the item players gain Buffs from item and item will be disappear current time ? let say 15mins
buffs only work MAP EVENT ? -
4 hours ago, Winterfox said:
This will make the mob move and allows configuring how often an item is dropped per percent threshold and how often the item is stacked.
The movement is sadly a bit limited. You will have to set several waypoints, for the mob to follow, and the mob will stop permanently when attacked.
I didn't find a fix for the problem of stopping, so I will leave it like this. Maybe someone else can help you fix this issue.100% Working Thank So Much !!
my Custom mob Setup Can Move No Random Walk MVP Knockback Immune Status Immune
4 hours ago, Winterfox said:The movement is sadly a bit limited. You will have to set several waypoints, for the mob to follow, and the mob will stop permanently when attacked.
I didn't find a fix for the problem of stopping, so I will leave it like this. Maybe someone else can help you fix this issue.dMotion = 0
how long it is before the monster/player can move again. Endure is dMotion = 0, obviously. -
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
Walking MVP Dropping items on Floor
in Script Requests
Posted · Edited by Bringer
- script MVP_EVENT FAKE_NPC,{
OnInit:
// Mobinfo
bindatcmd "walk",strnpcinfo(3)+"::OnSpawn",99,99;
.mob = 20581;
.map$ = "morocc";
.x = 154;
.y = 92;
.respawn_time = 15; // Respawntime in minutes
.percent = 1; // Item drop every x hp percent.
// <x, y>..
setarray(.path, 158, 87, 162, 90, 166, 87, 161, 91, 156, 90);
// Dropiteminfo
.item = 7227;
.repetition = 30; // How often the item drops per x hp percent
.expiration_time = 1; // Expiration time in minutes
.stack_size = 1; // Stacksize per drop
// Buffinfo
.skill_effect = 34; // The id of the buff skill
.skill_effect_value = 0; // The value the skill effect shows, for example when the skill is heal.
.status_effetc_type = SC_BLESSING;
.status_ticks = 240000;
.status_value1 = 10;
.status_value2 = 0;
.status_value3 = 0;
.status_value4 = 0;
// CONFIG END //
.move_count = getarraysize(.path) - 2;
donpcevent("MVP_EVENT::OnBuffcheck");
.respawn_time *= 1000 * 60;
.expiration_time *= 60;
OnSpawn:
monster(.map$, .x, .y, strmobinfo(1, .mob), .mob, 1);
.gid = $@mobid[0];
.curr_pointer = -2;
donpcevent("MVP_EVENT::OnDestinationReached");
.@next_drop_percent = 100 - .percent;
.@last_hp_percent = 100;
freeloop(1);
while(unitexists(.gid)) {
getunitdata(.gid, .@mvp_data);
.@curr_hp_percent = .@mvp_data[UMOB_HP] * 100 / .@mvp_data[UMOB_MAXHP];
if(.@curr_hp_percent == .@last_hp_percent) {
sleep(500);
continue;
}
if(.@curr_hp_percent > .@last_hp_percent)
.@next_drop_percent = (.@curr_hp_percent / .percent) * .percent;
.@last_hp_percent = .@curr_hp_percent;
if(.@next_drop_percent >= .@curr_hp_percent) {
donpcevent("MVP_EVENT::OnDrop");
.@next_drop_percent -= .percent;
}
sleep(500);
}
freeloop(0);
sleep(.respawn_time);
donpcevent("MVP_EVENT::OnSpawn");
end;
OnDrop:
for(.@i = 0; .@i < .repetition; .@i++) {
getunitdata(.gid, .@mvp_data);
//makeitem(.item, 1, mapid2name(.@mvp_data[UMOB_MAPID]), .@mvp_data[UMOB_X], .@mvp_data[UMOB_Y], 1);
makeitem(.item, .stack_size, mapid2name(.@mvp_data[UMOB_MAPID]), .@mvp_data[UMOB_X] + rand(-8, 8), .@mvp_data[UMOB_Y] + rand(-8, 8), 8);
}
end;
OnDestinationReached:
if(!unitexists(.gid)) end;
if(.move_count == .curr_pointer)
.curr_pointer = 0;
else
.curr_pointer += 2;
unitwalk(.gid, .path[.curr_pointer], .path[.curr_pointer + 1], "MVP_EVENT::OnDestinationReached");
end;
OnBuffcheck:
freeloop(1);
while(true) {
addrid(5, 0, .map$);
.@item_count = countitem(.item);
if(.@item_count > 0) {
getinventorylist(getcharid(0));
for(.@i = 0; .@i < @inventorylist_count; .@i++) {
if(@inventorylist_id[.@i] == .item && @inventorylist_expire[.@i] == 0) {
delitemidx(@inventorylist_idx[.@i], @inventorylist_amount[.@i]);
break;
}
}
for(.@i = 0; .@i < .@item_count; .@i++)
rentitem(.item, .expiration_time);
}
if(rentalcountitem(.item) > 0 && getstatus(.status_effetc_type) == 0) {
sc_start4(.status_effetc_type, .status_ticks, .status_value1, .status_value2, .status_value3, .status_value4);
skilleffect(.skill_effect, .skill_effect_value);
}
detachrid;
sleep(100);
}
freeloop(0);
}
Here my Script @Winterfox
the buffs fuction is Working
how about i have different drops let say
Red Potion,Yellow Potion,OrangePotion,BluePotion,GreenPotion
will it give me different buffs according to item i picked up, is this possible?
and buffs can be stack let say pickup RedPotion Buffs is STR + 10, then i pick again another red potion it will add up and will make it now 20str, till it reach maximum level 10