Nützliche Codeschnipsel


  • -Zum Image Button Createn
    Man brauch:
    images/button_standart.png
    images/button_mouse.png


    clickedButton ist dafür da wenn man ein onClientGuiClick ausführt das man die elementData abfragen kann, anders ging es bei mir komischerweise nicht.

    Ich muss mal schnell outside attacken

  • clientseitig
    Ein dxDrawText-Element langsam ein und ausblenden:


    Lua
    function renderit ()
    alpha = 0
    setTimer(function() alpha = alpha + 3 end,50,85)
    setTimer(function() setTimer(function() alpha = alpha -3 end, 50,85)end,10000,1)
    addEventHandler("onClientRender",root,dxelement)
    end
    --dein eventhandler für renderit einfügen
    function dxelement()
    local dxtext = dxDrawText("Text",startx,starty,endx,endy,tocolor(255,255,255,alpha),1,"bankgothic")
    end
  • Mit der Funktion kann man ein Tor erstellen, welches 2 Keypads hat, und man draufklicken muss, damit sich das Tor öffnet. Man hat diese Parameter:



    allowedTable, id, x, y, z, rotx, roty, rotz, mx, my, mz, mrotx, mroty, mrotz, time, kid, kx, ky, kz, krotx, kroty, krotz, kid2, kx2, ky2, kz2, krotx2, kroty2, krotz2


    allowedTable = ein Table mit namen, die das Tor benutzen dürfen(Beispiel: {[1] = "MuLTi"}
    id = Tor ModellID
    x, y, z, rotx, roty, rotz = Position des Tores/Rotation
    mx, my, mz, mrotx, mroty, mrotz = Position, wo das Tor hingemoved werden soll
    time = Zeit zum Moven in Milisekunden
    kid, kx, ky, kz, krotx, kroty, krotz = Position & Modellid des Keypads, wo man draufklicken soll(StandartID: 2886)
    kid2, kx2, ky2, kz2, krotx2, kroty2, krotz2 = Position & Modellid des 2. Keypads, wo man draufklicken soll(StandartID: 2886) (Eigentlich Optional, ungetestet)



    Gibt: das Gate, keypad1, und ggf. Keypad2 wieder.


    Beispiel:


    Lua
    createHouseGate({[1] = "MuLTi", [2] = "Hmm", [3] = "Player", [4] = "aha"}, 974, 321.39999389648, -1188.1999511719, 77.099998474121, 0, 0, 38.25, 321.39999389648, -1188.1999511719, 72.5, 0, 0, 0, 1500, 2886, 330.29998779297, -1181.0999755859, 77.400001525879, 0, 0, 40, 2886, 312.39999389648, -1192.1999511719, 78, 0, 0, 120)


    Erstellt ein Tor mit 2 Keypads in der Nähe eines guten Hauses in Los Santos Reichenvirtel.
    mfg

    Mit freundlichen Grüßen

  • eine Function die ein verschieden Geldbeträge gibt


    Exetra-Play = mtasa://5.62.64.218:22003
    Discord: KeksKing#9206

    Einmal editiert, zuletzt von KeksKing ()

  • Lua
    --Copyright by Cobra--
    function math.rounding (num)
    if num then return math.floor(num+0.5)
    else return false
    end
    end


    Für das richtige Mathematische Runden von Zahlen, einfach dann math.floor gegen math.rounding ersetzten.


    und nicht wundern das z.B. in notepad das math.rounding nicht wie math.floor in lila angezeigt wird ^^



    lG Cobra

    Zitat

    Ganz egal wie feste man etwas packt... Man verliert es.

  • Lua
    function initLFControl() addCommandHandler("lavaspeed",function(source,cmdname,speed) exports.lavaflood:setLavaRiseSpeed(speed) end) addCommandHandler("lavalevel",function(source,cmdname,level) exports.lavaflood:setLavaLevel(level) end)endaddEventHandler("onResourceStart",resourceRoot,initLFControl)


    datei: lavafl_ctrl (normal in meta eintragen)


    Lua
    script_clientside = true
    function initLavaFlood() local sw,sh = guiGetScreenSize() local multx,multy = sw/1024,sh/768 setHeatHaze(128,0,12*multy,18*multy,65*multx,80*multy,80*multx,95*multy,true)
    addEvent("lavaflood:updateWaterLevel",true) addEventHandler("lavaflood:updateWaterLevel",root,updateLastWaterLevel) setTime(12,0) setTimer(healOverTime,500,0) setTimer(burnInWater,50,0) setTimer(createRandomFires,50,0) w1 = createWater(-3000,-3000,0,0,-3000,0,-3000,0,0,0,0,0) w2 = createWater(0,-3000,0,3000,-3000,0,0,0,0,3000,0,0) w3 = createWater(-3000,0,0,0,0,0,-3000,3000,0,0,3000,0) w4 = createWater(0,0,0,3000,0,0,0,3000,0,3000,3000,0) updateLastWaterLevel(0) addEventHandler("onClientPreRender",root,raiseWater)endaddEventHandler("onClientResourceStart",resourceRoot,initLavaFlood)
    function healOverTime() local health = getElementHealth(localPlayer) if health < 1 then return end setElementHealth(localPlayer,getElementHealth(localPlayer)+2)endfunction burnInWater() if isLocalPlayerInWater(localPlayer) then local health = getElementHealth(localPlayer) if health < 1 then return end setElementHealth(localPlayer,getElementHealth(localPlayer)-6) setPedOnFire(localPlayer,true) endend
    function isLocalPlayerInWater() for bone = 1,8 do if isBoneInWater(bone) then return true end end for bone = 1,6 do if isBoneInWater(20+bone) or isBoneInWater(30+bone) then return true end end for bone = 1,4 do if isBoneInWater(40+bone) or isBoneInWater(50+bone) then return true end end return falseend
    function isBoneInWater(bone) local x,y,z = getPedBonePosition(localPlayer,bone) return getWaterLevel(w1) > zend
    function createRandomFires() local cx,cy = getCameraMatrix() local wz = getWaterLevel(w1) local x1,y1,z1 = math.random()*100-50+cx,math.random()*100-50+cy,math.random()*2-1+wz local x2,y2,z2 = math.random()*100-50+cx,math.random()*100-50+cy,math.random()*2-1+wz local hit,x,y,z = processLineOfSight(x1,y1,z1,x2,y2,z2,true,true,true,true) if hit then createFire(x,y,z,1+math.random()*4) endend
    function updateLastWaterLevel(level) last_update_time = getTickCount() last_update_level = levelend
    function raiseWater(timeslice) local time_diff = getTickCount()-last_update_time local level = last_update_level+time_diff*getLavaRiseSpeed() setWaterLevel(w1,level) setWaterLevel(w2,level) setWaterLevel(w3,level) setWaterLevel(w4,level)end
    function getLavaRiseSpeed() return getElementData(resourceRoot,"risespeed")end



    lavaflood_c (clientseitig eintragen)




    lavaflood_s (serverseitig eintragen)




    Befehle : /lavaspeed speed --setzt die schnelligkeit der lavalacke
    /lavalevel lvl --setzt die lavawellenhöhe fest


    Screenshot:






    mfg


    PartisaN

  • Da ich mich grade ein wenig mit dem "normalen" Lua beschäftige:



    Es sucht nach ASCII Zeichen die nicht: A..Z oder a..z oder 0..9 sind. Ideal um Passwörter zu überprüfen.




    Sucht nach Zeichen die in der Tabelle enthalten sind. Außerdem überprüft es die Länge.


    Lua
    num = "-A1"
    if tonumber (num) ~= nil then
    return math.abs (num)
    else
    return false
    end


    Überprüft ob der Wert einer Variable eine Zahl ist. Außerdem werden negative Zahlen in postive umgewandelt.
    Gut für Bankautomaten.


    Lua
    function isNumber (value)
    if tonumber (value) ~= nil then
    return true
    else
    return false
    end
    end


    Mit isNumber (der zu prüfende Wert) kann man überprüfen ob es sich bei dem Wert um eine Zahl handelt.
    Völlig egal ob negativ oder positiv.


    Bsp:

    Lua
    value = "12342342a"
    if isNumber (value) then
    print ("Zahl")
    else
    print ("keine Zahl")
    end


    Auswurf: keine Zahl

    11 Mal editiert, zuletzt von Shape ()

  • Eine riesen Blackliste: Vorsich unanständige Wörter enthalten


    Wollte ein Blacklist System bauen das jeglichen Chatverkehr überprüft. Allerdings sind das soviele Wörter das der Server in die Knie gehen würde.

    Einmal editiert, zuletzt von Shape ()

  • Dieses Script ist nützlich, da sich Objekte langsamer bewegen, wenn man den Command nochmal eingibt, während sich das Objekt noch bewegt. In diesem Fall wird abgefragt, ob sich das Objekt bewegt. Wenn es sich bewegt, wird ein Teil der Funktion nicht ausgeführt.



    VG

    [align=center]Die deutsche Sprache ist Freeware.
    Das heißt, du darfst sie uneingeschränkt nutzen. ABER(!) die deutsche Sprache ist NICHT(!) Open Source.
    Das heißt, du darfst sie [color=#ff0000]NICHT(!)
    nach deinen Vorstellungen verändern!

    2 Mal editiert, zuletzt von [BG]Tim ()

  • Dieser kleine Codeschnipsel ist dafür da, die Größe von selbst erstellten Fonts anzupassen:


    Lua
    width, height = guiGetScreenSize()
    player_screen = width * height
    screen = 1440 * 900 -- größte Auflösung
    screen = screen/100 --dreisatz = 1%
    player_screen = player_screen/screen -- die Prozentzahl vom Spieler Bildschirm im Vergleich mit der größten Auflösung
    size = 26/100*player_screen -- 26 ist die fontgröße bei einer Bildschirmauflösung von screen = 1440 * 900
    bt_font_big = guiCreateFont( "11S0BLT_.ttf", size )


    Folgender Effekt wird damit erzielt:
    Bei einer großen Bildschirm-auflösung wird der Text größer angezeigt und bei einer kleinen Auflösung kleiner angezeigt.
    ==> Die größe ist nun relativ zur Auflösung


    So wäre es falsch:


    Lua
    bt_font_big = guiCreateFont( "11S0BLT_.ttf", 26)


    Hier wäre die schriftgröße zwar auf 1440 * 900 passend aber auf einer kleinen Auflösung wie 800*600 viiieeel zu groß...


    Ich hoffe ihr habt den Sinn des Ganzen verstanden.


    MfG Dead

  • Lua
    local theGate = createObject(ID,x,y,z,rx,ry,rz)local downornot = falsefunction adminbase ( player ) x,y,z = getElementPosition ( player ) x1,y1,z1 = getElementPosition ( theGate ) if getDistanceBetweenPoints3D ( x,y,z,x1,y1,z1) < 12 then -- User = ..Phil.. if downornot == false then if getPlayerName( player ) == "..Phil.." then moveObject( theGate , 2000 , x,y,z,rx,ry,rz) downornot = true else moveObject ( theGate , 2000, x,y,z,rx,ry,rz) downornot = false end end endendaddCommandHandler("move",adminbase)



    Bei dem getPlayerName ( player ) == "..Phil.." tragt ihr euren Namen ein ( in den " " )

    Einmal editiert, zuletzt von ..Phil.. ()


  • [/lua]
    Dieses Script beinhaltet sinnlos rein gescriptete fenceshit3 (xD) , welches sehr sehr sinnlos ist :P
    Dann gibt es 3 Marker

    Lua
    local lsmarker , local sfmarker und local lv marker


    Diesen 3 Markern sind verschiedene Funktionen zugewiesen SFMarker( Am BHF in SF ) Teleport nach LS [Ganton] und umgekehrt.
    Der LV Marker zeigt

    Lua
    outputChatBox("Verwende [/town sf] um nach San Fierro zu kommen!",source,255,0,0)
    outputChatBox("Verwende [/town ls] um nach Los Santos zu kommen!",source,255,0,0)
    outputChatBox("Verwende [/town lv] um zurück nach Las Venturas zu kommen!",source,255,0,0)


    Sobald man den Marker betritt.
    Die Funktionen playerPosition & cleartextafterstopresource habe ich nebenbei eingefügt. Mit dem Grund, dass ich abundzu die x,y,z Koordinaten manchmal sehr gut gebrauchen kann und damit ich nach der /restart RESOURCE funktion eine Bessere übersicht über den Chat habe. Falls ich eine ouputChatBox verwende. Welche ich auch in diesem Fall verwende


    mfg

  • Habe mal wieder was gutes :D


    Clientseitig Versteht sich !


    damit kann man einen Button erstellen der auf dxReagiert :D,
    wenn er gepresst ist gibt er "clicked" wieder wenn er makiert ist gibt er "entered" wieder !


    So kann man ihn erstellen :

    Lua
    DXcreateButton (string text,int x,int y,int w,int h)


    MfG

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!