Other Languages Moderators Disinterpreter Posted July 25, 2013 Other Languages Moderators Share Posted July 25, 2013 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
nikitafloy Posted July 25, 2013 Share Posted July 25, 2013 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
CocaColaBear Posted July 25, 2013 Share Posted July 25, 2013 Сначала думал над вопросом как его задать, посмотрел примеры скриптов и оставил так. Как привязать 'player'? Если ты хочешь, чтобы деньги давались случайному игроку, то вместо player используй getRandomPlayer() Link to comment
nikitafloy Posted July 25, 2013 Share Posted July 25, 2013 Сначала думал над вопросом как его задать, посмотрел примеры скриптов и оставил так. Как привязать 'player'? Если ты хочешь, чтобы деньги давались случайному игроку, то вместо player используй getRandomPlayer() Нет, выдается для всех. Link to comment
Kenix Posted July 25, 2013 Share Posted July 25, 2013 Используй цикл в купе с функцией getElementsByType Link to comment
nikitafloy Posted July 25, 2013 Share Posted July 25, 2013 Используй цикл в купе с функцией 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
_Vincent_ Posted July 25, 2013 Share Posted July 25, 2013 givePlayerMoney ( players, randcash ) не players тут. thePlayer, наверное. или theKey. я уже не помню, попробуй по очереди Link to comment
nikitafloy Posted July 25, 2013 Share Posted July 25, 2013 givePlayerMoney ( players, randcash )не players тут. thePlayer, наверное. или theKey. я уже не помню, попробуй по очереди theKey - Нумерация. thePlayer - Ники игроков. Деньги не идут... Link to comment
_Vincent_ Posted July 25, 2013 Share Posted July 25, 2013 getElementsByType дает элементы, а не ники. Это совершенно разные вещи. А насчет нумерации наверняка правы. Клиент или сервер это? Link to comment
nikitafloy Posted July 25, 2013 Share Posted July 25, 2013 getElementsByType дает элементы, а не ники. Это совершенно разные вещи. А насчет нумерации наверняка правы.Клиент или сервер это? Client. Спасибо, работает. ChatBox на сторону клиента как перекинуть? В клиенте визуальные данные, а на сервере оставить только кусок с givePlayerMoney? Как быть с таймером? На обеих сторонах? И какие элементы дает все-таки? Я помню пример: 1 1 2 Вася 3 Осел Но это связано с группой. Link to comment
_Vincent_ Posted July 25, 2013 Share Posted July 25, 2013 Что-то я не очень вас понял. У вас клиент, а вы хотите перекинуть... на клиент. Функция вывода в чат на сервере имеет параметр visibleTo, если что. Про элементы... Если вы про getElementsByType("player"), то он возвращает вам таблицу с игроками. Грубо говоря, есть у вас элемент, являющийся транспортным средством. Сам по себе он толком ничего и не значит, но вы можете применять к нему функции и узнать, кто в нем сидит и т.п. Так же и с игроком. Получаете просто элемент, далее можете получить ник и прочее. Вообще, я не особо знаком со скриптингом в MTA. Будем надеяться, что вскоре появятся люди, кто меня поправит/разъяснит лучше. Link to comment
SoliderJah Posted July 26, 2013 Share Posted July 26, 2013 Привет ребят! Надеюсь на скорый отклик! Нужно сделать такую сис-му: два раза кик, а на третий раз - сервер автоматически выдаёт бан игроку. Можно сделать такое, или уже где-то есть код? Link to comment
TheNormalnij Posted July 26, 2013 Share Posted July 26, 2013 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
nikitafloy Posted July 26, 2013 Share Posted July 26, 2013 Скрипт не загружается на сервер. Соответственно, не работает. Суть - игрок заходит, играет час и ему выдается денежный бонус. Скрипт со стороны сервера. 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
CocaColaBear Posted July 26, 2013 Share Posted July 26, 2013 Что такое rootElement в addEventHandler? Я думаю, ты нигде не указал что это, в итоге событие не вызывается. Попробуй root. Кстати, твой код просто неверный. Каждый раз, когда игрок спавнится, он будет порождать событие onPlayerSpawn, следовательно таймер будет запускаться чаще указанного времени в setTimer. outputChatBox будет спамить в чате столько раз, сколько игроков. Вместо getRootElement(), поставь thePlayer. Link to comment
nikitafloy Posted July 26, 2013 Share Posted July 26, 2013 Что такое rootElement в addEventHandler? Я думаю, ты нигде не указал что это, в итоге событие не вызывается. Попробуй root. Кстати, твой код просто неверный. Каждый раз, когда игрок спавнится, он будет порождать событие onPlayerSpawn, следовательно таймер будет запускаться чаще указанного времени в setTimer. outputChatBox будет спамить в чате столько раз, сколько игроков. Вместо getRootElement(), поставь thePlayer. Примеры с офф. сайта юзал, там не описано что это значит. Скрипт опять не загрузился... Link to comment
Kenix Posted July 26, 2013 Share Posted July 26, 2013 viewtopic.php?f=141&t=32458 https://wiki.multitheftauto.com/index.ph ... troduction Link to comment
SoliderJah Posted July 26, 2013 Share Posted July 26, 2013 Спасибо, добрый человек! 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
nikitafloy Posted July 26, 2013 Share Posted July 26, 2013 https://forum.multitheftauto.com/viewtopic.php?f=141&t=32458https://wiki.multitheftauto.com/index.ph ... troduction Я читаю разнообразные книги каждый день, извини, не получается вычитать все по Lua, прочитал только азы с сайта "i love lua". Поэтому мне приходится просить людей, чтобы мне помогли, тем более, что так, по моему мнению, легче учится. Тем не менее, спасибо за посылки к разъяснению моего вопроса. Link to comment
nikitafloy Posted July 27, 2013 Share Posted July 27, 2013 Не знаю, правильно ли я поступаю в 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
Kernell Posted July 27, 2013 Share Posted July 27, 2013 nikitafloy, Если бы внимательно занимались изучением Lua, то знали бы, чем отличается var = func() от var = func Link to comment
SoliderJah Posted July 27, 2013 Share Posted July 27, 2013 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
Kenix Posted July 27, 2013 Share Posted July 27, 2013 Добавить ресурс в acl, в группу админа или создать свою группу и назначить права https://wiki.multitheftauto.com/index.ph ... ntrol_List Link to comment
nikitafloy Posted July 28, 2013 Share Posted July 28, 2013 nikitafloy,Если бы внимательно занимались изучением Lua Откуда Вам знать, как я изучаю Lua? Link to comment
TheNormalnij Posted July 28, 2013 Share Posted July 28, 2013 nikitafloy,Если бы внимательно занимались изучением Lua Откуда Вам знать, как я изучаю Lua? Ты сам написал, как ты изучаешь Lua. ))) 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