Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Galer,a eu compilei um TFS 0.4 rev 3777 para linux

coloquei la no arquivo configure.ac o -D__WAR__SYSTEM__

AC_PREREQ([2.50])

AC_INIT([TheForgottenServer], [0.4])

AM_INIT_AUTOMAKE([1.10 foreign])

AC_CONFIG_SRCDIR([account.h])

AM_CONFIG_HEADER([config.h])


AC_PROG_CXX

AC_LANG(C++)

# add own flags in here

OPTIONAL_FLAGS="-D__WAR__SYSTEM__"


# check if we want server diag enabled

serverDiag=no

AC_ARG_ENABLE(server-diag, [  --enable-server-diag        enable server diagnostic],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__ENABLE_SERVER_DIAGNOSTIC__"]

    serverDiag=yes

)


# check if we want login server mode

AM_CONDITIONAL(LOGIN_SERVER, false)

loginServer=no

AC_ARG_ENABLE(login-server, [  --enable-login-server        enable login server mode],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__LOGIN_SERVER__"]

    AM_CONDITIONAL(LOGIN_SERVER, true)

    loginServer=yes

)


# check if we want OTAdmin protocol

AM_CONDITIONAL(OT_ADMIN, false)

otAdmin=no

AC_ARG_ENABLE(ot-admin, [  --enable-ot-admin        enable OTAdmin protocol],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__OTADMIN__"]

    AM_CONDITIONAL(OT_ADMIN, true)

    otAdmin=yes

)


# check if we want otserv allocator enabled

otservAllocator=no

AC_ARG_ENABLE(otserv-allocator, [  --enable-otserv-allocator    enable otserv custom allocator],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__OTSERV_ALLOCATOR__"]

    otservAllocator=yes

)


# check if we want homedir conf enabled

homedirConf=no

AC_ARG_ENABLE(homedir-conf, [  --enable-homedir-conf        enable home directory configuration],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__HOMEDIR_CONF__"]

    homedirConf=yes

)


# check do we want to allow running on root user

rootPermission=no

AC_ARG_ENABLE(root-permission, [  --enable-root-permission    enable running on root user],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__ROOT_PERMISSION__"]

    rootPermission=yes

)


# check do we want to be a login server for multiworld

loginServer=no

AC_ARG_ENABLE(login-server, [  --enable-login-server  enable running in a login server mode],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__LOGIN_SERVER__"]

    loginServer=yes

)


# check if we want to use luajit instead of lua

luaJIT=no

AC_ARG_ENABLE(luajit, [  --enable-luajit        enable luajit instead of lua],

    [OPTIONAL_FLAGS="$OPTIONAL_FLAGS -D__LUAJIT__"]

    luaJIT=yes

)

AC_SUBST(OPTIONAL_FLAGS)


# check if we want a debug build

debugBuild=no

AC_ARG_ENABLE(debug, [  --enable-debug        enable debuging],

    [DEBUG_FLAGS="-D__DEBUG__ -D__DEBUG_MOVESYS__ -D__DEBUG_CHAT__ -D__DEBUG_EXCEPTION_REPORT__ -D__DEBUG_HOUSES__ -D__DEBUG_LUASCRIPTS__ -D__DEBUG_MAILBOX__ -D__DEBUG_NET__ -D__DEBUG_NET_DETAIL__ -D__DEBUG_RAID__ -D__DEBUG_SCHEDULER__ -D__DEBUG_SPAWN__ -D__SQL_QUERY_DEBUG__ -O0 -g3"]

    debugBuild=yes

)

if test "$debugBuild" = "no" ; then

    DEBUG_FLAGS="-O2 -fomit-frame-pointer" # disable all kinds of debugging

fi


AC_SUBST(DEBUG_FLAGS)


AM_CONDITIONAL(USE_MYSQL, false)

useMySQL=no

AM_CONDITIONAL(USE_PGSQL, false)

usePostgreSQL=no

AM_CONDITIONAL(USE_SQLITE, false)

useSQLite=no


# check if we want mysql enabled

AC_ARG_ENABLE(mysql, [  --enable-mysql        enable MySQL support], [

    AM_CONDITIONAL(USE_MYSQL, true)

    MYSQL_FLAGS=-D__USE_MYSQL__

    AC_SUBST(MYSQL_FLAGS)

    useMySQL=yes

])


# check if we want postgresql enabled

AC_ARG_ENABLE(pgsql, [  --enable-pgsql        enable PostgreSQL support], [

    AM_CONDITIONAL(USE_PGSQL, true)

    PGSQL_FLAGS="-D__USE_PGSQL__ -I`pg_config --includedir`"

    AC_SUBST(PGSQL_FLAGS)

    usePostgreSQL=yes

])


# check if we want sqlite enabled

AC_ARG_ENABLE(sqlite, [  --enable-sqlite        enable SQLite support], [

    AM_CONDITIONAL(USE_SQLITE, true)

    SQLITE_FLAGS=-D__USE_SQLITE__

    AC_SUBST(SQLITE_FLAGS)

    useSQLite=yes

])


# check if we want the profiler

AC_ARG_ENABLE(profiler, [  --enable-profiler        enable profiler support], [PROFILER_FLAGS=-pg])

AC_SUBST(PROFILER_FLAGS)


# Checks for header files.

AC_HEADER_STDC

AC_CHECK_HEADERS([arpa/inet.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h sys/socket.h sys/timeb.h])


# Checks for typedefs, structures, and compiler characteristics.

AC_HEADER_STDBOOL

AC_C_CONST

AC_C_INLINE

AC_TYPE_INT16_T

AC_TYPE_INT32_T

AC_TYPE_INT64_T

AC_TYPE_SIZE_T

AC_STRUCT_TM

AC_TYPE_UINT16_T

AC_TYPE_UINT32_T

AC_TYPE_UINT64_T

AC_TYPE_UINT8_T

AC_CHECK_TYPES([ptrdiff_t])


# Checks for library functions.

AC_FUNC_MALLOC

AC_FUNC_MEMCMP

AC_FUNC_REALLOC

AC_CHECK_FUNCS([ceil floor ftime gethostbyname gethostname memset pow sqrt strcasecmp strncasecmp strstr strtol])


# check for xml2

AM_PATH_XML2(2.6.5, , AC_MSG_ERROR([You need libxml2 >= 2.6.5 to compile theforgottenserver!]))

LIBS="$LIBS $XML_LIBS"


# check for gmp

AC_CHECK_HEADERS([gmp.h], ,[AC_MSG_ERROR("gmp header not found.")])

AC_CHECK_LIB(gmp, __gmpz_init2, ,[AC_MSG_ERROR("Linking against gmp library failed.")])


# check for zlib

AC_CHECK_HEADERS([zlib.h], ,[AC_MSG_ERROR("zlib header not found.")])

AC_CHECK_LIB(z, main, ,[AC_MSG_ERROR("Linking against zlib library failed.")])


# check for boost

AC_CHECK_LIB(boost_thread-gcc-mt, main, , [

    AC_CHECK_LIB(boost_thread-mt, main, , [

        AC_CHECK_LIB(boost_thread, main, , [

            AC_MSG_ERROR("Linking against boost::thread library failed.")

        ])

    ])

])


AC_CHECK_LIB(boost_regex-gcc-mt, main, , [

    AC_CHECK_LIB(boost_regex-mt, main, , [

        AC_CHECK_LIB(boost_regex, main, , [

            AC_MSG_ERROR("Linking against boost::regex library failed.")

        ])

    ])

])


AC_CHECK_LIB(boost_system-gcc-mt, main, , [

    AC_CHECK_LIB(boost_system-mt, main, , [

        AC_CHECK_LIB(boost_system, main, , [

            AC_MSG_ERROR("Linking against boost::system library failed.")

        ])

    ])

])


AC_CHECK_LIB(boost_date_time-gcc-mt, main, , [

    AC_CHECK_LIB(boost_date_time-mt, main, , [

        AC_CHECK_LIB(boost_date_time, main, , [

            AC_MSG_ERROR("Linking against boost::date-time library failed.")

        ])

    ])

])


AC_CHECK_LIB(boost_filesystem-gcc-mt, main, , [

    AC_CHECK_LIB(boost_filesystem-mt, main, , [

        AC_CHECK_LIB(boost_filesystem, main, , [

            AC_MSG_ERROR("Linking against boost::filesystem library failed.")

        ])

    ])

])


# check for boost::asio

AC_CHECK_HEADERS([boost/asio.hpp], , [AC_MSG_ERROR("boost::asio header not found.")])


# check for boost::unordered_set

AC_CHECK_HEADERS([boost/tr1/unordered_set.hpp], , [AC_MSG_ERROR("boost::unordered_set header not found.")])


# check for Crypto++

AC_CHECK_HEADERS([cryptopp/sha.h cryptopp/md5.h cryptopp/adler32.h cryptopp/hex.h cryptopp/base64.h cryptopp/hmac.h cryptopp/cryptlib.h], , [AC_MSG_ERROR("Required Crypto++ headers not found.")])

AC_CHECK_LIB(cryptopp, main, , [AC_MSG_ERROR("Linking against Crypto++ library failed")])


# check for Lua

PKG_CHECK_MODULES(LUA, lua5.1 >= 5.1, , [

    AC_CHECK_HEADERS([lua.hpp], , [AC_MSG_ERROR("Lua header not found.")])

    AC_CHECK_LIB(lua, main, , [AC_MSG_ERROR("Linking against Lua library failed.")])

])

AC_SUBST(LUA_CFLAGS)

AC_SUBST(LUA_LIBS)


# check for mysql if it is enabled

if test -n "$MYSQL_FLAGS"; then

    AC_CHECK_HEADERS([mysql/mysql.h],[MYSQL_LIBS=-lmysqlclient],[AC_MSG_ERROR("MySQL headers missing.")])

    AC_CHECK_LIB(mysqlclient, main,[],[AC_MSG_ERROR("Linking against mysql-client failed.")])

    AC_SUBST(MYSQL_LIBS)

fi


# check for postgresql if it is enabled

if test -n "$PGSQL_FLAGS"; then

    AC_CHECK_HEADERS([`pg_config --includedir`/libpq-fe.h],[PGSQL_LIBS=-lpg],[AC_MSG_ERROR("PostgreSQL headers missing.")])

    AC_CHECK_LIB(pq, main,[],[AC_MSG_ERROR("Linking against libpq failed.")])

    AC_SUBST(PGSQL_LIBS)

fi


# check for sqlite if it is enabled

if test -n "$SQLITE_FLAGS"; then

    AC_CHECK_HEADERS([sqlite3.h],[SQLITE_LIBS=-lsqlite3],[AC_MSG_ERROR("SQLite3 headers missing.")])

    AC_CHECK_LIB(sqlite3, main,[],[AC_MSG_ERROR("Linking against sqlite3 failed.")])

    AC_SUBST(SQLITE_LIBS)

fi


if test "$useMySQL" = "no" ; then

    if test "$useSQLite" = "no" ; then

        if test "$usePostgreSQL" = "no" ; then

            echo Error: no database driver was enabled! To enable a database driver, configure with --enable-\<dbdriver\> \(example: --enable-mysql\).

            echo

            exit 1

            return 1

        fi

    fi

fi

AC_CONFIG_FILES([Makefile])

AC_OUTPUT


echo

#echo The Forgotten Server 0.4

echo $PACKAGE $VERSION

echo

echo Server diagnostics.......... : $serverDiag

echo Login server mode........... : $loginServer

echo OTAdmin protocol............ : $otAdmin

echo Root run permission......... : $rootPermission

echo Login server mode........... : $loginServer

echo Home-directory configuration : $homedirConf

echo OTServ custom allocator..... : $otservAllocator

echo Debug build................. : $debugBuild

echo Using LuaJIT................ : $luaJIT

echo

echo Build with MySQL............ : $useMySQL

echo Build with SQLite........... : $useSQLite

echo Build with PostgreSQL....... : $usePostgreSQL

echo


echo Configure complete, now you may type \'./build.sh\'.

Eu consigo invitar uma guild para war, porém não consigo aceitar (/war accept, GUILDNAME) estou escrevendo no guildchat, aparece esse erro no console:
[12:56:47.732] [Error - TalkAction Interface]

[12:56:47.732] data/talkactions/scripts/war.lua:onSay

[12:56:47.732] Description:

[12:56:47.732] data/talkactions/scripts/war.lua:70: attempt to call global 'doGuildAddEnemy' (a nil value)

[12:56:47.732] stack traceback:

[12:56:47.732]  data/talkactions/scripts/war.lua:70: in function <data/talkactions/scripts/war.lua:1>

Caso precisem do arquivo war.lua:
function onSay(cid, words, param, channel)

	    local guild = getPlayerGuildId(cid)

	    if(not guild or getPlayerGuildLevel(cid) < GUILDLEVEL_LEADER) then

			    doPlayerSendChannelMessage(cid, "", "You cannot execute this talkaction.", TALKTYPE_CHANNEL_W, 0)

			    return true

	    end


	    local t = string.explode(param, ",")

	    if(not t[2]) then

			    doPlayerSendChannelMessage(cid, "", "Not enough param(s).", TALKTYPE_CHANNEL_W, 0)

			    return true

	    end


	    local enemy = getGuildId(t[2])

	    if(not enemy) then

			    doPlayerSendChannelMessage(cid, "", "Guild \"" .. t[2] .. "\" does not exists.", TALKTYPE_CHANNEL_W, 0)

			    return true

	    end


	    if(enemy == guild) then

			    doPlayerSendChannelMessage(cid, "", "You cannot perform war action on your own guild.", TALKTYPE_CHANNEL_W, 0)

			    return true

	    end


	    local enemyName, tmp = "", db.getResult("SELECT `name` FROM `guilds` WHERE `id` = " .. enemy)

	    if(tmp:getID() ~= -1) then

			    enemyName = tmp:getDataString("name")

			    tmp:free()

	    end


	    if(isInArray({"accept", "reject", "cancel"}, t[1])) then

			    local query = "`guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild

			    if(t[1] == "cancel") then

					    query = "`guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy

			    end


			    tmp = db.getResult("SELECT `id`, `begin`, `end`, `payment` FROM `guild_wars` WHERE " .. query .. " AND `status` = 0")

			    if(tmp:getID() == -1) then

					    doPlayerSendChannelMessage(cid, "", "Currently there's no pending invitation for a war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)

					    return true

			    end


			    if(t[1] == "accept") then

					    local _tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)

					    local state = _tmp:getID() < 0 or _tmp:getDataInt("balance") < tmp:getDataInt("payment")


					    _tmp:free()

					    if(state) then

							    doPlayerSendChannelMessage(cid, "", "Your guild balance is too low to accept this invitation.", TALKTYPE_CHANNEL_W, 0)

							    return true

					    end


					    db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. tmp:getDataInt("payment") .. " WHERE `id` = " .. guild)

			    end


			    query = "UPDATE `guild_wars` SET "

			    local msg = "accepted " .. enemyName .. " invitation to war."

			    if(t[1] == "reject") then

					    query = query .. "`end` = " .. os.time() .. ", `status` = 2"

					    msg = "rejected " .. enemyName .. " invitation to war."

			    elseif(t[1] == "cancel") then

					    query = query .. "`end` = " .. os.time() .. ", `status` = 3"

					    msg = "canceled invitation to a war with " .. enemyName .. "."

			    else

					    query = query .. "`begin` = " .. os.time() .. ", `end` = " .. (tmp:getDataInt("end") > 0 and (os.time() + ((tmp:getDataInt("begin") - tmp:getDataInt("end")) / 86400)) or 0) .. ", `status` = 1"

			    end


			    query = query .. " WHERE `id` = " .. tmp:getDataInt("id")

			    if(t[1] == "accept") then

					    doGuildAddEnemy(guild, enemy, tmp:getDataInt("id"), WAR_GUILD)

					    doGuildAddEnemy(enemy, guild, tmp:getDataInt("id"), WAR_ENEMY)

			    end


			    tmp:free()

			    db.executeQuery(query)

			    doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. msg, MESSAGE_EVENT_ADVANCE)

			    return true

	    end


	    if(t[1] == "invite") then

			    local str = ""

			    tmp = db.getResult("SELECT `guild_id`, `status` FROM `guild_wars` WHERE `guild_id` IN (" .. guild .. "," .. enemy .. ") AND `enemy_id` IN (" .. enemy .. "," .. guild .. ") AND `status` IN (0, 1)")

			    if(tmp:getID() ~= -1) then

					    if(tmp:getDataInt("status") == 0) then

							    if(tmp:getDataInt("guild_id") == guild) then

									    str = "You have already invited " .. enemyName .. " to war."

							    else

									    str = enemyName .. " have already invited you to war."

							    end

					    else

							    str = "You are already on a war with " .. enemyName .. "."

					    end


					    tmp:free()

			    end


			    if(str ~= "") then

					    doPlayerSendChannelMessage(cid, "", str, TALKTYPE_CHANNEL_W, 0)

					    return true

			    end


			    local frags = tonumber(t[3])

			    if(frags ~= nil) then

					    frags = math.max(10, math.min(1000, frags))

			    else

					    frags = 100

			    end


			    local payment = tonumber(t[4])

			    if(payment ~= nil) then

					    payment = math.max(100000, math.min(1000000000, payment))

					    tmp = db.getResult("SELECT `balance` FROM `guilds` WHERE `id` = " .. guild)


					    local state = tmp:getID() < 0 or tmp:getDataInt("balance") < payment

					    tmp:free()

					    if(state) then

							    doPlayerSendChannelMessage(cid, "", "Your guild balance is too low for such payment.", TALKTYPE_CHANNEL_W, 0)

							    return true

					    end


					    db.executeQuery("UPDATE `guilds` SET `balance` = `balance` - " .. payment .. " WHERE `id` = " .. guild)

			    else

					    payment = 0

			    end


			    local begining, ending = os.time(), tonumber(t[5])

			    if(ending ~= nil and ending ~= 0) then

					    ending = begining + (ending * 86400)

			    else

					    ending = 0

			    end


			    db.executeQuery("INSERT INTO `guild_wars` (`guild_id`, `enemy_id`, `begin`, `end`, `frags`, `payment`) VALUES (" .. guild .. ", " .. enemy .. ", " .. begining .. ", " .. ending .. ", " .. frags .. ", " .. payment .. ");")

			    doBroadcastMessage(getPlayerGuildName(cid) .. " has invited " .. enemyName .. " to war till " .. frags .. " frags.", MESSAGE_EVENT_ADVANCE)

			    return true

	    end


	    if(not isInArray({"end", "finish"}, t[1])) then

			    return false

	    end


	    local status = (t[1] == "end" and 1 or 4)

	    tmp = db.getResult("SELECT `id` FROM `guild_wars` WHERE `guild_id` = " .. guild .. " AND `enemy_id` = " .. enemy .. " AND `status` = " .. status)

	    if(tmp:getID() ~= -1) then

			    local query = "UPDATE `guild_wars` SET `end` = " .. os.time() .. ", `status` = 5 WHERE `id` = " .. tmp:getDataInt("id")

			    tmp:free()

			    doGuildRemoveEnemy(guild, enemy)

			    doGuildRemoveEnemy(enemy, guild)


			    db.executeQuery(query)

			    doBroadcastMessage(getPlayerGuildName(cid) .. " has " .. (status == 4 and "mend fences" or "ended up a war") .. " with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)

			    return true

	    end


	    if(status == 4) then

			    doPlayerSendChannelMessage(cid, "", "Currently there's no pending war truce from " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)

			    return true

	    end


	    tmp = db.getResult("SELECT `id`, `end` FROM `guild_wars` WHERE `guild_id` = " .. enemy .. " AND `enemy_id` = " .. guild .. " AND `status` = 1")

	    if(tmp:getID() ~= -1) then

			    if(tmp:getDataInt("end") > 0) then

					    tmp:free()

					    doPlayerSendChannelMessage(cid, "", "You cannot request ending for war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)

					    return true

			    end


			    local query = "UPDATE `guild_wars` SET `status` = 4, `end` = " .. os.time() .. " WHERE `id` = " .. tmp:getDataInt("id")

			    tmp:free()


			    db.executeQuery(query)

			    doBroadcastMessage(getPlayerGuildName(cid) .. " has signed an armstice declaration on a war with " .. enemyName .. ".", MESSAGE_EVENT_ADVANCE)

			    return true

	    end


	    doPlayerSendChannelMessage(cid, "", "Currently there's no active war with " .. enemyName .. ".", TALKTYPE_CHANNEL_W, 0)

	    return true

end

Vale Rep+

assinatura.jpg

sonanucafan.jpg

Link para o post
Compartilhar em outros sites
  • 3 years later...

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo