Jump to content

Shogun

Premium
  • Posts

    1361
  • Joined

  • Days Won

    77
  • Feedback

    0%

Everything posted by Shogun

  1. Yeah that's it, with npc.get_vid() you can retrieve any information about the killed player such as the level. Anyhow nice release for users of older cores which are still many.
  2. The only problem I found with MySQL 5.6 is that the default config won't work for Metin2, after I overwrite it with my old one from 5.5 it's fine.
  3. Here are the event flags available up to Ymir's game 34083. Usage: /e eventflag value mob_dam [value] Set mobs damage (default 100) mob_gold, mob_gold_buyer [value] Set gold drop rate for free and premium* user (default 100) mob_gold_pct, mob_gold_pct_buyer [value] Set yang bomb drop rate for free and premium* user (default 100) mob_exp, mob_exp_buyer [value] Set experience rate for free and premium* user (default 100) mob_item, mob_item_buyer [value] Set item drop rate for free and premium* user arena_potion_limit [bool] Enable limit of potions that you can use in Musician's Yu-Hwan duel arena (thanks to TÜRK) arena_potion_limit_count [value] Number of potions that can be used if arena_potion_limit is true (thanks to TÜRK) eclipse [bool] Enable and disable night mode. gold_drop_limit_time [sec] Time in seconds before Yang can be dropped again (anti drop bot measure) guild_disband_delay [bool] Set a 24 hours waiting time after a guild is disbanded, for the members to join another guild. (Default: 1) (thanks to pedr0caz) guild_withdraw_delay [bool] Set a 24 hours waiting time after being kicked from a guild, for the player to join another guild. (Default: 1) (thanks to pedr0caz) hivalue_item_sell [bool] Value 1 enables sale of Blessing Marble and Perpetual Iron in shops. MonarchHealGold [yang] Amount of kingdom Yang required to cast Monarch Heal buff. personal_shop [tax %] Place a tax on private shop sales. The Yang goes to the Kingdom vault. 2006_drop [drop rate 1/x] Enable drop of Chinese New Year 2006 - Hexagonal Box (vnum 50037) 2007_drop [drop rate 1/x] Enable drop of Chinese New Year 2007 - Hexagonal Box (vnum 50043) dragon_boat_festival_drop [?] Enable drop of 50085 drop_moon [bool] Enable drop of moonlight boxes. Drop rate can NOT be changed! easter_drop [?] Enable/set drop of item 50160 to 50179 - Easter Egg (Thanks to miguelmig) football_drop [?] Enable/set drop of 50096 - Football Ball (World Cup GF event) (thanks to miguelmig) halloween_drop [?] Enable/set drop of 50095 - Pumpkin (thanks to miguelmig) hc_drop [drop rate 1/x] Drop rate of item 30178 - Gameforge event for the opening of Grotto of Exile (thanks to miguelmig) horse_skill_book_drop [drop rate 1/x] Set drop rate of Horse Skill books. kids_day_drop [drop rate 1/x] Drop rate of Puzzle box (50034) for low level players. kids_day_drop_high [drop rate 1/x] Drop rate of Puzzle Box (50034) for high level players. lotto_drop [drop rate 1/x] Enables drop of Lottery Tickets with unique numbers. The dropped ticket numbers can be found in player.lotto_list table for further processing. lotto_round [value] Choose a number to mark the lottery tickets with. This is useful if you want to run different Lottery events and make sure a ticket is not used twice. mars_drop [drop rate 1/x] Enable global drop of Perpetual Iron. newyear_fire [?] Enable drop of Chinese Fire Crackers (Chinese New Year event) newyear_mob [bool] Randomly spawns Hae-Tae in City 2 (Chinese New Year event) newyear_moon [?] Moon Paste event, enables drop of vnums 50016~50017~50018~50019 (Chinese New Year event) new_xmas_event [bool] Spawns the new christmas tree design in town. ramadan_drop [drop rate 1/x] Enable drop of bread (30315) for Gameforge Ramadan event. three_skill_item [drop rate 1/x] Set drop rate of Soulstones (from metins and bosses only) threeway_war_boss_count [value] Number of Elite Nine Tails that will be summoned for the winning Kingdom in Nation War. threeway_war_pass_idx [mapidx] Map index of Nation War pass map. This is filled automatically with a random map from the list in share/locale/whatever/forkedmapindex.txt; do not edit this event flag but change the txt file instead. threeway_war_sungzi_idx [mapidx] Map index of Nation War Sungzi map. This is filled automatically with a random map from the list in share/locale/whatever/forkedmapindex.txt; do not edit this event flag but change the txt file instead. valentine_drop [bool?] Enable drop of Chocolate and Roses whiteday_drop [?] Enable drop of items 50031 - 50032 xmas_boom [bool] Enable night mode, firework sound, and Event Helper (NPC selling fireworks) xmas_snow [bool] Enable snow. xmas_sock [drop rate 1/x] Enable drop of Christmas socks. xmas_song [bool] Play Christmas song everywhere. xmas_tree [0-3] Enable the original Christmas Tree NPC. 3 models available (1,2,3) * a premium user has an active exp/yang/drop bonus set through the account table (for noobs: the blue squares in the top left corner of the client) Note: "bool" means that it only accepts "false" (0) or "true" (any other number) as parameters. Yet unknown: fish_miss_pct gold_trade_cycle gold_trade_enable indepence_day japan_regen medal_part_drop user_dam user_dam_buyer crcdisconnect pre_event_hc refine_box guild_invite_limit refine_box_drop refine_box_low refine_box_mid refine_box_high drop_char_stone drop_char_stone.level_range dropevent.drop_char_stone drop_char_stone.percent_lv01_10 drop_char_stone.percent_lv11_30 drop_char_stone.percent_lv31_MX independence_day spawn_block_log threeway_war_choice threeway_war_kill_count threeway_war_dead_count xmas_santa guild_invite_limit manwoo fishevent poly update_refine_time If anybody knows their effect, or other event flags not listed here, please post and I will add it here
  4. Shogun

    Granny 2.8

    M2 Download Center Download Here ( Internal ) Today I bring you another exclusive release from Tim. This time is the granny.dll compatible with Granny 2.8 models and new binaries. Included for completeness is the already public granny DLL for the old binaries, and the bulkconverter.exe tool. What can I do with this? You can use granny models from any Granny version up to 2.8 in your client. How do I use this? Just replace the original dll in your client. Please note, it only works on original, packed client binaries. A tool (bulkconverter.exe) is provided so you can easily convert your current models to 2.8 for best performance. Usage: bulkconverter foldername Will convert all the gr2 files found inside foldername to v2.8 Granny format. Regards
  5. Some people reported a problem with item/mob proto extraction. After checking with Tim I realized I had forgotten something in my guide. You need to have <ScriptFile> tags in your xml. Guide and sample xmls are corrected now.
  6. Hello everyone, Since I have seen many private servers are still using the original, 2004 YMIR textures which are frankly ugly, I re-release here the update that was made in 2009 to some of the textures, trees and objects. A screenshot so you can see the difference in quality: 2004 Textures 2009 Textures [Hidden Content]
  7. M2 Download Center Download Here ( Internal ) Hey all, Today I will explain to you how to use different designs for your quest scrolls like WoM. Setting up the system 1) Copy your scroll designs to ui/game/quest/questicon in the client. I have attached the WoM scrolls as example. 2) Open uiCharacter.py and insert the code that appears between comments: if questCount > quest.QUEST_MAX_NUM: self.questScrollBar.Show() else: self.questScrollBar.Hide() for i in questRange[:questCount]: (questName, questIcon, questCounterName, questCounterValue) = quest.GetQuestData(self.questShowingStartIndex+i) # start colored scrolls if questName[0] == '*': questName = questName[1:] elif questName[0] == '&': questName = questName[1:] elif questName[0] == '~': questName = questName[1:] elif questName[0] == '+': questName = questName[1:] # end colored scrolls self.questNameList[i].SetText(questName) self.questNameList[i].Show() self.questLastCountList[i].Show() self.questLastTimeList[i].Show() 3) Open interfaceModule.py Replace this part: if locale.IsEUROPE(): btn.SetUpVisual(locale.GetLetterCloseImageName()) btn.SetOverVisual(locale.GetLetterOpenImageName()) btn.SetDownVisual(locale.GetLetterOpenImageName()) else: btn.SetUpVisual(buttonImageFileName) btn.SetOverVisual(buttonImageFileName) btn.SetDownVisual(buttonImageFileName) btn.Flash() # END_OF_QUEST_LETTER_IMAGE with this: if locale.IsSINGAPORE() or locale.IsEUROPE(): if name[0] == '*': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_blue.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_blue.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_blue.tga") name = name[1:] elif name[0] == '~': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_golden.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_golden.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_golden.tga") name = name[1:] elif name[0] == '&': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_green.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_green.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_green.tga") name = name[1:] elif name[0] == '+': btn.SetUpVisual("d:/ymir work/ui/game/quest/questicon/scroll_close_purple.tga") btn.SetOverVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_purple.tga") btn.SetDownVisual("d:/ymir work/ui/game/quest/questicon/scroll_open_purple.tga") name = name[1:] else: btn.SetUpVisual(locale.GetLetterCloseImageName()) btn.SetOverVisual(locale.GetLetterOpenImageName()) btn.SetDownVisual(locale.GetLetterOpenImageName()) else: btn.SetUpVisual(buttonImageFileName) btn.SetOverVisual(buttonImageFileName) btn.SetDownVisual(buttonImageFileName) btn.Flash() # END_OF_QUEST_LETTER_IMAGE Usage After you modified your client, there will be 4 color codes that you can use at the start of your quest's title to enable the colored scroll: Blue (*), Golden (~), Green (&) and Purple (+). You also have to add the q.set_icon function containing the filename of the scroll picture. Here is an example of how to make a quest scroll blue: when login with game.get_event_flag("worldbookday") == 1 begin send_letter("*World Book Day") q.set_icon("scroll_open_blue.tga") local v=find_npc_by_vnum(20023) if v!=0 then target.vid("__TARGET__", v, "Soon") end end And it looks like this: That's all you can also add new codes easily or use your own quest scroll designs. Enjoy!
  8. Shogun

    Pet - Parrot

    I like it too bad he doesn't talk yet
  9. Hi all, there are many different hosters around the world so I think it would be a good idea if we share our experiences hosting our servers or websites with them. I will start with my own reviews: Softlayer: Best support, expensive, they respond to DMCA requests and null route for 4 h on attack. Leaseweb: Cheap, average support, they don't null route you if you are attacked but they have general host failures constantly. No FreeBSD-aware staff. Worldstream: Cheap and reliable hardware, decent support, they null route you for 24 hours in the event of an attack. Check out their specials for extremely cheap dedicated servers.
  10. Shogun

    Pet - Parrot

    A screen maybe? A tip: edit the submission in the "Downloads" tab not this post.
  11. Hey I used FL Studio years ago. Just listened to Storyteller! Many melody changes, sometimes it even feels like a classical piece. You got some potential hits there if you work a bit more in the mastering. The strings are hiding the bassdrum and the bass a bit in my oppinion. You had musical lessons right?
  12. I have included the table in my post. Thanks for the heads up.
  13. They fit well in Metin, congratulations. Maybe we use them someday
  14. I think core 40k already has this function, correct me if I'm wrong.
  15. Update April 2020 I have modified the rules to allow ipv6 connections, and added some comments. Update: January 2021 New more exhaustive and optimized config, and more explanations Hello, As I had just posted the file without any explanation of it, which is not really useful unless you are already familiar with pf, I have added a little tutorial. Here is a sample pf.conf file that you can use as a base to create your own for your FreeBSD server. It assumes you are not using UDP as the original client does. Preliminary steps Add the following to /etc/rc.conf to enable pf. It will enable the pf firewall on boot and log blocked packets to /var/log/pflog. This is not a text file but a pcap file that can be opened using tcpdump -r /var/log/pflog (followed by any other flags you may want to use). For a good tcpdump cheatsheet check [Hidden Content] The second part is ip6addrctl which attempts to use ipv4 addresses instead of ipv6, since the game does not support ipv4. # Packet Filter pf_enable="YES" pf_rules="/etc/pf.conf" pflog_enable="YES" pflog_logfile="/var/log/pflog" # Prefer ipv4 when available ip6addrctl_enable="YES" ip6addrctl_verbose="NO" ip6addrctl_policy="ipv4_prefer" Firewalling The configuration file further below must be save as /etc/pf.conf (be aware the default location for pf rules may not be here anymore; if you used my rc.conf above that should be no issue). Before attempting to use it, make sure to change everything that is between brackets. You can find out the relevant parameters with the ifconfig command on FreeBSD. root@godzilla:/home/www $ ifconfig igb0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500 options=e53fbb<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU,VLAN_HWCSUM,TSO4,TSO6,LRO,WOL_UCAST,WOL_MCAST,WOL_MAGIC,VLAN_HWFILTER,VLAN_HWTSO,RXCSUM_IPV6,TXCSUM_IPV6> ether d0:40:19:d5:e3:69 inet 57.93.137.82 netmask 0xffffff00 broadcast 57.93.137.255 inet 57.93.114.128 netmask 0xffffffff broadcast 57.93.114.128 inet6 fe80::d110:99ff:fec4:e469%igb0 prefixlen 64 scopeid 0x1 inet6 2001:27d0:119:1872:: prefixlen 64 media: Ethernet autoselect (10Gbase-T <full-duplex>) status: active nd6 options=8063<PERFORMNUD,ACCEPT_RTADV,AUTO_LINKLOCAL,NO_RADR,DEFAULTIF> [int] is name of your external interface (ix0, igb0, etc...). It's the first thing that appears below ifconfig. [primary_ip] is the one after the first "inet" (in this case 57.93.137.82) [game_ip] is the one after the second "inet" (in this case 57.93.114.128) [ipv6] is the one you see after the second inet6. Finally, edit the service_ports, game_ports and auth_ports with the ports you want to open for administrative tasks and for the game, separated by commas. At the very least, add your SSH port to service_ports or you won't be able to connect to your machine. Why have 2 IPs? Easy: you cannot change your primary IP. If a DDoS brings down your machine, you can block all traffic to your secondary IP while working on protective measures through your primary IP. If all else fails you could even bind your game, or whatever you are running, to a third IP and hope the attacker doesn't notice (yeah sounds dumb but so is the people doing that stuff!). If you just have one IP, you may not be able to access your server at all. So the idea is that you access SSH and other administrative stuff through the primary IP while any public facing services go through a secondary IP or several of them. The OVH firewall can help you closing unneeded ports. Closing UDP there is also a very good idea if you don't need it - if you get a UDP flood bigger than your bandwidth, PF is not going to help you. When inbound traffic saturates your link, it's already too late to do anything at the OS level - it must be done by a hardware firewall or mitigation system such as the one provided in the OVH Panel (IP menu). If you prefer to use just one IP, you can just enter the same one as both primary and secondary. Or, if you want to do it properly, remove all references to $game_ip throughout the file. Also, if you don't have ipv6 set up, comment out (#) or remove every line that mentions "inet6". And finally, there is a file named /var/db/trusted_hosts which is a simple text file you can create with ee or vi. This is where you can add your own IP, or the IP address of other servers such as your webserver that you want to give full access without going through the rules. Write one IP per line, and be aware that your own IP could change so don't rely on this to give you access permanently - more like a fallback in case you make a mistake. ext_if="[int]" set skip on lo0 set block-policy drop set loginterface $ext_if primary_ip="[x.x.x.x]" game_ip="[x.x.x.x]" ipv6="[x:x:x::]" icmp_types = "{ echorep, unreach, squench, echoreq, timex, paramprob }" icmp6_types = "{ unreach, toobig, timex, paramprob, echoreq, echorep, neighbradv, neighbrsol, routeradv, routersol }" table <trusted_hosts> persist file "/var/db/trusted_hosts" table <bad_hosts> persist scrub in on $ext_if all fragment reassemble martians = "{ 127.0.0.0/8, 192.168.0.0/16, 172.16.0.0/12, \ 10.0.0.0/8, 169.254.0.0/16, 192.0.2.0/24, \ 0.0.0.0/8, 240.0.0.0/4 255.255.255.255/32 \ ::/128 ::1/128 ::ffff:0:0/96 ::/96 100::/64 \ 2001:10::/28 2001:db8::/32 fc00::/7 fe80::/10 \ fec0::/10 ff00::/8 }" service_ports="{ 21, 80, 443 }" # Game game_ports="{ 24000, 24001, 24002, 24010, 24011, 24099 }" auth_ports="{ 28000 }" ## Set default policy ## block return in log all pass in quick from <trusted_hosts> # Drop all Non-Routable Addresses block drop in quick on $ext_if from $martians to any block drop out quick on $ext_if from any to $martians block in quick from <bad_hosts> ## Blocking spoofed packets antispoof quick for $ext_if pass proto tcp from any to any port $service_ports pass inet proto icmp icmp-type echoreq # Allow essential outgoing traffic pass out on $ext_if inet proto { tcp, udp, icmp } pass out on $ext_if inet6 proto { tcp, udp, icmp6 } pass out on $ext_if inet6 proto icmp6 all icmp6-type echoreq keep state # Game, we do not ratelimit here pass proto tcp from any to any port $game_ports pass proto tcp from any to $ipv6 port $game_ports # Auth pass in quick proto tcp to $game_ip port $auth_ports keep state (max-src-conn 32, max-src-conn-rate 16/3, overload <bad_hosts> flush global) pass in quick proto tcp to $ipv6 port $auth_ports keep state (max-src-conn 32, max-src-conn-rate 16/3, overload <bad_hosts> flush global) ## allow icmp6 for getting address using IPv6 autoconfiguration from router pass inet6 proto ipv6-icmp all icmp6-type routeradv pass inet6 proto ipv6-icmp all icmp6-type routersol ## allow icmp6 for getting neighbor addresses pass inet6 proto ipv6-icmp all icmp6-type neighbradv pass inet6 proto ipv6-icmp all icmp6-type neighbrsol ## allow icmp6 echo, not required, but sometimes nice pass in inet6 proto ipv6-icmp all icmp6-type echoreq ## pass icmp-types: unreachable, time exceeded, parameter problem pass in inet6 proto ipv6-icmp all icmp6-type {1 3 4} Using pfctl pfctl as its name implies is a tool to control pf. There are plenty of cheatsheets online, but here's the most basic stuff: pfctl -e Enable pf (WARNING will drop all connections including yours) pfctl -d Disable pf (may have the same effect) pfctl -f /etc/pf.conf Reload rules (may drop connectionds as well but usually it shouldn't) pfctl -sa Show all status pfctl -t bad_hosts -T flush Flush the bad_hosts table (effectively unbanning all IPs banned by the ruleset) pfctl -t bad_hosts -T show Show all the IPs banned so far Using tcpdump with pf You may watch the packets being blocked in realtime by using tcpdump on the pflog0 interface: tcpdump -i pflog0 -ttt -n -e Or instead show the previously logged ones. You may probably want to filter the output with either grep or further tcpdump flags. tcpdump -r /var/log/pflog -n -e Extras Here are some sysctl tunings that may help with certain DDoS attacks. You cann add them at the end of /etc/sysctl.conf and then type service sysctl restart at the command prompt to activate those. I don't recommend doing so unless you're being attacked though. That's why I have commented them out - remove all the # if you actually need them at some point. #net.inet.tcp.syncookies=1 #net.inet.tcp.syncache.rexmtlimit=0 #net.inet.ip.check_interface=1 # verify packet arrives on correct interface (default 0) #net.inet.ip.process_options=0 # IP options in the incoming packets will be ignored (default 1) #net.inet.ip.redirect=0 # do not send IP redirects (default 1) #net.inet.ip.accept_sourceroute=0 # drop source routed packets since they can not be trusted (default 0) #net.inet.ip.sourceroute=0 # if source routed packets are accepted the route data is ignored (default 0) #net.inet.icmp.bmcastecho=0 # do not respond to ICMP packets sent to IP broadcast addresses (default 0) #net.inet.icmp.maskfake=0 # do not fake reply to ICMP Address Mask Request packets (default 0) #net.inet.icmp.maskrepl=0 # replies are not sent for ICMP address mask requests (default 0) #net.inet.icmp.log_redirect=0 # do not log redirected ICMP packet attempts (default 0) #net.inet.icmp.drop_redirect=1 # no redirected ICMP packets (default 0) #net.inet.icmp.icmplim_output=1 # show "Limiting open port RST response" messages (default 1) #net.inet.tcp.always_keepalive=0 # tcp keep alive detection for dead peers, can be spoofed (default 1) #net.inet.tcp.drop_synfin=1 # SYN/FIN packets get dropped on initial connection (default 0) #net.inet.tcp.fast_finwait2_recycle=1 # recycle FIN/WAIT states quickly (helps against DoS, but may cause false RST) (default 0) #net.inet.tcp.icmp_may_rst=0 # icmp may not send RST to avoid spoofed icmp/udp floods (default 1) #net.inet.tcp.msl=15000 # 15s maximum segment life waiting for an ACK in reply to a SYN-ACK or FIN-ACK (default 30000) #net.inet.tcp.path_mtu_discovery=0 # disable MTU discovery since most ICMP type 3 packets are dropped by others (default 1) #net.inet.tcp.rfc3042=0 # disable limited transmit mechanism which can slow burst transmissions (default 1) #net.inet.tcp.sack.enable=1 # TCP Selective Acknowledgments are needed for high throughput (default 1) #net.inet.udp.blackhole=1 # drop udp packets destined for closed sockets (default 0) #net.inet.tcp.blackhole=2 # drop tcp packets destined for closed ports (default 0) Disclaimer I am by no means an expert in the subject, and I have just a vague idea about what many of the settings are actually doing. The above stuff has been helpful in real life situations, having been through literally hundreds of DDoS attacks. Be aware that pf may lock you out of your own system, and you may need to use IPMI/KVM to gain access again by disabling pf in /etc/rc.conf and then fixing the errors. Use at your own risk. PS: Here is a very good writeup about modern DDoS attacks: [Hidden Content]
  16. M2 Download Center Download Here ( Internal ) The World of Metin2 Monarch System is composed of two parts. For the system to work fully you need to use db core 33820 or a compiled db where this bug is solved (look dif part at the end. If anybody wants to create difs for other revisions, you are welcome to do so.) Monarch Election Authors: Musicinstructor and me (Shogun) Usage: the election has 3 stages: Candidacy, Election and Crowning. All the stages can be started sucessively from the Archer Guardian NPC in town. - During Candidacy phase, all players over level 65 can apply for election by paying some Yang. Up to 8 players can apply per kingdom. - During Election phase, players will drop an item called Certificate of Loyalty (60004) which allows them to cast a vote. - Finally, you can finish the election, which will announce the winners automatically. The new King / Queen will receive a new Hwang Armor on login and the Angel's Blessing item. For the quest to work you need the following preparation: 1) Create an empty file share/data/monarch_election in your server with the touch command. 2) Fill the table player.monarch with some random values (use the PID of your GM for example). You can also use this table: DROP TABLE IF EXISTS `monarch`; CREATE TABLE `monarch` ( `empire` int(10) unsigned NOT NULL DEFAULT '0', `pid` int(10) unsigned DEFAULT NULL, `windate` datetime DEFAULT NULL, `money` bigint(20) unsigned DEFAULT NULL, PRIMARY KEY (`empire`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of monarch -- ---------------------------- INSERT INTO `monarch` VALUES ('1', '266', '2014-02-04 04:36:55', '0'); INSERT INTO `monarch` VALUES ('2', '188', '2013-11-07 20:10:00', '0'); INSERT INTO `monarch` VALUES ('3', '170', '2013-09-16 22:12:06', '0'); 3) Make sure 60004 exists in item proto and has a suitable icon for it. The quest Add this to locale.lua Add this also to questlib.lua Items for item_list.txt 60004 ETC icon/item/60002.tga item_proto.txt entries for the certificate, blessing and armors 60004 loyalty_certificate ITEM_UNIQUE UNIQUE_NONE 1 ANTI_GET | ANTI_DROP | ANTI_SELL | ANTI_SAVE | ANTI_GIVE | ANTI_PKDROP | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX LOG NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 604800 0 1 0 0 0 0 0 0 70021 ±ºÁÖÀÇ ÁõÇ¥ ITEM_QUEST 0 1 ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX NONE NONE NONE 0 0 0 0 0 LIMIT_NONE 0 LIMIT_NONE 0 APPLY_NONE 0 APPLY_NONE 0 APPLY_NONE 0 0 0 0 0 0 0 0 0 0 11971 Ȳ»óÀü°© ITEM_ARMOR ARMOR_BODY 2 ANTI_ASSASSIN | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 11972 ȲÀÇ ITEM_ARMOR ARMOR_BODY 2 ANTI_MUSA | ANTI_SURA | ANTI_MUDANG | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 11973 ÁøȲ»ó°© ITEM_ARMOR ARMOR_BODY 2 ANTI_MUSA | ANTI_ASSASSIN | ANTI_MUDANG | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 11974 Ȳ»óÀÇ ITEM_ARMOR ARMOR_BODY 2 ANTI_MUSA | ANTI_ASSASSIN | ANTI_SURA | ANTI_DROP | ANTI_SELL | ANTI_GIVE | ANTI_STACK | ANTI_MYSHOP | ANTI_SAFEBOX ITEM_TUNABLE WEAR_BODY NONE 0 0 0 0 0 LEVEL 50 LIMIT_NONE 0 APPLY_MOV_SPEED 10 APPLY_RESIST_MAGIC 20 APPLY_ATTBONUS_HUMAN 15 0 350 0 24 0 100 100 3 0 Angel's Blessing Quest written by me and loosely based in the official quest used by Metin2 US. This is the item the Monarch can use to cast his powers, such as healing and attacking buffs which affect all the players from his kingdom in the same map; or summoning of different bosses and Guardians which only attack players from enemy kingdoms. It's an original YMIR item and the vnum is 70021. Instructions are included in the quest for the rookie kings/queens. Preparation: 1) Set MonarchHealGold event flag to an appropiate value (this is the cost of a monarch buff that heals everyone on the map) 2) Edit the list of bosses and their cost to your desires The quest: The function oh.takemonarchmoney() used in the angel's blessing quest is bugged on all official db cores. This is fixed in Vanilla Core 2.2+. For db 33820 here is a dif made by Paylasici: [UNSTRIPPED] db_r33820_32 000A30DD: 3B 20 For db 40146 here's another dif made by PACIFICADOR db_r40146 000A5015: 3B 20 It is possible that something is missing in that case let me know here your answers are appreciated
  17. You can post your favourite websites for design resources here. Textures CGTextures I will start with a great site for realistic textures which is CGTextures ([Hidden Content]) which contains thousands of different surfaces and decals in very high resolutions, exhaustively sorted by categories. The textures up to 700x700 are free, for higher sizes you have to pay a small subscription free. Probably the biggest resource for seamless textures in the internet. Tools Paint.NET A great tool for simple image editing tasks. It's free and there are hundreds of plugins available for extending its features. [Hidden Content] Texture Maker 3 Advanced texture creation and editing tool. I found the Resampler tool in this program most useful for Metin2 textures as this allows you to convert a highly detailed texture into a less detailed ("zoomed out") texture. For example you can take a single flower texture with grass background and resample it into a full field of flowers. Download: [Hidden Content] UI Elements UICloud - [Hidden Content] UI Elements [Hidden Content]
  18. It's part of the concept of this board's team to respect and protect the users' privacy to every extent possible. For this reason, we have disabled features such as the member list and some profile custom fields.
  19. I wonder if they would work together at all. I had trouble installing the client for starters but didn't really spend much time on it. Maybe someone wants to gibe that a try.
  20. M2 Download Center Download Here ( Internal ) Today I have some more goodies for mappers / modellers Speedtree is the software used by Metin2 to render trees and other kinds of vegetation. Many games such as Oblivion, Ragnarok 2, Gran Theft Auto IV... use Speedtree 4, while Metin2 uses the older Speedtree 3. It's possible to import Speedtree 4 models for Metin2 by loading and saving them with SpeedtreeCAD 3. A pic of the tool: In this pack you can find Speedtree CAD Lite 3 and Speedtree CAD 4 and their respective plugins for 3DSMAX. CAD [Hidden Content] Plugins [Hidden Content]
  21. M2 Download Center Download Here ( Internal ) To get the ball rolling on this forum, here is a real oldschool release, the original Metin2 client for the chinese Beta in 2004. Download: [Hidden Content]
  22. M2 Download Center Download Here ( Internal )
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.