EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Linux Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=588)
-   -   Server is up and running, but there's no inventory (https://www.eqemulator.org/forums/showthread.php?t=31909)

Posix 08-25-2010 06:50 PM

Everything is looking good; I have inventory, and things appear to be running smoothly. Thanks for the help amraist!

Looking over erde's BSD patches, I see I did almost exactly what erde did, except instead of switching up to an equivalent abs function, I opted to simply flip the sign of the integers, given they're all known to be below 0 and there's no even-root calls. :)

amraist 08-26-2010 08:40 AM

Glad to hear its working for you. I have a startup script I wrote if you are interested. It works except on startup it seems(last time my jail started, my launcher didn't startup), and I haven't gotten around to tracking that down.

Posix 08-26-2010 08:39 PM

I certainly won't turn down free startup scripts :)

It seems I may have spoken too soon about everything working great. In my last post, I logged in, saw I had inventory, figured everything was great, logged out and went to sleep. Since, I have discovered I am now unable to move, or if I can move there's no gravity. And no sky. I suspect something is up with the zone launch script.

amraist 08-27-2010 09:43 AM

Did download the maps?

Derision 08-27-2010 11:10 AM

Since your source is at a higher revision than your database, you should check:

http://code.google.com/p/projecteqem.../utils/sql/svn

for any SQL with prefixes between your database and source revision numbers and source them into your database.

The particular problem you are having likely requires:

http://code.google.com/p/projecteqem...svn1618&r=1618

Posix 08-27-2010 12:09 PM

OK, I think I'm starting to understand the correlation between DB and EQEmu revisions here, perhaps you can confirm?

Even when doing a brand-new install, simply installing the base peqdb as obtained via CVS is not sufficient. The super-mega DB, peqdb_rev1589.sql, is applied. Then, any sql file with a revision number listing in the utils/sql/svn directory of the source is applied? I just want to make sure I understand this going forward.

Thank you for the help!

Derision 08-27-2010 01:04 PM

When Cavedude releases a version of the PEQ database, it is generally compatible with the current version of the server source code on the day he releases it.

As a new PEQ database is only generally released every month or two, any source code changes that are made in between PEQ DB releases, that require a database change,
will require you to source in the changes from the source code SVN, utils/sql/svn directory.

E.g. July 9th, CD releases PEQ DB Rev 1589, compatible with the latest available source code on that date, Rev 1589.

Source code developers commit changes over the following days and weeks, some of which require database changes, e.g. I commit source
Rev 1618 on 8th August which requires a change to the zone table structure.

If you upgrade from Rev 1589 to Rev 1618 of the source (or are a new user who has just installed the Rev1589 DB and compiled the Rev1618 source),
then you will need to apply any SQL changes that have have prefixes betwen 1590 and 1618 from the source code SVN.

trevius 08-27-2010 02:05 PM

You only want to apply any SQL from that folder for revisions that came AFTER the db revision you are running. So, in your case that would be any SQL higher than 1589. Also, if there are any SQL files for a revision LATER than the actual source code revision you are running, you do not want to apply those.

Posix 08-28-2010 03:17 AM

Thanks, both of those explanations make a lot of sense.

With those sql updates applied, the world and zones are now running properly.
I can move.
I can interact with NPC's.
I have inventory.
There is gravity.
There is sky.
There is combat.
There is a brass key.

> get key

amraist 08-29-2010 09:44 AM

Here is my startup script. It will start world, ucs, eqlogin(login server) and will use eqlauncher to start up zones. So you will need to have one setup in the database. If you notice any bugs, please let me know.

Code:

#!/bin/sh

# PROVIDE: eqemu
# REQUIRE: LOGIN
# KEYWORD: shutdown

. /etc/rc.subr

name="eqemu"
start_cmd="${name}_start $2"
stop_cmd="${name}_stop $2"
restart_cmd="${name}_restart $2"
status_cmd="${name}_status $2"
extra_commands="status cleanipc"
determine_procs_cmd="eqemu_determine_procs"
cleanipc_cmd="${name}_cleanipc"
eqemu_enable=${eqemu_enable:-"YES"}
eqemu_home=${eqemu_home:-"/usr/local/eqemu"}
eqemu_user=${eqemu_user:-"eqemu"}
eqemu_group=${eqemu_group:-"eqemu"}
eqemu_world=${eqemu_world:-"NO"}
eqemu_eqlaunch=${eqemu_eqlaunch:-"NO"}
eqemu_eqlaunch_args=${eqemu_eqlaunch_args:-"zone"}
eqemu_ucs=${eqemu_ucs:-"NO"}
eqemu_eqlogin=${eqemu_eqlogin:-"NO"}
eqemu_world_args=${eqemu_world_args:-""}
eqemu_eqlogin_args=${eqemu_eqlogin_args:-""}
eqemu_ucs_args=${eqemu_ucs_args:-""}
rcvar=`set_rcvar`
load_rc_config $name

eqemu_determine_procs()
{
        unset "eqemu_procs"
        if  [ "${_rc_prefix}" = "one" ]  ; then
                case "$1" in
                        eqlogin)
                                eqemu_procs=$1
                                ;;
                        world)
                                eqemu_procs=$1
                                ;;
                        eqlaunch)
                                eqemu_procs=$1
                                ;;
                        ucs)
                                eqemu_procs=$1
                                ;;
                        *)
                                echo "Usage: ./eqemu one(start|stop|restart) (world|eqlaunch|ucs|eqlogin) you must also specify a valid daemon."
                                ;;
                esac
        else
                if checkyesno eqemu_eqlogin ; then
                        eqemu_procs="${eqemu_procs}eqlogin "
                fi
                if checkyesno eqemu_world ; then
                        eqemu_procs="${eqemu_procs}world "
                fi
                if checkyesno eqemu_eqlaunch ; then
                        eqemu_procs="${eqemu_procs}eqlaunch "
                fi
                if checkyesno eqemu_ucs ; then
                        eqemu_procs="${eqemu_procs}ucs "
                fi
        fi
}
eqemu_cleanipc()
{
        eqemu_procs="world eqlaunch zone"
        for proc in ${eqemu_procs}; do
                if [ "`check_pidfile /var/run/eqemu${proc}.pid $eqemu_home/$proc`" != "" ] ; then
                        echo "Processes running; skipping cleanipc..."
                        return
                fi
        done
        echo "Cleaning IPC..."
        ${eqemu_home}/cleanipc > /dev/null 2>&1
}
eqemu_start()
{
        eqemu_determine_procs $1
        for name in ${eqemu_procs}; do
                echo "Starting EQEmu ${name}..."
                cd ${eqemu_home}
                eval eqprocargs=\$eqemu_${name}_args
                if ! [ -e /var/run/eqemu_${name}.pid ]; then
                        touch /var/run/eqemu_${name}.pid
                        chown $eqemu_user:$eqemu_user /var/run/eqemu_${name}.pid
                fi
                /usr/sbin/daemon -f -p /var/run/eqemu_${name}.pid -u $eqemu_user $eqemu_home/$name $eqprocargs
        done
}
eqemu_stop()
{
        unset "stop_cmd"
        eqemu_determine_procs $1
        eqemu_procs=$(reverse_list ${eqemu_procs})
        for name in ${eqemu_procs}; do
                command=$eqemu_home/$name
                run_rc_command stop
        done
}
eqemu_restart()
{
        eqemu_restart_prefix=${_rc_prefix}
        run_rc_command ${eqemu_restart_prefix}stop $1
        if [ "${eqemu_restart_prefix}" != "one" ] ; then run_rc_command ${_rc_prefix}cleanipc $1; fi
        run_rc_command ${eqemu_restart_prefix}start $1
}
eqemu_status()
{
        unset "status_cmd"
        eqemu_determine_procs $1
        for name in ${eqemu_procs}; do
                command=$eqemu_home/$name
                run_rc_command status
        done
}
                       
run_rc_command "$1"


morgoth2 09-07-2010 07:27 AM

Quote:

Originally Posted by Posix (Post 190934)
Found it! zone/perl_object.cpp was not being compiled. Added an entry into the Makefile (and the Makefile.in and Makefile.am in the parent zone directory for future proofing) for perl_object and now it compiles and runs as expected.

and exactly how did you do that? im haveing the same problem.

amraist 09-07-2010 09:38 AM

I use grep to find where the missing function is defined, and then add that file to the makefiles. You can also figure it out if you are paying attention to the svn logs. If you are using erde's autobuild, here is a patch you can apply after extracting and before running any of his autobuild commands:
Code:

Index: zone/Makefile.am
===================================================================
--- zone/Makefile.am (revision 33)
+++ zone/Makefile.am (revision 63)
@@ -221,6 +221,7 @@
        perl_mob.h \
        perl_npc.cpp \
        perl_npc.h \
+      perl_object.cpp \
        perl_perlpacket.cpp \
        perl_perlpacket.h \
        perl_PlayerCorpse.cpp \



All times are GMT -4. The time now is 05:39 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.