Skripte in eigenem folder.

Starten von wdw mit Parameter -e wdw-run.lua
+ erkennt jetzt, ob schon allianzenausgesetzt wurden, ruft ansonsten das setup auf
+ schreibt reports/victory.txt Datei mit Spielstand
This commit is contained in:
Enno Rehling 2003-12-15 23:20:41 +00:00
parent fd47232a21
commit 50e24a43e6
4 changed files with 303 additions and 0 deletions

56
src/scripts/wdw-run.lua Normal file
View file

@ -0,0 +1,56 @@
function list_empty(list)
-- trickfunktion, die rausfindet, ob es schon eine partei gibt.
local _foo, _state, var_1 = list()
local begin = _foo(_state, var_1)
return begin == nil
end
function run_wdw()
-- load 'wdw-start', if it exists. otherwise, load the latest turn,
-- and make a backup called 'wdw-start'.
local file = "wdw-start"
local alliance, position, faction
if list_empty(factions) then
if read_game(file)~=0 then
local turnfile = "" .. get_turn()
if read_game(turnfile)~=0 then
print("could not read game")
return -1
end
if write_game(file)~=0 then
print("could not write game")
return -1
end
end
end
-- run the alliances setup
if list_empty(alliances) then
dofile("wdw-setup.lua")
end
-- -- run the turn (not yet)
-- read_orders(orders)
-- process_orders()
-- siegbedingungen ausgeben
dofile("wdw-standings.lua")
if 1 == 1 then
return -1
end
-- write out the initial reports (no need to run a turn)
write_passwords()
write_reports()
-- write the resulting file to 'wdw-setup'
if write_game("wdw-setup")~=0 then
print("could not write game")
return -1
end
end
--
-- main body of the script
run_wdw()

204
src/scripts/wdw-setup.lua Normal file
View file

@ -0,0 +1,204 @@
positions = {}
function init_positions()
-- init starting positions for the alliances here.
positions = {
[11] = get_region(0, 1),
[12] = get_region(0, 2),
[13] = get_region(0, 3),
[14] = get_region(0, 4),
[15] = get_region(0, 5),
[17] = get_region(0, 6),
[18] = get_region(0, 7),
[19] = get_region(0, 8)
}
end
function get_position(aid)
-- return the position at which alliance 'aid' will start.
local pos = positions[aid]
-- hack, because i have no coordinates yet:
if pos.terrain ~= "ocean" then
return pos
else
-- find a region. let's use the region number 'aid' in the list,
-- so everyone gets their own
print("cannot place alliance " .. aid .. " at " .. pos.x .. ", " .. pos.y)
for pos in regions() do
if pos.terrain ~= "ocean" then
if aid==0 then
return pos
else
aid = aid-1
end
end
end
end
end
gems = { "opal", "diamond", "zaphire", "topaz", "beryl", "agate", "garnet", "emerald" }
function get_gem(id)
return gems[math.mod(id, 8)+1]
end
ano = 0 -- counting active alliance
numalliances = 8 -- number of alliances
lastalliance = nil
function make_faction(position, alliance, number, email, race)
local skillno = 27 -- es gibt 27 skills in der liste
local units = (1+skillno)*6 / number -- jede allianz kriegt 168 leute
local money = units * 5 * 10 -- jede allianz kriegt 8400 silber
local f = add_faction(email, race, "de")
if f == nil then
print("could not create " .. email .. " " .. race)
return
end
print("\n" .. email .. " (" .. itoa36(f.id) .. ")")
f.alliance = alliance
local u = add_unit(f, position)
-- erster ist der, der die extras kriegt:
u.number = 1
local units = units - 1
u:add_item("money", money)
if lastalliance==nil or alliance.id ~= lastalliance.id then
ano=ano+1
lastalliance = alliance
u:add_item(get_gem(ano), numalliances-1)
u:add_item(get_gem(ano+1), 2)
u:add_item(get_gem(ano+2), 2)
end
local sk
for sk in skills do
u = add_unit(f, position)
-- anzahl personen berechnen
local number = math.floor(units / skillno)
units = units - number
skillno = skillno - 1
u.number = number
local skill = skills[sk]
u:set_skill(skill, 3)
print("- " .. number .. " x " .. skill)
end
end
-- skills that will be given to new units
skills = {
"sk_roadwork",
"sk_alchemy",
"sk_crossbow",
"sk_mining",
"sk_bow",
"sk_building",
"sk_trade",
"sk_forestry",
"sk_catapult",
"sk_herbalism",
"sk_training",
"sk_riding",
"sk_armorer",
"sk_shipcraft",
"sk_melee",
"sk_sailing",
"sk_polearm",
"sk_espionage",
"sk_quarrying",
"sk_tactics",
"sk_stealth",
"sk_entertainment",
"sk_weaponsmithing",
"sk_cartmaking",
"sk_perception",
"sk_taxation",
"sk_stamina"
}
function wdw_setup()
-- initialize starting equipment for new players
add_equipment("magicskillboost", 1)
init_positions()
-- Initialize Wächter des Phoenix
alliance = add_alliance(11, "Wächter des Phoenix")
position = get_position(11)
faction = make_faction(position, alliance, 4, "durgan@web.de", "Elfen")
faction = make_faction(position, alliance, 4, "Daniel@gedankenwelt.net", "Trolle")
faction = make_faction(position, alliance, 4, "rostnicht@web.de", "Dämonen")
faction = make_faction(position, alliance, 4, "16419@uni-lueneburg.de", "Insekten")
-- Initialize Refinius
alliance = add_alliance(12, "Refinius")
position = get_position(12)
faction = make_faction(position, alliance, 5, "wanderameisen@dunklerpfad.de", "Meermenschen")
faction = make_faction(position, alliance, 5, "ElunasErben@dunklerpfad.de", "Elfen")
faction = make_faction(position, alliance, 5, "miles.tegson@gmx.net", "Zwerge")
faction = make_faction(position, alliance, 5, "shannera@shannera.de", "Dämonen")
faction = make_faction(position, alliance, 5, "langhaarigerBombenleger@firemail.de", "Trolle")
-- Initialize Stählerner Bund von Parinor
alliance = add_alliance(13, "Stählerner Bund von Parinor")
position = get_position(13)
faction = make_faction(position, alliance, 5, "ta@sts-gbr.de", "Dämonen")
faction = make_faction(position, alliance, 5, "klausnet@gmx.de", "Elfen")
faction = make_faction(position, alliance, 5, "r.jerger@gmx.de", "Trolle")
faction = make_faction(position, alliance, 5, "christianemmler@t-online.de", "Insekten")
faction = make_faction(position, alliance, 5, "DieCherusker@gmx.de", "Orks")
-- Initialize Ethâra´s Zirkel des Chaos
alliance = add_alliance(14, "Ethâra´s Zirkel des Chaos")
position = get_position(14)
faction = make_faction(position, alliance, 4, "craban@web.de", "Elfen")
faction = make_faction(position, alliance, 4, "saressa@celtic-visions.net", "Zwerge")
faction = make_faction(position, alliance, 4, "krachon@gmx.de", "Orks")
faction = make_faction(position, alliance, 4, "andreas.westhoff@physik3.gwdg.de", "Meermenschen")
-- Initialize Janustempler
alliance = add_alliance(15, "Janustempler")
position = get_position(15)
faction = make_faction(position, alliance, 4, "alex.goelkel@t-online.de", "Meermenschen")
faction = make_faction(position, alliance, 4, "matthias.lendholt@gmx.de", "Elfen")
faction = make_faction(position, alliance, 4, "Uwe.Kopf@onlinehome.de", "Orks")
faction = make_faction(position, alliance, 4, "Jan.Thaler@gmx.de", "Dämonen")
-- Initialize Kiddies
alliance = add_alliance(17, "Kiddies")
position = get_position(17)
faction = make_faction(position, alliance, 5, "henning.ewald@t-online.de", "Orks")
faction = make_faction(position, alliance, 5, "red@gmx.de", "Meermenschen")
faction = make_faction(position, alliance, 5, "Morgon@Morgon.de", "Zwerge")
faction = make_faction(position, alliance, 5, "hadmar.lang@wu-wien.ac.at", "Elfen")
faction = make_faction(position, alliance, 5, "vinyambar@burningchaos.org", "Dämonen")
-- Initialize Airbe Druad
alliance = add_alliance(18, "Airbe Druad")
position = get_position(18)
faction = make_faction(position, alliance, 6, "t.lam@gmx.at", "Elfen")
faction = make_faction(position, alliance, 6, "Post_der_Trolle@gmx.de", "Dämonen")
faction = make_faction(position, alliance, 6, "Mann.Martin@t-online.de", "Meermenschen")
faction = make_faction(position, alliance, 6, "thaeberli@freesurf.ch", "Orks")
faction = make_faction(position, alliance, 6, "sonja@tzi.de", "Trolle")
faction = make_faction(position, alliance, 6, "lothar.juerss@gmx.at", "Zwerge")
-- Initialize Matula
alliance = add_alliance(19, "Matula")
position = get_position(19)
faction = make_faction(position, alliance, 4, "mserrano@tiscali.de", "Elfen")
faction = make_faction(position, alliance, 4, "kerki@aol.com", "Dämonen")
faction = make_faction(position, alliance, 4, "Roddiwi@aol.com", "Orks")
faction = make_faction(position, alliance, 4, "bauschan@aol.com", "Trolle")
end
--
-- main body of the script
wdw_setup()

View file

@ -0,0 +1,43 @@
conditions = { pyramid="Pyramide", gems="Handel", phoenix="Phönix" }
function log(file, line)
print(line)
file:write(line .. "\n")
end
function write_standings()
print(reportpath .. "/victory.txt")
local file = io.open(reportpath .. "/victory.txt", "w")
log(file, "** Allianzen **")
local alliance
for alliance in alliances() do
local faction
log(file, alliance.id .. ": " .. alliance.name)
for faction in alliance.factions do
log(file, "- " .. faction.name .." (" .. faction.id .. ")")
end
log (file, "")
end
log(file, "** Erfüllte Siegbedingungen **")
local condition
for condition in conditions do
local none = true
log(file, conditions[condition])
for alliance in alliances() do
if victorycondition(alliance, condition)==1 then
log(file, " - " .. alliance.name .. " (" .. alliance.id .. ")")
none = false
end
end
if none then
log(file, " - Niemand")
end
end
file:close()
end
-- main body of script
write_standings()