Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 10/28/12 in all areas

  1. I'm embarking on a quest to improve the script engine I think a sensible thing to do is to use flex & bison to do the parsing. I'm going to guess at the near 18,000 lines in script.c, about 3000 of them are involved in parsing, and I think we can reduce that to maybe 100-200. This would simplify the file a lot, it'll help compile times and most importantly: it'll help us extend the language easier. Work has been done recently (recently being in terms of the project but this was a few months ago ) to add an assignment operator... I would've thought any language would've added this in the beginnings of its life would've opted to use an operator instead of a keyword to set variables, so I can only guess it took so long because its too damned complicated. There was also work done on the Lua project to replace the script engine with Lua... I really love the idea but I think it's just completely unrealistic. There are tens of thousands of lines of script source that will probably never be updated, because it works fine the way it is. So if we can decouple the parser, we can improve the language a lot easier and not have to resort to something as drastic as a complete rewrite. I'm posting here to gauge feeling from the dev team. The idea is to write another parser equal to the current parser, so all existing scripts will function correctly. Does this subproject interest anyone out there? Cheers!
    2 points
  2. Added: WDGChatColorGM Changes the public chat text color of GMs to a user-defined color (color-picker). I'd really appreciate someone to test this and report whether or not this actually works correctly, especially the color itself (only tested for matches in 2012-07-02). Afterwards plug-ins for the remaining chat types will follow. Thanks. binary builds, sources
    2 points
  3. if you are not going to do it, then I will =/ monster_hunting_euphy2.txt because the server that I'm hired in is a SHR server, so I just post it here and also use it in my server @Rebel see this line set .baseexprate, getbattleflag("base_exp_rate"); // adjustment for base exp rate. For SHR server, set this to a lower number. 100 means x1 with default setting like this, it is adjusted to server rate ( which do the same like original script behavior ) but if set this to 1000, this will get 10x exp, overwriting the exp.conf setting
    2 points
  4. Peopleperson49's Script Collection Please enjoy my work. If you have any suggestions or find any issues/bugs please let me know! If you like or download my work please click the "Vote this post up" button to the right of the post and check out my server Ragnarok Underground. My scripts are written as I would use it for my Ragnarok Underground server, you might need to configure them before use. My scripts are written to work with the rAthena emulator. When reporting and bug/error/suggestion in this topic please give the emulator version, version of the script your using, and the issue in detail! Super Magnifier Identifys all unidientified items a player is holding at once. I made this a long time ago for my server, but I added here for Nipsino after reading a post he left. Function_SuperMagnifier.txt Rock, Paper, Scissors Roulette This was one of my first scripts I ever made. I learned to script by breaking these type of scripts down and recreating them from scratch. This script was recreated in this same way. It is very similar to the original in design. Allows the player to play roulette with a 5 chamber pistol. Only one bullet is loaded at a time. The script will continue to loop until somebody is shot. Version 2.0: rpsroulette.txt BlackJack Scratchcard Blackjack script that designed to work like a scratchcard. It is based on using eight decks or cards and both numbers and suits determine winning hands. Buster prize for scoring a 30 or 31, which can only be done if you already have a 20 or 21 adding one more element of gambling to it. Item data is included at the bottom of the script. Version 3.3: Scratchcard_BlackJack.txt Powerball Lottery This was one of my first scripts I ever made. I learned to script by breaking these type of scripts down and recreating them from scratch. This script was recreated in this same way. It is very similar to the original in design. Powerball lottery picks 5 miniballs and 1 powerball. Different pay amount based on type of matches made. Version 1.7: lottery.txt Advanced Banker This was one of my first scripts I ever made. I learned to script by breaking these type of scripts down and recreating them from scratch. This script was recreated in this same way. It is very similar to the original in design. Bank with varying account and interest based directly on balance. Also has trustfund which pays out only when the character reaches BaseLevel 150. Most of my scripts give trustfund bonuses and also 1% of any zeny spent goes toward the trustfund. Version 1.4: bank.txt Heads Or Tails This was one of my first scripts I ever made. I learned to script by breaking these type of scripts down and recreating them from scratch. I remember making this one, but I'm not sure if I based it off of another script or not. Player starts by betting 500z and then flips a coin. If heads their money is disabled, if tails they loose all their money. Version 2.4: hot.txt Jackpot Leon This was one of my first scripts I ever made. I learned to script by breaking these type of scripts down and recreating them from scratch. This script was recreated in this same way. It is very similar to the original in design, however I'm not sure where to find that script anymore. The script picks a number between 1 and 100. The player pays 10,000z to make a guess. Each guess increases the size of the Jackpot by 9,000z until somebody wins. Version 2.3: jackpot.txt Double Dice Roll Very simple dice gambling game created for my custom Comodo casino package. You bet various amounts of zeny and roll two dice. The winner is the one with the highest total score. This was created from scratch as part of my casino package and had nothing to do with the rolladice script. Version 2.1: roll_a_dice.txt Saving Angel This script was written for my lovely wife after we were player and our whole party was wiped out in majos. It allows a character to resurrect another character anywhere in the server for a fee. Version 1.8: Saving_Angel.txt Magic 8 Ball Custom script that works just like using a magic 8 ball. Version 2.2: MagicEightball.txt Wishing Well Custom script that allows a player to throw zeny into the wishing well and make a wish. The wish is then sent to any online GM using @request. It is restricted to one use per day to help prevent annoying the crap out of the GM's! Version 1.7: WishingWell.txt Arch Bishop Job Quest This script was written for MelMel on rAthena.org. It is a compltely new version of the third job change quest for an Arch Bishop. I did not use any other scripts as a base. It allows a Priest/High Priest to gather items and then change jobs to an Arch Bishop. The Sub-scripts can be completed in any order and all work off of each other. Version 1.1: Job_AB.txt Guillotine Cross Job Quest This script was written to supplement the fact that the Guillotine Cross still has no official script release on rAthena.org. It is a compltely new version of the third job change quest for a Guillotine Cross. I did not use any other scripts as a base. It allows a Assassin/Assassin Cross to gather items and then change jobs to a Guillotine Cross. Version 1.2: Job_GC.txt Monster Of The Day Another Monster Of The Day script. I made this one from scratch to be very simple and work automatically. Uses almost the full list of monsters from the mob_branch. I included the dispbottom here when players login, but I actually perfer to use a login script with this in it. Version 1.4: MOTD.txt Security Manager Allows a player to set up a password to help protect their account. It uses a simple OnWhisperGlobal function. I nolonger support the use of the whisper system in my Security Manager script after version 1.3. I will still provide support for other issues that might be discovered in scripts prior to v1.4, but they will be fixed in a version that now uses bindatcmd. Version 1.5: Security_Manager.txt GM Headquarters Allows access to a part of the sec_in01 map that doesn't have any warps anyway. This is a nice areas to setup special NPC's or events. Whatever anybody wants to do with it. However the secutiry code is fun for everybody to try to crack. This script currently has shops that be used once a day as a reward for cracking code. It's my intent to eventually add a full warper script that can be used once a day also. Version 1.3: GMHeadquarters.txt Monster Hunter This script was written for vgrebirth on rAthena.org. It allows one party at a time to do the Monster Hunter event. If any member is killed the entire party looses and are warped out. If you kill all the mini-boss monsters the boss monster is spawned. Version 2.7: Monster_Hunter.txt
    1 point
  5. Hello everyone! Long time has passed, since I released my last warper. It had some features, so it was still dowloaded. But the configuration was ugly, and it took way too much of space. The way Toasty did his Menu-Configuration impressed me, and I decided to script this new warper, including many more features than before, so that it could take some time, to understand all the settings. (Without the manual I wouldn't ) So here we go! Dynamic-Warper Downloads: rAthena only Dynamic-Warper 1.1 (rar)Single Files: warper.txt - duplis.txt eAthena AND rAthena Dynamic-Warper 1.1 (rar) Single Files: warper.txt - duplis.txt Dungeon-Configurations: Only Entrance Warpers (default) Full Dungeon-Level Pre-Configurations: Please tell me your suggestions of Pre-Configurations! Language-Packs: English (default) German List of features: Easy configuration (when you get it once ) Many possibilitys to config your Menus and Maps Many addable restrictions like zeny/item-cost, level, class and more Remember lastwarps Possibility to easy add and manage Favourites! Questwarping (so your users have to visit a place on their own first) Partywarping (party leaders can take their guild with them) Multithreading: every party member will be asked if he/she wants to warp at the same time Compatibility: Tested on SVN 16767 Should work from rAthena SVN 15340 For using with eAthena you have to chose the eAthena-Version of the warper, and follow the configuration: Configuration for eAthena: When using the eAthena-Version of this warper, you need to change the following value in your conf/script_athena.conf like this: check_gotocount: 8192 8192 works fine with the default configuration of this warper. When you add more dungeon levels and get "infinity_loop"-errors, just raise the value to 16384 (or any value you like...). Screenshots: How to configure: Configuration starts at line ~54 ( CONFIGURATION - START ) Price Items: Here you can add up to 32 Items and amounts. They will automatically get the IDs 1,2,4,8,16,32.... (bitmask). These are the items you can use later for payments: setarray .price_items[0], //item-id, amount, // ID 512, 10, // 1 513, 10, // 2 514, 5, // 4 515, 20; // 8 Flags: Here you can add Vars (e.g. Account vars), an integer Value , which you need to add as string(!) They also will get bitmask IDs. With the third value you can configure how the relation between the var and your value needs to be. setarray .flags$[0], // 1 = smaller, 2 = equal , 4 = bigger //flagname, true-val, option // ID "special_quest_var", "1", "6", // 1 "#another_var", "1", "6"; // 2 Percentages: Still working on this...will have no effect! Menu Structure: Your main-menu can contain up to 15 different Types (e.g. Towns, Castles). You add a type with addType(<name>,<uniqueid>{,"modifier1",mod-value1{,"modifier2".....}}); In each Type-Menu you can add up to 127 Submenus. (e.g. Prontera, Payon Dungeon) Adding those is possible with addMain(<name>,<uniqueid>{,"modifier1",mod-value1{,"modifier2".....}}); In Each of this submenus you can add up to 31 Maps (e.g. pay_dun00, prontera) with the following command: addMap(<map title>,<map name=>,<uniqueid>{,"modifier1",mod-value1{,"modifier2".....}}); So, to add a city into the city menu, this could look like this: addType("Citys",1); addMain("Alberta",1); addMap("Alberta","alberta",1); addMain("Aldebaran",2); addMap("Aldebaran","aldebaran",2); Okay, this looks strange. A Submenu with only one map? Actually, when opening a menu which only contains one selection, the menu will be skipped, chosing the single point. Also this npc features a little system, which avoids the necessity of adding coordinates, and even the "addMap": addType("Citys",1); addMain("Alberta",1); addMain("Aldebaran",2); When a "Main"-menu does not contain any Map, the NPC will watch out for a warper-duplicate with the same ID than the menu, chosing its position as destination: aldebaran.gat,135,119,4 duplicate(dw_1_2) Warper::dw_1_3 859 amatsu.gat,208,103,4 duplicate(dw_1_2) Warper::dw_1_4 859 The name of the duplicate is always Warper::dw_<typeid>_<mainid> You even don't need to add coordinates. The NPC just takes those, of the Warper-Duplicate. (You will be warped to a 5x5-area around the NPC) Adding Dungeons: addType("Dungeons",2); addMain("Abbey Dungeon",1); addMap("Abbey Dungeon Entry","nameless_n",1); addMap("Abbey Dungeon Lvl 1","abbey01",2); addMap("Abbey Dungeon Lvl 2","abbey02",3); addMap("Abbey Dungeon Lvl 3","abbey03",4); Okay, looks fine.....wait! No coordinates either?! That's right. When a map has got the ID "1", the npc will also checkout the warper with the menu-ID, using his position as destination. nameless_n.gat,159,187,4 duplicate(dw_1_2) Warper::dw_2_1 859 If you want to be warped to an other level you will be warped randomly on the map in this case. (Don't panic, if you really need , there is a possibility to add coordinates ) Modifiers: The idea, to add modifiers like this, is of course Toasty's! The explanation is also his one. With the 'addType', 'addMain' 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: There is no big difference between our two modifier-systems, except mine features more mods "gm": Add this modifier, to only allow GMs to warp. In this example, you need to have gm-level 50 or higher to be able to access the Map. Maps or Menu-Points you are not allowed to use because of your GM Level won't be shown in the menu! addType("Secret Places",1,"gm",50); addMain("Place 1",1); addMain("Secret Dungeon",2); addMap("Secret Level 1","secret_map00",1); addMap("Secret Level 2","secret_map01",2); addMain("Another Place",3); "woe": This one is a bit complex. The value you add, is a bitmask value, and you have to following options: 0x0001: Hide this when WoE FE is acitve 0x0002: Hide this when WoE FE is inactive 0x0004: Hide this when WoE SE is acitve 0x0008: Hide this when WoE SE is inactive ============================================= (the following only works for maps of course) ============================================= 0x0010: Hide this when GvG is activated on the given map 0x0020: Hide this when GvG is inactive on the given map 0x0040: Hide this when you are not member of the guild claiming the castle ============================================= When you set the hide options, you can also add unhide-options, which overwrite the Hiding in the given situation: ============================================= 0x0100: Unhide this when WoE FE is acitve 0x0200: Unhide this when WoE FE is inactive 0x0400: Unhide this when WoE SE is acitve 0x0800: Unhide this when WoE SE is inactive ============================================= (the following only works for maps of course) ============================================= 0x1000: Unhide this when GvG is activated on the given map 0x2000: Unhide this when GvG is inactive on the given map 0x4000: Unhide this when you are a member of the guild claiming the castle The following example, will always prohibit warping to the maps, except if GvG is activated into the castle, or if you are a member of the claiming guild: addType("Castles",3,"woe",0x500F); addMain("Aldebaran Castles",1); addMap("Neuschwanstein (Aldebaran)","aldeg_cas01",1); addMap("Hohenschwangau (Aldebaran)","aldeg_cas02",2); addMap("Nuenberg (Aldebaran)","aldeg_cas03",3); addMap("Wuerzburg (Aldebaran)","aldeg_cas04",4); addMap("Rothenburg (Aldebaran)","aldeg_cas05",5); Maps or Menu-Points you are not allowed to use because of WoE-issues won't be shown in the menu! "class" 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 addMain("Payon Dungeon",10, "job", 0x00000A00); addMap("Payon Dungeon - Lvl 1", "pay_dun00",1); addMap("Payon Dungeon - Lvl 2", "pay_dun01",2); addMap("Payon Dungeon - Lvl 3", "pay_dun02",3); Maps or Menu-Points you are not allowed to use because of class-issues won't be shown in the menu! (by default) "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 non-baby classes addMap("Casino", "cmd_in02",1,"upper", 3); "questwarp" Adding this to a node, will only allow players to warp to a kind of "Mains", it they visited this place on their own before. (Mains are added with "addMain") Means, if they enter the Payon-Dungeon, they will be able now to access all Maps in the Payon-Dungeon Menu. You have the following bitmask options: 1: acitvate questwarping 2: use account-vars instead of char-vars (recommended) // Account based questwarping. Once the user enters on of the tree maps, he will be able to access all those maps with the warper. addMain("Payon Dungeon",10, "questwarp", 3); addMap("Payon Dungeon - Lvl 1", "pay_dun00",1); addMap("Payon Dungeon - Lvl 2", "pay_dun01",2); addMap("Payon Dungeon - Lvl 3", "pay_dun02", 3); Each type needs <mains>/32 integer-vars to save the players status. So when you have 32 Towns, this will use exactly one var/account. But when you have 33 this will need two vars. "bmaxlvl" , "bminlvl" Adding this options, will only grant you access when your Baselevel is bigger or equal/lower or equal to the given level. // To have access, you need to have a level from 30 to 50: addMain("Payon Dungeon",10, "bmaxlvl", 50,"bminlvl",30); addMap("Payon Dungeon - Lvl 1", "pay_dun00",1); addMap("Payon Dungeon - Lvl 2", "pay_dun01",2); addMap("Payon Dungeon - Lvl 3", "pay_dun02", 3); "flag" This allows you to use the vars, you had to set before. //e.g. we setted: "special_quest_var1", "1", "6", // ID: 1 "special_quest_var2", "20", "5"; // ID: 2 // You only will be able to enter if var1 is bigger or equal 1, and if var 2 is lower or equal 20 addMain("Payon Dungeon",10, "flag",3); // 3 = 2+1 addMap("Payon Dungeon - Lvl 1", "pay_dun00",1); addMap("Payon Dungeon - Lvl 2", "pay_dun01",2); addMap("Payon Dungeon - Lvl 3", "pay_dun02", 3); "price" Simply add a value, and the user will have to pay the fee. Users can access every menu, even if they don't have enough money. They just won't be able to warp. "price_item" This works similar to the flag-modifier. Just set the bitmask-ID of the items you have setted before. // To enter payon dungeon, you will need 10000 zeny and the items with IDs 1+4+8 = 13 addMain("Payon Dungeon",10, "price",10000,"price_item",13); addMap("Payon Dungeon - Lvl 1", "pay_dun00",1); addMap("Payon Dungeon - Lvl 2", "pay_dun01",2); addMap("Payon Dungeon - Lvl 3", "pay_dun02", 3); "price_red" ...not implemented yet "mapusers" As the most warpers, this on gives you the possibility to show you how many users are on a specific map, or in a dungeon, or even in all the towns. There are tree options: 1: show users of this type in the type-menu (for example in all citys) 2: show users online on all maps of this submenu/dungeon/town 4: show users online on every single map in the Map-Menu //Watch this screenshot what this does addType("Dungeons",2,"mapusers",6); "blindmap" Blindmaps will be ignored, when counting users in a Dungeon e.g. , and When you enter such a map, you will not activate the questwarp-effect. This is usefull, when you add an entrance warper to a dungeon. You don't want to know how many users are in front of a dungeon, and you did not visit a dungeon, just because you stood in front of it... =) blindmap don't needs any value at the moment, just add: "blindmap",0,... "srcmap" This is nearly the same as blindmap. But in this case you need to give a map name: addMap("Neuschwanstein (Aldebaran)", "alde_gld",2,"x",48,"y",83, "srcmap", "aldeg_cas01"); With this, the Warper will count the users into the castle, and not on the guild map. Also the map "alde_gld" won't count as visiting map. "aldeg_cas01" will do instead. "x" , "y" As I promised: With this modifiers, you can add specific coordinates to your map =) "lastwarps" , "favourites This modifier only works with the 'addType' Command, and will add the Lastwarp or Favourites menu.point. The argument contains the maximum of maps a user can store. The maximum is 64 for the moment. I don't think more will ever be necessairy. //this will add the favourites und lastwarps menu points to the menu and allow the users to store 6 maps in each of them addType("Favourites",4,"favourites",6); addType("Last Warps",5,"lastwarps",6); Each map stored will use half of an integer var. Means you need one integer var to store two maps. (yes, every map uses 4+7+5 bits ) Yeah, that's all about them for the moment <.< Cascading Rules: Yeah...the rules. Good look understanding them instantly ^^' When you add a modifier to a Menu, the Submenus und Maps will use this modifier. When you add a modifier to a Submenu or Map, it will completly overwrite the value you set in the parent node. This makes it possible to prohibit the access to all Citys but one: //allow access to all citys only for players on level 20 or higher, except alberta addType("Citys",1,"bminlvl",20); addMain("Alberta",2,"bminlvl",0); addMain("Aldebaran",3); addMain("Amatsu",4); When you have set a restriction, players won't be able to open the submenu, if they don't meet up the requirements. But if there is a Submenu or Map, overwriting a value you set with a less strong value, palyers will alway be able to access this sub menu! //Players below level 20 won't be allowed to access the Citys-Submenu. addType("Citys",1,"bminlvl",20); addMain("Alberta",2,"bminlvl",40); addMain("Aldebaran",3); addMain("Amatsu",4); //Every player will be able to enter the submenu! addType("Citys",1,"bminlvl",20); addMain("Alberta",2,"bminlvl",0); addMain("Aldebaran",3); addMain("Amatsu",4); This is the disadvantage of my system. It would be too expensive to check every Sub-menu and Map... Got it? =) Other things you should now: I added lots of debug messages which appear on starting up your server. It shouldn't be easy to make a mistake without recognizing it. E.g. when a map doesn't exist, doubled IDs, Empty Names, wrong settings, empty menus, too big menus. The client does only accept Strings up to 2047 characters. On starting up, the NPC will check out the worst-case length of every menu. When there is no error, you don't need to worry. (There is a little mistake in my calculation, the npc will count about 20 characters more, the worst case menu actually has...too bussy to fix this now...) When you use this warper with lastwarp, favourites or questwarping, it will use the uniqueID of the types, mains and maps, to store the data. This means you should never change the IDs, after your players started using the warper. When you add new Maps, just use another ID. You can even swap the maps as you want like this: addMain("Jawaii",13); addMain("Einbech",7); addMain("Hugel",11); addMain("Einbroch",8); addMain("Izlude",12); addMain("Geffen",9); addMain("Gonryun",10); The maps will shown in the order, you ordered them. The IDs are only there to store data permanently. If users have maps in there Lastwarp-Menu you removed, the will automatically be deleted from their data. I don't know about gotos as Toasty does, and the freeloop-command is not very helpfull when you are calling down about 10 functions. So when starting up, I had to use some "sleep 1"s. This is why the NPC will need up to 5 seconds to load his data after the OnInit-event got executed. During this time, players won't be able to speak to the NPC. When the Warper finished loading, you will get a debugmes With the amount of maps that were loaded. When a Party leader wants to take his party with him, the members who want to join him will have to be on the same map, and meet the requirements to warp. The Leader will get a list of his members, and if/why they are able to join. Then all members will be askied the same time if they want to join. A 15 seconds timer will start to wait for the members. When all members checked in/out, the timer will stop. Technical Stuff Every map needs 16 bits to be saved: - 4 Bits for the Type - 7 Bits for the Main - 5 Bits for the Map (don't ask me , why I called this "main"... -.-) Informations are stored like this: .typeName_<typeid> .mainName_<typeid>_<mainid> .mapName_<typeid>_<mainid>_<mapid> So this is like I store the lastwarps und favourites. The disadvantage to Toasty is that it takes more storage, as he only has got as much IDs as Maps =) But when you remove or add a Map, after players added Lastwarps you will have completly different Maps in your menu suddenly. :/ Every player has got a dw_infoSave var, containing some informations. Before it contained 2 pointers and the amounts of favourites and lastwarps, but after I changed the structure of storing the maps, it only contains two amounts: [ 10 bits free ] [ 6 bits: amount of favourites ] [10 bits free ] [ 6 bits: amount of lastwarps] This is on reason, why the maximum is 64. The other reason ist, that the lastwarps and favourites each have a string to store the data. Each map uses 16 Bits, which will be transformed to 3 chars. 3*64 = 192 (Max 255). This means you could add some more...but is this really necessairy? Every Type, Main and Map has got a modifier Int-Var (.typeMod_<id>) In this var, every modifier that has got the ability to cascade down, uses two bits, to indicate, if there is a value existing, and if there is a less-strong requirement in a sub-menu. When I need to check out all the modifiers which have to be hidden in the menu, I just use a var called .modifier_showInMenu , which contains all those modifiers. You can take a look at this searching for "settings: modifier groups START". The modifier-values themselves are stored like this: .mapMod_questwarp_<tID>_<mID>_<mpID> When you activate questwarping, the OnMapLoadEvent is used. To fast check if this is a questwarping map, there is a int-var for each of this maps, ( $@dw_maps_<mapname> ), containing the full ID of the map. This NPC uses the instancing commands, to send the warping information to all the Party members. To attach the partymembers to a thread, I use a global pipe-array, which contains all the waiting charIDs. I need to improve this, because at the moment it could happen that members are overwritten, when to party leaders warp exactly at the same time. (should not happen...but when it does, it is just annoying...) Oh, and when a player is using an other npc while the party leader aks to warp, it becomes very odd... But how to check if a player is already talking to a npc?.... When a party is warped, the members all appear somewhere in a 5x5-area around the goal, instead of landing on one single point. I think this looks more natural. eaj2base is a little function, which converts the BaseJob value to the right bitmask value. I thought this would be easier, than storing all the values....not sure about this. But it looks cute. The RO-Client is not able to count seconds properly (seems to..)<.< If you use showdigit 15,3; it will take about 5 to 15 seconds, until the count down has ended...(depends on CPU That's all about it! I would appreciate critique and compliments =) Greetz, MusiChronos Credits: Toasty for the Adding basic idea, some descriptions of this manual and some of the coordinates. Bugtracker: Version: 1.0 , Minor-Bug debugmes "[Warper/Error] Instance Error No. "+.@id+" occured!"; //should only be -3 ==> max instances .@id has to be .@iID Fixed in Version: 1.0.1 Version:1.0 , Minor-Bug for(set .@i,0; .@i < 'warpID; set .@i,.@i+1) { if('warpID[.@i] == getcharid(3)) { set .@num,.@i; break; } } becomes: for(set .@i,0; .@i < getarraysize('warpID); set .@i,.@i+1) { if('warpID[.@i] == .@aID) { set .@num,.@i; break; } } Fixed in Version: 1.0.1
    1 point
  6. VipLib + VipAdmin (Developed by Rafael Perrella) Description This system allows administrators to manage some new groups of players (usually known as donaters, special players or VIPs). It allows you to move players to these groups for a limited period of time (maybe some hours, days or months). When the time is over, they are moved back to the players' default group, 0, automatically. The system accepts more than one group (up to 126). With a precision of seconds, in the exact second a player's VIP time ends he'll be moved back to the default group. There's no need to logout to activate or deactivate the new group. Download It requires two files to work: VipLib v1.4b and VipAdmin v1.3a. [uPDATE: now, VipAdmin asks for username, not account id] If you are using eAthena, use VipLib v1.4b.eA instead of VipLib v1.4b: http://rafaworks.zzl.org/root/scripts/accountmanager/viplib/v1.4b.eA.txt (still not tested, I'll try it soon) Configurations Just download the 2 files above, put them in NPCs folder and activate them. The NPC is at prontera 147 174, but you can also access it sending a message to npc:#vipadmin. The script uses the group ids 1, 5, 6, 7, 8 as special groups. If you want other groups, open VipLib's file and search for "setarray $@AM_Vip_Groups", then edit the numbers (or remove, or add more numbers). Put the ids sorted from the worse to the best. Special thanks to... - frozenfox, for reporting a bug (of compatibility) in VipLib v1.0.x. - Hybrid, for translating the old changelog file. - DarkWhoteva, for testing and translating VipLib v1.2b. How does it work? (for scripters) We have two scripts here. Let's call these special groups "VIP groups". The VipLib is a library of functions to manage these groups. The script considers that for every pair of groups, one is better than the other; so, if a player is in two (or more) groups at the same time, it'll first spend the best group's time and, when it's over, move them to the next group (worse than the last, better than all the rest he's in). Below, all the functions it has (time is always given in seconds): About VipAdmin, it's a script that uses the list of functions available in VipLib to let administrators add, remove, set, read or clear the player's vip. The script could be much better, but I have no time left to do it. So, if you can do a better script using VipLib, I would appreciate your contribution =D
    1 point
  7. BrowEdit Tutorial Videos Here is a list of free tutorial videos I made about a year ago that gives BrowEdit users a good grasp on using the BrowEdit Mapping Program. The tutorial videos teaches young BrowEdit users from the ground up of how to install BrowEdit, get familar with the interface and functions and finally actually producing a fully functional map you can integrate in a ragnarok server. I plan on expanding this list to cover a broader range of topics. Browedit Tutorial #1 - Getting Started Video Information: Downloading and setting up BrowEdit. Configuring BrowEdit to be usable & providing recommendations on BrowEdit revisions. - Browedit Tutorial #2 - Basics of Designing Video Information: Understanding the user inferface of BrowEdit & editing functions. Teaches navigational controls and introduces how to properly setup a map for editing. Part 1 - Part 2 - Part 3 - Browedit Tutorial #3 - Intermediate Level Terrain Editing Video Information: Teaches how to apply textures, build walls, making slopes and environmental terrain changes, and controlling water levels. Part 1 - Part 2 - Browedit Tutorial #4 - Intermediate Level Light Editing Video Information: Introduces how to implement lights to brighten and colorize a map. Gives recommended RGB combinations and lighti strength parameter settings in giving ideal light and shadow outputs. Part 1 - Part 2 - Browedit Tutorial #5 - Adding Effects Video Information: How to add effects to a map to fit the needs of the environment. Examples can be torches, flying bats, magic circles etc.. - Browedit Tutorial #6 - Adding Sounds Video Information: How to add ambient sounds to your map. This includes noises you hear in niflheim, prontera, geffen etc.. - Browedit Tutorial #7 - Making a Sky Map Video Information: Ever wanted to make a sky map? Well this tutorial will show you how to make a floating blue sky based map with cloud formations. - Browedit Tutorial #8 - Adding Custom Textures to BrowEdit Video Information: How to add your own custom textures to BrowEdit and using them in your custom map. - Browedit Tutorial #9 - Adding Custom BGM Music to a Map Video Information: How to add your own personal background music to a map as well as making sure the BGM file is compatible with the client. - Browedit Tutorial #10 - Adding a Custom Map to a Server Video Information: How to add your own personal map to a eAthena test server so you can test your own maps. - Browedit Tutorial #11 - Adding a Duplicate Model that Utilizes Custom Textures Video Information: Ever wanted to use a model in a map that doesn't come into conflict with another model. Perhaps for the sake of the maps theme? - Browedit Tutorial #12 - Quick Tips/Tricks & Useful Hotkey Info Video Information: Creating a new map can take a while. This tutorial will cover useful tips/tricks to reduce the development time of your map as well as avoiding long processes to complete a task. - Browedit Tutorial #13 - New Lightmaps Tutorial Video Information: This tutorial is a revamp of the previous lightmaps video tutorial. This particular tutorial is a more concise and easier to learn version of how to create lightmaps with ease in the areas of shadows/sun/colors/global lighting and light fixes. - Browedit Tutorial #14 - Making Slopes Video Information: This is a quick tutorial that explains how to create sloped terrain primarily based on ramps that can lead up to raised areas. It also shows how to make slopes on the edge of a map. - Browedit Tutorial #15 - Making Map Minimaps Video Information: Want to make a minimap that matches your coordinates perfectly whether it be a minimap with color or black/white gradient? Well this tutorial will cover just that! - Browedit Tutorial #16 - GAT Editing Video Information: Explains the main kinds of gats, how to place them, slope them, and what applications they are used in. - Browedit Tutorial #17 - 3ds Max Modeling [Acquiring Models] Video Information: A quick video covering several different sites you can get models for free that are supported by 3ds Max. - Browedit Tutorial #18 - 3ds Max Modeling [importing/Apply Textures to Model] Video Information: Using 3ds Max, you will be able to import models supported by 3ds Max, apply textures to them, and UV Unwrap the model to have it ready for RO. - Browedit Tutorial #19 - 3ds Max Modeling [Polygon Limit & Splitting Models] Video Information: RO has limits to how many polygons it can draw per model. This tutorial will explain what those limits are and how to split a model into parts. - Browedit Tutorial #20 - Exporting & Importing Lightmap Shadows for Editing Video Information: How to remove or add specific shadows on a map without having to redo all of the lightmaps through means of exporting & editing the shadow png file directly. - Browedit Tutorial #21 - Cleaning Up Shadows Along Walls & Ground Video Information: Didn't like the shadow drop across the edge of a map or lifted platform/wall? - Browedit Tutorial #22 - How to Create Transparent Objects Video Information: How to provide transparency in a model by means of TGA support. - NOTE: If you wish to see a certain topic covered in a future tutorial video, please make a request by leaving a comment in this thread!
    1 point
  8. As far as i know garments aren't affected by lua files unless your showing them as sprites - custom robe system. Assuming you skipped the scripts while pasting. the second field shouldn't have any spaces. Try 29991, Blue_Black_Valkyrie_Manteau,Blue Black Valkyrie Manteau,5,0,,500,,10,,1,0xFFFFFFFE,2,2,4,,1,1,0, Also name the item, collection, drop sprites as Blue_Black_Valkyrie_Manteau.* (if u plan to use bbvm.* then change the second field to bbvm as well).
    1 point
  9. its not th client, i just compiled a clean version of rathena, seems like theres something wrong with my own version... damn, now i have to sniff through every bit of src code ive created to see whats causing this issue Edit: okay fixed! thanks everyone, i noticed it was my custom mob_chat causing the problem, i didnt complete merging it to rathena, so it was partly working and it didnt want to listen to players broadcast anymore but only to mobs, lol XD Normally you would get a compile error if something is missing, but the merge replaced in clif.c the map_foreachinrange(npc_chat_sub, &sd->bl, AREA_SIZE, BL_NPC, text, textlen, &sd->bl); with my mob_chat's values function, instead of creating a new line instead. im glad i solved it
    1 point
  10. It's client-independent, so you are probably doing it wrong.
    1 point
  11. Added: WDGChatColorNormal WDGChatColorGuild WDGChatColorParty Controls both the own and others' chat color independently. I should have done that with the public chat as well, but I no longer feel like doing so. WDGChatColorSelf Dropped: WDGTranslateClientIntoEnglish Use WDGTranslateClient instead. binary builds, sources
    1 point
  12. Alt+H (Friend Windows) > Option > Disable 1:1 (*Forget if it's H or other key, just Friend Window. Damn!)
    1 point
  13. you can change the setting http://rathena.org/board/topic/68491-how-can-i-make-it-so-pms-show-up-in-the-chat-window-instead-of-new-windows/page__hl__%2Bchat+%2Bwindow
    1 point
  14. Change your BrowEdit resolution to more native 1, like 1024*768. Most widescreen resolution doesn't work.
    1 point
  15. Try ./configure --enable-64bit
    1 point
×
×
  • Create New...