Jump to content

طلب تصحيح كود :x


XPro

Recommended Posts

السلام عليكم و رحمة الله

الكود هو انو يجيب اسم الاعب الموجود في قروب الاسل و يحط الاسم في لوحة بدال لابل

ابي الاسم الكل يشوفوه

بس مشكلتي ان الاسم يقدر يشوفو الي موجود حسابو في قروب الاسل بس

Server

addEvent("getstats", true) 
addEventHandler ("getstats", root, 
function () 
    if ( aclGetGroup("BestPlayer") ) then 
        if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("BestPlayer")) then 
            triggerClientEvent(source, "setstats", getRootElement(), getPlayerName(source)) 
        end 
    end 
end ) 

Client

player = getLocalPlayer() 
  
addEvent ( "setstats", true ) 
addEventHandler ( "setstats", root, 
function ( playerName ) 
    guiSetText( BestAr, playerName:gsub("#%x%x%x%x%x%x", "")); 
    guiSetText( BestEn, playerName:gsub("#%x%x%x%x%x%x", "")); 
    guiSetText( BestPr, playerName:gsub("#%x%x%x%x%x%x", "")); 
end ) 

انا شلت اضافاتي جربت سويت ترايقر ثاني جربت الالمنت داتا بس ما ضبطو

Link to comment

لاعب محدد

اصلا قروب مسويه لشخص بس لا اكثر

ابي اجيب اسم الشخص ذا احطو في النافذة

بس المشكلة في كودي انو كل شي تمام ما عدا ان الاسم في النافذة يقدر يشوفه الي حسابو في القروب

بس لو ضغطت انا مكان الاسم في النافذة فارغ على عكسو هو

Link to comment

ما اقدر بس اسوي كذا مثلا

addEvent("getstats", true) 
addEventHandler ("getstats", root, 
function () 
    if ( aclGetGroup("BestPlayer") ) then 
        if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("BestPlayer")) then 
            triggerClientEvent(source, "setstats", getRootElement(), getPlayerName(source)) 
else 
--هنا اخلي الاعبين الارين كلهم يشوفو بس وش مكتوب عادي كيف يكون الترايقر؟ 
        end 
    end 
end ) 

Link to comment

السالفة انه كله خطا .. لان التحقق من اللاعب اللي فتح اللوحة او اللي رسلت له التريقر ..

وافترض انه اللاعب مو موجود بالسيرفر كيف راح تجيبه .. سوي سكل او في طريقة ثانية

aclGroupListObjects لو مو مهم انكـ تجيب اسمه .. تقدر تجيب اسم حسابه

Link to comment

اسهل طريقة استخدم Serial Data

بحيث وقت تسو المسابقة هذي ومثلا اللاعب يفوز تحط له السريال الداتا وكذا كل ما احد يفوز تحطها للاعب اللي يفوز

واي لاعب يوم يفتح اللاعب تجلبها بس .

setSerialData

* واضحة من الاسم

setSerialData(serial , key , value) 

function setSerialData(serial,key,value) 
 if( value and type(serial) == "string") then 
  setElementData(root,serial.."&"..key,value) 
  end 
end 

getSerialData

getSerialData(serial , key) 

function getSerialData(serial,key) 
 if ( key and type(serial) == "string") then 
  value = getElementData(root,serial.."&"..key) 
 end 
 return value 
end 

Link to comment

ابي تعديل على هذا الكود ضبطتو شوي قبل قليل

Server

addEvent("getstats", true) 
addEventHandler ("getstats", root, 
function () 
    if ( aclGetGroup("BestPlayer") ) then 
        if isObjectInACLGroup("user."..getAccountName(getPlayerAccount(source)), aclGetGroup("BestPlayer")) then 
        local Name = getPlayerName (source) 
        setElementData ( resourceRoot, "TheName", Name) 
            triggerClientEvent(getRootElement(), "setstats",getRootElement(), getElementData ( resourceRoot, "TheName", Name)) 
        end 
    end 
end ) 

Client

addEvent ( "setstats", true ) 
addEventHandler ( "setstats", root, 
function ( ) 
    guiSetText( BestAr, "".. getElementData ( resourceRoot, "TheName", Name) .."") 
    guiSetText( BestEn, "".. getElementData ( resourceRoot, "TheName", Name) .."") 
    guiSetText( BestPr, "".. getElementData ( resourceRoot, "TheName", Name) .."") 
end ) 
  

انا مسوي لوحة اللوحة ذي في وسطها لابل

في قروب في الاسل اسمو افضل لاعب ابي اجيب اسم الاعب في القروب ذا وا حطو في الابل

للحين كل شي تمام

بس المشكلة انو ما ينكتب شي في اللوحة حتى يفتح الي في قروب الاسل اللوحة مره حتى تنكتب للكل

-

انا ابي بس لما ينكتب الاسم اذا طلع و دخل الاعب يلقاه

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

Link to comment

جرب كذا:

Server side #

addEvent ("getstats", true) 
addEventHandler ("getstats", root,  
  function () 
    if not isGuestAccount (getPlayerAccount (source)) then 
      if isObjectInACLGroup ("user." .. getAccountName (getPlayerAccount (source)), aclGetGroup ("BestPlayer")) then 
        setElementData (resourceRoot, "TheName", getPlayerName (source)) 
      end 
      triggerClientEvent (root, "setstats", source, getElementData (resourceRoot, "TheName")) 
    end 
  end 
) 

Client side #

addEvent ( "setstats", true ) 
addEventHandler ( "setstats", root,  
  function (name) 
    guiSetText (BestAr, name) 
    guiSetText (BestEn, name) 
    guiSetText (BestPr, name) 
  end 
) 
Link to comment

كل شي تمام بس المشكلة

نفترض انا الي في قروب افضل لاعب ما يظهر اسمي في اللوحة

الا اذا فتحت اللوحة و قفلتها

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

يعني المشكلة المفروض الاسم يضهر للاعب في اي وقت عند فتح اللوحة

نفس مشكلت كودي

Link to comment

المشكلة انا عارفها لازم الالمنت داتا و الترايقر ما يكونو في نفس الفنكشن

لان ذا الترايقر مخصص عند فتح اللوحة يعني لازم اسوي المنت دات فوق بعدين

اسوي ترايقر و سحب الالمنت داتا في كود ثاني تحت اذا فاهمني

بس انا ماني عارف احلها

Link to comment

انا الحين في قروب افضل لاعب

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

لو ضغطت انت اف7 ما يجيك الاسم في اللوحة

لو ضغطت انا اف7 يصير يجيك عادي

يعني المشكلة مو لازم تسناني انا اضغط حتى اضبطها لازم تضغط وقت تبي تلقى الاسم

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