[PROBLEM] Drogendealer [Drogen Pflanzen]

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
  • Halllo,


    Seid ich das Mit den Skill eingebaut habe und ich etwas pflanzen möchte sagt er mir die ganze zeit das die maximale Pflanzen erreicht habe.
    Obwohl ich keine gepflanzt habe




  • In den Zeilen 13 + 33 und 38 + 58 sind die geschweiftem Klammern nicht notwendig


    +


    Das liegt daran, dass dein Code weiterläuft obwohl du bereits eine Pflanze platzierst hast. Füge einmal ein return 1 hinzu wo du auch die Drogensamen auf 0 setzt.

  • Danke,


    Das Funktioniert.


    Das Problem ist aber wen ein 2ter spieler etwas pflanzen möchte funktioniert das nicht. es kommt das die Maximalen Pflanzen erreicht sind?
    Obwohl die grenze bei 150 Stück sind...



    Mache ich meine weg kann der andere eine setzen?



    if(strcmp(Option, "plant", true) == 0)
    {
    if(Spieler[playerid][pGepflanzt] == 1)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du hast bereits eine Pflanze angepflanzt.");
    if(GetPlayerInterior(playerid) != 0)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du kannst keine Pflanzen in einem Interior anbauen.");
    GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
    for(new i=1;i {
    if(Drogen[i][dErstellt] != 1)
    {
    if(Spieler[i][pDrogenSkill] == 1)
    {
    new query[128];
    if(Spieler[playerid][pDrogenSamen] != 2)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du benötigst mindestens 2 Samen, um eine Pflanze zu züchten.");
    format(query, sizeof(query), "INSERT INTO `server_drogen` (id) VALUES ('%d')", i);
    mysql_function_query(MySqlConnection, query, false, "", "");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du hast 2 Samen gepflanzt. Mit ´/seed harvest´ kannst du den aktuellen Stand sowie die Position einsehen.");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Der Mindestertrag an Drogen ist abhängig von der Zeit, mindestens jedoch werden 30 Minuten benötigt.");
    Drogen[i][dPflanzeObject] = CreateDynamicObject(19473, Pos[0], Pos[1], Pos[2]-1.0, 0, 0, 0, 0);
    Drogen[i][dID] = i;
    Drogen[i][dPflanzeX] = Pos[0];
    Drogen[i][dPflanzeY] = Pos[1];
    Drogen[i][dPflanzeZ] = Pos[2];
    Drogen[i][dErstellt] = 1;
    Drogen[i][dSamen] = 2;
    Spieler[playerid][pGepflanzt] = 1;
    new value = gettime()+(1800);
    Drogen[i][dPflanzenTimer] = value;
    format(Drogen[i][dBesitzer], 16, "%s", GetName(playerid));
    new pYear, pMonth, pDay, pHour, pMinute, pSecond;
    TimestampToDate(Drogen[i][dPflanzenTimer], pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    Drogen[i][dPflanzeText] = CreateDynamic3DTextLabel(" ",COLOR_WHITE,Drogen[i][dPflanzeX],Drogen[i][dPflanzeY],Drogen[i][dPflanzeZ],5.0);
    Spieler[playerid][pDrogenSamen] = 0;
    return 1;
    }
    if(Spieler[i][pDrogenSkill] == 2)
    {
    new query[128];
    if(Spieler[playerid][pDrogenSamen] != 3)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du benötigst mindestens 2 Samen, um eine Pflanze zu züchten.");
    format(query, sizeof(query), "INSERT INTO `server_drogen` (id) VALUES ('%d')", i);
    mysql_function_query(MySqlConnection, query, false, "", "");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du hast 3 Samen gepflanzt. Mit ´/seed harvest´ kannst du den aktuellen Stand sowie die Position einsehen.");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Der Mindestertrag an Drogen ist abhängig von der Zeit, mindestens jedoch werden 30 Minuten benötigt.");
    Drogen[i][dPflanzeObject] = CreateDynamicObject(19473, Pos[0], Pos[1], Pos[2]-1.0, 0, 0, 0, 0);
    Drogen[i][dID] = i;
    Drogen[i][dPflanzeX] = Pos[0];
    Drogen[i][dPflanzeY] = Pos[1];
    Drogen[i][dPflanzeZ] = Pos[2];
    Drogen[i][dErstellt] = 1;
    Drogen[i][dSamen] = 3;
    Spieler[playerid][pGepflanzt] = 1;
    new value = gettime()+(1800);
    Drogen[i][dPflanzenTimer] = value;
    format(Drogen[i][dBesitzer], 16, "%s", GetName(playerid));
    new pYear, pMonth, pDay, pHour, pMinute, pSecond;
    TimestampToDate(Drogen[i][dPflanzenTimer], pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    Drogen[i][dPflanzeText] = CreateDynamic3DTextLabel(" ",COLOR_WHITE,Drogen[i][dPflanzeX],Drogen[i][dPflanzeY],Drogen[i][dPflanzeZ],5.0);
    Spieler[playerid][pDrogenSamen] = 0;
    return 1;
    }
    if(Spieler[i][pDrogenSkill] == 3)
    {
    new query[128];
    if(Spieler[playerid][pDrogenSamen] != 4)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du benötigst mindestens 2 Samen, um eine Pflanze zu züchten.");
    format(query, sizeof(query), "INSERT INTO `server_drogen` (id) VALUES ('%d')", i);
    mysql_function_query(MySqlConnection, query, false, "", "");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du hast 4 Samen gepflanzt. Mit ´/seed harvest´ kannst du den aktuellen Stand sowie die Position einsehen.");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Der Mindestertrag an Drogen ist abhängig von der Zeit, mindestens jedoch werden 30 Minuten benötigt.");
    Drogen[i][dPflanzeObject] = CreateDynamicObject(19473, Pos[0], Pos[1], Pos[2]-1.0, 0, 0, 0, 0);
    Drogen[i][dID] = i;
    Drogen[i][dPflanzeX] = Pos[0];
    Drogen[i][dPflanzeY] = Pos[1];
    Drogen[i][dPflanzeZ] = Pos[2];
    Drogen[i][dErstellt] = 1;
    Drogen[i][dSamen] = 4;
    Spieler[playerid][pGepflanzt] = 1;
    new value = gettime()+(1500);
    Drogen[i][dPflanzenTimer] = value;
    format(Drogen[i][dBesitzer], 16, "%s", GetName(playerid));
    new pYear, pMonth, pDay, pHour, pMinute, pSecond;
    TimestampToDate(Drogen[i][dPflanzenTimer], pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    Drogen[i][dPflanzeText] = CreateDynamic3DTextLabel(" ",COLOR_WHITE,Drogen[i][dPflanzeX],Drogen[i][dPflanzeY],Drogen[i][dPflanzeZ],5.0);
    Spieler[playerid][pDrogenSamen] = 0;
    return 1;
    }
    if(Spieler[i][pDrogenSkill] == 4)
    {
    new query[128];
    if(Spieler[playerid][pDrogenSamen] != 5)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du benötigst mindestens 2 Samen, um eine Pflanze zu züchten.");
    format(query, sizeof(query), "INSERT INTO `server_drogen` (id) VALUES ('%d')", i);
    mysql_function_query(MySqlConnection, query, false, "", "");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du hast 5 Samen gepflanzt. Mit ´/seed harvest´ kannst du den aktuellen Stand sowie die Position einsehen.");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Der Mindestertrag an Drogen ist abhängig von der Zeit, mindestens jedoch werden 30 Minuten benötigt.");
    Drogen[i][dPflanzeObject] = CreateDynamicObject(19473, Pos[0], Pos[1], Pos[2]-1.0, 0, 0, 0, 0);
    Drogen[i][dID] = i;
    Drogen[i][dPflanzeX] = Pos[0];
    Drogen[i][dPflanzeY] = Pos[1];
    Drogen[i][dPflanzeZ] = Pos[2];
    Drogen[i][dErstellt] = 1;
    Drogen[i][dSamen] = 4;
    Spieler[playerid][pGepflanzt] = 1;
    new value = gettime()+(1500);
    Drogen[i][dPflanzenTimer] = value;
    format(Drogen[i][dBesitzer], 16, "%s", GetName(playerid));
    new pYear, pMonth, pDay, pHour, pMinute, pSecond;
    TimestampToDate(Drogen[i][dPflanzenTimer], pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    Drogen[i][dPflanzeText] = CreateDynamic3DTextLabel(" ",COLOR_WHITE,Drogen[i][dPflanzeX],Drogen[i][dPflanzeY],Drogen[i][dPflanzeZ],5.0);
    Spieler[playerid][pDrogenSamen] = 0;
    return 1;
    }
    if(Spieler[i][pDrogenSkill] == 5)
    {
    new query[128];
    if(Spieler[playerid][pDrogenSamen] != 6)return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Du benötigst mindestens 2 Samen, um eine Pflanze zu züchten.");
    format(query, sizeof(query), "INSERT INTO `server_drogen` (id) VALUES ('%d')", i);
    mysql_function_query(MySqlConnection, query, false, "", "");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Du hast 6 Samen gepflanzt. Mit ´/seed harvest´ kannst du den aktuellen Stand sowie die Position einsehen.");
    SendClientMessage(playerid, COLOR_WHITE, "{33CCFF}Der Mindestertrag an Drogen ist abhängig von der Zeit, mindestens jedoch werden 30 Minuten benötigt.");
    Drogen[i][dPflanzeObject] = CreateDynamicObject(19473, Pos[0], Pos[1], Pos[2]-1.0, 0, 0, 0, 0);
    Drogen[i][dID] = i;
    Drogen[i][dPflanzeX] = Pos[0];
    Drogen[i][dPflanzeY] = Pos[1];
    Drogen[i][dPflanzeZ] = Pos[2];
    Drogen[i][dErstellt] = 1;
    Drogen[i][dSamen] = 6;
    Spieler[playerid][pGepflanzt] = 1;
    new value = gettime()+(1200);
    Drogen[i][dPflanzenTimer] = value;
    format(Drogen[i][dBesitzer], 16, "%s", GetName(playerid));
    new pYear, pMonth, pDay, pHour, pMinute, pSecond;
    TimestampToDate(Drogen[i][dPflanzenTimer], pYear, pMonth, pDay, pHour, pMinute, pSecond, 1, 0);
    Drogen[i][dPflanzeText] = CreateDynamic3DTextLabel(" ",COLOR_WHITE,Drogen[i][dPflanzeX],Drogen[i][dPflanzeY],Drogen[i][dPflanzeZ],5.0);
    Spieler[playerid][pDrogenSamen] = 0;
    return 1;
    }
    }
    }
    return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Maximale Anzahl an Drogenpflanzen erreicht!");
    }

  • Ich habe jetzt schon locker drei Jahre kein PAWN mehr angefasst also kann auch bisschen falsch sein:


    Du hast einen Wert welcher die aktuelle Anzahl an allen Pflanzen speichert. Nennen wir den einfach mal um deinen Code Style beizubehalten: CURRENT_PLANTS, dieser Wert zählt immer hoch sobald ein Spieler eine Pflanze angepflanzt hat. Oder wird reduziert wenn eine Pflanze zerstört oder geerntet wird, whatever halt. Dann kannst du eigentlich ganz einfach am Anfang deines Befehls dort wo du auch nach dem Interior abfragst eine neue If-Abfrage einbauen die wie folgt wäre: if(CURRENT_PLANTS > MAX_PLANTS) return SendClientMessage(playerid, COLOR_WHITE, "{AFAFAF}Maximale Anzahl an Drogenpflanzen erreicht!");


    Edit:


    Den For-Loop (For-Schleife) mit allen geschweiften Klammern und dem alten Return unten mit der Fehlermeldung das zu viele Pflanzen gepflanzt wurden musst du dann natürlich entfernen. Wobei ich gerade nicht wirklich verstehe was dein Drogen Array dort macht.

    - heftig abhängig von Karli Kugelblitz Choco Drinks

  • Denke mal das du das eventuell so gemeint hast also habe es jetzt mal versucht eine zu Pflanzen fängt mir eins an also dürfte das eigentlich so stimmen.


  • Wie gesagt, schon Jahre kein PAWN mehr gehabt und mal eben in fremde Code Architektur einzusteigen ist nicht meine Stärke.


    Jedoch wenn es funktioniert ist ja alles fein, nur der Name CURRENT_PLANTS passt meiner Meinung nach jetzt nicht mehr so wirklich. Das ist aber auch nur mein zwanghafter Drang meine Variablen korrekt, akkurat und ohne Zweideutigkeit zu benenn. Ich nehme an das zweidimensionale Array speichert deine Pflanzen, der erste Eintrag ist die Anzahl welche Pflanze es ist und der zweite was gerade gespeichert wird? Dann würde ich mir definitiv einen besseren Namen ausdenken anstatt CURRENT_PLANTS eventuell irgendwas mit Index oder so.


    Freut mich das ich etwas helfen konnte.

    - heftig abhängig von Karli Kugelblitz Choco Drinks

    Einmal editiert, zuletzt von Pride ()