autolevel lua stopped working after et300


(NovaPrime) #1

my autolevel lua script stopped working after changing the stock et binary with et300

not sure why that would happen.

All my other lua scripts continue to work, and the autolevel.lua loads during server boot with no errors

Thoughts?

Version =     "0.3c"
Author  =   "Perlo_0ung?!"
Description = "Autosetlevel"
Homepage = "www.ef-clan.org"

--v.03b: added name function
--v0.3c: added more levels

----------------------------------------------------------------------
--made 4 etpub only 
--global vars
--Le Bar Des Clans
----------------------------------------------------------------------

lvl1xp = 50
lvl2xp = 200
lvl3xp = 300
lvl4xp = 400
lvl5xp = 500
lvl6xp = 1000
lvl7xp = 2000
lvl8xp = 3000
lvl9xp = 4000
lvl10xp = 5000
lvl11xp = 6000
lvl12xp = 7000
lvl13xp = 8000
lvl14xp = 9000
lvl15xp = 10000
lvl16xp = 11000
lvl17xp = 12000
lvl18xp = 13000
lvl19xp = 14000
lvl20xp = 15000

--------------Do not edit below this line-------------------------


function et_InitGame(levelTime,randomSeed,restart)
        et.G_Print(""..Description.." Version:".. Version .." Loaded
")
        et.RegisterModname(""..Description..":".. Version .."slot:".. et.FindSelf())
end

function et_ClientSpawn( clientNum, revived, teamChange, restoreHealth )
    if getXP(clientNum) >=  lvl1xp and getXP(clientNum) < lvl2xp then     -- lvl1setzen
        setlevel(clientNum,1,lvl1xp)
    elseif getXP(clientNum) >=  lvl2xp and getXP(clientNum) < lvl3xp then     -- lvl2setzen
        setlevel(clientNum,2,lvl2xp)
	elseif getXP(clientNum) >=  lvl3xp and getXP(clientNum) < lvl4xp then     -- lvl3setzen
        setlevel(clientNum,3,lvl3xp)
	elseif getXP(clientNum) >=  lvl4xp and getXP(clientNum) < lvl5xp then     -- lvl4setzen
        setlevel(clientNum,4,lvl4xp)
	elseif getXP(clientNum) >=  lvl5xp and getXP(clientNum) < lvl6xp then     -- lvl5setzen
        setlevel(clientNum,5,lvl5xp)	
	elseif getXP(clientNum) >=  lvl6xp and getXP(clientNum) < lvl7xp then     -- lvl6setzen
        setlevel(clientNum,6,lvl6xp)
	elseif getXP(clientNum) >=  lvl7xp and getXP(clientNum) < lvl8xp then     -- lvl7setzen
        setlevel(clientNum,7,lvl7xp)
	elseif getXP(clientNum) >=  lvl8xp and getXP(clientNum) < lvl9xp then     -- lvl8setzen
        setlevel(clientNum,8,lvl8xp)	
	elseif getXP(clientNum) >=  lvl9xp and getXP(clientNum) < lvl10xp then     -- lvl9setzen
        setlevel(clientNum,9,lvl9xp)	
	elseif getXP(clientNum) >=  lvl10xp and getXP(clientNum) < lvl11xp then     -- lvl10setzen
        setlevel(clientNum,10,lvl10xp)	
	elseif getXP(clientNum) >=  lvl11xp and getXP(clientNum) < lvl12xp then     -- lvl11setzen
        setlevel(clientNum,11,lvl11xp)	
	elseif getXP(clientNum) >=  lvl12xp and getXP(clientNum) < lvl13xp then     -- lvl12setzen
        setlevel(clientNum,12,lvl12xp)	
	elseif getXP(clientNum) >=  lvl13xp and getXP(clientNum) < lvl14xp then     -- lvl13setzen
        setlevel(clientNum,13,lvl13xp)	
	elseif getXP(clientNum) >=  lvl14xp and getXP(clientNum) < lvl15xp then     -- lvl14setzen
        setlevel(clientNum,14,lvl14xp)	
	elseif getXP(clientNum) >=  lvl15xp and getXP(clientNum) < lvl16xp then     -- lvl15setzen
        setlevel(clientNum,15,lvl15xp)	
	elseif getXP(clientNum) >=  lvl16xp and getXP(clientNum) < lvl17xp then     -- lvl16setzen
        setlevel(clientNum,16,lvl16xp)	
	elseif getXP(clientNum) >=  lvl16xp and getXP(clientNum) < lvl18xp then     -- lvl17setzen
        setlevel(clientNum,17,lvl17xp)	
	elseif getXP(clientNum) >=  lvl18xp and getXP(clientNum) < lvl19xp then     -- lvl18setzen
        setlevel(clientNum,18,lvl18xp)	
	elseif getXP(clientNum) >=  lvl19xp and getXP(clientNum) < lvl20xp then     -- lvl19setzen
        setlevel(clientNum,19,lvl19xp)	
    	elseif getXP(clientNum) >=  lvl20xp then    -- lvl20setzen
        setlevel(clientNum,20,lvl20xp)
    end 
end

function getXP(playerID)
    return  et.gentity_get(playerID, "ps.persistant", 0)   -- STAT_XP etsrc
end 

function getlevel(playerID)
    return et.G_shrubbot_level(playerID)
end 

function setlevel(playerID, newlevel, xp)
local name = et.gentity_get(playerID,"pers.netname") -- name auslesen
if isBot(playerID) then return end
if newlevel <= getlevel(playerID) then return end
et.trap_SendServerCommand(-1,"cp \"^7"..name.." ^3autoleveled to ^1"..grats.."!!\"")
et.trap_SendConsoleCommand( et.EXEC_APPEND, "setlevel ".. playerID.." "..newlevel.."
" )
et.trap_SendConsoleCommand( et.EXEC_APPEND, "readconfig
" )
end

function isBot(playerID)
    if et.gentity_get(playerID,"ps.ping") == 0 then
    return true
    end
end

(phisherman) #2

Search your logfile for “autolevel.lua”, the game will tell you clearly what it doesn’t like about your script.


(NovaPrime) #3

it does not mention any of my lua scripts in the serverlog or admin log.


(phisherman) #4

You said that “the autolevel.lua loads during server boot with no errors”. Does that mean when you do /lua_status, it is listed there? What exactly doesn’t work then? The functionality is gone, but the script is still running?


(NovaPrime) #5

it states in the server console log, but only mentions that the autolevel.lua loaded successfully. So yes, I guess in a way the functionality is gone but the script is loaded.

XP seems to be saving fine, and setlevel works. Just don’t know what could be getting in the way of this script all the sudden.

Also, should mention I am not running the etpub client with my server. I never have, so not sure why it would be a factor now but figured I would mention.

**** update***
I just reverted back to an earlier version of the script, version 0.3a and it seems to be working. Not sure why.


(Micha) #6

The lua above is no script made by perlo. I know him/his work and his version had like 3-4 levels and no french comment in it :slight_smile:
So I think someone changed to this and it broke because of this.

I found a version I once edited:


Description = "Autosetlevel"
Version =     "0.4"

--[[
Original Author: Perlo_0ung?!
www.ef-clan.org
--]]

--Micha!s edits:
--v.03b: added name function
--v0.3c: added more levels
--v0.3d: added TheSilencerPL suggestion
--		 added more detection ways
--v0.4:  setlevel command detection depending on mod

----------------------------------------------------------------------
-- CONFIGURATION
----------------------------------------------------------------------

lvl1xp = 2000
lvl2xp = 8000
lvl3xp = 14000
lvl4xp = 24000
lvl5xp = 9999999999999999
lvl6xp = 99999999999999999

----------------------------------------------------------------------
-- DO NOT EDIT BELOW THIS LINE
-- UNLESS YOU KNOW WHAT YOU'RE DOING
----------------------------------------------------------------------

function et_InitGame(levelTime,randomSeed,restart)
	et.G_Print(""..Description.." Version: ".. Version .." Loaded
")
    et.RegisterModname(et.Q_CleanStr(Description).."   "..Version.."   "..et.FindSelf())
end

function et_ClientSpawn( clientNum, revived, teamChange, restoreHealth )
	local valXP = getXP(clientNum)
	if valXP >=  lvl1xp and valXP < lvl2xp then    
		setlevel(clientNum,1,lvl1xp)
	elseif valXP >=  lvl2xp and valXP < lvl3xp then    
		setlevel(clientNum,2,lvl2xp)
	elseif valXP >=  lvl3xp and valXP < lvl4xp then    
		setlevel(clientNum,3,lvl3xp)
	elseif valXP >=  lvl4xp and valXP < lvl5xp then    
		setlevel(clientNum,4,lvl4xp)
	elseif valXP >=  lvl5xp and valXP < lvl6xp then   
		setlevel(clientNum,5,lvl5xp)
	elseif getXP(clientNum) >= lvl6xp then
        setlevel(clientNum,6,lvl6xp)
    end 
end

function et_ClientBegin( clientNum )
	local valXP = getXP(clientNum)
	if valXP >=  lvl1xp and valXP < lvl2xp then    
		setlevel(clientNum,1,lvl1xp)
	elseif valXP >=  lvl2xp and valXP < lvl3xp then    
		setlevel(clientNum,2,lvl2xp)
	elseif valXP >=  lvl3xp and valXP < lvl4xp then    
		setlevel(clientNum,3,lvl3xp)
	elseif valXP >=  lvl4xp and valXP < lvl5xp then    
		setlevel(clientNum,4,lvl4xp)
	elseif valXP >=  lvl5xp and valXP < lvl6xp then   
		setlevel(clientNum,5,lvl5xp)
	elseif getXP(clientNum) >= lvl6xp then
        setlevel(clientNum,6,lvl6xp)
    end 
end

function checkteam(client)
   local cs = et.trap_GetConfigstring(et.CS_PLAYERS + client)
	return tonumber(et.Info_ValueForKey(cs, "t"))
end

function getXP(playerID)
	local totalxp = et.gentity_get(playerID, "sess.skillpoints",1) + et.gentity_get(playerID, "sess.skillpoints",2) + et.gentity_get(playerID, "sess.skillpoints",3) + et.gentity_get(playerID, "sess.skillpoints",4) + et.gentity_get(playerID, "sess.skillpoints",5) + et.gentity_get(playerID, "sess.skillpoints",6) + et.gentity_get(playerID, "sess.skillpoints",7)
    return totalxp  
end 

function getlevel(playerID)
    return et.G_shrubbot_level(playerID)
end 

function setlevel(playerID, newlevel, xp)
    if isBot(playerID) or noGuid(playerID) then 
	return end
    if newlevel <= getlevel(playerID) then return end 
        et.trap_SendServerCommand(-1,"chat \"^nCongratulations ^7"..name(playerID).."^n, ^nyou have been promoted to a level ^7"..newlevel.." ^nuser!\"")
		local gamename = et.trap_Cvar_Get( "gamename" )
		if gamename == "infected" or gamename == "jaymod" or gamename == "blight" then
			et.trap_SendConsoleCommand( et.EXEC_APPEND, "!set ".. playerID.." "..newlevel.." 
" )
		else
			et.trap_SendConsoleCommand( et.EXEC_APPEND, "!setlevel ".. playerID.." "..newlevel.." 
" )
		end
        et.trap_SendConsoleCommand( et.EXEC_APPEND, "!readconfig
" ) 
end

function noGuid(playerID)
    local userinfo = et.trap_GetUserinfo( playerID )
    local guid = et.Info_ValueForKey( userinfo, "cl_guid" )
    if guid == "NO_GUID" or guid == "unknown" then  
		return true
    end
end

function name(id) -- return a player's name
  local name = et.Info_ValueForKey(et.trap_GetUserinfo(id), "name")
  if name == "" then
    return "*unknown*"
  end
  return name
end

function isBot(playerID)
	local guid = et.Info_ValueForKey(et.trap_GetUserinfo(playerID),"cl_guid")
    if et.gentity_get(playerID,"pers.connected") == 2 and et.gentity_get(playerID,"ps.ping") == 0 and (string.sub (guid, 25,32 )) == "00000000" then
		return true
    end
end


(Mateos) #7

Could be simplified, if you start with a >= 16, then you can handle each case with >= -1, instead of an interval ^^’


(NovaPrime) #8

thanks, I may try the script you provided.