sir135 Posted February 11, 2011 Author Share Posted February 11, 2011 Мне нужна функция на то, что человек в данное время залогиненный, а не та что проверяет, зарегистрирован или нет(isGuestAccount), знающие люди пожалуйста подскажите. Link to comment
Aibo Posted February 11, 2011 Share Posted February 11, 2011 isGuestAccount и проверяет. Link to comment
sir135 Posted February 11, 2011 Author Share Posted February 11, 2011 Неа не проверяет Link to comment
lil Toady Posted February 11, 2011 Share Posted February 11, 2011 Еще как проверяет, если ты не залогинелся, у тебя гостевой аккаунт Link to comment
sir135 Posted February 11, 2011 Author Share Posted February 11, 2011 function reglog(thePlayer) local theAccount = getAccount(thePlayer) if (theAccount) then if isGuestAccount(theAccount) then triggerClientEvent(source, "show_gui", getRootElement(), "login") end else triggerClientEvent(source, "show_gui", getRootElement(), "register") end end Вот, я сделал так, мне надо чтобы triggerClientEvent(source, "show_gui", getRootElement(), "login") срабатывала в случае если чел не залогиненый, а в противном случае, вообще чтоб до нее не дошла очередь всегда когда скрипт этот работает получается то что он проверяет на зарегистрированность, ну может я не так, где-то описал,- посмотрите. Link to comment
lil Toady Posted February 11, 2011 Share Posted February 11, 2011 Нет такой вещи как "зарегинность", сервер не может знать зареген ты или нет, я могу придти на твой сервер и залогиниться с твоим акком не регистрируясь.. Но при этом у игрока всегда есть аккаунт, свой если залогинился, и гостевой если нет. Откуда ты вызываешь reglog и как? у тебя явно не задан thePlayer Link to comment
Aibo Posted February 11, 2011 Share Posted February 11, 2011 getAccount() достает аккаунт по его имени, и isGuestAccount() надо натравливать не на него, а на текущий аккаунт игрока, полученный с помощью getPlayerAccount() Link to comment
sir135 Posted February 11, 2011 Author Share Posted February 11, 2011 theplayer, пересылается клиентом и содержит в себе имя локального игрока вот: triggerServerEvent ("check_player",getLocalPlayer(),getPlayerName(getLocalPlayer())) Link to comment
lil Toady Posted February 11, 2011 Share Posted February 11, 2011 getAccount() достает аккаунт по его имени, и isGuestAccount() надо натравливать не на него, а на текущий аккаунт игрока, полученный с помощью getPlayerAccount() ага, вот этого я не заметил Link to comment
Aibo Posted February 11, 2011 Share Posted February 11, 2011 theplayer, пересылается клиентом и содержит в себе имя локального игрока вот: triggerServerEvent ("check_player",getLocalPlayer(),getPlayerName(getLocalPlayer())) как-то так тогда: function reglog(thePlayer) local theAccount = getAccount(thePlayer) if (theAccount) then if isGuestAccount(getPlayerAccount(source)) then triggerClientEvent(source, "show_gui", getRootElement(), "login") end else triggerClientEvent(source, "show_gui", getRootElement(), "register") end end Link to comment
sir135 Posted February 11, 2011 Author Share Posted February 11, 2011 Дааа... заработало, спасибо Aiboforcen. Link to comment
lil Toady Posted February 11, 2011 Share Posted February 11, 2011 theplayer, пересылается клиентом и содержит в себе имя локального игрока вот: triggerServerEvent ("check_player",getLocalPlayer(),getPlayerName(getLocalPlayer())) 1. Когда работаешь с triggerServerEvent надо быть очень аккуратным, у тя вот в этой строке уже есть не большой эксплоит который позволит людям постоянно запускать у других на экране окно регистрации. И тебе не надо использовать имя, ты можешь передавать элементы, хотя в этом случае это не нужно. 2. Если ты действительно очень хочешь привязать аккаунт к нику (что ни есть хорошо, вдруг игрок вступит в клан и сменит ник, или еще чего) то: triggerServerEvent ("check_player",getLocalPlayer()) и function reglog() local theAccount = getAccount ( getPlayerName ( client ) ) if ( theAccount ) then if ( isGuestAccount ( getPlayerAccount ( client ) ) ) then triggerClientEvent ( client, "show_gui", getRootElement(), "login" ) end else triggerClientEvent ( client, "show_gui", getRootElement(), "register" ) end end client - скрытая переменная заданная мта (как source) и означает клиента который вызвал функцию P.S: к нам иногда обращаются владельцы серверов, говорят что у них некоторые игроки взламывают скрипты и дают себе деньги, оружие, и т.п. (некоторые правда говорят админам как их взломали) Это как раз из-за вот этих незащищенных triggerServerEvent и неправильных дизайнов скриптов которые слишком доверяют клиенту через эту функцию, так что обрати на это внимание Link to comment
Aibo Posted February 11, 2011 Share Posted February 11, 2011 а в чем тут разница между client и source? :3 Link to comment
sir135 Posted February 11, 2011 Author Share Posted February 11, 2011 Вот еще одна не большая проблема, как-бы скрипт работает, только начинает флудить в дебуге BadPointer setPedAnimation после того как, убъеш бота, до этого все норм. function bank_init() lolka1 = createPed ( 150, 2311.3039550781, -10.25, 27.202402114868, 182.96635437012 ) stul1 = createObject ( 1714, 2311.13, -10.25, 25.75, 0, 0, 0 ) attachElements ( lolka1, stul1, 0, -0.1, 1, 0, 0, 0 ) setPedRotation ( lolka1, 182.96635437012 ) setElementInterior(lolka1, 0) setElementID(lolka1,"lolka1") setPedFrozen(lolka1, true) setPedAnimation (lolka1, nil, nil) setTimer(setPedAnimation, 3450, 0,lolka1 , "INT_OFFICE", "OFF_Sit_Type_Loop", 1000, true, false, false, false) rb = setTimer(respawn_bot, 5000, 0) end function respawn_bot() if isPedDead ( lolka1 ) then destroyElement ( lolka1 ) destroyElement ( stul1 ) killTimer(rb) bank_init() end end Link to comment
lil Toady Posted February 11, 2011 Share Posted February 11, 2011 а в чем тут разница между client и source? :3 source передает сам клиент а client задан сервером, в зависимости от того, от кого он получил пакет Вот еще одна не большая проблема, как-бы скрипт работает, только начинает флудить в дебуге BadPointer setPedAnimation после того как, убъеш бота, до этого все норм.setTimer(setPedAnimation, 3450, 0,lolka1 , "INT_OFFICE", "OFF_Sit_Type_Loop", 1000, true, false, false, false) Ты вот этот таймер не убиваешь Link to comment
sir135 Posted February 11, 2011 Author Share Posted February 11, 2011 Да, все норм. Большое спасибо! Со скриптом банка полностью разобрался. Если это возможно то удалите пожалуйста тему. Link to comment
DakiLLa Posted February 11, 2011 Share Posted February 11, 2011 а в чем тут разница между client и source? :3 source передает сам клиент а client задан сервером, в зависимости от того, от кого он получил пакет То есть в таком случае во всех функциях, вызываемых из клиента, лучше использовать переменную client, нежели source, которую можно "перехватить" ? Спрашиваю, потому что до сего момента сплошь и рядом в этих функциях использовал source. Link to comment
lil Toady Posted February 11, 2011 Share Posted February 11, 2011 а в чем тут разница между client и source? :3 source передает сам клиент а client задан сервером, в зависимости от того, от кого он получил пакет То есть в таком случае во всех функциях, вызываемых из клиента, лучше использовать переменную client, нежели source, которую можно "перехватить" ? Спрашиваю, потому что до сего момента сплошь и рядом в этих функциях использовал source. Да, чтобы узнать игрока который вызвал функцию лучше использовать client, а как source можно и другие элементы передавать (если вообще нужно передавать какие-то элементы). Так же крайне не советую использовать всякие функции типа callServerFunction (которая позволяет вызывать любую функцию на сервере), да и вообще планировать логику скрипта с расчетом что ваши эвенты могут быть вызваны клиентом в любой момент, а не только когда предполагает ваш скрипт (это случается редко и мы с этим боремся, но время от времени появляются умельцы которые пытаются взломать этот функционал), добавляйте всякие проверки в функциях которые могут быть вызваны клиентом. Если есть какие-то вопросы по защите, задавайте. Link to comment
ference Posted February 11, 2011 Share Posted February 11, 2011 кто там про РП говорил.. было время, пробежался по гугл код проектам и нашел некоторые моды, которые разрабатываются под МТА - ознакомьтесь с полным списком, возможно, вы захотите присоединиться к этим проектам. РП моды там тоже есть. Там почти все проекты - пустышки либо заброшены едва начавшись. Из того, что "РП" - все. Есть кошерный РП-режим, который делал небезызвестный mabako, называется Paradise RP. Link to comment
Kenix Posted February 12, 2011 Share Posted February 12, 2011 у меня вот есть ворос как можно удалить функцию к примеру в мта есть removeEventHandler а вот функции нет. по поводу "client" впервые слышу обычно использовал source или бывает getLocalPlayer Там почти все проекты - пустышки либо заброшены едва начавшись. Из того, что "РП" - все. Есть кошерный РП-режим, который делал небезызвестный mabako, называется Paradise RP. нет почему SANL:RPG он сейчас есть и народу там много играет а так да. и ещё один вопрос возник какие в мта существуют nil"овые значения кроме этих: source ,thePlayer,player. просто иногда в свой гм надо много таких nil"ов , просто у меня есть функция каторая повторяется больше 3 раз . Link to comment
Aibo Posted February 12, 2011 Share Posted February 12, 2011 у меня вот есть ворос как можно удалить функцию к примеру в мта есть removeEventHandler а вот функции нет.по поводу "client" впервые слышу обычно использовал source или бывает getLocalPlayer Там почти все проекты - пустышки либо заброшены едва начавшись. Из того, что "РП" - все. Есть кошерный РП-режим, который делал небезызвестный mabako, называется Paradise RP. нет почему SANL:RPG он сейчас есть и народу там много играет а так да. и ещё один вопрос возник какие в мта существуют nil"овые значения кроме этих: source ,thePlayer,player. просто иногда в свой гм надо много таких nil"ов , просто у меня есть функция каторая повторяется больше 3 раз . что ты имеешь ввиду под nil'овые? Link to comment
Kenix Posted February 12, 2011 Share Posted February 12, 2011 к примеру triggerClientEvent(source,"ongreeting",source) а бывает что нужно по нескольку раз такое делать , и нельзя использовать один и тотже source. Link to comment
Aibo Posted February 12, 2011 Share Posted February 12, 2011 чего чего? это не значения, это переменные. и что общего имеет source и, допустим, thePlayer, я не понимаю. Link to comment
Kenix Posted February 12, 2011 Share Posted February 12, 2011 ты не совсем меня понял . ну к примеру мне нужно использовать одну и туже функцию. я же не буду использовать один только source мне нужны и другие. просто у меня есть проблема в одном скрипте что нужно вызывать функцию по много раз только данному игроку . 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