Hi guys help level system,1,onPlayerWasted not give exp help me 2, and dxdrawrectangle write exp amount e.g Exp %80/100
Level_Client.lua
local sx, sy = guiGetScreenSize()
--myFont3 = dxCreateFont( "font.ttf", 8 )
myFont4 = dxCreateFont( "font.ttf", 12 )
function drawExperience( )
--dxDrawLine(0, (sy - 0) / 1.057, (0) + 1600, ( (sy - 0) / 1.057) + 0, tocolor(0, 0, 0, 255), 2, true)
local Experience = getElementData(localPlayer,"puan_level") or 0
local Experience_n = getElementData(localPlayer,"gereken_level") or 0
local level = getElementData(localPlayer,"level_level") or 0
local rank = getElementData(localPlayer,"levelrank") or 0
local percent = math.floor(Experience / Experience_n * 100)
if (percent >= 100) then
percent = 100
elseif (Experience_n < 1) then
percent = 0
end
setElementData(localPlayer,"leveltakip","["..rank..".] "..level.." %"..percent)
if not getElementData(localPlayer,"levelbar") then
dxDrawRectangle((0/500)*sx,(712/750)*sy,(tonumber(percent)*2.35/235)*sx,(40/768)*sy,tocolor(0,255,0,75),true)
dxDrawRectangle((0/500)*sx,(712/750)*sy,(1024/1024)*sx,(40/768)*sy,tocolor(0, 0, 0, 70),true)
dxDrawColorText("LEVEL #ffffff".. tostring(level) .." ",(0/500)*sx,(770/768)*sy,(1020/1024)*sx,(724/768)*sy,tocolor(255,255,255,255),1,myFont4,"right","center",true,true,true)
dxDrawColorText("#FFFFFF%#ffffff".. tostring(percent) .." ",(0/500)*sx,(770/768)*sy,(1020/1024)*sx,(724/768)*sy,tocolor(255,255,255,255),1,myFont4,"center","center",false,false,true)
end
end
addEventHandler("onClientRender", root,drawExperience)
addEvent("hideDraw", true)
addEventHandler("hideDraw", getRootElement(),
function()
removeEventHandler("onClientRender",getRootElement(),drawExperience)
end)
addEvent("showDraw", true)
addEventHandler("showDraw", getRootElement(),
function()
setTimer(function()
addEventHandler("onClientRender",getRootElement(),drawExperience)
end, 1000, 1)
end)
addEvent ( "onClientPlayerLevelUp", true )
addEventHandler ( "onClientPlayerLevelUp", root,
function ( )
addEventHandler("onClientRender",root,DrawLevelUp)
setTimer(function()
removeEventHandler("onClientRender",root,DrawLevelUp)
end, 5000, 1)
end
)
addEvent ( "takip", true )
addEventHandler ( "takip", root,
function (puan,gereken)
local yuzde = (puan / gereken * 100)
setElementData(localPlayer,"leveltakip",yuzde)
if (yuzde >= 100) then
yuzde = 100
setElementData(localPlayer,"leveltakip",100)
elseif (gereken < 1) then
setElementData(localPlayer,"leveltakip",0)
end
end
)
addEventHandler("onClientVehicleCollision",root,
function(hitElement)
if source == getPedOccupiedVehicle(localPlayer) then
if hitElement and getElementType(hitElement) == 'vehicle' then
local driver = getVehicleController(source)
local hDriver = getVehicleController(hitElement)
if hDriver and driver then
setElementData(driver, "killerelement", hDriver)
end
end
end
end
)
--[[
gorunurluk = false
dxkills = 0
dxpuan = 0
killername = ""
addEventHandler("onClientPlayerWasted",root,
function()
killer = getElementData(localPlayer,"killerelement")
if killer and isElement(killer) and killer ~= nil and not isPedDead ( killer ) then
kills = getElementData(killer,"öldürme")
tpuan = getElementData(killer,"puan_level")
if tpuan and kills then
setElementData(killer,"öldürme",kills + 1)
setElementData(killer,"puan_level",tpuan + 25*(kills + 1))
outputDebugString((kills + 1).."x "..(25*(kills + 1)).. "Puan | "..getPlayerName(killer):gsub('#%x%x%x%x%x%x', '').." adlı oyuncu "..getPlayerName(localPlayer):gsub('#%x%x%x%x%x%x', '').." adlı oyuncuyu öldürdü.")
gorunurluk = true
dxkills = (kills + 1)
dxpuan = (25*(kills + 1))
killername = killer
setTimer(function() gorunurluk = false end, 4500, 1)
else
setElementData(killer,"öldürme",1)
setElementData(killer,"puan_level",25)
outputDebugString((1).."x "..(25).. "Puan | "..getPlayerName(killer):gsub('#%x%x%x%x%x%x', '').." adlı oyuncu "..getPlayerName(localPlayer):gsub('#%x%x%x%x%x%x', '').." adlı oyuncuyu öldürdü.")
gorunurluk = true
dxkills = 1
dxpuan = 25
killername = killer
setTimer(function() gorunurluk = false end, 4500, 1)
end
else
setElementData(localPlayer,"killerelement",nil)
end
end)
]]--
gorunurluk = false
dxkills = 0
dxpuan = 0
killername = ""
addEvent("gorunurluk",true)
addEventHandler("gorunurluk",root,function(kills,puan,killer)
gorunurluk = true
dxkills = kills
dxpuan = puan
killername = killer
setTimer(function() gorunurluk = false end, 4500, 1)
end)
function killspuan( )
if gorunurluk == true then
--dxDrawRectangle((0/500)*sx,(712/750)*sy,(tonumber(percent)*2.35/235)*sx,(40/768)*sy,tocolor(0,255,0,75),true)
--dxDrawRectangle((0/500)*sx,(712/750)*sy,(1024/1024)*sx,(40/768)*sy,tocolor(0, 0, 0, 70),true)
dxDrawColorText("#cc0000".. tostring(dxkills) .."#ffffffx #cc0000"..dxpuan.."#ffffffPuan | "..getPlayerName(killername).."#FFFFFF öldürüldü!",sx/2, sy/15, sx/2, sx/2,tocolor(255,255,255,200),1,myFont4,"center","center",true,true,true)
--dxDrawColorText("#FFFFFF%#cc0000".. tostring(percent) .." ",(0/500)*sx,(770/768)*sy,(1020/1024)*sx,(724/768)*sy,tocolor(255,255,255,255),1,myFont4,"center","center",false,false,true)
end
end
addEventHandler("onClientRender", root,killspuan)
---
addEventHandler ( "onClientRender", root,
function()
-- Hideous quick fix --
for i,player in ipairs(getElementsByType("player")) do
if player ~= localPlayer then
local x,y,z = getCameraMatrix()
if not isPedInVehicle(player) or isPedDead(player) then break end
local vehicle = getPedOccupiedVehicle(player)
local px,py,pz = getElementPosition ( vehicle )
local pdistance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz )
local sx,sy = getScreenFromWorldPosition ( px, py, pz+0.95, 0.06 )
if not sx or not sy then break end
--dxDrawText ( getPlayerName(player), sx, sy - offset, sx, sy - offset, tocolor(r,g,b,textalpha), textscale*NAMETAG_TEXTSIZE, "default", "center", "bottom", false, false, false )
if tonumber(getElementData(player,"levelrank")) == 1 and pdistance < 30 then
dxDrawImage ( sx-75, sy-120, 150,75, '1.png', 0, 0, 0 )
elseif tonumber(getElementData(player,"levelrank")) == 2 and pdistance < 30 then
dxDrawImage ( sx-75, sy-120, 150,75, '2.png', 0, 0, 0 )
elseif tonumber(getElementData(player,"levelrank")) == 3 and pdistance < 30 then
dxDrawImage ( sx-75, sy-120, 150,75, '3.png', 0, 0, 0 )
end
break
end
end
end
)
---
function dxDrawColorText(str, ax, ay, bx, by, color, scale, font, alignX, alignY)
bx, by, color, scale, font = bx or ax, by or ay, color or tocolor(255,255,255,255), scale or 1, font or "default"
if alignX then
if alignX == "center" then
ax = ax + (bx - ax - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font))/2
elseif alignX == "right" then
ax = bx - dxGetTextWidth(str:gsub("#%x%x%x%x%x%x",""), scale, font)
end
end
if alignY then
if alignY == "center" then
ay = ay + (by - ay - dxGetFontHeight(scale, font))/2
elseif alignY == "bottom" then
ay = by - dxGetFontHeight(scale, font)
end
end
local clip = false
if dxGetTextWidth(str:gsub("#%x%x%x%x%x%x","")) > bx then clip = true end
local alpha = string.format("%08X", color):sub(1,2)
local pat = "(.-)#(%x%x%x%x%x%x)"
local s, e, cap, col = str:find(pat, 1)
local last = 1
local text = ""
local broke = false
while s do
if cap == "" and col then color = tocolor(getColorFromString("#"..col..alpha)) end
if s ~= 1 or cap ~= "" then
local w = dxGetTextWidth(cap, scale, font)
if clip then
local text_ = ""
for i = 1,string.len(cap) do
if dxGetTextWidth(text,scale,font) < bx then
text = text..""..string.sub(cap,i,i)
text_ = text_..""..string.sub(cap,i,i)
else
broke = true
break
end
end
cap = text_
end
dxDrawText(cap, ax, ay, ax + w, by, color, scale, font)
ax = ax + w
color = tocolor(getColorFromString("#"..col..alpha))
end
last = e + 1
s, e, cap, col = str:find(pat, last)
end
if last <= #str and not broke then
cap = str:sub(last)
if clip then
local text_ = ""
for i = 1,string.len(cap) do
if dxGetTextWidth(text,scale,font) < bx then
text = text..""..string.sub(cap,i,i)
text_ = text_..""..string.sub(cap,i,i)
else
broke = true
break
end
end
cap = text_
end
dxDrawText(cap, ax, ay, ax + dxGetTextWidth(cap, scale, font), by, color, scale, font)
end
end
Server.lua
local puan = { }
exports["scoreboard"]:scoreboardAddColumn ( "leveltakip", root, 70, "Level")
addEventHandler("onResourceStart", resourceRoot,
function ( )
local file = xmlLoadFile("exprequired.xml")
for i, node in ipairs (xmlNodeGetChildren(file)) do
local gerekenpuan = tonumber(xmlNodeGetAttribute(node, "EXPRequired"))
table.insert(puan, gerekenpuan)
end
setTimer(function() scdevametsinmi = "evet" end, 1000, 1)
end)
addCommandHandler("komut",
function(player,cmd)
if ( hasObjectPermissionTo ( player, "function.banPlayer", true ) ) then
setElementData(player,"killerelement",player)
end
end)
addCommandHandler("levelbar",
function(player,cmd)
if getElementData(player,"levelbar") then
removeElementData(player,"levelbar")
else
setElementData(player,"levelbar",true)
end
end)
--[[
function collider ( collider )
kills = getElementData(collider,"öldürme")
if kills then
setElementData(collider,"öldürme",kills + 1)
else
setElementData(collider,"öldürme",1)
end
tpuan = getElementData(collider,"puan_level")
if tpuan and kills then
setElementData(collider,"puan_level",tpuan + 25*kills)
else
setElementData(collider,"puan_level",25)
end
end
addEvent( "vehicleCollision", true )
addEventHandler( "vehicleCollision", getRootElement(), collider )
]]--
addEventHandler("onPlayerVehicleEnter",root,
function()
removeElementData(source,"öldürme")
setElementData(source,"öldürme",0)
setElementData(source,"killerelement",nil)
end)
scdevametsinmi = "hayir"
addEventHandler("onElementDataChange", getRootElement(),
function (dataName)
if (getElementType(source) == "player") and (dataName == "puan_level") and not isGuestAccount ( getPlayerAccount(source) ) and scdevametsinmi == "evet" and getElementDimension(source) == 0 then
tpuan = getElementData(source,"puan_level") or 0
level19 = getElementData(source,"level_level") or 1
if level19 < 19 then
level = getElementData(source,"level_level") or 1
--outputChatBox("level 19 dan küçük")
else
level = 19
--outputChatBox("level 19 dan büyük")
end
gereken = puan[level]
if tpuan >= gereken then
if level19 < 19 then
newLvl = level+1
gereken_puan = puan[newLvl]
--outputChatBox("level 19 dan küçük-")
else
newLvl = level19+1
gereken_puan = puan[19]
--outputChatBox("level 19 dan büyük-")
end
if gereken_puan then
kalan = tpuan-gereken
--setElementData(source,"kalan_level",kalan)
setElementData(source,"level_level",newLvl)
setTimer(setElementData, 50, 1, source,"puan_level",kalan)
setElementData(source, "gereken_level", gereken_puan)
--triggerClientEvent(source, "onClientPlayerLevelUp", source, level, gereken_puan)
--triggerClientEvent(source, "takip", source, tpuan, gereken_puan)
else
setElementData(source, "gereken_level", gereken)
end
end
end
end)
addEventHandler("onPlayerChat",root,
function(msg)
if msg:find("level") and math.random(3) == 1 then
outputChatBox("#cc0000* Level barı kapatmak için... #ffffff/levelbar",source,0,0,0,true)
end
end)
addEventHandler("onResourceStart",getResourceRootElement(getThisResource()),
function()
getAllRankSB() --(thePlayer)
end)
addEventHandler("onPlayerLogin",root,
function()
getAllRankSB() --(source)
end)
function getAllRankSB()
local tableOrder = { }
for i, v in ipairs ( getAccounts ( ) ) do
table.insert (
tableOrder,
{
name = getAccountName(v),
data = getAccountData ( v, "level_level" )
}
)
end
table.sort (
tableOrder,
function ( a, b )
return ( tonumber ( a.data ) or 0 ) > ( tonumber ( b.data ) or 0 )
end
)
for i,player in pairs(getElementsByType("player")) do
if not (isGuestAccount(getPlayerAccount(player))) then
for i=1,#tableOrder do
if tableOrder[i].name == getAccountName(getPlayerAccount(player)) then
setElementData(player,"levelrank",i)
end
end
end
end
outputDebugString("Updating rank for all player")
end
addEventHandler("onPlayerWasted",root,function()
killer = getElementData(source,"killerelement")
if killer and isElement(killer) and killer ~= nil and not isPedDead ( killer ) then
kills = getElementData(killer,"öldürme")
tpuan = getElementData(killer,"puan_level")
if tpuan and kills then
setElementData(killer,"öldürme",kills + 1)
setElementData(killer,"puan_level",tpuan + 25*(kills + 1))
outputDebugString((kills + 1).."x "..(25*(kills + 1)).. "Puan | "..getPlayerName(killer):gsub('#%x%x%x%x%x%x', '').." adlı oyuncu "..getPlayerName(source):gsub('#%x%x%x%x%x%x', '').." adlı oyuncuyu öldürdü.")
triggerClientEvent(killer,"gorunurluk",killer,(kills + 1),(25*(kills + 1)),source)
--gorunurluk = true
--dxkills = (kills + 1)
--dxpuan = (25*(kills + 1))
--killername = killer
--setTimer(function() gorunurluk = false end, 4500, 1)
else
setElementData(killer,"öldürme",1)
setElementData(killer,"puan_level",25)
outputDebugString((1).."x "..(25).. "Puan | "..getPlayerName(killer):gsub('#%x%x%x%x%x%x', '').." adlı oyuncu "..getPlayerName(source):gsub('#%x%x%x%x%x%x', '').." adlı oyuncuyu öldürdü.")
triggerClientEvent(killer,"gorunurluk",killer,1,25,killer)
--gorunurluk = true
--dxkills = 1
--dxpuan = 25
--killername = killer
--setTimer(function() gorunurluk = false end, 4500, 1)
end
else
setElementData(source,"killerelement",nil)
end
end)
function kaydet()
tpuan = getElementData(source,"puan_level") or 0
level = getElementData(source,"level_level") or 1
gereken = getElementData(source,"gereken_level") or 0
ac = getPlayerAccount(source)
if not isGuestAccount ( ac ) then
setAccountData(ac,"puan_level",tpuan)
setAccountData(ac,"level_level",level)
setAccountData(ac,"gereken_level",gereken)
--outputChatBox("kaydet/"..tpuan.."/"..level.."/"..gereken)
end
end
addEventHandler("onPlayerQuit",root,kaydet)
addEventHandler("onPlayerLogout",root, function() cancelEvent() end)
--addCommandHandler("kaydet",kaydet)
addEventHandler("onPlayerLogin",root,
function()
ac = getPlayerAccount(source)
tpuan = getAccountData(ac,"puan_level") or 0
level = getAccountData(ac,"level_level") or 1
gereken = getAccountData(ac,"gereken_level") or 0
setElementData(source,"level_level",level)
setElementData(source,"puan_level",tpuan)
setElementData(source,"gereken_level",gereken)
setTimer(function() scdevametsinmi = "evet" end, 1000, 1)
--outputChatBox("yükle/"..tpuan.."/"..level.."/"..gereken)
end)