``` local xpNeed = 100; -- E.g. 100 * lvl = XP you need to rank up!
addEvent("onPlayerLevelUp", true);
function addPlayerXp(player, xp)
local acc = getPlayerAccount(player);
local oldexp = getAccountData(acc, "exp") or 0;
local oldlvl = getAccountData(acc, "lvl") or 1;
local newlevel = oldlvl + 1;
local newexp = oldexp + xp;
lvl = getAccountData(acc, "lvl") or 0;
if getElementData(player,'lvl') > 9 then return end
setAccountData(acc, "exp", newexp);
setElementData(player, "exp", newexp);
--if getAccountData(acc,'lvl') > 9 then return end
if (newexp >= (oldlvl * xpNeed)) then
local expleft = newexp - (oldlvl * xpNeed); -- added calculation for the exp that may remains after level up.
outputChatBox("[Level-Up] Congratulations! New level "..newlevel.."!", player, 66, 134, 244);
setAccountData(acc, "lvl", newlevel);
setAccountData(acc, "exp", expleft);
setElementData(player, "exp", expleft);
setElementData(player, "lvl", newlevel);
triggerEvent("onPlayerLevelUp", player, newlevel, oldlvl, oldexp, newexp);
end
end
addEventHandler("onPlayerLogin", root, function()
local acc = getPlayerAccount(source);
if acc then
setElementData(source, "lvl", getAccountData(acc, "lvl") or 0);
setElementData(source, "exp", getAccountData(acc, "exp") or 0);
end
end);
addEventHandler("onZombieGetsKilled", root, function(killer)
if killer and getElementType(killer) == "player" then
addPlayerXp(killer, 50);
end
end);
addEventHandler("kilLDayZPlayer", root, function(killer)
if (killer and killer ~= source and getElementType(killer) == "player") then
addPlayerXp(killer, 50);
end
end);
--[[
addEventHandler("onPlayerSpawn", root, function(newlvl)
if newlvl then
if (lvl) >= 1 then
setElementData(player, "MP5A5", 1)
elseif lvl >= 2 then
setElementData(player, "Tent", 1)
elseif lvl >= 3 then
setElementData(player, "Milk", 1)
elseif lvl >= 4 then
setElementData(player, "Medic Kit", 1)
elseif lvl >= 5 then
setElementData(player, "Shovel", 1)
end
end
end);
]]
table = {"Milk","MP5A5","M4A1-S","AK-47","Soda Bottle","Pizza","AS50","Tent","Medium Tent","ACR","AR-15","M107","Pasta Can","Beans Can","Golf Club"}
addEventHandler("onPlayerSpawn", root, function(lvl)
if not lvl then lvl = getElementData(player, "lvl") or 0; end
if lvl >= 1 then
for i = 1, lvl do
setElementData(player, table[i], getElementData(player, table[i]) + 1);
end
end
end);
```
Здравствуйте, это мой первый пост, поэтому я хотел бы поздороваться. Итак, как начинающий программист, я пытаюсь реализовать систему уровней для своего mta-сервера, но я столкнулся с препятствием, как указано в заголовке. Где это логическое значение? Как мне заставить его работать? Прошу прощения, если этот вопрос кажется тривиальным (а он, безусловно, так и есть), но я действительно хочу двигаться вперед. Любая помощь будет принята с благодарностью. Заранее спасибо!
ошибка в setElementData (player, table [i], getElementData (player, table [i]) + 1); что я могу сделать, чтобы заставить его работать, любая помощь будет принята с благодарностью
ERROR LINE 70 попытка выполнить арифметику c на логическом значении И ПРЕДУПРЕЖДЕНИЕ ЖЕ СТРОКА
Неверный аргумент @ getElementData [Ожидаемый элемент в аргумент 1, получил ноль]