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!

  • deklaN schrieb:

    Tach,
    ich hab das Problem das ich gewisse Textdraws nicht "hiden" oder "destroyen" kann.

    Beispiel:

    PAWN-Quellcode

    1. PlayerTextDrawSetString(playerid, MSGTextdrawPlayer[playerid], "Message"); PlayerTextDrawShow(playerid, MSGTextdrawPlayer[playerid]);


    Dann will ich das es dem Spieler halt nicht mehr angezeigt wird, also Hide ich es.
    Allerdings wird es trotzdem weiterhin angezeigt.. bis zum nächsten Login sogesehen.

    PAWN-Quellcode

    1. PlayerTextDrawHide(playerid, MSGTextdrawPlayer[playerid]);


    Was mache ich Falsch?
    tachTach,

    deklaN schrieb:

    ich hab das Problem das ich gewisse Textdraws nicht "hiden" oder "destroyen" kann.

    Beispiel:

    PAWN-Quellcode

    1. PlayerTextDrawSetString(playerid, MSGTextdrawPlayer[playerid], "Message"); PlayerTextDrawShow(playerid, MSGTextdrawPlayer[playerid]);


    Dann will ich das es dem Spieler halt nicht mehr angezeigt wird, also Hide ich es.
    Allerdings wird es trotzdem weiterhin angezeigt.. bis zum nächsten Login sogesehen.

    PAWN-Quellcode

    1. PlayerTextDrawHide(playerid, MSGTextdrawPlayer[playerid]);


    Was mache ich Falsch?
    shalom.
    Hat niemand ne idee..?
  • Kaliber schrieb:

    Wie deklarierst du die Variable (also das mit new) und wie setzt du den Wert der Variable?

    PAWN-Quellcode

    1. new PlayerText:MSGTextdrawPlayer[MAX_PLAYERS];



    SkeeZy schrieb:

    deklaN schrieb:

    Hat niemand ne idee..?
    Wird dein Textdraw mehrfach erstellt ? Es wird soweit ich weiß nur das letzte Textdraw gelöscht, heißt wenn du 2x das gleiche Textdraw showst, ist es doppelt da, kann aber nicht doppelt wieder versteckt werden.Bin mir aber nicht sicher... hatte mal ein ähnliches Problem
    Nein wird es nicht...




    Kann ich es theoretisch nochmal aufrufen und dann direkt hiden? würde das was bringen?
  • @deklaN: Das beantwortet nur eine meiner zwei Fragen...

    Die Andere war, wie du das zuweist bzw welchen Wert die Variable hat.

    Kannst es dir ja mal printen lassen (da wo du das TextDraw erstellst und wo du es nutzt jeweils printen lassen und vergleichen).

    PAWN-Quellcode

    1. printf("%d", _:MSGTextdrawPlayer[playerid]);


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

    Ich hab ein Problem bei meinem Loginsystem, und zwar steht da immer as das Passwort falsch ist obwohl ich es richtig eingebe. Ich denk es liegt an der Registerfunktion.

    Was ist da falsch?

    PAWN-Quellcode

    1. public OnUserCheck(playerid)
    2. {
    3. new rows;
    4. cache_get_row_count(rows);
    5. ShowLoginScreen(playerid);
    6. if(rows == 0)
    7. {
    8. ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registration ", "{FFFFFF}Um fortzufahren wähle bitte ein Passwort", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    9. }
    10. else
    11. {
    12. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    13. }
    14. return 1;
    15. }
    16. public OnUserRegister(playerid)
    17. {
    18. UserDaten[playerid][user_ID] = cache_insert_id();
    19. UserDaten[playerid][user_Eingeloggt] = true;
    20. format(UserAccDaten[playerid][user_acc_RPVorName],255, "%s", UserAccDaten[playerid][user_acc_RPVorName]);
    21. format(UserAccDaten[playerid][user_acc_RPNachName], 255, "%s", UserAccDaten[playerid][user_acc_RPNachName]);
    22. UserAccDaten[playerid][user_acc_Level] = 1;
    23. new string[128];
    24. format(string,sizeof(string),"{FFFFFF}Herzlich Willkommen auf Austrian Roleplay, {ab258a}%s[%d]",UserDaten[playerid][user_Name],playerid);
    25. SendServerMessage(playerid,string);
    26. return 1;
    27. }
    28. public OnUserLogin(playerid)
    29. {
    30. new rows,string[140];
    31. cache_get_row_count(rows);
    32. if(rows == 0)
    33. {
    34. format(string,sizeof(string), "Das angegebene Passwort ist falsch");
    35. SendErrorMessage(playerid,string);
    36. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    37. }
    38. else
    39. {
    40. UserDaten[playerid][user_Eingeloggt] = true;
    41. cache_get_value_name_int(0, "user_id", UserDaten[playerid][user_ID]);
    42. SpawnPlayer(playerid);
    43. HideLoginScreen(playerid);
    44. format(string,sizeof(string),"{FFFFFF}Willkommen zurück, {B90000}%s[%d]",UserDaten[playerid][user_Name],playerid);
    45. SendServerMessage(playerid,string);
    46. new string1[128];
    47. format(string1,sizeof(string1),"{B90000}%s[%d] {FFFFFF}hat den Server betreten",UserDaten[playerid][user_Name],playerid);
    48. SendServerMessageToAll(string1);
    49. }
    50. return 1;
    51. }
    52. case DIALOG_REGINFO:
    53. {
    54. if(!response) return Kick(playerid);
    55. if(strlen(inputtext) < 6 || strlen(inputtext) > 24)
    56. {
    57. SendErrorMessage(playerid,"Das angegebene Passwort hat nicht die richtige Länge <6-24>");
    58. return ShowPlayerDialog(playerid, DIALOG_REGINFO, DIALOG_STYLE_PASSWORD, "{FFFFFF}Registration", "{FFFFFF}Um fortzufahren wähle bitte ein Passwort", "{FFFFFF}Weiter", "{FFFFFF}Abbrechen");
    59. }
    60. format(UserDaten[playerid][user_Passwort], 225, "%s", inputtext);
    61. ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    62. return 1;
    63. }
    64. case DIALOG_LOGIN:
    65. {
    66. if(!response)return Kick(playerid);
    67. if(strlen(inputtext) < 6 || strlen(inputtext) > 24)
    68. {
    69. new string[128];
    70. format(string,sizeof(string), "Das angegebene Passwort ist falsch");
    71. SendErrorMessage(playerid,string);
    72. return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "{FFFFFF}Anmeldung", "{FFFFFF}Um spielen zu können musst du dich einloggen", "{FFFFFF}Einloggen", "{FFFFFF}Abbrechen");
    73. }
    74. new query[500];
    75. mysql_format(handle, query, sizeof(query), "SELECT * FROM `accounts` WHERE `name` = '%e' AND `passwort` = MD5('%e')",UserDaten[playerid][user_Name], inputtext);
    76. mysql_pquery(handle, query, "OnUserLogin", "d", playerid);
    77. return 1;
    78. }
    Alles anzeigen
    MfG

    Allrounder18
  • Kaliber schrieb:

    Bei der Registrierung wird dein Passwort nicht gehasht?

    Steht das denn in Klartext in der Datenbank? (Oh nooooo :/ )

    Generell ist aber auch von MD5 abzuraten: breadfish.de/index.php?thread/…ren-genauer-erkl%C3%A4rt/
    Das Passwort sollt sehrwohl gehast werden. Oder was hab ich vergessen?

    Edit: Ich hab jetzt mal bcrypt verwendet, jedoch wie mach ich das? Ich hab jetzt ma die Aleitug be deiem Lin befolgt, jedoch weiß ich nicht wie es weitergeht.

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


  • Allrounder18 schrieb:

    Das Passwort sollt sehrwohl gehast werden. Oder was hab ich vergessen?
    Steht es denn gehasht in der Datenbank? Kannste doch einfach testen.


    Allrounder18 schrieb:

    Edit: Ich hab jetzt mal bcrypt verwendet, jedoch wie mach ich das? Ich hab jetzt ma die Aleitug be deiem Lin befolgt, jedoch weiß ich nicht wie es weitergeht.
    Dann lass es jetzt erstmal so, aktuell habe ich keine Zeit oder experimentiere etwas rum, oder evlt ist jemand so nett und erläutert das etwas ^^

    Wo genau hängst du denn? :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Danke, es hat geklappt. ich hab einfach das Insert dingens bei Register vergessen.

    Edit: Ich möchte, dass bei Server Restart ein Passwort gesetzt wird.
    Funktioniert das so oder muss ich es anders mahen? Kann ich den Timer lassen oder ist der unnötig?
    Bei OnGamemodeIit steht dann SendRconCommand("password 0");

    Quellcode

    1. ocmd:restart(playerid)
    2. {
    3. SendRconCommand("password ****");
    4. SetTimer("Restart",100, false);
    5. Kick(playerid);
    6. return SendRconCommand("gmx");
    7. }

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

  • Was genau machst du da?
    Du setzt ein Passwort, jedoch gleichzeitig lässt du den Server Restarten, wenn der Server neu startet, kann dazwischen (während des Restarts) eh keiner drauf connecten.
    Was macht der Timer?

    Wenn du nicht direkt den Server neustarten lässen möchtest, dann setzt in deinem restart Befehl "SendRconCommand("password 123"); und führe den Timer nach X Zeit aus und lass dort dann den rcon gmx durchführen.
    Ansonsten wenn du ihn direkt neu starten möchtest bei Befehl Eingabe, kannst du das Passwort weg lassen.
  • @Allrounder18

    Habe gerade dein Edit gelesen könntest auch mit params arbeiten aber hier z.b:
    Du hast vergessen alle Spieler rauszuwefen, habe die Arbeit mal für dich erledigt.

    C-Quellcode

    1. ocmd:restart(playerid)
    2. {
    3. SendRconCommand("password ****");
    4. SetTimer("Restart",100, false);
    5. for(new id = 0; id < MAX_PLAYERS; id++)
    6. {
    7. if(IsPlayerConnected(id))
    8. {
    9. Kick(id);
    10. }
    11. }
    12. }
    13. //Im Timer dann Neustarten und Passwort auf 0 setzen, wenn du eine Lösung gefunden hast
    Alles anzeigen

    Ich weiß, dass ich weiß, dass ich nichts weiß.
  • PAWN-Quellcode

    1. for(new id = 0; id < MAX_PLAYERS; id++)

    am besten zu

    Quellcode

    1. for(new id = 0, j = GetPlayerPoolSize(); id < j; id++) //Besser als MAX_PLAYERS. Hab ich am eigenen Leib erfahren ^^

    GetPlayerPoolSize() nimmt nämlich die größte playerID und loopt nur durch die IDs darunter.


    PAWN-Quellcode

    1. ocmd:restart(playerid, params[]) //Hast hier das params[] vergessen

    @Allrounder18
    MfG. Adrian