Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/04/21 in all areas

  1. Many people have been asking me how I got my server, or theirs, working online using AndRO apk. Firstly, download AndRO's latest APK here.: http://roworkshop.com/andro/main/index.html This guide works for v260 , v288 & v323 Next, take all necessary files for running a server. These are the files from a fresh kRO, or in most cases a "Lite" version of a server. (In this example I used my Lite server files.) Below is a compiled folder of the files you need. Modify the clientinfo.xml to contain your information, add your client.exe, add your patcher, & your server grf. https://www.mediafire.com/file/hc1h491a0v4eux7/Lite+Files.zip/file Then, I zipped everything into a RAR file. Downloading that onto my mobile device, in the Downloads folder. (Create new folder for version 288 and above) Using almost any RAR extractor tool from Google Play Store you can extract all the files into your Downloads folder. Once completed you will then run your AndRO application. (NOTE: This will not create a custom icon for your server. To do that you need to buy the APK version of your server from AndRO Workshop.) https://play.google.com/store/apps/details?id=com.rarlab.rar&hl=en_CA clieninfo.xml Now you might have some questions about the clientinfo.xml that you'll need to put into your main GRF. Below is an example of what mine looks like. This allows my server to read everything in plain English and not Acsii. Common errors: Unable to Find Resource values : Fixed by re-selecting the directory. If this fails, your clientinfo may not be there or it can't read your GRF; this is common with incorrectly encrypted GRFs. V260 Crashes after selecting server directory, with no error : Fixed by disabling Gepard. If you have Gepard and want to keep it active you will need the paid version mentioned above. V260 Item Descriptions not in Enlgish : Fixed by changing clientinfo.xml to read data folder first and selecting it to read itemInfo.lua files. V260 Application will not read Downloads folder : Fixed by giving AndRO application Storage permissions. V260 Fatal Error: java.net.UnknownHostException: Unable to resolve host "host.name.here.net": No Address associated with hostname. : Fixed by closing App completely, reloading app, "change" directory, reselect Downloads folder and reopening the directory. sounds annoying, because it is, but it works! V260 data/sprite/인간족/머리통/여/2073_여.spr : Fixed by adjusting your Packet version in the packet line of clientinfo.xml. V260 data/sprite/인간족/머리통/남/33_남.spr : Fixed by reseting look to default. Many pallets and hairstyles are not working. V260 File format error. Try to delete your client folder "/directory/". Failed to Parse LUA file: /data/user/0/com.rowork-shop.androlocalclientfiles/tmp.lub:30000 (or any other combination of numbers) unexpected symbol near 'symbol/text_error' : Fixed by scrolling to the specified line of your LUA/LUB and adjusting the improper values. V260 Failed to connect to resource server : Fixed by adding the patch directory to the clientinfo.xml / If your GRF is encrypted you will need to decrypt it. V260 Patch list error 1 at line 1 : Fixed by removing Patch and Website lines from your GRF. This is for those who don't use websites for their server. V260 Failed to connect to map server : Fixed by double checking the patch directory on the clientinfo.xml. It is important to have both patch directory lines in it to receive connections. V260 Fatal error Failed to load map: * : Fixed by either reselecting the Path in Settings and changing it, even if it's identical to what you have now; or by reinstalling the AndRO Freeware. V260 Failed to parse LUA: Only supporting v5.0, sorry : May have an older version that is not compatible with the latest AndRO. V260 Game crash without error/AndRO apk has stopped working : This can be because you are in @hide. Unhide to be able to load the game again. This can also be an issue with the version, I downloaded v288 and this issue resolved itself. V260 Attempt to invoke virtual method 'void . . 3.. (int, int)' on a null object reference : This error is still being investigated. It is believed to be the same error as the Game Crash/AndRO apk has stopped working. V288 More will be added and polished as I learn more. Thanks for reading thus far. If you need assistance compiling your mobile server let me know and I'll try my best to help.
    1 point
  2. Welcome rAthena Community! Hello everyone Ren here, so it has come to my attention through the discord channel alot of you are having issues setting up your new clients and are having issues or your new and want to jump right into the server construction but cant figure out how to properly set up a new 2020 client without errors or issues. I am here to finally remedy that! The guides on the documentation are here and there and newcomers can't figure out why they are having errors and tend to skip things here and there. Below I will fully explain from start to finish how to set up a Ragnarok 2020 Client for Renewal and Pre Renewal use! Lets Begin! Okay so below I've decided to skip text and shoot for a video tutorial this will eliminate more errors and create a better reference! Please do exactly as I do to eliminate error this includes making new folders to make a tidy work space! (Note for video I will not be redownloading files as I do not like clutter. I will also be using a text editor to type.) Guide Links KRO - Full Client For Ragnarok Game Files (Akkarins File) NEMO - Client exe Patcher for your server (Most Updated) NEMO RagClient - The latest supported client for 2020! ROTranslation - Chris's Full RO Translation (Most Updated) GRF Editor - GRF tool to open grfs and create them (Requires rAthena Account) MISINFORMATION ON VIDEO REGARDING ITEMINFO_V5.LUA I WANTED TO POINT OUT CORRECT INFORMATION REGARDING ITEMINFO_V5 LUA THAT I REALIZED I MISINFORMED IN THE VIDEO WHEN EVER UPDATING RSU IT WILL OVERWRITE ORIGINAL ITEMINFOS V5 FOR ALL 2020 CLIENTS. IN PATCH ON NEMO PLEASE MAKE YOUR OWN /ITEMINFOSERVER.LUA SO KRO DOESNT OVERWRITE! JUST COPY THE INFORMATION FROM ORIGINAL V5 AND MAKE IT YOUR OWN! Information Regarding Language Types Other Then English Okay so I wanted to give a few details on regarding languages other then english that are not covered within the video. If your looking to change the language to russian for example please make sure you have this patch below enabled while patching! - Always load korean external settings file! Then you can select other language type numbers 0-17 etc. Here is also my text document with the steps! // Welcome to the 2020 client set up guide // Alot of you have been having issues with setting up the new client if you follow this video from start to finish you will be able to 1. Have a properly running server client side 2. Learn to be more organized 3. Add custom items // Lets start step 1. Make a new folder on your desktop for your server client files and tools. A clean enviroment will help with less errors! This means installing a fresh copy of the full kRO game. Also follow my organization of where i place all my tools and files. step 2. Download all the required files to have a full client side, all of these files can be found on my guide post and save them to the tools folder. step 3. Extract the full kRO to your game files folder within your server folder & update using the 2 RSU patchers. step 4. Install GRF Editor onto your windows system , this has its own folder within program files. step 5. Extract the rest of the tools one by one into your tools folder. step 6. Go back to your game files folder and make sure that kRO is fully updated by running the two patchers 1 by 1. After downloading all the neccessary tools and extracting the game files and updating we may now continue on to building a fresh GRF for your servers use! This is better then using old grfs that have to much stuff that will conflict with the new client files. This client also uses new resource files and new system folder files which will be covered. okay lets begin. step 1. open grf editor step 2. navigate to your rotranslation folder step 3. copy or drag both basic texture sub folders into data folder on grf editor step 4. if your planning on running a pre renewal drag the renewal data over first but if your planning on running renewal like i am drag the pre over first then the renewal step 5. now we completed building our basic server grf we will now edit our connection file called clientinfo.xml you can delete the sclientinfo as it is not needed with the new client now we can save the grf to our game files folder where everything is for the game! Keep grf editor open for adding custom items later on. now we can move on to creating the client to use for the server! step 1. navigate to the nemo folder inside our tools folder! step 2. browse for your ragexe that you downloaded. I'm using 20200401 which is most current and pre set in on the server side step 3. load the client step 4. load the ro translation profile for 2020 this is all pre defined for the client so we can skip through step 5. this is the name of our config file to point the client to the grf we can change it to our own custom name used step 6. this is important so if your running an earlier client you might use the original iteminfo.lua this is the new item info which doesnt get overwritten by kro in updates this is where some of our information will go for the custom items. step 7. now we can load the recommended patches step 8. dont worry about the errors as they are just telling you those patches are not for the latest client it still selects the recommended ones we need! step 9. selecting our own patches. You can pick through which ones you want but if your not advanced just follow me this is for increasing your custom item view range it is recommended you choose between 5000-8000 as customs view start at 3000 this might change later on if kro decides to release more. we will go with 5000 because i dont see us adding anymore then 200 custom items. step 10. lets recheck to make sure we got everything beautiful now we can apply the patches and move our client to our game files folder with our grf! you can rename your client to what ever you want! now that we created our grf and made our client we can go back to the ro translation folder step 11. navigate to the pre renewal or renewal folder if your making a pre renewal server add the renewal system folder to your game files folder and overwrite first then add the pre renewal systems folder on top of that just like we did with the grf in my case i am making a renewal so ill do opposite now the next folder once weve done that we can test the client if you get some weird text you have to edit your data.ini and rename it to yourserver.ini like we did for the patch now we can move on to adding the custom items!!! step 1 . re open grf editor in this case ill use my grf step 2. navigate to your tools folder and to the folder that holds your custom items step 3. follow me step 4. now we can edit the two files needed to correctly link the client with the server side. navigate to the data/luafiles514/lua step 5. extract both files that i do and they will end up in your game directory under the folder data we can go ahead and open the accessory id! okay this is important!!! just copy like i did above and edit the names make sure its 100% matching save the file and we can open the next file which is accessory id mistake i made is that we were in the accname so we just swap around :P same thing goes on here we just copy the above line and edit out. now the 3000 is our view id not the item id which @item calls for this will be the view display of our custom which is why we set the patch for 5000 so we will start at 3000 gives original items a bit of room now we can save! step 6. drag the two files back into the grf and save now were completely done with the grf! now we can move back to our game files folder for the last task! move to the system folder to iteminfo_v5.lub/lua heres where we add the actual item db number in this case i used 30000 just copy what i did and youll be fine you just have to make sure when you add the item into the item db whether it be sql/yml that you set the right item id and view id also the AEGIS name will be _Equilibrium_Wings here on the item info you can see there is none it links to a different part of the grf but deff make sure to add the _ under the aegis name! All done that wasnt so hard! -Renzadic!
    1 point
  3. Version 3.0

    876 downloads

    Freebies NPC with gepard function (UniqueID) In response to this post :
    Free
    1 point
  4. Version 1.0

    581 downloads

    Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: You are not allowed remove my signature from any of the included files. You are not allowed claim my work as yours. If you like it, give me a ?
    Free
    1 point
  5. Version 1.0

    720 downloads

    Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. If you like it, give me a ?
    Free
    1 point
  6. View File Rental NPC Support 3rd/4th job Suit Mado Gear and Dragon *Don't forget to add required skill on your suit item skill "RK_DRAGONTRAINING",5; skill "NC_MADOLICENCE",5; Report all error/bugs in the forum post not in the PM for faster fix, Thanks! By downloading this file, you agree with my Terms of Service: • You are not allowed remove my signature from any of the included files. • You are not allowed claim my work as yours. • I can give you support, but please, do not message me. If you like it, give me a Submitter BeWan Submitted 12/27/2020 Category Utilities Video Content Author BeWan  
    1 point
  7. Thanks a ton for this, especially for including the text guide since I have issues following videos. I finally have a working 2020 client!
    1 point
  8. Story Time: A lot of players run into problems. They disconnected in an instance, they bought the wrong item, someone is being a nuisance in battlegrounds. After cursing, they usually type `@request`. But alas, none of the GMs you hired are online! You need to dock their pay. The message is lost in the void. Until now. Discord has support for webhooks, which is a way to associate callbacks to HTTP requests. Their developer docs for webhooks can be found here. Basically, you can send a POST to your discord webhook url, and the contents will be printed to the associated channel. "So?" When someone uses `@request`, the message is sent from the map server to the character server, which then sends it back to all map servers, and the map servers send the message to all connected GMs. Because it sends it to the character server, we're able to send the POST request from the character server. This helps performance, since the map server is constantly doing things and the character server generally uses less resources. "That's great! But how do we send this POST request? Do I need a stamp?" If you're on Linux, there's a great command line tool called `curl`. It's mostly used to download files from a server, but it also has support for all other HTTP methods. "Command line? How do we put it in rathena?" Curl also comes with a library called libcurl that we can use in c/c++ programs! "I see, so we use libcurl to send the message to the discord webhook!" Exactly! How it looks: Installation: Two config options are added in this patch: gm_whisp_webhook and gm_whisp_webhook_url This makes a change to configure, and adds a new flag. You need to add --with-lcurl to your arguments. Example: ./configure --enable-prere --enable-vip --enable-packetver=20170614 --with-lcurl Disclaimers: This only works on linux. I don't run rAthena servers on windows, and neither should you. (personal opinion) You need to install libcurl-devel. On some OSes it could be called something else; on Ubuntu, it's libcurl4-openssl-dev. Don't ask me for a lot of help if you can't get it to work. This is supposed to be a showcase, but I'm giving the code out. I made this in a day, it's not the greatest code. Initializing curl and cleaning up on every call is not the greatest, but unless you are getting 100 requests a minute, it should be ok for now. Eventually, I want to add it to src/common or something. But that'll happen in a future weekend. Code: The code is here: https://pastebin.com/Z82M9ssf
    1 point
  9. thanks so much!it works as expected! BTW, i still have two more question. Hope I am not bothering you. 1. How to disable this Security Code pop up window? (It's a little bit nosiying me..) 2. I saw some client can move their mouse back to the window (outside to the client window) directly without pressing any other WIN button. How can I fulfill this behavior? For example, mouse from here to outside direcly. NO need to minimize client/ switch to other apps. Kindly appreciate if you can answer these. Hope you have a greate day!
    1 point
  10. Really Thanks! this is really helpful! I follow the guideline step by step and finally successfully login my server! But I have a question.. why I type the language in chat box it will show Korean font? May I know how to fix it?
    1 point
  11. Nice Guide, Keep it Up Teaching Me Step By Step How To Build everything? spend couple hours teamviewer just for help me fix the errors and show me how should i fix the error Pretty Friendly &Patiently
    1 point
  12. make sure your packet obfuscation in your file and client same enabled or disabled and check your clientinfo.xml - <version></version>
    1 point
  13. here.. prontera,164,232,1 script Estilista#custom_stylist 2_M_DYEINGER,{ OnProgressbarEnd: if (vip_status(1)){ setarray .@max[1],450,50,80; }else setarray .@max[1],150,20,30; setarray .@Look[1],LOOK_CLOTHES_COLOR,LOOK_HAIR,LOOK_HAIR_COLOR; if (@autoscroll) { set @autoscroll, 0; } else { set @s, select(" - Cor da roupa (^0055FF"+getlook(LOOK_CLOTHES_COLOR)+"^000000): - Penteado (^0055FF"+getlook(LOOK_HAIR)+"^000000): - Cor do penteado (^0055FF"+getlook(LOOK_HAIR_COLOR)+"^000000)"); set @Revert, getlook(.@Look[@s]); } set .@Style, getlook(.@Look[@s]); while(1) { set .@menu$, (.@previous ? (": - Anterior (^0055FF"+((.@Style>1)?.@Style-1:.@max[@s])+"^000000): - Próxima (^0055FF"+((.@Style<.@max[@s])?.@Style+1:1)+"^000000)") : (" - Próxima (^0055FF"+((.@Style<.@max[@s])?.@Style+1:1)+"^000000): - Anterior (^0055FF"+((.@Style>1)?.@Style-1:.@max[@s])+"^000000):")) + ": - Próxima ^008000(auto rolagem)^000000: - Anterior ^008000(auto rolagem)^000000:" + " - Pule para...: - Reverter para o original (^0055FF"+@Revert+"^000000)"; switch(select(.@menu$)) { case 1: case 3: set .@previous,0; set .@Style, ((.@Style<.@max[@s])?.@Style+1:1); break; case 2: set .@previous,1; set .@Style, ((.@Style>1)?.@Style-1:.@max[@s]); break; case 4: mes "[^008000Estilista^000000]"; mes "Clique em Fechar para iniciar a rolagem automática..."; mes " "; mes "Clique em qualquer lugar da tela para parar a rolagem automática."; close2; set @autoscroll, 1; addtimer 1,strnpcinfo(3)+"::OnProgressbarEnd"; while (1) { set .@Style, ((.@Style<.@max[@s])?.@Style+1:1); setlook .@Look[@s], .@Style; message strcharinfo(0),"This is style #"+.@Style+"."; progressbar "FFFF00",1; } end; case 5: mes "[^008000Estilista^000000]"; mes "Clique em Fechar para iniciar a rolagem automática..."; mes " "; mes "Clique em qualquer lugar da tela para parar a rolagem automática."; close2; set @autoscroll, 1; addtimer 1,strnpcinfo(3)+"::OnProgressbarEnd"; while (1) { set .@Style, ((.@Style>1)?.@Style-1:.@max[@s]); setlook .@Look[@s], .@Style; message strcharinfo(0),"This is style #"+.@Style+"."; progressbar "FFFF00",1; } end; case 6: message strcharinfo(0),"Choose a style between 1 - "+.@max[@s]+"."; input .@Style,0,.@max[@s]; if (!.@Style) set .@Style, rand(1,.@max[@s]); break; case 7: set .@Style, @Revert; setlook .@Look[@s], @Revert; break; } setlook .@Look[@s], .@Style; message strcharinfo(0),"This is style #"+.@Style+"."; } }
    1 point
  14. Converted item database to YAML (#4335) · rathena/rathena@04cfe17 (github.com)
    1 point
  15. just use script OnPCDieEvent: sql query end;
    1 point
  16. use this. 24000,T1_Shadow_Armor,Shadow Armor (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,1,1,,{ bonus bStr,1; },{},{} 24001,T1_Shadow_Weapon,Shadow Gauntlets (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,1,1,,{ bonus bDex,1; },{},{} 24002,T1_Shadow_Shield,Shadow Shield (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,1,1,,{ bonus bLuk,1; },{},{} 24003,T1_Shadow_Shoes,Shadow Shoes (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,1,1,,{ bonus bAgi,1; },{},{} 24004,T1_Shadow_R_Accessory,Shadow Ring (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,1,1,,{ bonus bVit,1; },{},{} 24005,T1_Shadow_L_Accessory,Shadow Pendant (Tier 1),12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,1,1,,{ bonus bInt,1; },{},{} 24006,T2_Shadow_Armor,Shadow Armor (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,65536,,30,1,,{ bonus bStr,2; },{},{} 24007,T2_Shadow_Weapon,Shadow Gauntlets (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,131072,,30,1,,{ bonus bDex,2; },{},{} 24008,T2_Shadow_Shield,Shadow Shield (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,262144,,60,1,,{ bonus bLuk,2; },{},{} 24009,T2_Shadow_Shoes,Shadow Shoes (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,524288,,90,1,,{ bonus bAgi,2; },{},{} 24010,T2_Shadow_R_Accessory,Shadow Ring (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,1048576,,120,1,,{ bonus bVit,2; },{},{} 24011,T2_Shadow_L_Accessory,Shadow Pendant (Tier 2),12,0,,0,,,,0,0xFFFFFFFF,63,2,2097152,,150,1,,{ bonus bInt,2; },{},{}
    1 point
  17. ... same person ... ok I answer this one, my main forum is hercules so I wont be around forever the trick is ... add return; to all the functions containing title MAIL, this will effectively block all the codes of mail to run src/map/clif.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/map/clif.cpp b/src/map/clif.cpp index da270e2ff..13658d283 100644 --- a/src/map/clif.cpp +++ b/src/map/clif.cpp @@ -15342,6 +15342,7 @@ void clif_parse_Check(int fd, struct map_session_data *sd) /// 1 = over weight /// 2 = fatal error void clif_Mail_setattachment( struct map_session_data* sd, int index, int amount, uint8 flag ){ + return; int fd = sd->fd; #if PACKETVER < 20150513 @@ -15397,6 +15398,7 @@ void clif_Mail_setattachment( struct map_session_data* sd, int index, int amount /// 09f2 <mail id>.Q <mail tab>.B <result>.B (ZC_ACK_ZENY_FROM_MAIL) /// 09f4 <mail id>.Q <mail tab>.B <result>.B (ZC_ACK_ITEM_FROM_MAIL) void clif_mail_getattachment(struct map_session_data* sd, struct mail_message *msg, uint8 result, enum mail_attachment_type type) { + return; #if PACKETVER < 20150513 int fd = sd->fd; @@ -15433,6 +15435,7 @@ void clif_mail_getattachment(struct map_session_data* sd, struct mail_message *m /// 1 = recipinent does not exist /// 09ed <result>.B (ZC_ACK_WRITE_MAIL) void clif_Mail_send(struct map_session_data* sd, enum mail_send_result result){ + return; #if PACKETVER < 20150513 int fd = sd->fd; @@ -15457,6 +15460,7 @@ void clif_Mail_send(struct map_session_data* sd, enum mail_send_result result){ /// 1 = failure // 09f6 <mail tab>.B <mail id>.Q (ZC_ACK_DELETE_MAIL) void clif_mail_delete( struct map_session_data* sd, struct mail_message *msg, bool success ){ + return; #if PACKETVER < 20150513 int fd = sd->fd; @@ -15486,6 +15490,7 @@ void clif_mail_delete( struct map_session_data* sd, struct mail_message *msg, bo /// 1 = failure void clif_Mail_return(int fd, int mail_id, short fail) { + return; WFIFOHEAD(fd,packet_len(0x274)); WFIFOW(fd,0) = 0x274; WFIFOL(fd,2) = mail_id; @@ -15497,6 +15502,7 @@ void clif_Mail_return(int fd, int mail_id, short fail) /// 024a <mail id>.L <title>.40B <sender>.24B (ZC_MAIL_RECEIVE) /// 09e7 <result>.B (ZC_NOTIFY_UNREADMAIL) void clif_Mail_new(struct map_session_data* sd, int mail_id, const char *sender, const char *title){ + return; #if PACKETVER < 20150513 int fd = sd->fd; @@ -15522,6 +15528,7 @@ void clif_Mail_new(struct map_session_data* sd, int mail_id, const char *sender, /// 1 = close void clif_Mail_window(int fd, int flag) { + return; WFIFOHEAD(fd,packet_len(0x260)); WFIFOW(fd,0) = 0x260; WFIFOL(fd,2) = flag; @@ -15540,6 +15547,7 @@ void clif_Mail_window(int fd, int flag) /// 0ac2 <packet len>.W <unknown>.B (ZC_ACK_MAIL_LIST3) /// { <type>.B <mail id>.Q <read>.B <type>.B <sender>.24B <expires>.L <title length>.W <title>.?B }* void clif_Mail_refreshinbox(struct map_session_data *sd,enum mail_inbox_type type,int64 mailID){ + return; #if PACKETVER < 20150513 int fd = sd->fd; struct mail_data *md = &sd->mail.inbox; @@ -15733,6 +15741,7 @@ void clif_Mail_refreshinbox(struct map_session_data *sd,enum mail_inbox_type typ /// 0ac0 <mail id>.Q <unknown>.16B (CZ_OPEN_MAILBOX2) /// 0ac1 <mail id>.Q <unknown>.16B (CZ_REQ_REFRESH_MAIL_LIST2) void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd){ + return; #if PACKETVER < 20150513 struct mail_data* md = &sd->mail.inbox; @@ -15796,6 +15805,7 @@ void clif_parse_Mail_refreshinbox(int fd, struct map_session_data *sd){ /// { }*n // TODO: Packet description => for repeated block void clif_Mail_read( struct map_session_data *sd, int mail_id ){ + return; int i, fd = sd->fd; ARR_FIND(0, MAIL_MAX_INBOX, i, sd->mail.inbox.msg[i].id == mail_id); @@ -15911,6 +15921,7 @@ void clif_Mail_read( struct map_session_data *sd, int mail_id ){ /// 0241 <mail id>.L (CZ_MAIL_OPEN) /// 09ea <mail tab>.B <mail id>.Q (CZ_REQ_READ_MAIL) void clif_parse_Mail_read(int fd, struct map_session_data *sd){ + return; #if PACKETVER < 20150513 int mail_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); #else @@ -15929,6 +15940,7 @@ void clif_parse_Mail_read(int fd, struct map_session_data *sd){ /// Allow a player to begin writing a mail /// 0a12 <receiver>.24B <success>.B (ZC_ACK_OPEN_WRITE_MAIL) void clif_send_Mail_beginwrite_ack( struct map_session_data *sd, char* name, bool success ){ + return; PACKET_ZC_ACK_OPEN_WRITE_MAIL p = { 0 }; p.PacketType = rodexopenwrite; @@ -15940,6 +15952,7 @@ void clif_send_Mail_beginwrite_ack( struct map_session_data *sd, char* name, boo /// Request to start writing a mail /// 0a08 <receiver>.24B (CZ_REQ_OPEN_WRITE_MAIL) void clif_parse_Mail_beginwrite( int fd, struct map_session_data *sd ){ + return; char name[NAME_LENGTH]; safestrncpy(name, RFIFOCP(fd, 2), NAME_LENGTH); @@ -15958,6 +15971,7 @@ void clif_parse_Mail_beginwrite( int fd, struct map_session_data *sd ){ /// Notification that the client cancelled writing a mail /// 0a03 (CZ_REQ_CANCEL_WRITE_MAIL) void clif_parse_Mail_cancelwrite( int fd, struct map_session_data *sd ){ + return; sd->state.mail_writing = false; } @@ -15965,6 +15979,7 @@ void clif_parse_Mail_cancelwrite( int fd, struct map_session_data *sd ){ /// 0a14 <char id>.L <class>.W <base level>.W (ZC_CHECK_RECEIVE_CHARACTER_NAME) /// 0a51 <char id>.L <class>.W <base level>.W <name>.24B (ZC_CHECK_RECEIVE_CHARACTER_NAME2) void clif_Mail_Receiver_Ack( struct map_session_data* sd, uint32 char_id, short class_, uint32 level, const char* name ){ + return; PACKET_ZC_CHECKNAME p = { 0 }; p.PacketType = rodexcheckplayer; @@ -15980,6 +15995,7 @@ void clif_Mail_Receiver_Ack( struct map_session_data* sd, uint32 char_id, short /// Request information about the recipient /// 0a13 <name>.24B (CZ_CHECK_RECEIVE_CHARACTER_NAME) void clif_parse_Mail_Receiver_Check(int fd, struct map_session_data *sd) { + return; static char name[NAME_LENGTH]; safestrncpy(name, RFIFOCP(fd, 2), NAME_LENGTH); @@ -15992,6 +16008,7 @@ void clif_parse_Mail_Receiver_Check(int fd, struct map_session_data *sd) { /// 09f1 <mail id>.Q <mail tab>.B (CZ_REQ_ZENY_FROM_MAIL) /// 09f3 <mail id>.Q <mail tab>.B (CZ_REQ_ITEM_FROM_MAIL) void clif_parse_Mail_getattach( int fd, struct map_session_data *sd ){ + return; int i; struct mail_message* msg; #if PACKETVER < 20150513 @@ -16090,6 +16107,7 @@ void clif_parse_Mail_getattach( int fd, struct map_session_data *sd ){ /// 0243 <mail id>.L (CZ_MAIL_DELETE) /// 09f5 <mail tab>.B <mail id>.Q (CZ_REQ_DELETE_MAIL) void clif_parse_Mail_delete(int fd, struct map_session_data *sd){ + return; #if PACKETVER < 20150513 int mail_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); #else @@ -16134,6 +16152,7 @@ void clif_parse_Mail_delete(int fd, struct map_session_data *sd){ /// Request to return a mail (CZ_REQ_MAIL_RETURN). /// 0273 <mail id>.L <receive name>.24B void clif_parse_Mail_return(int fd, struct map_session_data *sd){ + return; int mail_id = RFIFOL(fd,packet_db[RFIFOW(fd,0)].pos[0]); //char *rec_name = RFIFOP(fd,packet_db[RFIFOW(fd,0)].pos[1]); int i; @@ -16155,6 +16174,7 @@ void clif_parse_Mail_return(int fd, struct map_session_data *sd){ /// 0247 <index>.W <amount>.L (CZ_MAIL_ADD_ITEM) /// 0a04 <index>.W <amount>.W (CZ_REQ_ADD_ITEM_TO_MAIL) void clif_parse_Mail_setattach(int fd, struct map_session_data *sd){ + return; struct s_packet_db* info = &packet_db[RFIFOW(fd,0)]; uint16 idx = RFIFOW(fd,info->pos[0]); #if PACKETVER < 20150513 @@ -16184,6 +16204,7 @@ void clif_parse_Mail_setattach(int fd, struct map_session_data *sd){ /// Remove an item from a mail /// 0a07 <result>.B <index>.W <amount>.W <weight>.W void clif_mail_removeitem( struct map_session_data* sd, bool success, int index, int amount ){ + return; PACKET_ZC_ACK_REMOVE_ITEM_MAIL p = { 0 }; p.PacketType = rodexremoveitem; @@ -16213,6 +16234,7 @@ void clif_mail_removeitem( struct map_session_data* sd, bool success, int index, /// 0a06 <index>.W <amount>.W (CZ_REQ_REMOVE_ITEM_MAIL) void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) { + return; #if PACKETVER < 20150513 int type = RFIFOW(fd,packet_db[RFIFOW(fd,0)].pos[0]); @@ -16233,6 +16255,7 @@ void clif_parse_Mail_winopen(int fd, struct map_session_data *sd) /// 09ec <packet len>.W <recipient>.24B <sender>.24B <zeny>.Q <title length>.W <body length>.W <title>.?B <body>.?B (CZ_REQ_WRITE_MAIL) /// 0a6e <packet len>.W <recipient>.24B <sender>.24B <zeny>.Q <title length>.W <body length>.W <char id>.L <title>.?B <body>.?B (CZ_REQ_WRITE_MAIL2) void clif_parse_Mail_send(int fd, struct map_session_data *sd){ + return; #if PACKETVER < 20150513 struct s_packet_db* info = &packet_db[RFIFOW(fd,0)];
    1 point
  18. Not ready yet but i'm working on it: https://github.com/haurenburu/ragnarok-content/tree/master/rathena/illusions/frozen
    1 point
×
×
  • Create New...