Jump to content

Hey :) scripters check this (i am not sure


DeadTeamRacing

Recommended Posts

Hey :)

I scripted Toptimes so i need to know if this is right so please help

addEvent( "onPlayerPickUpRacePickup", true ) 
function onPlayerPickUpRacePickup(pickupID,pickupType,vehicleModel) 
    if pickupType == "vehiclechange" and vehicleModel == 425 then 
      outputChatBox("#0000ff*#ffffff"..getPlayerName(source).. ' Has got a new Toptime #ff000  Rank: ' .. newPos .. " #ff6600 | Time:"..msToTimeStr(newTime)) 
      outputChatBox("#ffffff* #ff6600 Disabling Ghostmode in 10 seconds...") 
      setTimer(gmoff, 10000, 1)  
      g_SToptimesManager:playerFinished( source, exports.race:getTimePassed()) 
   end 
end 
addEventHandler( "onPlayerPickUpRacePickup", getRootElement(), onPlayerPickUpRacePickup) 
  

Edited by Guest
Link to comment
  • Moderators

Hi DeadTeamRacing,

Before replace this:

outputChatBox("#0000ff*#ffffff"..getPlayerName(source).. ' Has got a new Toptime #ff000  Rank: ' .. newPos .. " #ff6600 | Time:"..msToTimeStr(newTime)) 

by this:

outputChatBox("#0000ff*#ffffff"..getPlayerName(source).." Has got a new Toptime #ff000  Rank: " .. newPos .. " #ff6600 | Time:"..msToTimeStr(newTime)) 

Except that, it might works but I unknow this function ( msToTimeStr ) so I can't say if it's works:

But why you can't try it yourself ?

Link to comment

[2011-03-01 01:12:40] Starting race_toptimes

[2011-03-01 01:12:40] SCRIPT ERROR: race_toptimes/toptimes_server.lua:36: unexpected symbol near ')'

[2011-03-01 01:12:40] WARNING: Loading script failed: race_toptimes/toptimes_server.lua:36: unexpected symbol near ')'

it shows that

and toptimes say please wait

Link to comment
[2011-03-01 01:12:40] Starting race_toptimes

[2011-03-01 01:12:40] SCRIPT ERROR: race_toptimes/toptimes_server.lua:36: unexpected symbol near ')'

[2011-03-01 01:12:40] WARNING: Loading script failed: race_toptimes/toptimes_server.lua:36: unexpected symbol near ')'

it shows that

and toptimes say please wait

Check if there is nothing wrong at line 36

Link to comment

that problem solved (thanks:)) but now it says this error

[2011-03-01 15:14:00] SCRIPT ERROR: race_toptimes/toptimes_server.lua:420: ')' expected (to close '(' at line 405) near 'addEvent'

[2011-03-01 15:14:00] WARNING: Loading script failed: race_toptimes/toptimes_server.lua:420: ')' expected (to close '(' at line 405) near 'addEvent'

Link to comment

Well i am wishing if u can find all possible errors

-- 
-- toptimes_server.lua
--
 
SToptimesManager = {}
SToptimesManager.__index = SToptimesManager
SToptimesManager.instances = {}
 
 
---------------------------------------------------------------------------
-- Server
-- Handle events from Race
--
-- This is the 'interface' from Race
--
---------------------------------------------------------------------------
 
addEvent('onMapStarting')
addEventHandler('onMapStarting', g_Root,
    function(mapInfo, mapOptions, gameOptions)
        if g_SToptimesManager then
            g_SToptimesManager:setModeAndMap( mapInfo.modename, mapInfo.name, gameOptions.statsKey )
        end
    end
)
 
addEvent( "onPlayerPickUpRacePickup", true )
function onPlayerPickUpRacePickup(pickupID,pickupType,vehicleModel)
    if pickupType == "vehiclechange" and vehicleModel == 425 then
          outputChatBox("#0000ff*#ffffff"..getPlayerName(source).." Has got a new Toptime #ff000  Rank: " .. newPos .. " #ff6600 | Time:"..msToTimeStr(newTime))
      setTimer(gmoff, 10000, 1)
      g_SToptimesManager:playerFinished( source, exports.race:getTimePassed())
   end
end
addEventHandler( "onPlayerPickUpRacePickup", getRootElement(), onPlayerPickUpRacePickup)
 
 
addEvent('onPlayerFinish')
addEventHandler('onPlayerFinish', g_Root,
    function(rank, time)
        if g_SToptimesManager then
            g_SToptimesManager:playerFinished( source, time)
        end
    end
)
 
addEventHandler('onResourceStop', g_ResRoot,
    function()
        if g_SToptimesManager then
            g_SToptimesManager:unloadingMap()
        end
    end
)
 
addEventHandler('onPlayerQuit', g_Root,
    function()
        if g_SToptimesManager then
            g_SToptimesManager:removePlayerFromUpdateList(source)
            g_SToptimesManager:unqueueUpdate(source)
        end
    end
)
 
addEventHandler('onResourceStart', g_ResRoot,
    function()
        local raceInfo = getRaceInfo()
        if raceInfo and g_SToptimesManager then
            g_SToptimesManager:setModeAndMap( raceInfo.mapInfo.modename, raceInfo.mapInfo.name, raceInfo.gameOptions.statsKey )
        end
    end
)
 
function getRaceInfo()
    local raceResRoot = getResourceRootElement( getResourceFromName( "race" ) )
    return raceResRoot and getElementData( raceResRoot, "info" )
end
 
---------------------------------------------------------------------------
--
-- Events fired from here
--
---------------------------------------------------------------------------
 
addEvent("onPlayerToptimeImprovement")
 
---------------------------------------------------------------------------
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:create()
--
-- Create a SToptimesManager instance
--
---------------------------------------------------------------------------
function SToptimesManager:create()
    local id = #SToptimesManager.instances + 1
    SToptimesManager.instances[id] = setmetatable(
        {
            id = id,
            playersWhoWantUpdates   = {},
            updateQueue          = {},
            serviceQueueTimer       = nil,
            displayTopCount      = 12,      -- Top number of times to display
            mapTimes                = nil,      -- SMaptimes:create()
            serverRevision          = 0,        -- To prevent redundant updating to clients
        },
        self
    )
    SToptimesManager.instances[id]:postCreate()
    return SToptimesManager.instances[id]
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:destroy()
--
-- Destroy a SToptimesManager instance
--
---------------------------------------------------------------------------
function SToptimesManager:destroy()
    SToptimesManager.instances[self.id] = nil
    self.id = 0
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:postCreate()
--
--
--
---------------------------------------------------------------------------
function SToptimesManager:postCreate()
    cacheSettings()
    self.displayTopCount = g_Settings.numtimes
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:setModeAndMap()
--
-- Called when a new map has been loaded
--
---------------------------------------------------------------------------
function SToptimesManager:setModeAndMap( raceModeName, mapName, statsKey )
    outputDebug( 'TOPTIMES', 'SToptimesManager:setModeAndMap ' .. raceModeName .. '<>' .. mapName )
 
    -- Reset updatings from the previous map
    self.playersWhoWantUpdates = {}
    self.updateQueue = {}
    if self.serviceQueueTimer then
        killTimer(self.serviceQueueTimer)
    end
    self.serviceQueueTimer = nil
 
    -- Remove old map times
    if self.mapTimes then
        self.mapTimes:flush()   -- Ensure last stuff is saved
        self.mapTimes:destroy()
    end
 
    -- Get map times for this map
    self.mapTimes = SMaptimes:create( raceModeName, mapName, statsKey )
    self.mapTimes:load()
 
    -- Get the toptimes data ready to send
    self:updateTopText()
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:unloadingMap()
--
-- Called when unloading
--
---------------------------------------------------------------------------
function SToptimesManager:unloadingMap()
    if self.mapTimes then
        self.mapTimes:flush()   -- Ensure last stuff is saved
    end
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:playerFinished()
--
-- If time is good enough, insert into database
--
---------------------------------------------------------------------------
function SToptimesManager:playerFinished( player, newTime, dateRecorded )
 
    -- Check if top time recording is disabled for this player
    if getElementData ( player, "toptimes" ) == "off" then
        return
    end
 
    if not self.mapTimes then
        outputDebug( 'TOPTIMES', 'SToptimesManager:playerFinished - self.mapTimes == nil' )
        return
    end
 
    dateRecorded = dateRecorded or getRealDateTimeNowString()
 
    local oldTime   = self.mapTimes:getTimeForPlayer( player )  -- Can be false if no previous time
    local newPos    = self.mapTimes:getPositionForTime( newTime, dateRecorded )
 
    -- See if time is an improvement for this player
    if not oldTime or newTime < oldTime then
 
        local oldPos    = self.mapTimes:getIndexForPlayer( player )
        triggerEvent("onPlayerToptimeImprovement", player, newPos, newTime, oldPos, oldTime, self.displayTopCount, self.mapTimes:getValidEntryCount() )
 
        -- See if its in the top display
        if newPos <= self.displayTopCount then
            outputDebug( 'TOPTIMES', getPlayerName(player) .. ' got toptime position ' .. newPos )
        end
 
        if oldTime then
            outputDebug( 'TOPTIMES', getPlayerName(player) .. ' new personal best ' .. newTime .. ' ' .. oldTime - newTime )
        end
 
        self.mapTimes:setTimeForPlayer( player, newTime, dateRecorded )
 
        -- updateTopText if database was changed
        if newPos <= self.displayTopCount then
            self:updateTopText()
        end
    end
 
    outputDebug( 'TOPTIMES', '++ SToptimesManager:playerFinished ' .. tostring(getPlayerName(player)) .. ' time:' .. tostring(newTime) )
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:updateTopText()
--
-- Update the toptimes client data for the current map
--
---------------------------------------------------------------------------
function SToptimesManager:updateTopText()
    if not self.mapTimes then return end
    -- Update data
 
    -- Read top rows from map toptimes table and send to all players who want to know
    self.toptimesDataForMap = self.mapTimes:getToptimes( self.displayTopCount )
    self.serverRevision = self.serverRevision +
Link to comment

all other fixeds but

this message shows

[2011-03-01 22:21:52] ERROR: Client triggered serverside event onLoadedAtClient_tt, but event is not added serverside

.....

.....

.....

....

[2011-03-01 22:22:01] ERROR: Client triggered serverside event onClientRequestToptimesUpdates, but event is not added serverside

........

........

........

[2011-03-01 22:22:11] ERROR: Client triggered serverside event onClientRequestToptimesUpdates, but event is not added

[2011-03-01 22:22:40] ERROR: Client triggered serverside event onClientRequestToptimesUpdates, but event is not added serverside

[2011-03-01 22:22:50] ERROR: Client triggered serverside event onClientRequestToptimesUpdates, but event is not added serverside

Link to comment

this is my meta

<meta> 
    <info name="Toptimes" description="Toptimes addon for Race" author="ccw" type="script" addon="race" version="0.0.3" build="r472 02Oct09"/> 
  
    <script src="_common_tt.lua" type="server"/> 
    <script src="util_tt_server.lua" type="server"/> 
    <script src="databasetable_server.lua" type="server"/> 
    <script src="maptimes_server.lua" type="server"/> 
    <script src="toptimes_server.lua" type="server"/> 
  
    <script src="_common_tt.lua" type="client"/> 
    <script src="util_tt_client.lua" type="client"/> 
    <script src="toptimes_client.lua" type="client"/> 
  
    <file src="img/timepassedbg.png"/> 
    <file src="img/blank.png"/> 
  
  
    <settings> 
        <!-- ***************************************************** 
             All these settings are adjustable in the Admin Panel: 
                1. start admin 
                2. press 'p' 
                3. select Resources tab 
                4. double click on 'race_toptimes' 
             ***************************************************** --> 
  
        <setting name="*numtimes" value="8" 
                    friendlyname="Number of top times" 
                    group="Setting" 
                    accept="1-30" 
                    desc="The number of top times to show." 
                    /> 
  
        <setting name="*startshow" value="false" 
                    friendlyname="Show at start" 
                    group="Setting" 
                    accept="false,true" 
                    desc="Set to true to show the table at the start of each race." 
                    /> 
  
        <setting name="*gui_x" value="0.7" 
                    friendlyname="Table position X" 
                    group="Interface" 
                    accept="0.00-1.00" 
                    desc="The position of the table on the screen." 
                    /> 
  
        <setting name="*gui_y" value="0.02" 
                    friendlyname="Table position Y" 
                    group="Interface" 
                    accept="0.00-1.00" 
                    desc="The position of the table on the screen." 
                    /> 
  
        <setting name="*admingroup" value="Admin,SuperModerator" 
                    friendlyname="Admin group list" 
                    group="_Advanced" 
                    accept="*" 
                    examples="Admin,Moderator,SuperModerator" 
                    desc="To issue certain commands, the player must belong to one of the groups listed." 
                    /> 
  
    </settings> 
  
</meta> 
  

Link to comment
  • Moderators

That's strange, the toptimes_server.lua is in your meta.xml at line 8:

<script src="toptimes_server.lua" type="server"/> 

Maybe put it in first place ??

Otherwise I don't know maybe Solidsnake or another scripter can help you on this error :mrgreen:

Link to comment

This script have alot of errors:

Line 362,363:

                outputChatBox( "Top time"..placeText.." from " .. tostring(row.playerName) .. " deleted by " .. getPlayerName(player), 255,55,00 ) 
                outputServerLog( "INFO: Top time"..placeText.." from " ..tostring(row.playerName).. " (" ..tostring(row.timeText).. " in " ..mapName.. ") deleted by " .. getAdminNameForLog(player) ) 

Line 388:

addEventHandler("onSettingChange", g_ResRoot, 

Line 399:

    end) 

BTW: Full debugged script:

-- 
-- toptimes_server.lua
--
 
SToptimesManager = {}
SToptimesManager.__index = SToptimesManager
SToptimesManager.instances = {}
 
 
---------------------------------------------------------------------------
-- Server
-- Handle events from Race
--
-- This is the 'interface' from Race
--
---------------------------------------------------------------------------
 
addEvent("onMapStarting")
addEventHandler("onMapStarting", g_Root,
    function(mapInfo, mapOptions, gameOptions)
        if g_SToptimesManager then
            g_SToptimesManager:setModeAndMap( mapInfo.modename, mapInfo.name, gameOptions.statsKey )
        end
    end
)
 
addEvent( "onPlayerPickUpRacePickup", true )
function onPlayerPickUpRacePickup(pickupID,pickupType,vehicleModel)
    if pickupType == "vehiclechange" and vehicleModel == 425 then
          outputChatBox("#0000ff*#ffffff"..getPlayerName(source).." Has got a new Toptime #ff000  Rank: " .. newPos .. " #ff6600 | Time:"..msToTimeStr(newTime))
      setTimer(gmoff, 10000, 1)
      g_SToptimesManager:playerFinished( source, exports.race:getTimePassed())
   end
end
addEventHandler( "onPlayerPickUpRacePickup", getRootElement(), onPlayerPickUpRacePickup)
 
 
addEvent("onPlayerFinish")
addEventHandler("onPlayerFinish", g_Root,
    function(rank, time)
        if g_SToptimesManager then
            g_SToptimesManager:playerFinished( source, time)
        end
    end
)
 
addEventHandler("onResourceStop", g_ResRoot,
    function()
        if g_SToptimesManager then
            g_SToptimesManager:unloadingMap()
        end
    end
)
 
addEventHandler("onPlayerQuit", g_Root,
    function()
        if g_SToptimesManager then
            g_SToptimesManager:removePlayerFromUpdateList(source)
            g_SToptimesManager:unqueueUpdate(source)
        end
    end
)
 
addEventHandler("onResourceStart", g_ResRoot,
    function()
        local raceInfo = getRaceInfo()
        if raceInfo and g_SToptimesManager then
            g_SToptimesManager:setModeAndMap( raceInfo.mapInfo.modename, raceInfo.mapInfo.name, raceInfo.gameOptions.statsKey )
        end
    end
)
 
function getRaceInfo()
    local raceResRoot = getResourceRootElement( getResourceFromName( "race" ) )
    return raceResRoot and getElementData( raceResRoot, "info" )
end
 
---------------------------------------------------------------------------
--
-- Events fired from here
--
---------------------------------------------------------------------------
 
addEvent("onPlayerToptimeImprovement")
 
---------------------------------------------------------------------------
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:create()
--
-- Create a SToptimesManager instance
--
---------------------------------------------------------------------------
function SToptimesManager:create()
    local id = #SToptimesManager.instances + 1
    SToptimesManager.instances[id] = setmetatable(
        {
            id = id,
            playersWhoWantUpdates   = {},
            updateQueue          = {},
            serviceQueueTimer       = nil,
            displayTopCount      = 12,      -- Top number of times to display
            mapTimes                = nil,      -- SMaptimes:create()
            serverRevision          = 0,        -- To prevent redundant updating to clients
        },
        self
    )
    SToptimesManager.instances[id]:postCreate()
    return SToptimesManager.instances[id]
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:destroy()
--
-- Destroy a SToptimesManager instance
--
---------------------------------------------------------------------------
function SToptimesManager:destroy()
    SToptimesManager.instances[self.id] = nil
    self.id = 0
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:postCreate()
--
--
--
---------------------------------------------------------------------------
function SToptimesManager:postCreate()
    cacheSettings()
    self.displayTopCount = g_Settings.numtimes
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:setModeAndMap()
--
-- Called when a new map has been loaded
--
---------------------------------------------------------------------------
function SToptimesManager:setModeAndMap( raceModeName, mapName, statsKey )
    outputDebug( "TOPTIMES", "SToptimesManager:setModeAndMap " .. raceModeName .. "<>" .. mapName )
 
    -- Reset updatings from the previous map
    self.playersWhoWantUpdates = {}
    self.updateQueue = {}
    if self.serviceQueueTimer then
        killTimer(self.serviceQueueTimer)
    end
    self.serviceQueueTimer = nil
 
    -- Remove old map times
    if self.mapTimes then
        self.mapTimes:flush()   -- Ensure last stuff is saved
        self.mapTimes:destroy()
    end
 
    -- Get map times for this map
    self.mapTimes = SMaptimes:create( raceModeName, mapName, statsKey )
    self.mapTimes:load()
 
    -- Get the toptimes data ready to send
    self:updateTopText()
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:unloadingMap()
--
-- Called when unloading
--
---------------------------------------------------------------------------
function SToptimesManager:unloadingMap()
    if self.mapTimes then
        self.mapTimes:flush()   -- Ensure last stuff is saved
    end
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:playerFinished()
--
-- If time is good enough, insert into database
--
---------------------------------------------------------------------------
function SToptimesManager:playerFinished( player, newTime, dateRecorded )
 
    -- Check if top time recording is disabled for this player
    if getElementData ( player, "toptimes" ) == "off" then
        return
    end
 
    if not self.mapTimes then
        outputDebug( "TOPTIMES", "SToptimesManager:playerFinished - self.mapTimes == nil" )
        return
    end
 
    dateRecorded = dateRecorded or getRealDateTimeNowString()
 
    local oldTime   = self.mapTimes:getTimeForPlayer( player )  -- Can be false if no previous time
    local newPos    = self.mapTimes:getPositionForTime( newTime, dateRecorded )
 
    -- See if time is an improvement for this player
    if not oldTime or newTime < oldTime then
 
        local oldPos    = self.mapTimes:getIndexForPlayer( player )
        triggerEvent("onPlayerToptimeImprovement", player, newPos, newTime, oldPos, oldTime, self.displayTopCount, self.mapTimes:getValidEntryCount() )
 
        -- See if its in the top display
        if newPos <= self.displayTopCount then
            outputDebug( "TOPTIMES", getPlayerName(player) .. " got toptime position " .. newPos )
        end
 
        if oldTime then
            outputDebug( "TOPTIMES", getPlayerName(player) .. " new personal best " .. newTime .. " " .. oldTime - newTime )
        end
 
        self.mapTimes:setTimeForPlayer( player, newTime, dateRecorded )
 
        -- updateTopText if database was changed
        if newPos <= self.displayTopCount then
            self:updateTopText()
        end
    end
 
    outputDebug( "TOPTIMES", "++ SToptimesManager:playerFinished " .. tostring(getPlayerName(player)) .. " time:" .. tostring(newTime) )
end
 
 
---------------------------------------------------------------------------
--
-- SToptimesManager:updateTopText()
--
-- Update the toptimes client data for the current map
--
---------------------------------------------------------------------------
function SToptimesManager:updateTopText()
    if not self.mapTimes then return end
    -- Update data
 
    -- Read top rows from map toptimes table and send to all players who want to know
    self.toptimesDataForMap = self.mapTimes:getToptimes( self.displayTopCount )
    self.serverRevision = self.serverRevision +
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...