Master_MTA Posted October 28, 2016 Share Posted October 28, 2016 (edited) السلام عليكم ورحمة الله وبركاته اخواني ابي اعرف وش الغلط بهذي الاكواد انا جربته مره يزبط ومره لا بمزاج شي غريب function sortCompareFunction ( s1, s2 ) if type ( s1 ) == "table" and type ( s2 ) == "table" then s1, s2 = s1.name, s2.name; end s1, s2 = s1:lower ( ), s2:lower( ); if s1 == s2 then return false end local byte1, byte2 = string.byte ( s1:sub ( 1, 1 ) ), string.byte ( s2:sub ( 1, 1 ) ); if not byte1 then return true elseif not byte2 then return false elseif byte1 < byte2 then return true elseif byte1 == byte2 then return sortCompareFunction ( s1:sub ( 2 ), s2:sub ( 2 ) ); else return false end end function getAliveGuys ( mode ) if not mode then return end if mode == 1 then pAlive = { }; for _, player in ipairs ( getElementsByType ( "player" ) ) do if ( getElementData ( player, "state" ) == "alive" ) then table.insert ( pAlive, player ); end end return pAlive; elseif mode == 2 then return #pAlive; elseif mode == 3 then if pAlive then pAlive = nil; end return false end end function getDeadGuys ( ) local pDead = 0 for _, player in ipairs ( getElementsByType ( "player" ) ) do if getElementData ( player, "state" ) == "dead" then pDead = pDead + 1; end end return pDead; end function giveMoneyWinDie ( ) local account = getPlayerAccount ( source ); local playersAlive = getAliveGuys ( 2 ); local playersDead = getDeadGuys ( ); local pAll = playersAlive + playersDead; local checkYourPos = pAll - playersDead; local pos = nil; if tonumber ( checkYourPos ) == 1 then pos = 1 else pos = checkYourPos+1 ; end if tonumber ( checkYourPos ) == 2 then pos = 2; end if pos == 1 or pos == 21 or pos == 31 then posName = "st"; elseif pos == 2 or pos == 22 or pos == 32 then posName = "nd"; elseif pos == 3 or pos == 23 or pos == 33 then posName = "rd"; else posName = "th"; end if not getElementData ( source, "gotMoney" ) then local money = math.ceil ( getPlayerCount ( ) * 50 / pos ); givePlayerMoney ( source, money ); outputChatBox ( "* You were #abcdef[#ff0000" .. pos .. posName .. "#abcdef]#ffffff and #abcdefearned #ffffff" .. money .. "#00ff00$!", source, 255, 255, 255, true ); setElementData ( source, "gotMoney", true ); if account then setAccountData ( account, "money", tostring ( getPlayerMoney ( source ) ) ); end end end addEventHandler ( "onPlayerWasted", root , giveMoneyWinDie ) واسف لاتعابكم Edited October 28, 2016 by Master_MTA Link to comment
Master_MTA Posted October 28, 2016 Author Share Posted October 28, 2016 1 hour ago, Master_MTA said: السلام عليكم ورحمة الله وبركاته اخواني ابي اعرف وش الغلط بهذي الاكواد انا جربته مره يزبط ومره لا بمزاج شي غريب function sortCompareFunction ( s1, s2 ) if type ( s1 ) == "table" and type ( s2 ) == "table" then s1, s2 = s1.name, s2.name; end s1, s2 = s1:lower ( ), s2:lower( ); if s1 == s2 then return false end local byte1, byte2 = string.byte ( s1:sub ( 1, 1 ) ), string.byte ( s2:sub ( 1, 1 ) ); if not byte1 then return true elseif not byte2 then return false elseif byte1 < byte2 then return true elseif byte1 == byte2 then return sortCompareFunction ( s1:sub ( 2 ), s2:sub ( 2 ) ); else return false end end function getAliveGuys ( mode ) if not mode then return end if mode == 1 then pAlive = { }; for _, player in ipairs ( getElementsByType ( "player" ) ) do if ( getElementData ( player, "state" ) == "alive" ) then table.insert ( pAlive, player ); end end return pAlive; elseif mode == 2 then return #pAlive; elseif mode == 3 then if pAlive then pAlive = nil; end return false end end function getDeadGuys ( ) local pDead = 0 for _, player in ipairs ( getElementsByType ( "player" ) ) do if getElementData ( player, "state" ) == "dead" then pDead = pDead + 1; end end return pDead; end function giveMoneyWinDie ( ) local account = getPlayerAccount ( source ); local playersAlive = getAliveGuys ( 2 ); local playersDead = getDeadGuys ( ); local pAll = playersAlive + playersDead; local checkYourPos = pAll - playersDead; local pos = nil; if tonumber ( checkYourPos ) == 1 then pos = 1 else pos = checkYourPos+1 ; end if tonumber ( checkYourPos ) == 2 then pos = 2; end if pos == 1 or pos == 21 or pos == 31 then posName = "st"; elseif pos == 2 or pos == 22 or pos == 32 then posName = "nd"; elseif pos == 3 or pos == 23 or pos == 33 then posName = "rd"; else posName = "th"; end if not getElementData ( source, "gotMoney" ) then local money = math.ceil ( getPlayerCount ( ) * 50 / pos ); givePlayerMoney ( source, money ); outputChatBox ( "* You were #abcdef[#ff0000" .. pos .. posName .. "#abcdef]#ffffff and #abcdefearned #ffffff" .. money .. "#00ff00$!", source, 255, 255, 255, true ); setElementData ( source, "gotMoney", true ); if account then setAccountData ( account, "money", tostring ( getPlayerMoney ( source ) ) ); end end end addEventHandler ( "onPlayerWasted", root , giveMoneyWinDie ) واسف لاتعابكم بانتظار الرد للاسف مافي رد الى الآن شاركني برايك ولو معك احتماليه Link to comment
Mr.CoR Posted October 28, 2016 Share Posted October 28, 2016 صعب اننا نقعد ندور لك على غلط في 82 سطر برمجي ف ادخل للعبه واكتب اللمر التالي في اف 8 debugscript 3 بيطلع لك كلام بأسفل وسط الشاشه صوره وارفع الصوره على موقع رفع واطرح الصوره هنا وبنفيدك بإذن الله 1 Link to comment
</Mr.Tn6eL> Posted October 29, 2016 Share Posted October 29, 2016 الغلط هنا واضح function getAliveGuys ( mode ) if not mode then return end if mode == 1 then -- يتم التحقق من ان المود 1 pAlive = { }; -- يتم تعريف المتغير عالميا وليس محلي for _, player in ipairs ( getElementsByType ( "player" ) ) do if ( getElementData ( player, "state" ) == "alive" ) then table.insert ( pAlive, player ); end end return pAlive; elseif mode == 2 then return #pAlive; -- اذ تنفذ الشرط الأول صحيح لكن اذ لم يتنفذ يعطيك غلط elseif mode == 3 then if pAlive then pAlive = nil; end return false end end Link to comment
Master_MTA Posted October 29, 2016 Author Share Posted October 29, 2016 On ٢٩/١٠/٢٠١٦ at 0:58 PM, said: الغلط هنا واضح function getAliveGuys ( mode ) if not mode then return end if mode == 1 then -- يتم التحقق من ان المود 1 pAlive = { }; -- يتم تعريف المتغير عالميا وليس محلي for _, player in ipairs ( getElementsByType ( "player" ) ) do if ( getElementData ( player, "state" ) == "alive" ) then table.insert ( pAlive, player ); end end return pAlive; elseif mode == 2 then return #pAlive; -- اذ تنفذ الشرط الأول صحيح لكن اذ لم يتنفذ يعطيك غلط elseif mode == 3 then if pAlive then pAlive = nil; end return false end end On ٢٨/١٠/٢٠١٦ at 10:50 PM, Mr.CoR said: صعب اننا نقعد ندور لك على غلط في 82 سطر برمجي ف ادخل للعبه واكتب اللمر التالي في اف 8 debugscript 3 بيطلع لك كلام بأسفل وسط الشاشه صوره وارفع الصوره على موقع رفع واطرح الصوره هنا وبنفيدك بإذن الله يعطيكم الف عافيه اثنينكم وما يحرمنا منكم مشكورين زبط زي ما قال الاخ تنطيل #Edit: معليش اخوي اسحب كلامي للاسف ما زبط نفس المشكله يعطيني الثاني وانا ميت الثالث #Edit: اخواني مافي رد للان الكود لم يزبط Link to comment
Master_MTA Posted October 31, 2016 Author Share Posted October 31, 2016 فايدة الكود هو ان لما اللاعب يفوز في سيرفر شوتر هذا الكود يعطيه فلوس حسب منزلته لكن الكود في خطا ما يحسب المنزله صح ابدا الا اذا كنت لوحدي في السيرفر Link to comment
3NAD Posted October 31, 2016 Share Posted October 31, 2016 الكود اللي فوق كامل ؟ اذا لا , اطرح الكامل Link to comment
Master_MTA Posted October 31, 2016 Author Share Posted October 31, 2016 اخي الكود موجود بداخل شوب ماب لو تبي اطرح الشوب ماب كامل مو مشكله لكن هذا كود مكسب اللاعبين فقط كامل يب Link to comment
3NAD Posted October 31, 2016 Share Posted October 31, 2016 (edited) ليش شكيت انه ناقص ؟ لأن بالكود هذا local playersAlive = getAliveGuys ( 2 ); --سطر 56 دايماً يروح للقيمة نفسها اللي هي elseif mode == 2 then return #pAlive; -- سطر 34 pAlive والتيبل ذا يساوي 1 mode مايجيب العدد الا اذا كان ال if mode == 1 then pAlive = { }; for _, player in ipairs ( getElementsByType ( "player" ) ) do if ( getElementData ( player, "state" ) == "alive" ) then table.insert ( pAlive, player ); end end return pAlive; --ب سطر 26 -- اتمنى وصلت الفكرة Edited October 31, 2016 by 3NAD Link to comment
Master_MTA Posted October 31, 2016 Author Share Posted October 31, 2016 2 minutes ago, 3NAD said: ليش شكيت انه ناقص ؟ لأن بالكود هذا [lua]local playersAlive = getAliveGuys ( 2 );[/lua] سطر 56 دايماً يروح للقيمة نفسها اللي هي [lua] elseif mode == 2 then return #pAlive; [/lua] سطر 34 pAlive والتيبل ذا mode == 1 مايجيب العدد الا اذا كان ال ب سطر 26 -- اتمنى وصلت الفكرة اخوي بالنسبه الاولى الصراحه ما فهمتها اما بالنسبه للثانيه فهمتها Link to comment
3NAD Posted October 31, 2016 Share Posted October 31, 2016 راجع الرد مرة ثانية لأني كتبت الرد على اصدار المنتدى القديم [lua] كود Link to comment
Master_MTA Posted October 31, 2016 Author Share Posted October 31, 2016 اخي فهمت بس الحين وش ناقص ؟ انا شايف الكود مافيه مشاكل فقط احتاج اغير 1 الى 32 او حسب اعداد السيرفر Link to comment
3NAD Posted October 31, 2016 Share Posted October 31, 2016 جرب كذا function getAliveGuys ( mode ) if not mode then return end pAlive = { }; for _, player in ipairs ( getElementsByType ( "player" ) ) do if ( getElementData ( player, "state" ) == "alive" ) then table.insert ( pAlive, player ); end end if mode == 1 then return pAlive; elseif mode == 2 then return #pAlive; elseif mode == 3 then if pAlive then pAlive = nil; end return false end end Link to comment
Master_MTA Posted November 1, 2016 Author Share Posted November 1, 2016 21 hours ago, 3NAD said: جرب كذا function getAliveGuys ( mode ) if not mode then return end pAlive = { }; for _, player in ipairs ( getElementsByType ( "player" ) ) do if ( getElementData ( player, "state" ) == "alive" ) then table.insert ( pAlive, player ); end end if mode == 1 then return pAlive; elseif mode == 2 then return #pAlive; elseif mode == 3 then if pAlive then pAlive = nil; end return false end end اخي الحين عرفت وش الخطا وهو الايفينت هذا الايفينت اذا اللاعب مات لكن اكذا ما يحسب الاول ويحسب الثاني الاول فانا ابي اول ما اللاعب يموت وايضا اول ما السباق ينتهي او ماب الشوتر Link to comment
Master_MTA Posted November 1, 2016 Author Share Posted November 1, 2016 مشكور اخوي زبط بس الان المشكله في هذا لازم اللاعب يموت وانا ما ابيه يموت بالعكس ابيه يحسبه function giveMoneyWinDie ( ) local account = getPlayerAccount ( source ); local playersAlive = getAliveGuys ( 2 ); local playersDead = getDeadGuys ( ); local pAll = playersAlive + playersDead; local checkYourPos = pAll - playersDead; local pos = nil; if tonumber ( checkYourPos ) == 1 then pos = 1 else pos = checkYourPos+1 ; end if tonumber ( checkYourPos ) == 2 then pos = 2; end if pos == 1 or pos == 21 or pos == 31 then posName = "st"; elseif pos == 2 or pos == 22 or pos == 32 then posName = "nd"; elseif pos == 3 or pos == 23 or pos == 33 then posName = "rd"; else posName = "th"; end if not getElementData ( source, "gotMoney" ) then local money = math.ceil ( getPlayerCount ( ) * 50 / pos ); givePlayerMoney ( source, money ); outputChatBox ( "* You were #abcdef[#ff0000" .. pos .. posName .. "#abcdef]#ffffff and #abcdefearned #ffffff" .. money .. "#00ff00$!", source, 255, 255, 255, true ); setElementData ( source, "gotMoney", true ); if account then setAccountData ( account, "money", tostring ( getPlayerMoney ( source ) ) ); end end end addEventHandler ( "onPlayerWasted", root , giveMoneyWinDie ) Link to comment
Abdul KariM Posted November 1, 2016 Share Posted November 1, 2016 هذا لانك حاط السورس والسورس الاعب الي مات فـ عرف بارتمر الاتاكر واستبدلها بالسورس راجع "onPlayerWasted" Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now