Jump to content

lekkereten

Members
  • Posts

    148
  • Joined

  • Days Won

    1

Everything posted by lekkereten

  1. src/map/pc.c find clif_misceffect(&sd->bl,0); change to clif_misceffect(&sd->bl,7); src/map/atcommand.c find clif_misceffect(&sd->bl, 0); change to clif_misceffect(&sd->bl, 7);
  2. The timer is resetting whenever you log out. I used Emergency Call at 22:05, and at 22:06 I logged out. Theorically (or maybe not) you should be able to reuse the skill at 22:10 (since you first casted it at 22:05 -> 22:10-22:05 = 5 min delay), but I only could cast again the skill at 22:11. Is this the official behavior or it shouldn't reset when you log out?
  3. Also, it's not the official behavior to debuff on logout some buffs like Blessing, Increase Agility etc
  4. define la versión de packet_db_ver en db/packet_db.txt para 26 en vez de default y reinicie el server.
  5. Since your server is pre renewal I would recommend 2009-06-17aSakexe, but if you prefer the renewal client interface you should ask Judas for hyper ultra mega stable version.
  6. Please test it in game, I can't do it right now. Here's the patch: sl_effects.patch
  7. You can try: int unit_setdir(struct block_list *bl,unsigned char dir) or even void clif_changed_dir(struct block_list *bl, enum send_target target)
  8. src/map/party.c void party_renewal_exp_mod(unsigned int *base_exp, unsigned int *job_exp, int lvl, int moblvl) { int diff = lvl - moblvl, boost = 0; //-2 ~ +5: 100% if( diff >= -2 && diff <= 5 ) return;//we don't change anything, it's 100% boost //-3 ~ -10: +5% boost for each if( diff >= -10 && diff <= -3 ) boost = 100 + (( -diff * 5 ) - 15 ); // 40% boost if difference is <= -10 else if ( diff <= -10 ) boost = 40; else { boost = ( diff > 5 && diff < 11 ) ? 95 : ( diff > 10 && diff < 16 ) ? 90 : ( diff > 15 && diff < 21 ) ? 85 : ( diff > 20 && diff < 26 ) ? 60 : ( diff > 25 && diff < 31 ) ? 35 : 10; } if( *base_exp ) *base_exp = (unsigned int)cap_value(*base_exp * boost / 100, 1, UINT_MAX); if( *job_exp ) *job_exp = (unsigned int)cap_value(*job_exp * boost / 100, 1, UINT_MAX); return; } The `boost' variable will carry the experience bonus. So, if you're lv 70 and killed a mob lv 80, you get 40% extra exp. Which is calculated by this line: else if ( diff <= -10 ) boost = 40;
  9. I made this little mod, where you can set the percentage of the discount in groups.conf like the diff shows. The parameter is optional, if you don't put anything there will be no discount at all. I didn't test very much, but it think it will work. Note: you can't set discount above 100%, it will default to 100%; you can set negative values, in theory it will make the player pay more. cash_discount_group_id.patch
  10. I think it is because how it actually works on official clients. Below the function there is this comment: {// CH: <0829>.W <char id>.L <birth date:YYMMDD>.6B struct PACKET_CH_DELETE_CHAR3 { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long GID /* this+0x6 */ char Birth[6] } 2 bytes for the head; 4 bytes for the char id; 6 bytes for the birth date, 1 for each number. So if you change how it works on the emulator it'll "mismatch" with the client, I thiink... Correct me if I made an erroneous statement.
  11. Fixed this problem, thanks OnNplay Now the program identifies the size of the image and it will resize it automatically (or you can manually resize selecting one option from the resolution menu). And if your image has for example 640x480 and you selected 1024x768, it'll resize to 1024x768 rather than cropping the image in 640x480. I zipped this time with the default in Windows. ~Waiting for approval.
  12. File Name: Ragnarok Background Splitter File Submitter: mkbu95 File Submitted: 16 Sep 2012 File Category: Client Tools Content Author: mkbu95 Input Formats Avaiable: bmp (Recommended); png; jpg Resolutions Avaiable: 640x480; 800x600; 1024x768; 1152x864; 1280x960; 1400x1050; 1600x1200; Custom (automagically resizes) Instructions: Click on 'Browse...' and select your image; Make sure the image has a corresponding resolution to the options avaiable; Select the image number (the random background thing) -- if you don't know what this is, leave 1; Click on 'Split'. The output should be on the same directory as the program. Requisitions: Windows XP or above; Microsoft .NET Framework 2.0 or above. I made this very quickly, so, if I might have left something, report if you find anything Click here to download this file
  13. There are some texts that are actually images, such as one the first image, the buttons you have to edit the image. But there are strings, that you can translate (most strings) in data/msgstringtable.txt
  14. Version 0.2

    2021 downloads

    Input Formats Avaiable: bmp (Recommended); png; jpg Resolutions Avaiable: 640x480; 800x600; 1024x768; 1152x864; 1280x960; 1400x1050; 1600x1200; Custom (automagically resizes) Instructions: Click on 'Browse...' and select your image; Make sure the image has a corresponding resolution to the options avaiable; Select the image number (the random background thing) -- if you don't know what this is, leave 1; Click on 'Split'. The output should be on the same directory as the program. Requisitions: Windows XP or above; Microsoft .NET Framework 2.0 or above. I made this very quickly, so, if I might have left something, report if you find anything
    Free
  15. Tienes que cambiar los usuarios en char_athena.conf y map_athena.conf. Verifica si el usuario enviado a mysql és el mismo, si no, modifica para lo de char_athena/map_athena.conf
  16. Can you be more detailed? How do you want this to work?
  17. src/map/pc.h find: unsigned int warping : 1;//states whether you're in the middle of a warp processing add after: unsigned int main_blacklisted : 1; src/map/map.c find: party_booking_delete(sd); // Party Booking [spiria] add before: if(sd->state.main_blacklisted) { sd->state.main_blacklisted = 0; } src/map/atcommand.c find: ACMD_FUNC(main) { add after: if (sd->state.main_blacklisted) { clif_displaymessage(fd, "You have been banned for using @main."); return -1; } find: ACMD_FUNC(main) add before: ACMD_FUNC(mainblock) { struct map_session_data *pl_sd = NULL; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Please enter a player name (usage: @mainblock <char name/ID>)."); return -1; } if ((pl_sd = map_nick2sd((char *)message)) == NULL && (pl_sd = map_charid2sd(atoi(message))) == NULL) { clif_displaymessage(fd, msg_txt(3)); // Character not found. return -1; } if (pc_get_group_level(sd) < pc_get_group_level(pl_sd)) { clif_displaymessage(fd, msg_txt(81)); // Your GM level doesn't authorize you to preform this action on the specified player. return -1; } if (pl_sd->state.main_blacklisted == 0) { pl_sd->state.main_blacklisted = 1; clif_displaymessage(fd, "Blocked @main for character!"); } else { clif_displaymessage(fd, "Character is already blocked!"); } return 0; } find: ACMD_DEF(main), add before: ACMD_DEF(mainblock), If you want to toggle the ban on @mainblock, do this: find: clif_displaymessage(fd, "Character is already blocked!"); change to: pl_sd->state.main_blacklisted = 0; clif_displaymessage(fd, "Character unblocked!");
  18. I just started my Database class and we're using InnoDB in everything. Correct me if I'm wrong but, wouldn't it be better to use some keys to automate the process of deletion of data e.g. in delete_char_sql?
  19. Go to src/map/vending.c and find this function: void vending_openvending(struct map_session_data* sd, const char* message, bool flag, const uint8* data, int count) { And then put the code before this line: vending_skill_lvl = pc_checkskill(sd, MC_VENDING); Also, find this line int the code I sent you: sprintf(atcmd_output, "You need %dx %s in order to use this command", item_qty_req, itemdb_jname(item_id_req)); Add this before: char atcmd_output[150]; Then I think it'll work, didn't test though.
  20. You can use LuaDec, it is a tool that guesses some of the code. It's not 100% accurate, but gives an idea on what the code looks like. You can use it, and them compare to an older version and see what's changed. But in case it is a file that haven't been decompiled yet, you gotta use some lua script knowledge in order to mount the structure in a right way.
  21. Yeah. They can be used with pretty much all atcommands. But you have to put the code in a place before the command itself is executed. On @storage, for example, the line that open the storage is this one: if (storage_storageopen(sd) == 1) So I had to put the verification code before that, so it'll check for the items before open the storage.
  22. You can do something like this: http://pastebin.com/QF5ZxvAG And the @storage command would be: http://pastebin.com/r48ynwUA If you want the amount of item do be deleted after using the command, you can add this line: if (found) pc_delitem(sd, i, sd->status.inventory[i].amount, 0, 0, LOG_TYPE_COMMAND); I tested here and it is working.
  23. Can it be implemented a new symbol? Something like IMO it looks better than And since you brought in this subject, what about an option to whether or not view guild hp members (+ ally --optional as well) ?
×
×
  • Create New...