TwiX! Posted December 12, 2011 Share Posted December 12, 2011 (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" /> тоже добавил в чём может быть проблема? "loadmaps" функция есть, могу выложить Edited December 16, 2011 by Guest Link to comment
Kenix Posted December 12, 2011 Share Posted December 12, 2011 Ты вызываешь функцию callServerFunction которой не существует Ваш кэп Link to comment
TwiX! Posted December 12, 2011 Author Share Posted December 12, 2011 Ты вызываешь функцию callServerFunction которой не существует Ваш кэп server - function getServerMaps она есть Link to comment
MX_Master Posted December 12, 2011 Share Posted December 12, 2011 читай внимательно - функция с именем callServerFunction у тебя есть в клиенте? Link to comment
TwiX! Posted December 12, 2011 Author Share Posted December 12, 2011 aa , её добавить забыл Link to comment
TwiX! Posted December 12, 2011 Author Share Posted December 12, 2011 теперь другая проблема.. 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 другая проблема если поставить "Race" с большой буквы, то много варнингов то что не может установить текст в лабел с маленькой буквы race то, вот этот варнинг.. Link to comment
_Dark_ Posted December 12, 2011 Share Posted December 12, 2011 теперь другая проблема.. 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 другая проблема если поставить "Race" с большой буквы, то много варнингов то что не может установить текст в лабел с маленькой буквы race то, вот этот варнинг.. Во-первых, поставьте Race с большой буквы и исправляйте дальнейшие ошибки. У вас не существует переменной race, поэтому одна ошибка. Хватит судить о правильности кода по количеству ошибок. Это вам не компилятор, что бы все сразу давать. Если вы исправили ошибку, а их стало еще больше (имеется в виду, тех, которые не связаны с тем, что вы исправили) - все верно. Исправляйте другие. Link to comment
TwiX! Posted December 16, 2011 Author Share Posted December 16, 2011 тему можно закрывать Link to comment
StUNt71 Posted December 17, 2011 Share Posted December 17, 2011 В МТА происходит следующие: программа выполняет код, если нашёл ошибку, то прекращает работу функции (function). Поэтому исправил одну ошибку, появились другие, значит исправил правильно, исправляй другие. Хотя оно не всегда так, ошибки могут быть общие. Link to comment
TwiX! Posted December 17, 2011 Author Share Posted December 17, 2011 у меня раскрытие функции было не правильное, уже сделал, спасибо Link to comment
Kernell Posted December 17, 2011 Share Posted December 17, 2011 В МТА происходит следующие: программа выполняет код, если нашёл ошибку, то прекращает работу функции (function). Поэтому исправил одну ошибку, появились другие, значит исправил правильно, исправляй другие. Хотя оно не всегда так, ошибки могут быть общие. Это не в МТА так, а в Lua. Lua прерывает выполнение скрипта при любой ошибки. (Это можно проверить функцией error или assert). Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now