Leaderboard
Popular Content
Showing content with the highest reputation on 06/28/24 in Posts
-
View File AnyMapDrops This mod made in map_drops.yml now allows you to add drops globally (without specifying a map), I also added a parameter where the added item can go directly to the player's inventory if there is space. Example of use ( db\import\map_drops.yml ) Header: Type: MAP_DROP_DB Version: 2 Body: - Map: ANY GlobalDrops: - Index: 0 Item: Union_Token Rate: 50000 DirectInventory: true - Index: 1 Item: Flower Rate: 100000 SpecificDrops: - Monster: Fabre Drops: - Index: 0 Item: White_Gold_Coin Rate: 50000 DirectInventory: true - Index: 1 Item: Izidor Rate: 50000 - Monster: Poring Drops: - Index: 0 Item: Crystal_Jewel__ Rate: 50000 Note 1: To be valid across all maps, set the map name to ANY. Note 2: The new parameter DirectInventory ( false | true ) allows the item to go directly to the inventory. Note 3: I created 2 new mapflags (nomapdrops and mapdrops), the first is self-explanatory (does not drop any items from map_drops ), the second will be effective for instances, as now map_drops does not drop items in instances, so just apply the second mapflag on the instance (in the instance maps) to make it work again. Example of use: OnInstanceInit: setmapflag instance_mapname("1@nyd"),mf_mapdrops; setmapflag instance_mapname("2@nyd"),mf_mapdrops; Next updates I will add a parameter to mapdrops.yml if you want the item to be dropped in instances too instead of having to use the mapdrops mapflag. Submitter Hyroshima Submitted 06/26/24 Category Source Modifications Video Content Author Hyroshima1 point
-
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
-
I've already gave you an example, but even so you don't get it, try reading documentation or using search feature. There is a lot of topics similar to yours, including using different solutions that you can choose to fit your needs. Examples:1 point
-
1 point
-
Hi //===== rAthena Script by Racaae ============================= //= https://rathena.org/board/topic/142092-reputation-increase-by-podszeny-script/ //============================================================ prontera,170,181,4 script Reputation Increaser 4_EP19_IWIN,{ .@zeny_cost = 2000000; //Zeny amount needed to increase rep .@zeny_reputation = 10; //how much rep player get using item .@item_cost = 5; //item amount needed to increase rep .@item_reputation = 100;//how much rep player get using item .@item_id = 7179; //Proof of Donation ID // <Reputation ID>, "<Name>", <Max Limit>; setarray .@rep$, 3, "Grey Wolf Village", 4000, 4, "Ice Castle", 2000; disable_items; cutin "ep19_iwin04.png", 2; mes "[Reputation Increaser]"; if (getarraysize(.@rep$) > 3) mes "Hello, I can ^FF8000increase your reputation^000000 in some areas if you are willing to invest ^FF8000POD or Zeny^000000."; else mes "Hello, I can ^FF8000increase your reputation^000000 in the " + .@rep$[1] + " if you are willing to invest ^FF8000POD or Zeny^000000."; next; switch(select("How does that work?", (.@zeny_cost?"Invest Zeny":""), (.@item_cost?"Invest POD":""), "Finish conversation")) { case 1: mes "[Reputation Increaser]"; mes "I'm here to collect investment from adventurers, therefore increasing their reputation with the area."; if (getarraysize(.@rep$) > 3) { mes "Available areas:"; for (.@i = 0; .@i < getarraysize(.@rep$); .@i+=3) mes "- " + .@rep$[.@i+1]; } next; mes "[Reputation Increaser]"; if (.@zeny_cost) mes "For each ^000088" + F_InsertComma(.@zeny_cost) + "z^000000 you give me, your reputation increases by ^FF0000" + F_InsertComma(.@zeny_reputation) + " points^000000."; if (.@item_cost) { mes "For ^000088" + F_InsertComma(.@item_cost) + "^000000 " + mesitemlink(.@item_id); mes "you give me, your reputation increases by ^FF0000" + F_InsertComma(.@item_reputation) + " points^000000."; } next; mes "[Reputation Increaser]"; if (getarraysize(.@rep$) > 3) { mes "I can increase reputation up to a max. No investments can be made when you reach it."; for (.@i = 0; .@i < getarraysize(.@rep$); .@i+=3) mes "- " + .@rep$[.@i+1] + " Max: " + .@rep$[.@i+2]; } else mes "I can increase reputation up to a max " + .@rep$[2] + ". No investments can be made when you reach it."; close3; case 2: .@zeny = true; break; case 4: mes "[Reputation Increaser]"; mes "Please do come back, Have a nice day!"; close3; } if (getarraysize(.@rep$) > 3) { mes "[Reputation Increaser]"; mes "Which area will you invest?"; .@menu$ = ""; for (.@i = 0; .@i < getarraysize(.@rep$); .@i += 3) .@menu$ += .@rep$[.@i+1] + ":"; .@s = (select(.@menu$) - 1) * 3; clear; } mes "[Reputation Increaser]"; if (get_reputation_points(atoi(.@rep$[.@s])) >= (atoi(.@rep$[.@s+2]))) { mes "I can only increase your reputation in the " + .@rep$[.@s+1] + " up to " + .@rep$[.@s+2] + " points."; mes "No investments can be made anymore."; close3; } if (.@zeny) { mes "For each ^000088" + F_InsertComma(.@zeny_cost) + "z^000000 you give me, your reputation increases by ^FF0000" + F_InsertComma(.@zeny_reputation) + " points^000000."; if (Zeny < .@zeny_cost) { mes "^FF0000You don't have enough Zeny.^000000"; close3; } } else { mes "For ^000088" + F_InsertComma(.@item_cost) + "^000000 " + mesitemlink(.@item_id); mes "you give me, your reputation increases by ^FF0000" + F_InsertComma(.@item_reputation) + " points^000000."; if (countitem(.@item_id) < .@item_cost) { mes "^FF0000You don't have enough POD.^000000"; close3; } } switch(select("Invest 1 time", "Input how many times", "Cancel")) { clear; case 1: .@t = 1; mes "[Reputation Increaser]"; break; case 2: mes "[EXAMPLES]"; for (.@i = 1; .@i < 11; .@i++) { if (.@zeny) mes .@i + ": ^000088" + F_InsertComma(.@zeny_cost * .@i) + "z^000000 > ^FF0000" + F_InsertComma(.@zeny_reputation * .@i) + " reputation"; else mes .@i + ": ^000088" + F_InsertComma(.@item_cost * .@i) + " POD^000000 > ^FF0000" + F_InsertComma(.@item_reputation * .@i) + " reputation"; if (.@i == 3) .@i = 4; if (.@i == 5) .@i = 9; } mes "^FF0000(Enter '0' to cancel the transaction)^000000"; input .@t; if (.@t < 1) close3; clear; mes "[Reputation Increaser]"; if (.@zeny) { if (.@t * .@zeny_cost > Zeny) { .@t = Zeny / .@zeny_cost; mes "You don't have enough Zeny for that."; mes "The closest amount you can invest is " + F_InsertComma(.@zeny_cost * .@t) + "z."; } } else if (.@t * .@item_cost > countitem(.@item_id)) { .@t = countitem(.@item_id) / .@item_cost; mes "You don't have enough POD for that."; mes "The closest amount you can invest is " + F_InsertComma(.@item_cost * .@t) + " POD."; } break; case 3: mes "[Reputation Increaser]"; mes F_Bye; close3; } if (.@zeny) mes "Are you sure you want to invest ^000088" + F_InsertComma(.@zeny_cost * .@t) + "z^000000 to receive ^FF0000" + F_InsertComma(.@zeny_reputation * .@t) + " reputation points^000000 in the " + .@rep$[.@s+1] + "?"; else mes "Are you sure you want to invest ^000088" + F_InsertComma(.@item_cost * .@t) + " POD^000000 to receive ^FF0000" + F_InsertComma(.@item_reputation * .@t) + " reputation points^000000 in the " + .@rep$[.@s+1] + "?"; next; if (select("No, cancel.", "Yes, continue!") == 1) close3; mes "[Reputation Increaser]"; if ((.@zeny && (get_reputation_points(atoi(.@rep$[.@s])) + (.@t * .@zeny_reputation) > atoi(.@rep$[.@s+2]))) || (!.@zeny && (get_reputation_points(atoi(.@rep$[.@s])) + (.@t * .@item_reputation) > atoi(.@rep$[.@s+2])))) { emotion ET_OTL; mes "Sorry. That amount of reputation would exceed the maximum " + .@rep$[.@s+2] + " I can increase."; close3; } if (.@zeny) { if (Zeny < .@zeny_cost * .@t) { mes "^FF0000You don't have enough Zeny...^000000"; close3; } .@getRep = .@zeny_reputation * .@t; Zeny -= .@zeny_cost * .@t; } else { if (countitem(.@item_id) < .@item_cost * .@t) { mes "^FF0000You don't have enough POD...^000000"; close3; } .@getRep = .@item_reputation * .@t; delitem .@item_id, .@item_cost * .@t; } add_reputation_points(atoi(.@rep$[.@s]), .@getRep); mes "It is done! Thank you!"; mes " "; mes "^0000FFYour reputation in the " + .@rep$[.@s+1] + " increases by " + F_InsertComma(.@getRep) + " points^000000."; specialeffect2 EF_STEALCOIN; emotion ET_DELIGHT; close3; }1 point