Jump to content

[HELP]setTimer


TwiX!

Recommended Posts

Posted (edited)

Проблема в том, что он не хочет вызывать функцию сервера, я незнаю почему.. вроде всё правильно

Client

  
function getMaps() 
    totalServerMaps = 0 
    totalDmMaps = 0 
    totalDdMaps = 0 
    setTimer(callServerFunction,500,1,"getServerMaps",getLocalPlayer()) 
end 
addEventHandler("onClientResourceStart",getResourceRootElement(getThisResource()),getMaps) 

Server

  
function getServerMaps (loadList) 
    local tableOut 
    if loadList then 
        tableOut = {} 
        -- local deletedMaps = {} 
        local gamemodes = {} 
        gamemodes = call(getResourceFromName("mapmanager"), "getGamemodes") 
        for id,gamemode in ipairs (gamemodes) do 
            tableOut[id] = {} 
            tableOut[id].name = getResourceInfo(gamemode, "name") or getResourceName(gamemode) 
            tableOut[id].resname = getResourceName(gamemode) 
            tableOut[id].maps = {} 
            local maps = call(getResourceFromName("mapmanager"), "getMapsCompatibleWithGamemode" , gamemode) 
            for _,map in ipairs (maps) do 
                table.insert(tableOut[id]["maps"] ,{name = getResourceInfo(map, "name") or getResourceName(map), resname = getResourceName(map)}) 
            end 
            table.sort(tableOut[id]["maps"], sortCompareFunction) 
        end 
        table.sort((tableOut), sortCompareFunction) 
        table.insert(tableOut, {name = "no gamemode", resname = "no gamemode", maps = {}}) 
        local countGmodes = #tableOut 
        local maps = call(getResourceFromName("mapmanager"), "getMapsCompatibleWithGamemode") 
        for id,map in ipairs (maps) do 
            -- if fileOpen(":"..getResourceName(map).."/deleted") then 
                -- table.insert(deletedMaps ,{name = getResourceInfo(map, "name") or getResourceName(map), resname = getResourceName(map)}) 
            -- else 
                table.insert(tableOut[countGmodes]["maps"] ,{name = getResourceInfo(map, "name") or getResourceName(map), resname = getResourceName(map)}) 
            -- end 
        end 
        -- table.sort(deletedMaps, sortCompareFunction) 
        table.sort(tableOut[countGmodes]["maps"], sortCompareFunction) 
        -- table.insert(tableOut, {name = "deleted maps", resname = "deleted maps", maps = {}}) 
        -- local countGmodes = countGmodes + 1 
        -- tableOut[countGmodes]["maps"] = deletedMaps 
    end 
    local map = call(getResourceFromName("mapmanager"), "getRunningGamemodeMap") 
    local gamemode = call(getResourceFromName("mapmanager"), "getRunningGamemode") 
    gamemode = gamemode and getResourceName(gamemode) or "N/A" 
    map = map and getResourceName(map) or "N/A" 
    callClientFunction(loadList,"loadMaps", tableOut, gamemode, map) 
end 

в meta.xml

<include resource="mapmanager" /> 

тоже добавил

758ad05eace1.png

в чём может быть проблема?

"loadmaps" функция есть, могу выложить

Edited by Guest
Posted
Ты вызываешь функцию
callServerFunction 

которой не существует

758ad05eace1.png

Ваш кэп

server -

function getServerMaps 

она есть

Posted

теперь другая проблема..

  
function loadMaps(gamemodeMapTable, gamemode, map) 
    guiGridListClear(maps_grid) 
    if gamemodeMapTable then 
        aGamemodeMapTable = gamemodeMapTable 
        for id,gamemode in pairs (gamemodeMapTable) do 
            if (gamemode.name == "race") then 
                for id,map in ipairs (gamemode.maps) do 
                    local row = guiGridListAddRow ( maps_grid ) 
                    guiGridListSetItemText ( maps_grid, row, 1, map.name, false, false ) 
                    guiGridListSetItemData ( maps_grid, row, 1, map.resname) 
                    totalServerMaps = totalServerMaps+1 
                    if (string.find(map.name,"[DM]",1,true)) then 
                        totalDmMaps = totalDmMaps+1 
                    elseif (string.find(map.name,"[DD]",1,true)) then 
                        totalDdMaps = totalDdMaps+1 
                    end 
                    updateMapLabels(1) 
                end 
            end 
        end 
    end 
end 

ee4d3d567a54.png

другая проблема

если поставить "Race" с большой буквы, то много варнингов то что не может установить текст в лабел

с маленькой буквы race то, вот этот варнинг..

Posted
теперь другая проблема..
  
function loadMaps(gamemodeMapTable, gamemode, map) 
    guiGridListClear(maps_grid) 
    if gamemodeMapTable then 
        aGamemodeMapTable = gamemodeMapTable 
        for id,gamemode in pairs (gamemodeMapTable) do 
            if (gamemode.name == "race") then 
                for id,map in ipairs (gamemode.maps) do 
                    local row = guiGridListAddRow ( maps_grid ) 
                    guiGridListSetItemText ( maps_grid, row, 1, map.name, false, false ) 
                    guiGridListSetItemData ( maps_grid, row, 1, map.resname) 
                    totalServerMaps = totalServerMaps+1 
                    if (string.find(map.name,"[DM]",1,true)) then 
                        totalDmMaps = totalDmMaps+1 
                    elseif (string.find(map.name,"[DD]",1,true)) then 
                        totalDdMaps = totalDdMaps+1 
                    end 
                    updateMapLabels(1) 
                end 
            end 
        end 
    end 
end 

ee4d3d567a54.png

другая проблема

если поставить "Race" с большой буквы, то много варнингов то что не может установить текст в лабел

с маленькой буквы race то, вот этот варнинг..

Во-первых, поставьте Race с большой буквы и исправляйте дальнейшие ошибки. У вас не существует переменной race, поэтому одна ошибка. Хватит судить о правильности кода по количеству ошибок. Это вам не компилятор, что бы все сразу давать. Если вы исправили ошибку, а их стало еще больше (имеется в виду, тех, которые не связаны с тем, что вы исправили) - все верно. Исправляйте другие.

Posted

В МТА происходит следующие: программа выполняет код, если нашёл ошибку, то прекращает работу функции (function). Поэтому исправил одну ошибку, появились другие, значит исправил правильно, исправляй другие. Хотя оно не всегда так, ошибки могут быть общие.

Posted
В МТА происходит следующие: программа выполняет код, если нашёл ошибку, то прекращает работу функции (function). Поэтому исправил одну ошибку, появились другие, значит исправил правильно, исправляй другие. Хотя оно не всегда так, ошибки могут быть общие.

Это не в МТА так, а в Lua. Lua прерывает выполнение скрипта при любой ошибки. (Это можно проверить функцией error или assert).

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...