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

  • Probier mal das


    Jeffry schrieb:

    Siehe hier:
    Nützliche Codeschnipsel


    PAWN-Quellcode

    1. new age = GetPlayerAge(inputtext);if(age == -1) return SendClientMessage(playerid, 0xFF0000FF, "Error: Ungültiges Geburtsdatum.");



    Spoiler anzeigen

    PAWN-Quellcode

    1. new stock g_days_m[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};stock GetPlayerAge(input[]) //©Jeffry{ new date[12]; strcat(date, input); if(date[1] == '.') strins(date, "0", 0, 12); if(date[4] == '.') strins(date, "0", 3, 12); if(!date[9] || date[10]) return -1; new day = 10*(date[0]-48)+(date[1]-48); new month = 10*(date[3]-48)+(date[4]-48); new year = 1000*(date[6]-48)+100*(date[7]-48)+10*(date[8]-48)+(date[9]-48); if(year < 1000 || year > 9999 || month < 1 || month > 12 || day < 1) return -1; if(month == 2) { if(day > 28 && (year % 4 != 0 || (year % 100 == 0 && year % 400 != 0))) return -1; } else if(day > g_days_m[month-1]) return -1; new d, m, y; getdate(y, m, d); new age = y - year; if(m < month) age--; else if(m == month && d < day) age--; return (age < 0) ? (-1) : (age);}

  • PAWN-Quellcode

    1. GetAlter(strval(Date[0]),strval(Date[1]),strval(Date[2])


    Was muss ich hier ändern?

    Habe ich in dem Stock die Möglichkeit zu sagen, das er nicht alter das geburtsdatu nicht vor 1930 und nach 2015 setzen kann?
    Kann ich es so machen, das egal ob man sich 2019 oder 2020 registriert der Charakter immer nur manimal 14 Jahre alt sein kann?

    Edit: Ich hab den Codeschnipsel getestet, jetzt steht bei Alteri der DB 101 wenn ich 23 Jahre bin.

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

  • Hey,

    Ich habe mal eine frage,

    Ich wollte gerade was schreiben das man ingame auch die Fraktionen Bearbeiten kann heißt Spawn Fraktionskasse usw wie würdet ihr das hand haben mit den Fraktions Spawn?
    -> Eher Per Dialog wo man die Koordinaten eingeben muss.
    -> Eher per Command.

    Ich weiß nicht wie ich das am besten machen soll mit den Fraktions Spawn der rest ist mir schon verständlich genug :D
  • Dr. Frauenarzt schrieb:

    Hey,

    Ich habe mal eine frage,

    Ich wollte gerade was schreiben das man ingame auch die Fraktionen Bearbeiten kann heißt Spawn Fraktionskasse usw wie würdet ihr das hand haben mit den Fraktions Spawn?
    -> Eher Per Dialog wo man die Koordinaten eingeben muss.
    -> Eher per Command.

    Ich weiß nicht wie ich das am besten machen soll mit den Fraktions Spawn der rest ist mir schon verständlich genug :D
    Einen Befehl.
    Statt dort Koordinaten eingeben zu müssen, sollte einfach der Spawn zu der Position des Spielers gesetzt werden, ist viel einfacher.
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251


  • Spoiler anzeigen

    C-Quellcode

    1. case DIALOG_FRAKTION_LSPD_WERTO:
    2. {
    3. new string[248], menge = strval(inputtext);
    4. if(response == 0)return 1;
    5. else
    6. {
    7. if(!strval(inputtext))
    8. {
    9. format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des 'L.S.P.D' steht auf %d.\nSetze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTO, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück");
    10. return 1;
    11. }
    12. if(!IsNumeric(inputtext))
    13. {
    14. format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des 'L.S.P.D' steht auf %d.\nSetze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTO, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück");
    15. return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Gebe nur Zahlen ein!");
    16. }
    17. if(menge < 0 || menge > 1)
    18. {
    19. format(string, sizeof(string), "{FFFFFF}Die Fraktionskasse des 'L.S.P.D' steht auf %d.\nSetze den Wert auf {33AA33}0 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu schließen.\nSetze den Wert auf {33AA33}1 {FFFFFF}um die Fraktion {33AA33}'L.S.P.D' {FFFFFF}zu öffnen.", Frak[1][frakKasseOn]), ShowPlayerDialog(playerid, DIALOG_FRAKTION_LSPD_WERTO, DIALOG_STYLE_INPUT, "{247BA6}Fraktion: {FFFFFF}: L.S.P.D", string, "Absenden","Zurück");
    20. return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Gib bitte nur ein Gehalt von 0 - 1 an!");
    21. }
    22. Frak[1][frakKasseOn] = menge;
    23. format(string,sizeof(string),"{FFFFFF}Du hast die Fraktionskasse des {33AA33}'L.S.P.D' {FFFFFF}auf {33AA33}%d {FFFFFF}gesetzt.", menge);
    24. SendClientMessage(playerid, COLOR_WHITE, string);
    25. SaveAllFraktion();
    26. return 1;
    27. }
    28. }
    Alles anzeigen


    Hey,

    Kurze frage wen ich 0 eingebe kommt der Dialog wieder?
    Also scheinbar mag er die 0 nicht ist doch alles richtig oder sehe ich das Falsch :D?
  • Kann es sein, dass in meiner Tablle etwas falsch ist und deswegen Alter 101 steht?


    Edit: Muss ich beim Abspeichern des Alters mit GetAlter arbeiten bzw. es beim Abspeichern anders berechnen?
    @Kaliber hast du bitte vlt ne Lösung?

    Edit: Problem gelöst. Danke an alle die einen Lösungsansatz gebracht haben!

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

  • Neu

    Abend,
    Ich habe bei meinem Blitzer System eine frage.
    Unswa wenn ich auf den Blitzer zufahre dann Blitzt er nicht aber sobald ich hinter dem Blitzer bin Blitzt er.
    Ich habe mir das Ganze mal Printen lassen weiß aber nicht was ich dagegen machen soll

    Quellcode

    1. if(IsPlayerFacingPos(playerid, 180.0, Blitzi[i][blitz_x], Blitzi[i][blitz_y]))
    2. {
    3. if(Blitztime[playerid] == 0 || Blitztime[playerid] > gettime())
    4. {
    5. Blitz_Player(playerid);
    6. Blitztime[playerid] = gettime() + 60*15;
    7. }
    8. }

    Quellcode

    1. IsPlayerFacingPos(playerid, Float: de, Float: X, Float: Y) {
    2. new
    3. Float: pX,
    4. Float: pY,
    5. Float: pZ
    6. ;
    7. if(GetPlayerPos(playerid, pX, pY, pZ)) {
    8. pX = -atan2(pX - X, pY - Y);
    9. if(pX < 0.0) {
    10. pX += 360.0;
    11. }
    12. GetPlayerFacingAngle(playerid, pY);
    13. printf("pX = %f pY = %f", pX, pY);
    14. pX -= pY;
    15. if(pX < -180) {
    16. pX += 360.0;
    17. }
    18. else if(pX > 180.0) {
    19. pX -= 360.0;
    20. }
    21. printf("%f < %f < %f", -de, pX, de);
    22. return (-de < pX < de);
    23. }
    24. return false;
    25. }
    Alles anzeigen



    Spoiler anzeigen

    Quellcode

    1. //Bin Vor dem Blitzer ( kein Blitzer )
    2. [22:33:16] pX = 266.194030 pY = 106.402290
    3. [22:33:16] -50.000000 < 159.791748 < 50.000000
    4. //Bin am Blitzer vor ( er Blitzt )
    5. [22:33:45] pX = 137.451522 pY = 103.471153
    6. [22:33:45] -50.000000 < 33.980369 < 50.000000
    7. //Bin Vor dem Blitzer ( kein Blitzer )
    8. [22:35:00] pX = 285.677307 pY = 93.044090
    9. [22:35:00] -50.000000 < -167.366790 < 50.000000
    10. //Bin am Blitzer vor ( er Blitzt )
    11. [22:35:30] pX = 81.283630 pY = 93.853813
    12. [22:35:30] -50.000000 < -12.570182 < 50.000000
    Alles anzeigen



    @Kaliber
    @Jeffry
    Habt ihr noch ein Plan ?
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

    Biete Scripting Service an bei Interesse ->Pn
    Verkaufe Selfmade Script bei Interesse -> Pn

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

  • Neu

    Hi!

    Wie kann ich machen,dass von dem Namen die Unterstriche im Chat entfernt werden z.B(Max_Mustermann -> Max Mustermann)?

    MfG

    Edit:
    Momentan versuche ich es so

    C-Quellcode

    1. stock strreplace(string[], find, replace)
    2. {
    3. for(new i=0; string[i]; i++)
    4. {
    5. if(string[i] == find)
    6. {
    7. string[i] = replace;
    8. }
    9. }
    10. }



    C-Quellcode

    1. public OnPlayerText(playerid, text[])
    2. {
    3. new message[128],rpname[255];
    4. rpname = SpielerDaten[playerid][player_RPName];
    5. strreplace(rpname, '_', ' ');
    6. format(message, sizeof(message), "{969696}%s sagt: {FFFFFF}%s", rpname, text);
    7. return SendClientMessageToAll(WEISS, message);
    8. }

    Das funktioniert jedoch nicht.


    Was muss ich da machen damit das _ im RP Namen mit nem Leerzeichen ersetzt wird?

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

  • Neu

    PAWN-Quellcode

    1. stock RemoveUnderscore(text[])
    2. {
    3. new len, string[];
    4. format(string,sizeof(string),text);
    5. len = strlen(string);
    6. for(new i=0;i<len;i++)
    7. {
    8. if(string[i] == '_') string[i] = ' ';
    9. }
    10. return string;
    11. }
    12. public OnPlayerText(playerid, text[])
    13. {
    14. new message[128],rpname[255];
    15. rpname = RemoveUnderscore(SpielerDaten[playerid][player_RPName]);
    16. format(message, sizeof(message), "{969696}%s sagt: {FFFFFF}%s", rpname, text);
    17. return SendClientMessageToAll(WEISS, message);
    18. }
    Alles anzeigen
    Nicht getestet, sollte aber funktionieren.
    Ich helfe zu allen Fragen bezüglich PAWN Scripting gerne weiter.
    Ich biete auch einen Scripting Service an: Scripting Service

    Konversation: Konversation starten

    Discord: LeonMrBonnie#2251

  • Neu

    Danke, es funktioniert einwandfrei

    Edit:

    Quellcode

    1. public OnPlayerText(playerid, text[])
    2. {
    3. new Float:x, Float:y, Float:z;
    4. GetPlayerPos(playerid, x, y, z);
    5. new message[128],rpname[255],string[128];
    6. rpname = RemoveUnderscore(SpielerDaten[playerid][player_RPName]);
    7. format(message, sizeof(message), "%s sagt: {FFFFFF}%s", rpname, text);
    8. new chat_color;
    9. for(new i=0; i<MAX_PLAYERS; i++)
    10. {
    11. if(!SpielerDaten[i][player_Eingeloggt]) continue;
    12. if(!IsPlayerInRangeOfPoint(i, CHAT_RADIUS, x, y, z))continue;
    13. new Float:distance = GetPlayerDistanceFromPoint(i, x, y, z);
    14. if(distance < CHAT_RADIUS / CHAT_FADES)
    15. {
    16. chat_color = COLOR_CHAT;
    17. }
    18. else if(distance < CHAT_RADIUS / CHAT_FADES * 2)
    19. {
    20. chat_color = COLOR_FADE1;
    21. }
    22. else if(distance < CHAT_RADIUS / CHAT_FADES * 3)
    23. {
    24. chat_color = COLOR_FADE2;
    25. }
    26. else if(distance < CHAT_RADIUS / CHAT_FADES * 4)
    27. {
    28. chat_color = COLOR_FADE3;
    29. }
    30. else if(distance <= CHAT_RADIUS / CHAT_FADES * 5)
    31. {
    32. chat_color = COLOR_FADE4;
    33. }
    34. SendClientMessage(i, chat_color, string);
    35. }
    36. return 0;
    37. }
    Alles anzeigen

    Ich ba jetzt gemacht das sich die Farbe ändert je weiter die anderen Spieler weg sind, jedoch wird die Nachricht nicht angezeigt. Was ist da falsch?
    @LeonMrBonnie

    Edit: Code umgebessert
    Muss es if(!SpielerDaten[player_Eingeloggt](i)) continue; sein oder ohne (i)?

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