Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 07/12/14 in all areas

  1. jTynne's @go Command Alternative In .txt Format! This is my custom alternative to @go that allows end users the ability to EASILY add/change @go locations on the fly without the need to edit any source files OR recompling/rebooting their server. This is a highly customizable script that is pretty straight-forward in its coding. You can easily add in or adjust existing @go locations in seconds. Please Note: This will replace the default @go command when loaded in-game! Instructions / Customization To use? Simply upload and @loadnpc the file in-game and @go will be modified. If you wish to add in a new @go location, all you have to do is add a new entry following the format noted below: if(@warp$ == "35" || @warp$ == "ecl" || @warp$ == "ecla" || @warp$ == "eclag" || @warp$ == "eclage") { callsub Process,"eclage",110,39,0,0; } if(@warp$ == "36" || @warp$ == "ser" || @warp$ == "sere" || @warp$ == "seren" || @warp$ == "serenglade") { callsub Process,"serenglade",34,82,0,0; } As noted in the text in red above, you add in a number higher than the current highest value (in the script currently, Eclage is 35, so to add in a custom location, simply add in a value of 36, customize the text based warp strings you want (for @go 36, in the above example, you can either use @go 36 or @go ser @go sere @go seren or @go serenglade, and all will teleport you to the same location of serenglade <34,82>). Planned for future releases: - Additional options GM's can set for the command in the header. (Re-use delay, price per use option) Version History : Current Version 2.0 2.0 Dec 31st, 2012 : http://www.jtynne.com/rAthena/scripts/gobind_v2.txt 1.0 Dec 29th, 2012: http://www.jtynne.com/rAthena/scripts/gobind.txt Please report any bugs you may find, and/or if you have any requests / suggestions for the script as a response to this thread. Thank you! (Please +1 me if you enjoy this script~)
    1 point
  2. O IPB tem um bug por isso nao apareceu o que eu digitei depois do code, voce vai ter que alterar o script tambem, o mooka criou uma funcao no script pra que toda vez que alguem desse um kill contasse, voce vai ter que mexer nessa funcao pra pegar a classe, acho que nao eh tao dificil, mas voce vai precisar da uma lida na pasta doc
    1 point
  3. http://rathena.org/board/files/file/3201-valkyrie-helm/
    1 point
  4. I find better to learn how to install a server by yourself and hire a real hosting company. These guys are just individuals, with no real terms or disclaimers to keep on the line. With that being said, I've noticed that a lot of people that offers paid services, tends to show an exagerated "professional" presentation of theirselves. Even so, lying, when they refer as a group and they talk in terms of -plural- (like saying, -we- instead of -me-) I'm sure they could lie to even say, that they run an office of their "professional" business. I don't find why people has to lie to show a professional service. You can say, they are scamming you already by doing that.
    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. 1st use 'CheckSum.exe' to calculate the 'CRC' of your patcher: example, my patch is: Myro.exe the crc is 12345678 my new patch crc is: 87654321 2nd i must to make a 'newpatch.thor' using thor maker 3rd, to update my clients to new patch i must to change my 'main.ini' hosted on my ftp server [Patch] //use CheckSum tool, hash for client & patcher // used to make sure exe is up to date // (leave empty to disable this feature) ClientSum= PatcherSum=87654321 //This is compressed file for patcher & client update // To make these work, ClientSum and/or PatcherSum can't be empty // Note: these files should put same place as patch file (file_url in internal config) //Relative address, not FULL URL! ClientPath= PatcherPath=newpatch.thor remember, u don't need to change your plist.txt sorry for my bad english...
    1 point
×
×
  • Create New...