Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/14/13 in all areas

  1. Isn't that one of there reasons people play in private servers for? To have a completely unique RO experience, if people wanted the original they'd just play in the officials. iRO is free to play. No matter how much argument is made about this or how much logical sense there is to it..It's not probable that a majority of the community is going to support it. People like having options.
    6 points
  2. Okay, a new version is out, as there was a serious bug which could cause the program to crash randomly with no specific reason, since it was addressing a deleted memory block. New download, same link: Download Here Password is still "www.ricky92.com". Changes in this version: Fixed addressing of deleted memory block, causing random crashes or strange exporter name in the output GR2 Added check for Bink1 texture format, which is unsupported in Granny 2.1.0.5. If any textures of that kind are found, the program will print a warning message. Known bugs: Automatic conversion of GR2 files which have a Runtime Type Tag different from 0x80000015 will fail. It should not be the case, as the granny engine should be able to work out the conversion automatically, or at least give a non-working (yet valid) gr2 file as an output. I'll try to investigate further when I have time (which probably means in a few months, lol) I don't have the gr2 format completely sorted out, as I still rely on the original DLLs to load the file in memory and write the converted output. I have planned to create a standalone, cross-platform library to do this, so that the converter could work even on Linux or Mac OS X. It's just a plan and I will not be able to work it out in the near future, though, as I don't have that much free time at all.
    4 points
  3. View File GRF Editor Hey everyone, This is a GRF tool I started to develop for my own personnal use, but I thought I'd share it since I've upgraded the UI. Its primary goal is to be easy to use while offering a wide variety of options and customizations. The software is quite stable and can handle large operations easily. How to install Download the zip archive provided from the download link at the bottom of this description or directly from there : http://www.mediafire.com/?aflylbhblrzpz0h Install the application with GRF Editor Installer.exe; if you are missing a .NET Framework you will be prompted to download it. Once you are done, you can start the program from the link on your desktop. Key features Overall speed is faster (or at least equal) than any GRF tool. Common operations : add, delete, merge, extract, preview, save. Undo and redo for any operation. It can open any GRF file. Clean and very interactive interface. Saving formats supported : 0x200, 0x103 and 0x102 (through the Settings page) and conversion to the Thor format. Instant filter and search options (example : "map .gat"). File association and context menus integration for .grf, .gpf, .rgz and .thor (through the Settings page). Can rebuild separated images into one file easily. Drag and drop (with the ALT key, can be modified in the Settings page). This is a big part of the software; most of the items can be moved around within the application itself or from/to Windows Explorer. Tools Sprite editor : a simple sprite editor with powerful features. Semi-transparent images can be added, you can easily change the order or replace images, etc. This tool can convert images in the wrong type by showing you multiple solutions (merging a new palette, dithering the image by using current palette, using the closest color, and a few more). Grf validation : allows you to validate a GRF with multiple settings. It can detect corrupted GRF entries, invalid sprites, empty files, non-GRF files, duplicate files and a lot more. Flat maps maker : generates flat maps from .gat and .rsw files. Useful to generate WoE maps or to fasten up the loading time. Patch maker : generates a GRF patch based on two different GRFs. Hash viewer : shows the hash code (both CRC32 and MD5) for files. Image converter : converts an image to any format requested (BMP, PNG, JPG, TGA). GrfCL : used to create batch files (.bat) which can automate tasks on GRF files. See the content in GrfCL.rar in the download for more information. This tool can be customized from the sources as well. Palette recolorer : creates new sprites by changing their colors (this tool is now deprecated). Client database editor : allows modifications of the database client files (txt and lua) with easy and simple tools. Work in progress. Grf encryption The encryption feature has been enabled again. It's similar to what it used to be and it has been tested on client versions ranging from 2012-08-01 to 2014-02-05. Some error messages will be displayed if necessary. If you have an issue, copy the error message (with the code, if there's one) and send me the client executable with the cps.dll file generated by GRF Editor. There shouldn't be compatibility issues anymore though! Thor files Thor files are patches used by Thor Patcher ( http://thor.aeomin.net/ ). Because of their similarity with the GRF file structure, they have been integrated within GRF Editor. The primary utility of this feature is that it allows you to add encrypted files to a Thor patch. All the other options can be achieved by using Thor Maker. You'll find the necessary steps below, but test your patches before sending them off to players (I've done a lot of testing on my end, but better be safe). If you're using SecureGRF, then make a new GRF, add the files and encrypt it. In GRF Editor, open the encrypted GRF you just made, use "Save as" and name the new file with a .thor extension. That's it, if you want to change the output directory, click on the root node of the project and select the tab "Container options". You can select the output mode and the GRF to merge the patch with. Simply save again if you change these properties. If you're using GRF Editor's encryption, then make a new Thor file (File > New > New Thor) and add the files you want to patch it with. Right-click on the files you want to encrypt and use Encryption > Encrypt. Technical stuff Requires .Net Framework 3.5 (SP1) Client Profile to run (3.5 or more will work as well). Automatically converts file name encoding to their proper values (you can change the encoding). Data virtualization is used as much as possible to preview files, meaning the files aren't completely loaded. Right-clicking an item will bring up the available options with that file. Preview file formats : txt, log, xml, lua, lub, bmp, png, tga, jpp, db, ebm, pal, gnd, rsw, gat, rsm, str, spr, act, imf, fna and wav. Services are "crash ready", meaning that you will be warned about a failed operation and no work will be lost (the application won't close and crash). It tries to continue operating even if it meets unsual conditions. Operations can be cancelled by clicking on the button near the progress bar. The warning level can be changed to avoid messages like "Please select a folder first." When prompted with an error, use Ctrl-C to copy the current dialog's content. Some screenshots! 1) Previewing an act file, while showing the search feature 2) Preview of a model file (rsm) 3) Preview of GrfCL with the MakeGrf command 4) Preview of maps 5) Preview of Grf validation 6) Search feature (press Ctrl-F or Ctrl-H to bring up within a text editor) Got a feedback? I'd gladly hear you out and fix issues you have with the program. Submitter Tokei Submitted 01/11/2013 Category GRF Files Video Content Author Tokeiburu  
    2 points
  4. File Name: Account Bound Items File Submitter: Xantara File Submitted: 16 Sep 2012 File Category: Source Modifications Content Author: Xantara, Zephyrus, RO Information This system would allow (non-stackable, non-pet-egg) items to be bounded onto a player's account. This means that the bounded items cannot be traded, dropped, auctioned, nor mailed. But, they can be storaged so that it can be shared among the characters of that account. Features: - Item coloration to distinguish bounded items and non-bounded ones (see screenshot) - Script commands (getitembound, getitembound2, equipisbounded) to create and check for bounded items - At commands (@itembound, @itembound2) to create bounded items - New group permission (can_trade_bounded) to allow the group to distribute these bounded items if enabled (mostly just for High GMs / Admins) - Changes to the SQL files to track bounded items. This would effect cart, inventory, and storage databases. Tested on rAthena revision 17294 (using v1.5.1). Script Command Documentations At Commands Documentations Known Issues - When moving a bounded item to storage, item colouration is gone. However, re-opening the storage or re-logging will fix this issue.1 - When moving a bounded item to the cart inventory, item colouration is gone. However, re-logging will fix this issue.1 1 If you are able to find these packets (ie. PACKET_ZC_ADD_ITEM_TO_STORE3 and/or PACKET_ZC_ADD_ITEM_TO_CART3), please let me know! Credits Created by @Xantara Popularized by Zephyrus Idea by Ragnarok Online License This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Like my work? Rate/vote this download Rep up my support topic post Do not mirror without my consent. Click here to download this file
    2 points
  5. since I discover this OnPCStatCalcEvent I keep bringing it up in scripting section and I start to get sick I have to update this patch every single time when I comply a request with it http://rathena.org/board/topic/76088-skill-in-map/#entry166271 http://rathena.org/board/topic/77185-function-changelook-random-viewid/#entry171792 and a few unused like http://rathena.org/board/topic/74206-close-drop-certain-item-on-certain-map/#entry155980 http://rathena.org/board/topic/72989-capture-the-flag-woe-script/#entry150735 I believe this mod is very very helpful for example, in this topic - script kdfjshksfjhksdfj -1,{ OnPCStatCalcEvent: bonus2 bExpAddRace,10,100; // PS: ... can someone confirm this exp is getting more than usual ? bonus2 bExpAddRace,11,100; end; }
    1 point
  6. Im not EXPERT extracting scripts but i will try to extract Port Malaya, i put this in "Proyects" because it is gonna be SLOW(I think) (: so i will post here the updates of the NPC's when i get to lvl 100+ (Rune Knight) ANY support is welcome(Equip/Zeny/1 Potato?) wait for updates ! Port Malaya is designed for players of level 100+ so im getting to that lvl to extract scripts without any problem GitHub Repostory UPDATES After 5 days finally im Rune Knight. Quests apparently are the same. I just noticed of the Instance requeriments.
    1 point
  7. Author : Goddameit Idea : http://bit.ly/117PfO6 This command can make a temporary pet, after time run out pet won't be used anymore. Command : callfunc "rentPet",<pet id>,<day>,<hour>,<minute>,<second>; Sample : rent a poring for 99 days 43 hours 91 minutes 13 seconds prontera,150,180,4 script Test 100,{ callfunc "rentPet",1002,99,43,91,13; end; } Dwonload : SQL : http://pastebin.com/....php?i=1u2JmtgJ Script : pet_rental.txt PS : This script maybe lead to server little lag. PS : Not 100% sure this work well. PS : This script can be more efficiently but don't ask me for this (I don't care this ).
    1 point
  8. First of all download Alexandria's Renewal Data Folder EXAMPLE: [ACCESSORY_IDs.ACCESSORY_BUNNYBAND] = "_�䳢�Ӹ���", HOW TO ADD: [ACCESSORY_IDs.ACCESSORY_HEADGEARNAME] = "_SPRITENAME", <<<<---- UNDERSCORE+SPRITENAME +COMMA don't forget it! We're now done on how to add the "SPRITE"... next step.... goto: luafiles514/lua files/data info/accessoryid.lua EXAMPLE: ACCESSORY_BUNNYBAND = 15, HOW TO ADD: ACCESSORY_HEADGEARNAME = ViewID, <<--- + comma.. ----///// we need to use the ViewID later! and also the HEADERGEARNAME We're now done on how to add the "ViewID" :::NEXT STEP::: File to edits: idnum2itemdesctable.txt idnum2itemdisplaynametable.txt idnum2itemresnametable.txt ABOUT THE: idnum2itemdesctable.txt num2itemdesctable.txt I KNOW! YOU ALREADY KNOW HOW TO ADD/EDIT THAT ONE! 1st STEP: idnum2itemdisplaynametable.txt 2214#Bunny_Band# how to add: ITEMNUMBER#CLIENTITEMNAME# 2nd STEP: idnum2itemresnametable.txt 2214#�䳢�Ӹ���# how to add: ITEMNUMBER#SPRITENAME# <<<----so the sprite name! you need to remove the UNDERSCORE for it... 3rd STEP: num2itemdisplaynametable.txt ITEMNUMBER#SPRITENAME# <<<----so the sprite name! you need to remove the UNDERSCORE for it... how to add: ITEMNUMBER#HAT# --------------- 4th STEP: num2itemresnametable.txt 2214#�䳢�Ӹ���# how to add: ITEMNUMBER#SPRITENAME# Server Side: go to your db/item_db.txt or item_db2.txt 2214,Bunny_Band,Bunny Band,5,20,,100,,2,,0,0xFFFFFFFF,31,2,256,,0,1,15,{ bonus bLuk,2; },{},{} how to add: 2214,Bunny_Band,Bunny Band,5,20,,100,,2,,0,0xFFFFFFFF,31,2,256,,0,1,ViewID,{ bonus bLuk,2; },{},{} ---- remember about the ViewID above? specied your own id!lol And for the finale steps Download luac5.1.4 then download notepad++ open it click file>save as>batch>file type as .bat after save it this will look alike as you notice there is already accessoryid.lua and accname.lua meaning withtin that folder those .lua will convert in .lub even how many .lua's you got in that folder. so open the batch this will pop up after opening it after that press any key as what cmd said then poop the two lua file it become lub then you are done put the .lub in your luafiles514 > lua file > datainfo and you are done NOTE: You have to make sure that you have latest data folder!!!! to avoid other errors
    1 point
  9. Add if( killedrid > 3000000) end;
    1 point
  10. Isn't that one of there reasons people play in private servers for? To have a completely unique RO experience, if people wanted the original they'd just play in the officials. iRO is free to play. No matter how much argument is made about this or how much logical sense there is to it..It's not probable that a majority of the community is going to support it. People like having options. It was rejected a few(?) times previously; the one I moved was not the first of these suggestions. I personally love that people can mix and match however they choose and setup whatever style server they like; it definitely adds more options to a 10+ year old game now. Personally, I'd be against the removal of pre-renewal or even a branch split, not to mention we have more pressing issues to worry about (like Renewal ATK =p). This would/could be a good idea but considering the history of *athena it will never work! Branches are almost always brushed off to the side to the point that no one cares for them anymore. People would just develop Renewal and Pre-RE would rot away until it breaks compatibility and then everyone would be too lazy to fix it because it would be too much work (even if it is a simple push/pull request).
    1 point
  11. 1 point
  12. Isn't it too intensive for the server to be official ? ( /str+ 255 will run the script 255 times, no ?)
    1 point
  13. Try to replace this : .sc*5; Into : .@coins Actually im still downloading my test server. And cannot try this script. Im bored reading script.
    1 point
  14. Fusionado todo en un post (editado el primer post con toda la información que Ryu puso) Por el momento como puse lo dejo sin PIN, en observación. Buena suerte.
    1 point
  15. yeah. dont post the problem we dont know. haha. post a ss plz
    1 point
  16. //============================================= //== Event Manager ====== //== Version: ================================= //== 1.0 //== by Zelos: ================================ //== //============================================= prontera,165,155,2 script Event manager 804,{ mes "[Event manager]"; mes "Hello "+StrCharInfo(0)+"!"; mes "I'm the Event Manager."; mes "You give me Event Coins, i reward you. It's that simple!"; next; switch(select("1 - Tell me more about Event coins and rewards","2 - I want to convert my Event Coins","3 - I want to receive my rewards","4 - Well,it was nice meeting you")){ case 1: mes "[Event Manager]"; mes "There are 3 types of Event Coins you may win from Events:"; mes " - "+getitemname(8032); mes " - "+getitemname(8033); mes " - "+getitemname(8034); next; mes "[Event manager]"; mes "The exchange rates between Event Coin are:"; mes " 1 Golden Coin = 5 Silver Coins"; mes " 1 Silver Coin = 5 Bronze Coins"; next; mes "[Event mMnager]"; mes "Here is the list rewards you may receive from your Event Coins:"; mes "( Note that in this list, we have: GC = Golden Coins, SC = Silver Coins and BC = Bronze Coins )"; next; mes "[Event Manager]"; mes "1.[10000] Zeny for 1 BC]"; mes "2.[10]Yggdrasil Seeds for 2 BC]"; mes "3.[10]Yggdrasil Berry for 2 SC]"; mes "4.""; mes "5.""; close; case 2: mes "[Event Manager]"; mes "Remeber the conversion rates:"; mes " 1 Golden Coin = 5 Silver Coins"; mes " 1 Silver Coin = 5 Bronze Coins"; mes "so, which type of conversion would you like to do?"; next; switch(select("1-Gold Coin => Silver Coin","2-Silver Coin => Bronze Coin","3-Bronze Coin => Silver Coin","4-Silver Coin => Golden Coin","5-Nothing for now...")){ case 1: mes "[Event Manager]"; mes "How many Golden Coins you want to convert?"; input .sc; next; if(countitem(8032) < .sc){mes "[Event Manager]";mes "You don't have enough Golden Coins.";close;} delitem 8032,.sc; mes "[Event Manager]"; mes "Thank you for choosing RagnaRebirth that luck be with you in future events, and you can win many Coins, and exchange with beautiful items."; getitem 8033,.sc; close; case 2: mes "[Event Manager]"; mes "How many Silver Coins you want to convert?"; input .sc; next; if(countitem(8033)<.sc){mes "[Event Manager]";mes "You don't have enough Silver Coins.";close;} delitem 8033,.sc; mes "[Event Manager]"; mes "Thank you for choosing RagnaRebirth that luck be with you in future events, and you can win many Coins, and exchange with beautiful items."; getitem 8034,.sc; close; case 3: mes "[Event Manager]"; mes "How many Silver Coins do you want to get?"; input .sc; next; if(countitem(8034<(.sc*5)){mes "[Event Manager]";mes "You don't have enough Bronze Coins.";close;} delitem 8034,(.sc*5); mes "[Event Manager]"; mes "Thank you for choosing RagnaRebirth that luck be with you in future events, and you can win many Coins, and exchange with beautiful items."; getitem 8033,.sc; close; case 4: mes "[Event Manager]"; mes "How many Golden Coins do you want to get?"; input .sc; next; if(countitem(8033<(.sc*5)){mes "[Event Manager]";mes "You don't have enough Silver Coins.";close;} delitem 8033,(.sc*5); mes "[Event Manager]"; mes "Thank you for choosing RagnaRebirth that luck be with you in future events, and you can win many Coins, and exchange with beautiful items."; getitem 8032,.sc; close; case 5: mes "[Event Manager]"; mes "Ok, no problem."; close; } case 3: mes "[Event Manager]"; mes "Here is the rewards you may receive from your Event Coins:"; mes "( Note that in this list, we have: GC = Golden Coins, SC = Silver Coins and BC = Bronze Coins )"; next; switch(select("1.[10000] Zeny for 1 BC","2.[10]Yggdrasil Seeds for 2 BC","3.[10]Yggdrasil Berry for 2 SC")){ case 1: mes "[Event Manager]"; mes "You want to trade 1 BC for 10000 Zeny?"; next; switch(select("yes","no")){ case 1: if(countitem(8034) < 1) goto nocoin; delitem 8034,1; mes "[Event Manager]"; mes "Thank you for choosing RagnaRebirth that luck be with you in future events, and you can win many Coins, and exchange with more zeny."; set Zeny,Zeny+10000; close; case 2: mes "[Event Manager]"; mes "Ok, back when you want to change something"; close; } case 2: mes "[Event Manager]"; mes "You want to trade 2 BC for 10 Ygg Seed?"; next; switch(select("yes","no")){ case 1: if(countitem(8034) < 2) goto nocoin; delitem 8034,2; mes "[Event Manager]"; mes "Thank you for choosing RagnaRebirth that luck be with you in future events, and you can win many Coins, and exchange with more items."; getitem 608,10; close; case 2: mes "[Event Manager]"; mes "Ok, back when you want to change something"; close; } case 3: mes "[Event Manager]"; mes "You want to trade 2 SC for 10 Ygg Berry?"; next; switch(select("yes","no")){ case 1: if(countitem(8033) < 2) goto nocoin; delitem 8034,2; mes "[Event Manager]"; mes "Thank you for choosing RagnaRebirth that luck be with you in future events, and you can win many Coins, and exchange with more items."; getitem 607,10; close; case 2: mes "[Event Manager]"; mes "Ok, back when you want to change something"; close; } case 4: mes "[Event Manager]"; mes "Ok, back when you want to change something"; close; } } nocoin: mes "[Event Manager]"; mes "You don't have enough Event Coins to obtain this reward"; close; }
    1 point
  17. Weekend Double Exp Event: - script FloatingRates -1,{ OnInit: OnClock0001: if(gettime(4)==6 || gettime(4)==0 ) { set .br,getbattleflag("base_exp_rate")*2; set .jr,getbattleflag("job_exp_rate")*2; setbattleflag("base_exp_rate"), .br; setbattleflag("job_exp_rate"), .jr; atcommand "@reloadmobdb"; end; } if(gettime(4) == 1) { announce "Weekend Exp Event is finished",bc_all,0xFF6060; atcommand "@reloadbattleconf"; atcommand "@reloadmobdb"; } end; OnMinute02: if(gettime(4)==6 || gettime(4)==0 ) { announce "Weekend Exp Event(Base:"+.br/100+"x, Job:"+.jr/100+"x) is active!!",bc_all,0xFF6060; } end; }
    1 point
  18. Hello Zelos, Do you have the screenshots of the error? Kindly post some screenshots for fast assistance.
    1 point
  19. my server rates is 5x who i can configure this script part: set $@brate,rand(100,150); // Change the value here for your Base Experience set $@jrate,rand(100,150); // Change the value here for your Job Experience 100 and 150 ? I have to modify? Check this thread to help you. 100 = 1x 150 = 1.5x
    1 point
  20. Oh, well the warning is (presumably) because: struct script_code { int script_size; unsigned char* script_buf; struct linkdb_node* script_vars; }; was changed to struct script_code { int script_size; unsigned char* script_buf; struct DBMap* script_vars; }; A change made in r15997 by Epoque to "make use of the DBMap* structure for storing variables (for Ind <3)" (see here). So my thoughts are that simply switching out linkdb functions with idb functions should (hopefully) solve your warnings, and change the diff to support the current revision. Unfortunately I don't have too much time to look into and test it myself, but I don't think I'm missing anything. Also, the area_size isn't capped to 14 is it?
    1 point
  21. Like Emistry wrote in this script if( rand(100) < 50 ) getitem 969,1; Adjust it in your script, it's very easy. Disabled Yggdrasil Berry's effect on the map ? Option 1 : In your db/re/item_db.txt folder replace 607,Yggdrasilberry,Yggdrasil Berry,0,5000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ percentheal 100,100; },{},{} by 607,Yggdrasilberry,Yggdrasil Berry,0,5000,,300,,,,,0xFFFFFFFF,7,2,,,,,,{ if( strcharinfo(3) != "guild_vs5" ) percentheal 100,100; },{},{} Option 2 : You have got all the informations in this link http://rathena.org/wiki/Mapflag#restricted.txt replace //-- Trigger auto event OnMinute16: announce "Gold Room : I will open my door in One ( 1 ) minute! Head your way to Crystilia 85 , 90.",0; sleep 1000 * .willopenin; //-- Gold room open hideoffnpc "Gold Room"; announce "Gold Room is open ! You have one minute to enter ! Only 8 player are allowed to enter !",0; sleep 1000 * .timeenter; //-- Gold room closed hideonnpc "Gold Room"; announce "Gold Room is close !",0; //-- 10 minutes before players will be warp initnpctimer; while( getmapusers( .Map$ ) ) { delwaitingroom; waitingroom "Countdown "+( 60 - ( getnpctimer(0) / 1000 ) )+" Seconds",0; sleep 1000; } delwaitingroom; end; OnTimer60000: mapannounce .Map$,"Time's Up !! You will be warped out right now..",0; mapwarp .Map$,"prontera",70,71; stopnpctimer; end; by //-- Trigger auto event OnMinute16: announce "Gold Room : I will open my door in One ( 1 ) minute! Head your way to Crystilia 85 , 90.",0; sleep 1000 * .willopenin; //-- Gold room open hideoffnpc "Gold Room"; announce "Gold Room : It is now open ! You have one minute to enter, Only 8 players are allowed to join !",0; //-- 1 minutes before players will be warp initnpctimer; while( 60 - ( getnpctimer(0) / 1000 ) > 0 ) { delwaitingroom; waitingroom "Countdown "+( 60 - ( getnpctimer(0) / 1000 ) )+" Seconds",0; sleep 100; } delwaitingroom; mapannounce .Map$,"Time's Up !! You will be warped out right now..",0; mapwarp .Map$,"prontera",70,71; stopnpctimer; //-- Gold room closed hideonnpc "Gold Room"; announce "Gold Room is now closed !",0; end; Your request will never finish XD
    1 point
  22. Привет. 1. При смене ехе файла кроме изменения пакетной версии и рекомпиляции ничего делать не нужно. 2. Нет, вместо локальных IP адресов устанавливаются внешние IP адреса той машины, на которой запускается эмулятор. 3. Файл содержит в себе пакеты для каждой пакетной версии. Если ты используешь ехе, например, 2012-04-10, то пакетная версия в mmo.h будет 20120410, а сами пакеты для этого ехе (если их нет в packet_db.txt) искать среди файлов здесь, после чего вставить в packet_db.txt и рекомпилировать сервер. 4. Патчеры на вики можно посмотреть. В основном патчи создаются с помощью GRF архиваторов, типа gryff или grf builder... 5. Ну если сервер реньювал, то достаточно пропатчить его с помощью rsu-kro-renewal-lite.exe. На сервере, как уже говорилось, должны быть установлены внешние IP адреса. Ну и более детальная настройка уже на твой вкус и цвет : рейты, команды и т.п. Ответов на твои вопросы здесь на форуме (и wiki) предостаточно, единственный минус - они все на английском.
    1 point
  23. The "Rate" is the initial rate (n / 100), "Rate Increment" is the rate gained in each deep level, "Rate Limit" is the maximum rate for that item. ie: Definition: - Rate: 100 (1%) - Rate Increment: 10 - Rate Limit: 350 (3.5%) - Final Rate = Rate + (Rate Increment * Deep), Capped at Rate Limit If Deep = 11 > Final Rate = 100 + (10 * 11) > Final Rate = 210 (2.1%) > Final Rate > Rate Limit? No If Deep = 32 > Final Rate = 100 + (10 * 32) > Final Rate = 420 (4.2%) > Final Rate > Rate Limit? Yes >> Final Rate Capped at 350 (3.5%)
    1 point
  24. okay Revised! ^^ What Errors? can you show us any screen shots?
    1 point
  25. First.. Diff your Client with WDGRemoveLoginAutoClose 2nd.. Run as admin he dont got a problem whit auto close after wrong passwort , his client dont even starts up ^^
    1 point
  26. First.. Diff your Client with WDGRemoveLoginAutoClose 2nd.. Run as admin
    1 point
  27. lets start from begining. you start your exe under Win7 and the window will auto close after you startet it? this mostly happens due a wrong file in the GRF or Data folder . Are you using a DATA FOLDER exe ? or a GRF exe. if you are using a READ DATA FOLDER FIRST exe , and droped all you stuff in the data folder , check the txt while where you changed something.
    1 point
  28. But, it is still official, and it is still Gravity, and rAthena is following iRO, against your words saying there is no official option for pre-renewal and there is no following for iRO. Why would you like to banish pre-renewal game mode? Peopleperson49 at least says to split pre-renewal from renewal mode to "optimise" rAthena's developers work (wich is not guaranteed under somebody gives the needed research information in bug tracker section). You are asking for complete removing and banish pre-renewal mode from rAthena, since "'r' from rAthena is for Renewal". In other words, you area saying "if you want to play pre-renewal mode search for other emulators". Removing pre-renewal from rAthena would split community and push out those players who likes pre-renewal content, players that also support it in all the ways. Also, would make those players to search for other options instead of rAthena, even instead of emulation, since there is an official and a very good option to play pre-renewal mode, Ragnarok Classic. I just see it: Player: "rAthena, I want to play pre-renewal mode, can you support me?" rAthena: "No, I don't support pre-renewal because 'r' in rAthena is for renewal" Player: "but, I want to play pre-renewal mooooode, please heeeelp mee" rAthena: "No, search for other options, go to official servers if you want to play Classic Experience" Ragnarok Classic server is a very good option to play, it is pre-renewal, it is free to play, it has the official way items and skills works, it has a good cash shop system, and also it is official... I like rAthena, and I'm starting to love it, because rAthena is making the unthinkable, merging renewal and pre-renewal content in the same emulator an also make it to coexist in harmony. I want to support that, i'm playing classic to give needed info in some bugs in pre-renewal skills. Why would you like to revert all that work and effort to finish a very suitable option to play? I don't think it is an enough reason just because "r" in rAthena is for renewal. This has been discussed in the past, i don't know why people hate pre-renewal mode
    1 point
  29. Here for you prt_in,58,55,5 script Blacksmithnhgfds 63,{ //- Price per refine / per equipment -- Refine Armor / weapon lvl 1... lvl 4 / other ? setarray .@price[0], 2000, 50, 200, 5000, 20000, 2000; //- ID material per equipment -- phracons ... setarray .@material[0], 985, 1010, 1011, 984, 984, 985; //- Safe limit per equipment setarray .@safe[0], 4, 7, 6, 5, 4, 4; //-- ID Ticket 100% -- 0 = disabled set .@TicketID, 7608; //-- Lucky Charm -- complete it as your content //- ID Lucky Charm -- ID 0 or comment = disabled option setarray .@Lcid[0], 0, 0; //- + % Success rate of Lucky Charm setarray .@Lcef[0], 10, 15; //- mes "[blacksmith]"; mes "I'm the Blacksmith."; mes "I can refine all kinds of weapons, armor and equipment, so let me"; mes "know what you want me to refine."; next; setarray .@position$[1], "^0000ffHead^000000","^0000ffBody^000000","^FF0000Left hand^000000","^FF0000Right hand^000000","^0000ffRobe^000000","^0000ffShoes^000000","Accessory 1","Accessory 2","^0000ffHead 2^000000","^0000ffHead 3^000000"; for( set .@i, 1; .@i <= getarraysize(.@position$); set .@i, .@i+1 ) { if( getequipisequiped(.@i) ) set .@menu$, .@menu$ + .@position$[.@i] + "-" + "[" + getequipname(.@i) + "]"; set .@menu$, .@menu$+ ":"; } set .@part, select( .@menu$ ); mes "[blacksmith]"; if( !getequipisequiped(.@part) ) { mes "You're not wearing"; mes "anything there that"; mes "I can refine."; emotion 6; close; } //Check if the item is refinable... if( !getequipisenableref(.@part) ) { mes "I don't think I can"; mes "refine this item at all..."; close; } //Check if the item is identified... (Don't know why this is in here... but kept it anyway) if( !getequipisidentify(.@part) ) { mes "You can't refine this"; mes "if you haven't appraised"; mes "it first. Make sure your"; mes "stuff is identified before"; mes "I can refine it."; close; } //Check to see if the items is already +10 if( getequiprefinerycnt(.@part) >= 10 ) { mes "I can't refine this"; mes "any more. This is as"; mes "refined as it gets!"; close; } set .@refineitemid, getequipid(.@part); // save id of the item set .@wp, getequipweaponlv(.@part); mes "Select an option."; //-- Safe : menu 0 -- one time : menu 1 -- leave : menu 2 .@mRn = select( (getequiprefinerycnt(.@part) < .@safe[.@wp]?"Refine to the safe limit, please.":""), "Refine one time.", "I've changed my mind..." ) - 1; //- if( .@mRn > 1 ) { next; mes "[blacksmith]"; mes "You said so... So be it."; close; } //-- Safe limit = 0 / one refine = 1 .@rcnt = ( .@mRn ? 1 : .@safe[.@wp] - getequiprefinerycnt(.@part) ); //- set .@refinerycnt, getequiprefinerycnt(.@part); //save refinery count mes "To refine this I need"; mes .@rcnt+" ^FF0000"+getitemname( .@material[.@wp] )+"^000000"; mes "and a service fee of ^0000ff" +(.@price[.@wp]*.@rcnt)+ " Zeny^000000."; mes "Do you really wish to continue?"; next; if( select( "Yes:No" ) == 2 ) { mes "[blacksmith]"; mes "Yeah..."; mes "There's no need to"; mes "rush. Take your time."; close; } if( getequippercentrefinery(.@part) < 100 ) { mes "[blacksmith]"; mes "Oh no! If I continue to"; mes "refine this, there's a risk it could"; switch( .@material[.@wp] ) { case 985: mes "be destroyed! That means that ^FF0000this equipment^000000, and ^FF0000any cards^000000 or special properties added to this armor, ^FF0000will be gone^000000."; break; default: mes "be destroyed, and you'd ^FF0000lose the weapon^000000, any ^FF0000cards in the weapon^000000,"; mes "or any added special properties."; break; } next; mes "[blacksmith]"; if( .@TicketID ) { mes "With one ^FF0000"+getitemname( .@TicketID )+"^000000."; mes "I can refine all item"; mes "to success 100%. And I"; mes "^FF0000NEVER LOST ANY ITEM^000000."; } mes "So, Do you still want to refine?"; next; if( select("Yes:No") == 2 ) { mes "[blacksmith]"; mes "I completely agree..."; mes "I might be a great refiner, but sometimes even I make mistakes."; close; } } if( (countitem(.@material[.@wp]) < .@rcnt) || (Zeny < .@price[.@wp]*.@rcnt) ) { mes "[blacksmith]"; mes "You don't seem to have"; mes "enough ^0000ffZeny^000000 or ^FF0000"+getitemname( .@material[.@wp] )+"^000000..."; mes "Go get some more. I'll be"; mes "here all day if you need me."; close; } //-- Menu Lucky charms if( .@safe[.@wp] - getequiprefinerycnt(.@part) <= 0 && .@Lcid[0] ) { .@mL$ = "Don't use Lucky charms:"; for( .@i = 0; .@i < getarraysize( .@Lcid ); .@i++ ) { if( .@Lcid[.@i] && countitem( .@Lcid[.@i] ) ) { .@mL$ = .@mL$ + "Use "+ getitemname( .@Lcid[.@i] ) +" ?:"; setarray .@ef[ getarraysize( .@ef ) ], .@Lcef[.@i]; setarray .@id[ getarraysize( .@id ) ], .@Lcid[.@i]; } } //-- Lucky charm choice (if exist) if( getarraysize( .@ef ) > 0 ) { .@c = select( .@mL$ ) - 1; //-- .@c == 0 --> continue if( .@c ) { .@BS = .@ef[ .@c-1 ]; mes "[blacksmith]"; mes "Using this, you would have +"+ .@BS +"% more chance of sucess."; mes "Are you sure ?"; next; if ( select( "Yes:No" ) -1 ) close; delitem .@id[ .@c-1 ], 1; } } } //-- end Lucky set Zeny, Zeny - .@price[.@wp]*.@rcnt; delitem .@material[.@wp], .@rcnt; if(getequipisequiped(.@part) == 0) { // hacker has removed the item (not changed, why?) mes "[blacksmith]"; mes "Look here... you don't have any Items on..."; close; } if(getequiprefinerycnt(.@part) != .@refinerycnt || getequipid(.@part) != .@refineitemid) { // hacker has changed the item mes "[blacksmith]"; emotion e_an; mes "Wait a second..."; mes "Do you think I'm stupid?!"; mes "You switched the item while I wasn't looking! Get out of here!"; close; } //-- fail if( getequippercentrefinery(.@part) + .@BS <= rand(100) ) { if( .@TicketID && countitem(.@TicketID) > 0 ) { set .@Drf, getequiprefinerycnt(.@part) - .@safe[.@wp]; for( .@i = 1; .@i <= .@Drf; .@i++ ) downrefitem .@part; message strcharinfo(0),"Ticket removed from your inventory."; delitem .@TicketID,1; } else failedrefitem .@part; mes "[blacksmith]"; emotion (!rand(5))?e_cash:e_omg; if( !(.@lose = rand(2)) ) { mes "OH! MY GOD!"; mes "Damn it! Not again!"; mes "I'm terribly sorry, but you know practice does make perfect."; mes "Um, right? Heh heh..."; } else if(.@lose == 1) { mes "Nooooooo!"; mes "It broke!"; mes "I-I'm sorry!"; } else { mes "Crap!"; mes "It couldn't take"; mes "much more tempering!"; mes "Sorry about this..."; } close; } //-- Success mes "[blacksmith]"; for( .@i = 0; .@i < .@rcnt; .@i++ ) successrefitem .@part; emotion e_heh; if( !(.@win = rand(2)) ) { mes "[blacksmith]"; mes "Perfect!"; mes "Heh heh!"; mes "Once again,"; mes "flawless work"; mes "from the master~"; } else if( .@win == 1 ) { mes "[blacksmith]"; mes "Success...!"; mes "Yet again, my amazing"; mes "talent truly dazzles"; mes "and shines today."; } else { mes "[blacksmith]"; mes "Heh heh!"; mes "I'm all done."; mes "No doubt, my work is"; mes "to your satisfaction."; mes "Sheer, utter perfection~"; } close; } Contents : Configuration ticket //-- ID Ticket 100% -- 0 = disabled set .@TicketID, 7608; Configuration Lucky Charms : //-- Lucky Charm -- complete it as your content //- ID Lucky Charm -- ID 0 or comment = disabled option setarray .@Lcid[0], 0, 0; //- + % Success rate of Lucky Charm setarray .@Lcef[0], 10, 15; It works with rathena only. Maybe it's not full optimized... if you have comment post it.
    1 point
  30. I'd like to revive discussion regarding this topic. I think Lilith's addition is highly beneficial for a lot of servers. It can make balancing a lot of skills a tad bit easier for those that do not actually know how to modify the source.
    1 point
  31. Remember this script? // Made:By Kirlein (Tyirial Script Concept) // // Devil Square based off the mmorpg Muonline // // Have Fun and feel free to leave suggestions // // Leave This intacted // // + Translated by Stillhard aka Dewa // // + Add times for 24 hours of play // // + Add a little bit infos for newbie users // // Completely rewrite by ~AnnieRuru~ // // + Tested with SVN14214 Trunk // ///////////////////////////////////////////////// quiz_02,354,346,4 script Square Guardian 404,{ mes "[square Guardian]"; mes "Welcome to the entrance door to ^FF0000Devil Square^000000"; mes "If you failed or die, the door will be closed and you have to wait until it start to open again"; next; menu "Enter",-,"Info",L_info,"Cancel",L_cancel; if ( $@DS_entry == 0 ) goto L_error; if ( Baselevel < 100 || Zeny < 1000000 ) goto L_req; if ( getmapusers("ordeal_1-1") == 30 ) goto L_toomany; set Zeny,Zeny - 1000000; announce strcharinfo(0)+" has entered the Devil Square",bc_all | bc_blue; percentheal 100,100; warp "ordeal_1-1",148,148; end; L_error: mes "[square Guardian]"; mes "Devil Square is now closed"; mes "It'll be open again at:"; mes "Every ^0000DD01:00^000000 am/pm"; mes "Every ^0000DD03:00^000000 am/pm"; mes "Every ^0000DD06:00^000000 am/pm"; mes "Every ^0000DD09:00^000000 am/pm"; mes "Every ^0000DD12:00^000000 am/pm"; close; L_req: mes "[square Guardian]"; mes "Minimum base level to enter is 100"; mes "The registration fee is 1,000,000 zeny"; close; L_toomany: mes "[square Guardian]"; mes "I'm sorry but the Devil Square is FULL"; mes "Maximum users to enter is 30 players"; close; L_info: mes "[square Guardian]"; mes "There are 8 level monster you'll encounter"; mes "Each level the enemies will grow stronger"; mes "If you succeded to win all 9 level monster, you'll get the reward."; close; L_cancel: mes "[square Guardian]"; mes "See ya"; close; OnWhisperGlobal: goto OnInit; OnInit: waitingroom "Devil Square Event",0; end; OnPCDieEvent: getmapxy(.@map$,.@x,.@y,0); if(.@map$=="ordeal_1-1") { sleep2 1000; warp "SavePoint",0,0; end; } } ordeal_1-1,0,0,0 script DS_HiddenNpc -1,{ OnClock0100: OnClock0300: OnClock0600: OnClock0900: OnClock1200: enablenpc "ord11-7"; enablenpc "ord11-11"; enablenpc "ord11-15"; enablenpc "ord11-13"; enablenpc "ord11-10"; enablenpc "ord11-6"; enablenpc "ord11-2"; enablenpc "ord11-4"; set $@DS_complete,1; set $@mob,0; killmonsterall "ordeal_1-1"; announce "Devil Square is OPENED NOW!! 5 Minutes until it starts..!!",bc_all | bc_blue; set $@DS_entry,1; sleep 60000; announce "Devil Square will begin in 4 minutes..!!",bc_all | bc_blue; sleep 60000; announce "Devil Square will begin in 3 minutes..!!",bc_all | bc_blue; sleep 60000; announce "Devil Square will begin in 2 minutes..!!",bc_all | bc_blue; sleep 60000; announce "Devil Square will begin in 1 minutes..!!",bc_all | bc_blue; sleep 60000; announce "Devil Square is Start now !! The door has closed.",bc_all | bc_blue; initnpctimer; set $@DS_entry,0; set $@mob,101; areamonster "ordeal_1-1",150,204,150,278,"[DS] REQUIEM",1164,10,"DS_HiddenNpc::Ondevildead"; areamonster "ordeal_1-1",150,204,150,278,"[DS] SOLDIER SKELETON",1028,20,"DS_HiddenNpc::Ondevildead"; areamonster "ordeal_1-1",150,204,150,278,"[DS] ORC ARCHER",1189,10,"DS_HiddenNpc::Ondevildead"; areamonster "ordeal_1-1",150,204,150,278,"[DS] SANDMAN",1165,20,"DS_HiddenNpc::Ondevildead"; areamonster "ordeal_1-1",150,204,150,278,"[DS] ARCHER SKELETON",1016,20,"DS_HiddenNpc::Ondevildead"; areamonster "ordeal_1-1",150,204,150,278,"[DS] MINOROUS",1149,20,"DS_HiddenNpc::Ondevildead"; areamonster "ordeal_1-1",150,204,150,278,"[DS] AMON RA",1511,1,"DS_HiddenNpc::Ondevildead"; end; Ondevildead: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian : 25 mobs left to enter the 2nd round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the 2nd round.",bc_blue; if($@mob == 0) { disablenpc "ord11-7"; mapannounce "ordeal_1-1","Devil Square will now enter the 2nd round, please proceed to the next room.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",165,165;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } goto Ondevil2; } end; Ondevil2: set $@mob,111; areamonster "ordeal_1-1",189,189,248,248,"[DS] WRAITH",1192,10,"DS_HiddenNpc::Ondevildead2"; areamonster "ordeal_1-1",189,189,248,248,"[DS] GARGOYLE",1253,20,"DS_HiddenNpc::Ondevildead2"; areamonster "ordeal_1-1",189,189,248,248,"[DS] ALARM",1193,20,"DS_HiddenNpc::Ondevildead2"; areamonster "ordeal_1-1",189,189,248,248,"[DS] HIGH ORC",1213,20,"DS_HiddenNpc::Ondevildead2"; areamonster "ordeal_1-1",189,189,248,248,"[DS] INJUSTICE",1257,20,"DS_HiddenNpc::Ondevildead2"; areamonster "ordeal_1-1",189,189,248,248,"[DS] MIMIC",1191,20,"DS_HiddenNpc::Ondevildead2"; areamonster "ordeal_1-1",189,189,248,248,"[DS] DARK LORD",1272,1,"DS_HiddenNpc::Ondevildead2"; end; Ondevildead2: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian: 25 mobs left to enter the 3rd round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the 3rd round.",bc_blue; if($@mob == 0) { disablenpc "ord11-11"; mapannounce "ordeal_1-1","Devil Square will now enter the 3rd round, please proceed to the next room.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",172,150;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } goto Ondevil3; } end; Ondevil3: set $@mob,107; areamonster "ordeal_1-1",204,150,278,150,"[DS] DARK ILLUSION",1302,3,"DS_HiddenNpc::Ondevildead3"; areamonster "ordeal_1-1",204,150,278,150,"[DS] ANOLIAN",1206,30,"DS_HiddenNpc::Ondevildead3"; areamonster "ordeal_1-1",204,150,278,150,"[DS] WANDERER",1208,30,"DS_HiddenNpc::Ondevildead3"; areamonster "ordeal_1-1",204,150,278,150,"[DS] DEVIRUCHI",1109,20,"DS_HiddenNpc::Ondevildead3"; areamonster "ordeal_1-1",204,150,278,150,"[DS] JOKER",1131,20,"DS_HiddenNpc::Ondevildead3"; areamonster "ordeal_1-1",204,150,278,150,"[DS] MOONLIGHT",1150,3,"DS_HiddenNpc::Ondevildead3"; areamonster "ordeal_1-1",204,150,278,150,"[DS] KIEL D-01",1734,1,"DS_HiddenNpc::Ondevildead3"; end; Ondevildead3: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian: 25 mobs left to enter the 4th round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the 4th round.",bc_blue; if($@mob == 0) { disablenpc "ord11-15"; mapannounce "ordeal_1-1","Devil Square will now enter the 4th round, please proceed to the next room.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",166,133;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } goto Ondevil4; } end; Ondevil4: set $@mob,104; areamonster "ordeal_1-1",188,111,248,51,"[DS] SKOGUL",1752,20,"DS_HiddenNpc::Ondevildead4"; areamonster "ordeal_1-1",188,111,248,51,"[DS] FRUS",1753,20,"DS_HiddenNpc::Ondevildead4"; areamonster "ordeal_1-1",188,111,248,51,"[DS] SKEGGIOLD",1754,20,"DS_HiddenNpc::Ondevildead4"; areamonster "ordeal_1-1",188,111,248,51,"[DS] PENOMENA",1216,20,"DS_HiddenNpc::Ondevildead4"; areamonster "ordeal_1-1",188,111,248,51,"[DS] DELETER",1384,20,"DS_HiddenNpc::Ondevildead4"; areamonster "ordeal_1-1",188,111,248,51,"[DS] BASCOJIN",1630,3,"DS_HiddenNpc::Ondevildead4"; areamonster "ordeal_1-1",188,111,248,51,"[DS] GORYNYCH",1885,1,"DS_HiddenNpc::Ondevildead4"; end; Ondevildead4: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian: 25 mobs left to enter the 5th round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the 5th round.",bc_blue; if($@mob == 0) { disablenpc "ord11-13"; mapannounce "ordeal_1-1","Devil Square will now enter the 5th round, please proceed to the next room.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",151,128;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } goto Ondevil5; } end; Ondevil5: set $@mob,105; areamonster "ordeal_1-1",150,95,150,22,"[DS] ACIDUS",1713,20,"DS_HiddenNpc::Ondevildead5"; areamonster "ordeal_1-1",150,95,150,22,"[DS] ACIDUS",1716,20,"DS_HiddenNpc::Ondevildead5"; areamonster "ordeal_1-1",150,95,150,22,"[DS] VIOLY",1390,20,"DS_HiddenNpc::Ondevildead5"; areamonster "ordeal_1-1",150,95,150,22,"[DS] GREMLIN",1632,20,"DS_HiddenNpc::Ondevildead5"; areamonster "ordeal_1-1",150,95,150,22,"[DS] KHALITZBURG",1132,20,"DS_HiddenNpc::Ondevildead5"; areamonster "ordeal_1-1",150,95,150,22,"[DS] TURTLE GENERAL",1312,3,"DS_HiddenNpc::Ondevildead5"; areamonster "ordeal_1-1",150,95,150,22,"[DS] NIDHOGGR'S SHADOW",2022,2,"DS_HiddenNpc::Ondevildead5"; end; Ondevildead5: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian: 25 mobs left to enter the 6th round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the 6th round.",bc_blue; if($@mob == 0) { disablenpc "ord11-10"; mapannounce "ordeal_1-1","Devil Square will now enter the 6th round, please proceed to the next room.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",134,134;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } goto Ondevil6; } end; Ondevil6: set $@mob,94; areamonster "ordeal_1-1",112,112,51,51,"[DS] SALAMANDER",1831,10,"DS_HiddenNpc::Ondevildead6"; areamonster "ordeal_1-1",112,112,51,51,"[DS] NECROMANCER",1870,20,"DS_HiddenNpc::Ondevildead6"; areamonster "ordeal_1-1",112,112,51,51,"[DS] KASA",1833,20,"DS_HiddenNpc::Ondevildead6"; areamonster "ordeal_1-1",112,112,51,51,"[DS] IMP",1837,20,"DS_HiddenNpc::Ondevildead6"; areamonster "ordeal_1-1",112,112,51,51,"[DS] ECHIO",1770,20,"DS_HiddenNpc::Ondevildead6"; areamonster "ordeal_1-1",112,112,51,51,"[DS] DRACULA",1389,3,"DS_HiddenNpc::Ondevildead6"; areamonster "ordeal_1-1",112,112,51,51,"[DS] GLOOM UNDER NIGHT",1768,1,"DS_HiddenNpc::Ondevildead6"; end; Ondevildead6: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian: 25 mobs left to enter the 7th round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the 7th round.",bc_blue; if($@mob == 0) { disablenpc "ord11-6"; mapannounce "ordeal_1-1","Devil Square will now enter the 7th round, please proceed to the next room.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",127,150;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } goto Ondevil7; } end; Ondevil7: set $@mob,83; areamonster "ordeal_1-1",95,150,22,150,"[DS] MINERAL",1614,20,"DS_HiddenNpc::Ondevildead7"; areamonster "ordeal_1-1",95,150,22,150,"[DS] MYST",1151,20,"DS_HiddenNpc::Ondevildead7"; areamonster "ordeal_1-1",95,150,22,150,"[DS] RAGGED ZOMBIE",1865,20,"DS_HiddenNpc::Ondevildead7"; areamonster "ordeal_1-1",95,150,22,150,"[DS] ANCIENT MUMMY",1297,20,"DS_HiddenNpc::Ondevildead7"; areamonster "ordeal_1-1",95,150,22,150,"[DS] APOCALIPS",1685,2,"DS_HiddenNpc::Ondevildead7"; areamonster "ordeal_1-1",95,150,22,150,"[DS] RANDGRIS",1751,1,"DS_HiddenNpc::Ondevildead7"; end; Ondevildead7: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian: 25 mobs left to enter the 8th round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the 8th round.",bc_blue; if($@mob == 0) { disablenpc "ord11-2"; mapannounce "ordeal_1-1","Devil Square will now enter the 8th round, please proceed to the next room.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",133,165;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } goto Ondevil8; } end; Ondevil8: set $@mob,45; areamonster "ordeal_1-1",109,188,46,247,"[DS] SOLACE",1703,10,"DS_HiddenNpc::Ondevildead8"; areamonster "ordeal_1-1",109,188,46,247,"[DS] GEMINI-S58",1681,10,"DS_HiddenNpc::Ondevildead8"; areamonster "ordeal_1-1",109,188,46,247,"[DS] PASANA",1154,10,"DS_HiddenNpc::Ondevildead8"; areamonster "ordeal_1-1",109,188,46,247,"[DS] REMOVAL",1682,10,"DS_HiddenNpc::Ondevildead8"; areamonster "ordeal_1-1",109,188,46,247,"[DS] BOITATA ",2068,3,"DS_HiddenNpc::Ondevildead8"; areamonster "ordeal_1-1",109,188,46,247,"[DS] IFRIT",1832,2,"DS_HiddenNpc::Ondevildead8"; end; Ondevildead8: set $@mob,$@mob - 1; if($@mob == 25) mapannounce "ordeal_1-1","Square Guardian: 25 mobs left to enter the FINAL round.",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian: 5 mobs left to enter the FINAL round.",bc_blue; if($@mob == 0) { disablenpc "ord11-4"; mapannounce "ordeal_1-1","Devil Square will now enter the FINAL round, proceed to the center of the map.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ percentheal 100,100; warp "ordeal_1-1",148,148;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } sleep2 5000; mapannounce "ordeal_1-1","Square Guardian : FINAL round will start in 10 second.",bc_blue; sleep2 5000; mapannounce "ordeal_1-1","5",bc_blue; sleep2 4000; mapannounce "ordeal_1-1","4",bc_blue; sleep2 3000; mapannounce "ordeal_1-1","3",bc_blue; sleep2 2000; mapannounce "ordeal_1-1","2",bc_blue; sleep2 1000; mapannounce "ordeal_1-1","1",bc_blue; goto Ondevil9; } end; Ondevil9: set $@mob,21; areamonster "ordeal_1-1",149,170,149,170,"[DS] Incarnation of Morroc",1919,5,"DS_HiddenNpc::Ondevildead9"; areamonster "ordeal_1-1",170,151,170,151,"[DS] Incarnation of Morroc",1920,5,"DS_HiddenNpc::Ondevildead9"; areamonster "ordeal_1-1",150,129,150,129,"[DS] Incarnation of Morroc",1918,5,"DS_HiddenNpc::Ondevildead9"; areamonster "ordeal_1-1",129,150,129,150,"[DS] Incarnation of Morroc",1921,5,"DS_HiddenNpc::Ondevildead9"; areamonster "ordeal_1-1",149,150,149,150,"[DS] Wounded Morroc",1917,1,"DS_HiddenNpc::Ondevildead9"; end; Ondevildead9: set $@mob,$@mob - 1; if ($@mob == 0) set $@DS_complete,0; if($@mob == 10) mapannounce "ordeal_1-1","Square Guardian : 10 mobs left to VICTORY",bc_blue; if($@mob == 5) mapannounce "ordeal_1-1","Square Guardian : 5 mobs left to VICTORY",bc_blue; if($@mob == 0) { mapannounce "ordeal_1-1","Square Guardian : CONGRATULATION - All winners will get your reward soon.",bc_blue; sleep2 5000; mapannounce "ordeal_1-1","Square Guardian : All winners will be warp to Town in shortly.",bc_blue; while ( getusers(1) > .@count ) { query_sql "select account_id from `char` where online = 1 limit 128 offset "+ .@count, .@result; set .@i, 0; while ( .@i < getarraysize(.@result) ) { if ( attachrid(.@result[.@i]) ) { if ( strcharinfo(3) == "ordeal_1-1" ){ sleep2 5000; warp "SavePoint",0,0; sleep2 1000; getitem 20407,2; getitem 969,500; getitem 20417,2;} } set .@i, .@i +1 ; } set .@count, .@count + 128; deletearray .@result, 128; } } end; OnTimer30000: if ( $@DS_complete == 0 ) { sleep2 1000; announce "Devil Square has been survive.",bc_all | bc_blue; set $@DS_complete,0; stopnpctimer; end; } else if (getmapusers("ordeal_1-1") == 0) { announce "All players failed to survive at Devil Square",bc_all | bc_blue; set $@mob,0; killmonsterall "ordeal_1-1"; stopnpctimer; end; } else { mapannounce "ordeal_1-1",getmapusers("ordeal_1-1") +" players is still survive at Devil Square",bc_blue; initnpctimer; end; } } // -- Mapflags ordeal_1-1 mapflag nowarp ordeal_1-1 mapflag nowarpto ordeal_1-1 mapflag noteleport //ordeal_1-1 mapflag nosave ordeal_1-1 mapflag nomemo ordeal_1-1 mapflag nobranch ordeal_1-1 mapflag nopenalty ordeal_1-1 mapflag nomobloot ordeal_1-1 mapflag nomvploot ordeal_1-1 mapflag nodrop ordeal_1-1 mapflag restricted 8 god dammit why did i post it here wrong section someone please move this to support
    1 point
  32. @echo off for /f "usebackq tokens=*" %%a in (`dir /b/s/a:d`) do ( for %%l in (%%~nxa\*.lua) do ( luac5.1.4 -o %%~nxa\%%~nl.lub %%l ) ) for %%l in (*.lua) do ( luac5.1.4 -o %%~nl.lub %%l ) pause there ya go
    1 point
×
×
  • Create New...