Jump to content

[Help] Level System


[GD]sXe

Recommended Posts

Hi guys help level system,1,onPlayerWasted not give exp help me 2, and dxdrawrectangle write exp amount e.g Exp %80/100 pgzVWJ.jpg

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) 
  

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