Project 1999

Go Back   Project 1999 > General Community > Technical Discussion

Reply
 
Thread Tools Display Modes
  #1  
Old 07-23-2018, 02:50 PM
Consty Consty is offline
Large Rat


Join Date: Nov 2014
Posts: 5
Default Everquest on Linux Fixes

Here's a quick rundown of what I needed to do in order to get Project 1999 working reliably on Linux using WINE. It's by no means exhaustive, but it should help address the gotchas associated with getting things to work.

Before completing these steps, follow the instructions at https://www.project1999.com/forums/s...ead.php?t=2651 first. Since you're using wine, you'll probably just run "wine Install.exe" without quotes from the installation medium.

After completing installation, perform the following:

1. Edit eqclient.ini from the directory you installed to and add a line that says "WindowedMode=TRUE" without quotes (addresses a crashing issue on startup)

2. Delete DSETUP.dll (notice the upper/lower casing of the file)

3. Rename dsetup.dll to DSETUP.DLL (addresses the issue of spells being shown as out of date)

4. Run game using "wineconsole Launch\ Titanium.bat" without quotes from the directory you installed to

5. If you routinely get a blank list of servers (common when using wireless), perform the remaining steps; otherwise you're done

6. Edit the eqhost.txt file from the directory you installed to and change "login.eqemulator.net" to "localhost" without quotes which will forward login requests through a local script

7. Copy the python script below (works with python 2 or 3) and save it in a file such as eqlogin.py

8. Before running the game in step 4, run "python eqlogin.py" without quotes and then proceed to login--you're done

Code:
#!/usr/bin/env python
import socket
import threading
import time

FROM_IP = "127.0.0.1"
FROM_PORT = 5998
REPLY_IP = ""
REPLY_PORT = 0
TO_IP = "login.eqemulator.net"
TO_PORT = 5998

from_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
from_sock.bind((FROM_IP, FROM_PORT))
to_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
to_sock.bind(('', 0))

def local():
	global REPLY_IP, REPLY_PORT
        while True:
                data, addr = from_sock.recvfrom(4096)
                REPLY_IP, REPLY_PORT = addr
                to_sock.sendto(data, (TO_IP, TO_PORT))
                print("Sending " + str(len(data)) + " bytes to " + TO_IP + ":" + str(TO_PORT))

def remote():
	global REPLY_IP, REPLY_PORT
        while True:
                data, addr = to_sock.recvfrom(4096)
                from_sock.sendto(data, (REPLY_IP, REPLY_PORT))
                print("Sending " + str(len(data)) + " bytes to " + REPLY_IP + ":" + str(REPLY_PORT))

print("Waiting for data on " + FROM_IP + ":" + str(FROM_PORT) + "...")
threading.Thread(target=local, args=()).start()
threading.Thread(target=remote, args=()).start()
while True:
	time.sleep(1)
        pass
Last edited by Consty; 07-23-2018 at 03:11 PM..
Reply With Quote
  #2  
Old 07-23-2018, 03:22 PM
loramin loramin is offline
Planar Protector

loramin's Avatar

Join Date: Jul 2013
Posts: 9,343
Default

Geez, sorry you had such a rough time. All I had to do was copy my EQ install from Windows, install the latest graphics drivers, and run P99 Middlemand:

https://github.com/Zaela/p99-login-middlemand
__________________

Loramin Frostseer, Oracle of the Tribunal <Anonymous> and Fan of the "Where To Go For XP/For Treasure?" Guides
Anyone can improve the wiki! If you are new to the Blue server, you can improve the wiki to earn a "welcome package" of up to 2k+ platinum! Message me for details.
Reply With Quote
  #3  
Old 07-23-2018, 05:15 PM
Consty Consty is offline
Large Rat


Join Date: Nov 2014
Posts: 5
Default

Quote:
Originally Posted by loramin [You must be logged in to view images. Log in or Register.]
Geez, sorry you had such a rough time. All I had to do was copy my EQ install from Windows, install the latest graphics drivers, and run P99 Middlemand:

https://github.com/Zaela/p99-login-middlemand
Someone mentioned this app to me in the discord channel, but I prefer not compiling/installing such things and stick to a clean system without build tools. For that reason I made the python script as a replacement and I'm told it supports all the servers instead of just the few that the middlemand tool has? Not entirely sure...

The steps noted above were required on a freshly installed Fedora system using only the original Titanium discs (no changes or repackaging) on a system using an AMD graphics card (using the open source driver). Hoping it'll help others out there that may be struggling. [You must be logged in to view images. Log in or Register.]
Reply With Quote
  #4  
Old 07-24-2018, 01:53 PM
loramin loramin is offline
Planar Protector

loramin's Avatar

Join Date: Jul 2013
Posts: 9,343
Default

Quote:
Originally Posted by Consty [You must be logged in to view images. Log in or Register.]
but I prefer not compiling/installing such things and stick to a clean system without build tools.
That makes sense. Personally I go with the logic of "if someone was going to install anything malicious they would have done it already to someone else by now, and that person would have complained in the forums, so it must be safe", but obviously that logic doesn't hold up if you're serious about protecting your computer.

By the way, I made a short Linux setup page on the wiki awhile back. It's not at all comprehensive (eg. it doesn't even mention P99 Middleman), but if you have the time and feel like adding your notes to it, they could be helpful to future Linux users.
__________________

Loramin Frostseer, Oracle of the Tribunal <Anonymous> and Fan of the "Where To Go For XP/For Treasure?" Guides
Anyone can improve the wiki! If you are new to the Blue server, you can improve the wiki to earn a "welcome package" of up to 2k+ platinum! Message me for details.
Reply With Quote
  #5  
Old 07-24-2018, 11:45 PM
Zaela Zaela is offline
Sarnak


Join Date: Jul 2014
Posts: 319
Default

If that script works -- literally sending and receiving packets in the same order they would have arrived without it, just indirectly and slower -- then I clearly never understood what the issue actually is.
Reply With Quote
  #6  
Old 07-13-2020, 10:45 PM
Consty Consty is offline
Large Rat


Join Date: Nov 2014
Posts: 5
Default Updated script

Updated script to work with python 2/3 (previous script had inconsistent whitespace) and now the script can be terminated by pressing CTRL+C. Hope this helps you folks out there running Everquest on Linux using wine. [You must be logged in to view images. Log in or Register.]

Code:
#!/usr/bin/env python
import socket
import threading
import time
import os
import signal

FROM_IP = "127.0.0.1"
FROM_PORT = 5998
REPLY_IP = ""
REPLY_PORT = 0
TO_IP = "login.eqemulator.net"
TO_PORT = 5998

from_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
from_sock.bind((FROM_IP, FROM_PORT))
to_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
to_sock.bind(('', 0))

def local():
        global REPLY_IP, REPLY_PORT
        while True:
                data, addr = from_sock.recvfrom(4096)
                REPLY_IP, REPLY_PORT = addr
                to_sock.sendto(data, (TO_IP, TO_PORT))
                print("Sending " + str(len(data)) + " bytes to " + TO_IP + ":" + str(TO_PORT))

def remote():
        global REPLY_IP, REPLY_PORT
        while True:
                data, addr = to_sock.recvfrom(4096)
                from_sock.sendto(data, (REPLY_IP, REPLY_PORT))
                print("Sending " + str(len(data)) + " bytes to " + REPLY_IP + ":" + str(REPLY_PORT))

print("Waiting for data on " + FROM_IP + ":" + str(FROM_PORT) + "...")
threading.Thread(target=local, args=()).start()
threading.Thread(target=remote, args=()).start()

try:
        while True:
                time.sleep(1)
                pass
except KeyboardInterrupt:
	os.kill(os.getpid(), signal.SIGTERM)
Last edited by Consty; 07-13-2020 at 10:50 PM..
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 01:06 AM.


Everquest is a registered trademark of Daybreak Game Company LLC.
Project 1999 is not associated or affiliated in any way with Daybreak Game Company LLC.
Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.