Leaderboard
Popular Content
Showing content with the highest reputation on 02/21/22 in all areas
-
if i got free time. i will update this script.2 points
-
Heya, I've been working on a tool for a few weeks now and I believe it is in a ready enough state to be shown. This software is meant to edit str files, which are mostly used to display skill animations in-game. There may still be bugs left in the tool; reporting them here would be appreciated. You can download the software here: https://www.mediafire.com/file/epu1pr9xjdneupi Generic Ctrl-Z/Ctrl-Y to undo and redo an action. You can edit most shortcuts via File > Settings > Shortcuts. Transformations for the preview panel (same shortcuts as Act Editor) Translate: Left Mouse Button on the selected frame. Rotate: Shift-Left Mouse Button on the selected frame. Preview panel move: Right Mouse Button. Horizontal/vertical scaling: Ctrl-Shift-Left Mouse Button. Uniform scaling: Ctrl-Alt-Left Mouse Button. Unbound scaling: Ctrl-Left Mouse Button. Transformations for the edition panel Each layer can have multiple textures. To add a new one, click the texture combo box and select "Add new...". It will bring you to where the file is currently loaded from. While you can browse elsewhere, the textures must be in the same folder as your str file will be in. You can edit textures more rapidly with the gear button next to it. You can edit some fields by clicking the text before them. If you hold down the Left Mouse Button on this field (P1XY), you will be able to move it freely without moving the entire texture. This is especially handy when dealing with angles as those can give you unwanted results if you are editing them via the preview panel. The FPS property can be changed and saved. However, the client appears to completely ignore it and runs your animations at 60 FPS regardless. Editing an interpolated key frame will automatically create a new key frame on the timeline. Timeline panel A dot represents an existing key frame. An arrow represents an interpolated animation from the left key frame to the right key frame. You can right-click a key frame to bring up options: You can also copy the frame and move it elsewhere. The texture indexes are not re-adjusted. It copies the key frame as is. You can select multiple key frames by holding down the Left Shift key and holding down the Left Mouse Button. The traditional windows shortcuts can also be used for selection. These include: Arrow Key: move to the desired next frame. Ctrl-Arrow Key: move to the next key frame block in the wanted direction. Shift-Arrow Key: move to the next key frame for selection. Ctrl-Shift-Arrow Key: move to the next frame block while selecting what's inbetween. Double-Left Mouse Button: selects an entire frame and its interpolated section. Ctrl-A: selects the entire layer. You can move a key frame by selecting the key frame, clicking on the dot and then moving the key frame to the desired location. The operation above can also be done by selecting multiple rows at the same time. You can do a quick preview of the animation by moving the timeline selector. You can move a layer up and down by holding down the Left Mouse Button and moving it where you want it to. Right-clicking a layer also brings up more options. And I believe that's it! The next "feature" I wanted to implement was editing multiple frames at the same time, but unfortunately this project needs a small break from my end...! Hopefully some of you may have an use for it. Edit: I am most certainly not an animator and I do not know the real needs of those who will actually use the software. That is why it's being posted as a work in progress rather than a finished tool. If you have requests, feel free to post them below and I'll add as much as I can.1 point
-
4CrAM-Open Hey everyone. Today marks a very special day for the 4CrAM project. A day that will change the private server community. The project has been a big success and it has not only made it possible to have fully working for 4th jobs on private server's a thing but it also allowed me to recover from a difficult situation I was in at the start of the project. Im very thankful to the people who have supported me up to this moment. Without you this project wouldn't of been possible. But its been about a year and a half and with the code finally reaching a point that im happy with it, I feel its time to reveal it to the public. Today is the day I make all of the work ive done up to this point public for the community but with a little extra in it. The code contains fully working 4th jobs, fully working traits system with the sub-stats working 100% official, the AP system fully working, all 4th job skills working, a few new commands along with some others modified for developing purposes, a custom job changer NPC for all the latest jobs, and a few other goodies. But the last feature to be included with this release is something I felt would be a good thing for the player base, overall community, and my way of saying thanks. I don't want players to be divided into 2 sides due to one side having access to 4th jobs and the other side having their character's potential limited. So with this I decided to also release full ready to play support for all of the expanded jobs. This will allow all players to reach their final jobs and gain access to base level 250 and the traits system. However, none of their skills are coded in yet. The power gap between 4th jobs and older renewal era expanded jobs was just too great to keep this from the community and with this release the gap can be minimized. I hope everyone enjoys this release and have as much fun with it as I did coding it all. This is my gift to the community. Enjoy. Also be sure to leave me a thank you if your not too lazy. One final note. CHECKMATE AND FUCK YOU TO A CERTAIN PERSON!!!! You know who you are. >=D 4CrAM-Open Github Link Note: A 2020-09-02bRagexeRE client or newer is needed for 4th jobs access. A 2021-11-17aRagexeRE or newer is needed to access everything. Be sure to adjust the set client date your using in the defines_pre.hpp file. Keep in mind the 2021-11-17 client is still new and issues are likely to still exist with its support. https://github.com/Rytech2/4CrAM-Open1 point
-
Thank you for the tool. I'm a programmer that had played with those files before, I discovered they come from the game ez2dj and also are used in djmax , and the RO online documentation helped me to have some fun with it. There are many features like auto texture increment modes, that RO files don't use, but are available features that I think RO supports by default. The layer #0 , is used when you need a basic untextured color bg, maybe it's always transparent on RO but it may not There are extra uv parameters linked to the image files. There is also a bezier function, but the parameters were added in the RO .EZV json-like file and then converted into individual keyframes in the ezv to str conversion. That's why some animations are smooth and seem to be interpolated, but actually are made from a lot of keyframes and no morph/delta-frames, so it would be interesting, but ambitious to make the app work based on ezv/json I also have a modified version of one of the rhythm games where I can just open it and immediately play an str natively, for testing Here is my fork of a previous str viewer, with useful info and commits Info on animation types (I could test the missing types later to incorporate them) Cheers1 point
-
Project has been voluntarily and permanently discontinued.1 point
-
Updated to 2.1.0, adds support for ZIP archives and reflects builder and configuration improvements based on community feedback. Updated to 2.2.0, adds support for self-updating and fixes ZIP archives would not be extracted.1 point
-
/*========================================== * @jumptosell - warps to the cheapest shop. * Made by Vengence * Make it work for latest [Shakto] *------------------------------------------*/ ACMD_FUNC(jumptosell) { char item_name[100]; int item_id = 0, j, count = 0, sat_num = 0; int s_type = 1; // search bitmask: 0-name,1-id, 2-card, 4-refine int refine = 0,card_id = 0; struct map_session_data* pl_sd; struct map_session_data* pl_sd2; struct s_mapiterator* iter; unsigned int MinPrice = battle_config.vending_max_value, MaxPrice = 0; nullpo_retr(-1, sd); if (!message || !*message) { clif_displaymessage(fd, "Use: @jumptosell (<+refine> )(<item_id>)(<[card_id]>) or @jumptosell <name>"); return -1; } if (sscanf(message, "+%d %d[%d]", &refine, &item_id, &card_id) == 3){ s_type = 1+2+4; } else if (sscanf(message, "+%d %d", &refine, &item_id) == 2){ s_type = 1+4; } else if (sscanf(message, "+%d [%d]", &refine, &card_id) == 2){ s_type = 2+4; } else if (sscanf(message, "%d[%d]", &item_id, &card_id) == 2){ s_type = 1+2; } else if (sscanf(message, "[%d]", &card_id) == 1){ s_type = 2; } else if (sscanf(message, "+%d", &refine) == 1){ s_type = 4; } else if (sscanf(message, "%d", &item_id) == 1 && item_id == atoi(message)){ s_type = 1; } else if (sscanf(message, "%99[^\n]", item_name) == 1){ s_type = 1; std::shared_ptr<item_data> id = item_db.searchname( item_name ); if( id == nullptr ){ clif_displaymessage(fd, "No item found with this name"); return -1; } item_id = id->nameid; } else { clif_displaymessage(fd, "Use: @jumptosell (<+refine> )(<item_id>)(<[card_id]>) or @jumptosell <name>"); return -1; } struct item_data *item_data; //check card if(s_type & 2 && ((item_data = itemdb_exists(card_id)) == NULL || item_data->type != IT_CARD)){ clif_displaymessage(fd, "Not found a card with than ID"); return -1; } //check item if(s_type & 1 && (item_data = itemdb_exists(item_id)) == NULL){ clif_displaymessage(fd, "Not found an item with than ID"); return -1; } //check refine if(s_type & 4){ if (refine<0 || refine>10){ clif_displaymessage(fd, "Refine out of bounds: 0 - 10"); return -1; } /*if(item_data->type != IT_WEAPON && item_data->type != IT_ARMOR){ clif_displaymessage(fd, "Use refine only with weapon or armor"); return -1; }*/ } iter = mapit_getallusers(); for( pl_sd = (TBL_PC*)mapit_first(iter); mapit_exists(iter); pl_sd = (TBL_PC*)mapit_next(iter) ) { if( pl_sd->vender_id ) //check if player is vending { for (j = 0; j < pl_sd->vend_num; j++) { if((item_data = itemdb_exists(pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid)) == NULL) continue; if(s_type & 1 && pl_sd->cart.u.items_cart[pl_sd->vending[j].index].nameid != item_id) continue; if(s_type & 2 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || (pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[0] != card_id && pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[1] != card_id && pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[2] != card_id && pl_sd->cart.u.items_cart[pl_sd->vending[j].index].card[3] != card_id))) continue; if(s_type & 4 && ((item_data->type != IT_ARMOR && item_data->type != IT_WEAPON) || pl_sd->cart.u.items_cart[pl_sd->vending[j].index].refine != refine)) continue; if(pl_sd->vending[j].value < MinPrice){ MinPrice = pl_sd->vending[j].value; pl_sd2 = pl_sd; } count++; } } } mapit_free(iter); if(count > 0) { pc_setpos(sd, pl_sd2->mapindex, pl_sd2->bl.x, pl_sd2->bl.y, CLR_TELEPORT); } else clif_displaymessage(fd, "Nobody is selling it now."); return 0; }1 point
-
Thor Patcher doesn't able to use https (SSL) u need to use http(port 80 instead of 443) and disable "force use of https instead of http" in ur Webserver configuration. Rynbef~1 point
-
can i see the path inside your /var folder? credits to @chatterboy you also follow this guide:1 point
-
View File @go/@warp delay when hit - Updated Here is an updated @go and @warp delay when hit. Submitter Mabuhay Submitted 11/18/2019 Category Source Modifications Video Content Author Mabuhay1 point
-
1 point
-
what no go/warp delay patch did you use? I've patterened this from http://rathena.org/w..._delay_when_hit skill.c clif_displaymessage(sd->fd, "Duel: Can't use teleport in duel."); break; } + if(DIFF_TICK(sd->warpgodelay_tick,gettick())>0) + { + clif_displaymessage(sd->fd,"Teleport failed. There is a 5 seconds delay when hit."); + break; + } if( sd->state.autocast || ( (sd->skillitem == AL_TELEPORT || battle_config.skip_teleport_lv1_menu) && skilllv == 1 ) || skilllv == 3 ) { if( skilllv == 1 ) change warpgodelay_tick to whatever your src uses.1 point