Requirements:
Basic networking skills - you know what a packet is, how they move using a TCP/IP protocol and know how to enable redirection for them in a router/firewall to a specified ip/port.
SQL 2005+ - all my scripts are made using SQl manager 2005, if they don't run for you, it's your issue for using ancient software.
Basic SQL skills - You know what sql is, know how to connect to a server using SQL manager and know how to execute update/insert scripts or how to manually add columns to a table. If you see a sql related error, you can identify it and read out the underlaying issue for it. In 99% cases you can solve all sql related issues yourself.
English to atleast a understandable degree - if you have issues, i have no interest in trying to decode your google translated messages.
1. Networking
rSec is a TCP/IP network application working like a packet forwarder where all the game connections/packets run thru rSec. This means that rSec listens on some ports and the game is forced to connect to rSec listening ports rather than the gameservers. This is mostly easy to set up except for the auth server port which is hardcoded into the game client and the server.
For the following examples lets assume the client is on the ip 1.2.3.4 and the server is hosted on 10.10.10.10
This is a lifecycle of a game session normally:
a. Login/server list query - 1.2.3.4:xxxxx -> 10.10.10.10:10101
b. The server sends back all the server names and ips the client can connect to
c. The game client is launched with the auth ip as the parameter
d. User & pass check - 1.2.3.4:xxxxx -> 10.10.10.10:10110
e. Character is selected, the server tells the client on which ip and port to connect <- port redirection tool hooks up here
f. The client connects to the named ip and port and the game is connected
This is the lifecycle of a rSec powered server:
a. Login/server list query - 1.2.3.4:xxxxx -> 10.10.10.10:10101
b. The server sends back all the server names and ips the client can connect to
c. The game client is launched with the auth ip as the parameter
d. User & pass check - 1.2.3.4:xxxxx -> 10.10.10.10:10110 (rsec is on this port, auth server is edited to 10111 ex.)
e. rSec connects from 10.10.10.10:10110 -> 10.10.10.10:10111 and forwards the auth packet and sends all info from the server back to the client
f. Character is selected, server sends the ip:port on which to connect to rSec (10.10.10.10:10111->10.10.10.10:10110)
g. rSec looks up the server list in Options if any of the targets matches sent ip:port. If it does then the info is changed to rSec ip and port. This way the client will connect to rSec which then inturn will connect to the server its meant to.
h. The client connects to rSec - 1.2.3.4:xxxxx -> 10.10.10.10:10312
i. rSec connects to game server - 10.10.10.10:10312 -> 10.10.10.10:10212
2. Options
Most of the changes in this form take affect when rSec is restarted.
General
RYL data folder - Point this to the folder where you keep your scripts, be it in Realease\Script\Game or in rSec folder, doesnt matter aslong the scripts are kept up to date.
Version - select your game version, or closest to it from here. This modifies the inner workings of rSec to know in what form the data is coming. Many packets are very different between different versions of the game. So if you're getting some odd Parse errors in the log, it's most likely cose the game version is wrong.
rSec Username - with this you can set the username under which any of the rSec plugins will whisper to the players. It highly depends on the plugin if it supports chat or not. Mostly used for IRC plugin.
Save log into file - Enable and set a file if you wish to save your rSec log. It is highly reccommended you use this option incase something happens with rSec, you can post your log/snippet on the forum.
Server
Read networking from above to understand how this works.
Listening port - This is the port rSec will open. This port CAN NOT be in use.
IP - This is the IP which rSec will connect to. By default use 127.0.0.1 for localhost.
V - This button starts a cmd>ping for the written ip to test if it is correct and can be reached.
Port - The port on which rSec will connect on the remote host. This will be any of your ryl game server ports.
Add - Adds a new rSec connection onto the list with the inserted information in listening port, ip and port.
Remove - Removes the selected rSec connection from the list.
Double click on the list - opens the selected item info in the above textboxes.
Default list for ryl2:
10110 -> 127.0.0.1:10111 - auth (auth server hex edited to 10111)
10304 -> 127.0.0.1:10204 - zone 4, prison
10308 -> 127.0.0.1:10208 - zone 8
10312 -> 127.0.0.1:10212 - zone 12
10316 -> 127.0.0.1:10216 - zone 16
These are the ports you normally port-forward in your router. When using rSec you should block those ports in your router or firewall (except for login) so people don't find some loophole to connect to your gameserver directly bypassing rSec. Also rSec listening ports for the zone(game) servers have to be forwarded now.
You can also find your port numbers using this in windows:
cmd>netstat -nab
TCP 0.0.0.0:10208 0.0.0.0:0 LISTENING
[zone8.exe]
For more info regarding port-forwarding, firewalls and how ports overall work, contact your local pc-expert.
Admintool
Currently unused. Was planned to be used with bots.
Database
Warning - Basic SQL knowledge required.
Database string - sets the connection which can access with select/update/insert/delete most of ryl database and tables. The windows user under which i run rSec is added to the SQL databases for me, so i don't use the sql user and password. My connection string looks like this: Data Source=localhost,1433;Initial Catalog=Part2_Zodiac;Persist Security Info=True;Integrated Security=true;
Admintool DB - The database where the table dbo.TblRestraintChar can be found. For me its Admintool.
Game DB - The database where the tables dbo.CharInfo, dbo.CharItem etc can be found. For me its Part2_Zodiac.
User DB - The database where the table dbo.usertbl can be found. For me its youxiuser.
Payment DB - The database where the tables dbo.TblCurrentUser and dbo.TblCurrentUser_Temp can be found. For me its pay_gamemyth.
Ban DB - select the database in which the below sql's will be run. Normally it's Admintool.
Get banned users - SQL script which returns user_id, char_name, ban_type based on who are banned already. Normally it's: select uid, strCharName, tinyType from TblRestraintChar where tinyBlocked = 1 and dateStartTime <= GETDATE() and dateEndTime > GETDATE()
Char names? (else cids) - check if the second returned column contains character ids. Normally unchecked.
Ban user - SQL script that bans a character. Normally it's: insert into TblRestraintChar (tinyServerID, UID, strClientID, strCharName, tinyType, tinyKind, tinyBlocked, dateStartTime, dateEndTime, intEndTime, strAdminID, strDescription) values (0, @uid, @uname, @cname, 2, 1, 1, getdate(), @until, 0, @bywhom, @reason)
which is a character ban.
Advanced
Don't mess with this unless told otherwise.
Defaults:
Read buffer size: 20 KB
Handle buffer size: 40 KB
Prealocate num: 10
Async network reading: checked
Idle threads: 100
Completion threads: 10
Multithreaded: unchecked
3. Plugins
You can enable, disable and reload (from the dll file) a plugin by right clicking it's name in the plugin list.
When first starting up don't use more plugins that are actually needed. Which are:
1. Character data collector
a. Uncheck all three checkboxes
2. Port redirection (if you run rSec in the same machine as the ryl servers)
a. Uncheck "Force all ip's to". This is used ONLY for testing (by me).
and that's it.
After you can connect to the game fine and can confirm that you are seen by rSec on all maps with char data collector (by pressing refresh) and also in auth server, continue with the in-depth plugin config.
(if the plugin isnt named here, it's usually disabled)
Normal rSec plugin config:
1. Chat Tools
a. Enable GM kick with /s rsec kick <account> - with this you can "clean" a users logged in status in the temp tables when the users gets the error "already logged in". If you use a custom sql script to do the checks and cleanup, this isn't needed. Back in the old days this was a huge issue.
2. Attack check - General
a. Check skill is learned - enable this
b. Check attack range - use this ONLY if you have issues with vacuum hack, otherways this will take too much resources
c. Disable both logging
3. Attack check - Skills - protects against in-memory skillscript editing
a. Enable all. Default numbers are: 400, 2000, 2000, 20
4. Attack check - Melee
a. Don't use unless you spend significant time on setting the values up. And i haven't heard there was an hack for this at this point.
5. Attack check - Clock - protects against cheat engine overall speeder
a. Enable and select to disconnect
b. Defaults are: 2, 2000, 5 - if you get issues with players using old computers that have clocks running off, just play around with these
6. Character Data Collector
a. Uncheck first
b. Check the second - this is used for attack check ranges, valid targets and mob map
c. Check the last - used for item based checks
d. You can get more info about a char by right-clicking on his name after pressing refresh
e. Char data collector collects most of its info when a user logs on. Therefor if you disable this plugin or part of it midway when player are playing, you can end up with loads of errors. Therefor only do changes to this if your testing solo and can just relog yourself or if you restart rSec right after the change.
7. DB Data validator - use if you have set-up the SQL connections and extra tables from knowledge portal
8. Movement Check - protects against in-memory position change
a. Allow zone move only near right npc - uncheck if you have issues with statue war teleports
b. check location save npc - useful for ryl1 where ppl bound themselves to guards
c. Allow bindto command only for gms - can cause issues with teleportation quests like the bloodqueen chain
9. Name check
a. Creation name check - protects you against people making names you cant spell ingame
b. Chat name check - protects you against the pesky name changes in chat
10. Mini fixes
a. Fix kick user - properly disposes of a user who has logged in twice with the same account.
11. Port redirection
a. Still have the checkbox unchecked
12. Web services - use it if you are a programmer and wish to integrate some data onto your homepage.
13. Item check - general
a. NPC access range check - protects you against people accessing stuff with MHS from a random location on the map. This however comes with a drawback that when someone opens a shop and then gets called by a mage. When he moves something he will get an error because he isn't nearby anymore. Also note that sometimes the player money gets out-of-sync and displays some odd numbers, this is easily fixable with a map move.
b. Item dupe fix - fixes the couple of dupe methods
14. Item check - Shopping
a. Use it, it's nice. Check all checkboxes and set your quality limit.
15. Item check - Usage
a. Don't use this. Because for soem reason gunner bullets are being "used" and then it limits the rate in whic a gunner can shoot.
16. Item check - Usage 2
a. Use it. Atleast for the two in the examples. Because they get abused alot by people editing skillscript in memory setting potion cooldown to zero.
17. Item usager
a. Use it if you are a massive user of all sort of medals and other containers people pick up from high-level mobs.
Thanks for reading the thread. If you didn't, go back where you left off because i will NOT explain stuff in here to anyone asking for it.
4. Scripts
Here are snippets of the scripts that should reside in the data folder, so you can get an idea what to put there.
ItemScript.txt
The header line (ID, ItemName, ...) has to exist, it's very important.
MonsterProtoType.txt
At the moment this script isn't used for anything in rSec.
Npcscript.txt
rylCoder created script is just as valid as the original
Quest.txt
Same, rylCoder created script is good.
SkillScript.txt
Header text has to exist.
Basic networking skills - you know what a packet is, how they move using a TCP/IP protocol and know how to enable redirection for them in a router/firewall to a specified ip/port.
SQL 2005+ - all my scripts are made using SQl manager 2005, if they don't run for you, it's your issue for using ancient software.
Basic SQL skills - You know what sql is, know how to connect to a server using SQL manager and know how to execute update/insert scripts or how to manually add columns to a table. If you see a sql related error, you can identify it and read out the underlaying issue for it. In 99% cases you can solve all sql related issues yourself.
English to atleast a understandable degree - if you have issues, i have no interest in trying to decode your google translated messages.
1. Networking
rSec is a TCP/IP network application working like a packet forwarder where all the game connections/packets run thru rSec. This means that rSec listens on some ports and the game is forced to connect to rSec listening ports rather than the gameservers. This is mostly easy to set up except for the auth server port which is hardcoded into the game client and the server.
For the following examples lets assume the client is on the ip 1.2.3.4 and the server is hosted on 10.10.10.10
This is a lifecycle of a game session normally:
a. Login/server list query - 1.2.3.4:xxxxx -> 10.10.10.10:10101
b. The server sends back all the server names and ips the client can connect to
c. The game client is launched with the auth ip as the parameter
d. User & pass check - 1.2.3.4:xxxxx -> 10.10.10.10:10110
e. Character is selected, the server tells the client on which ip and port to connect <- port redirection tool hooks up here
f. The client connects to the named ip and port and the game is connected
This is the lifecycle of a rSec powered server:
a. Login/server list query - 1.2.3.4:xxxxx -> 10.10.10.10:10101
b. The server sends back all the server names and ips the client can connect to
c. The game client is launched with the auth ip as the parameter
d. User & pass check - 1.2.3.4:xxxxx -> 10.10.10.10:10110 (rsec is on this port, auth server is edited to 10111 ex.)
e. rSec connects from 10.10.10.10:10110 -> 10.10.10.10:10111 and forwards the auth packet and sends all info from the server back to the client
f. Character is selected, server sends the ip:port on which to connect to rSec (10.10.10.10:10111->10.10.10.10:10110)
g. rSec looks up the server list in Options if any of the targets matches sent ip:port. If it does then the info is changed to rSec ip and port. This way the client will connect to rSec which then inturn will connect to the server its meant to.
h. The client connects to rSec - 1.2.3.4:xxxxx -> 10.10.10.10:10312
i. rSec connects to game server - 10.10.10.10:10312 -> 10.10.10.10:10212
2. Options
Most of the changes in this form take affect when rSec is restarted.
General
RYL data folder - Point this to the folder where you keep your scripts, be it in Realease\Script\Game or in rSec folder, doesnt matter aslong the scripts are kept up to date.
Version - select your game version, or closest to it from here. This modifies the inner workings of rSec to know in what form the data is coming. Many packets are very different between different versions of the game. So if you're getting some odd Parse errors in the log, it's most likely cose the game version is wrong.
rSec Username - with this you can set the username under which any of the rSec plugins will whisper to the players. It highly depends on the plugin if it supports chat or not. Mostly used for IRC plugin.
Save log into file - Enable and set a file if you wish to save your rSec log. It is highly reccommended you use this option incase something happens with rSec, you can post your log/snippet on the forum.
Server
Read networking from above to understand how this works.
Listening port - This is the port rSec will open. This port CAN NOT be in use.
IP - This is the IP which rSec will connect to. By default use 127.0.0.1 for localhost.
V - This button starts a cmd>ping for the written ip to test if it is correct and can be reached.
Port - The port on which rSec will connect on the remote host. This will be any of your ryl game server ports.
Add - Adds a new rSec connection onto the list with the inserted information in listening port, ip and port.
Remove - Removes the selected rSec connection from the list.
Double click on the list - opens the selected item info in the above textboxes.
Default list for ryl2:
10110 -> 127.0.0.1:10111 - auth (auth server hex edited to 10111)
10304 -> 127.0.0.1:10204 - zone 4, prison
10308 -> 127.0.0.1:10208 - zone 8
10312 -> 127.0.0.1:10212 - zone 12
10316 -> 127.0.0.1:10216 - zone 16
These are the ports you normally port-forward in your router. When using rSec you should block those ports in your router or firewall (except for login) so people don't find some loophole to connect to your gameserver directly bypassing rSec. Also rSec listening ports for the zone(game) servers have to be forwarded now.
You can also find your port numbers using this in windows:
cmd>netstat -nab
TCP 0.0.0.0:10208 0.0.0.0:0 LISTENING
[zone8.exe]
For more info regarding port-forwarding, firewalls and how ports overall work, contact your local pc-expert.
Admintool
Currently unused. Was planned to be used with bots.
Database
Warning - Basic SQL knowledge required.
Database string - sets the connection which can access with select/update/insert/delete most of ryl database and tables. The windows user under which i run rSec is added to the SQL databases for me, so i don't use the sql user and password. My connection string looks like this: Data Source=localhost,1433;Initial Catalog=Part2_Zodiac;Persist Security Info=True;Integrated Security=true;
Admintool DB - The database where the table dbo.TblRestraintChar can be found. For me its Admintool.
Game DB - The database where the tables dbo.CharInfo, dbo.CharItem etc can be found. For me its Part2_Zodiac.
User DB - The database where the table dbo.usertbl can be found. For me its youxiuser.
Payment DB - The database where the tables dbo.TblCurrentUser and dbo.TblCurrentUser_Temp can be found. For me its pay_gamemyth.
Ban DB - select the database in which the below sql's will be run. Normally it's Admintool.
Get banned users - SQL script which returns user_id, char_name, ban_type based on who are banned already. Normally it's: select uid, strCharName, tinyType from TblRestraintChar where tinyBlocked = 1 and dateStartTime <= GETDATE() and dateEndTime > GETDATE()
Char names? (else cids) - check if the second returned column contains character ids. Normally unchecked.
Ban user - SQL script that bans a character. Normally it's: insert into TblRestraintChar (tinyServerID, UID, strClientID, strCharName, tinyType, tinyKind, tinyBlocked, dateStartTime, dateEndTime, intEndTime, strAdminID, strDescription) values (0, @uid, @uname, @cname, 2, 1, 1, getdate(), @until, 0, @bywhom, @reason)
which is a character ban.
Advanced
Don't mess with this unless told otherwise.
Defaults:
Read buffer size: 20 KB
Handle buffer size: 40 KB
Prealocate num: 10
Async network reading: checked
Idle threads: 100
Completion threads: 10
Multithreaded: unchecked
3. Plugins
You can enable, disable and reload (from the dll file) a plugin by right clicking it's name in the plugin list.
When first starting up don't use more plugins that are actually needed. Which are:
1. Character data collector
a. Uncheck all three checkboxes
2. Port redirection (if you run rSec in the same machine as the ryl servers)
a. Uncheck "Force all ip's to". This is used ONLY for testing (by me).
and that's it.
After you can connect to the game fine and can confirm that you are seen by rSec on all maps with char data collector (by pressing refresh) and also in auth server, continue with the in-depth plugin config.
(if the plugin isnt named here, it's usually disabled)
Normal rSec plugin config:
1. Chat Tools
a. Enable GM kick with /s rsec kick <account> - with this you can "clean" a users logged in status in the temp tables when the users gets the error "already logged in". If you use a custom sql script to do the checks and cleanup, this isn't needed. Back in the old days this was a huge issue.
2. Attack check - General
a. Check skill is learned - enable this
b. Check attack range - use this ONLY if you have issues with vacuum hack, otherways this will take too much resources
c. Disable both logging
3. Attack check - Skills - protects against in-memory skillscript editing
a. Enable all. Default numbers are: 400, 2000, 2000, 20
4. Attack check - Melee
a. Don't use unless you spend significant time on setting the values up. And i haven't heard there was an hack for this at this point.
5. Attack check - Clock - protects against cheat engine overall speeder
a. Enable and select to disconnect
b. Defaults are: 2, 2000, 5 - if you get issues with players using old computers that have clocks running off, just play around with these
6. Character Data Collector
a. Uncheck first
b. Check the second - this is used for attack check ranges, valid targets and mob map
c. Check the last - used for item based checks
d. You can get more info about a char by right-clicking on his name after pressing refresh
e. Char data collector collects most of its info when a user logs on. Therefor if you disable this plugin or part of it midway when player are playing, you can end up with loads of errors. Therefor only do changes to this if your testing solo and can just relog yourself or if you restart rSec right after the change.
7. DB Data validator - use if you have set-up the SQL connections and extra tables from knowledge portal
8. Movement Check - protects against in-memory position change
a. Allow zone move only near right npc - uncheck if you have issues with statue war teleports
b. check location save npc - useful for ryl1 where ppl bound themselves to guards
c. Allow bindto command only for gms - can cause issues with teleportation quests like the bloodqueen chain
9. Name check
a. Creation name check - protects you against people making names you cant spell ingame
b. Chat name check - protects you against the pesky name changes in chat
10. Mini fixes
a. Fix kick user - properly disposes of a user who has logged in twice with the same account.
11. Port redirection
a. Still have the checkbox unchecked
12. Web services - use it if you are a programmer and wish to integrate some data onto your homepage.
13. Item check - general
a. NPC access range check - protects you against people accessing stuff with MHS from a random location on the map. This however comes with a drawback that when someone opens a shop and then gets called by a mage. When he moves something he will get an error because he isn't nearby anymore. Also note that sometimes the player money gets out-of-sync and displays some odd numbers, this is easily fixable with a map move.
b. Item dupe fix - fixes the couple of dupe methods
14. Item check - Shopping
a. Use it, it's nice. Check all checkboxes and set your quality limit.
15. Item check - Usage
a. Don't use this. Because for soem reason gunner bullets are being "used" and then it limits the rate in whic a gunner can shoot.
16. Item check - Usage 2
a. Use it. Atleast for the two in the examples. Because they get abused alot by people editing skillscript in memory setting potion cooldown to zero.
17. Item usager
a. Use it if you are a massive user of all sort of medals and other containers people pick up from high-level mobs.
Thanks for reading the thread. If you didn't, go back where you left off because i will NOT explain stuff in here to anyone asking for it.
4. Scripts
Here are snippets of the scripts that should reside in the data folder, so you can get an idea what to put there.
ItemScript.txt
The header line (ID, ItemName, ...) has to exist, it's very important.
Code:
ID ItemName FieldModelName AttachedModelName SpriteDDS MinX MinY MaxX MaxY SizeX SizeY EffectSound ItemType TypeName AbleExchangeNDrop AbleSell MinDropLevel MaxDropLevel Price OptionPrice BlackPrice MedalPrice ClassLimit LimitStat Limit LowLevel HighLevel Durability MaxDurability MinDamage MaxDamage Defence Block DropOption Grade CriticalType AttackRange MaxSocketNum MagicResist Evade CoolDown MaxHP MaxMP HPRegen MPRegen Speed SkillPoint Frost Fire Electro Darkness
101 Leather Helmet tugu.r3s leather_helmet item001 5 6 49 52 2 2 gt.wav DEX_HELM Helmet (DEX) O O 6 11 26 X 6993 0 966 DEX 36 0 0 100 100 1 1 2 1 36 X 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 17 4
102 Goblin Helmet helm.r3s goblin_helmet item001 205 119 243 160 2 2 gt.wav CON_HELM Helmet (CON) O O 0 0 14 O 14000 0 3129 CON 20 0 0 100 100 1 1 1 1 20 X 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 17 4
101 Leather Helmet tugu.r3s leather_helmet item001 5 6 49 52 2 2 gt.wav DEX_HELM Helmet (DEX) O O 6 11 26 X 6993 0 966 DEX 36 0 0 100 100 1 1 2 1 36 X 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 17 4
102 Goblin Helmet helm.r3s goblin_helmet item001 205 119 243 160 2 2 gt.wav CON_HELM Helmet (CON) O O 0 0 14 O 14000 0 3129 CON 20 0 0 100 100 1 1 1 1 20 X 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 17 4
MonsterProtoType.txt
At the moment this script isn't used for anything in rSec.
Npcscript.txt
rylCoder created script is just as valid as the original
Code:
///////////////////////////////////////
//
// RYL 1 NPC Script
//
////////////// Functions //////////////
void AddWords(int, string);
void SetPosition(int, float, float, float, float);
void SetNPC(int, int, int, string, string);
void AddDialog(int, int, int, string);
void AddItem(int, int, int, int);
void AddSkillBook(int, int, int, int, int, int);
void AddZoneMove(int, int, float, float, float);
void AddQuest(int, int, int, int, int, int, string);
///////////////////////////////////////
SetNPC(1, 0x40000000, 11, "NPC_M02.GCMDS", "Basic Weapons Merchant");
SetPosition(0x40000000, 4.587, 2759.26, 24.98, 610.41);
AddWords(0x40000000, "Hello,what can I do for you?");
AddDialog(0x40000000, 1, 0, "Most weapons here are made in the\\Harden factory in the capital.\\Although these\\are not high-end weapons,\\they are good enough for a beginner.");
AddQuest(0x40000000, 2, 5, 10, 4095, 0, "nAldia0501");
AddItem(0x40000000, 701, 0, 0);
AddItem(0x40000000, 711, 0, 0);
AddItem(0x40000000, 702, 0, 0);
AddItem(0x40000000, 712, 0, 0);
AddItem(0x40000000, 713, 0, 0);
//
// RYL 1 NPC Script
//
////////////// Functions //////////////
void AddWords(int, string);
void SetPosition(int, float, float, float, float);
void SetNPC(int, int, int, string, string);
void AddDialog(int, int, int, string);
void AddItem(int, int, int, int);
void AddSkillBook(int, int, int, int, int, int);
void AddZoneMove(int, int, float, float, float);
void AddQuest(int, int, int, int, int, int, string);
///////////////////////////////////////
SetNPC(1, 0x40000000, 11, "NPC_M02.GCMDS", "Basic Weapons Merchant");
SetPosition(0x40000000, 4.587, 2759.26, 24.98, 610.41);
AddWords(0x40000000, "Hello,what can I do for you?");
AddDialog(0x40000000, 1, 0, "Most weapons here are made in the\\Harden factory in the capital.\\Although these\\are not high-end weapons,\\they are good enough for a beginner.");
AddQuest(0x40000000, 2, 5, 10, 4095, 0, "nAldia0501");
AddItem(0x40000000, 701, 0, 0);
AddItem(0x40000000, 711, 0, 0);
AddItem(0x40000000, 702, 0, 0);
AddItem(0x40000000, 712, 0, 0);
AddItem(0x40000000, 713, 0, 0);
Quest.txt
Same, rylCoder created script is good.
Code:
///////////////////////////////////////
//
// RYL 1 Quest
//
////////////// Functions //////////////
void QuestShortDesc(string);
void QuestDesc(string);
void QuestTitle(string);
void QuestIcon(string, int, int, int, int);
void QuestCompleteSave(bool);
void QuestLevel(string);
void QuestAward(string);
void AddPhase(int, int, string);
void Phase_Target(int, int);
void Trigger_Start();
void Trigger_Puton(int, int, float, float, float, float);
void Trigger_Geton(int, int, float, float, float, float);
void Trigger_Talk(int);
void Trigger_Kill(int, int);
void Trigger_Pick(int, int);
void Else();
void Event_Disappear(int, int, int);
void Event_Get(int, int);
void Event_Spawn(int, float, float, float);
void Event_MonsterDrop(int, int);
void Event_Award(int, int);
void Event_MsgBox(string);
void Event_Phase(int);
void Event_End();
///////////////////////////////////////
int nAldia0101()
{
QuestCompleteSave(true);
QuestTitle("Merman Threat");
QuestLevel("1 Level");
QuestAward("Gold 600\\6 Chipped Sapphire");
QuestDesc("Mermen are known as pirates\\in Aldia Port. Uncountable people\\have been killed by them.\\Kill 5 Mermen to get the reward.");
QuestShortDesc("Kill 5 Mermen.");
QuestIcon("Quest_misc01.dds", 84, 114, 126, 156);
//
// RYL 1 Quest
//
////////////// Functions //////////////
void QuestShortDesc(string);
void QuestDesc(string);
void QuestTitle(string);
void QuestIcon(string, int, int, int, int);
void QuestCompleteSave(bool);
void QuestLevel(string);
void QuestAward(string);
void AddPhase(int, int, string);
void Phase_Target(int, int);
void Trigger_Start();
void Trigger_Puton(int, int, float, float, float, float);
void Trigger_Geton(int, int, float, float, float, float);
void Trigger_Talk(int);
void Trigger_Kill(int, int);
void Trigger_Pick(int, int);
void Else();
void Event_Disappear(int, int, int);
void Event_Get(int, int);
void Event_Spawn(int, float, float, float);
void Event_MonsterDrop(int, int);
void Event_Award(int, int);
void Event_MsgBox(string);
void Event_Phase(int);
void Event_End();
///////////////////////////////////////
int nAldia0101()
{
QuestCompleteSave(true);
QuestTitle("Merman Threat");
QuestLevel("1 Level");
QuestAward("Gold 600\\6 Chipped Sapphire");
QuestDesc("Mermen are known as pirates\\in Aldia Port. Uncountable people\\have been killed by them.\\Kill 5 Mermen to get the reward.");
QuestShortDesc("Kill 5 Mermen.");
QuestIcon("Quest_misc01.dds", 84, 114, 126, 156);
SkillScript.txt
Header text has to exist.
Code:
ID Type ClassSkill Name[5] Limit Stat[0] Value[0] Stat[1] Value[1] Target mRange Range Region StartMP LevelMP LockAdd Starttick LevelTick CastingFlag EffectFlag HitFlag CoolDownTime EndCoolDown dds MinX MinY MaxX MaxY Hit EndScript Protection Interrupt Counter Gauge Parent Child Text
0x8101 INSTANCE 1 Net NONE NONE 0 NONE 0 ENEMY 0 24 0 1 0 0 0 0 FIRE2 Net.esf NULL 16000 0 skicon01.dds 96 144 120 168 1 1 0 0 0 0 0 0 Fighter CLASS SKILL\\Skill to bind ankles together. Is not affected by magic resistance, but is affected by level difference. Does not work on monsters. Is a physical enchantment and cannot be destroyed except with Charge, Blaze and Disenchant.
0x8102 PASSIVE 0 Sword Mastery I NONE STR 8 NONE 0 NONE 0 0 0 0 0 0 0 0 NULL NULL NULL 0 0 skicon01.dds 0 0 24 24 0 0 0 0 0 0 0 0 Sword Mastery Level 1\\Boosts right-handed sword wielding.
0x8102 PASSIVE 0 Sword Mastery II NONE STR 8 NONE 0 NONE 0 0 0 0 0 0 0 0 NULL NULL NULL 0 0 skicon01.dds 0 0 24 24 0 0 0 0 0 0 0 0 Sword Mastery Level 2\\Boosts right-handed sword wielding. Allows for 5 consecutive attacks.
0x8102 PASSIVE 0 Sword Mastery III NONE STR 8 NONE 0 NONE 0 0 0 0 0 0 0 0 NULL NULL NULL 0 0 skicon01.dds 0 0 24 24 0 0 0 0 0 0 0 0 Sword Mastery Level 3\\Boosts right-handed sword wielding. Allows for 6 consecutive attacks.
0x8101 INSTANCE 1 Net NONE NONE 0 NONE 0 ENEMY 0 24 0 1 0 0 0 0 FIRE2 Net.esf NULL 16000 0 skicon01.dds 96 144 120 168 1 1 0 0 0 0 0 0 Fighter CLASS SKILL\\Skill to bind ankles together. Is not affected by magic resistance, but is affected by level difference. Does not work on monsters. Is a physical enchantment and cannot be destroyed except with Charge, Blaze and Disenchant.
0x8102 PASSIVE 0 Sword Mastery I NONE STR 8 NONE 0 NONE 0 0 0 0 0 0 0 0 NULL NULL NULL 0 0 skicon01.dds 0 0 24 24 0 0 0 0 0 0 0 0 Sword Mastery Level 1\\Boosts right-handed sword wielding.
0x8102 PASSIVE 0 Sword Mastery II NONE STR 8 NONE 0 NONE 0 0 0 0 0 0 0 0 NULL NULL NULL 0 0 skicon01.dds 0 0 24 24 0 0 0 0 0 0 0 0 Sword Mastery Level 2\\Boosts right-handed sword wielding. Allows for 5 consecutive attacks.
0x8102 PASSIVE 0 Sword Mastery III NONE STR 8 NONE 0 NONE 0 0 0 0 0 0 0 0 NULL NULL NULL 0 0 skicon01.dds 0 0 24 24 0 0 0 0 0 0 0 0 Sword Mastery Level 3\\Boosts right-handed sword wielding. Allows for 6 consecutive attacks.
Credit To : Alpha
nice!
ReplyDeletecan you give me example for ryl1 setting?
ReplyDelete