Beiträge von Kaliber

    Du benötigst den Callback OnPlayerCommandText gar nicht mehr. Lösche diesen am Besten.


    Und nutze nur:


    C
    public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
    {
      if (result == -1)
      {
        SCM(playerid, 0xFFFFFFFF, "SERVER: Befehl nicht gefunden.");
        return 0;
      }
      return 1;
    }

    Und du bist sicher, dass du oben im Skript #include <ocmd> quasi rausgeschmissen hast und nur #include <Pawn.CMD>  verwendest?

    Jedoch frag ich mich immer noch wieso sobald ich beim accept Befehl InGame /accept eingebe sofort die einladung angenommen wird!? weil wie gesagt gibt ja noch weitere dinge die man accepten kann bspw. /accept dice etc.

    Ah, ja stimmt ich habe nicht bedacht, dass ocmd ja gar nicht \0 in den String packt sondern \1...


    Lösung 1:



    Oder Lösung 2:


    Also wäre es zum Vorteil dies auch bei meinem accept Befehl umzuändern? von quasi so:

    Das kommt darauf an...

    In diesem Fall funktioniert es, da keine Weiteren Parameter außer dem Keyword eingegeben werden. Aber falls doch, solltest du das so machen.


    //Und hier dann immer die nächsten keyword hinter invite einfügen?

    Joaa, ansonsten weiß der Nutzer ja nicht, welche Optionen er alle hat :)


    Und anstatt dem return 1 unten würde ich nochmal wie oben erklärt SCM(playerid, WEISS, info); nutzen, damit er direkt weiß, welche keywords es gibt.


    Nur als Info noch:


    C
    if(!strcmp(item, "invite",false)) // Das sorgt dafür, dass nur "invite" geschrieben werden kann. Es wird quasi geprüft, ob die Groß- und Kleinschreibung richtig ist. Für den Nutzer ist das oft nervig, da es ja egal ist, ob er Invite oder invite, invitE schreibt, ist ja alles das Selbe und es soll funktionieren
    
    if(!strcmp(item, "invite")) //<< das sorgt dafür, dass die Groß-und Kleinschreibung ignoriert wird und alles gültig ist ;)


    jedoch wird mein Fraktionsrang in der DB auf 70 gesetzt wie kann das zustande kommen?

    Kann ich dir so nicht sagen, vllt geht etwas beim Speichern schief?

    Dazu müsste ich dein Speichersystem begutachten.



    SetPVarInt(playerid, "getfrak", 0);

    Noch ein Hinweis dazu, lösche das ruhig einfach:


    DeletePVar(playerid, "getfrak");


    Dann sinkt der RAM Verbrauch vom Server ^^

    Also zuerst zu der Info Variable:



    Zu dem Code:

    Probiers mal so:


    Wenn du es im Map-Editor markierst und dabei alles markierst (also die gesamte Base), dann geht das nicht, da das Tor zu dem Model gehört.


    Da müsste man das ummappen, dass es so ähnlich aussieht, aber da dann kein Tor ist.

    Bei diesem Code fallen mir so viele komische Dinge auf, dass ich mich frage, wieso du nicht erst einmal die Basics mehr lernst...


    1. Der Hauptfehler besteht daran, dass vermutlich BagItems und tInfo nicht die selbe Größe haben...musst natürlich schauen, dass du die Schleife über die wesentliche Variable laufen lässt.
    2. Wieso startest du bei der Schleife bei 1?!?!?!?!?! Arrays starten bei 0
    3. Zeile 30 ist nonsense :D
    4. Zeile 16..wieso eine Klammer? Das ist Quatsch
    5. Wenn du schon DEBUGs machst, zeige uns doch diese auch :)

    Aber wie gesagt, der Fehler liegt in der Schleife. Du greifst auf einen Index zu, der nicht existiert.


    C
    new test[15];
    printf("%d",test[14]); //<< Geht, da gültiger Index von 0-14 ist.
    printf("%d",test[15]); //Fehler, da 15 kein gültiger index mehr ist.

    Moin wieder mal ne frage ich habe das problem das ich dem spieler eine kettensäge gegeben habe aber wie kann ich nun nur die kettensäge entfernen ohne ihm alle waffen zu nehmen?


    Wie erstellst du denn das Objekt?


    Wieso gibst du dir nicht mehr Parameter aus? Dann wurdest du merken, dass BULLET_HIT_TYPE_PLAYER_OBJECT aufgerufen wird, da es sich bei "dynamic Objekten" bzw Streamer Objekten immer um Player Objekte handelt.


    C
    printf("%d|%d|%d|%d|%.02f|%.02f|%.02f",playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ);

    Alternativ kannst du auch OnPlayerShootDynamicObject nehmen.

    Kannst den Code vereinfachen und so Redundanzen vermeiden:


    Die Frage ist, wie und wo du sInfo[playerid][paycheck] setzt und dem einen Wert gibst :)

    Empfehle dir auf YouTube Finanzfluss (für generelle Investments & Krypto)


    Und für mehr theoretische (auch oft subjektive) Ansichten den Blocktrainer auf YouTube :)