Jump to content

Tokei

Members
  • Posts

    528
  • Joined

  • Last visited

  • Days Won

    59

Tokei last won the day on August 19

Tokei had the most liked content!

Profile Information

  • Gender
    Male
  • Location
    Canada

Recent Profile Visitors

17,290 profile views

Tokei's Achievements

  1. Hmm, you could just replace the gat files with the original ones. That should achieve the results you're looking for.
  2. Heya, Make sure you have the increase guild tax limit patch when you made your client. The restriction is client-sided, not server-sided.
  3. Heya, The error message tells you the error: if (.msg_die) message [email protected], "You have been killed by "+ [email protected]$; if (.msg_kill) message [email protected], "You just killed "+ [email protected]$; The "message" script command on rAthena requires two strings as parameters. First parameter is the player name (which is pretty weird, not gonna lie), so you should change those to: if (.msg_die) message [email protected]$, "You have been killed by "+ [email protected]$; if (.msg_kill) message [email protected]$, "You just killed "+ [email protected]$; Though clearly this script wasn't meant for rAthena.
  4. Heya, Well there's a big amount of information missing here, but if it's activating stone curse, it's usually because the status given to sc_start is 0. This happens because your new status is not defined as a constant that can be used in your scripts. So go in map/script_constants.hpp, and make sure that your variable is listed, for example: export_constant(SC_CUSTOMSTATUS); Also make sure that the status used in your item script matches the name of the status correctly.
  5. if (rand(1,100) < 1){ ^ is an impossible condition. Use if (rand(100) < 1) { instead.
  6. It's a client issue. Change the clif_add_random_options function to skip empty entries. Something like... /// Fills in part of the item buffers that calls for variable bonuses data. [Napster] /// A maximum of 5 random options can be supported. static uint8 clif_add_random_options( struct ItemOptions buf[MAX_ITEM_RDM_OPT], struct item* it ){ nullpo_retr( 0, it ); uint8 count = 0; memset(buf, 0, sizeof(struct ItemOptions) * MAX_ITEM_RDM_OPT); for( int i = 0; i < MAX_ITEM_RDM_OPT; i++ ){ if( it->option[i].id ){ buf[count].index = it->option[i].id; // OptIndex buf[count].value = it->option[i].value; // Value buf[count].param = it->option[i].param; // Param1 count++; } } #if MAX_ITEM_RDM_OPT < 5 for( ; i < 5; i++ ){ buf[i].index = 0; // OptIndex buf[i].value = 0; // Value buf[i].param = 0; // Param1 } #endif return count; }
  7. It will affect your server load, yes. You would need to add a restriction in the source such as: if (src && src->type == BL_PC && bl->type == BL_MOB && damage > 0) { struct mob_data *md = (struct mob_data *)bl; if (md->id == 1002) { mapreg_setreg(reference_uid(add_str("[email protected]_mid"), 0), md->id); mapreg_setreg(reference_uid(add_str("[email protected]_gid"), 0), md->bl.id); npc_event_do_id("MyNPC::OnEvent", src->id); } } That on its own would be more reasonable, but if you have... I don't know, 10 people attacking the mob with 193 aspd, I'd be concerned. You'd probably want to do it all in the source instead, or at the very least put the chance of drop in the source. Something like... if (src && src->type == BL_PC && bl->type == BL_MOB && damage > 0) { struct mob_data *md = (struct mob_data *)bl; struct map_session_data *sd = (struct map_session_data *)src; if (md->id == 1002 && (rnd() % 100) < 5) { // 5% chance struct item it; t_itemid nameid = 501; int flag; memset(&it,0,sizeof(it)); it.nameid = nameid; it.identify = 1; it.bound = BOUND_NONE; // Assuming it is not a pet egg, you can skip some checks. Up to you at this point. if ((flag = pc_additem(sd, &it, 1, LOG_TYPE_SCRIPT))) { clif_additem(sd, 0, 0, flag); } } }
  8. Personally though, I'd say you should make a yaml conf file where you define drop groups with a chance, then assign a mob to a drop group in your mob_db.yml file instead. It's more work, but it's also much more effecient than running a script. Then again, that requires more source knowledge I suppose.
  9. You'd still need to modify your source to do that. You can be more restrictive as well and attach more "parameters". killerid won't work as it isn't added to the script yet. So something like... if (src && src->type == BL_PC && bl->type == BL_MOB && damage > 0) { struct mob_data *md = (struct mob_data *)bl; mapreg_setreg(reference_uid(add_str("[email protected]_mid"), 0), md->id); mapreg_setreg(reference_uid(add_str("[email protected]_gid"), 0), md->bl.id); npc_event_do_id("MyNPC::OnEvent", src->id); } OnEvent: switch([email protected]_mid) { case 1002: if (rand(100) < 5) { getitem 501, 1; } break; } end;
  10. It's possible, but it's also... very intensive for your server and I would highly recommend against it. In battle.cpp, in battle_calc_damage, add the NPC call: if (bl->type == BL_PC) { npc_event_do_id("MyNPC::OnEvent", bl->id); } And with the matching script: - script MyNPC -1,{ end; OnEvent: //callfunc("F_Function"); dispbottom "You have attacked."; end; } It would be much better to add code in the source for what you want to do instead.
  11. I loaded the maps you provided and there are no objects. So nothing to do with GRF Editor, but an issue with your local files or your client.
  12. Heya, You would have to share the map files you're trying to modify as there should be no issues with the settings you've picked.
  13. Well, the question is hard to answer because there is nothing wrong with the script. The announcements are clearly wrong, and it doesn't account for server reboots where the rates would be reset to Friday's rates, but besides that... it works as you'd expect. What issue do you have in particular?
  14. The job sprite does not get smaller. Neither in-game nor in Act Editor. The wing size has gotten smaller, though.
  15. Have you tried using Magnify (with anchor points)? If that's not what you're looking for, you'll have to use math to do what you want. Act files only use 1 anchor per frame.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use and Privacy Policy.