Jump to content

Требуется помощь в скрипте


Recommended Posts

Мне нужна функция на то, что человек в данное время залогиненный, а не та что проверяет, зарегистрирован или нет(isGuestAccount), знающие люди пожалуйста подскажите.

Link to comment
  • Replies 92
  • Created
  • Last Reply

Top Posters In This Topic

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

Нет такой вещи как "зарегинность", сервер не может знать зареген ты или нет, я могу придти на твой сервер и залогиниться с твоим акком не регистрируясь..

Но при этом у игрока всегда есть аккаунт, свой если залогинился, и гостевой если нет. Откуда ты вызываешь reglog и как? у тебя явно не задан thePlayer

Link to comment

getAccount() достает аккаунт по его имени, и isGuestAccount() надо натравливать не на него, а на текущий аккаунт игрока, полученный с помощью getPlayerAccount()

Link to comment
getAccount() достает аккаунт по его имени, и isGuestAccount() надо натравливать не на него, а на текущий аккаунт игрока, полученный с помощью getPlayerAccount()

ага, вот этого я не заметил

Link to comment
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
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

Вот еще одна не большая проблема, как-бы скрипт работает, только начинает флудить в дебуге 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
а в чем тут разница между 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
а в чем тут разница между client и source? :3

source передает сам клиент а client задан сервером, в зависимости от того, от кого он получил пакет

То есть в таком случае во всех функциях, вызываемых из клиента, лучше использовать переменную client, нежели source, которую можно "перехватить" ? Спрашиваю, потому что до сего момента сплошь и рядом в этих функциях использовал source.

Link to comment
а в чем тут разница между client и source? :3

source передает сам клиент а client задан сервером, в зависимости от того, от кого он получил пакет

То есть в таком случае во всех функциях, вызываемых из клиента, лучше использовать переменную client, нежели source, которую можно "перехватить" ? Спрашиваю, потому что до сего момента сплошь и рядом в этих функциях использовал source.

Да, чтобы узнать игрока который вызвал функцию лучше использовать client, а как source можно и другие элементы передавать (если вообще нужно передавать какие-то элементы). Так же крайне не советую использовать всякие функции типа callServerFunction (которая позволяет вызывать любую функцию на сервере), да и вообще планировать логику скрипта с расчетом что ваши эвенты могут быть вызваны клиентом в любой момент, а не только когда предполагает ваш скрипт (это случается редко и мы с этим боремся, но время от времени появляются умельцы которые пытаются взломать этот функционал), добавляйте всякие проверки в функциях которые могут быть вызваны клиентом. Если есть какие-то вопросы по защите, задавайте.

Link to comment
кто там про РП говорил.. было время, пробежался по гугл код проектам и нашел некоторые моды, которые разрабатываются под МТА - ознакомьтесь с полным списком, возможно, вы захотите присоединиться к этим проектам. РП моды там тоже есть.

Там почти все проекты - пустышки либо заброшены едва начавшись. Из того, что "РП" - все. Есть кошерный РП-режим, который делал небезызвестный mabako, называется Paradise RP.

Link to comment

у меня вот есть ворос как можно удалить функцию к примеру в мта есть removeEventHandler а вот функции нет.

по поводу "client" впервые слышу обычно использовал source или бывает getLocalPlayer :D

Там почти все проекты - пустышки либо заброшены едва начавшись. Из того, что "РП" - все. Есть кошерный РП-режим, который делал небезызвестный mabako, называется Paradise RP.

нет почему SANL:RPG он сейчас есть и народу там много играет :)

а так да.

и ещё один вопрос возник какие в мта существуют nil"овые значения кроме этих: source ,thePlayer,player.

просто иногда в свой гм надо много таких nil"ов , просто у меня есть функция каторая повторяется больше 3 раз .

Link to comment
у меня вот есть ворос как можно удалить функцию к примеру в мта есть removeEventHandler а вот функции нет.

по поводу "client" впервые слышу обычно использовал source или бывает getLocalPlayer :D

Там почти все проекты - пустышки либо заброшены едва начавшись. Из того, что "РП" - все. Есть кошерный РП-режим, который делал небезызвестный mabako, называется Paradise RP.

нет почему SANL:RPG он сейчас есть и народу там много играет :)

а так да.

и ещё один вопрос возник какие в мта существуют nil"овые значения кроме этих: source ,thePlayer,player.

просто иногда в свой гм надо много таких nil"ов , просто у меня есть функция каторая повторяется больше 3 раз .

что ты имеешь ввиду под nil'овые?

Link to comment

ты не совсем меня понял .

ну к примеру мне нужно использовать одну и туже функцию.

я же не буду использовать один только source мне нужны и другие.

просто у меня есть проблема в одном скрипте что нужно вызывать функцию по много раз только данному игроку .

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...