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

    Beitrag von Allrounder18 ()

    Dieser Beitrag wurde von Canna aus folgendem Grund gelöscht: Like Button! ().
  • Erstmal danke noch einmal @Kaliber.

    Quellcode

    1. stock const Float:ticketATM[][] =
    2. {
    3. {1148.9121,-1464.1848,18.5138,270.0000}, //1
    4. {1609.9197,-524.0646,15.5138,450.0000}, //2
    5. {1910.7603,-751.3950,19.5138,270.0000}, //3
    6. {9951.0599,-150.2548,21.5138,450.0000} //4
    7. };


    Bin gerade an einem Punkt angelangt wo ich nicht mehr weiter komme :D
    Will die nähsten Koordinaten herausfinden und dort soll ein Checkpoint erstellt werden.
    Freue mich über jegliche Hilfe :)

    C-Quellcode

    1. ocmd:findnearestcords(playerid,params[])
    2. {
    3. for(new b;b<sizeof(bInfo);b++)
    4. {
    5. }
    6. return 1;
    7. }

    Ich weiß, dass ich weiß, dass ich nichts weiß.
  • Benutze das Include ja schon, den Checkpoint zu erstellen sollte kein Problem sein ^^
    Nur verstehe ich nicht wie ich ein Checkpoint an die nähste Koordinate setzte.

    Heißt in diesem Fall ich will ein Automat auffinden aber weiß nicht wo einer steht.
    Benutze den Befehl und ein Checkpoint wird dort erstellt wo es am nähsten dran ist.

    Kurze Frage noch dazu:
    Finde gerade auf die Schnelle nicht wie ich eine randomzahl von 100-300 generiere und nicht von 0-300

    Dazu, würde es mit dem if else Abfragen klappen? Oder wird es so nicht funktionieren?

    C-Quellcode

    1. new extramoney, zollgehalt;
    2. if(pInfo[playerid][pJobLevel1] == 1)
    3. {
    4. zollgehalt = 4350;
    5. extramoney = random(300);
    6. }
    7. else if(pInfo[playerid][pJobLevel1] == 2)
    8. {
    9. zollgehalt = 4750;
    10. extramoney = random(320);
    11. }
    12. else if(pInfo[playerid][pJobLevel1] == 3)
    13. {
    14. zollgehalt = 5050;
    15. extramoney = random(340);
    16. }
    17. else if(pInfo[playerid][pJobLevel1] == 4)
    18. {
    19. zollgehalt = 5110;
    20. extramoney = random(350);
    21. }
    22. else if(pInfo[playerid][pJobLevel1] == 5)
    23. {
    24. zollgehalt = 5210;
    25. extramoney = random(355);
    26. }
    27. else if(pInfo[playerid][pJobLevel1] == 5)
    28. {
    29. zollgehalt = 5510;
    30. extramoney = random(450);
    31. }
    32. pInfo[playerid][pGehalt] += zollgehalt;
    33. pInfo[playerid][pGehalt] += extramoney;
    34. format(string,sizeof(string),"Gehalt: %d extracasH:%d Einkommen:%d Joblevel: %d", zollgehalt, extramoney, pInfo[playerid][pGehalt]);
    Alles anzeigen

    Ich weiß, dass ich weiß, dass ich nichts weiß.
  • Du kannst es zwar mit den else if abfragen machen, schlauer wäre es aber ein switch zu verwenden.

    Für die random Zahl kannst du diese Funktion verwenden

    Quellcode

    1. #define randomEx(%1,%2) (random(%2)+%1)
    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

  • BrightLeaN schrieb:

    Nur verstehe ich nicht wie ich ein Checkpoint an die nähste Koordinate setzte.
    Dann frag das doch :D

    Du willst also nur wissen, wie du den nähsten Automaten findest :D

    C-Quellcode

    1. stock GetClosestATM(playerid)
    2. {
    3. new idx;
    4. for(new i, Float:dis, Float:m = 9999.0; i<sizeof(ticketATM); i++)
    5. {
    6. dis = GetPlayerDistanceFromPoint(playerid, ticketATM[i][0],ticketATM[i][1],ticketATM[i][2]);
    7. if(dis < m) m=dis,idx=i;
    8. }
    9. return i;
    10. }
    11. //Nutzung dann einfach so:
    12. new i = GetClosestATM(playerid);
    13. SetPlayerCheckpoint(playerid, ticketATM[i][0], ticketATM[i][1], ticketATM[i][2], 3.0);
    Alles anzeigen


    BrightLeaN schrieb:

    wie ich eine randomzahl von 100-300 generiere und nicht von 0-300

    PAWN-Quellcode

    1. new r = random(200)+100;

    Würde jetzt von 100 - 299 gehen.

    Oder willst du wirklich bis 300?

    Dann einfach im random 201 verwenden :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • Nabend, bin gerade irgendwie zu dämlich aber finde den Fehler nicht

    Quellcode

    1. [23:11:49] [ERROR] error #1064 while executing query "INSERT INTO `Drogenpflanzen`(`ID`, `X`, `Y`, `Z`, `RX`, `RY`, `RZ`, `Ersteller`, `Datum`) VALUES (0, 1098.699097, -303.529572, 72.092186, 0.000000, 0.000000, 0.000000, reaL., 1551737509)": You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'reaL., 1551737509)' at line 1
    2. [23:15:27] [ERROR] error #1064 while executing query "INSERT INTO `Drogenpflanzen`(`ID`, `X`, `Y`, `Z`, `RX`, `RY`, `RZ`, `Ersteller`, `Datum`) VALUES (0, 1096.704346, -300.652313, 72.092186, 0.000000, 0.000000, 0.000000, reaL., 1551737727)": You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'reaL., 1551737727)' at line 1

    Quellcode

    1. mysql_format(handle, string, sizeof(string), "INSERT INTO `Drogenpflanzen`(`ID`, `X`, `Y`, `Z`, `RX`, `RY`, `RZ`, `Ersteller`, `Datum`) VALUES (%d, %f, %f, %f, %f, %f, %f, %e, %d)", i, Drogeni[i][drogenpf_x], Drogeni[i][drogenpf_y], Drogeni[i][drogenpf_z], Drogeni[i][drogenpf_rx], Drogeni[i][drogenpf_ry], Drogeni[i][drogenpf_rz], Drogeni[i][drogenpf_ersteller], Drogeni[i][drogenpf_datum]);
    2. mysql_pquery(handle, string);
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

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

    1. ,'%e'

    Du hast in deinem Namen ein Punkt, der wird das ganze wahrscheinlich stören deshalb die Hochkommas

    Strings solltest du also immer in Hochkomma schreiben.

    PAWN-Quellcode

    1. '%s'
    wenn es um MySQL geht.

  • Du checkst nirgendwo ob der Spieler überhaupt connectet ist. Dazu ist der String dafür nur 128 Cells groß, was viel zu klein ist.

    Quellcode

    1. if(dialogid == DIALOG_RAKETE_ZIELAUSWAHL)
    2. {
    3. if(!response) return 0;
    4. new strings[1024],LocationZone[MAX_ZONE_NAME];
    5. new Float:x, Float:y, Float:z;
    6. switch(listitem)
    7. {
    8. case 0:
    9. {
    10. if(CheckPointSetted[playerid] == 0) return SCM(playerid,-1,"Du hast auf der Karte kein Ziel markiert.");
    11. }
    12. case 1:
    13. {
    14. for(new i = 0; j = GetPlayerPoolSize(); i <= j; i++)
    15. {
    16. if(!IsPlayerConnected(i)) continue;
    17. GetPlayerPos(i, x, y, z);
    18. Get2DZone(x,y, LocationZone, MAX_ZONE_NAME);
    19. format(strings, sizeof(strings), "%s%s ( ID: %d ) Position: %s\n",strings,GetName(i),i,LocationZone);
    20. }
    21. ShowPlayerDialog(playerid,DIALOG_RAKETE_SPIELERAUSWAHL,DIALOG_STYLE_LIST,"Ziel Auswählen",strings,"Auswählen","Abbrechen");
    22. }
    23. }
    24. }
    Alles anzeigen
    Und statt für Spielerloops MAX_PLAYERS zu verwenden solltest du GetPlayerPoolSize verwenden.
    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

  • Hey, ich möchte das man alle Admins sieht ob online oder Offline...
    doch irgendwie möchte es nur mich Anzeigen.


    PAWN-Quellcode

    1. CMD:admins(playerid)
    2. {
    3. new string[256], userId, adminstatus[35];
    4. switch(accinfo[playerid][pLoginStatus])
    5. {
    6. case 0:{adminstatus="Offline";}
    7. case 1:{adminstatus="Online";}
    8. }
    9. if(!accinfo[playerid][pLoginStatus])return SendClientMessage(playerid, COLOR_GREY, "Fehler: Du bist nicht auf deinem Account eingeloggt.");
    10. strcat(string, ""HTML_SERVER"Rang\t "HTML_SERVER" Name\t Status\n");
    11. for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
    12. {
    13. if(IsPlayerConnected(i))
    14. {
    15. if(GetPVarInt(i,"adminlevel")>0)
    16. {
    17. if(accinfo[playerid][pAdminLvl] == 2000)
    18. {
    19. format(string, sizeof(string),""HTML_RED"%s"HTML_WHITE"%s\t"HTML_WHITE"%s\n", playerteamname(userId),accinfo[playerid][pName],adminstatus);
    20. }
    21. else if(accinfo[playerid][pAdminLvl] == 1338)
    22. {
    23. format(string, sizeof(string),""HTML_WHITE"%s"HTML_WHITE"%s\t"HTML_WHITE"%s\n", playerteamname(userId),accinfo[playerid][pName],adminstatus);
    24. }
    25. else if(accinfo[playerid][pAdminLvl] == 1337)
    26. {
    27. format(string, sizeof(string),""HTML_WHITE"%s"HTML_WHITE"%s\t"HTML_WHITE"%s\n", playerteamname(userId),accinfo[playerid][pName],adminstatus);
    28. }
    29. else if(accinfo[playerid][pAdminLvl] == 3)
    30. {
    31. format(string, sizeof(string),""HTML_WHITE"%s"HTML_WHITE"%s\t"HTML_WHITE"%s\n", playerteamname(userId),accinfo[playerid][pName],adminstatus);
    32. }
    33. else if(accinfo[playerid][pAdminLvl] == 2)
    34. {
    35. format(string, sizeof(string),""HTML_WHITE"%s"HTML_WHITE"%s\t"HTML_WHITE"%s\n", playerteamname(userId),accinfo[playerid][pName],adminstatus);
    36. }
    37. }
    38. }
    39. }
    40. ShowPlayerDialog(playerid,DIALOG_ADMINS,DIALOG_STYLE_MSGBOX, ""HTML_SERVER"Vegas Life: "HTML_WHITE"Aktive Team-Mitglieder", string, "Bestätigen", "");
    41. return 1;
    42. }
    Alles anzeigen
  • LeonMrBonnie schrieb:

    for(new i = 0; j = GetPlayerPoolSize(); i <= j; i++)
    Versucht, wenn es möglich ist, die Schleife so zu schreiben:

    PAWN-Quellcode

    1. for(new i=GetPlayerPoolSize(); i!=-1; i--)


    So benötigt man nur eine Variable und in der Bedingung wird eine Konstante verwendet und keine Variable :)


    LoRiX schrieb:

    doch irgendwie möchte es nur mich Anzeigen.
    Wie sieht n playerteamname aus? :)


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

    C-Quellcode

    1. ocmd:changename(playerid, params[])
    2. {
    3. new pID, SpielerName[32], query[256];
    4. if(Spieler[playerid][pAdmin] < 5)return SendClientMessage(playerid, COLOR_WHITE, ERROR_ADMIN);
    5. if(Spieler[playerid][pAdminDuty] == 0)return SendClientMessage(playerid, COLOR_WHITE, ERROR_ADMINDIENST);
    6. if(sscanf(params, "us[32]", pID, SpielerName))return SendClientMessage(playerid, COLOR_WHITE, "{3592D7}* Benutze {00CC00}/changename [SpielerID/Name] [NeuerName]");
    7. if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Der angegebene Spieler ist nicht eingeloggt!");
    8. if(IsPlayerNPC(pID))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst kein NPC ein anderen Namen geben!");
    9. if(!strcmp(SpielerName, GetName(pID), true))return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Spieler hat bereits den selben Namen!");
    10. mysql_format(MySqlConnection, query, sizeof(query), "UPDATE `server_accounts` SET `Name`='%s' WHERE `Name`='%s'", SpielerName, GetName(pID));
    11. mysql_tquery(MySqlConnection, query, "", "");
    12. format(query, sizeof(query), "{FFFF00}Du hast den Name von {15951F}%s {FFFF00}zu {15951F}%s {FFFF00}umbenannt!", GetName(pID), SpielerName);
    13. SendClientMessage(playerid, COLOR_WHITE, query);
    14. format(query,sizeof(query),"{15951F}%s {FFFF00}(ID: {15951F}%i{FFFF00}) hat deinen Namen in {15951F}%s {FFFF00}umgeändert. Dein Account wurde geupdatet!", GetName(playerid), playerid, SpielerName);
    15. SendClientMessage(pID, COLOR_WHITE, query);
    16. SavePlayer(pID);
    17. SetPlayerName(pID, SpielerName);
    18. return 1;
    19. }
    Alles anzeigen



    Ablauf:

    Ich änder von den Spieler den Name wird er Ingame geändert.
    Speicher ich die Accounts werden die Accounts verdoppelt.
    Die Spalte für die Namen heißt ja "Name".

    Weiß Jemand was ich da falsch mache?

    Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Einige Fehler selber gefunden ().
  • BrightLeaN schrieb:

    Gibt es eine möglichkeit ein switch(random(10)) auszutricksen indem man es vorhersagen kann?
    Was genau magst du machen?

    Du kannst natürlich das Ergebnis in einer Variable speichern:

    PAWN-Quellcode

    1. new x = random(10);
    2. //Hier kennst du schon die Zufallszahl X
    3. switch(x)


    Dann hast du natürlich davor schon Zugriff drauf und kannst damit arbeiten, falls es das ist, was du meinst ^^


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