Jump to content

Emistry

Forum Moderator
  • Posts

    10015
  • Joined

  • Days Won

    396

Everything posted by Emistry

  1. 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));
  2. you basically just pick whatever effect you want and have it apply to the monsters
  3. 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
  4. find the fakeicon(..) script command source mod and implement into your server
  5. run the SQL queries at your database engine, HeidiSQL, MySQL Workbench, PhpMyAdmin etc
  6. 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
  7. you can just make the item can only be equipped at right hand position.
  8. 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
  9. 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.
  10. autobonus "{ if (countitem(512)) delitem 512, 1; else unitstopattack(getcharid(3)); }",1000,1000; something like this ?
  11. 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
  12. 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.
  13. ensure your NPC are using the correct shop type. shop cashshop itemshop pointshop marketshop
  14. recompile the server after you apply the source modification or downloaded latest rathena version.
  15. 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 );
  16. 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],""; }
  17. https://github.com/rathena/rathena/wiki/diff
  18. 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.
  19. src/config/packets.hpp#L16 #define PACKETVER 20220406
  20. 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; }
  21. 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
  22. 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); .
  23. update your rathena. if you cant, then find and replace with this + "GROUP BY `cid`, `nameid`, `name`"
  24. Emistry

    mvp damage

    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
  25. refrain from creating multiple post just for same issue or question. One post is more than enough.
×
×
  • Create New...