[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
  • Versuche es so:
    new userid = strval(inputtext);
    if(!IsNumeric(inputtext)) return SendClientMessage(playerid, COLOR_WHITE, "{FF8484}Ungütltige{FFFFFF} SpielerID!");
    if(IsPlayerConnected(userid))
    {
    new name[MAX_PLAYER_NAME], str2[50], bool:found;
    GetPlayerName(userid, name, sizeof(name));
    for(new i = 0; i < sizeof(AkteInfo); i++)
    {
    if(!strcmp(AkteInfo[i][akte_name],name) && strlen(AkteInfo[i][akte_name])) //!strcmp heißt strcmp == 0. strcmp gibt 0 zurück, wenn beide Strings identisch sind, daher !strcmp.
    {
    PlayerTextDrawShow(playerid, AktenBox[playerid][7]);
    format(str2, sizeof(str2),"%s", AkteInfo[i][akte_grund1]);
    PlayerTextDrawSetString(playerid, AktenBox[playerid][7], str2);
    found = true;
    break;
    }
    }
    if(!found) return SendClientMessage(playerid, COLOR_WHITE, "Spieler konnte {FF8484}nicht{FFFFFF} gefunden werden.");
    }
    else SendClientMessage(playerid, COLOR_WHITE, "Spieler ist {FF8484}Offline{FFFFFF}!");

  • @Jeffry


    Funktioniert klasse. Möchte jetzt den Spieler eine Waffe geben sobald er das PickUp aufnimmt.


    Könnte das jetzt per OnPlayerPickUpPickUp machen, aber habe folgendes gelesen nur scheint das nicht zu klappen:


    "Certain pickup types come with 'automatic responses', for example using an M4 model in the pickup will automatically give the player the weapon and some ammo. For fully scripted pickups, type 1 should be used."


    Erhalte nicht automatisch eine Waffe/Munition, weiß nicht woran das liegt. Also müsste ich das denke ich per Public selber lösen, aber wie überprüfe ich welches Pickup Model der Spieler aufgehoben hat sodass ich ihn die entsprechende Waffe geben kann?


    Mein Public schaut aktuell so aus:



    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(eventweapon[i] == pickupid) {
    //Hier eventuell waffen geben...
    DestroyPickup(eventweapon[i]);
    eventweapon[i] = -1;



    return 1;
    }
    }
    return 1;
    }



    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • https://wiki.sa-mp.com/wiki/GivePlayerWeapon

  • Sind die Geschwindigkeiten eines Command ausschlaggebend?
    Ich nutze seit langen eigentlich ycmd das habe ich mir damals so angewöhnt.
    Mittlerweile gibt es aber schon relativ viel flottere Prozessoren.
    Jetzt bevor ich sinnlos umspringe auf einem schnelleren wollte ich Fragen, inwiefern sich das auswirkt.


    Im Auge habe ich aktuell den Pawn.CMD da laut Benchmark dieser gegenüber ycdm bedeutend schneller ist.


    Wenn ich hier diesen Test von dem Autor trauen kann.

    Quelle: http://forum.sa-mp.com/showthread.php?t=608474



    Würde es sich dann um eine Optimierung handeln die Ausschlaggebend ist oder macht das bei einem Command nichts wirklich aus ?

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Beitrag von GUCCI ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Speicherst du "Tutorial[playerid]" diesen Wert irgendwo ?
    Ansonsten wird nach jedem, Neustart vom Server die Variable "Tutorial" bei jedem auf 0 gesetzt.
    Und somit muss er dann immer das Tutorial erneuert machen.


    Und bei dem letzen Case brauchst du auch nicht den Timer vom Tutorial setzen.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi

  • Jetzt bevor ich sinnlos umspringe auf einem schnelleren wollte ich Fragen, inwiefern sich das auswirkt.

    Gar nicht. Ich habe meinen Server 6 Jahre lang, zum Teil mit über 100 Spielern, am laufen gehabt, ohne dass es je Probleme gab. Habe dcmd genutzt, und zum Teil waren die alten Commands noch mit strcmp am laufen, die ohne Parameter.
    Für alles mögliche ein Plugin zu nutzen finde ich nicht sinnvoll. Solange es einen wirklichen Mehrwert bringt (Streamer Plugin, IRC Plugin, etc) macht es Sinn, aber für 0,1ms pro Aufruf eines Befehls, das wirkt sich niemals aus. Da müssten in der gleichen Sekunde 100 Spieler einen Befehl eingeben, dass sich das um 10ms auswirkt, und selbst das merkt man nicht, da die 0,1ms in Relation zu der Dauer die der Befehl selbst benötigt, um alle Statements darin durchzuführen, ein Vielfaches ist.

  • Hier: TutorialcodeDas funktioniert soweit, es wird mir angezeigt.
    Aber nach dem Login wird mir das wieder angezeigt, und wenn ich nach dem Speichern,

    Code
    SpawnPlayer(playerid);

    schreibe. Wird der Spieler nach jedem Step gespawnt.
    @N1co

    Das "Tutorial[playerid] = 1;" ist nur ein Swichenspeicher. Beim nächsten Login ist das weg.
    Ersetz das einfach durch "if(PlayerInfo[playerid][pTutorial] == 0)".

  • Beitrag von N1co ()

    Dieser Beitrag wurde von shoxinat0r aus folgendem Grund gelöscht: Spam ().
  • Beitrag von Mr.Secret ()

    Dieser Beitrag wurde von shoxinat0r aus folgendem Grund gelöscht: Spam ().
  • Das "Tutorial[playerid] = 1;" ist nur ein Swichenspeicher. Beim nächsten Login ist das weg.Ersetz das einfach durch "if(PlayerInfo[playerid][pTutorial] == 0)".

    Das funktioniert trotzdem irgendwie nicht.


    //Edit: N1co ich hab dir eine PN geschrieben. Beitrag wurd aber gelöscht
    @N1co

    2 Mal editiert, zuletzt von Mr.Secret ()

  • Du kannst mit "floatround" die aktuelle Zahl von deinem Float abziehen. Dann bleibt nur noch ein 0,XXXXX Wert.
    Um dann diese "0" davor weg zu bekommen, einfach den restlichen Float z. B. mal 10000 nehmen.


    D.h. Beispielsweise:


    Interessant hierzu: http://wiki.sa-mp.com/wiki/Floats

  • Hallo,


    ich hab ne kurze Frage und zwar gibt es ein Callback was abfragt, ob das Fahrzeug einen Schaden zugezogen hat?
    Denn ich habe vor, dass wenn das Fahrzeug des Spielers Schaden zunimmt ( wleches jederzeit aktualisiert wird ) ein Textnachricht gesendet wird.


    Daher meine Frage gibt es ein Callback, oder muss ich mir mit GetVehicleHealth / GetVehicleDamageStatus ne kleine Funktion basteln?