Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::Windows Servers

Support::Windows Servers Support forum for Windows EQEMu users.

Reply
 
Thread Tools Display Modes
  #16  
Old 07-14-2014, 11:18 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

e:\users\elderin council>cd c:\eq\sql. type that it does not switch from E to C.

E:users\elderin council> use peq; or use peq. tryed both. says is not recognized as an internal or external command. operable program or batch file. tryed also

E:\users\elderin council> source peqbeta.sql

gives the same error.. what now? thanks for all the help so far guys.
Reply With Quote
  #17  
Old 07-14-2014, 11:31 PM
Scorpious2k's Avatar
Scorpious2k
Demi-God
 
Join Date: Mar 2003
Location: USA
Posts: 1,067
Default

Try this:

Code:
C:
cd \eq\sql
mysql -uuser -ppassword
create database eq;
use eq;
source peqbeta.sql;
exit
where -uuser is -u followed by the user (root?) and -ppassword is -p followed by the password

after the mysql command your prompt should change to mysql> after the exit it should go back to what it was before

I think there are more things to source for you, but see if this works first

edit: the semicolons are important! be sure to type them - also after the source you should see a lot of things scrolling in the window, this is normal. wait for the mysql> prompt. It will appear when it finishes
__________________
Maybe I should try making one of these servers...
Reply With Quote
  #18  
Old 07-14-2014, 11:40 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

Nice Scorp! that did it! i am now awaiting after i typed in source peqbeta.sql; i will update you guys later on how it went! Thanks a bunch!!
Reply With Quote
  #19  
Old 07-14-2014, 11:59 PM
Scorpious2k's Avatar
Scorpious2k
Demi-God
 
Join Date: Mar 2003
Location: USA
Posts: 1,067
Default

You're welcome. As I recall there are other files to source since this is your first time. Check the tutorial. You can do them after the one that is running and before you type exit
__________________
Maybe I should try making one of these servers...
Reply With Quote
  #20  
Old 07-15-2014, 12:51 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

hello again. i am really new to this. i am having trouble of step 7 of the guide. this one. You must now edit the config file or your server will not work. The following wiki page has a full explanation of the file and what it's contents mean http://wiki.eqemulator.org/p?eqemu_config.xml&frm=Main , please follow that page as to how to edit your config file and then return to this page to move onto step 7. c)

i go to the website. i see all of the writing such as this.


Before you begin
The recommended way to configure your server is to start with the minimum configuration and add in only the sections of the config that you want to change away from the defaults.
Most of the settings you will not have a need to change. If you think you do, you are probably wrong. If you really think you do, you are probably still wrong. But, just in case, we'll go over them all.
I'll walk through two configuration files. First, a minimal configuration which will probably work for 99.9% of you and then a full configuration to show and describer all the available settings. If you are looking to get your server up fast, use the minimal/recommneded config.
*Minimal/Recommened Configuration

Here is the recommended minimum configuration file that you could use to get your server up and running.

This XML should be in eqemu_config.xml in the same directory that you start world / eqlaunch / zone from.

?
1
2
3
4
5
6
7
8
9
10
<!--?xml version="1.0"-->
<server>
<world>
<shortname>setme</shortname>
<longname>I Forgot To Edit My Config</longname>

<!-- Sets the shared key used by zone/launcher to connect to world -->
<key>some long random string</key>
</world>
</server>
A few notes on the above config:



The element is not, technically, required. But, it is recommaned as it will prevent unauthorized zones and launchers from connecting to your world server.
Since there is no element (see , below) it's assumed that there is a mysql user called "eq" with a password of "eq" and that your database is called "eq".
You'll notice that there is nothing setting the address of your server. This is on purpose. (see, Addresses, below)
*Full Configuration

Here is a full configuration file example. An up to date version of this config file is hopefully always avaliable in the source code in utils/defaults/eqemu_config.xml.full.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<!--?xml version="1.0"-->
<server>
<world>
<shortname>setme</shortname>
<longname>I Forgot To Edit My Config</longname>

<!-- Only specify these two if you really think you need to. (read: You don't) -->
<!-- <address>some.server.com</address> -->
<!-- <localaddress>192.168.0.5</localaddress> -->

<!-- Loginserver information. Defaults shown -->
<loginserver>
<host>login.eqemulator.net</host>
<port>5998</port>
<account></account>
<password></password>
</loginserver>

<!-- Server status. Default is unlocked -->
<!--<locked/>-->
<!-- <unlocked/> -->

<!-- Sets the ip/port for the tcp connections. Both zones and console (if enabled). Defaults are shown -->
<tcp ip="localhost" port="9000" telnet="disable">

<!-- Sets the shared key used by zone/launcher to connect to world -->
<key>some long random string</key>

<!-- Enable and set the port for the HTTP service. Defaults are shown -->
<http enabled="false" mimefile="mime.types" port="9080">
</http></tcp></world>

<!-- Chatserver (channels) information. Defaults shown -->
<chatserver>
<host>channels.eqemulator.net</host>
<port>7778</port>
</chatserver>

<!-- Mailserver (in-game mail) information. Defaults shown -->
<mailserver>
<host>channels.eqemulator.net</host>
<port>7779</port>
</mailserver>

<zones>
<defaultstatus>20</defaultstatus>

<!-- Sets port range for world to use to auto configure zones -->
<ports high="7100" low="7000">
</ports></zones>

<!-- Database configuration, replaces db.ini. Defaults shown -->
<database>
<host>localhost</host>
<port>3306</port>
<username>eq</username>
<password>eq</password>
<db>eq</db>
</database>

<!-- Launcher Configuration -->
<launcher>
<!-- <logprefix>logs/zone-</logprefix> -->
<!-- <logsuffix>.log</logsuffix> -->
<!-- <exe>zone.exe or ./zone</exe> -->
<!-- <timers restart="10000" reterminate="10000" initial="20000" interval="2000"> -->
</launcher>

<!-- File locations. Defaults shown -->
<files>
<!-- <spells>spells_us.txt</spells> -->
<!-- <opcodes>opcodes.conf</opcodes> -->
<!-- <logsettings>log.ini</logsettings> -->
<!-- <eqtime>eqtime.cfg</eqtime> -->
</files>
<!-- Directory locations. Defaults shown -->
<directories>
<!-- <maps>Maps</maps> -->
<!-- <quests>quests</quests> -->
<!-- <plugins>plugins</plugins> -->
</directories>
</server>
*Elements
*
These are the xml entries that can be inside the tags. If they are not there, the shown defaults will be used.
?
1
2
3
4
5
<shortname> and <longname>
<world>
<shortname>setme</shortname>
<longname>I Forgot To Edit My Config</longname>
</world></longname></shortname>
These are really the two main items in world that you need to set, the others will default to values that are probably correct. Shortname will be used for things like chat channels, client side log and ini file names.
?
1

and
These two should not need to be set. If you think you need to, you are probably wrong. If you really, really think you need to, you are probably still wrong. But, just in case they are here.
World discovers its local address when it connects to the loginserver and provides to the loginserver so it can tell local clients to use the internal address. When world connects to the loginserver, the loginserver tells world what it sees for it's external address so world can tell remote clients what IP to use for connecting to zones from the outside.
Confusing? Maybe. The important thing is, it works. Let it do it's job.
*

?
1
2
3
4
5
6
7
8
9
<world>
<!-- Loginserver information. Defaults shown -->
<loginserver>
<host>login.eqemulator.net</host>
<port>5998</port>
<account></account>
<password></password>
</loginserver>
</world>
These should not need to be set except in the case if you have an loginserver account for your server, then you should only need to set the account/password values. If you leave the host/port settings out, they will default to what is shown above. When in doubt, leave it out.
* and

?
1
2
3
4
5
<world>
<!-- Server status. Default is unlocked -->
<!--<locked/>-->
<!-- <unlocked/> -->
</world>
You can probably figure these out for yourself. Left for an excercise for the reader (thats you).
*

?
1
2
3
4
<world>
<!-- Sets the ip/port for the tcp connections. Both zones and console (if enabled). Defaults are shown -->
<tcp ip="localhost" port="9000" telnet="disable">
</tcp></world>
This is where you can change the port that world listens on for TCP connections for the zones to connect to and for the telnet console. Telnet is disabled by default and I'd consider leaving it that way and using the embedded HTTP server instead.
*

?
1
2
3
4
<world>
<!-- Sets the shared key used by zone/launcher to connect to world -->
<key>some long random string</key>
</world>
This is the authorization key that zones and the launcer will present to world to prevent unauthorized access. It's recommended that you set this.
*

?
1
2
3
4
<world>
<!-- Enable and set the port for the HTTP service. Defaults are shown -->
<http enabled="false" mimefile="mime.types" port="9080">
</http></world>
This is where you can change what port the embedded HTTP server is listening on for requests. Again, if it's left out the shown defaults will be used. You can do many things with your server by using the embedded HTTP server. Point your favorite browser at it and take a peek.
*

?
1
2
3
4
5
<!-- Chatserver (channels) information. Defaults shown -->
<chatserver>
<host>channels.eqemulator.net</host>
<port>7778</port>
</chatserver>
Defines the host and port where the chat channel server is. You shouldn't need to set/change this.
*

?
1
2
3
4
5
<!-- Mailserver (in-game mail) information. Defaults shown -->
<mailserver>
<host>channels.eqemulator.net</host>
<port>7779</port>
</mailserver>
Defines the host and port where the mail (for in-game mail) server is. This is currently not implemented. You shouldn't need to set/change this.
*

The settings under the zone elements are used to control different aspects of the starting and controlling of zones.
*

?
1
2
3
<zones>
<defaultstatus>20</defaultstatus>
</zones>
You guessed it, the default status that new accounts get on creation.
*



?
1
2
3
<!-- Sets port range for world to use to auto configure zones -->
<ports high="7100" low="7000">
</ports>
This is the port range that world will use to assign ports dynamically to zones as they connect. You probably don't need to
*

?
1
2
3
4
5
6
7
8
<!-- Database configuration, replaces db.ini. Defaults shown -->
<database>
<host>localhost</host>
<port>3306</port>
<username>eq</username>
<password>eq</password>
<db>eq</db>
</database>
This is where you can change where have created your database or what username/password you are using.
*

?
1
2
3
4
5
6
7
<!-- Launcher Configuration -->
<launcher>
<!-- <logprefix>logs/zone-</logprefix> -->
<!-- <logsuffix>.log</logsuffix> -->
<!-- <exe>zone.exe or ./zone</exe> -->
<!-- <timers restart="10000" reterminate="10000" initial="20000" interval="2000"> -->
</launcher>
This is where you can change the behavior of the launcher.
* and

?
1
2
3
4
<launcher>
<logprefix>logs/zone-</logprefix>
<logsuffix>.log</logsuffix>
</launcher>
These options set the path, prefix, and suffix of the log files which the launcher pipes all of zone's output into. Any intermediate directories will not be created, so make sure they exist. The zone launch name will be sandwiched between prefix and suffix, eg: logs/zone-butcher.log would be the log file for a static butcher zone, and logs/zone-dynamic_01.log would be the log for your first dynamic zone.
*

?
1
2
3
4
5
<launcher>
<exe>zone.exe</exe>
<!-- or... -->
<exe>./zone</exe>
</launcher>
This option allows you to specify which zone binary the launcher will run. If you build your zone with perl support into ZonePerl.exe instead of Zone.exe, you can specify that here.
*

?
1
2
3
<launcher>
<timers initial="20000" interval="2000" restart="10000" reterminate="10000">
</timers></launcher>
This element lets you configure various timers that the launcher uses. All values are in milliseconds.

restart - This is the time between when a zone goes down, and when it is started back up again.
reterminate - This is how long we wait after sending a kill signal to a zone before killing it again.
initial - This is the time we wait after booting the first zone on the machine before booting any more zones (to let shared memory load).
interval - This is the time between booting each subsequent zone.
*

?
1
2
3
4
5
6
7
<!-- File locations. Defaults shown -->
<files>
<!-- <spells>spells_us.txt</spells> -->
<!-- <opcodes>opcodes.conf</opcodes> -->
<!-- <logsettings>log.ini</logsettings> -->
<!-- <eqtime>eqtime.cfg</eqtime> -->
</files>
These entries are provided if you need to override the names or locations of the needed files. You probably don't need to change these settings.
*

?
1
2
3
4
5
6
<!-- Directory locations. Defaults shown -->
<directories>
<!-- <maps>Maps</maps> -->
<!-- <quests>quests</quests> -->
<!-- <plugins>plugins</plugins> -->
</directories>
These entries are provided if you need to override the names or locations of the needed directories. You probably don't need to change these settings.



i know im suppose to edit something. but i am really clueless here. i am hoping you can tell me exactly what to do and how to do it. since i am not fully understanding the guide. would muchly appreciate the help. thanks in advance.
Reply With Quote
  #21  
Old 07-15-2014, 01:26 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

also need help with one of the last steps as well as the one i just listed. this one says Creating a batch file to launch the server

Now you can make a start.bat file to put in your server folder with the following lines:

where do i go to make a start.bat file? and how do i do it? thanks in advance.
Reply With Quote
  #22  
Old 07-15-2014, 01:49 PM
Nightrider84's Avatar
Nightrider84
Discordant
 
Join Date: Aug 2010
Location: Colorado
Posts: 410
Default

ok here is an example of the full file ill try and explain it

<!--?xml version="1.0"-->
<server>
<world>
<shortname>shortname of your server</shortname>
<longname>server name you will see when login</longname>

<!-- Only specify these two if you really think you need to. (read: You don't) -->
<!-- <address>change this ONLY if you want other people to access your server as a private login.</address> -->
<!-- <localaddress>local address for the computer your server is on. IE 192.168.1.7/localaddress> -->

<!-- Loginserver information. Defaults shown -->
<loginserver>
<host>>local address for the computer your server is on. IE 192.168.1.7</host>
<port>5998</port>
<account>Usually Admin</account> <-----this part might seem confusing but in your database under tblserveradminregistration the values under that will represent what to put here for your account and password.
<password>Usually Password</password> <-----As far as I know you dont hafto put anything in here its only recommended if you know how to do it.
</loginserver>

<!-- Server status. Default is unlocked -->
<!--<locked/>-->
<!-- <unlocked/> -->

<!-- Sets the ip/port for the tcp connections. Both zones and console (if enabled). Defaults are shown -->
<tcp ip="localhost" port="9000" telnet="disable">

<!-- Sets the shared key used by zone/launcher to connect to world -->
<key>some long random string</key>

<!-- Enable and set the port for the HTTP service. Defaults are shown -->
<http enabled="false" mimefile="mime.types" port="9080">
</http></tcp></world>

<!-- Chatserver (channels) information. Defaults shown -->
<chatserver>
<host>channels.eqemulator.net</host>
<port>7778</port>
</chatserver>

<!-- Mailserver (in-game mail) information. Defaults shown -->
<mailserver>
<host>channels.eqemulator.net</host>
<port>7779</port>
</mailserver>

<zones>
<defaultstatus>Change this to 0 so players dont get gm status</defaultstatus>

<!-- Sets port range for world to use to auto configure zones -->
<ports high="7100" low="7000">
</ports></zones>

<!-- Database configuration, replaces db.ini. Defaults shown -->
<database>
<host>localhost</host>
<port>3306</port>
<username>your mysql username</username>
<password>your mysql password</password>
<db>name of your database usually peq</db>
</database>

<!-- Launcher Configuration -->
<launcher>
<!-- <logprefix>logs/zone-</logprefix> -->
<!-- <logsuffix>.log</logsuffix> -->
<!-- <exe>zone.exe or ./zone</exe> -->
<!-- <timers restart="10000" reterminate="10000" initial="20000" interval="2000"> -->
</launcher>

<!-- File locations. Defaults shown -->
<files>
<!-- <spells>spells_us.txt</spells> -->
<!-- <opcodes>opcodes.conf</opcodes> -->
<!-- <logsettings>log.ini</logsettings> -->
<!-- <eqtime>eqtime.cfg</eqtime> -->
</files>
<!-- Directory locations. Defaults shown -->
<directories>
<!-- <maps>Maps</maps> -->
<!-- <quests>quests</quests> -->
<!-- <plugins>plugins</plugins> -->
</directories>
</server>


thats about the basics of how to setup that config file. as for the start.bat file make a text file and and click save as. and save it as start.bat it should change the file type to .bat
once thats change open the file and insert this into it. once the file is changed to a .bat file you can rename the file to whatever you want. btw you WILL need heidisql if you have no experience using the command prompt to change values. and it just makes it easier aswell make sure you install that. Hope this helps



@echo off
shared_memory.exe
start loginserver.exe
start world.exe
echo Waiting for the world to finish loading before starting zones...
ping -n 10 127.0.0.1 > nul
start queryserv.exe
start ucs.exe
start eqlaunch.exe zone
exit

Last edited by Nightrider84; 07-15-2014 at 01:57 PM.. Reason: Added more information
Reply With Quote
  #23  
Old 07-15-2014, 01:53 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

Thanks for the prompt reply. at the top where it says <!--?xml version="1.0"-->
<server>
<world>
<shortname>shortname of your server</shortname>
<longname>server name you will see when login</longname>

<!-- Only specify these two if you really think you need to. (read: You don't) -->
<!-- <address>change this ONLY if you want other people to access your server as a private login.</address> -->


you state that i can change the address if i want other people to access my server as a private login. thats means i can have another couple of friends join it right? and what do i change the address too? thanks again for all the help so far.
Reply With Quote
  #24  
Old 07-15-2014, 02:06 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

also. i tryed to do some. again this is my first time doing this..lol please tell me if all of this is okay. or if its just plain bad and help me correct it. thanks in advance.


<?xml version="1.0"?>
<server>
<world>
<shortname>My Eq Server</shortname>
<longname>Elderin Councils private EQ server</longname>

<!-- Only specify these two if you really think you need to. (read: You don't) -->
<!-- <address>some.server.com</address> -->
<!-- <localaddress>184.155.54.255</localaddress> -->

<!-- Loginserver information. Defaults shown -->
<loginserver>
<host>184.155.54.255</host>
<port>5998</port>
<account></account>
<password></password>
</loginserver>

<!-- Server status. Default is unlocked -->
<!--<locked/>-->
<!-- <unlocked/> -->

<!-- Sets the ip/port for the tcp connections. Both zones and console (if enabled). Defaults are shown -->
<tcp ip="local host" port="9000" telnet="disable"/>

<!-- Sets the shared key used by zone/launcher to connect to world -->
<key>some long random string</key>

<!-- Enable and set the port for the HTTP service. Defaults are shown -->
<http port="9080" enabled="false" mimefile="mime.types" />
</world>

<!-- Chatserver (channels) information. Defaults shown -->
<chatserver>
<host>channels.eqemulator.net</host>
<port>7778</port>
</chatserver>

<!-- Mailserver (in-game mail) information. Defaults shown -->
<mailserver>
<host>channels.eqemulator.net</host>
<port>7778</port>
</mailserver>

<zones>
<defaultstatus>20</defaultstatus>

<!-- Sets port range for world to use to auto configure zones -->
<ports low="7000" high="7100"/>
</zones>

<!-- Database configuration, replaces db.ini. Defaults shown -->
<database>
<host>local host</host>
<port>3306</port>
<username>root</username>
<password>root</password>
<db>peq</db>
</database>

<qsdatabase>
<host>127.0.0.1</host>
<port>3306</port>
<username>eq</username>
<password>eq</password>
<db>eq</db>
</qsdatabase>

<!-- Launcher Configuration -->
<launcher>
<!-- <logprefix>logs/zone-</logprefix> -->
<!-- <logsuffix>.log</logsuffix> -->
<!-- <exe>zone.exe or ./zone</exe> -->
<!-- <timers restart="10000" reterminate="10000" initial="20000" interval="2000"> -->
</launcher>

<!-- File locations. Defaults shown -->
<files>
<!-- <spells>spells_us.txt</spells> -->
<!-- <opcodes>opcodes.conf</opcodes> -->
<!-- <logsettings>log.ini</logsettings> -->
<!-- <eqtime>eqtime.cfg</eqtime> -->
</files>
<!-- Directory locations. Defaults shown -->
<directories>
<!-- <maps>Maps</maps> -->
<!-- <quests>quests</quests> -->
<!-- <plugins>plugins</plugins> -->
</directories>
</server>
Reply With Quote
  #25  
Old 07-15-2014, 02:13 PM
Nightrider84's Avatar
Nightrider84
Discordant
 
Join Date: Aug 2010
Location: Colorado
Posts: 410
Default

yeah so theres a few things you need to know before they can join

1. you have a dynamic dns which means you need to get a host of somekind thats free. like no-ip
the reason for this is when your modem restarts or you lose power ect ect. your dns address changes. The address you make with the host will always update to include the changed address. saves you a ton of trouble.
2. if you want other people to join you need to make sure that your ports are forwarded properly. 9-10 times people cant join because of port problems.

so to give you an example if your local address is 92.145.432.45 (find this out go to google and type whats my ip) and you lose power it will change to like 92.143.224.64 just as an example. but if you have a "host" the address they give you will never change. and it will be a address like myserver.gethere.ok
instead of numbers. you would put that name into that address box

<!-- <address>myserver.gethere.ok</address> --> like this, it may sound confusing but if you want other people over the net to connect to your server while its "private" thats what you need to do.
Reply With Quote
  #26  
Old 07-15-2014, 02:14 PM
Nightrider84's Avatar
Nightrider84
Discordant
 
Join Date: Aug 2010
Location: Colorado
Posts: 410
Default

your address is wrong.

<!-- Only specify these two if you really think you need to. (read: You don't) -->
<!-- <address>some.server.com</address> -->
<!-- <localaddress>184.155.54.255</localaddress> --> this and your host will be the same number but it will be your computers ip address not your local address

<!-- Loginserver information. Defaults shown -->
<loginserver>
<host>184.155.54.255</host>
<port>5998</port>
<account></account>
<password></password>
</loginserver>
Reply With Quote
  #27  
Old 07-15-2014, 02:17 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

okay yeah it is a little confusing. i did not set up port forwarding. i suppose i can make it just me right now to test it out. as per my settings above your post. are they all okay besides the <address>myserver.gethere.ok</address> ? or are alot of other input settings wrong that i typed?. also. when i made a txt document and tryed to type in start.bat it did not change over to .bat. it stayed txt. why is that? thanks for the continued help!
Reply With Quote
  #28  
Old 07-15-2014, 02:18 PM
deez2255
Sarnak
 
Join Date: Jul 2014
Posts: 49
Default

read your post late. lol so besides just the one address part is anything else wrong?
Reply With Quote
  #29  
Old 07-15-2014, 02:20 PM
Nightrider84's Avatar
Nightrider84
Discordant
 
Join Date: Aug 2010
Location: Colorado
Posts: 410
Default

everything else looks ok id change your

<zones>
<defaultstatus>20</defaultstatus> to 0 so everyone doesnt get gm powers.

also when you click save as in your text file change it to all files. instead of text files. for your batch file
Reply With Quote
  #30  
Old 07-15-2014, 02:22 PM
Nightrider84's Avatar
Nightrider84
Discordant
 
Join Date: Aug 2010
Location: Colorado
Posts: 410
Default

oh also is your mysql password the same as your username for it?
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 03:03 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3