[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link

  • postcar = Postwagen[0](609, 989.9643,-1525.2175,13.7328,180.3481,1,1,120); // Postwagen0 



    AttachObjectToVehicle(postobj[postcar][0], postcar,1.24, -1.0, 1.2, 0.0, 0.0, 0.0);


    Merkst du es?


    Versuch mal


    AttachObjectToVehicle(postobj[postcar][0], Postwagen[0],1.24, -1.0, 1.2, 0.0, 0.0, 0.0);

    Du willst mich kennenlernen? Kauf mein Buch, Bia*ch!


  • Habe es eben getestet, also mit den Daten stimmt alles.


    (Bekommst du da nicht mega viele compile Fehler?)


    Wie Maho schon gesagt hat, es reicht quasi:


    C++
    Postwagen[0]=CreateVehicleEx(609,989.9643,-1525.2175,13.7328,180.3481,1,1,120,false);
    
    new postobj = CreateObject(19477, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
    SetObjectMaterialText(postobj, "-", 0, OBJECT_MATERIAL_SIZE_128x64,"Wingdings", 75, 1, 0xFFFFFFFF, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
    AttachObjectToVehicle(postobj, Postwagen[0],1.24, -1.0, 1.2, 0.0, 0.0, 0.0);

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich hatte viele Errors auch wo ich das so gemacht habe wie Maho das meinte habe nochmal bissel herumprobiert und habe es jetzt so gemacht nur wird das nur auf eine Seite angezeigt und nicht auf beiden Seiten


    Code
        new postObjekt;
        Postwagen[0] = CreateVehicleEx(609,989.9643,-1525.2175,13.7328,180.3481,1,1,14400);
        postObjekt = CreateObject(19477, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
         SetObjectMaterialText(postObjekt,"-", 0, OBJECT_MATERIAL_SIZE_128x64,"Wingdings", 75, 1, 0xFFFFFFFF, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
         SetObjectMaterialText(postObjekt,"-", 0, OBJECT_MATERIAL_SIZE_128x64,"Wingdings", 75, 1, 0xFFFFFFFF, 0, OBJECT_MATERIAL_TEXT_ALIGN_CENTER);
        AttachObjectToVehicle(postObjekt, Postwagen[0], -1.24, -1.0, 1.2, 0.0, 0.0, 180.0);
        AttachObjectToVehicle(postObjekt, Postwagen[0], 1.24, -1.0, 1.2, 0.0, 0.0, 0.0);

    Kaliber Ich habe deine Variante ausprobiert, die ist besser als das, was ich da gebastelt habe, nur versuche ich das Wingdings auf beiden Seiten angezeigt wird

    Einmal editiert, zuletzt von </MRX> () aus folgendem Grund: Ein Beitrag von &lt;/MRX&gt; mit diesem Beitrag zusammengefügt.

  • nur wird das nur auf eine Seite angezeigt und nicht auf beiden Seiten

    Das liegt an der Reihenfolge, wie du die Dinge aufrufst.


    Du musst natürlich erst das eine Objekt erstellen und anheften und dann das Andere.

    Nicht beides versuchen parallel zu mixxen.


    Ich empfehle dir btw das in eine Funktion auszulagern (da du das sicherlich noch öfters nutzen wirst) und zum Anderen einen Streamer zu verwenden, denn wenn du da (nur als extremes Beispiel) 500 Fahrzeuge hast, könntest du keine anderen Objekte mehr auf dem Server streamen 😅 Deshalb nie CreateObject verwenden, sondern immer CreateDynamicObject.


    Sähe dann z.B. so aus:


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Beitrag von DJSatrox ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: gelöst habe gepennt :-D ().
  • Guten Abend, ich bekomme immer bei einer sache 4 errors die ich mir nicht erklären kann.. ?( =O


    Ich möchte OnPlayerDisconnect aufrufen, was auch immer ging nur plötzlich in diesen fall hier nicht......


    Code
        for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
        {
             if(IsPlayerNPC(i) || !eingeloggt[i])continue;
            {
                OnPlayerDisconnect(i, 1);
            }
        }



    Ich bekommen immer

    Code
    error 017: undefined symbol "_ALS"; did you mean "Gas"?
    error 029: invalid expression, assumed zero
    error 017: undefined symbol "_ALS_go"
    fatal error 107: too many error messages on one line


    bei der stelle


    Code
    OnPlayerDisconnect(i, 1);



    wtf was ist das liegt das an a_samp oder define falsch ?

    Auch das er was von meiner Gas veriable was will verwundert mich noch mehr..


    Code
    new Float:Gas[CAR_AMOUNT];



    Hoffe einer kann mir da ebend helfen bzw mir sagen was diese kommische ALS errors auslösen komme da grade einfach nicht drauf..

  • Das hängt mit Callback-Hooking zusammen :)


    Dort wird quasi der Callback unbenannt mit _ALS_ und deshalb kannst du das nicht direkt aufrufen.

    Generell ist das keine gute Idee Callbacks direkt aufzurufen. Willst du, dass der Spieler den Server verlässt, dann Kick ihn.


    Ansonsten lager den Code von OnPlayerDisconnect in eine Funktion aus und rufe diese gezielt auf.


    PS: Der schlägt dir Gas vor, weil der Compiler durcheinander kommt. Der sucht nach 3 stelligen Variablennamen, weil "ALS" auch 3 stellig ist und schlägt dir das deshalb vor :D

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Hey :)


    Also besser dann direkt es aufrufen was ich eig durch onplayerdis wollte ?


    sprich so

    Code
        for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
        {
             if(IsPlayerNPC(i) || !eingeloggt[i])continue;
            {
                 SpeichereSpieler(i);
            }
        }
  • Genau :)


    Nur die Klammern sind unnötig, also:


    C++
    for(new i, j = GetPlayerPoolSize(); i <= j; i++)
    {
        if(IsPlayerNPC(i) || !eingeloggt[i]) continue;
        SpeichereSpieler(i);
    }


    Das reicht völlig.


    Wenn btw keine Reihenfolge nötig ist (beim Zählen der Loop), kannst die Loop auch noch optimieren:


    C++
    for(new i = GetPlayerPoolSize(); i != -1; i--)
    {
        if(IsPlayerNPC(i) || !eingeloggt[i]) continue;
        SpeichereSpieler(i);
    }


    Dann ist die Bedingung nämlich eine Konstante und keine Variable mehr.


    Aber Grundsätzlich ist das mit dem GetPlayerPoolSize überbewertet. Ich denke es macht mehr Sinn MAX_PLAYERS auf ein angemessenes Niveau zu definieren und dann zu nutzen.


    OMP zum Beispiel hat das auch entdeckt und empfiehlt halt foreach oder MAX_PLAYERS :)


    Siehe: https://www.open.mp/docs/scrip…nctions/GetPlayerPoolSize

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Aber Grundsätzlich ist das mit dem GetPlayerPoolSize überbewertet. Ich denke es macht mehr Sinn MAX_PLAYERS auf ein angemessenes Niveau zu definieren und dann zu nutzen.


    OMP zum Beispiel hat das auch entdeckt und empfiehlt halt foreach oder MAX_PLAYERS :)


    Siehe: https://www.open.mp/docs/scrip…nctions/GetPlayerPoolSize

    Hmm war aber eig immer praktisch gewesen das die nur durch spieler geht die auch grade drauf sind aber naja bei den heutigen server und die leistung macht es wohl echt nix mehr aus wieder max_player zu verwenden ^^


    zu den 2


    {

    }

    die hatte ich grade schon weggemacht :D bevor ich dein post gelesen habe hahah danke dir :)

  • Guten Abend könnte mir jemand erklären wo der fehler ist


    der pawn compiler hängt sich auf und gibt keine info raus



    Einmal editiert, zuletzt von </MRX> ()

  • Guten Abend könnte mir jemand erklären wo der fehler ist


    der pawn compiler hängt sich auf und gibt keine info raus



    sicher das es an dieser stelle liegt ? ich habe den code grade mal bei mir reingeworfen und bekomme auch errors aber kein abschmieren vom compeiler

  • ja ist an der stelle ich habe nochmal was verändert und bekomme jetzt wieder erros


    ich versteh nur nicht was daran falsch ist

  • ich versteh nur nicht was daran falsch ist

    Es steht doch da, was falsch ist.


    Schau mal in die Doku: https://team.sa-mp.com/wiki/My…#cache_get_value_name_int


    Du verwendest cache_get_value_name_int gibst aber keinen Spaltennamen an...


    So wie das aussieht, willst du cache_get_value_index_int verwenden.


    Aber selbst da, bekommst du nicht als return wert den Wert zurück, sondern als Parameter gesetzt.


    Sprich dann so nutzen:


    cache_get_value_index_int(i, 0, dynClothesInfo[playerid][i][cID]);


    Wobei ich dir empfehle das per Name zu machen, damit es zu keinen Verwechslungen kommt...ist schwer zu finden xD


    Oder nutze direkt ein ORM System, wobei das etwas komplexer ist, wenn man damit noch nie gearbeitet hat.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ich habe das gemacht und ein paar sachen angepasst nur bekomme ich den fehler und so wie es scheint muss ich dafür YSI nutezn aber ich bekomm den fehler einfach nicht weg


    Code
    Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(7492) : warning 202: number of arguments does not match definition
    \Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(40433) : error 025: function heading differs from prototype
    \Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(51680) : error 017: undefined symbol "status"
    \Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(51731) : error 017: undefined symbol "status"
    Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase
    
    
    3 Errors.
  • ich habe das gemacht und ein paar sachen angepasst nur bekomme ich den fehler und so wie es scheint muss ich dafür YSI nutezn aber ich bekomm den fehler einfach nicht weg


    Code
    Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(7492) : warning 202: number of arguments does not match definition
    \Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(40433) : error 025: function heading differs from prototype
    \Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(51680) : error 017: undefined symbol "status"
    \Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(51731) : error 017: undefined symbol "status"
    Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase
    
    
    3 Errors.

    Zeig mal die zeilen

    Code
    40433


    Code
    51680
    Code
    51731
  • zeile 40433


    ich zeige mal was das macht





    zeile 51680 ist switch(status)


    zeile 51731 ist auch switch(status)


  • und wie hast du status definiert ? weil die 2 errors besagen dass diese nicht definiert sind

    Code
    undefined symbol "status"
    Code
                switch(status)

    woher beziehst du es mal so gefragt

  • Hatte ein schreib Fehler drin danke für den hin weiß


    so sollte es sein

    Code
    new status = GetPVarInt(playerid, "DialogStatus");



    so war es definiert

    Code
    new statu = GetPVarInt(playerid, "DialogStatus");



    habe nur noch ein error


    was ich aber die ganze zeit schon habe


    Code
    Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(7491) : warning 202: number of arguments does not match definition
    Planet Roleplay3.0b\gamemodes\pRPv3.0bEdited.pwn(40432) : error 025: function heading differs from prototype
    Pawn compiler 3.2.3664              Copyright (c) 1997-2006, ITB CompuPhase
    
    
    1 Error.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen