Merge branch 'master' of github.com:eressea/server

This commit is contained in:
Enno Rehling 2014-05-05 19:14:55 -07:00
commit 1e7e5877a1
8 changed files with 198 additions and 119 deletions

2
cutest

@ -1 +1 @@
Subproject commit 788659594ef87e9f497b8039da764182adfd2943 Subproject commit d83cec09a52835274ab8ed4849de16fb8658982a

61
res/e4/main.lua Normal file
View File

@ -0,0 +1,61 @@
require "multis"
require "e3a.frost"
function process(orders)
local confirmed_multis = { }
local suspected_multis = { }
if open_game(get_turn())~=0 then
print("could not read game")
return -1
end
init_summary()
-- run the turn:
if read_orders(orders) ~= 0 then
print("could not read " .. orders)
return -1
end
-- plan_monsters()
local mon = get_faction(666)
if mon ~= nil then
mon.lastturn = get_turn()
end
if nmr_check(config.maxnmrs or 30)~=0 then
return -1
end
process_orders()
if xmas2009~=nil then
xmas2009()
end
-- create new monsters:
spawn_dragons()
spawn_undead()
if get_turn()>=config.kill_after then
kill_nonstarters()
end
-- post-turn updates:
update_guards()
update_scores()
frost.update()
local localechange = { en = { "L46o" } }
change_locales(localechange)
-- use newfactions file to place out new players
-- autoseed(config.basepath .. "/newfactions", false)
write_files(config.locales)
file = "" .. get_turn() .. ".dat"
if eressea.write_game(file)~=0 then
print("could not write game")
return -1
end
return 0
end

4
res/e4/modules.lua Normal file
View File

@ -0,0 +1,4 @@
require "spells"
require "e3a.rules"
require "e3a.markets"
require "e3a.frost"

View File

@ -18,7 +18,7 @@ fi
echo $ROOT echo $ROOT
$ROOT/$BIN_DIR/eressea/test_eressea $ROOT/$BIN_DIR/eressea/test_eressea
pushd $ROOT/game-e2 pushd $ROOT/game-e2
$ROOT/$BIN_DIR/eressea/eressea -e run_tests $ROOT/$BIN_DIR/eressea/eressea runtests.lua
cd $ROOT/game-e3 cd $ROOT/game-e3
$ROOT/$BIN_DIR/eressea/eressea -e run_tests $ROOT/$BIN_DIR/eressea/eressea runtests.lua
popd popd

View File

@ -15,16 +15,17 @@ without prior permission by the authors of Eressea.
#include "bind_unit.h" #include "bind_unit.h"
#include "bindings.h" #include "bindings.h"
#include <kernel/config.h>
#include <sqlite3.h> #include <sqlite3.h>
#include <tolua.h> #include <tolua.h>
#define LTYPE_DB TOLUA_CAST "db" #define LTYPE_DB TOLUA_CAST "db"
extern int db_update_factions(sqlite3 * db, bool force); extern int db_update_factions(sqlite3 * db, bool force, int game);
static int tolua_db_update_factions(lua_State * L) static int tolua_db_update_factions(lua_State * L)
{ {
sqlite3 *db = (sqlite3 *) tolua_tousertype(L, 1, 0); sqlite3 *db = (sqlite3 *) tolua_tousertype(L, 1, 0);
db_update_factions(db, tolua_toboolean(L, 2, 0)); db_update_factions(db, tolua_toboolean(L, 2, 0), global.game_id);
return 0; return 0;
} }

View File

@ -93,6 +93,7 @@ struct settings global = {
"Eressea", /* gamename */ "Eressea", /* gamename */
}; };
bool lomem = false;
FILE *logfile; FILE *logfile;
FILE *updatelog; FILE *updatelog;
const struct race *new_race[MAXRACES]; const struct race *new_race[MAXRACES];
@ -1578,10 +1579,6 @@ void freestrlist(strlist * s)
} }
} }
/* - Meldungen und Fehler ------------------------------------------------- */
bool lomem = false;
/* - Namen der Strukturen -------------------------------------- */ /* - Namen der Strukturen -------------------------------------- */
typedef char name[OBJECTIDSIZE + 1]; typedef char name[OBJECTIDSIZE + 1];
static name idbuf[8]; static name idbuf[8];
@ -3168,7 +3165,6 @@ void load_inifile(dictionary * d)
make_locales(str); make_locales(str);
/* excerpt from [config] (the rest is used in bindings.c) */ /* excerpt from [config] (the rest is used in bindings.c) */
game_name = iniparser_getstring(d, "config:game", game_name); global.game_id = iniparser_getint(d, "config:game_id", 0);
global.inifile = d; global.inifile = d;
} }

View File

@ -393,6 +393,7 @@ extern "C" {
void *vm_state; void *vm_state;
float producexpchance; float producexpchance;
int cookie; int cookie;
int game_id;
int data_version; /* TODO: eliminate in favor of gamedata.version */ int data_version; /* TODO: eliminate in favor of gamedata.version */
struct _dictionary_ *inifile; struct _dictionary_ *inifile;

View File

@ -129,10 +129,20 @@ db_update_email(sqlite3 * db, const faction * f, const db_faction * dbstate,
return SQLITE_OK; return SQLITE_OK;
} }
/*
int db_update_factions(sqlite3 * db, bool force) int db_get_game(sqlite3 *db) {
int game_id = 0;
const char sql_game[] =
"SELECT id FROM game WHERE name=?";
sqlite3_stmt *stmt_game = stmt_cache(db, sql_game);
res = sqlite3_bind_text(stmt_game, 1, gamename, -1, SQLITE_TRANSIENT);
SQL_EXPECT(res, SQLITE_OK);
res = sqlite3_step(stmt_select);
return game_id;
}
*/
int db_update_factions(sqlite3 * db, bool force, int game_id)
{ {
int game_id = 6;
const char sql_select[] = const char sql_select[] =
"SELECT faction.id, faction.email_id, faction.code, email.email, faction.password_md5, faction.name, faction.lastturn FROM email, faction" "SELECT faction.id, faction.email_id, faction.code, email.email, faction.password_md5, faction.name, faction.lastturn FROM email, faction"
" WHERE email.id=faction.email_id AND faction.game_id=? AND (lastturn IS NULL OR lastturn>?)"; " WHERE email.id=faction.email_id AND faction.game_id=? AND (lastturn IS NULL OR lastturn>?)";
@ -147,6 +157,7 @@ int db_update_factions(sqlite3 * db, bool force)
for (;;) { for (;;) {
sqlite3_uint64 id_faction; sqlite3_uint64 id_faction;
int lastturn; int lastturn;
const char * no_b36;
res = sqlite3_step(stmt_select); res = sqlite3_step(stmt_select);
if (res != SQLITE_ROW) if (res != SQLITE_ROW)
@ -154,9 +165,16 @@ int db_update_factions(sqlite3 * db, bool force)
id_faction = sqlite3_column_int64(stmt_select, 0); id_faction = sqlite3_column_int64(stmt_select, 0);
lastturn = sqlite3_column_int(stmt_select, 6); lastturn = sqlite3_column_int(stmt_select, 6);
no_b36 = (const char *)sqlite3_column_text(stmt_select, 2);
f = get_faction_by_id((int)id_faction); f = get_faction_by_id((int)id_faction);
if (!f) {
if (f == NULL || !f->alive) { int no = atoi36(no_b36);
f = findfaction(no);
if (f) {
f->subscription = (int)id_faction;
}
}
if (!f || !f->alive) {
if (lastturn == 0) { if (lastturn == 0) {
const char sql_update[] = "UPDATE faction SET lastturn=? WHERE id=?"; const char sql_update[] = "UPDATE faction SET lastturn=? WHERE id=?";
sqlite3_stmt *stmt = stmt_cache_get(db, sql_update); sqlite3_stmt *stmt = stmt_cache_get(db, sql_update);
@ -175,12 +193,10 @@ int db_update_factions(sqlite3 * db, bool force)
sqlite3_uint64 id_email; sqlite3_uint64 id_email;
bool update = force; bool update = force;
db_faction dbstate; db_faction dbstate;
const char *no_b36;
fset(f, FFL_MARK); fset(f, FFL_MARK);
dbstate.id_faction = id_faction; dbstate.id_faction = id_faction;
dbstate.id_email = sqlite3_column_int64(stmt_select, 1); dbstate.id_email = sqlite3_column_int64(stmt_select, 1);
no_b36 = (const char *)sqlite3_column_text(stmt_select, 2);
dbstate.no = no_b36 ? atoi36(no_b36) : -1; dbstate.no = no_b36 ? atoi36(no_b36) : -1;
dbstate.email = (const char *)sqlite3_column_text(stmt_select, 3); dbstate.email = (const char *)sqlite3_column_text(stmt_select, 3);
dbstate.passwd_md5 = (const char *)sqlite3_column_text(stmt_select, 4); dbstate.passwd_md5 = (const char *)sqlite3_column_text(stmt_select, 4);