Jump to content

طلب فنكشات


XPro

Recommended Posts

طلب فنكشات

اذا الاعب قتل بسنايبر تسجل في الالمنت دات

بعذين راح اسوي نافذة تجيب فيها صاحب اكبر قتلات بسنايبر

يعني دائما الاكبر لو كنت انا قاتل الف تجيب اسمي لو تجاوزني شخص بقتل بسلاح السنايبر فقط يجيبو اسمه و يتحط بدال اسمي في النافذة ذي

GUI

و بعدين راح اسوي اسلحة اخرى

Link to comment

تحتاج نظامين

الأول إدخال

وهي لما يقتل الاعب بسنايبر يعطيه داتا

"onPlayerWasted" 
setElementData 
getElementData 

الثانية إخراج

وهي انك تجيب كل الاعبين وتحطهم بالجدول مع الداتا

getElementsByType 
getElementData 
table.insert 

وخارج اللوب نسوي ترتيب للجدول حسب الأكثرية

table.sort 

ثم نضيف الاعبين بالقائمة

نسوي لوب لجميع محتويات الجدول اللي ضفناه

ثم نضيفهم للقائمة

guiGridListAddRow 
guiGridListSetItemText 

اذ كنت تبي تحفظ البيانات استخدم الاكوانت داتا(بيانات الحساب)ء

setAccountData 
"onPlayerLogin" 
getAccountData 
setElementData -- هنا نحط للاعب الداتا بعد ماستخرجناها من الاكوانت داتا 

اذ كنت ماتعرف بالجداول شي تابع الشرح

viewtopic.php?f=164&t=89424

Link to comment
لا انا ما ابي اجيب كل الاعبين

مثلا تكون في النافذة صورة ديقل يسار

وعلى اليمين اسم لاب الذي يملك اكبر عدد قتل بديقل بس

سهلة

جيب كل الاعبين وحطهم بجدول مع الداتا

getElementsByType 
getElementData 
table.insert 

وخارج اللوب نسوي ترتيب للجدول حسب الأكثرية

table.sort 

ثم تجيب أول لاعب

Table[1] 
Link to comment

طلب تصحيح

بما اني ما اسخدمت الجداول ابدا من قبل ذا وش فهمت اسويه

addEventHandler("onPlayerWasted",getRootElement(), 
function ( ammo, attacker, weapon, bodypart ) 
    if attacker then 
        if ( attacker ~= source and getElementType ( attacker ) == "player" ) then 
            if ( getWeaponNameFromID  ( attacker ) == 34 ) then 
            setElementData ( attacker, "kills" ) 
                end 
            end 
        end 
    end 
) 
  
  
function sniperkill() 
Snipers = {} 
    local players = getElementsByType("player") 
    for i,player in ipairs (players) do 
        local SniperData = getElementData(player,"kills") 
        table.insert(Snipers, {SniperData}) 
    end 
    end 
  
    function sortTable(v1, v2) 
    return #(tostring(v1) or "") > #(tostring(v2) or "" ) 
end 
table.sort(Snipers, sortTable) 
  
for k=1,#Snipers do 
    print(Snipers[k]) 
end 

ارجو تصحيح

Link to comment

مشكوور كلاسيك موضوع مشابه تقريبا

وعلى حسب ما انا شايف كودي مو غلط كبير يعني اخطاء في الترتيب و كذا

ذا لاني اول مره استخدم جداول مشكورين على اي حال

Link to comment

ممكن تصحيح هذا الكود

local snipers = {} -- snipers table 
  
addEventHandler("onPlayerWasted",getRootElement(), 
    function ( ammo, attacker, weapon, bodypart ) 
        if attacker and getElementType ( attacker ) == "player" and attacker ~= source then 
            if tonumber(weapon) == 34 then 
                snipers[attacker] = (snipers[attacker] or 0) + 1 
            end 
        end 
    end 
) 
  
-- Table sort 
  
function topSniper() 
    sortedTopSniper = {} 
    for a, b in pairs(snipers) do 
        table.insert(sortedTopSniper, {getPlayerName(a), b}) 
    end 
    table.sort(sortedTopSniper, function(a,b) return a[2] > b[2] end) 
-- 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...