Yashann Posted January 25, 2014 Share Posted January 25, 2014 Привет всем) Если не против, я вас заваливаю тупыми вопросами, тк как я только начал ставить ЭЭЭЭЭЭЭЭксперементы, потому что мне это стало интересно, и вот мой..1 тупой вопрос) addEventHandler( 'onClientResourceStart',resourceRoot, function( ) local x, y, z = getElementPosition ( thePlayer ) local sound = playSound3D( 'http://www.181.fm/asx.php?station=181-uktop40&style=&description=',x ,y ,z ) setSoundMaxDistance( sound, 50 ) end ) Почему это не работает) Такой лёгкий..а пишет какую то лабуду...и не работает, не говорите что я нуб и тд) Я знаю это) Link to comment
DakiLLa Posted January 25, 2014 Share Posted January 25, 2014 Переменную 'thePlayer' в вашем коде не вижу. Почему вы написали именно ее? Возможно, раз скрипт у вас клиентский, вы подразумевали localPlayer (переменная, содержащая элемент локального игрока). Link to comment
Jonathan.P Posted January 25, 2014 Share Posted January 25, 2014 local x, y, z = getElementPosition ( thePlayer ) Откуда ты взял переменную thePlayer? Чтобы получить локального игрока используй функцию getLocalPlayer: local x, y, z = getElementPosition(getLocalPlayer()) Link to comment
Yashann Posted January 25, 2014 Share Posted January 25, 2014 local x, y, z = getElementPosition ( thePlayer ) Откуда ты взял переменную thePlayer? Чтобы получить локального игрока используй функцию getLocalPlayer: local x, y, z = getElementPosition(getLocalPlayer()) Большое спасибо, запомню!) Link to comment
Yashann Posted January 26, 2014 Share Posted January 26, 2014 -- Car Locks ( client ) -- local player localPlayer = getLocalPlayer ( ) -- playSoundNearElement addEvent ( "onPlaySoundNearElement", true ) function playSoundNearElement ( theElement, sound ) -- local sound = 5 local maxdist = 15.0 -- valid element if ( theElement ) then local x,y,z = getElementPosition ( theElement ) local x2,y2,z2 = getElementPosition ( localPlayer ) local dist = getDistanceBetweenPoints3D ( x, y, z, x2, y2, z2 ) -- distance is less than parameter maxdist if ( dist < maxdist ) then -- play parameter sound sound = playSound3D("E_music.mp3",x ,y ,z ,true) setTimer ( function() stopSound(sound) end, 5000, 1,) -- outputChatBox ( "sound should play" ) else -- outputChatBox ( "not in range" ) end else -- outputChatBox ( "invalid element" ) end end addEventHandler ( "onPlaySoundNearElement", getRootElement(), playSoundNearElement ) Подскажите где я опять туплю? Мне нужно что бы данная дорожка воспроизводилась один раз а не заедала... Link to comment
TheNormalnij Posted January 26, 2014 Share Posted January 26, 2014 playSound3D("E_music.mp3",x ,y ,z ,false) localPlayer = getLocalPlayer ( ) -- Эта строка бессмысленна Link to comment
Memory Posted January 29, 2014 Share Posted January 29, 2014 Привет всем, объясните мне, пожалуйста, такую тему: допустим в файле на серверной стороне находится, помимо основных функций, такое вот local files = [[ --тут клиентские функции ]] , а в файле на клиентской части вот такой код function(commandstring) local notReturned local commandFunction,errorMsg = loadstring("return "..commandstring) if errorMsg then notReturned = true commandFunction, errorMsg = loadstring(commandstring) end if errorMsg then outputDebugString(errorMsg); return end results = { pcall(commandFunction) } if not results[1] then return end if not notReturned then local resultsString = "" local first = true for i = 2, #results do if first then first = false else resultsString = resultsString..", " end local resultType = type(results[i]) if isElement(results[i]) then resultType = "element:"..getElementType(results[i]) end resultsString = resultsString..tostring(results[i]).." ["..resultType.."]" end outputDebugString(errorMsg); elseif not errorMsg then --loaded end end) При старте ресурса клиента (onClientResourceStart) триггерят функцию, которая в свою очередь триггерит функцию выше, отправляя при этом files. Я понял, что функция выше просто запускает функции, которые послали, но для чего это делают? Своеобразная защита кода? И можно пояснить [[ ... ]], это что-то типа массива? Извиняюсь, если не правильно выразился, просто ни разу не встречал такого и интересно узнать Link to comment
TheNormalnij Posted January 31, 2014 Share Posted January 31, 2014 Это ресурс runcode. Ресурс для запуска кода из консоли. s = [[ text ,text ]] --Тоже что и s = ' text\n,text ' --[[ можно использовать для многострочных комментариев.]] Скорее всего кто-то передает код на клиент по триггеру, что глупо, когда можно просто отключить кэширование в мете. Link to comment
Memory Posted January 31, 2014 Share Posted January 31, 2014 Спасибо, теперь я всё понял Link to comment
barbozyka Posted February 1, 2014 Share Posted February 1, 2014 всем хай. народ помогите уже минут сорок ищу и всё равно в упор не вижу ошибки, а именно при нажатии кнопки Vhod.button не происходит вызов функции Vhod.proverka пытался оформить в виде addEventHandler ( "onClientGUIClick", Vhod.button,function() --код-- end) эффект тот же. в чем может быть ошибка? Vhod = {} function dostupSimvol(stroka) local tablSimvol={q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m,1,2,3,4,5,6,7,8,9,0} local fl = true for n, nl in pairs(stroka) do for key, value in pairs(t) do if nl == value then fl = 0 break end end if fl then return 0 end end return 1 end addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()),function() local X = 0.375 local Y = 0.375 local Width = 0.25 local Height = 0.12 Vhod.wdwLogin = guiCreateWindow(X, Y, Width, Height, "", true) X = 0.13 Y = 0.1 Width = 0.8 Height = 0.35 Vhod.edtpas = guiCreateEdit(X, Y, Width, Height, "pasword", true, Vhod.wdwLogin) Y = 0.55 Vhod.button = guiCreateButton( X, Y, Width, Height, "Войти", true,Vhod.wdwLogin ) guiEditSetMaxLength(Vhod.edtpas, 12) guiSetVisible(Vhod.wdwLogin, false) if (Vhod.wdwLogin == nil) then outputChatBox("Возникла непредвиденная ошибка и GUI входа не был создан.") end end) addEventHandler ( "onClientGUIClick", Vhod.button, Vhod.proverka) function Vhod:proverka() outputChatBox("1KNOPKAA!!!!") if Vhod.type then if Vhod.steupreg==1 then if not dostupSimvol(txts) or string.len(txts)<=6 then outputChatBox("Для пароля разрешено использовать только a-z и 0-9",source) outputChatBox("Длина не менее 6 символов!",source) else Vhod.pasword=guiGetText(Vhod.edtpas) Vhod.steupreg =2 outputChatBox("Регистрация шаг:"..Vhod.steupreg) guiSetText (Vhod.edtpas) end elseif Vhod.steupreg==2 then Vhod.emeil=guiGetText(Vhod.edtpas,"email") triggerServerEvent ( "reg", getRootElement(),guiGetText (Vhod.pasword,Vhod.emeil)) end else triggerServerEvent ( "avt", getRootElement(),guiGetText (Vhod.edtpas)) showCursor(false) guiSetInputEnabled(false) guiSetVisible(Vhod.wdwLogin,false) end end addEvent("VIS_LR",true) addEventHandler("VIS_LR",root,function(TYPEWindow) Vhod.type = TYPEWindow Vhod.steupreg=1 if TYPEWindow then outputChatBox("Регистрация шаг:"..Vhod.steupreg) guiSetText ( Vhod.button, "Дальше" ) end guiSetVisible(Vhod.wdwLogin, true) showCursor(true) guiSetInputEnabled(true) end) Link to comment
Other Languages Moderators Disinterpreter Posted February 1, 2014 Other Languages Moderators Share Posted February 1, 2014 всем хай. народ помогите уже минут сорок ищу и всё равно в упор не вижу ошибки, а именно при нажатии кнопки Vhod.button не происходит вызов функции Vhod.proverkaпытался оформить в виде addEventHandler ( "onClientGUIClick", Vhod.button,function() --код-- end) эффект тот же. в чем может быть ошибка? Для начала прочитайте это viewtopic.php?f=141&t=40703 Во вторых addEventHandler ( "onClientGUIClick", Vhod.button, Vhod.proverka) и function Vhod:proverka() Вам тут не кажется ничего странного? Link to comment
Memory Posted February 1, 2014 Share Posted February 1, 2014 Что дебаг (/debugscript 3) пишет? А так вы вызываете Vhod.proverka, а сама функция называется Vhod:proverka (в первом случае точка, во втором двоеточие), ( EDIT: опередили ) это о чём писал CoolDark. Но так как вы пробовали ввиде addEventHandler ( "onClientGUIClick", Vhod.button,function() ... end), то значит ошибка не только в этом и надо смотреть дебаг. Link to comment
barbozyka Posted February 1, 2014 Share Posted February 1, 2014 Для начала прочитайте это viewtopic.php?f=141&t=40703 спасибо не знал(на форуме совсем не давно ) Во вторых addEventHandler ( "onClientGUIClick", Vhod.button, Vhod.proverka) и function Vhod:proverka() Вам тут не кажется ничего странного? на lua перешёл не давно так что не совсем понял что именно здесь странного? исправил на addEventHandler ( "onClientGUIClick", Vhod.button, Vhod.proverka) и function Vhod.proverka() ни чего ни изменилось в логе пишет что 2 аргумент функции пустой! [2014-02-01 18:44:16] WARNING: mainClient.lua:69: Bad argument @ 'addEventHandler' [Expected element at argument 2, got nil] INFO: Logging to this file ended те. Vhod.button если я правильно понял но о не может быть пустым так как эта строка работает! guiSetText ( Vhod.button, "Дальше" ) Link to comment
Memory Posted February 1, 2014 Share Posted February 1, 2014 Попробуй так ещё. Хотя по сути addEventHandler ( "onClientGUIClick", Vhod.button, Vhod.proverka) так же должна работать. function onGuiClick (button, state, absoluteX, absoluteY) if (source == Vhod.button) then Vhod.proverka() end end addEventHandler ("onClientGUIClick", getRootElement(), onGuiClick) Link to comment
barbozyka Posted February 1, 2014 Share Posted February 1, 2014 Попробуй так ещё. Хотя по сути addEventHandler ( "onClientGUIClick", Vhod.button, Vhod.proverka) так же должна работать. function onGuiClick (button, state, absoluteX, absoluteY) if (source == Vhod.button) then Vhod.proverka() end end addEventHandler ("onClientGUIClick", getRootElement(), onGuiClick) работает!! но всё равно это не нормально хотелось бы узнать в чём именно я допустил ошибку! Link to comment
Memory Posted February 2, 2014 Share Posted February 2, 2014 Попробуй Возможно ошибка была в том, что не было false/true, и нет проверки на button, которой нажали. addEventHandler ( "onClientGUIClick", Vhod.button, Vhod.proverka, false) function Vhod.proverka(button) if ( button == "left" ) then outputChatBox("1KNOPKAA!!!!") if Vhod.type then if Vhod.steupreg==1 then if not dostupSimvol(txts) or string.len(txts)<=6 then outputChatBox("Для пароля разрешено использовать только a-z и 0-9",source) outputChatBox("Длина не менее 6 символов!",source) else Vhod.pasword=guiGetText(Vhod.edtpas) Vhod.steupreg =2 outputChatBox("Регистрация шаг:"..Vhod.steupreg) guiSetText (Vhod.edtpas) end elseif Vhod.steupreg==2 then Vhod.emeil=guiGetText(Vhod.edtpas,"email") triggerServerEvent ( "reg", getRootElement(),guiGetText (Vhod.pasword,Vhod.emeil)) end else triggerServerEvent ( "avt", getRootElement(),guiGetText (Vhod.edtpas)) showCursor(false) guiSetInputEnabled(false) guiSetVisible(Vhod.wdwLogin,false) end end end Link to comment
TheNormalnij Posted February 2, 2014 Share Posted February 2, 2014 Ошибка была в том, что когда он давал обработчик события, кнопки еще не существовало. Link to comment
Alko Posted February 9, 2014 Share Posted February 9, 2014 Собсна скрипт: function getlvl (player1, cmd, account) local player = getPlayerAccount( player1 ) local myLevel = getAccountData (player, "lvl" ) outputChatBox ( "Your account level is: ".. myLevel, player ) end addCommandHandler ( "mylevel", getlvl) Ошибка [2014-02-09 14:09:58] ERROR: [gamemodes]\server\getlevel.lua:4: attempt to concatenate local 'myLevel' (a boolean value) Бьюсь головой об стену. Link to comment
AMARANT Posted February 9, 2014 Share Posted February 9, 2014 Переменная 'myLevel' возвращает значение 'false'. Link to comment
Elengar Posted February 9, 2014 Share Posted February 9, 2014 Собсна скрипт: function getlvl (player1, cmd, account) local player = getPlayerAccount( player1 ) local myLevel = getAccountData (player, "lvl" ) outputChatBox ( "Your account level is: ".. myLevel, player ) end addCommandHandler ( "mylevel", getlvl) Ошибка [2014-02-09 14:09:58] ERROR: [gamemodes]\server\getlevel.lua:4: attempt to concatenate local 'myLevel' (a boolean value) Бьюсь головой об стену. В ошибке все сказано, в ошибка очень часто все уже сказано. Не знаешь английский, так хоть гуглом переводи. Переведу для тебя как-нибуть нормально, хз как в гугле будет. "Ошибка при попытке "склеить(склейка строк, .. )" локальную переменную 'myLevel' (булевое значение (true/false)) Почему ? Потому что getAccountData (player, "lvl" ) дала false . Тоесть в бд, на этом аккаунте, нету "данных" lvl . Если у тебя там идет отсчет с нулевого лвла, и 1 получается только по какой нибуть экспе, то тут можно сделать вот так. getAccountData (player, "lvl" ) or 0 Если не так - ищи проблемы в сохранении данных на аккаунте. Link to comment
Alko Posted February 9, 2014 Share Posted February 9, 2014 В базе строчка "LvL" есть. Я,ради теста,ВРУЧНУЮ поставил значение 1. Возвращает мне не то,что нужно. Link to comment
Other Languages Moderators Disinterpreter Posted February 9, 2014 Other Languages Moderators Share Posted February 9, 2014 В базе строчка "LvL" есть.Я,ради теста,ВРУЧНУЮ поставил значение 1. Возвращает мне не то,что нужно. Может дело в регистре тогда? Link to comment
Alko Posted February 9, 2014 Share Posted February 9, 2014 nope. Код: local myLevel = getAccountData (player, "lvl" ) База: http://prntscr.com/2qyuek Link to comment
TheNormalnij Posted February 9, 2014 Share Posted February 9, 2014 Может потому, что getAccountData берет данные из таблицы userdata =) Link to comment
Alko Posted February 9, 2014 Share Posted February 9, 2014 Спасибо. Я не знал,что оно от туда берет =3 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