-
Posts
10015 -
Joined
-
Days Won
400
Content Type
Profiles
Forums
Downloads
Jobs Available
Server Database
Third-Party Services
Top Guides
Store
Crowdfunding
Everything posted by Emistry
-
what you need is rewrite the static int buildin_mobcount_sub(struct block_list *bl,va_list ap) into static int buildin_mobcount_by_id_sub(struct block_list *bl,va_list ap) // Added by RoVeRT { unsigned int id = va_arg(ap,unsigned int); struct mob_data *md = ((struct mob_data *)bl); if (md->status.hp > 0 && md->status.class_ == id) return 1; return SCRIPT_CMD_SUCCESS; } script_pushint(st,map_foreachinmap(buildin_mobcount_by_id_sub, id));
-
you basically just pick whatever effect you want and have it apply to the monsters
-
ensure your server have exported this constant to be allowed to use by script engine may try configure the card/enchant equip location rental item are only meant for item itself, not compounding items like enchant/card
-
find the fakeicon(..) script command source mod and implement into your server
-
run the SQL queries at your database engine, HeidiSQL, MySQL Workbench, PhpMyAdmin etc
-
Open Application in windows using NPC script?
Emistry replied to Onairda's topic in Script Discussion
may refer this topic, goddameit did something similar in the past. https://rathena.org/board/topic/62654-send-e-mail-to-someone/ however it only work if the command are executed in same hosting environment -
you can just make the item can only be equipped at right hand position.
-
you aren't using the script which I have updated for you in the earlier post. prontera,146,171,6 script Portal Square 89,{ .@n$ = "[^3355FF Portal Square ^000000]"; .@party_id = getcharid(1); .@p_name$ = getpartyname(.@party_id); .@instance$ = "Portal Square"; if (!.@party_id || getcharid(0) != getpartyleader(.@party_id, 2)) { mes .@n$; mes "In able to enter the Portal Square, you must have a party."; close; } mes .@n$; mes "Portal Square is available everyday for 1 hour and 30 minutes."; mes "Remember, the room and everything inside including boss chamber and other resources, watch out for enemies as well since the room are pk free."; next; switch(select("Enter the Room:Cancel")) { case 1: switch(instance_enter("Portal Square")) { case 3: mes .@n$; mes "You doesn't have a party."; close; case 2: mes .@n$; mes "You can enter the room after making a party."; end; } break; case 2: mes .@n$; mes "Have a nice day then, see you later!."; break; } close; } //================================================================================== //--------|Map Flags|--------------------------------------------------------------- //================================================================================== prt_maze01 mapflag monster_noteleport prt_maze01 mapflag nowarpto prt_maze01 mapflag nomemo prt_maze01 mapflag noteleport prt_maze01 mapflag nosave SavePoint prt_maze01 mapflag nopenalty prt_maze01 mapflag pvp
-
may refer https://github.com/cydh/rathena-wiki/blob/master/%40go_delay_when_hit.md there are also alot topic about adding delay to command upon hit by monsters, search the forum.
-
autobonus "{ if (countitem(512)) delitem 512, 1; else unitstopattack(getcharid(3)); }",1000,1000; something like this ?
-
prontera,146,171,6 script Portal Square 89,{ .@n$ = "[^3355FF Portal Square ^000000]"; .@party_id = getcharid(1); .@p_name$ = getpartyname(.@party_id); .@instance$ = "Portal Square"; if (getcharid(0) != getpartyleader(.@party_id,2)) { mes .@n$; mes "In able to enter the Portal Square, you must have a party."; close } mes .@n$; mes "Portal Square is available everyday for 1 hour and 30 minutes."; mes "Remember, the room and everything inside including boss chamber and other resources, watch out for enemies as well since the room are pk free."; next; switch(select("Enter the Room:Cancel")) { case 1: switch(instance_enter("Portal Square")) { case 3: mes .@n$; mes "You doesn't have a party."; close; case 2: mes .@n$; mes "You can enter the room after making a party."; end; } break; case 2: mes .@n$; mes "Have a nice day then, see you later!."; break; } close; } //================================================================================== //--------|Map Flags|--------------------------------------------------------------- //================================================================================== prt_maze01 mapflag monster_noteleport prt_maze01 mapflag nowarpto prt_maze01 mapflag nomemo prt_maze01 mapflag noteleport prt_maze01 mapflag nosave SavePoint prt_maze01 mapflag nopenalty prt_maze01 mapflag pvp remove unnecessary brackets
-
that's not how bitmask work. dont want it work this way? then change the whole thing, and not to use bitmask. .RewardList = 1|2; // include only reward 1 and 2 using bitmask, this is the way to get reward 1 and 2.
-
ensure your NPC are using the correct shop type. shop cashshop itemshop pointshop marketshop
-
find these line in mob.cpp // Cap it to 100% drop_rate = min( drop_rate, 10000 ); change to if (sd->state.pvpmode) drop_rate += 100; // final drop rate increment by 1.00% // Cap it to 100% drop_rate = min( drop_rate, 10000 );
-
[Error]: buildin_getcharid: Player with nick '' is not found
Emistry replied to Murasaki's question in Scripting Support
may try change for (set .@i,0; .@i<=$avthana_countusers; set .@i, .@i+1 ) { if ($avthana_winnerparty$!=$avthana_mapusers$[.@i] && $avthana_winnerparty$!=getpartyname(getcharid(1,$avthana_mapusers$[.@i]))) { getmapxy(.@mapname$,.@mapx,.@mapy,BL_PC,$avthana_mapusers$[.@i]); if (.@mapname$=="thana_boss") charcommand "#return "+$avthana_mapusers$[.@i]; } // Get rid of the data at the same time! set $avthana_mapusers$[.@i],""; } into for (set .@i, 0; .@i <= $avthana_countusers; set .@i, .@i + 1) { // party name matched if ($avthana_winnerparty$ == $avthana_mapusers$[.@i]) continue; // player not found if (getmapxy(.@mapname$, .@mapx, .@mapy, BL_PC, $avthana_mapusers$[.@i])) continue; // party name matched if ($avthana_winnerparty$ != getpartyname(getcharid(1, $avthana_mapusers$[.@i]))) { if (.@mapname$ == "thana_boss") charcommand "#return "+$avthana_mapusers$[.@i]; } // Get rid of the data at the same time! set $avthana_mapusers$[.@i],""; } -
https://github.com/rathena/rathena/wiki/diff
-
Need help or suggestion callsub for agitstart
Emistry replied to DK77's question in Scripting Support
agitstart(...) and agitcheck(...) are both different script command for different purpose. *agitstart; *agitend; *agitstart2; *agitend2; *agitstart3; *agitend3; These commands will start and end War of Emperium FE, War of Emperium SE, or War of Emperium TE. This is a bit more complex than it sounds, since the commands themselves won't actually do anything interesting, except causing all 'OnAgitStart:' and 'OnAgitEnd:', 'OnAgitStart2:' and 'OnAgitEnd2:', or 'OnAgitStart3:' and 'OnAgitEnd3:' in the case of latter two commands, events to run everywhere, respectively. They are used as simple triggers to run a lot of complex scripts all across the server, and they, in turn, are triggered by clock with an 'OnClock<time>:' time-triggering label. *agitcheck() *agitcheck2() *agitcheck3() These function will let you check whether the server is currently in WoE:FE mode (agitcheck()), WoE:SE mode (agitcheck2()), or WoE:TE mode (agitcheck3()) and will return true if War of Emperium is on and false if it isn't. -
src/config/packets.hpp#L16 #define PACKETVER 20220406
-
script moving a character from an account to another one
Emistry replied to Giant Whisper's question in Script Requests
prontera,155,181,5 script Sample 757,{ mes "Enter character ID to move it to your account."; input .@value; query_sql("SELECT `account_id`, `char_id` FROM `char` WHERE `char_id` = "+.@value, .@aid, .@cid); if (!.@aid || !.@cid) { mes "Character doesn't exists."; close; } if (isloggedin(.@aid)) { mes "That account is logged in, please log off."; close; } query_sql("SELECT COUNT(1) FROM `char` WHERE `account_id` = "+getcharid(3), .@total_char); if (.@total_char >= 3) { mes "Your account already have more than 3 characters."; close; } query_sql("UPDATE `char` SET `account_id` = "+getcharid(3)+" WHERE `char_id` = "+.@cid); mes "Updated, please relog to see your new character."; close; } -
Is any one have folder 'Mobs Spawn' for RO Before 6.0 (aka 5.0) ?
Emistry replied to Alexandrite's question in Script Requests
you can still browse through the history to find what you want. https://github.com/rathena/rathena/commits/9d4adf08647b8488a41698e6c9a8b482657302cd/npc/mobs/dungeons/magmadun.txt?browsing_rename_history=true&new_path=npc/pre-re/mobs/dungeons/mag_dun.txt&original_branch=master however, it probably easier if you just replace them by recreate all the mob spawn info based on your book -
function script add_numbers { .@number_1 = getarg(0, 0); .@number_2 = getarg(1, 0); query_sql("INSERT INTO `table` (`value1`, `value2`) VALUES ("+.@number_1+", "+.@number_2+")"); return (.@number_1 + .@number_2); } @sum = callfunc("add_numbers", 100, 200); .
-
Utility: Item Collector NPC / Item Sink Strategy
Emistry replied to Emistry's topic in Utility Script Releases
update your rathena. if you cant, then find and replace with this + "GROUP BY `cid`, `nameid`, `name`" -
if you want to adjust the damage of a skill, you will have to adjust the formula for skill damage calculation, and it affect everything monsters, not only MVP. if you want to decrease the damage received by MVP, maybe consider to change the DamangeTaken field in mob_db
-
refrain from creating multiple post just for same issue or question. One post is more than enough.
-
I have updated the provided code, and the script only have one part that used to display the menu, should at least try amend it instead of keep asking for spoonfeed and saying error without provide any details. this version isn't recommended because there is a small bug where it skip items when attempt to generate the menu, causing wrong item index.