Leaderboard
Popular Content
Showing content with the highest reputation on 02/08/13 in all areas
-
Briefing & Concept Hello everyone! As you may noticed, by a petition I asked to our staff, we had some changes in this forum. Now it is named as 3D Modeling Showcase, instead of just Map Showcase The idea is to promove the development/discussion in all regards the 3D area. I remember that years before this area was almost null in the *Athena communities, due to a lot of missinformation/resources... not anymore! Back to the thread. This first release (of a lot to come) is in grattitude to a team where I'm member and after 2 years of development and testings, we were able to finally finish our Animated 3D Monsters Project as for now we can handle -bones animations- for gr2 files. Donations are Welcome in appreciation to Ricky92 who developed the Granny Converter. This release is possible thanks by the Granny Animation team: Doss, Ricky92, Olrox, Ai4rei, curiosity, Lemongrass, Shinryo, Yommy, Greenbox You might remember the emperium/guardians/treasure boxes. Yes, those are the kind of mobs/models I'm refering to. In short words, thanks to the work of our team and of course the community support, we can add animation with bones in any 3D model we have. That means for example: make our own 3D mobs, add animation to pre-existing models like a wind a blowing effect to the prontera flags, add interactions like opening gates... etc. Now, lets talk about this release. You may remember "Ragnarok II Gate of the World" a game from Gravity that stopped development some time ago. Well, as a first release of this tool, I took my time to bring some packs of these awesome mobs that you can use in your server now. Some technical info: - This games runs under an Unreal engine - Granny exporter for 3ds max used to import the animations - Granny converter by Ricky92 to convert the gr2 files into RO version About this release So, what do we have new on this release? This first pack, contains 4 full animated 3D mobs from this game. Animations are: Walk, Dead, Attack, Stand and Damage. Just a reminder: The damage animation is not showing for custom 3d mobs even if they have it; this also happens with official 3d mobs aswell. So, we believe it is more a matter of the official client rather than a custom addition to take care of. Some notes you have to consider please. We are still in early state. I mean, it has been years without the possibility to add our own 3D mobs until now! so, a lot of optimizations/details at exporting are in the TODO list. Dead animation is fixed in 2 mobs in this pack that by an unknown reason they made some graphical lag with this animation. It was necessary to fix the end keyframe to the default dead animation in the mob, so, when these two mobs dies, they return to the default position (I can tell this also happens in official mobs, I believe this is a matter of Gravity too) Attack animation: The client, by a reason, shows the attack animation really fast. We must make them lower in max, and export it in gr2 with this in mind. Some glitches like weird rotation in the Y axis, is presented if you export the gr2 models with "relocating position to origin";. I realized this and finally the mobs were not bad rotated by the client. When exporting bones, you must disable: texture and mesh data. By that way, the gr2 will be setted as the official ones, which they only stores the animation without bones mesh/texture data. I know it is nice to have it listed like that. But the true is that it took me HOURS! to do those tests and have those conclutions. Thanks to that, the mobs were fixed and they don't have any serious glitches =P These mobs are compatible and were tested on: 2011-03-15a and 2012-04-10a clients. However, we believe that our feature works also with: "2010-11-24a towards "2011-12-14c" range date, so as "2011-12-20b towards "2012-07-16a" range date aswell. Don't worry, adding the mobs its really easy, just as how you add normal sprites mobs. The only difference is a small patch you have to apply to your current exe. These details will be added in the INSTRUCTION.txt file attached in the download pack of this release. So there you have this animated gifs of them!. Liquid bug, Roda Frog, Puku Puku, and the Vadon mob. The one I like the most is, the Puku Puku (the ones that is flying) ... really, I was shocked too look this kind of animation being possible now. I mean, mobs flying. wow! Video ... watch it in HD 720p! HD Screenshot Screens are in Full HD resolution. You can allways hit the image thumbnaill to check the images on full size, and check some details that can only be appreciated in HD resolution. *** Download link & Instructions *** If you read all the thread, you may know that this was possible thanks to the project I linked above. Doing this tests and being able to port this animated 3D is consuming me a looooot of time! As you know, I run a service were I get commisions to make maps. Affording time to do this kind of releases, it is something really hard to me. However I completely understand that making time to work for the community here is important, so as a gratitude to the people who supported our project before. Please support this release! I'm planning to add more of these free packs of this game, so as others too: world of warcraft pets? who knows!. So by posting your feedback or by adding: A comment is Greatly appreciated. A simple reputation makes me happy *A topic rating is allways a good detail from all Ensures me that this release and the project itself worthed the time of me and the team who was responsible to make this kind of features possible. Well that is all. Please stay in tune for the download link. It will be a matter of 1 of 2 days so please take a look of this thread frequently to download it. Edit: Btw: Do you think the mobs are oversized? I can make them smaller if you want... however I thought it was good to follow the idea of the "WoE guardians" which they have this size.2 points
-
I have that intention; thanks for dumping the important facts here, so I do not have to search through the entire granny project thread.2 points
-
So I guess this is all you need: http://rathena.org/b...english-folder/ Download mo lang yung = Data Version 3.0 ' IF ' you are using 2012 client and up.2 points
-
Hey Bro, Pretty sure only I can resurrect Ragray since I was the one that made it. Thanks.2 points
-
E - Script Collection Last Update : September 10, 2013 Refine Function SQL Mission Board Monster Marching Vendor Control Advanced Stylist Coin Exchanger Doppelganger Race Of The Day Limited Items Multi Currency Shop Random News GM Online List Link Broken E-Inquiry DotA Runes Flower Counting Game Class Restriction Chain Quest Build Manager Misc Scripts : Freebies Script Card Trader Gold Room [ Pick Gold ] Gold Room [ Guild Tax ] Map Restriction [ GM Based ] Daily Reward Monthly Reward Monster Spawner Monster Summoner with Last Summoned Display Players Stats & Equipments 3rd Job Item Giver Exchanger [ Cashpoint to Coins ] Exchanger [ Poring Coin - Zeny ] Exchanger [ Points to Tickets ] Exchanger [ Item to Item ] Exchanger [ Item to Item ] Exchanger [ Multi Item to 1 Item ] Party Match Auto Ban Over Stats Users Soul Link Buff Kill Players gain Cash Points Party Members All Get Items [ Snippet ] Message Board Stalker Class Skill Reproduce NPC Multiple Selection Quest [ Template ] In-Game Item Rewarder In-Game Points Rewarder Invasion Event Custom Item Rate Status Point Seller [ Snippet ] Anti Bot Security Script Anti Bot Script [ Code / Question ] Item Combo Restriction [ LHZ Card ] Drop Item Upon Death PVP Switcher + Announcer [ Guild Master ] Rotating Waitingroom Messages +10 Refiner [ Specific Items ] Random Rate Item Exchanger MVP Invasion Premium Users [ Boost Rates ] Display Cutin Image upon Login Custom Randomed Box Items Kick GM during WOE Custom Crafting NPC Restrict Same IP [ Certain Map ] Coloured Items Exchanger Guild Master Changer Party Team PK Match Gambling Game IRC Channel Crafting NPC Guild Storage Restriction Stage Game [ Version 4 ] Monster Wiki Event [ Version 3 ] Special Thank you for my Tutor : Notes : I am a bit lazy to write all those Script Descriptions, i do believe that all of you able to get how this script works. Anyway, i will still doing my best to write the Updated Changelog or informations about the script as detail as possible. All the Scripts above are uploaded to Pastebin . Abide the Following Rule : Scripts Error / Not Working , you have to Explain it in Details. ( Add in Images / Modified Scripts ) Do not SPAM / BUMP in my Topic. Do not ask for Support stuffs for other Scripts in this Topic. Link Down , then drop [ @Emistry ] a message. I Reserved the Right for NOT Answering your Posts if you did not abide my Topic's Rules. Keep This In Your Mind : All the Scripts i distribute here are NOT FOR COMMERCIAL USES . DO NOT remove my Credits if you are using part of the scripts to modify your own. DO NOT re-release the scripts in any form / way. If you ♥ these Scripts , Click on to Vote this Topic up. Or you may also click on at above the Topic1 point
-
Donation NPC 1.0 inspired in this http://rathena.org/b...coupon-npc-111/ and http://rathena.org/b...ional-code-npc/ so i make my own script. it is Also Credited to tr0n. How to Use it To GM or Admin - Talk the NPC and You can Add the Validation Code and the Code will be generate and it will save in the SQL. To Player - Talk to NPC and Get your Donation Code by inputing the Verification Code you Will get the Donation code and Input the Donation Code to get your Item or Cash Point Files DonationNPC_1.0.txt Change Logs Features Can Select Cash Point or Item Friendly to Use Save in the SQL Generated Code Future Plan Suggestion Report for the Server Ingame Bug report Can View all the Claimed Code Can View all the UnClaimed Code More Secured for Anti Hack Note: if have bug post here suggestion post here1 point
-
Toasty's Warper by: ToastOfDoom So this is a project I've been working on and off for a while and only really just had it done to a release standard recently. The original reason I started this script was cause of Annie's Favorite Warper script. While pretty original in that I think it was the 1st one to implement a favorites menu in a warper, I absolutely detested how ugly that script looked. No offence to annie, but it looked like an absolute nightmare to configure (menu structure in one area, warp data in another, lots of duplicated data all over the place making it very easy to make a mistake). So I set out to write a warper that meets this one objective: Be able to portray the configuration of all map and menu structure data in a single glance. Features: Easy to configure layout Zeny cost configuration on menu/submenu/map levels Configurable dynamic access to menus and maps Remembers last warps Brain hurting complexity in other parts of the script (not guaranteed) Download: ver 1.32 - 21-04-2011 (r14682 trunk) ver 1.31 - 27-04-2011 (r14682 trunk) ver 1.30 - 26-04-2011 (r14682 trunk) ver 1.20 - 12-02-2011 (r14682 trunk) ver 1.10 - 13-01-2011 (r14413 trunk) ver 1.00 - 08-01-2011 (r14413 trunk) Mirrors: ver 1.32 - 21-04-2011 (r14682 trunk) How to configure: Look for the 'LoadData' label in the script (line 184). All menu and map data is stored in this one subroutine. Configuring the menus is as easy as moving lines around. Details for each function as follows. AddLastWarpNode(): Will add a menu item to access previously used warps. The maximum amount of stored last maps is 64, however by default it has been set to 10 (.numLastWarps) AddNode(<node_name>{, <modifier>, <modifier_value>{, <modifier>, ...}}): This will add a submenu to the current menu. The cost value for zeny is optional. The cost value will carry on to all nodes and maps within the submenu unless overwritten but another cost value either at a lower node or map. Setting cost to 0 will cancel any costs from being carried down. //Eg. This will make a menu called "Dungeons" with a menu called "Abbey, Cursed Monastery" within StartNode("Dungeons"); StartNode("Abbey, Cursed Monastery"); AddMap("Abbey, Cursed Monastery - Level 1", "abbey01", 51, 14); AddMap("Abbey, Cursed Monastery - Level 2", "abbey02", 150, 11); ... EndNode(); EndNode(); EndNode(): This will exit the current menu that was opened with AddNode() and go back to the parent menu of that menu. Consider it like brackets. All StartNode()s must end somewhere with an EndNode(). AddMap(<map_title>, <map_name>, <x>, <y>{, <modifier>, <modifier_value>{, <modifier>, ...}}): This will add a map to the current menu. //Eg. This will make a menu called "Towns" and place 5 maps within StartNode("Towns"); AddMap("Alberta", "alberta", 28, 234); AddMap("Aldebaran", "aldebaran", 140, 131); AddMap("Amatsu", "amatsu", 198, 84, 5000); AddMap("Ayothaya", "ayothaya", 150, 163); AddMap("Comodo", "comodo", 209, 143); EndNode(); Modifiers: With the 'AddNode' and 'AddMap' commands you are able to add modifiers to either give a set price or dynamically allow access to the specified menu or map (and some other things). All modifiers will cascade down all children nodes until overwritten by another modifier. You can apply multiple modifiers but only one of each (ie..can't use 2x "gm" modifiers, but you can use 1x "gm", 1x "woe") Descriptions of all avaiable modifiers and examples follow: "zeny" - This sets a zeny cost to either all maps within the set node or the set map depending on how it was used. //Eg. This will make all maps within the 'Dungeons' menu cost 1000z StartNode("Dungeons", "Zeny", 1000); StartNode("Abbey, Cursed Monastery"); AddMap("Abbey, Cursed Monastery - Level 1", "abbey01", 51, 14); AddMap("Abbey, Cursed Monastery - Level 2", "abbey02", 150, 11); ... EndNode(); EndNode(); "gm"- This limits access to the menu/map according to the player's gm level. If set to positive it will check if the player's gm level is above or equal. If set to negative, it will check if the player's gm level is below or equal to the absolute of the value //Eg. This will make all maps within the 'Fields' menu accessible to only GMs above or equal to level 20 StartNode("Fields", "gm", 20); StartNode("Amatsu Fields"); AddMap("Amatsu Field 1", "ama_fild01", 190, 197); EndNode(); StartNode("Ayothaya Fields"); AddMap("Ayothaya Field 1", "ayo_fild01", 173, 134); AddMap("Ayothaya Field 2", "ayo_fild02", 212, 150); ... EndNode(); EndNode(); //This will make all maps within the 'Fields' menu accessible to only players below or equal to level 40 StartNode("Fields", "gm", -40); StartNode("Amatsu Fields"); AddMap("Amatsu Field 1", "ama_fild01", 190, 197); EndNode(); StartNode("Ayothaya Fields"); AddMap("Ayothaya Field 1", "ayo_fild01", 173, 134); AddMap("Ayothaya Field 2", "ayo_fild02", 212, 150); ... EndNode(); EndNode(); "woe"- This limits access to the menu/map according to the current state of WoE. This relies on the OnAgitStart/OnAgitEnd events at the end of the script. //1: active when woe inactive //2: active when woe active //3: active regardless of woe setting(default) //Eg. This will only allow access to the Castles menus and maps when WoE is active StartNode("Castles", "woe", 2); StartNode("Aldebaran Castles"); AddMap("Neuschwanstein(Aldebaran)", "alde_gld", 48, 83, "mapUsers", "aldeg_cas01"); AddMap("Hohenschwangau(Aldebaran)", "alde_gld", 95, 249, "mapUsers", "aldeg_cas02"); ... EndNode(); EndNode(); "job"- This limits access to the menu/map according to the player's current job. Calculation method is exactly the same as the one used for jobs in item_db (ie..add up the bitmasks) (S.) Novice (2^00): 0x00000001 Swordman (2^01): 0x00000002 Mage (2^02): 0x00000004 Archer (2^03): 0x00000008 Acolyte (2^04): 0x00000010 Merchant (2^05): 0x00000020 Thief (2^06): 0x00000040 Knight (2^07): 0x00000080 Priest (2^08): 0x00000100 Wizard (2^09): 0x00000200 Blacksmith (2^10): 0x00000400 Hunter (2^11): 0x00000800 Assassin (2^12): 0x00001000 Unused (2^13): 0x00002000 Crusader (2^14): 0x00004000 Monk (2^15): 0x00008000 Sage (2^16): 0x00010000 Rogue (2^17): 0x00020000 Alchemist (2^18): 0x00040000 Bard/Dancer (2^19): 0x00080000 Unused (2^20): 0x00100000 Taekwon (2^21): 0x00200000 StarGladi (2^22): 0x00400000 Soul Linker (2^23): 0x00800000 Gunslinger (2^24): 0x01000000 Ninja (2^25): 0x02000000 //Eg. This will only allow access to the Payon dungeons to Wizards and Hunters and only when WoE is inactive StartNode("Payon Dungeon", "job", 0x00000A00, "woe", 1); AddMap("Payon Dungeon - Lvl 1", "pay_dun00", 21, 183); AddMap("Payon Dungeon - Lvl 2", "pay_dun01", 19, 33); AddMap("Payon Dungeon - Lvl 3", "pay_dun02", 19, 63); AddMap("Payon Dungeon - Lvl 4", "pay_dun03", 155, 159); AddMap("Payon Dungeon - Lvl 5", "pay_dun04", 201, 204); EndNode(); "upper"- This limits access to the menu/map according to wherever the player is a normal/high/baby class. Like with 'job' this works the same as the 'upper' value in item_db. //1: Normal jobs //2: Upper jobs //4: Baby jobs //Eg. This will only allow access to the casino to baby classes AddMap("Casino", "cmd_in02", 179, 129, "upper", 4); "gender"- This limits access to the menu/map according to the sex of the player. 0 is female, 1 is male, 2 for both. "blvl"- This limits access to the menu/map according to the base level of the player. This works exactly the same as with "gm" except with baselevels instead of gmlevels. "flag"- This will limit access to the menu/map depending on the value of a specified variable. This is very useful for restricting access to things when an event is on or wherever the player as passed a certain quest. //Eg. This will only allow access to the guild dungeons if the global variable $@testEvent is not set to 0. StartNode("Guild Dungeons", "flag", "$@testEvent"); AddMap("Baldur Guild Dungeon", "gld_dun01", 119, 93); AddMap("Luina Guild Dungeon", "gld_dun02", 39, 161); AddMap("Valkyrie Guild Dungeon", "gld_dun03", 50, 44); AddMap("Britoniah Guild Dungeon", "gld_dun04", 116, 45); EndNode(); "function"- This will limit access to a menu/map depending on the output of a specified function. Works very similar to the 'flag' modifier only will allow greater control but is also alot more computationally expensive. Recommend only using when needed and to keep things simple in the function. The script will automatically pass the following variables to the function: //Node: "Node", <nodeid>, <nodename> //Map: "Map", <mapid>, <maptitle>, <mapname>, <mapx>, <mapy>, <mapcost> //Eg. This will only allow access to the Thanatos tower to players that are in a party and above or equal to level 90 StartNode("Thanatos Tower", "function", "PartyCheckFunc", "blvl", 90); AddMap("Thanatos Tower - Lvl 1", "tha_t01", 150, 39); AddMap("Thanatos Tower - Lvl 2", "tha_t02", 150, 136); AddMap("Thanatos Tower - Lvl 3", "tha_t03", 220, 158); AddMap("Thanatos Tower - Lvl 4", "tha_t04", 59, 143); AddMap("Thanatos Tower - Lvl 5", "tha_t05", 62, 11); ... EndNode(); ... function script PartyCheckFunc { return strcharinfo(1) != ""; } "mapUsers"- This will change the map used for the getmapusers() calculation. This allows you to warp to one map, but display the user count for another map (like for castles) Other Settings: .showNodeUserCount: 0/1 turns on/off the user count display for nodes/menus .showMapUserCount: 0/1 turns on/off the user count display for maps Important Notes: In the case that you add a map that doesn't exist a message will be displayed within your map server console indicating the name of the map. There is a limit to the length of the menu can reach. This limit is defined by 2047 characters. When this limit is reached the client will crash. The script has measures to prevent client crashes, but the menu in question will still be broken. A message in the map server console will display indicating the affected menu. Please modify the structure of the menu to prevent the overflow. Additionally all GMs above the set .gmAccessLvl will have the option to check which menus will overflow. Likewise this overflow problem will also affect the lastwarp menu so it is advised you keep the .numLastWarp value to a reasonable value (10-20) Technical stuff: Just some data on the structure of the script for those who want to modify functions (read this if you are interested in picking apart the script) ShowMenu(): Displays the menu and returns the map id of the selected map ComputeMenu(<menu_ptr>): Generates menu string. Modify this to change how you want the menus to look SelectMap(<mapid>): Does the final zeny subtraction and warping to the map after selection. You can modify this to have it do other things with the cost value (eg, subtract coins instead) All map data are stored in an infinite style array of the following names: # = index / 128, % = index % 128 .maps_name_#[%] .maps_map_#[%] .maps_x_#[%] .maps_y_#[%] .maps_cost_#[%] Node data are stored in the following manner: node_ptr$ = .menu_<nodeid>$ node[0] = Node title node[1] = Basic precomputed node menu string node[2+] = Either a pointer to a map or another node_ptr$. If it is a number it is a map id otherwise it is the menu pointer for the next submenu. Last warp menu is simply a pointer to "@menu_lastwarps$" As always will appreciate bugs reports, suggestions & criticism. This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License1 point
-
Miner World I made 'Miner World' because my old mini-game 'Miner System' became obsolete and we need a injection of fresh blood to enjoy Ragnarok Online. - Special thanks to 'Melody' - because she asked me to build a mining game with skills, levels and experience (she pressed me to release it quite soon. ^__^) The gameplay was created by me and i hope you love it as i do. Introduction: A scientist named "David Watson" created a new kind of boots called "Driller Boots", its main feature is a big slot that allow to install "drills". To operate the boots you must rotate your body rapidly to produce an effect that breaks the hard surface and allows quick access to areas full of minerals and surprises. Wear your driller boots and whisper to "npc:mine" to search mine spots along the world, there are plenty of kinds of mines and all locations are dynamic. The mines are growing all the time, so please don't be affraid if your mine are destroyed, you can always find another one. The more you train, your mining level will increase and you will learn skills that will give you improvements and advantages in the world of mining. How to use: Wear the Driller Boots Whisp *anything* to 'npc:mine' to start the mine locator or begin the digging process if you are on the mine. Try to find maps with mine spots and digg the surface trying to keep cold the drills If you broke your Drills, create a new one whispering 'make' to npc:mine (keep trying it) If you win Miner Points (leveling up) use this points to activate skills whispering 'skill' to 'npc:mine' If you broke your boots, you have to buy a new one, sorry for that, but experienced miners never broke their equipment. Look this Video and see it in action: Available Skills: Lynx Eye: (1-10) Improved detection capability, at level 10 the player can jump directly to the mine or show it on the mini-map. Diamond Head: (1-10) Increases the heat resistance in (10 * Skill) % Faster Drill: (1-25) Increase the Drill speed in a (2 * Skill) % Lucky Miner: (1-10) Increases the chances of gain minerals (Skill / 20) % Quick Rest: (1-10) The drill turns cold faster (10 * Skill) % Money Maker: (1-20) Gives a chance of receiving 1,000 zeny every time the Drill spins. (Skill) % Merchant Blood: (1-20) Increases the power of the drill and gain more depth after each try (Skill) % (Only Merchant Class) Weight Boots: (1-45) Increases the weight limit when using Driller Boots (1 + Skill / 5) % (All Classes except Merchant) Double or Nothing: (1-100) Gives a chance of receiving 2 items at once. (Skill / 2) % Repair: (1-50) Gives a chance of cool the Drill without stop the dig process (Skill / 10) % Drill Box: (1-50) Allow you to create more than 1 Drill, +1 x skill Magical Detection: (1-100) Increase the detection range in (Skill %) Base Exp Booster: (1-100) Increase the chances of gain Base EXP during the drill process (Skill / 10) % Job Booster: (1-100) Add chances of gain Job EXP during the dig process (Skill / 10) % Boot Care: (1-100) Decrease the chances of break the Driller Boots during the dig process (Skill %) Privacy: (1) The gained items doesn't show the miner name Mine Guardian: (1-50) Gives a chance of receive damage to protect the mine from the destruction. (Skill %) Miner Aura: (1-100) Decrease the chances of receive damage during the dig process. (Skill / 2 %) Corrosive Oil: (1-100) Softens the rocks reducing the drill deterioration during the dig process. (Skill / 25) Installation: Download Miner Worldminerworld.rar minerworld.rar - MF Mirror (Skorm) In script_athena.conf we have to update the values of this 2 variables:check_cmdcount: 655360 check_gotocount: 655360 Install "LangManagement.txt" and "VarSystem.txt" included in the BotKiller 6 package, please look the installation instructions in BotKiller6.txt to install these 2 scripts.BK6.rar Copy miner_world.txt in the following path:npc/custom/miner_world.txt Edit npc/scripts_custom.conf adding the following lines:// Unlimited Variable System npc: npc/custom/bk/VarSystem.txt // Multi-Language System npc: npc/custom/bk/LangManagement.txt // Miner World System npc: npc/custom/miner_world.txt If you are using BotKiller 6, you don't need the first 2 scripts because are already installed Apply the client patch included with the script package. Add the "Drill Boots" item to your item_db2 table. (or item_db2.txt) Run your server, buy your driller boots, wear it and whisp to npc:mine to check if everything is working. (go to anthell, there are basic mines for beginers) Miner World is multi-language exactly like BotKiller 6, currently support English and Spanish. (select your language whispering to 'npc:lang') - After the first run, you will see new tables in your database (mn_class, mn_item, mn_maps and mn_mine), try to understand this model to make a fine tuning to the game according with your server style - Do you need new Mine Kinds or/and change the defaults? I hope you like it! Myzter1 point
-
January Digest 2013 The following digest covers the month of January, 2013. Things have been settling down since the last digest, at long last. Here is a summary of what's taken place over the past month. Administration Maki has been reinstated as Administrator. Development Team Lemongrass has joined as Script / DB Developer. Daegaladh has rejoined as Script / DB Developer. Kenpachi has been moved to Community Contributors. Ind has been moved to Community Contributors. Cookie has been moved to Community Contributors. Development Highlights Updated all Renewal cast delays for non-third job skills. (r17069) Implemented official walk path dealing with obstacles. (r17091) Implemented Unique Item IDs for non-stackable items, switched off by default. (r17080, r17081, r17086) Added and updated many Renewal item scripts. (r17103, r17104, r17105). Implemented Sealed MVP cards. (r17104, r17105). Reduced default and minimum value of skill_amotion_leniency. (r17072) Distinguished main database from log database SQL upgrade files. (r17102) Misc. Stats During the period there were 47 commits. Of these 47 commits 34 included bug-fixes.1 point
-
It can't generate it for you but you can certainly make one. Follow this guide here:1 point
-
try this one instead /* create table pvpladder ( cid int(11) primary key, name varchar(23), kills int(11), deaths int(11), class int(11), key (kills) ) engine = myisam; */ prontera,164,170,2 script PvP Ladder 786,{ .@nb = query_sql( "select name, kills, deaths, class from pvpladder order by kills desc limit 10", .@name$, .@kills, .@deaths, .@class ); if ( !.@nb ) { mes "ladder is empty"; close; } for ( .@i = 0; .@i < .@nb; .@i++ ) mes "^0000FF"+ (.@i+1) +": ^228B22"+ .@name$[.@i] +" ^606060"+ jobname(.@class[.@i]) +" ^006699"+ .@kills[.@i] +" / ^C80000"+ .@deaths[.@i] +"^000000"; close; OnPCKillEvent: query_sql "insert into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql( strcharinfo(0) ) +"', 1, 0, "+ class +" ) on duplicate key update kills = kills +1, name = '"+ escape_sql( strcharinfo(0) ) +"', class = "+ class; attachrid killedrid; query_sql "insert into pvpladder values ( "+ getcharid(0) +", '"+ escape_sql( strcharinfo(0) ) +"', 0, 1, "+ class +" ) on duplicate key update deaths = deaths +1, name = '"+ escape_sql( strcharinfo(0) ) +"', class = "+ class; delwaitingroom; // continue read OnInit: if ( query_sql( "select name, kills, deaths, class from pvpladder order by kills desc limit 1", .@name$, .@kills, .@deaths, .@class ) ) waitingroom .@name$ +" ("+ jobname(.@class) +") : "+ .@kills +" / "+ .@deaths, 0; else waitingroom "PVP Ladder !", 0; end; } EDIT: fix a typo on table creation1 point
-
use the latest patch in rathena _17102, try to manually patch it, should be easy to do just add 4 new script commands into your eathena it should be working in eathena1 point
-
change defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".*", "iCorrect"; into defpattern 1,"([^:]+):.\\s*"+$MonsterName$+".$", "iCorrect";1 point
-
Because the mod breaks after we update our SVN doesn't make sense, this modification is just adding 4 script commands ... very simple patch I bet this patch even works in eathena/3ceam ( by patch manually ) prontera,156,185,5 script kjdhfkdjsf 100,{ mes "wanna sign up"; if ( select( "yes", "no" ) == 2 ) close; else if ( .signup_count == 128 ) { mes "Sorry the whole queue is full"; close; } while ( .signup_aid[.@i] != getcharid(3) && .@i < .signup_count ) set .@i, .@i +1; if ( .@i < .signup_count ) { mes "you have already sign up in this event"; close; } set .signup_aid[ .signup_count ], getcharid(3); set .signup_count, .signup_count +1; mes "You are now signed to the BG event"; // set .@i, 0; // DEBUG // while ( .signup_aid[.@i] ) { // set .@signup_name$, .@signup_name$ +","+ rid2name( .signup_aid[.@i] ); // set .@i, .@i +1; // } // mes "[Debug] Currently have "+ .signup_count +" sign-in and they are "+ .@signup_name$; close2; L_start: if ( .signup_count < .min2start ) end; for ( set .@i, 0; .@i < .signup_count; set .@i, .@i +1 ) { if ( attachrid( .signup_aid[.@i] ) ) { if ( getmapflag( strcharinfo(3), mf_nowarp ) ) { // player has went into another event deletearray .signup_aid[.@i], 1; set .signup_count, .signup_count -1; set .@i, .@i -1; } } else { deletearray .signup_aid[.@i], 1; set .signup_count, .signup_count -1; set .@i, .@i -1; } } if ( .start || .signup_count < .min2start ) end; announce "event started", 0; set .start, 1; for ( set .@i, 0; .@i < .signup_count; set .@i, .@i +1 ) setbgid ( .@i %2 )? .red : .blue, .signup_aid[.@i]; deletearray .signup_aid, .min2start; set .signup_count, .signup_count - .min2start; bg_warp .red, "guild_vs3", 13,50; bg_warp .blue, "guild_vs3", 86,50; bg_updatescore "guild_vs3", 0,0; sleep .eventlasting * 1000; if ( .start == 1 ) { if ( .score[1] == .score[2] ) mapannounce "guild_vs3", "Draw !", 0; else if ( .score[1] > .score[2] ) { mapannounce "guild_vs3", " Red side wins !", 0; callsub L_reward, .red; } else if ( .score[1] < .score[2] ) { mapannounce "guild_vs3", " Blue side wins !", 0; callsub L_reward, .blue; } } bg_warp .red, "prontera", 155,182; bg_warp .blue, "prontera", 158,182; bg_kickall .red; bg_kickall .blue; set .start, 0; deletearray .score; goto L_start; L_reward: getbgusers getarg(0); for ( set .@i, 0; .@i < .signup_count; set .@i, .@i +1 ) getitem 501, 1, $@arenamembers[.@i]; // item reward return; Onredout: callsub L_out, 2; Onblueout: callsub L_out, 1; L_out: announce strcharinfo(0) +" is out from the match !", 1; bg_leave; warp "SavePoint", 0,0; set .score[ getarg(0) ], .score[ getarg(0) ] +1; bg_updatescore "guild_vs3", .score[1], .score[2]; if ( .score[ getarg(0) ] == .min2start /2 ) awake strnpcinfo(0); end; OnInit: set .eventlasting, 30 * 60; // how long would the event last or it auto-reset. 30 *60 = 30 mins set .min2start, 2; // minimum player to start set .red, createbgid( "guild_vs3", 13,50, strnpcinfo(0)+"::Onredout", strnpcinfo(0)+"::Onredout" ); set .blue, createbgid( "guild_vs3", 86,50, strnpcinfo(0)+"::Onblueout", strnpcinfo(0)+"::Onblueout" ); end; } guild_vs3 mapflag battleground 2 guild_vs3 mapflag nosave SavePoint guild_vs3 mapflag nowarp guild_vs3 mapflag nowarpto guild_vs3 mapflag noteleport guild_vs3 mapflag nomemo guild_vs3 mapflag nopenalty guild_vs3 mapflag nobranch guild_vs3 mapflag noicewall try this however, if your next question is about how to write a battleground script, I have to move into script request section =/ your question is about how to write queue system, not the battleground system lol1 point
-
I'll try to get a friend to make one with me then. Apparently they are all lost. =p1 point
-
1 point
-
You're welcome @Emistry eaclass()&EAJ_THIRDMASK So it would be true if second class too *or other Also you forgot to close the mes Edit: Also JobLevel = 50; doesn't change skills points and skill placed (lol)1 point
-
1 point
-
Well readparam(JobLevel) joblevel is already defined as parameter, no need readparam if ((class >= 4054 && class <= 4079) || (class >= 4023 && class <= 4045) || (class >= 4096 && class <= 4108)){ //3rd Job Class You can use Eaclass atcommand "@joblvl "+strcharinfo(0)+" -70"; That must be your error : no need strcharinfo here (example with your GM, to change your joblevel you write @joblvl -70) end; Must be close; otherwise player would be freeze1 point
-
sorry I misread your screenshot Your error is the same as previously, for example .signup_aid[ .signup_count ] = getcharid(3); .signup_count++; to set .signup_aid[ .signup_count ], getcharid(3); set .signup_count, .signup_count + 1;1 point
-
This was one of my favorite games as a kid. Played it for hours during the day, and night. Lost so many hours of sleep in middle school from this game, lol. Although it's not very detailed, it's to scale. At first I wanted to make it all as one room but then took a page from official maps and split the rooms apart. Original game map! And the browscreens~ Sorry there aren't many screenshots. There isn't much detail and I haven't mapped in a while so this is mostly just the essentials. Download Link only contains map files. Does not come with warp npc info.1 point
-
prt_fild01,0,0,0,0 monster Poring 1002,30,5000,0,"Freebies::OnPoringKilled" - script Freebies -1,{ OnPoringKilled: BaseLevel += 10; JobLevel += 10; end; }1 point
-
lol...from previous post you should have noticed where to put it... /desp ~ which is actually the answer...myabe it's not clear enough for you..... you have to put it before/after the jobchange area... Job_Changing: // here... why are you add it in a part that never reach by users....1 point
-
1 point
-
This is a researching release, maybe it will lead to something bad or you may have no idea how to use this. * Preview : [media=] [/media]* This script need new source code to support record_sell_item_to_npc.patch and new table king_item.sql * This script will record date into database when someone sell something to npc, system will record full item information to let you use (item id, refine, card....). * Script (Include '' Set king date '' and '' See date '' ) : King of Land.txt King database : king_date.sql *1 point
-
1 point
-
1 point
-
warp "malaya",280,323; savepoint "malaya",280,323; close; because you add it at the wrong place for savepoint1 point
-
Last I heard on the Harmony customer forum, Harmony cannot be run on Linux, even in WINE, but that was late last year (2012).1 point
-
Hello, are you aiming to add support for extended Granny custom GR2 Files? I believe that with the info curiosity added and since the granny structure has been the same since ever, It would not be a big deal to add the plugin for this? I mean comparing of doing backward compatibilities with complex issues like the one you do right now...? Here is what the man did and we finished the project: Also some info that this change works with other clients aswell: I'm asking since I allready released some custom gr2 mobs to download here, and, asking the members here everytime to patch their clients manually is not that good ;o1 point
-
pvp_n_4-5 mapflag restricted 7 prontera,127,212,0 script Emperium Breaker Test 1288,{ set .@gm, getgmlevel(); explode( .@b$, $empbrk_record$, "|" ); // Display records // --------------- mes "^FF0000~~ Emperium Breaker Test ~~^000000"; mes "Breaker Top 5 :"; if( !getarraysize( .@b$ ) ) mes "^777777*empty*^000000"; for( set .@i, 0; .@i < getarraysize( .@b$ ); set .@i, .@i + 1 ) mes "^777777"+ ( .@i + 1 ) +"- ^5050A0"+ .@b$[ .@i ] +"^000000"+ callsub( L_time_, $empbrk_record[ .@i ] ); if( empbrk_record ) { mes "______________________________"; set .@rec$, callsub( L_time_, empbrk_record ); mes "Your Own Record:"+ .@rec$; } next; mes "^FF0000~~ Emperium Breaker Test ~~^000000"; mes "Would you like to try a new record?"; if( empbrk_record ) { mes "______________________________"; mes "Your Own Record:"+ .@rec$; } next; menu "^777777~ Yes^000000", -, ( empbrk_record ? "^777777~ Reset my record^000000" : "" ), L_resc, ( .@gm > 98 && $empbrk_record$ != "" ? "^777777~ [ GM ] Reset all^000000" : "" ), L_reset, ( .@gm > 98 ? "^777777~ [ GM ] Reset Rooms^000000" : "" ), L_emptyrooms, "^777777~ Exit^000000", L_exit; deletearray .arena$; // Area arena for getareausers // --------------------------- setarray .@A1, 94,128,105,139; setarray .@A2, 60,94,71,105; setarray .@A3, 94,60,105,71; setarray .@A4, 128,94,139,105; mes "^FF0000~~ Emperium Breaker Test ~~^000000"; for( set .@i, 1; .@i <= 4; set .@i, .@i + 1 ) { if ( getareausers("pvp_n_4-5", getd( ".@A"+ .@i +"[ 0 ]" ), getd( ".@A"+ .@i +"[ 1 ]" ), getd( ".@A"+ .@i +"[ 2 ]" ), getd( ".@A"+ .@i +"[ 3 ]" ) ) ) mes "Emp n° ^0000DF"+ .@i +" ^FF0000 <Busy>^000000"; else { mes "Emp n° ^0000DF"+ .@i +" ^00A000 <Free>^000000"; set .arena$[ .@i -1 ],"^0000DFRoom n°"+ .@i +"^000000"; } } next; getmapxy( @mpempbrk$, @empbrkx, @empbrky, 0 ); // menu arena // ---------- set .@a, select( .arena$[0], .arena$[1], .arena$[2], .arena$[3], "Quit" ); if( .@a == 5 ) close; // x, y for user warp / arena ; x1, y1, x2, y2... // ---------------------------------------------- setarray .@xy[ 2 ], 99, 128, 68, 99, 100, 68, 130, 99; // select arena is empty ? // ----------------------- if ( !getareausers("pvp_n_4-5", getd( ".@A"+ .@a +"[ 0 ]" ), getd( ".@A"+ .@a +"[ 1 ]" ), getd( ".@A"+ .@a +"[ 2 ]" ), getd( ".@A"+ .@a +"[ 3 ]" ) ) ) { warp "pvp_n_4-5", .@xy[ .@a * 2 ], .@xy[ .@a * 2 + 1 ]; killmonster "pvp_n_4-5","EmpBrk#"+ .@a +"::OnThisMobDeath"; donpcevent "EmpBrk#"+ .@a +"::OnEmpBreak"; sc_end SC_ALL; } else mes "Room is now BUSY"; close; // reset top 5 // ----------- L_reset: mes "^FF0000~~ Emperium Breaker Test ~~^000000"; mes "Are you sure to reset official record ?"; if( select( "Yes", "No" ) -1 ) close; mes "All records had been reset."; set $empbrk_record, 0; set $empbrk_record$, ""; close; // reset your record ( + reset record if in top 5 ) // ------------------------------------------------ L_resc: mes "^FF0000~~ Emperium Breaker Test ~~^000000"; mes "Are you sure to reset your record?"; if( select( "Yes", "No" ) -1 ) close; if( $empbrk_record$ != "" ) { explode( .@b$, $empbrk_record$, "|" ); for( set .@i, 0; .@i < getarraysize( .@b$ ); set .@i, .@i + 1 ) if( .@b$[ .@i ] == strcharinfo(0) ) { deletearray .@b$[ .@i ], 1; deletearray $empbrk_record[ .@record ], 1; } set $empbrk_record$, implode( .@b$, "|" ); } mes "Your record has been reset."; set empbrk_record, 0; close; // warp all people out of arena // ---------------------------- L_emptyrooms: mapwarp "pvp_n_4-5","prontera",0,0; L_exit: close; // return time of record ( min sec ms ) // ------------------------------------ L_time_: set .@time, getarg(0); set .@m, .@time / 60000; set .@time, .@time - ( .@m * 60000 ); set .@s, .@time /1000; set .@time, .@time - ( .@s * 1000 ); set .@text$, " ^000080"+ .@m +"^000000m ^000080"+ .@s +"^000000s ^000080"+ .@time +"^000000ms"; return .@text$; } pvp_n_4-5,99,125,0 script EmpBrk#1 -1,2,1,{ OnTouch: killmonster "pvp_n_4-5", strnpcinfo(0) +"::OnThisMobDeath"; mes "^FF0000~~ Emperium Breaker Test ~~^000000"; mes " "; mes "You cannot exit from small square."; close2; stopnpctimer; set getd( "$@someonegotin"+ strnpcinfo(2) ), 0; warp .map_npc$, .x_npc, .y_npc; end; // Spawn emp // --------- OnEmpBreak: copyarray .@xy[ 0 ], getd( ".xy" + strnpcinfo(2) +"[ 0 ]" ), 6; sleep 3000; if ( !getareausers("pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ] ) ) end; areaannounce "pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ],"Let's ready to break the Emperium",0; sleep 5000; if ( !getareausers("pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ] ) ) end; for( set .@i, 5; .@i > 0; set .@i, .@i - 1 ) { areaannounce "pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ], (.@i +""),0; sleep 1000; } if ( !getareausers("pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ] ) ) end; areaannounce "pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ],"GO!!!",0; monster "pvp_n_4-5", .@xy[ 4 ], .@xy[ 5 ],"Emperium",1288,1,"EmpBrk#"+ strnpcinfo(2) +"::OnThisMobDeath"; initnpctimer; end; OnThisMobDeath: copyarray .@xy[ 0 ], getd( ".xy" + strnpcinfo(2) +"[ 0 ]" ), 6; stopnpctimer; set .@time, getnpctimer( 0,"EmpBrk#"+ strnpcinfo(2) ); if ( .@time < empbrk_record || !empbrk_record ) { areaannounce "pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ],"New Own Record!!!",0; set empbrk_record, .@time; } // set top 5 record ; GM level > 50 excluded // ----------------------------------------- if( getgmlevel() < 50 ) { if ( .@time < $empbrk_record[ 0 ] && !$empbrk_record[ 0 ] ) { areaannounce "pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ],"New Official Record!!!",0; announce strcharinfo(0)+" is now the NO. 1 Emperium Breaker!!",0; } explode( .@b$, $empbrk_record$, "|" ); if( $empbrk_record$ == "" ) set .@no_mark, 1; else { for( set .@i, 0; .@i < 5; set .@i, .@i + 1 ) { if( .@b$[ .@i ] == strcharinfo(0) ) { if( .@time < $empbrk_record[ .@i ] ) { deletearray .@b$[ .@i ], 1; deletearray $empbrk_record[ .@i ], 1; set .@no_mark, 1; } else set .@no_mark, 0; break; } else if( .@time < $empbrk_record[ .@i ] || !$empbrk_record[ .@i ] ) set .@no_mark, 1; } } } if( .@no_mark ) { for( set .@i, 0; .@i < 5; set .@i, .@i + 1 ) if ( .@time < $empbrk_record[ .@i ] || !$empbrk_record[ .@i ] ) { if( .@i != 4 ) { copyarray .@b$[ .@i+1 ], .@b$[ .@i ], 4 - .@i; copyarray $empbrk_record[ .@i+1 ], $empbrk_record[ .@i ], 4 - .@i; set .@b$[ .@i ], strcharinfo(0); set $empbrk_record[ .@i ], .@time; } else { set .@b$[ getarraysize( .@b$ ) -1 ], strcharinfo(0); set $empbrk_record[ getarraysize( .@b$ ) -1 ], .@time; } set $empbrk_record$, implode( .@b$, "|" ); break; } } set .@m, .@time / 60000; set .@time, .@time - (.@m * 60000); set .@s, .@time /1000; set .@time, .@time - (.@s * 1000); areaannounce "pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ],"Your time is "+ .@m +"m "+ .@s +"s "+ .@time +"ms",0; sleep 2000; // Debug : warp 20 min later if afk // -------------------------------- OnTimer1200000: areawarp "pvp_n_4-5", .@xy[ 0 ], .@xy[ 1 ], .@xy[ 2 ], .@xy[ 3 ], .map_npc$, .x_npc, .y_npc; stopnpctimer; end; OnInit: getmapxy( .map_npc$, .x_npc, .y_npc, 1, "Emperium Breaker Test" ); // set area for announce + x, y to spawn emp // ----------------------------------------- switch( strnpcinfo(2) ) { case 1: setarray .xy1, 94, 128, 105, 139, 100, 134; break; case 2: setarray .xy2, 60, 94, 71, 105, 65, 99; break; case 3: setarray .xy3, 94, 60, 105, 71, 99, 65; break; case 4: setarray .xy4, 128, 94, 139, 105, 134, 99; } end; } pvp_n_4-5,74,99,0 duplicate(EmpBrk#1) EmpBrk#2 -1,1,2 pvp_n_4-5,100,74,0 duplicate(EmpBrk#1) EmpBrk#3 -1,1,2 pvp_n_4-5,125,100,0 duplicate(EmpBrk#1) EmpBrk#4 -1,1,21 point
-
I don't know of any database converters, though. Do you have one? o:1 point
-
Had some time to look into this, since I was sick. The openning.bik sample (bleach opening to be exact) certainly works in older clients, but does not in newer ones for some reason. There is actually no reason to diff anything to make openning.bik to work in general. The client auto-plays it, if it finds one, but only once. The fact, that it played the bink video is recorded in registry as BINKMODE setting (non-existing/0 = not played, 1 = played). Client that do have the login window also receive an additional button, that allows the video to be replayed. Newer clients start the video, but immediately cancel it so that it does not even appear. So basically when I find what's wrong, it won't become a plug-in to read opening.bik, but a fix to the bink player code. Edit #1: New clients apparently have the frame rendering code portion taken out, so the code actually behaves like: If there's time to render a frame, quit playing the video instead.1 point
-
What you allways need are the tools to "import the models and animation, from your game to 3ds max" <--- this is the hard part and it depends of what game you are talking too. However you can for ex. look if there are good people who allready released the models you are looking for in max or any other 3d format. You will understand better at the time I do the guide of custom gr2 Back to the release: I'm glad of this big sucess guys!. Now I'm considering about adding an extra mob in appreciation of your feedback. Perhaps you can afford 1 day more of the time expected for this?1 point
-
hahaha wala lang para kumple2 na dba? ) regarding the two guides, well dlwa yan dba? ung isa for windows...actually it is used for test servers on localhost( sa pc mo ) ung isa naman sa linux ( Mas prefered kc ang linux for vps os pra sa RO )1 point
-
Please don't force users to register on your forums just to see a download link. It makes it look like you're just trying to increase your forum's registration count.. or trying to grab their Facebook info.1 point
-
OnInit: bindatcmd "banip",strnpcinfo(3)+"::OnBan"; bindatcmd "unbanip",strnpcinfo(3)+"::OnUnBan"; end; Wouldn't this make the commands usable by anyone, since you didn't set an atcommand_level or charcommand_level? and there are no GM level/group checks within the script. *bindatcmd "command","<NPC object name>::<event label>"{,<atcommand level>,<charcommand level>};1 point
-
Not really .-. http://rathena.org/b...2-06-18-client/ http://rathena.org/b...izard-quagmire/ Clients older than 2012-04-18 have this problem Well, it's an client error.. so im reporting it .-. Might be rA-only problem, I'm not able to reproduce this on eA. The first bugreport actually has a confirmation ratio of 0/6, basically a "it's just you". And 2012-07-02 is not "Clients older than 2012-04-18". Well, it's an client error.. so im reporting it .-. It's not WeeDiffGen related, this topic is not general client help-desk just because I'm following it. ragnazorg: In slow progress, though it looks like a completely pointless diff to me.1 point
-
1 point
-
1 point