Jump to content

Общий мини "HELP ME" топик по скриптингу


Recommended Posts

  • Other Languages Moderators
getPlayerMoney expected number at argument... got nil.
function money ( ) 
    randcash = math.random ( 400, 1200 ) 
    givePlayerMoney ( player, randcash ) 
    outputChatBox( "Денежный бонус в этом часу - #FFF700"..randcash.."#04F204.", 4, 242, 4, true ) 
end 
  
    setTimer ( money, 18000, 5 ) 

откуда player взял?

Link to comment
getPlayerMoney expected number at argument... got nil.
function money ( ) 
    randcash = math.random ( 400, 1200 ) 
    givePlayerMoney ( player, randcash ) 
    outputChatBox( "Денежный бонус в этом часу - #FFF700"..randcash.."#04F204.", 4, 242, 4, true ) 
end 
  
    setTimer ( money, 18000, 5 ) 

откуда player взял?

Сначала думал над вопросом как его задать, посмотрел примеры скриптов и оставил так. Как привязать 'player'?

Link to comment

Сначала думал над вопросом как его задать, посмотрел примеры скриптов и оставил так. Как привязать 'player'?

Если ты хочешь, чтобы деньги давались случайному игроку, то вместо player используй getRandomPlayer()

Link to comment

Сначала думал над вопросом как его задать, посмотрел примеры скриптов и оставил так. Как привязать 'player'?

Если ты хочешь, чтобы деньги давались случайному игроку, то вместо player используй getRandomPlayer()

Нет, выдается для всех.

Link to comment
Используй цикл в купе с функцией
getElementsByType 

В чем теперь ошибка?

function money ( ) 
    local players = getElementsByType ( "player" ) 
        for theKey, thePlayer in ipairs( players ) do 
    randcash = math.random ( 400, 1200 ) 
    givePlayerMoney ( players, randcash ) 
    outputChatBox( "Денежный бонус в этом часу - #FFF700"..randcash.."#04F204.", 4, 242, 4, true ) 
    end 
end 
  
    setTimer ( money, 1800, 5 ) 

Link to comment
getElementsByType дает элементы, а не ники. Это совершенно разные вещи. А насчет нумерации наверняка правы.

Клиент или сервер это?

Client.

Спасибо, работает. :)

ChatBox на сторону клиента как перекинуть?

В клиенте визуальные данные, а на сервере оставить только кусок с givePlayerMoney?

Как быть с таймером? На обеих сторонах?

И какие элементы дает все-таки?

Я помню пример:

1 1

2 Вася

3 Осел

Но это связано с группой.

Link to comment

Что-то я не очень вас понял.

У вас клиент, а вы хотите перекинуть... на клиент.

Функция вывода в чат на сервере имеет параметр visibleTo, если что.

Про элементы... Если вы про getElementsByType("player"), то он возвращает вам таблицу с игроками.

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

Так же и с игроком. Получаете просто элемент, далее можете получить ник и прочее.

Вообще, я не особо знаком со скриптингом в MTA. Будем надеяться, что вскоре появятся люди, кто меня поправит/разъяснит лучше.

Link to comment

Привет ребят! Надеюсь на скорый отклик!

Нужно сделать такую сис-му: два раза кик, а на третий раз - сервер автоматически выдаёт бан игроку.

Можно сделать такое, или уже где-то есть код?

Link to comment
addEventHandler( 'onPlayerQuit', root, function( quitType ) 
  if quitType ~= 'Kicked' then return; end 
  
  local acc = getPlayerAccount( source ) 
  if not acc then return; end 
  
  local kickCount = ( getAccountData( acc, 'kickCount' ) or 0 ) + 1 
  if kickCount == 3 then 
    addBan( nil, nil, getPlayerSerial( source ), source, 'Auto', 0 ) 
    return 
  end 
  
  setAccountData( acc, 'kickCount', kickCount ) 
end ) 
  

Link to comment

Скрипт не загружается на сервер. Соответственно, не работает.

Суть - игрок заходит, играет час и ему выдается денежный бонус.

Скрипт со стороны сервера.

function money ( ) 
    local players = getElementsByType ( "player" ) 
        for theKey, thePlayer in ipairs( players ) do 
    randcash = math.random ( 2000, 5000 ) 
    givePlayerMoney ( thePlayer, randcash ) 
    outputChatBox( "Вы получили - #FFF700"..randcash.."$#04F204за пол часа, проведенных на сервере.", getRootElement(), 4, 242, 4, true ) 
    end 
end 
  
    setTimer ( money, 1800, 5 ) 
  
addEventHandler ( "onPlayerSpawn", rootElement, money ) 

* Вермя указано для теста, то же самое и с повторениями цикла.

Link to comment

Что такое rootElement в addEventHandler?

Я думаю, ты нигде не указал что это, в итоге событие не вызывается. Попробуй root.

Кстати, твой код просто неверный.

Каждый раз, когда игрок спавнится, он будет порождать событие onPlayerSpawn, следовательно таймер будет запускаться чаще указанного времени в setTimer.

outputChatBox будет спамить в чате столько раз, сколько игроков. Вместо getRootElement(), поставь thePlayer.

Link to comment
Что такое rootElement в addEventHandler?

Я думаю, ты нигде не указал что это, в итоге событие не вызывается. Попробуй root.

Кстати, твой код просто неверный.

Каждый раз, когда игрок спавнится, он будет порождать событие onPlayerSpawn, следовательно таймер будет запускаться чаще указанного времени в setTimer.

outputChatBox будет спамить в чате столько раз, сколько игроков. Вместо getRootElement(), поставь thePlayer.

Примеры с офф. сайта юзал, там не описано что это значит.:)

Скрипт опять не загрузился...

Link to comment

Спасибо, добрый человек!

addEventHandler( 'onPlayerQuit', root, function( quitType ) 
  if quitType ~= 'Kicked' then return; end 
  
  local acc = getPlayerAccount( source ) 
  if not acc then return; end 
  
  local kickCount = ( getAccountData( acc, 'kickCount' ) or 0 ) + 1 
  if kickCount == 3 then 
    addBan( nil, nil, getPlayerSerial( source ), source, 'Auto', 0 ) 
    return 
  end 
  
  setAccountData( acc, 'kickCount', kickCount ) 
end ) 
  

Link to comment

Я читаю разнообразные книги каждый день, извини, не получается вычитать все по Lua, прочитал только азы с сайта "i love lua". Поэтому мне приходится просить людей, чтобы мне помогли, тем более, что так, по моему мнению, легче учится.

Тем не менее, спасибо за посылки к разъяснению моего вопроса.:)

Link to comment

Не знаю, правильно ли я поступаю в addEventHandler.

function money ( ) 
    local players = getElementsByType ( "player" ) 
        for theKey, thePlayer in ipairs( players ) do 
    randcash = math.random ( 1000, 4000 ) 
    givePlayerMoney ( thePlayer, randcash ) 
    outputChatBox( "Вы получили - #FFF700"..randcash.."#04F204за пол часа, проведенных на сервере.", thePlayer, 4, 242, 4, true ) 
    end 
end 
     
addEventHandler ( "onPlayerSpawn", setTimer ( money, 1800, 5 ) ) 

Тем не менее, не работает...

function money ( ) 
    local players = getElementsByType ( "player" ) 
        for theKey, thePlayer in ipairs( players ) do 
    randcash = math.random ( 1000, 4000 ) 
    givePlayerMoney ( thePlayer, randcash ) 
    outputChatBox( "Вы получили - #FFF700"..randcash.."#04F204за пол часа, проведенных на сервере.", thePlayer, 4, 242, 4, true ) 
    end 
end 
    setTimer ( money, 1800, 5 ) 
addEventHandler ( "onPlayerSpawn", root, money ) 

Link to comment
addEventHandler( 'onPlayerQuit', root, function( quitType ) 
  if quitType ~= 'Kicked' then return; end 
  
  local acc = getPlayerAccount( source ) 
  if not acc then return; end 
  
  local kickCount = ( getAccountData( acc, 'kickCount' ) or 0 ) + 1 
  if kickCount == 3 then 
    addBan( nil, nil, getPlayerSerial( source ), source, 'Auto', 0 ) 
    return 
  end 
  
  setAccountData( acc, 'kickCount', kickCount ) 
end ) 

Вот тут что-то не работает. Пишет в консоль ошибку 9 строки. "Access Denied "addBan" - Есть решение этой проблемы?

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...