Seik Posted October 2, 2011 Share Posted October 2, 2011 Итак... Я имею функцию, которая выполняется при выполнении onPlayerChat, но она работает ТОЛЬКО после первого запуска сервера, после рестарта она не работает и для того что бы она заработала нужно поменять её название. Как решить данную проблему и решается ли она вообще? Чем может быть такое вызвано? Link to comment
DakiLLa Posted October 2, 2011 Share Posted October 2, 2011 Никогда не встречал подобного. Может быть сперва покажите свой код? Link to comment
Seik Posted October 2, 2011 Author Share Posted October 2, 2011 function ableEnterCom(interior,dimension,type) function enterCom(message) if(message == "!enter") then getInterior = executeSQLSelect("interiors","*","id = '"..interior.."'") local o=0 table.foreach(getInterior,function() o=o+1 end) if(o~=0) then setElementInterior(source,tonumber(getInterior[1]["interior"]),tonumber(getInterior[1]["x"]),tonumber(getInterior[1]["y"]),tonumber(getInterior[1]["z"])) setElementDimension(source,tonumber(dimension)) setElementData(source,"location",type) else outputConsole("Can't enter: ERROR 1",source) end end end addEventHandler("onPlayerChat",getRootElement(),enterCom) end function enterTo(entity) if(getElementType(entity) == "player") then if(isPedInVehicle(entity)) then getEnter = executeSQLSelect("enters","*","enter_marker_id = '"..getElementID(source).."'") local k=0 table.foreach(getEnter,function() k=k+1 end) if(k~=0) then ableEnterCom(getEnter[1]["interior"],getEnter[1]["dimension"],getEnter[1]["id"]) end end end end addEventHandler("onMarkerHit",getRootElement(),enterTo) function quit(message) if(message == "!exit") then location = getElementData(source,"location") if(location~="world") then getWorld = executeSQLSelect("enters","*","id = '"..location.."'") marker = getElementByID(getWorld[1]["enter_marker_id"]) local x,y,z = getElementPosition(marker) setElementInterior(source,0,x,y,z) setElementDimension(source,0) setElementData(source,"location","world") end end end addEventHandler("onPlayerChat",getRootElement(),quit) Link to comment
MX_Master Posted October 2, 2011 Share Posted October 2, 2011 Функция enterCom создана внутри функции ableEnterCom и является локальной, а это неправильно в данном случае. Функция enterCom должна быть глобальной, чтобы указать ее как обработчик события. Link to comment
Seik Posted October 2, 2011 Author Share Posted October 2, 2011 Забыл указать, что воздействию, которое я указал в первом посту производится на функцию quit. Еще проблема в том, что когда я убираю quit - скрипт работает, в противном случае работает ТОЛЬКО до первого рестарта сервера, после чего для того, чтобы работал ВЕСЬ скрипт, нужно сменить название функции quit и этот эффект длится только до первого рестарта. Или же убрать функцию quit. Link to comment
MX_Master Posted October 3, 2011 Share Posted October 3, 2011 Ты вообще понял, что тебе посоветовали? Создание второй функции сделай до создания первой. function enterCom(message) if(message == "!enter") then getInterior = executeSQLSelect("interiors","*","id = '"..interior.."'") local o=0 table.foreach(getInterior,function() o=o+1 end) if(o~=0) then setElementInterior(source,tonumber(getInterior[1]["interior"]),tonumber(getInterior[1]["x"]),tonumber(getInterior[1]["y"]),tonumber(getInterior[1]["z"])) setElementDimension(source,tonumber(dimension)) setElementData(source,"location",type) else outputConsole("Can't enter: ERROR 1",source) end end end function ableEnterCom(interior,dimension,type) addEventHandler("onPlayerChat",getRootElement(),enterCom) end function enterTo(entity) if(getElementType(entity) == "player") then if(isPedInVehicle(entity)) then getEnter = executeSQLSelect("enters","*","enter_marker_id = '"..getElementID(source).."'") local k=0 table.foreach(getEnter,function() k=k+1 end) if(k~=0) then ableEnterCom(getEnter[1]["interior"],getEnter[1]["dimension"],getEnter[1]["id"]) end end end end addEventHandler("onMarkerHit",getRootElement(),enterTo) function quit(message) if(message == "!exit") then location = getElementData(source,"location") if(location~="world") then getWorld = executeSQLSelect("enters","*","id = '"..location.."'") marker = getElementByID(getWorld[1]["enter_marker_id"]) local x,y,z = getElementPosition(marker) setElementInterior(source,0,x,y,z) setElementDimension(source,0) setElementData(source,"location","world") end end end addEventHandler("onPlayerChat",getRootElement(),quit) Link to comment
Seik Posted October 3, 2011 Author Share Posted October 3, 2011 Нет. Ваш код не работает и проблема та же самая, которая была и в моем коде. Link to comment
Lex128 Posted October 4, 2011 Share Posted October 4, 2011 Мб сначала разберешься/напишешь конкретно что у тебя не работает, а что работает... а то Я имею функциюты много функций имеешь, какую именно мы сами догадываться должны?Ты добавляешь заголовок события addEventHandler("onPlayerChat",getRootElement(),enterCom) ну рас тебе нужно его когда-то добавлять(чтобы до этого его не было), то и удалять его когда-то тоже надо? в коде этого не вижу А саму функцию enterCom(message) лучше объявлять как показал MX_Master 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