Angepinnt [SAMMELTHREAD] Kleine Scripting Fragen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

Es gibt Neuigkeiten! Ab sofort könnt ihr dem Donators Club auf Lebenszeit beitreten.
Weitere Infos im Thema Donator's Club ab heute wieder verfügbar!

  • Diese Fubktion benutze ich bereits. Immer wenn ich das Passwort falsch eingebe lande ich am Nullpunkt.

    Edit:

    Ich habs jetzt mal ohne der Funktion von Colney getestet, wenn ich bei OnPlayerRequestClass
    TogglePlayerSpectating(playerid, true); reinschreibe und beim Logindialog ei falsches Psswort eingebe lade ich am Nullpunkt, jeoch wen TogglePlayerSpectating(playerid, true); nicht vorhanen ist, steht nur dass das Passwort falsch ist.


    Der Login Dialog

    Quellcode

    1. case DIALOG_LOGIN:
    2. {
    3. new string[64];
    4. if(!response)return Kick(playerid);
    5. if(strlen(inputtext) < 6 || strlen(inputtext) > 24)
    6. {
    7. format(string,sizeof(string),"{FFFFFF}Der Account {E8BD1A}%s {FFFFFF}wurde gefunden\nBitte gebe das Passwort ein",SpielerDaten[playerid][player_Name]);
    8. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung",string, "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    9. }
    10. new query[256];
    11. mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%e' AND `passwort` = MD5('%e')",SpielerDaten[playerid][player_Name], inputtext);
    12. mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    13. TogglePlayerSpectating(playerid, false);
    14. return 1;
    Alles anzeigen


    OnUserLogin

    Quellcode

    1. CALLBACK: OnUserLogin(playerid)
    2. {
    3. new rows,string[500];
    4. cache_get_row_count(rows);
    5. if(rows == 0)
    6. {
    7. format(string,sizeof(string), "Dieses Passwort ist falsch");
    8. SendClientMessage(playerid,WEISS,string);
    9. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    10. }
    11. else
    12. {
    13. cache_get_value_name_int(0, "id", SpielerDaten[playerid][player_ID]);
    14. cache_get_value_name_int(0, "adminrang", SpielerDaten[playerid][player_Admin]);
    15. cache_get_value_name_int(0, "whitelist", SpielerDaten[playerid][player_Whitelist]);
    16. cache_get_value_name_float(0, "x", SpielerDaten[playerid][player_Spawn][0]);
    17. cache_get_value_name_float(0, "y", SpielerDaten[playerid][player_Spawn][1]);
    18. cache_get_value_name_float(0, "z", SpielerDaten[playerid][player_Spawn][2]);
    19. cache_get_value_name_float(0, "r", SpielerDaten[playerid][player_Spawn][3]);
    20. cache_get_value_name_int(0, "interior", SpielerDaten[playerid][player_Interior]);
    21. cache_get_value_name_int(0, "welt", SpielerDaten[playerid][player_Welt]);
    22. SpawnPlayer(playerid);
    23. SpielerDaten[playerid][player_Eingeloggt] = true;
    24. format(string,sizeof(string),"{FFFFFF}Willkommen zurück, {ab258a}%s[%d]",SpielerDaten[playerid][player_Name],playerid);
    25. SendClientMessage(playerid,WEISS,string);
    26. new string1[128];
    27. format(string1,sizeof(string1),"%s[%d] hat den Server betreten",SpielerDaten[playerid][player_Name],playerid);
    28. SendClientMessageToAll(WEISS,string1);
    29. }
    30. return 1;
    31. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Allrounder18 ()

  • Allrounder18 schrieb:

    Diese Fubktion benutze ich bereits. Immer wenn ich das Passwort falsch eingebe lande ich am Nullpunkt.

    Edit:

    Ich habs jetzt mal ohne der Funktion von Colney getestet, wenn ich bei OnPlayerRequestClass
    TogglePlayerSpectating(playerid, true); reinschreibe und beim Logindialog ei falsches Psswort eingebe lade ich am Nullpunkt, jeoch wen TogglePlayerSpectating(playerid, true); nicht vorhanen ist, steht nur dass das Passwort falsch ist.


    Der Login Dialog

    Quellcode

    1. case DIALOG_LOGIN:
    2. {
    3. new string[64];
    4. if(!response)return Kick(playerid);
    5. if(strlen(inputtext) < 6 || strlen(inputtext) > 24)
    6. {
    7. format(string,sizeof(string),"{FFFFFF}Der Account {E8BD1A}%s {FFFFFF}wurde gefunden\nBitte gebe das Passwort ein",SpielerDaten[playerid][player_Name]);
    8. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung",string, "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    9. }
    10. new query[256];
    11. mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%e' AND `passwort` = MD5('%e')",SpielerDaten[playerid][player_Name], inputtext);
    12. mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    13. TogglePlayerSpectating(playerid, false);
    14. return 1;
    Alles anzeigen

    OnUserLogin

    Quellcode

    1. CALLBACK: OnUserLogin(playerid)
    2. {
    3. new rows,string[500];
    4. cache_get_row_count(rows);
    5. if(rows == 0)
    6. {
    7. format(string,sizeof(string), "Dieses Passwort ist falsch");
    8. SendClientMessage(playerid,WEISS,string);
    9. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    10. }
    11. else
    12. {
    13. cache_get_value_name_int(0, "id", SpielerDaten[playerid][player_ID]);
    14. cache_get_value_name_int(0, "adminrang", SpielerDaten[playerid][player_Admin]);
    15. cache_get_value_name_int(0, "whitelist", SpielerDaten[playerid][player_Whitelist]);
    16. cache_get_value_name_float(0, "x", SpielerDaten[playerid][player_Spawn][0]);
    17. cache_get_value_name_float(0, "y", SpielerDaten[playerid][player_Spawn][1]);
    18. cache_get_value_name_float(0, "z", SpielerDaten[playerid][player_Spawn][2]);
    19. cache_get_value_name_float(0, "r", SpielerDaten[playerid][player_Spawn][3]);
    20. cache_get_value_name_int(0, "interior", SpielerDaten[playerid][player_Interior]);
    21. cache_get_value_name_int(0, "welt", SpielerDaten[playerid][player_Welt]);
    22. SpawnPlayer(playerid);
    23. SpielerDaten[playerid][player_Eingeloggt] = true;
    24. format(string,sizeof(string),"{FFFFFF}Willkommen zurück, {ab258a}%s[%d]",SpielerDaten[playerid][player_Name],playerid);
    25. SendClientMessage(playerid,WEISS,string);
    26. new string1[128];
    27. format(string1,sizeof(string1),"%s[%d] hat den Server betreten",SpielerDaten[playerid][player_Name],playerid);
    28. SendClientMessageToAll(WEISS,string1);
    29. }
    30. return 1;
    31. }
    Alles anzeigen
    Ich denke mal @Kaliber und @LeonMrBonnie sind da Erfahrener als ich. Ich sehe da keinen Fehler. ^^
  • Nimm das TogglePlayerSpectating(playerid, false) aus dem Login Dialog und Pack es stattdessen über das SpawnPlayer, bei der richtigen Passworteingabe im OnUserLogin Callback.
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Auch im Bereich JavaScript und dort der RageMP API helfe ich gern.

    Konversation: Konversation starten
    Discord: LeonMrBonnie#2251

  • Moin!

    Mein Server nimmt das OnUserRegister nicht an.

    Quellcode

    1. CALLBACK: OnUserRegister(playerid)
    2. {
    3. printf("Reg");
    4. SpielerDaten[playerid][player_ID] = cache_insert_id();
    5. SpielerDaten[playerid][player_Eingeloggt] = true;
    6. SpielerDaten[playerid][player_Spawn][0] = 2090.5776;
    7. SpielerDaten[playerid][player_Spawn][1] = 1743.2261;
    8. SpielerDaten[playerid][player_Spawn][2] = 10.6719;
    9. SpielerDaten[playerid][player_Spawn][3] = 348.7013;
    10. SpielerDaten[playerid][player_Interior] = 0;
    11. SpielerDaten[playerid][player_Welt] = 0;
    12. TogglePlayerSpectating(playerid, false);
    13. SpawnPlayer(playerid);
    14. new string[128];
    15. format(string,sizeof(string),"{FFFFFF}Text, {FE0000}%s[%d]",SpielerDaten[playerid][player_Name],playerid);
    16. SendInfo(playerid,string);
    17. return 1;
    18. }
    Alles anzeigen


    Eigenartigerweise sehe ich den string, jedoch zeigt er dort wo die Farbe gesetztist eine andere Farbe an. Ich hab das Callback nur einmal im Script. Was ist da falsch?

    MfG

    Edit: Die Funktion wird jetztin der Console geprintet, jedoch wird ingameimmer noch die falsche Farbe angezeigt.

    Edit2: Fehler gefunden, aber der Spawnbutton wird noch angezeigt bei der Registration. hab mal die Zeile TogglePlayerSpectating im Code eingefügt, siehe oben. Stimmt das so?

    Edit3: Jetzt wird bei der Registrierung der Button nur kurz angezeigt weil ich vorhi de chat löschen lasse aber der Chat soll ganz weg sen mit dem Button, was muss ich da machen? Wenn ichbei der Registrierung das Passwort eingebe spawne ich nicht, sondern fliege durch die Luft, was kan da falsch sein?

    So fliege ich durch die Luft: prnt.sc/p2sj2t

    Edit4: Alles andere hat sich erledigt, nur folgendes pasiert immer noch:

    Ich joine auf den Server un dann kommt diese Connectet to Meldungund der Spawn Button ganz kurz und dann wird der Chat geleert, und dann komt der Dialog für Register oder Login ohne Spawn Button. Wie bekomme ich diese Meldung und den Button weg?

    Die Funktion ChatLoeschen steht bei OnPlayerConnect und bei OnPlayerRequestClass.

    Quellcode

    1. stock ChatLoeschen(playerid,foronlyaplayerorall)
    2. {
    3. switch(foronlyaplayerorall)
    4. {
    5. case 0:
    6. {
    7. for(new i=0;i<100;i++)
    8. {
    9. SendClientMessage(playerid,WEISS,"");
    10. }
    11. return 1;
    12. }
    13. case 1:
    14. {
    15. for(new i=0;i<100;i++)
    16. {
    17. SendClientMessageToAll(WEISS,"");
    18. }
    19. return 1;
    20. }
    21. }
    22. return 1;
    23. }
    Alles anzeigen

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Allrounder18 ()

  • Moin, mir ist gerade was aufgefallen.
    Ich habe versucht mit der Funktion GetPlayerTargetActor zu arbeiten & sie arbeitet aber mit dem grünen Kegel über dem Kopf wenn man jemanden anvisiert.
    Mein Helfer, hat warum auch immer, generell keinen grünen Kegel über seinem Kopf.. die Funktion greift nicht bei ihm.
    Ich arbeite nun mit GetPlayerCameraTargetActor und ja klar, das funktioniert, aber die Range beim Zielen ist um einiges größer, diese Funktion erfragt ja auch ob man ihn anschaut, nicht ob man ihn anvisiert.
    Ist das jemanden schon einmal aufgefallen und gibt es dafür einen Fix/andere Methoden?
    Es geht um ein Actor Rob Sytem, drauf zielen heißt, der Raub startet.
    Рыба лично :rolleyes:
  • Kasakow schrieb:

    Moin, mir ist gerade was aufgefallen.
    Ich habe versucht mit der Funktion GetPlayerTargetActor zu arbeiten & sie arbeitet aber mit dem grünen Kegel über dem Kopf wenn man jemanden anvisiert.
    Mein Helfer, hat warum auch immer, generell keinen grünen Kegel über seinem Kopf.. die Funktion greift nicht bei ihm.
    Ich arbeite nun mit GetPlayerCameraTargetActor und ja klar, das funktioniert, aber die Range beim Zielen ist um einiges größer, diese Funktion erfragt ja auch ob man ihn anschaut, nicht ob man ihn anvisiert.
    Ist das jemanden schon einmal aufgefallen und gibt es dafür einen Fix/andere Methoden?
    Es geht um ein Actor Rob Sytem, drauf zielen heißt, der Raub startet.
    ich habe mich gerade ungelesen und anschließend soll die Funktion GetPlayerTargetActor(); unter folgendem callback nicht funktionieren:
    OnPlayerUpdate,
    OnPlayerKeyStateChange(Ausnahme du nutzt ein Timer da es sonst rum buggen soll wenn man die Taste gedrückt hält)

    Ps: ich habe dies nicht ausprobiert sondern im Englischen Samp Forum gelesen.


    //edit was mich wundert in der SAMP wiki wird das Beispiel auch im callback OnPlayerUpdate genutzt.
  • Kasakow schrieb:

    Nur, für leute die keinen Kegel haben, funktioniert es nicht.
    Ich frage mich eher, wieso dies der Fall ist :huh:

    Hmmmm....

    Hast du mal probiert, den Actor zu löschen und wieder neu zu erstellen während du davor stehst (also schon im Interior bist)?

    Ändert sich da was?

    Ich könnte mir höchstens vorstellen, da diese Clientseitig gestreamt werden, dass da was buggt mit der syncro xD

    Evtl also mal neu spawnen lassen oder sowas...denn generell sollte das ja schon klappen :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Ich werde es morgen, wenn der andere Dude wieder da ist, mal ausprobieren.
    Mal eine andere Frage, ich habe in einem anderen Skript etwas entdeckt und frage mich, inwiefern das Sinnvoll sein könnte.
    Meine aktuelle Vermutung sagt aus, dass man sich in manchen Situationen, die if Abfrage dann sparen kann.

    Würde mit meinem Code, erlaubt auf 532 gesetzt werden und nee gar nicht besetzt weil es auf 0 steht?

    PAWN-Quellcode

    1. //funktion nutzen
    2. TestFunktion(532, 0);
    3. //funktion
    4. stock TestFunktion(genau, niemals)
    5. {
    6. new id = 999;
    7. testArray[id][Erlaubt] =!! genau;
    8. testArray[id][Nee] =!! niemals;
    9. return 1;
    10. }
    Alles anzeigen
    Рыба лично :rolleyes:
  • Kasakow schrieb:

    erlaubt auf 532 gesetzt werden und nee gar nicht besetzt weil es auf 0 steht?
    Dieses !! verwandelt eine Zahl einfach nur in einen boolschen Typ.

    Alle Zahlen außer 0 werden zu true und die 0 wird zu false.

    Ergo wird 532 (sowie jede andere Zahl auch) zu true (bzw 1) und die 0 wird zu false (bzw bleibt 0).


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

    Beitrag von Pablo.Escobar ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Hat sich erledigt ().
  • Neu

    Kasakow schrieb:

    Mein Helfer, hat warum auch immer, generell keinen grünen Kegel über seinem Kopf.. die Funktion greift nicht bei ihm.
    Warum auch immer?
    Naja dein Helfer verwendet vermutlich Modifikationen, oft bekannt als "Anti Aim" was deine Surfing Vehicle ID auf ein Fahrzeug in der Umgebung setzt, oder je nach variante mit anderen dingen trickst, damit dieser verschwindert. Kannst ja mal unter GetPlayerSurfingVehicleID schauen.

    Andernfalls etwas wie forum.sa-mp.com/showthread.php?t=140765 . z.B. und Keys checken.
  • Neu

    "Allows to create multiple connections to the same database and server."
    Das ist ja richtig schlecht.. eieiei... the same ..

    //EDIT
    Kann mir jemand sagen wie ich bestimmte Zeichen aus einem String entferne? Ich möchte dass Zeichen wie ":" oder "," entfernt werden und man somit den String besser auswerten kann.
    Рыба лично :rolleyes:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Kasakow ()

  • Neu

    Gibt da eine Funktion von Slice aus dem englischsprachigem Forum


    PAWN-Quellcode

    1. stock strreplace(string[], const search[], const replacement[], bool:ignorecase = false, pos = 0, limit = -1, maxlength = sizeof(string)) {
    2. // No need to do anything if the limit is 0.
    3. if (limit == 0)
    4. return 0;
    5. new
    6. sublen = strlen(search),
    7. replen = strlen(replacement),
    8. bool:packed = ispacked(string),
    9. maxlen = maxlength,
    10. len = strlen(string),
    11. count = 0
    12. ;
    13. // "maxlen" holds the max string length (not to be confused with "maxlength", which holds the max. array size).
    14. // Since packed strings hold 4 characters per array slot, we multiply "maxlen" by 4.
    15. if (packed)
    16. maxlen *= 4;
    17. // If the length of the substring is 0, we have nothing to look for..
    18. if (!sublen)
    19. return 0;
    20. // In this line we both assign the return value from "strfind" to "pos" then check if it's -1.
    21. while (-1 != (pos = strfind(string, search, ignorecase, pos))) {
    22. // Delete the string we found
    23. strdel(string, pos, pos + sublen);
    24. len -= sublen;
    25. // If there's anything to put as replacement, insert it. Make sure there's enough room first.
    26. if (replen && len + replen < maxlen) {
    27. strins(string, replacement, pos, maxlength);
    28. pos += replen;
    29. len += replen;
    30. }
    31. // Is there a limit of number of replacements, if so, did we break it?
    32. if (limit != -1 && ++count >= limit)
    33. break;
    34. }
    35. return count;
    36. }
    Alles anzeigen


    Verwendung:

    PAWN-Quellcode

    1. new string[128] = "Hello world";
    2. strreplace(string, "world", "earth"); // string = "Hello earth"
    3. strreplace(string, "HELLO", "Hola"); // string = "Hello earth" (no match for "HELLO")
    4. strreplace(string, "HELLO", "Hola", .ignorecase = true); // string = "Hola earth"
    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN