Your Filebase for Games like Return to Castle Wolfenstein , Enemy Territory and more ...
------------------------------------------------------------
----------------- XP Save For ETpro --------------------
----------------- By Necromancer --------------------
----------------- 3/7/2009 --------------------
----------------- www.usef-et.org --------------------
------------------------------------------------------------
-- Turms of use: everyone except for racist people can use this module.
-- Racist people are not allowed to use this module (Racist people are - but not only - People who hate other people because of their religion (jews, arabs, christians bodahists, etc..), skin color (white, black, yellow, red, green, orange etc..), social status (hard working, un-employed, manager etc...)
-- you may change this module and take stuff from it, and basicly "do what the fuck you want" with it as long as you give credits to the original author/s.
MAX_XP = 10000
MAX_XP_TIME = 172800 -- 48 hours
DEBUG = 0
et.trap_Cvar_Set("g_XPSaveMaxAge", MAX_XP_TIME)
et.trap_Cvar_Set("g_maxXP", MAX_XP)
-- Constans
BATTLESENSE = 0
ENGINEERING = 1
MEDIC = 2
SIGNALS = 3
LIGHT_WEAPONS = 4
HEAVY_WEAPONS = 5
COVERT = 6
XP = {}
XP["kill"]= 3 -- 3 xp rewarded for a kill
XP["revive"] = 3 -- 3 xp rewarded for a revive
XP["health"] = 1 -- 1 xp rewarded for a health pack
XP["ammo"] = 1 -- 1 xp rewarded for a ammo pack
----- Defines --------
global_players_table = {}
global_levels_table = {}
global_levels_table[BATTLESENSE] = {}
global_levels_table[ENGINEERING] = {}
global_levels_table[MEDIC] = {}
global_levels_table[SIGNALS] = {}
global_levels_table[LIGHT_WEAPONS] = {}
global_levels_table[HEAVY_WEAPONS] = {}
global_levels_table[COVERT] = {}
i=1
for level in string.gfind(et.trap_Cvar_Get("b_levels_battlesense"), "%s*(-?%d*)") do
global_levels_table[BATTLESENSE][i] = tonumber(level)
-- et.G_LogPrint("level - " .. i .. " xp - " ..level .. "\n")
-- et.G_LogPrint("test3 - " .. type(global_levels_table[1][4]) .. "\n")
i = i+1
end
i=1
for level in string.gfind(et.trap_Cvar_Get("b_levels_engineer"), "%s*(-?%d*)") do
global_levels_table[ENGINEERING][i] = tonumber(level)
i = i+1
end
i=1
for level in string.gfind(et.trap_Cvar_Get("b_levels_medic"), "%s*(-?%d*)") do
global_levels_table[MEDIC][i] = tonumber(level)
i = i+1
end
i=1
for level in string.gfind(et.trap_Cvar_Get("b_levels_fieldops"), "%s*(-?%d*)") do
global_levels_table[SIGNALS][i] = tonumber(level)
i = i+1
end
i=1
for level in string.gfind(et.trap_Cvar_Get("b_levels_lightweapons"), "%s*(-?%d*)") do
global_levels_table[LIGHT_WEAPONS][i] = tonumber(level)
i = i+1
end
i=1
for level in string.gfind(et.trap_Cvar_Get("b_levels_soldier"), "%s*(-?%d*)") do
global_levels_table[HEAVY_WEAPONS][i] = tonumber(level)
i = i+1
end
i=1
for level in string.gfind(et.trap_Cvar_Get("b_levels_covertops"), "%s*(-?%d*)") do
global_levels_table[COVERT][i] = tonumber(level)
i = i+1
end
function ParseString(inputString)
-- Rany
inputString = inputString or ""
local i = 1
local t = {}
for w in string.gfind(inputString, "([%S]+)%s*") do
t[i]=w
i=i+1
end
return t
end
function et_ClientBegin( clientNum )
local name = et.Info_ValueForKey( et.trap_GetUserinfo( clientNum ), "name" )
local guid = string.upper(et.Info_ValueForKey( et.trap_GetUserinfo( clientNum ), "cl_guid" ))
if global_players_table[clientNum] == nil then -- how is it possible? see et_ClientSpawn
global_players_table[clientNum] = {}
end
global_players_table[clientNum]["guid"] = guid
global_players_table[clientNum]["name"] = name
global_players_table[clientNum]["ip"] = string.gsub(et.Info_ValueForKey( et.trap_GetUserinfo( clientNum ), "ip" ), "%:%d+", "") -- gsub removed the :port from the ip
global_players_table[clientNum]["team"] = et.gentity_get(clientNum,"sess.sessionTeam")
if global_xp_table[guid] == nil then -- new player (no xp)
global_xp_table[guid] = {}
global_xp_table[guid]["name"] = global_players_table[clientNum]["name"]
global_xp_table[guid][BATTLESENSE] = 0
global_xp_table[guid][ENGINEERING] = 0
global_xp_table[guid][MEDIC] = 0
global_xp_table[guid][SIGNALS] = 0
global_xp_table[guid][LIGHT_WEAPONS] = 0
global_xp_table[guid][HEAVY_WEAPONS] = 0
global_xp_table[guid][COVERT] = 0
global_xp_table[guid]["xp"] = tonumber(et.gentity_get( clientNum, "ps.persistant", 0 ))
end
if global_xp_table[guid]["xp"] >= tonumber(et.trap_Cvar_Get("g_maxXP")) then -- we need to reset the guys xp
-- but thats not enough, the reset must be coordinated with the etpro mod, or it wont work (he'll get he awards back)
if tonumber(et.gentity_get( clientNum, "ps.persistant", 0 )) == 0 then -- ETpro mod has reset his XP! so should we!
resetxp(guid)
end
end
global_xp_table[guid]["time"] = os.time()
-- temp xp
global_players_table[clientNum]["xp"] = tonumber(et.gentity_get( clientNum, "ps.persistant", 0 ))
update_skills(clientNum)
end
function update_skills(slot)
et.gentity_set( slot, "sess.skill", BATTLESENSE, get_skill_level( BATTLESENSE, global_xp_table[global_players_table[slot]["guid"]][BATTLESENSE]) )
et.gentity_set( slot, "sess.skill", ENGINEERING, get_skill_level( ENGINEERING,global_xp_table[global_players_table[slot]["guid"]][ENGINEERING]) )
et.gentity_set( slot, "sess.skill", MEDIC, get_skill_level( MEDIC,global_xp_table[global_players_table[slot]["guid"]][MEDIC]) )
et.gentity_set( slot, "sess.skill", SIGNALS, get_skill_level( SIGNALS,global_xp_table[global_players_table[slot]["guid"]][SIGNALS]) )
et.gentity_set( slot, "sess.skill", LIGHT_WEAPONS, get_skill_level( LIGHT_WEAPONS,global_xp_table[global_players_table[slot]["guid"]][LIGHT_WEAPONS]) )
et.gentity_set( slot, "sess.skill", HEAVY_WEAPONS, get_skill_level( HEAVY_WEAPONS,global_xp_table[global_players_table[slot]["guid"]][HEAVY_WEAPONS]) )
et.gentity_set( slot, "sess.skill", COVERT, get_skill_level( COVERT,global_xp_table[global_players_table[slot]["guid"]][COVERT]) )
end
function et_InitGame( levelTime, randomSeed, restart )
et.RegisterModname("xpsave")
--et.G_LogPrint("test - " .. get_skill_level( ENGINEERING, 30) .. "\n\n")
load_xp()
end
function et_Quit()
write_xp()
end
function et_RunFrame( levelTime )
for i=0, tonumber(et.trap_Cvar_Get("sv_maxclients"))-1, 1 do
if global_players_table[i] ~= nil then
updatexp(i)
end
end
end
--[[
function et_UpgradeSkill(cno, skill)
et.gentity_set( cno, "sess.skill", skill, global_xp_table[global_players_table[slot]["guid"]
][tonumber(skill)] )
end
--]]
function et_ClientCommand(slot, command)
command = string.lower(command)
if command == "xp" then
et.trap_SendServerCommand(slot, "print \"^3xpsave^f:^3 you have " .. global_xp_table[global_players_table[slot]["guid"]]["xp"] .. "XP out of " .. et.trap_Cvar_Get("g_maxXP") .. "XP allowed\n\"")
return 1
end
end
function updatexp(slot)
--if global_players_table[clientNum]["resetxp"] == 1 then return end -- dont update if xp needs to be reset
temp = global_players_table[slot]["xp"]
global_players_table[slot]["xp"] = tonumber(et.gentity_get( slot, "ps.persistant", 0 ))
change = global_players_table[slot]["xp"] - temp
if change > 0 then
global_xp_table[global_players_table[slot]["guid"]]["xp"] = global_xp_table[global_players_table[slot]["guid"]]["xp"] + change
end
end
function resetxp(guid)
global_xp_table[guid]["xp"] = 0
global_xp_table[guid][BATTLESENSE] = 0
global_xp_table[guid][ENGINEERING] = 0
global_xp_table[guid][MEDIC] = 0
global_xp_table[guid][SIGNALS] = 0
global_xp_table[guid][LIGHT_WEAPONS] = 0
global_xp_table[guid][HEAVY_WEAPONS] = 0
global_xp_table[guid][COVERT] = 0
if DEBUG > 0 then et.G_LogPrint("xpsave: xp reset for guid: " .. guid .. "\n") end
end
function get_skill_level(skill,xp) -- gets skill, and the skill's xp, and returns the level the player now has (if i have 50XP, ive got level 2)
return level4(skill,xp)
end
function level1(skill,xp)
if global_levels_table[skill][1] == -1 then return 0
elseif xp >= global_levels_table[skill][1] then return 1
else return 0
end
end
function level2(skill,xp)
if global_levels_table[skill][2] == -1 then return level1(skill,xp)
elseif xp >= global_levels_table[skill][2] then return 2
else return level1(skill,xp)
end
end
function level3(skill,xp)
if global_levels_table[skill][3] == -1 then return level2(skill,xp)
elseif xp >= global_levels_table[skill][3] then return 3
else return level2(skill,xp)
end
end
function level4(skill,xp)
if global_levels_table[skill][4] == -1 then return level3(skill,xp)
elseif xp >= global_levels_table[skill][4] then return 4
else return level3(skill,xp)
end
end
function et_UpgradeSkill( slot, skill )
if DEBUG > 0 then et.G_LogPrint("xpsave: et_UpgradeSkill called!! - " .. skill .. "\n") end
--local temp = et.gentity_get( cno, "ps.persistant", 0 )
--et.G_LogPrint("test2 - " .. temp .. "\n")
-- update singe skill
-- skill = tonumber(skill)
-- local level
-- level = et.gentity_get( slot, "sess.skill", skill)
-- if global_xp_table[global_players_table[slot]["guid"]][skill] > level then
-- et.G_LogPrint("xpsave set!!!\n")
-- et.gentity_set( slot, "sess.skill", skill, global_xp_table[global_players_table[slot]["guid"]][skill] )
-- elseif global_xp_table[global_players_table[slot]["guid"]][skill] < level then
-- global_xp_table[global_players_table[slot]["guid"]][skill] = level
-- et.G_LogPrint("xpsave updated!!!\n")
-- end
-- update all skills
for skill=0,6,1 do
level = et.gentity_get( slot, "sess.skill", skill)
if get_skill_level(skill, global_xp_table[global_players_table[slot]["guid"]][skill]) > level then
if DEBUG > 0 then et.G_LogPrint("xpsave set!!!\n") end
et.gentity_set( slot, "sess.skill", skill, get_skill_level(skill,global_xp_table[global_players_table[slot]["guid"]][skill]) )
elseif get_skill_level(skill, global_xp_table[global_players_table[slot]["guid"]][skill]) < level then
global_xp_table[global_players_table[slot]["guid"]][skill] = global_levels_table[skill][level]
if DEBUG > 0 then et.G_LogPrint("xpsave updated!!!\n") end
end
end
end
-- functions mapping the xp
function et_Print( text )
local t = ParseString(text)
if t[1] == "Medic_Revive:" then
local reviver = tonumber(t[2])
global_xp_table[global_players_table[reviver]["guid"]][MEDIC] = global_xp_table[global_players_table[reviver]["guid"]][MEDIC] + XP["revive"]
if DEBUG > 1 then et.G_LogPrint("xpsave: xp awarded to client " .. reviver .. " for a revive \n\n") end
end
--Ammo_Pack: 4 2
if t[1] == "Ammo_Pack:" then
local giver = tonumber(t[2])
global_xp_table[global_players_table[giver]["guid"]][SIGNALS] = global_xp_table[global_players_table[giver]["guid"]][SIGNALS] + XP["ammo"]
if DEBUG > 1 then et.G_LogPrint("xpsave: xp awarded to client " .. reviver .. " for a ammo pack \n\n") end
end
-- Health_Pack: 4 2
if t[1] == "Health_Pack:" then
local giver = tonumber(t[2])
global_xp_table[global_players_table[giver]["guid"]][MEDIC] = global_xp_table[global_players_table[giver]["guid"]][MEDIC] + XP["health"]
if DEBUG > 1 then et.G_LogPrint("xpsave: xp awarded to client " .. reviver .. " for a health pack \n\n") end
end
end
function et_Obituary( victim, killer, meansOfDeath )
local victimteam = tonumber(et.gentity_get(victim, "sess.sessionTeam"))
local killerteam = tonumber(et.gentity_get(killer, "sess.sessionTeam"))
if victimteam ~= killerteam and killer ~= 1022 and killer ~= victim then
local skill = weapon_skill(meansOfDeath)
if skill == nil then return end
global_xp_table[global_players_table[killer]["guid"]][skill] = global_xp_table[global_players_table[killer]["guid"]][skill] + XP["kill"]
end
end
function weapon_skill(meansOfDeath)
if (meansOfDeath==0) then
weapon="UNKNOWN"
elseif (meansOfDeath==1) then
weapon="MACHINEGUN"
return HEAVY_WEAPONS
elseif (meansOfDeath==2) then
weapon="BROWNING"
return HEAVY_WEAPONS
elseif (meansOfDeath==3) then
weapon="MG42"
return HEAVY_WEAPONS
elseif (meansOfDeath==4) then
weapon="GRENADE"
return LIGHT_WEAPONS
elseif (meansOfDeath==5) then
weapon="ROCKET"
return HEAVY_WEAPONS
elseif (meansOfDeath==6) then
weapon="KNIFE"
return LIGHT_WEAPONS
elseif (meansOfDeath==7) then
weapon="LUGER"
return LIGHT_WEAPONS
elseif (meansOfDeath==8) then
weapon="COLT"
return LIGHT_WEAPONS
elseif (meansOfDeath==9) then
weapon="MP40"
return LIGHT_WEAPONS
elseif (meansOfDeath==10) then
weapon="THOMPSON"
return LIGHT_WEAPONS
elseif (meansOfDeath==11) then
weapon="STEN"
return LIGHT_WEAPONS
elseif (meansOfDeath==12) then
weapon="GARAND"
return LIGHT_WEAPONS
elseif (meansOfDeath==13) then
weapon="SNOOPERSCOPE"
return COVERT
elseif (meansOfDeath==14) then
weapon="SILENCER"
return LIGHT_WEAPONS
elseif (meansOfDeath==15) then
weapon="FG42"
return LIGHT_WEAPONS
elseif (meansOfDeath==16) then
weapon="FG42SCOPE"
return COVERT
elseif (meansOfDeath==17) then
weapon="PANZERFAUST"
return HEAVY_WEAPONS
elseif (meansOfDeath==18) then
weapon="GRENADE_LAUNCHER"
return ENGINEERING
elseif (meansOfDeath==19) then
weapon="FLAMETHROWER"
return HEAVY_WEAPONS
elseif (meansOfDeath==20) then
weapon="GRENADE_PINEAPPLE"
return LIGHT_WEAPONS
elseif (meansOfDeath==21) then
weapon="CROSS"
elseif (meansOfDeath==22) then
weapon="MAPMORTAR"
return HEAVY_WEAPONS
elseif (meansOfDeath==23) then
weapon="MAPMORTAR_SPLASH"
return HEAVY_WEAPONS
elseif (meansOfDeath==24) then
weapon="KICKED"
elseif (meansOfDeath==25) then
weapon="GRABBER"
elseif (meansOfDeath==26) then
weapon="DYNAMITE"
return ENGINEERING
elseif (meansOfDeath==27) then
weapon="AIRSTRIKE"
return SIGNALS
elseif (meansOfDeath==28) then
weapon="SYRINGE"
return MEDIC
elseif (meansOfDeath==29) then
weapon="AMMO"
return SIGNALS
elseif (meansOfDeath==30) then
weapon="ARTY"
return SIGNALS
elseif (meansOfDeath==31) then
weapon="WATER"
elseif (meansOfDeath==32) then
weapon="SLIME"
elseif (meansOfDeath==33) then
weapon="LAVA"
elseif (meansOfDeath==34) then
weapon="CRUSH"
elseif (meansOfDeath==35) then
weapon="TELEFRAG"
elseif (meansOfDeath==36) then
weapon="FALLING"
elseif (meansOfDeath==37) then
weapon = "SUICIDE"
elseif (meansOfDeath==38) then
weapon="TARGET_LASER"
elseif (meansOfDeath==39) then
weapon="TRIGGER_HURT"
elseif (meansOfDeath==40) then
weapon="EXPLOSIVE"
elseif (meansOfDeath==41) then
weapon="CARBINE"
return LIGHT_WEAPONS
elseif (meansOfDeath==42) then
weapon="KAR98"
return LIGHT_WEAPONS
elseif (meansOfDeath==43) then
weapon="GPG40"
return LIGHT_WEAPONS
elseif (meansOfDeath==44) then
weapon="M7"
return LIGHT_WEAPONS
elseif (meansOfDeath==45) then
weapon="LANDMINE"
return ENGINEERING
elseif (meansOfDeath==46) then
weapon="SATCHEL"
return COVERT
elseif (meansOfDeath==47) then
weapon="TRIPMINE"
return ENGINEERING
elseif (meansOfDeath==48) then
weapon="SMOKEBOMB"
return COVERT
elseif (meansOfDeath==49) then
weapon="MOBILE_MG42"
return HEAVY_WEAPONS
elseif (meansOfDeath==50) then
weapon="SILENCED_COLT"
return LIGHT_WEAPONS
elseif (meansOfDeath==51) then
weapon="GARAND_SCOPE"
return COVERT
elseif (meansOfDeath==52) then
weapon="CRUSH_CONSTRUCTION"
return ENGINEERING
elseif (meansOfDeath==53) then
weapon="CRUSH_CONSTRUCTIONDEATH"
elseif (meansOfDeath==54) then
weapon="CRUSH_CONSTRUCTIONDEATH_NOATTACKER"
elseif (meansOfDeath==55) then
weapon="K43"
return LIGHT_WEAPONS
elseif (meansOfDeath==56) then
weapon="K43_SCOPE"
return COVERT
elseif (meansOfDeath==57) then
weapon="MORTAR"
return HEAVY_WEAPONS
elseif (meansOfDeath==58) then
weapon="AKIMBO_COLT"
return LIGHT_WEAPONS
elseif (meansOfDeath==59) then
weapon="AKIMBO_LUGER"
return LIGHT_WEAPONS
elseif (meansOfDeath==60) then
weapon="AKIMBO_SILENCEDCOLT"
return LIGHT_WEAPONS
elseif (meansOfDeath==61) then
weapon="AKIMBO_SILENCEDLUGER"
return LIGHT_WEAPONS
elseif (meansOfDeath==62) then
weapon="SMOKEGRENADE"
return COVERT
elseif (meansOfDeath==63) then
weapon="SWAP_SPACES"
elseif (meansOfDeath==64) then
weapon="SWITCH_TEAM"
end
end
function load_xp()
local fd, len = et.trap_FS_FOpenFile('xpsave.cfg', et.FS_READ )
if len == -1 then -- no xpsave.cfg file
et.trap_FS_FCloseFile( fd )
return -1
end
local filestr = et.trap_FS_Read( fd, len )
et.trap_FS_FCloseFile( fd )
global_xp_table = {}
if DEBUG > 0 then et.G_LogPrint("xpsave: loading xp!!! \n\n") end
--[[
[xpsave]
guid = 9A254288A89F5184FF619DDE178C1B2A
name = ^0A^7|^0S^7aT^dI^0$^7Fa^dc^0tioN
time = 1236294767
skill[0] = 4112.000000
skill[1] = 601.184082
skill[2] = 583.000000
skill[3] = 1.000000
skill[4] = 2193.000000
skill[5] = 72.000000
skill[6] = 230.000000
--]]
--[[
et.G_LogPrint("xpsave - \n" .. filestr .. "\n")
for guid,name,ttime,battle_sense in string.gfind(filestr, "%s*\%[xpsave%]%s*guid%s*=%s*(%x*)%s*name%s*=%s*([^%\n]*)%s*time%s*=%s*([^%\n]*)%s*skill\%[0%]%s*=%s*([^%\n]*)%s*") do
global_xp_table[guid] = {}
et.G_LogPrint("xpsave loaded xp - " .. guid .. "\n")
end
--]]
for guid,name,ttime,battle_sense,eng,medic,signals,light_weapons,heavy_weapons,covert,xp in string.gfind(filestr, "%s*\%[xpsave%]%s*guid%s*=%s*(%x*)%s*name%s*=%s*([^%\n]*)%s*time%s*=%s*([^%\n]*)%s*skill\%[0%]%s*=%s*([^%\n]*)%s*skill\%[1%]%s*=%s*([^%\n]*)%s*skill\%[2%]%s*=%s*([^%\n]*)%s*skill\%[3%]%s*=%s*([^%\n]*)%s*skill\%[4%]%s*=%s*([^%\n]*)%s*skill\%[5%]%s*=%s*([^%\n]*)%s*skill\%[6%]%s*=%s*([^%\n]*)%s*xp%s*=%s*([^%\n]*)%s*") do
global_xp_table[guid] = {}
global_xp_table[guid]["name"] = name
global_xp_table[guid]["time"] = tonumber(ttime)
global_xp_table[guid][BATTLESENSE] = tonumber(battle_sense)
global_xp_table[guid][ENGINEERING] = tonumber(eng)
global_xp_table[guid][MEDIC] = tonumber(medic)
global_xp_table[guid][SIGNALS] = tonumber(signals)
global_xp_table[guid][LIGHT_WEAPONS] = tonumber(light_weapons)
global_xp_table[guid][HEAVY_WEAPONS] = tonumber(heavy_weapons)
global_xp_table[guid][COVERT] = tonumber(covert)
global_xp_table[guid]["xp"] = tonumber(xp)
if DEBUG > 0 then
et.G_LogPrint("xpsave: loaded xp for guid - " .. guid .. "\n")
et.G_LogPrint("xpsave: loaded xp - " .. global_xp_table[guid]["xp"] .. "\n")
et.G_LogPrint("xpsave: loaded skill[0] - " .. global_xp_table[guid][BATTLESENSE] .. "\n")
et.G_LogPrint("xpsave: loaded skill[1] - " .. global_xp_table[guid][ENGINEERING] .. "\n")
et.G_LogPrint("xpsave: loaded skill[2] - " .. global_xp_table[guid][MEDIC] .. "\n")
et.G_LogPrint("xpsave: loaded skill[3] - " .. global_xp_table[guid][SIGNALS] .. "\n")
et.G_LogPrint("xpsave: loaded skill[4] - " .. global_xp_table[guid][LIGHT_WEAPONS] .. "\n")
et.G_LogPrint("xpsave: loaded skill[5] - " .. global_xp_table[guid][HEAVY_WEAPONS] .. "\n")
et.G_LogPrint("xpsave: loaded skill[5] - " .. global_xp_table[guid][COVERT] .. "\n")
end
end
end
function write_xp()
local fd, len = et.trap_FS_FOpenFile('xpsave.cfg', et.FS_WRITE )
if len == -1 then -- no xpsave.cfg file
et.trap_FS_FCloseFile( fd )
return -1
end
local i,text, save_time
save_time = tonumber(et.trap_Cvar_Get("g_XPSaveMaxAge"))
if save_time == nil then t.G_LogPrint("xpsave ERROR - g_XPSaveMaxAge is not set!\n") end
for guid,v in pairs(global_xp_table) do
if os.time() - ( global_xp_table[guid]["time"] + save_time) > 0 then
-- do nothing. dont save it, too much time has passed.
else
--[[ resetting the xp must be coordinated with the ETPro mod!!!
if global_xp_table[guid]["xp"] >= tonumber(et.trap_Cvar_Get("g_maxXP")) then
resetxp(guid)
end
--]]
text = "[xpsave]\n"
text = text .. string.format("%-18s = %s\n","guid",guid)
text = text .. string.format("%-18s = %s\n","name",global_xp_table[guid]["name"])
text = text .. string.format("%-18s = %s\n","time",global_xp_table[guid]["time"])
text = text .. string.format("%-18s = %s\n","skill[0]",global_xp_table[guid][BATTLESENSE])
text = text .. string.format("%-18s = %s\n","skill[1]",global_xp_table[guid][ENGINEERING])
text = text .. string.format("%-18s = %s\n","skill[2]",global_xp_table[guid][MEDIC])
text = text .. string.format("%-18s = %s\n","skill[3]",global_xp_table[guid][SIGNALS])
text = text .. string.format("%-18s = %s\n","skill[4]",global_xp_table[guid][LIGHT_WEAPONS])
text = text .. string.format("%-18s = %s\n","skill[5]",global_xp_table[guid][HEAVY_WEAPONS])
text = text .. string.format("%-18s = %s\n","skill[6]",global_xp_table[guid][COVERT])
text = text .. string.format("%-18s = %s\n","xp",global_xp_table[guid]["xp"])
text = text .."\n"
et.trap_FS_Write( text, string.len(text) ,fd )
if DEBUG > 0 then
et.G_LogPrint("xpsave saved xp - " .. global_xp_table[guid]["xp"] .. "\n")
et.G_LogPrint("xpsave saved skill[0] - " .. global_xp_table[guid][BATTLESENSE] .. "\n")
et.G_LogPrint("xpsave saved skill[1] - " .. global_xp_table[guid][ENGINEERING] .. "\n")
et.G_LogPrint("xpsave saved skill[2] - " .. global_xp_table[guid][MEDIC] .. "\n")
et.G_LogPrint("xpsave saved skill[3] - " .. global_xp_table[guid][SIGNALS] .. "\n")
et.G_LogPrint("xpsave saved skill[4] - " .. global_xp_table[guid][LIGHT_WEAPONS] .. "\n")
et.G_LogPrint("xpsave saved skill[5] - " .. global_xp_table[guid][HEAVY_WEAPONS] .. "\n")
et.G_LogPrint("xpsave saved skill[5] - " .. global_xp_table[guid][COVERT] .. "\n")
end
end
end
et.trap_FS_FCloseFile( fd )
end
File size: 0 MB