Jump to content

Tokei

Members
  • Posts

    667
  • Joined

  • Last visited

  • Days Won

    91

Posts posted by Tokei

  1. Hmmm, cut the image in 4 and add it to your sprite? Look at the attached file.

     

    As for the TGA format, it should be forgotten ;x. The PNG format is much more convenient for semi-transparent images.

     

    Edit : the quality issue you're getting is perhaps related to you using Paint? It doesn't support semi-transparent images.

    aura.rar

  2. Hi y'all,

     

    This happens every time I summon Beelzebub, but not at the right moment I summon it. I don't think this is a item problem, because it is not when it's dying. In fact, the missing file is not in the folder it was supposed to be, however I couldn't find it elsewhere. I'm using the latest revision and the 2013-08-07 hexed.

     

    That's really odd because that filename isn't possible. Non-latin characters must be in group of 2 in order to work :

    ¾Æ = 아

    ÀÌ = 이

    ÅÛ = 템

    ö = not a valid character on its own

     

    "¾ÆÀÌÅÛ" is the hat/mid-gear folder, so... perhaps it's a custom hat? Are you sure you copied the error properly? With Ctrl-C/Ctrl-V and definitely not by hand?

  3. Sorry for replying this late! Thanks for your help. I installed GRF Editor and I cannot find the Kagerou file in it!

    I even tried searching for Kagerou and nothing shows up, why would this happen?

     

    Hmm, I couldn't tell you why they're missing as I have no idea how you've done your GRFs. Perhaps you're using a previous version of your ddesperado.grf? Either way, the problem's solved and that's what matters..! Drop your kagerou palettes in the list/folder in GRF Editor and then save it. It should be working fine ingame now ;].

  4. I'm personally about to run out of ideas! That view is from GRF Editor, open the GRF with it instead and take another screenshot. The only reason why you'd get this file missing error is if the client... cannot find the file. You're not using the data folder and data.ini is properly set, so the only reason left is that the file is not present inside the GRF (or something wrong is going on inside of it!). Also extracted files don't mean much.

  5. Like I said, there are no settings to change. Changing your clientinfo will bring you the same error but in a different 'language', which won't help you at all. The file is missing from your GRF. Look at your data.ini file if your GRF is indeed there and make sure the path is correct in the GRF. If you have embedded your data.ini, then perhaps your GRF hasn't been added in it? Are your files encrypted or LZMA compressed (which would require you to change your cps.dll)?

  6. The display messages from the client are in whatever encoding you set from your clientinfo. You're... most likely missing the palette though :

    data\palette\个\kagerou_巢_4.pal (Chinese display)

    data\palette\¸ö\kagerou_³²_4.pal (Value stored in your GRF)

    data\palette\몸\kagerou_남_4.pal (Korean display)

     

    Also, there are no settings to change; the GRF's encoding is only for display purposes.

  7. It's hard to answer your post without more information.

     

    First thing first, is the problem really related to the patch you applied? You appear to think so, but have you verified whether or not the files have been properly added to your GRF?

     

    These look like hats, so... have you updated the view ID files : accname.lub, accessoryid.lub and possibly itemInfo.lua/lub (even though you seem to be using text files... not sure of your settings)? Have you been able to add these items locally (with your own RO client)? Perhaps files are conflicting with your data folder (if your client reads it first)?

  8. seem like now I am getting this error whenever I load the database folder. >.<

     

    but no error shown in the error console tho. The error shown once I clicked on item_db or mob_db , havent try on other.

    sometime it would result in bluescreen after the error popout.

     

    I just switched to Window 8.1 recently, not sure is it because of OS issue.

     

    The issue comes from your const.txt file; there is most likely a line in the file with a lonely tab and the parser doesn't like it. This is now allowed/fixed in 1.1.5.21.

     

    Edit : the bluescreen is definitely not normal and it is related to an error with your OS settings.

  9. Hmmm, your desktop appears to be a git repo, so you have to remove the ".git" folder from it. Enable the "show the hidden files or folders" option in Windows (if it's not done already!) and delete the folder. This should take care that issue at least.

  10. Unfortunately Orange00, I have to side with Nova on the matter. Your attitude is inappropriate and your motives alone are shady. You are clearly attempting to damage Conflict's reputation as much as possible, as well as his hosting company. From your last post, you are even threatening him with a blog. This is enough to disregard your arguments for most people.

     

    You have shown no communication or private messages of you trying to resolve the situation on your own, between the two of you. That is how it should have been handled in the first place. Publicly bashing someone as you just did makes you look like the bad person here I'm afraid.

     

    Your issue has been resolved nonetheless, everything else that you're doing is just bonus drama now (and this forum is not very keen on the whole drama business...!). I can understand that you're still annoyed, however the way you're currently trying to fix the issue is not the way to go.

    • Upvote 1
  11. On 6/18/2015 at 4:37 PM, EL Dragon said:

    Do you have a script for make spr to Animated gif?

     

    Yep, as CandyCandy mentionned, that's how you save as animated gifs. If you want your gif to include the reference sprites (the soul linker/stalker body for instance), you'll have to update to 1.0.8.

     

    Edit : the new version contains the following updates :

    • When selecting a reference sprite, you will be able to select from GRFs as well.
    • Created gifs will now also show the referenced sprites.
    • Ability to change the background to a custom image.
    • Ability to clear/reset the sprite palette from the menu.
    • Core libraries updated.
    • Other minor bugfixes.
    • Upvote 2
  12. In C and C++, strings are null-terminated, meaning they must end with '\0' (which is 0x00 in hex). If you omit this 0x00, the end of the string cannot be seen and it will read whatever's currently in your memory until it finds a 0x00.

     

    The + 9 is for the total length of the packet. packet length = 2 bytes (packet id) + 2 bytes (string length) + 4 bytes (npc id) + strlen(mes) bytes (number of characters in your message) + 1 byte (null-terminated char byte) = strlen(mes) + 9

     

    If you take a look at the memcpy line, it copies 6 characters but the string "hello" is actually only 5 characters (slen - 8 = 14 - 8 = 6). This when it copies that 0x00.

     

    For any strings in C, writing this is wrong : 

    char c[5] = "hello";

    It needs to be :

    char c[6] = "hello";

     

     

    WFIFOW(fd,0)=0xb4;

    In this line i set the two "values" (just for reference) of packet?

     

    Not really sure what you mean here! 0xb4 is a "shortcut" for 0x000000b4. The compiler converts it to a Word for you, so : 0x00b4, which is swapped around to 0xb4 0x00. So I guess that yes, you set the two values with this line. That explanation may not be 100% accurate, but it's close enough. If you had... 0xfb4, you'd get 0xb4 0x0f. If you had 0xaabb0f, you'd get 0x0f 0xbb (that 0xaa is 'lost' because it goes beyond the uint16 range of 2 bytes).

    • Upvote 3
  13. Heya!

    WFIFOHEAD(fd, slen);
    WFIFOW(fd,0)=0xb4;
    WFIFOW(fd,2)=slen;
    WFIFOL(fd,4)=npcid;
    memcpy((char*)WFIFOP(fd,8), mes, slen-8);
    WFIFOSET(fd,WFIFOW(fd,2));
    

    Let's say you want to send the message "hello", slen being 5 + 9 = 14.

     

    First call is obvious, sets the length of the packet.

    WFIFOW means "Write a Word to the socket (a Word is 2 bytes - uint16) at position 0", giving you the following raw output so far :

    0xb4 0x00 - ...

    It is reversed because of the endianness, which is "always" in little-endian.

     

    WFIFOW(fd,2), same as above, giving you (14 = 0x0E) : 

    0xb4 0x00 - 0x0E 0x00 - ...

     

    WFIFOL means "Write a Long to the socket (a Long is 4 bytes - uint32) at position 4", giving you the following raw output so far (let's say the npcid is 297520349 = 0x11BBCCDD) :

    0xb4 0x00 - 0x0E 0x00 - 0xDD 0xCC 0xBB 0x11 - ...

     

    WFIFOP retrieves the char pointer for the writing socket buffer at the specified position. memcpy simply copies the content of mes ("hello") to that position. Giving you...

    0xb4 0x00 - 0x0E 0x00 - 0xDD 0xCC 0xBB 0x11 - 0x48 0x65 0x6c 0x6c 0x6f 0x00

    WFIFOSET sets the buffer to the correct position to send it (WFIFOW actually returns a pointer to the position, so in this case it's handy because it returns slen; then again it's a bit pointless, it could have just been "WFIFOSET(fd,slen);" and it would be clearer).

     

    /// 00b4 <packet len>.W <npc id>.L <message>.?B

    This means 0x00b4 is your packet id, followed by a Word (packet length), followed by a Long (npc id), followed by a variable number of bytes (your message).

     

    0x00b4,-1

    That means the size of the packet is unknown/variable (indeed, the message can be of any size).

     

    0x00b5,6

    That means the size of the packet is always 6 bytes. In this case, the first 2 bytes are the packet ID, the next 4 bytes are the npc id, or : 00b5 <npc id>.L

     

    The packet field can be used for something like... 0x00b5,6,clif_scriptnext,2; - this can help you retrieve the positions more easily. For example :
    packet_db[sd->packet_ver][RFIFOW(fd,0) /* packet id */].pos[0] // pos[0] here is the "2" you defined earlier. Some packet_ver defines different indexes for the same packet, that's why it's useful not to use pre-defined values.
     

    To write a new packet, you have the right idea. Find a packet not used, go in a high range to avoid further conflicts. Also there's a packet limit, not really sure where it's defined on rAthena though.

    • Upvote 2
  14. ROtion is a 16-bit software and their support has been completely dropped by x64 OSes (you most likely have Windows 8 x64 and you had an x86 OS before). That said, you'll need a virtual machine with a x86 OS if you want to run it (with VMWare or XP Mode if you have the professional version of Windows 8).

     

    As for other tools similar to ROtion... I don't know any and I doubt you'll find such a specific tool. (Act Editor isn't meant to create images, so that probably didn't help you much.) Edit : People use Photoshop for these kind of tasks.

  15. I've set up my daily_reward table as follow :

    CREATE TABLE IF NOT EXISTS `daily_reward` (
      `account_id` INT(11) UNSIGNED NOT NULL DEFAULT '0',
      PRIMARY KEY (`account_id`)
    ) ENGINE=MyISAM;
    

    That... won't help you much though, does your console show nothing? Try a one-liner script, with an insert query and dummy values. If nothing shows up in your table, then you didn't create it properly or something else is going on. (The console would tell you about such error though...!)

  16. The script I posted above is working fine on my end (truncate too), check your console logs and tell us the issues you're having, if any. Check if the lines have been added in your SQL table as well.

  17. That is because query_sql on rAthena doesn't return 0 if no elements are found, therefore your statement is always false. You should write it as the following :

    query_sql("SELECT count(*) FROM `daily_reward` WHERE `account_id` = '" + getcharid(3) + "'", .@count);
    
    if (.@count > 0) {
    	mes "[RAO Dungeon]";
    	mes "You must wait until reset.";
    	mes "at 06.00am.";
    } else {
    	getitem 21000,3;
    	dispbottom "Gained 3 RAO Instance Ticket.";
    	query_sql("INSERT INTO `daily_reward` SET `account_id` = '" + getcharid(3) + "'");
    }
    close2;
    
  18. Server side : 

    db/const.txt > look for the last NPC id, which should be around 10113 for 4_EL_AQUA. Add yours after that one, probably in the 11000 range just to make sure.

    In npc.h, increase the max NPC value to 11200 (#define MAX_NPC_CLASS2_END 11200).

    Recompile your server.

     

    Client side : 

    Open jobname.lub (luafiles514 for recent clients) and add the line of your NPC : [11000] = "YOUR_SPRITE", that's all. No need to edit npcidentity ;O.

    Edit : add your NPC sprite in your data folder : data\npc\your_sprite.spr|.act

×
×
  • Create New...