Alko Posted February 9, 2014 Share Posted February 9, 2014 Все равно не догоняю. Код теперь должен быть такой? function getlvl (player, cmd, account) local player = getPlayerAccount( player ) local myLevel = getAccountData (player, "lvl.value" ) outputChatBox ( "Your account level is: ".. myLevel .. "лол", player) end addCommandHandler ( "mylevel", getlvl) Если база такая: http://prntscr.com/2r0x94 Link to comment
Elengar Posted February 10, 2014 Share Posted February 10, 2014 Все равно не догоняю.Код теперь должен быть такой? function getlvl (player, cmd, account) local player = getPlayerAccount( player ) local myLevel = getAccountData (player, "lvl.value" ) outputChatBox ( "Your account level is: ".. myLevel .. "лол", player) end addCommandHandler ( "mylevel", getlvl) Если база такая: http://prntscr.com/2r0x94 Вот так нужно local myLevel = getAccountData (player, "lvl" ) Link to comment
Kenix Posted February 10, 2014 Share Posted February 10, 2014 Все равно не догоняю.Код теперь должен быть такой? function getlvl (player, cmd, account) local player = getPlayerAccount( player ) local myLevel = getAccountData (player, "lvl.value" ) outputChatBox ( "Your account level is: ".. myLevel .. "лол", player) end addCommandHandler ( "mylevel", getlvl) Если база такая: http://prntscr.com/2r0x94 Вот так нужно local myLevel = getAccountData (player, "lvl" ) Первый аргумент у функции getAccountData это указатель на аккаунт, а не на игрока. Link to comment
Other Languages Moderators Disinterpreter Posted February 10, 2014 Other Languages Moderators Share Posted February 10, 2014 Первый аргумент у функции getAccountData это указатель на аккаунт, а не на игрока. Круче совета дать не мог? local player = getPlayerAccount( player ) local myLevel = getAccountData (player, "lvl.value" ) Link to comment
Elengar Posted February 10, 2014 Share Posted February 10, 2014 Первый аргумент у функции getAccountData это указатель на аккаунт, а не на игрока. local player = getPlayerAccount( player ) Link to comment
Kenix Posted February 10, 2014 Share Posted February 10, 2014 Первый аргумент у функции getAccountData это указатель на аккаунт, а не на игрока. Круче совета дать не мог? local player = getPlayerAccount( player ) local myLevel = getAccountData (player, "lvl.value" ) Про эту строку не забывай, выведет ошибку outputChatBox ( "Your account level is: ".. myLevel .. "лол", player) т.к там должен быть элемент, а не указатель на аккаунт. Вот вам готовый код function PrintAccountLevel( player ) local account = getPlayerAccount( player ); local lvl = getAccountData( account, "lvl" ) or 0; outputChatBox( "Your account level is: " .. lvl, player ); end addCommandHandler ( "mylevel", PrintAccountLevel ); Link to comment
Alko Posted February 10, 2014 Share Posted February 10, 2014 И все же я получаю: getlevel.lua:4: attempt to concatenate local 'lvl' (a boolean value) Хотя в юзердате есть строчка "lvl". И вообще есть ли документация насчет баз данных в MTA? А то я хер пойми куда записывается все. Link to comment
Other Languages Moderators Disinterpreter Posted February 10, 2014 Other Languages Moderators Share Posted February 10, 2014 И все же я получаю: getlevel.lua:4: attempt to concatenate local 'lvl' (a boolean value) Хотя в юзердате есть строчка "lvl". И вообще есть ли документация насчет баз данных в MTA? А то я хер пойми куда записывается все. Хранится все в SQLite бд в файле internal.db Link to comment
Alko Posted February 10, 2014 Share Posted February 10, 2014 Я знаю. Строчка lvl есть,в ней есть цифры "123" При вывыоде он строчку lvl не видит. Чую пока придется юзать .xml файлы для акка. Link to comment
Other Languages Moderators Disinterpreter Posted February 10, 2014 Other Languages Moderators Share Posted February 10, 2014 Я знаю.Строчка lvl есть,в ней есть цифры "123" При вывыоде он строчку lvl не видит. Чую пока придется юзать .xml файлы для акка. Скриншот дайте. P.S xml вообще не нужен. Link to comment
Alko Posted February 10, 2014 Share Posted February 10, 2014 Базу снес - поставил заного. Теперь тут вообще пусто. http://prntscr.com/2r93hp Link to comment
Other Languages Moderators Disinterpreter Posted February 10, 2014 Other Languages Moderators Share Posted February 10, 2014 Базу снес - поставил заного.Теперь тут вообще пусто. http://prntscr.com/2r93hp Нужно создать поле lvl и засунуть туда значение. ПРОФИТ. Link to comment
Alko Posted February 10, 2014 Share Posted February 10, 2014 Тогда вопрос: Откуда таксказать скрипт поймет с какого аккаунта брать lvl? Там же не написан акк или ид акка,даже после регистрации. Link to comment
Other Languages Moderators Disinterpreter Posted February 10, 2014 Other Languages Moderators Share Posted February 10, 2014 Тогда вопрос:Откуда таксказать скрипт поймет с какого аккаунта брать lvl? Там же не написан акк или ид акка,даже после регистрации. getAccountData ( account TheAcc, string key ) Link to comment
Alko Posted February 10, 2014 Share Posted February 10, 2014 Ты меня не правильно понял. Это таблицы accounts:http://prntscr.com/2r9zof Это таблица userdata:http://prntscr.com/2r9zv0 HOW? Link to comment
Other Languages Moderators Disinterpreter Posted February 10, 2014 Other Languages Moderators Share Posted February 10, 2014 Ты меня не правильно понял.Это таблицы accounts:http://prntscr.com/2r9zof Это таблица userdata:http://prntscr.com/2r9zv0 HOW? Ты данные не занес в userdata. Link to comment
TheNormalnij Posted February 10, 2014 Share Posted February 10, 2014 Можно делать, как было в коде Kenix: ставить "or 'defaultValue" после getAccountData. После выхода игрока заносить данные в таблицу. Таким образом решится проблема с начальным значением и упростится работа с добавлением новых ключей. Link to comment
Elengar Posted February 11, 2014 Share Posted February 11, 2014 Вот, держи, это сначала тебе занесет введеное в коменде значение в базу, тебе потом легче понимать будет, что там и как. function getlvl (player, cmd, lvl) local player = getPlayerAccount( player ) setAccountData (player, "lvl",lvl ) --outputChatBox ( "Your account level is: ".. myLevel .. "лол", player) end addCommandHandler ( "mylevel", getlvl) Оффтоп: Можно делать, как было в коде Kenix: ставить "or 'defaultValue" после getAccountData. После выхода игрока заносить данные в таблицу. Таким образом решится проблема с начальным значением и упростится работа с добавлением новых ключей. Я так понял он не хочет сейчас ничего туда заносить, а хотит поковырятся с бд вручную. И начальных у него значений не было, он хотел считать 123 из базы. Link to comment
VCXZ Posted February 11, 2014 Share Posted February 11, 2014 Возможно ли полностью отключить "смерть" в моде? То есть, чтобы события PlayerWasted не существовало в принципе. Но при этом, чтобы ХП всё же отнималось вплоть до 1. (то есть максимум ХП 100, минимум 1) Я пытался сделать что-то подобное через onPlayerDamage, восстанавливать ХП от полученного урона, но это совсем не то. Это событие, насколько я понял, срабатывает только от урона, причиняемого другими игроками, а если например упадешь с крыши, не срабатывает. Надо как-то отключить PlayerWasted. Link to comment
Memory Posted February 11, 2014 Share Posted February 11, 2014 client function restrictDamage ( attacker, attackerWeapon, bodypart, loss ) local theHealth = getElementHealth ( localPlayer ) if ( loss >= theHealth ) then triggerServerEvent ( "healthPlayer", localPlayer, 1) else triggerServerEvent ( "healthPlayer", localPlayer, loss) end cancelEvent ( ) end addEventHandler ( "onClientPlayerDamage", root, restrictDamage ) server function restrictDamageServer ( loss ) if ( loss == 1 ) then setElementHealth ( source, loss ) else local theHealth = getElementHealth ( source ) setElementHealth ( source, theHealth - loss ) end end addEvent ( "healthPlayer", true ) addEventHandler ( "healthPlayer", getRootElement(), restrictDamageServer ) Link to comment
Kernell Posted February 11, 2014 Share Posted February 11, 2014 отключить PlayerWasted. addEventHandler( "onPlayerWasted", root, function() cancelEvent() end ); Link to comment
VCXZ Posted February 11, 2014 Share Posted February 11, 2014 Memory, блин, это просто супер круто!! Спасибо огромное! Действительно работает: пробовал взорваться гранатой, прыгать с крыш, тонуть в воде! Kernell, а что, было бы довольно неплохо Link to comment
Other Languages Moderators Disinterpreter Posted February 11, 2014 Other Languages Moderators Share Posted February 11, 2014 Memory, блин, это просто супер круто!! Спасибо огромное! Действительно работает: пробовал взорваться гранатой, прыгать с крыш, тонуть в воде!Kernell, а что, было бы довольно неплохо его код сработает. Link to comment
VCXZ Posted February 11, 2014 Share Posted February 11, 2014 Memory, блин, это просто супер круто!! Спасибо огромное! Действительно работает: пробовал взорваться гранатой, прыгать с крыш, тонуть в воде!Kernell, а что, было бы довольно неплохо его код сработает. Попробовал на всякий случай, потонул Кстати, на счет кода Memory, я въехал в заправку на машине, всё-таки умер. Но думаю можно сделать так, чтобы в таком случае игрок появлялся рядом с машиной с 1 хп, используя onClientVehicleDamage, немного позже обязательно займусь этим. Link to comment
Alko Posted February 11, 2014 Share Posted February 11, 2014 Вот, держи, это сначала тебе занесет введеное в коменде значение в базу, тебе потом легче понимать будет, что там и как. function getlvl (player, cmd, lvl) local player = getPlayerAccount( player ) setAccountData (player, "lvl",lvl ) --outputChatBox ( "Your account level is: ".. myLevel .. "лол", player) end addCommandHandler ( "mylevel", getlvl) Оффтоп: Можно делать, как было в коде Kenix: ставить "or 'defaultValue" после getAccountData. После выхода игрока заносить данные в таблицу. Таким образом решится проблема с начальным значением и упростится работа с добавлением новых ключей. Я так понял он не хочет сейчас ничего туда заносить, а хотит поковырятся с бд вручную. И начальных у него значений не было, он хотел считать 123 из базы. Очень странно но это помогло. У меня есть фун-ция в регистрации которая устанавливает уровень. Спасибо вообщем. 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