Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 15/09/17 in all areas

  1. if ( guiGridListGetRowCount ( gridlist ) == 0 ) then
    1 point
  2. فكرة حلوه والله عجبتني مبدع 1+
    1 point
  3. طريقة سورس ماتفرق عن طريقتك كلهم نتيجتهم واحدة ..
    1 point
  4. For duck's sake, this will take me days to edit ._. But I can explain what you have to do So, here goes: You have this at top: local sX,sY = guiGetScreenSize() Then you have something like this a looot of times: dxDrawImage(loginX+sX*0.02-375,loginY+sY*0.275+100,sX*0.05,sY*0.04,"loginImage/switchBackground.png",0,0,0,tocolor(255,255,255,loginData.loginAlpha)) Every variable has a number value. So for example, the value of 'loginX' is 'sX*0.6'. But the value of 'sX' is 1366 since that's your X resolution. So it will look like this: loginX = 1366*0.6 which is same as loginX = 819.6 You just need to replace all words with their values so it will become so much easier to understand everything (it's so for me atleast). So now you need to make the 'loginX' be same on all resolutions. Make like this: local sX, sY = guiGetScreenSize() local x, y = sX/1366, sY/768 and now 'loginX' will look like this: loginX = 819.6*x You need to convert everything like this to fit it on any resolution. I never liked working with words/variables instead of the actual values so for me replacing each variable with it's (calculated) number value is much easier. Good luck and be prepared to waste a lot of time on this since your script has so many variables in the dxText lmao. Pro Tip: If you're tired - stop, play MTA, watch a movie, do something else. When we're tired we make silly mistakes which are (in your case) really hard to spot afterwards as there is a lot of code. Better fix it for a few weeks but not have problems than to fix it for 3 days and be full of errors that are super hard to trace. That line I used as example will look like this: local sX, sY = guiGetScreenSize() local x, y = sX/1366, sY/768 dxDrawImage(471.92*x, 503.2*y, 68.3*x, 30.72*y, "loginImage/switchBackground.png", 0, 0, 0, tocolor(255, 255, 255, loginData.loginAlpha))
    1 point
  5. The amount of downloads dosen't mean it's legit. Look at pirated-copy torrents, they can have millions of downloads - still illegal.
    1 point
  6. local sX,sY = guiGetScreenSize() local loginData = { loginEdit = false, passwordEdit = false, confirmEdit = false, loginButton = false, registerButton = false, guestButton = false, loginState = "login", loginTick = 0, animState = false, animTick = 0, backgroundAlpha = 255, backgroundAnim = false, font = "default-bold", fontScale = false, colorData = {0,176,255}, rememberState = false, switchTick = 0, switchColor = {255,0,0}, switchPosition = 0, switchHover = false, loginX = sX*0.6, registerX = sX, messagesData = { }, messageTick = 0, } function onLoginResourceStart() loginData.loginEdit = createElement("dxEdit") loginData.passwordEdit = createElement("dxEdit") loginData.confirmEdit = createElement("dxEdit") loginData.loginButton = createElement("dxButton") loginData.registerButton = createElement("dxButton") loginData.guestButton = createElement("dxButton") setElementData(localPlayer,"loginState",false,false) triggerServerEvent("onClientWantCheckHisState",localPlayer) end addEventHandler("onClientResourceStart",resourceRoot,onLoginResourceStart) function renderLoginInterface() loginData.switchHover = false local tick = getTickCount() - loginData.animTick local progress = math.min(tick/1000,1) if loginData.animState then loginData.loginAlpha = interpolateBetween(loginData.loginAlpha,0,0,255,0,0,progress,"Linear") else loginData.loginAlpha = interpolateBetween(loginData.loginAlpha,0,0,0,0,0,progress,"Linear") loginData.backgroundAlpha = loginData.loginAlpha end dxDrawImage(0,0,sX,sY,"loginImage/background.jpg",0,0,0,tocolor(255,255,255,loginData.backgroundAlpha)) dxDrawImage(0,sY*0.15,sX*0.3,sX*0.15,"loginImage/logo.png",0,0,0,tocolor(255,255,255,loginData.loginAlpha)) local shadowScale = sX*0.002 local tick = getTickCount() - loginData.loginTick local progress = math.min(tick/500,1) if loginData.loginState == "register" then loginData.loginX = interpolateBetween(loginData.loginX,0,0,sX,0,0,progress,"Linear") if progress >= 0.95 then local progress = math.min(math.abs(tick-450)/500,1) loginData.registerX = interpolateBetween(loginData.registerX,0,0,sX*0.6,0,0,progress,"Linear") end elseif loginData.loginState == "login" then loginData.registerX = interpolateBetween(loginData.registerX,0,0,sX,0,0,progress,"Linear") if progress >= 0.95 then local progress = math.min(math.abs(tick-450)/500,1) loginData.loginX = interpolateBetween(loginData.loginX,0,0,sX*0.6,0,0,progress,"Linear") end end local loginX = loginData.loginX local loginY = sY*0.25 local registerX = loginData.registerX if loginData.loginX < sX*0.99 then dxDrawText("Login",loginX+shadowScale-470,loginY+shadowScale+100,loginX+sX*0.3-470,loginY+sY*0.15+100,tocolor(0,0,0,loginData.loginAlpha),loginData.fontScale*0.6,loginData.font,"right","center",true,false,false) dxDrawText("Login",loginX-470,loginY+100,loginX+sX*0.3-470,loginY+sY*0.15+100,tocolor(255,255,255,loginData.loginAlpha),loginData.fontScale*0.6,loginData.font,"right","center",true,false,false) dxLibCreateEdit(loginData.loginEdit,loginX-350,loginY+sY*0.15+100,sX*0.32,sY*0.04,"Your username","person",20,20,20,loginData.loginAlpha,false,false) dxLibCreateEdit(loginData.passwordEdit,loginX-350,loginY+sY*0.2+100,sX*0.32,sY*0.04,"Your password","password",20,20,20,loginData.loginAlpha,false,true) dxLibCreateButton(loginData.loginButton,loginX+sX*0.2-400,loginY+sY*0.275+100,sX*0.15,sY*0.06,"Login now!",loginData.fontScale*0.19,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false) dxLibCreateButton(loginData.registerButton,loginX+sX*0.02-350,loginY+sY*0.32+130,sX*0.11,sY*0.055,"Register",loginData.fontScale*0.17,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false) dxLibCreateButton(loginData.guestButton,loginX+sX*0.17-350,loginY+sY*0.32+130,sX*0.14,sY*0.055,"Join as guest...",loginData.fontScale*0.17,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false) dxDrawText("OR",loginX+sX*0.12125-350,loginY+sY*0.32+160,loginX+sX*0.17,loginY+sY*0.355+sX*0.00125,tocolor(0,0,0,loginData.loginAlpha),loginData.fontScale*0.08,loginData.font,"center","center",true,false,false) dxDrawText("OR",loginX+sX*0.12-350,loginY+sY*0.32+160,loginX+sX*0.17,loginY+sY*0.355,tocolor(255,255,255,loginData.loginAlpha),loginData.fontScale*0.08,loginData.font,"center","center",true,false,false) local tick = getTickCount() - loginData.switchTick local progress = math.min(tick/500,1) if loginData.rememberState then loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3] = interpolateBetween(loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3],0,255,0,progress,"Linear") loginData.switchPosition = interpolateBetween(loginData.switchPosition,0,0,sX*0.041-sY*0.03,0,0,progress,"Linear") else loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3] = interpolateBetween(loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3],255,0,0,progress,"Linear") loginData.switchPosition = interpolateBetween(loginData.switchPosition,0,0,0,0,0,progress,"Linear") end local switchAlpha = loginData.loginAlpha if isCursorHover(loginX+sX*0.02-375,loginY+sY*0.275+100,sX*0.17,sY*0.04) then switchAlpha = switchAlpha * 0.75 loginData.switchHover = true end dxDrawImage(loginX+sX*0.02-375,loginY+sY*0.275+100,sX*0.05,sY*0.04,"loginImage/switchBackground.png",0,0,0,tocolor(255,255,255,loginData.loginAlpha)) dxDrawImage(loginX+sX*0.02-375,loginY+sY*0.275+100,sX*0.05,sY*0.04,"loginImage/switchCenter.png",0,0,0,tocolor(loginData.switchColor[1],loginData.switchColor[2],loginData.switchColor[3],switchAlpha)) dxDrawImage(loginX+sX*0.023-375+loginData.switchPosition,loginY+sY*0.28+100,sY*0.03,sY*0.03,"loginImage/switchSlide.png",0,0,0,tocolor(255,255,255,switchAlpha)) dxDrawText("Remember password?",loginX+sX*0.0706-370,loginY+sY*0.275+100+sX*0.0012,loginX+sX*0.19-370,loginY+sY*0.315+100,tocolor(0,0,0,switchAlpha),loginData.fontScale*0.1,loginData.font,"left","center",true,false,false) dxDrawText("Remember password?",loginX+sX*0.07-370,loginY+sY*0.275+100,loginX+sX*0.19-370,loginY+sY*0.315+100,tocolor(255,255,255,switchAlpha),loginData.fontScale*0.1,loginData.font,"left","center",true,false,false) end if registerX < sX*0.99 then local loginX = registerX dxDrawText("Register",loginX+shadowScale-415,loginY+shadowScale+100,loginX+sX*0.3-415,loginY+sY*0.15+100,tocolor(0,0,0,loginData.loginAlpha),loginData.fontScale*0.6,loginData.font,"right","center",true,false,false) dxDrawText("Register",loginX-415,loginY+100,loginX+sX*0.3-415,loginY+sY*0.15+100,tocolor(255,255,255,loginData.loginAlpha),loginData.fontScale*0.6,loginData.font,"right","center",true,false,false) dxLibCreateEdit(loginData.loginEdit,loginX-350,loginY+sY*0.15+100,sX*0.32,sY*0.04,"Type username","person",20,20,20,loginData.loginAlpha,false,false) dxLibCreateEdit(loginData.passwordEdit,loginX-350,loginY+sY*0.2+100,sX*0.32,sY*0.04,"Type password","password",20,20,20,loginData.loginAlpha,false,true) dxLibCreateEdit(loginData.confirmEdit,loginX-350,loginY+sY*0.25+100,sX*0.32,sY*0.04,"Confirm your password","password",20,20,20,loginData.loginAlpha,false,true) dxLibCreateButton(loginData.loginButton,loginX+sX*0.02-350,loginY+sY*0.31+100,sX*0.2,sY*0.07,"Register new account!",loginData.fontScale*0.2,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false) dxLibCreateButton(loginData.registerButton,loginX+sX*0.23-350,loginY+sY*0.31+100,sX*0.07,sY*0.07,"Back",loginData.fontScale*0.2,loginData.colorData[1],loginData.colorData[2],loginData.colorData[3],220,220,220,loginData.loginAlpha,false,false) end end function onClientRegister() loginData.loginState = "login" dxLibEditSetText(loginData.confirmEdit,"") dxLibEditSetText(loginData.passwordEdit,"") dxLibEditSetText(loginData.loginEdit,"") loginData.loginTick = getTickCount() end addEvent("onClientSuccessfullyRegisterNewAccount",true) addEventHandler("onClientSuccessfullyRegisterNewAccount",getRootElement(),onClientRegister) function openLogin(colorCode) loginData.loginState = "login" local resource = getResourceFromName("race") if resource then loginData.font,loginData.fontScale,loginData.colorData = call(resource,"getRaceSettings") loginData.font = dxCreateFont(":race/common/race_font.ttf",sY/20,true) or "default-bold" if not loginData.fontScale then loginData.fontScale = sY/100 end if not loginData.colorData then loginData.colorData = {0,176,255} end end if colorCode then local r,g,b = getColorFromString(colorCode) if r and g and b then loginData.colorData = {r,g,b} end end dxLib.font = loginData.font dxLibCreateEdit(loginData.loginEdit,0,0,sX*0.1,sY*0.04,"Your username","person",20,20,20,loginData.loginAlpha,false,false) dxLibCreateEdit(loginData.passwordEdit,0,0,sX*0.1,sY*0.04,"Your password","password",20,20,20,loginData.loginAlpha,false,true) loginData.animState = true loginData.animTick = getTickCount() loginData.loginAlpha = 0 loginData.backgroundAlpha = 255 showChat(false) showCursor(true) addEventHandler("onClientRender",getRootElement(),renderLoginInterface) addEventHandler("onClientRender",getRootElement(),renderLoginMessages) loadXMLData() setElementData(localPlayer,"loginState",true,false) end addEvent("onServerWantIniteteLoginPanel",true) addEventHandler("onServerWantIniteteLoginPanel",getRootElement(),openLogin) function closeLogin() loginData.animState = false loginData.animTick = getTickCount() showChat(true) showCursor(false) triggerEvent("onLoginPanelStopRenderInterface",getRootElement()) setElementData(localPlayer,"loginState",false,false) end addEvent("onClientSuccessfullyLogIn",true) addEventHandler("onClientSuccessfullyLogIn",getRootElement(),closeLogin) function addLoginMessage(message,type) table.insert(loginData.messagesData,{message,type or "confirm",getTickCount(),dxGetTextWidth(message,loginData.fontScale*0.08,loginData.font)+sX*0.01,0,0,0}) loginData.messageTick = getTickCount() end addEvent("onServerWantToShowMessage",true) addEventHandler("onServerWantToShowMessage",getRootElement(),addLoginMessage) function renderLoginMessages() local messagesData = loginData.messagesData if #messagesData ~= 0 then local startY = sY*0.5 local i = 1 repeat mData = messagesData[i] local drawThis = true if i~= 1 then startY = startY + sY*0.0425 end if mData[5] == 0 and mData[6] == 0 then mData[5] = -mData[4]-sX*0.015 mData[6] = startY mData[7] = startY end local tick = getTickCount() - mData[3] local posX,posY,alpha if tick < 1000 then local progress = math.min(tick/1000,1) mData[5] = interpolateBetween(mData[5],0,0,0,0,0,progress,"Linear") elseif tick >= 1000 and tick <= 7000 then mData[5] = 0 elseif tick > 7000 then local progress = math.min((tick-7000)/1000,1) mData[5] = interpolateBetween(mData[5],0,0,-mData[4]-mData[4]-sX*0.015,0,0,progress,"Linear") if progress >= 1 then table.remove(messagesData,i) drawThis = false loginData.messageTick = getTickCount() end end local globalTick = getTickCount() - loginData.messageTick if drawThis then mData[7] = startY mData[6] = interpolateBetween(mData[6],0,0,mData[7],0,0,math.min(globalTick/1000,1),"Linear") posX = mData[5] posY = mData[6] alpha = 255 dxDrawRectangle(posX,posY,mData[4],sY*0.04,tocolor(0,0,0,alpha*0.75)) local r,g,b = 0,255,0 if mData[2] == "warning" then r,g,b = 255,0,0 end dxDrawRectangle(posX+mData[4],posY,sX*0.015,sY*0.04,tocolor(r,g,b,alpha*0.85)) dxDrawRectangle(posX+mData[4]+sX*0.005,posY,sX*0.01,sY*0.04,tocolor(0,0,0,alpha)) dxDrawText(mData[1],posX,posY,posX+mData[4],posY+sY*0.04,tocolor(255,255,255,alpha),loginData.fontScale*0.07,loginData.font,"center","center") end i = i + 1 until i>#messagesData loginData.messagesData = messagesData end end function onClientMouseClick(button,state) if button == "left" and state == "down" then if loginData.switchHover then loginData.switchHover = false loginData.switchTick = getTickCount() loginData.rememberState = not loginData.rememberState end end end addEventHandler("onClientClick",getRootElement(),onClientMouseClick) function onClientClickDxLoginButton(theElement) if theElement == loginData.registerButton then if loginData.loginState == "login" then loginData.loginState = "register" dxLibEditSetText(loginData.confirmEdit,"") dxLibEditSetText(loginData.passwordEdit,"") dxLibEditSetText(loginData.loginEdit,"") else loginData.loginState = "login" dxLibEditSetText(loginData.confirmEdit,"") dxLibEditSetText(loginData.passwordEdit,"") dxLibEditSetText(loginData.loginEdit,"") end loginData.loginTick = getTickCount() elseif loginData.loginButton == theElement then if loginData.loginState == "login" then local loginText = dxLibEditGetText(loginData.loginEdit) local passwordText = dxLibEditGetText(loginData.passwordEdit) if not loginText and not passwordText then return end if loginText == "" or passwordText == "" then addLoginMessage("Fill all inputs first","warning") return end if string.len(loginText) < 4 then addLoginMessage("Username need to have at least 4 chars.","warning") return end if string.len(passwordText) < 4 then addLoginMessage("Password need to have at least 4 chars.","warning") return end triggerServerEvent("onClientWantToLogIn",localPlayer,loginText,passwordText) else local loginText = dxLibEditGetText(loginData.loginEdit) local passwordText = dxLibEditGetText(loginData.passwordEdit) local confirmText = dxLibEditGetText(loginData.confirmEdit) if not loginText or not passwordText or not confirmText then return end if loginText == "" or passwordText == "" or confirmText == "" then addLoginMessage("Fill all inputs first","warning") return end if string.len(loginText) < 4 then addLoginMessage("Username need to have at least 4 chars.","warning") return end if string.len(passwordText) < 4 then addLoginMessage("Password need to have at least 4 chars.","warning") return end if passwordText ~= confirmText then addLoginMessage("Password does not match the confirm password.","warning") return end triggerServerEvent("onClientWantToRegister",localPlayer,loginText,passwordText) end elseif loginData.guestButton == theElement then addLoginMessage("You playing as guest now!","confirm") closeLogin() end end addEvent("onDxLibButtonClick",true) addEventHandler("onDxLibButtonClick",getRootElement(),onClientClickDxLoginButton) function createXMLFile() local xml = xmlCreateFile("loginData.xml","data") xmlNodeSetAttribute(xml,"login","") xmlNodeSetAttribute(xml,"password","") xmlNodeSetAttribute(xml,"remember","false") xmlSaveFile(xml) xmlUnloadFile() end function loadXMLData() local xmlFile = xmlLoadFile("loginData.xml","data") if not xmlFile then createXMLFile() xmlFile = xmlLoadFile("loginData.xml","data") end if xmlFile then if xmlNodeGetAttribute(xmlFile,"remember") == "true" then local login = xmlNodeGetAttribute(xmlFile,"login") or "" local password = xmlNodeGetAttribute(xmlFile,"password") or "" dxLibEditSetText(loginData.loginEdit,login) dxLibEditSetText(loginData.passwordEdit,password) loginData.rememberState = true end xmlUnloadFile(xmlFile) end end function saveXMlFile() local xmlFile = xmlLoadFile("loginData.xml","data") if not xmlFile then createXMLFile() xmlFile = xmlLoadFile("loginData.xml","data") end if xmlFile then if loginData.rememberState then local loginText = dxLibEditGetText(loginData.loginEdit) or "" local passwordText = dxLibEditGetText(loginData.passwordEdit) or "" xmlNodeSetAttribute(xmlFile,"login",loginText) xmlNodeSetAttribute(xmlFile,"password",passwordText) xmlNodeSetAttribute(xmlFile,"remember","true") else xmlNodeSetAttribute(xmlFile,"login","") xmlNodeSetAttribute(xmlFile,"password","") xmlNodeSetAttribute(xmlFile,"remember","false") end xmlSaveFile(xmlFile) xmlUnloadFile(xmlFile) end end addEventHandler("onClientSuccessfullyLogIn",getRootElement(),saveXMlFile) There you go
    1 point
  7. ليه ما تستخدم Xml وتريح راسك بجهاز اللاعب
    1 point
  8. الاعلانات تجي حسب دولتك +_+ صراحه مافي شي عندي عيب على العموم لو مب عاجبك الاعلانات فقط شغل vpn واختار دولة عربيه مثلا السعودية ما بيواجهك اي اعلان وصخ ابدا العفو حبيبي وبالتوفيق
    1 point
  9. بلا منازع https://www.w3schools.com/php/
    1 point
  10. ؟ مازا تقول وضح شوي يا عسل
    1 point
  11. +1 هو حاط رابط لموضوع اتوقع المشكلة من الثيم فكرت المشكلة بس عندي
    1 point
  12. Ah i see. I'll give you some code in a few hours. Just tell me on what resolution did you make it look perfect.
    1 point
  13. تحفظ المعلومات مع كل سؤال ويوم تسجله تحط اكوانت داتا وعند استرجاع الحساب يسوي لوب لجميع الحسابات ويدور على الحساب المطابق لجميع الداتا الي تحقق منهم..
    1 point
  14. Devia ser isso mesmo que o Raynner disse, porque você usou getElementsByType um tempo antes (1 hora) de quando a função do setTimer deveria executar, e o recomendado é usar no mesmo momento da execução. Sobre o outro problema, lá no onClientMarkerHit, coloque uma condição hitElement == localPlayer, parece que por algum motivo, esse evento é acionado pra todos jogadores se me lembro bem.
    1 point
  15. End of the topic, people heleped me on another forum.
    1 point
  16. I like the idea I would learn a new programming language via MTA.
    1 point
  17. بسم الله الرحمن الرحيم , السلام عليكم ورحمه الله وبركاته , الموضوع واضح من العنوان , نبدأ بسم الله , return = ارجاع الشيء , يعني ترجع القيمه يعني كـ مثال انا سويت وظيفه, مثلا ابيه لو كتب رقم 1 يرجع لي قيمه محدده وما يكمل باقي الوظيفه, ولو كتب غير الـ1 يكمل الوظيفه طبيعي مثال : addCommandHandler('Money', -- امر من اف8 function(player) -- وظيفه if not isPedInVehicle(player) then return end -- اذا ما كان في السياره ما نعطيه فلوس ونوقف الوظيفه بمعنى الاكواد اللي تحت هالسطر ما راح تتنفذ givePlayerMoney(player,100) -- اذا كان في السياره نعطيه فلوس, بمعنى انه السطر اللي فوق ذا ما تنفذ, لو تنفذ اللي فوق ما يتنفذ هذا end -- اغلاق ) -- اغلاق . يعني ما بيسوي الوظيفه بإختصار راح توقف الوظيفه وماراح ينفذ اي وظائف اخرى end كذا انا رجعت : مثال آخر function checks ( num ) -- num مع برامتر بإسم checks نسوي وظيفه بإسم if num and type ( num ) == 'number' then -- نتحقق اذا استخدم الوظيفه لازم يكتب البارامتر ولازم يكون البارامتر رقم if num == 1 then return end -- نتحقق لو كان البارامتر اللي كتبه 1 نوقف الوظيفه, بمعنى السطر اللي تحت ما راح يتنفذ outputChatBox ( "The num isn't 1" ) -- نطلع نص بالشات, راح يتنفذ هالسطر لو كتب اي رقم غير رقم 1 لأننا وقفنا الوظيفه اذا كتب 1 end -- نقفل الشرط end -- نقفل الوظيفه -- طريقة استخدام الوظيفه كذا : checks ( 1 ) -- هنا كتبنا واحد بمعنى الوظيفه راح توقف حسب ما سويناها فوق , لو حطيت رقم غير 1 راح يظهر النص بالشات : ملاحظة مهمه : اكثر من قيمه, مثال لكلامي return ما تقدر تحط بعد local var = true; -- true متغير بقيمة منطقيه if var == true then return outputChatBox ( '1' ) outputChatBox ( '2' ) end -- ^ يطلع نصين بالشات, طبعاً خطأ مثل ما قلت true تحقق لو المتغير يساوي : كذا راح يطلع خطأ, طيب وش الحل؟ الحل يا انك تحط فاصله بين القيم, او تسوي وظيفه تسوي لك المطلوب كـ مثال local var = true; -- true متغير بقيمة منطقيه if var == true then return outputChatBox ( '1' ),outputChatBox ( '2' ) end -- ^ يطلع نصين بالشات, طبعاً ذا صحيح لاحظ الفاصله بين الوظيفتين true تحقق لو المتغير يساوي break = for - while - repeat until توقف اللوب اللي هو ؟ return - break طيب وش الفرق بين return : ترجع لك قيمة break : ماتسوي لك هالشي return توقف اللوب, يعني ما راح يكمل اللوب, و : مثال for i = 1, 10 do -- لوب يبدأ العد من 1 ويتوقف عند 10 -- i : هو زي المتغير قيمته راح تكون الرقم اللي وصل له اللوب راح يتغير كل مره outputChatBox ( i ) -- بالشات i نحط if i == 5 then -- الى الرقم 5 i نتحقق لو وصل break -- نوقف اللوب, ماراح يكمل end -- نقفل الشرط end -- نقفل اللوب --[[ : اللي راح يطلع بالشات 1 2 3 4 5 -- break وراح يوقف, ماراح يكمل لين 10, ذي هي فايدة : مثال آخر for k,v in ipairs ( getElementsByType ( 'player' ) ) do -- لوب يجيب لنا جميع اللاعبين داخل السيرفر if k > 10 then -- نتحقق لو عدد اللاعبين اكبر من 10 break -- نوقف اللوب ما راح يجيب لاعبين زياده end -- نقفل الشرط end -- نقفل اللوب tostring = '' يعني سلسلة نصيه, يعني اي شي داخل علامة التنصيص string tostring ( argument ) او اي شي الى سلسله نصيه (true,false ) وظيفتها تحول الرقم او القيمه المنطقيه : أمثله local var = true -- true متغير بقيمة منطقيه -- "true" او 'true' طيب نبي نحولها الى سلسلة نصيه يعني تكون بهذا الشكل outputChatBox ( tostring ( var ) ) -- "true" كذا حولناها الى سلسله نصيه, بمعنى صار شكلها زي كذا -- : مثآل آخر local var = 100 -- 100 متغير وقيمته هي رقم -- طيب نبي نحولها, يعني تصير كذا -- "100" outputChatBox ( tostring ( var ) ) -- "100" كذا حولناها الى سلسلة نصيه, بمعنى صار شكلها كذا tonumber = بمعنى رقم, يعني خاصه للأرقام number = tonumber ( n, base ) -- base : [url=https://en.wikipedia.org/wiki/Radix]https://en.wikipedia.org/wiki/Radix[/url] : وظيفتها التحويل الى رقم, أمثله local var = "100" -- متغير بسلسله نصيه if var == 100 then -- تحقق لو المتغير يساوي 100 outputChatBox ( 'يساوي' ) -- نطلع نص بالشات else -- لو كان ما يساوي 100 outputChatBox ( 'لا يساوي' ) -- نطلع نص بالشات end -- نقفل الشرط -- راح تلاحظ طلع لايساوي؟ لأن المتغير سلسله نصيه وغلط تساوي سلسله نصيه بـ رقم, لازم تحول السلسله النصيه local var = "100" -- متغير بسلسله نصيه if tonumber ( var ) == 100 then -- تحقق لو المتغير يساوي 100 outputChatBox ( 'يساوي' ) -- نطلع نص بالشات else -- لو كان ما يساوي 100 outputChatBox ( 'لا يساوي' ) -- نطلع نص بالشات end -- نقفل الشرط -- طلع يساوي؟ لأننا حولنا المتغير الى رقم, وبكذا 100 تساوي 100 اكيد اتمنى يكون الشرح بسيط والي ما فهم نفهمه مره ثانيه .والسلام عليكم ورحمه الله وبركاته
    1 point
  18. Ask them for proof of usage then and which script they refer to, problem solved
    0 points
  19. انا في السعودية مو لازم vpn ياخي كل الاعلانات كذا في هذا الموقع مو واحد بس بس شكرا
    0 points
×
×
  • Create New...