Jump to content

Xakep_SDK

Members
  • Posts

    22
  • Joined

  • Last visited

Xakep_SDK's Achievements

Civilian

Civilian (7/54)

0

Reputation

  1. Дааа, получилось! Теперь надо еще кое что сделать
  2. Еще ошибка: [16:51:23] ERROR: mymod/spawn.lua:27: attempt to index local 'PasswordR' (a nil value) function Register( sLoginR, usernameR, PasswordR ) local pQuery = dbQuery( P_CONNECTION, "SELECT * FROM `users` WHERE `login` = '" .. sLoginR .. "'" ) local aQuery = dbPoll( pQuery, - 1 ) if type(aQuery) == 'table' and #aQuery > 0 then outputChatBox("Аккаунт уже зарегистрирован!") end if usernameR:match '[a-zA-Z0-9_.-]+$' then if PasswordR:match '[a-zA-Z0-9]+$' then outputChatBox("Регистрация завершена! Можете залогиниться!") addUser = dbExec( P_CONNECTION, "INSERT INTO `users` (`login`, `password`) VALUES('"..usernameR.."', '"..PasswordR.."')") else outputChatBox("Пароль содержит запрещенные символы") end else outputChatBox("Логин содержит запрещенные символы") end end function clientSubmitReg(button,state) if button == "left" and state == "up" then local usernameR = guiGetText(edtUserR) local PasswordR = guiGetText(edtPassR) if usernameR and PasswordR then triggerServerEvent("submitReg", getRootElement(), usernameR, PasswordR) guiSetInputEnabled(false) guiSetVisible(wdwLogin, false) showCursor(false) else outputChatBox("Пожалуйста, заполните все поля!") end end end
  3. Что это?( строка 11 ) У тебя вообще всё не верно, серверные функции вызываются только на сервере, а ты их на клиенте вызываешь Эм, где тут клиентские функции?
  4. Пока убрал adduser. Пока другая проблема. [16:21:06] ERROR: Client triggered serverside event submitReg, but event is not added serverside
  5. function Register( LoginR, PasswordR ) local aQuery = dbPoll(pQuery, - 1) local addUser = dbExec( P_CONNECTION, "INSERT INTO `users` (`login`, `password`) VALUES('"..LoginR.."', '"..PasswordR.."')") local LoginR = guiGetText( edtUserR ) local PasswordR = guiGetText( edtPassR ) if type(aQuery) == 'table' and #aQuery > 0 then outputChatBox("Аккаунт уже зарегистрирован!") if type(aQuery) == 'table' and #aQuery < 1 then if sLogin:match '[a-zA-Z0-9_.-]+$' then if sPassword:match '[a-zA-Z0-9]+$' then addUser outputChatBox("Регистрация завершена! Можете залогиниться!") else outputChatBox("Пароль содержит запрещенные символы") end else outputChatBox("Логин содержит запрещенные символы") end end end end Выдает ошибку: [15:58:47] SCRIPT ERROR: mymod/spawn.lua:31: '=' expected near 'outputChatBox' [15:58:47] WARNING: Loading script failed: mymod/spawn.lua:31: '=' expected near 'outputChatBox'
  6. local sLogin = guiGetText( ГУИ_Элемент_Едит ) local sPassword = guiGetText( ГУИ_Элемент_Едит ) if sLogin:match '[a-zA-Z0-9_.-]+$' then if sPassword:match '[a-zA-Z0-9]+$' then --База данных(осталось запилить только ее) else outputChatBox("Логин содержит запрещенные символы") else outputChatBox("Пароль содержит запрещенные символы") end end Вот переделал, надеюсь будет работать. И вот последний вопрос: Как в insert засунуть логин и пароль игрока? если прямо дать LoginR и PasswordR то я думаю запишутся эти надписи а не их содержимое
  7. Спасибо, а как еще в запрос врезать значения LoginR и PasswordR?
  8. Ну тогда как защитить? Скрипт не готов. Ломаю голову, как в login и password врезать значения LoginR PasswordR
  9. Эм. Мне в таблицу в поля нужно добавить значения. Как я знаю для этого нужен insert.
  10. Вот еще вопрос: local pExec = dbExec( P_CONNECTION, "INSERT INTO `users` VALUES(login, password)", "WHERE `login` = '" .. LoginR .. "', WHERE `password` = '" .. PasswordR .. "'" ) Можете поправить?
  11. Это я знаю, я не знаю как получить эти данные из клиентского gui.lua в серверный spawn.lua
  12. Есть скрипт, почти всё сделал. Не знаю как пописать регистрацию. Файл с окошком: function createLoginWindow() local X = 0.375 local Y = 0.375 local Width = 0.30 local Height = 0.30 wdwLogin = guiCreateWindow(X, Y, Width, Height, "Пожалуйста, залогиньтесь", true) tabPanel = guiCreateTabPanel(0, 0.1, 1, 1, true, wdwLogin) tabLog = guiCreateTab("Залогиниться", tabPanel) tabReg = guiCreateTab("Зарегестрироваться", tabPanel) --Логин X = 0.0825 Y = 0.2 Width = 0.25 Heidht = 0.25 guiCreateLabel(X, Y, Width, Height, "Имя", true, tabLog) Y = 0.5 guiCreateLabel(X, Y, Width, Height, "Пароль", true, tabLog) X = 0.415 Y = 0.2 Width = 0.5 Height = 0.15 edtUser = guiCreateEdit(X, Y, Width, Height, "", true, tabLog) Y = 0.5 edtPass = guiCreateEdit(X, Y, Width, Height, "", true, tabLog) guiEditSetMaxLength(edtUser, 50) guiEditSetMaxLength(edtPass, 50) X = 0.415 Y = 0.750 Width = 0.25 Height = 0.2 btnLogin = guiCreateButton(X, Y, Width, Height, "Логин", true, tabLog) guiSetVisible(wdwLogin, false) --Регистрация X = 0.0825 Y = 0.2 Width = 0.25 Heidht = 0.25 guiCreateLabel(X, Y, Width, Height, "Имя", true, tabReg) Y = 0.5 guiCreateLabel(X, Y, Width, Height, "Пароль", true, tabReg) X = 0.415 Y = 0.2 Width = 0.5 Height = 0.15 edtUserR = guiCreateEdit(X, Y, Width, Height, "", true, tabReg) Y = 0.5 edtPassR = guiCreateEdit(X, Y, Width, Height, "", true, tabReg) guiEditSetMaxLength(edtUser, 50) guiEditSetMaxLength(edtPass, 50) guiEditSetMaxLength(edtMail, 50) X = 0.415 Y = 0.750 Width = 0.25 Height = 0.2 btnReg = guiCreateButton(X, Y, Width, Height, "Войти", true, tabReg) guiSetVisible(wdwLogin, false) addEventHandler("onClientGUIClick", btnLogin, clientSubmitLogin, false) end addEventHandler("onClientResourceStart", getResourceRootElement(getThisResource()), function() createLoginWindow() outputChatBox("Добро пожаловать на мой MTA:SA сервер, пожалуйста зологиньтесь") if(wdwLogin ~=nil) then guiSetVisible(wdwLogin, true) else outputChatBox("Ошибка, GUI не был создан.") end showCursor(true) guiSetInputEnabled(true) end ) function clientSubmitLogin(button,state) if button == "left" and state == "up" then local username = guiGetText(edtUser) local password = guiGetText(edtPass) if username and password then triggerServerEvent("submitLogin", getRootElement(), username, password) guiSetInputEnabled(false) guiSetVisible(wdwLogin, false) showCursor(false) else outputChatBox("Пожалуйста, введите логин и пароль.") end end end function clientSubmitReg(button,state) if button == "left" and state == "up" then local usernameR = guiGetText(edtUserR) local passwordR = guiGetText(edtPassR) if username and password then triggerServerEvent("submitLoginR", getRootElement(), usernameR, passwordR) guiSetInputEnabled(false) guiSetVisible(wdwLogin, false) showCursor(false) else outputChatBox("Пожалуйста, заполните все поля!") end end end Файл с функциями спавна: local spawnX, spawnY, spawnZ = -711, 957, 13 P_CONNECTION = dbConnect( 'sqlite', 'users.db' ) function Login( sLogin, sPassword ) local pQuery = dbQuery( P_CONNECTION, "SELECT * FROM `users` WHERE `login` = '" .. sLogin .. "'" ) local aQuery = dbPoll( pQuery, - 1 ) if type( aQuery ) == 'table' and #aQuery > 0 then --Аккаунт найден if sPassword == aQuery[ 1 ][ 'password' ] then spawnPlayer(client, spawnX, spawnY, spawnZ) fadeCamera(client, true) setCameraTarget(client, client) outputChatBox("Добро пожаловать на мой сервер.", client) end else outputChatBox("Неправильный логин или пароль!") end end function Register( sLoginR, sPasswordR ) local pExec = dbExec( P_CONNECTION, "INSERT INTO `users` VALUES(login, password, mail)", "sLoginR", "sPasswordR" ) end function ifUserDead() spawnPlayer(source, spawnX, spawnY, spawnZ) fadeCamera(source, true) setCameraTarget(source, source) end function playerDied(totalAmmo, killer, killerWeapon, bodypart) outputChatBox(getPlayerName(source).." Умер!") end addEvent("submitLogin",true) addEventHandler("submitLogin", root, Login) addEvent("submitLoginR",true) addEventHandler("submitLoginR", root, Register) addEventHandler("onPlayerWasted", getRootElement(), ifUserDead) addEventHandler("onPlayerWasted", getRootElement(), playerDied)
  13. Спасибо, теперь дошло. Я думал не туда указывать действие. Простите что вел себя как дурак. хотя это слабо сказано.
  14. Это я понял, а вот не понял зачем там комментарий? Оставить пустым?
×
×
  • Create New...