Jump to content

Leaderboard

Popular Content

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

  1. Disable skill or item usage in certain maps. Add a new txt in your db folder.. item_mapdeny.txt //<nameid>:<map1>{,<map2>,<map3>,<map4>,...} //Disables Red Potion usage in Prontera and Payon 501:prontera,payon skill_mapdeny.txt //<skillid>:<map1>{,<map2>,<map3>,<map4>,...} //Disables skill TF_HIDING usage in Prontera and Lighthalzen 51:morocc,lighthalzen That's it, nothing much to say. skill_and_item_mapdeny(rAthena17100).diff skill_and_item_mapdeny(rAthena17100)_v2.diff - Supports multiple maps per line skill_and_item_mapdeny(rAthena171278).diff Please click the button if I have helped you. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    3 points
  2. -[Client Hexing Tutorial by nkwz*]- Hi! This is a tutorial for those who are interested in learning how to edit your client.exe from beginning. This tutorial will be divided into several topics: 1. Introduction 2. Basic Knowledge 3. Tools 4. Client Editing 5. Help the rA Community! 6. Credits I want to share my knowledge about client hexing, and I'd like to make this project as an rA Community Project. It's better to have more people joining this project, because it needs lots of effort for making a fully translated client. Suggestion and questions are always welcomed, and sorry for my poor English 1. INTRODUCTION rAthena is one of the popular Ragnarok Online emulator, some of you maybe already know about other emulators such as eAthena or 3CeAM. In order to play RO, we need something named as server and client. rA, eA and the others are Server. kRO, Miruku and the others are Client. Actually you can find another custom client package, just search throughout this forum and you'll find some. Most of rA codes based from kRO, not iRO. And that's why some of the original client (not hexed yet) comes with lots of Korean words hardcoded inside them, although some part of it is already translated into English but we still need to convert Korean letters into Latin first. I recommend to translate the client from Korean into English first, because it'll be easier if you want to translate your own client.exe into your native language later. 2. BASIC KNOWLEDGE 2a. Numeral System In our daily life we use a "Base 10" numeral system, called as Decimal. It goes from 0,1,2,3....10,11,12.... But in programming world, there's also other numerical bases such as: Binary (Base 2), Octal (Base 8), Hexadecimal (Base 16). In Decimal, we count from 0-9, when we add another 1 into 9, the result is 10. In Binary, it only have 2 numbers, 1 and 0. 1 Decimal = 1 Binary, 2 Decimal = 10 Binary. 3 --> 11, 4 --> 100, 5 --> 101, 6 --> 110, 7 --> 111, 8 --> 1000. In Octal is the same, they only have 0-7, there is no '8' in this numeral system. What about Hex? It's Base 16 right? How many numbers do they have in this numeral system? Of course 16. But what to come after 10? Hex has a special case, because Hex borrows 10 numbers from Decimal (That is 0-9) and also borrows 6 letters from Latin (A-F). So if you add 1 into 9, it doesn't become 10, instead it will becomes A. 0,1,2,3.....9,10,A,B,C... What to expect if you add 1 into F? Guess what, it becomes 10! So, 9 Decimal --> 9 Hex, 10 --> A, 15 --> F, 16 --> 10, 50 --> 32, 100 --> 64. That's why they are called as "Base x", x means how many numbers they have in their numeral system. 2b. File Structure This topic isn't necessary though, but I just want to help you to understand how executable file works. There are numerous of file types in nowadays computing world, starting with the widely known txt, mp3, avi, jpg, bmp, xls, exe. This time, what we need to know is only about exe files. In Windows, almost all of applications are 'exe' files. Coders/Developers write out codes in either Low Level Language or High Level one, and after that the codes are compiled into something that we (computer user) could use without knowing anything about programming language. When the exe file is being compiled, it also store something which called as "Header" in it's beginning lines. Different compiler generates different header too. One of the header contains filesize checksum, so that's why we can't edit exe file freely as we want to, because if we're not aware about this problem, our exe file won't work at all... 2c. Hardcode vs Softcode What on earth is that? Hardcode means the code is read from the file itself. So if we want to alter the code, we need some special tools. The case is different for some codes (that some people prefer to call as 'Softcode'), those type of code can be altered because the exe file reads them from outside of the file, the notable example is 'msgstringtable.txt', when you alter the word in that file, you can see the changes when you run your client.exe So when next time someone replied in a post "It's hardcoded in the client", you know exactly what it means 3. TOOLS If we want to edit our client.exe we need some tools, such as: - Hex Editor (Obviously ;P) - Text Processor (I use Notepad++ [set encoding to UTF-8]) - Calculator (Optional) - nkwz rA Toolkit --> http://rathena.org/b...kwz-ra-toolkit/ - Charmap.exe (Can be found in every PC that uses Windows) You can get those tools in the internet. Freeware is okay too.. 4. CLIENT EDITING Phew... After reading those exhausting topics, here we are.. (Afterall I guess that's why you're reading up to this point). First, get some 2012 client.exe. For example here, I use '2012-04-10aRagexeRE.exe', any 2012 version will do, as long as the client developer doesn't change the file structure (>_<') Then open your client.exe in hex editor, you'll notice 3 sections. The leftmost part is called Offset, the middle part is Hex stream/data, the right part is ASCII data. Offset is like a location pointer, and they're increasing if we scroll down. Still remember about Hex numeral system on previous topic? Well.. here they are, the heart of every exe files, hex! The right part is just a translated code from hex into Latin characters, so some of the data can be more understandable to human eye. The problem is the client.exe comes from Korean developers, so they use their native language, Koreans! That's a nightmare for those who doesn't live in Korea... (Yes it is! ) But if the developer creates an English version, then why am I writing this tutorial? Anyway back to the topic... Hmm.. Make a copy of your client.exe, open one client.exe in hex editor, and run the other one. After you login with correct username and password, there's the Char Selection window, go create a new char. Look, our first Korean word has appeared! If you hasn't install the Korean Language pack, you'll see this "Äɸ¯Å͸¸µé±â" (Note: I uninstall my Korean Language pack in order to see those letters). Open charmap.exe, use Arial font (or another font if you want), and find that strange letters one by one. (I know this is exhausting, that's why I want to make this project as a Community Project). After you double click each letter found in charmap, you should have all (or some) of the strange letters, well this part is a little tricky because your eye have to be good to see the correct letter, if you picked a wrong letter in charmap, then your conversion process won't be a success. After you collect the letters in charmap, then open 'nkwz rA Toolkit.exe', and you'll see 2 boxes, one is Input Hex, and the other is Input Latin. Paste the letters into 'Input Latin' and voila! You have those secret codes showing in Output Hex! Äɸ¯Å͸¸µé±â --> C4C9B8AFC5CD20B8B8B5E9B1E2 Then go back to your hex editor, search for 'C4C9B8AFC5CD20B8B8B5E9B1E2' (or some part of it), and if you're lucky, then you'll find the position, if not then you'll need to meet an Arch Bishop and request Gloria for Luk+30... Please note that some hex editor can't highlight all of the code even when it's found, so you'll have to see carefully. Look at the nkwz rA Toolkit, at the bottom of the program I also have write a simple line about how many chars that has been converted in the process. Then think about some name that would fit in the game, in http://rathena.org/b...r-2012-clients/ Razor X and Judas picked 'Create Player'. Back at the nkwz rA Toolkit, type Create Player in the Input Latin, and voila again! Suddenly some magical numbers appeared in Output Hex! Important: Look at the bottom part, 'Latin: 13 char'. Make sure you use same amount of chars as the replacement! If you plan to use other name that is shorter that the original, just add some space to the end at Input Latin, so the char amount is the same like hex chars. The next thing after your convert 'Create Player' or 'Create a Char' into hex, let's go back at the hex editor and edit the value according to the generated value in nkwz rA Toolkit in Output Hex. After that, save it and run the file to see if your changes has been made correctly into the client.exe Congratulations! Now you can make your own 2012 client.exe.. ^________^ And that's a wrap! 5. HELP THE rA COMMUNITY! As like I said earlier in this tutorial, I'd like to make this as a Community Project. How to join? Just post a decent and readable screenshot of Korean garbled letters, and also the location of the window/skill/item/chat window info so it's easy to find it in the game, then help us to find the letter in charmap.exe and paste it here, just follow the example post. After that, think of a good name as the replacement (in English please) If you can't think about it now, don't worry, someone may have a good name for it. 6. CREDITS This tutorial is written by me, after I read this post --> http://rathena.org/b...r-2012-clients/ I got inspired to write this tutorial. I wrote down the codes which floating in my head last night, and that's how 'nkwz rA Toolkit' was made. Umm.. I compress the exe file with UPX, and some antivirus app doesn't like a file with UPX compression D: Thanks to Razor X for his inspiring post Thanks to Utada Hikaru, Ayumi Hamasaki and also Winamp! ^^ You can call me as nkwz* too, and btw I don't have any Twitter/Facebook account ;P Thanks for reading this tutorial and let's add more power to rA! Example: Image: Location: Login --> Create a new char Korean: Äɸ¯ÅÍ ¸¸µé±â Hex code: C4C9B8AFC5CD20B8B8B5E9B1E2 English Suggestion: Create Player / Create a Char
    1 point
  3. File Name: Denny's Map Pack File Submitter: Ridley File Submitted: 17 Jul 2012 File Category: Maps & Textures Content Author: Denny Full Credit's to Denny who made these maps, I'm just sharing them (of course with her permission) :> This Map Pack Contains: Glastheim Restored Uncursed Glastheim. All textures are cleaned, light maps edited, models changed. The Map comes with: - 10 Indoor maps - text file with all the warps for the indoors. - BGM that I felt will be a proper for the map Glastheim Winter Add-on Simple textures edit. You will still need the restored version first. Geffenia Restored Geffenia (or part of it anyway). The server where it was used had three races living there thus the map appears as if divided between elves and fiaries. Map comes with: - Indoor map. - text file with all the warps for the indoors. - BGM that I felt will be proper for the map. - Couple of NPCs - Mini Map Yggdrasill Tree Village A village situated at the Yggdrasill Tree`s roots. It is supposed to go with Geffenia. The Map comes with: - Mini Map Heidelberg Village situated south of Glastheim. It is meant to go with the Glastheim map. It is rather huge for a village actually. Map comes with: - Mini Map New Prontera A redesigned Prontera and I don`t mean retextured. This map is not meant to be placed over the old Prontera map. Sadly I lost the warp fixes so you have to adjust the warps on your own. Map comes with: - BGM that I felt will be proper for the map. - Mini Map Izlude Fair Izlude map redesigned for a fair. You know, like in Chrono Trigger only not as cool and awesome.Map comes with: Simple Arena Map Well if you want a simple medieval arena with like thrones for the royalties for whatever reasons, feel free to use this one. Map comes with: - BGM that I felt it will be proper for the map Shroom Underground Village A village for a race or people who live under ground. Base used for this was the cave map. Map comes with: - BGM that I felt it will be proper for the map. - Mini Map Click here to download this file You can also find the files on http://insanesoft.org
    1 point
  4. In many script, it's useful to check if a player is idle. checkchatting() and checkvending() exist, is it possible to add checkidle command ? Just an idea~
    1 point
  5. Made from the latest rAthena release. This is my own implementation of the item "Scroll of SProtect" of Flyff to Ragnarok. I don't know if you'll find this useful, but I'll release it anyway. Scroll of SProtect item image : Description: Sprotects are used to prevent items from breaking during an upgrade for an item over +4. They are useful for Armor and Weapon Upgrades. You have to use this item script to activate sprotect. sc_start SC_SPROTECT,10000000,0; This is an initial release, there are probably bugs lying around there somewhere. Download v2sprotect2.diff V1 - Initial release V2 - Added the diff for refine npc.
    1 point
  6. Uhmm basically that's the idea You're welcome
    1 point
  7. It's like platinum skills, you can read the example
    1 point
  8. Your request is too complex, about aura, you can use if + specialeffect2 + some labels, such as OnPcLoginEvent, OnLoadMapEvent and such. About title, try @fakename
    1 point
  9. The files I refered where for the old client behavior. Good to know that you find the ones for yours.
    1 point
  10. you can try ROC SHield http://jiidesignstudio.com/roclient-shied-protect-your-server-from-cheater.html
    1 point
  11. http://rathena.org/board/topic/74896-help-hat-maker-quest/#entry162085
    1 point
  12. EXCELLENT! I was trying to get a chance to rewrite my student's script I actually don't like people showing off their paid scripts where the solution isn't shown to publicif you want to do that, please do it in PMs otherwise, I'm rewriting your script getstorageitem patch http://pastebin.com/raw.php?i=XsYif6tL item script update item_db_re set script = concat( script, ' callfunc "restock_pot", 501;' ) where id = 501; npc script function script restock_pot { .@restock_rate = 5; if ( !countitem( getarg(0) ) ) { if ( countstorageitem( getarg(0) ) >= .@restock_rate ) { delstorageitem getarg(0), .@restock_rate; getitem getarg(0), .@restock_rate; } } return; } no need to add another event label like OnPCConsumeEvent: can just do it with callfunc or doevent update item_db_re set script = concat( script, ' callfunc "restrict_item";' ) where id = 501; function script restrict_item { if ( strcharinfo(3) == "guild_vs2" ) warp "SavePoint", 0,0; return; } I'm trying to rewrite this noitem mapflag also ... give me some time
    1 point
  13. I support this suggestion. Since sd->idletime already exists, it would be easy to expose that data to a script command and @command. I agree.
    1 point
  14. No problem. You know, I hesitated to post a link about basic scripting ! XD (I'm kidding)
    1 point
  15. http://pastebin.com/gkmghfVk
    1 point
  16. There's already @mapflag (set/remove mapflags) and @mapinfo (display map data, including mapflags). o:
    1 point
  17. data/Texture/À¯ÀúÀÎÅÍÆäÀ̽º/Login_Interface/win_login.bmp data/Texture/À¯ÀúÀÎÅÍÆäÀ̽º/Login_Interface/win_selectmap.bmp data/Texture/À¯ÀúÀÎÅÍÆäÀ̽º/Login_Interface/win_service.bmp
    1 point
  18. thx for calculation dear Ok sorry.. but this didnt happened before, but don know why it suddenly my player got error. P/S , alrady changed. it gives out reward, but some players still errors if they still got error, im pretty sure their kro folder out of date, pls get the latest kro released on 01/01/2013 here http://www.nickyzai.com/?p=kro p/s: if u dont mind can u give me the link to ur server?
    1 point
  19. Always check trunk/sql-files/upgrades/ if you receive SQL errors from updating. You're probably missing: trunk/sql-files/upgrades/upgrade_svn17080.sql trunk/sql-files/upgrades/upgrade_svn17086.sql
    1 point
  20. In my opinion using scripted statuses would not reduce performance significantly (of course they would not perform as good as hard coded ones, but I doubt that overhead would be noticeable even for popular servers). However maintaining scripted statuses would be easier.
    1 point
  21. 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.
    1 point
  22. 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
  23. Gravity, through Warp Portal filial, has reverted back to non-renewal game. So, Ragnarok Online does have a non-renewal option for the game. They called it "Ragnarok Classic".
    1 point
  24. if anyone can capture the packets and document it why not add.. @char.c #if PACKETVER >= 20110309 // PIN code system, disabled WFIFOHEAD(i, 12); WFIFOW(i, 0) = 0x08B9; WFIFOW(i, 2) = 0; //new pin?? WFIFOW(i, 4) = 0; //confirm pin?? WFIFOL(i, 6) = sd->account_id; WFIFOW(i, 10) = 0; // pin?? WFIFOSET(i, 12); #endif EDIT: anyway already found it.thanks to openkore community[kLabMouse] // packet: 0x8b7 // len: 10 struct PACKET_HC_SECOND_PASSWD_REQ { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long AID /* this+0x6 */ unsigned long Seed } // packet: 0x8b8 // len: 12 struct PACKET_CH_SECOND_PASSWD_ACK { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long AID /* this+0x6 */ char SecondPWIdx[6] } // packet: 0x8b9 // len: 4 struct PACKET_HC_SECOND_PASSWD_LOGIN { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned short Result } // packet: 0x8ba // len: 16 struct PACKET_CH_MAKE_SECOND_PASSWD { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long AID /* this+0x6 */ unsigned long Seed /* this+0xa */ char SecondPWIdx[6] } // packet: 0x8bb // len: 4 struct PACKET_HC_MAKE_SECOND_PASSWD { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned short Result } // packet: 0x8bc // len: 16 struct PACKET_CH_DELETE_SECOND_PASSWD { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long AID /* this+0x6 */ unsigned long Seed /* this+0xa */ char SecondPWIdx[6] } // packet: 0x8bd // len: 4 struct PACKET_HC_DELETE_SECOND_PASSWD { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned short Result } // packet: 0x8be // len: 16 struct PACKET_CH_EDIT_SECOND_PASSWD { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned long AID /* this+0x6 */ unsigned long Seed /* this+0xa */ char SecondPWIdx[6] } // packet: 0x8bf // len: 4 struct PACKET_HC_EDIT_SECOND_PASSWD { /* this+0x0 */ short PacketType /* this+0x2 */ unsigned short Result }
    1 point
  25. Please go to your conf/battle/items.conf // Do produced items have the maker's name on them? (Note 3) // 0x01: Produced Weapons // 0x02: Produced Potions // 0x04: Produced Arrows // 0x08: Produced Holy Water/Ancilla // 0x10: Produced Deadly Potions // 0x80: Other produced items. produce_item_name_input: 0x03
    1 point
  26. A lot of our updates apply to both pre-Renewal and Renewal. From a developer standpoint, updating multiple copies is incredibly annoying (the period when the npc/ directory was completely split pre-re/re was plainly nightmarish).
    1 point
  27. About script commands: Add: hasuniqueitem(<item uid>) // check if you have it in your inventory deluniqueitem(<item uid>) // delete an item Modify: getitem() / getitem2() / rentitem() // return item unique_id - getitem 1201, 1 {, .@output_uid_array }; getinventorylist() - add an uid array to the list. successremovecards / failedremovecards / successrefitem / downrefitem - keep the item uid And maybe add an optional "unique_item" argument to getitem2() to get RID of auto-magnifier NPC (delete item -> create item) ? So now we can get RID of scripts like npc/jobs/2-1/blacksmith.txt: mes "[Geschupenschte]"; mes "Oh, you should make sure that you are not carrying ^FF0000more than one "+getitemname(.@items[6])+"^000000, you should really only have an "+getitemname(.@items[6])+" that you bought from an NPC shop in your inventory."; next; if (select("Oh, could you give me a second?:Oh, I brought what you asked for.") == 1) { mes "[Geschupenschte]"; mes "Hmmm, it would be"; mes "a good idea to put the"; mes "rest of your items"; mes "in Kafra Storage."; close; } Or to check integrity of an item you give to someone. Well just some ideas.
    1 point
  28. Year-End Digest 2012 The following digest covers November and December 2012. As many of you are aware, a lot of changes have taken place in these past two months. This digest offers a summary of major events. Administration Arcenciel has been promoted to Administrator. Maki has been moved from Administrator to Forum Manager. Ind has been moved from Administrator to Core Developer. Kenpachi has been moved from Administrator to Script / DB Developer. Jman is no longer Administrator. Managers Euphy has been promoted to Script / DB Dev Manager. Cookie has been moved from Core Dev Manager to Core Developer. Akkarin is no longer Documentation Maintainer. Development Team The following have joined as Core Developers: MarkZD, mkbu95, Zephyr, Aleos [*]The following have joined as Script / DB Developers: Gennosuke Kouga [*]The following are no longer Core Developers: Castor, Epoque, Igniz, Protimus, Salepate, Wildcard, Xantara, xazax [*]The following are no longer Script / DB Developers: Daegaladh, JayPee, jTynne, Kisuka, Spyra Development Highlights Major Renewal updates: Homunculus S skills implemented (r16914) Elemental summons update (r17014) Renewal MATK formula (r16981) Renewal Def/MDef formulas updated (r17062) [*]Major script updates: All third job quests updated and standardized (r17028) El Dicastes scripts updated to official scripts (r17009) Gradual implementation of Malangdo scripts (r17056, r17060) Initial implementation of Somotology Laboratory F4 quest (r17063) [*]Other noteworthy changes: Optional size and AI parameters added to mob spawn (r16904, r16962) New @commands: @clearstorage, @cleargstorage, @clearcart (r17029) @breakguild, @hommutate (r17038) @refreshall (r17035) @cleanarea (r16971) [*]Item database milestone (r16940, r16955) [*]Safer multiplication in battle formulas (r17004, r17017) [*]Checkweight modified to allow multiple parameters (r16941) [*]'npcskill' command added (r17048, r17049) [*]Cleanup of console messages (r16936) [*]HTML readme files replaced with README.txt (r16976) Misc. Stats During the period there were 213 commits. Of these 213 commits 107 included bug-fixes.
    1 point
  29. @Emistry. and @ All Thanks. this problem fix. I want share this script. http://pastebin.com/tS8tUYWu
    1 point
  30. /lua files/datainfo/helpmsgstr.lua
    1 point
  31. I disagree kinda hard to explain why, but IMHO it should be done by those who want to and not come by default in rA. PS: I do use this mod, but still don't see the need to implement it
    1 point
  32. The second is reported as down , here.. more clients (: - http://kro.nickyzai.com/
    1 point
  33. run_script() as OnPCStatCalcEvent as npc name ? o.O this sounds like this label no able to run more than twice test ... - script kjfhsdfkjhsd -1,{ OnPCStatCalcEvent: bonus bstr, 10; end; } - script kjhdfkjsdfh -1,{ OnPCStatCalcEvent: bonus bagi, 10; end; } - script fjfkjsdfskdfj -1,{ OnPCStatCalcEvent: bonus bvit, 10; end; } can't reproduce error o.o well watever if it works just fine
    1 point
  34. The file is in the System folder, it is "Towninfo.lua", simply comment out the npc coordinates. if they show up in Korean it is because this file is not translated. I have a translated file if you want it, or if you prefer you can comment out the coordinates or just erase everything in the file. Comment out like so: prontera = { -- { name = "Kafra Employee", X = 146, Y = 89, TYPE = 6 }, -- { name = "Kafra Employee", X = 151, Y = 29, TYPE = 6 }, -- { name = "Kafra Employee", X = 282, Y = 200, TYPE = 6 }, -- { name = "Kafra Employee", X = 29, Y = 207, TYPE = 6 }, -- { name = "Kafra Employee", X = 152, Y = 326, TYPE = 6 }, -- { name = "Guide", X = 154, Y = 187, TYPE = 4 }, -- { name = "Guide", X = 282, Y = 208, TYPE = 4 }, -- { name = "Guide", X = 29, Y = 200, TYPE = 4 }, -- { name = "Guide", X = 160, Y = 29, TYPE = 4 }, -- { name = "Guide", X = 151, Y = 330, TYPE = 4 }, -- { name = "Tool Dealer", X = 134, Y = 221, TYPE = 0 }, -- { name = "Weapon Shop", X = 175, Y = 220, TYPE = 1 }, -- { name = "Blacksmith", X = 179, Y = 184, TYPE = 3 }, -- { name = "Inn", X = 204, Y = 191, TYPE = 5 }, -- { name = "Inn", X = 107, Y = 218, TYPE = 5 } }, Incidentally... I've started using this for my own custom NPCs.
    1 point
×
×
  • Create New...