-
Posts
10018 -
Joined
-
Days Won
409
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Everything posted by Emistry
-
bonus2 bAddMonsterDropItem,n,x; When killing any monsters with physical attack, the probability which drops item n +x% (the item which the monster drops unrelated ones) if 'x' is negative value, then it's a part of formula chance = -x*(killed_mob_level/10)+1
-
Help- Add item id range for Card Trader (Euphy's Script)
Emistry replied to iraciz's question in Scripting Support
if (@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) { change to if ((@sold_nameid[.@i] > 4000 && @sold_nameid[.@i] < 4700) || (@sold_nameid[.@i] >= 27120 && @sold_nameid[.@i] <= 27126)) { -
Anyone can help me please setup my fluxcp?
Emistry replied to chronoscrowler's question in Web Requests
'Database' => 'ragna_logs <--------- Where is the missing symbol ' ??? always recheck what you have edited. -
I believe its either AEGIS conversion, or source from kRO.
-
map_name mapflag pvp
-
ALTER TABLE `picklog` ADD COLUMN `bound` TINYINT(3) UNSIGNED NOT NULL default '0' AFTER `unique_id`;
-
check if EQUIPPED Item is bounded or Rental
Emistry replied to darking123's question in Scripting Support
if (@inventorylist_id[.@i] == getequipid(.@part)){ change into this if (@inventorylist_equip[.@i] > 0 && @inventorylist_id[.@i] == getequipid(.@part)){ -
Cannot apply points to Sura's Earth Shaker skill.
Emistry replied to behelit's question in General Support
probably you didnt have the pre-requisite skills. -
buildin_strcharinfo: Fatal error ! Player not attached!
Emistry replied to keoma's question in Scripting Support
change sleep() into sleep2() to keep the player attached. -
updated the link, re-try.
-
maybe try adjust the flee modifier here? conf/battle/battle.conf#L64-L78
-
check if EQUIPPED Item is bounded or Rental
Emistry replied to darking123's question in Scripting Support
prontera,155,181,5 script Sample 4_F_KAFRA1,{ getinventorylist; for (.@i = 0; .@i < @inventorylist_count;. @i++) { if (@inventorylist_equip[.@i]) { mes "item is equipped."; } if (@inventorylist_expire[.@i]) { mes "item has expired time."; } if (@inventorylist_bound[.@i]) { mes "item is bounded."; } } } you can use getinventorylist to get all the information -
a better approach, re-check it every minutes, since player can actually recall the homun after they entered the maps. - script Sample -1,{ OnInit: .map$ = "prt_fild01"; setmapflag .map$,mf_loadevent; end; OnPCLoadMapEvent: if(strcharinfo(3) == .map$) { if (gethominfo(0)) { mes "Sorry, Homunculus are not allowed in this Map. Please remove it."; close2; warp "SavePoint",0,0; } else { addtimer (60 * 1000), strnpcinfo(3)+"::OnPCLoadMapEvent"; } } end; }
-
read this line that's what you requested...
-
try this - script sample -1,{ OnUpdate: if (HUNGER_VALUE > 0) { HUNGER_VALUE -= 10; // reduce by 10 every time. dispbottom "<SYSTEM> Hunger : "+HUNGER_VALUE; if (HUNGER_VALUE <= 0) recalculatestat; } OnPCLoginEvent: addtimer (60 * 60000), strnpcinfo(3)+"::OnUpdate"; // check every 60 minutes. end; OnPCStatCalcEvent: if (HUNGER_VALUE <= 0) { bonus bMaxHPrate, -100; bonus bMaxSPrate, -100; bonus bSpeedRate,-100; } end; }
-
try this. prontera,155,181,5 script Sample 4_F_KAFRA1,{ for (.@eqi = EQI_SHOES; .@eqi < EQI_HAND_R; .@eqi++) { .@equip_id = getequipid(.@eqi); if (.@equip_id > 0) .@menu$ = .@menu$ + getitemname(.@equip_id) + " ["+getitemslots(.@equip_id)+"]"; .@menu$ = .@menu$ + ":"; } mes "Select an equipment."; .@eqi = select(.@menu$) - 1 + EQI_SHOES; mes "Equip: "+getitemname(getequipid(.@eqi)); if (.itemid_size) { mes "Required Items:"; for (.@i = 0; .@i < .itemid_size; .@i++) { mes " -> "+F_InsertComma(.amount[.@i])+"x "+getitemname(.itemid[.@i]); if (countitem(.itemid[.@i]) < .amount[.@i]) .@fail++; } } if (!.@fail) { if (select("Reset Enchantment", "Cancel") == 1) { for (.@i = 0; .@i < .itemid_size; .@i++) delitem .itemid[.@i], .amount[.@i]; .@equip_id = getequipid(.@eqi); .@refine = getequiprefinerycnt(.@eqi); for (.@i = 0; .@i < 4; .@i++) .@card[.@i] = getequipcardid(.@eqi, .@i); delequip .@eqi; getitem2 .@equip_id, 1, 1,.@refine,0,.@card[0],.@card[1],.@card[2],.@card[3]; mes "Done reset enchant."; } } close; OnInit: setarray .itemid, 501, 502; setarray .amount, 1, 2; .itemid_size = getarraysize(.itemid); end; }
-
this file affect drop rate too. db/re/level_penalty.txt#L43-L60 item_drop_common_min: 1 item_drop_common_max: 1000 this define the minimum and maximum drop rate .... from your settings, its 0.01% (min) ~ 10.00% (max) hence your Poring are probably dropping Jellopy at 10% max.
-
you can refer this topic to obtain the similar result. https://rathena.org/board/topic/123367-npc-can-open-another-scripttxt/?do=findComment&comment=375649
-
you can try this https://pastebin.com/86dfkxdG
-
wouldn't recommend using atcommand since it would spam the atcommand log if the server enabled it. - script sample -1,{ OnPCDieEvent: getmapxy(.@map$, .@x, .@y, BL_PC); if (.@map$ == "prontera") { getinventorylist; while (.@i < @inventorylist_count) { if (!@inventorylist_bound[.@i] && !@inventorylist_equip[.@i]) { for (.@roi = 0; .@roi < 5; .@roi++) { .@RandomIDArray[.@roi] = getd("@inventorylist_option_id"+(.@roi+1)+"["+.@i+"]"); .@RandomValueArray[.@roi] = getd("@inventorylist_option_value"+(.@roi+1)+"["+.@i+"]"); .@RandomParamArray[.@roi] = getd("@inventorylist_option_parameter"+(.@roi+1)+"["+.@i+"]"); } delitem3 @inventorylist_id[.@i],@inventorylist_amount[.@i],@inventorylist_identify[.@i],@inventorylist_refine[.@i],@inventorylist_attribute[.@i],@inventorylist_card1[.@i],@inventorylist_card2[.@i],@inventorylist_card3[.@i],@inventorylist_card4[.@i],.@RandomIDArray,.@RandomValueArray,.@RandomParamArray; makeitem3 @inventorylist_id[.@i],@inventorylist_amount[.@i],.@map$, .@x + rand(-2,2), .@y + rand(-2,2),@inventorylist_identify[.@i],@inventorylist_refine[.@i],@inventorylist_attribute[.@i],@inventorylist_card1[.@i],@inventorylist_card2[.@i],@inventorylist_card3[.@i],@inventorylist_card4[.@i],.@RandomIDArray,.@RandomValueArray,.@RandomParamArray; } .@i++; } } end; } you can try something like this.
-
prontera,155,181,5 script NPC_1 4_F_KAFRA1,{ OnTalk: mes "Now you're talking with NPC_1"; switch(select( "Talk with NPC 2", "Talk with NPC 3", "Cancel" )) { case 1: doevent "NPC_2::OnTalk"; break; case 2: doevent "NPC_3::OnTalk"; break; default: break; } close; } prontera,155,183,5 script NPC_2 4_F_KAFRA1,{ OnTalk: mes "Now you're talking with NPC_2"; next; mes "Now you're back to NPC_1"; doevent "NPC_1::OnTalk"; } prontera,155,185,5 script NPC_3 4_F_KAFRA1,{ OnTalk: mes "Now you're talking with NPC_3"; close; }
-
use the doevent script command. add a label to your NPC, then use doevent(...) script command to trigger it. *doevent "<NPC object name>::<event label>"; This command will start a new execution thread in a specified NPC object at the specified label. The execution of the script running this command will not stop, and the event called by the 'doevent' command will not run until the invoking script has terminated. No parameters may be passed with a doevent call. The script of the NPC object invoked in this manner will run as if it's been invoked by the RID that was active in the script that issued a 'doevent'. As such, the command will not work if an RID is not attached. place,100,100,1%TAB%script%TAB%NPC%TAB%53,{ mes "This is what you will see when you click me"; close; OnLabel: mes "This is what you will see if the doevent is activated"; close; } .... doevent "NPC::OnLabel";
-
edit the range here. https://github.com/rathena/FluxCP/blob/1937417dd38eafce75ea41f7e7bba559af00a58a/config/application.php#L87-L88
-
No one can Enter WoE Maps during Normal Time
Emistry replied to Ukiram's question in Script Requests
- script sample -1,{ OnInit: setarray .@map$, "prtg_cas01", "prtg_cas02", "prtg_cas03", "prtg_cas04", "prtg_cas05", "payg_cas01", "payg_cas02", "payg_cas03", "payg_cas04", "payg_cas05", "gefg_cas01", "gefg_cas02", "gefg_cas03", "gefg_cas04", "gefg_cas05", "aldeg_cas01", "aldeg_cas02", "aldeg_cas03", "aldeg_cas04", "aldeg_cas05", .@size = getarraysize(.@map$); while (.@i < .@size) { setmapflag .@map$[.@i], mf_loadevent; .@i++; } end; OnPCLoadMapEvent: if (getgmlevel() >= 99) end; if (getmapflag(strcharinfo(3), mf_gvg_castle) && (agitcheck() || agitcheck2() || agitcheck3()) ) { warp "SavePoint",0,0; } end; } -
https://github.com/rathena/rathena/blob/652d77eb0287a13fca25d47eb5317de1b538fe87/src/map/mob.cpp#L2665-L2673 modify it into something like this. int rate = pc_level_penalty_mod(md->level - tmpsd[i]->status.base_level, md->status.class_, md->status.mode, 1); if (tmpsd[i]->status.base_level >= (MAX_LEVEL - 5)) rate = 50; // reduce EXP rate by half for last 5 base level. if (rate != 100) { if (base_exp) base_exp = (unsigned int)cap_value(apply_rate(base_exp, rate), 1, UINT_MAX); if (job_exp) job_exp = (unsigned int)cap_value(apply_rate(job_exp, rate), 1, UINT_MAX); }