goesraphael1 2 Postado Novembro 27, 2012 Share Postado Novembro 27, 2012 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+ #up Link para o comentário https://xtibia.com/forum/topic/199836-encerrado-erro-war-system/ Compartilhar em outros sites More sharing options...
dinpajeh 1 Postado Novembro 28, 2012 Share Postado Novembro 28, 2012 Olha ele diz que não esta reconhecendo esta função doguildaddenemy, confira nas libs se existe esta função ou se ela esta declarada mais acima.. de onde você pegou este sistema war? posso ajudar mais se souber qual é o war system que utilizou. Link para o comentário https://xtibia.com/forum/topic/199836-encerrado-erro-war-system/#findComment-1397990 Compartilhar em outros sites More sharing options...
Piabeta Kun 359 Postado Novembro 29, 2012 Share Postado Novembro 29, 2012 (editado) Você não importou a query, por isso o erro! Editado Novembro 29, 2012 por PiabetaMan01 Link para o comentário https://xtibia.com/forum/topic/199836-encerrado-erro-war-system/#findComment-1398407 Compartilhar em outros sites More sharing options...
goesraphael1 2 Postado Novembro 29, 2012 Autor Share Postado Novembro 29, 2012 Eu ja resolvi o problema, tava tudo certo, só que não tinha o doguildaddenemy nas libs, ai um amigo me passou a versão mais atualizada do otland, ele é premium, ai fuincionou normal... E eu ja tinha importado as querys Link para o comentário https://xtibia.com/forum/topic/199836-encerrado-erro-war-system/#findComment-1398553 Compartilhar em outros sites More sharing options...
Piabeta Kun 359 Postado Novembro 29, 2012 Share Postado Novembro 29, 2012 Duvida sanada, reportando para que movam! Link para o comentário https://xtibia.com/forum/topic/199836-encerrado-erro-war-system/#findComment-1398562 Compartilhar em outros sites More sharing options...
Erimyth 73 Postado Novembro 29, 2012 Share Postado Novembro 29, 2012 Duvida sanada. Movido Link para o comentário https://xtibia.com/forum/topic/199836-encerrado-erro-war-system/#findComment-1398642 Compartilhar em outros sites More sharing options...
Stigal 585 Postado Abril 20, 2018 Share Postado Abril 20, 2018 A questão neste tópico de suporte foi encerrada por falta de respostas. Este tópico está fechado e foi movido para Suporte - Tópicos Sem Resposta. + Caso a dúvida não tenha sido resolvida você poderá criar outro tópico solicitando ajuda. * Lembre-se que é permitido dar UP no tópico a cada 24 horas para assim o destacar e manter movimentado. Link para o comentário https://xtibia.com/forum/topic/199836-encerrado-erro-war-system/#findComment-1732900 Compartilhar em outros sites More sharing options...
Posts Recomendados