Problem mit Drogensystem - Pflanzen abernten

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


    ich habe ein kleines Drogensystem mit Pflanzen anbauen gebastelt. Leider wird man, wenn man dem "/harvest"-Befehl eingibt völlig vollgespammt, dass man nicht in der nähe einer Pflanze ist.
    Was ich aber zu diesem Zeitpunkt war.


    Hier mein Code:
    #define MAX_DRUGPLANTS 200 //steht ganz oben im Script
    ocmd:harvest(playerid,params[])
    {
    for(new i;i<MAX_DRUGPLANTS;i++) {
    if(IsPlayerInRangeOfPoint(playerid,3,DPlantInfo[i][dPos][0],DPlantInfo[i][dPos][1],DPlantInfo[i][dPos][2])) {
    //Natürlich abgeschnitten^^
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist nicht in der nähe einer Pflanze!");
    }
    }
    return 1;
    }
    Man bekommt ca. 400 Nachrichten pro Pflanze.
    Warum??


    Jeffry: :D


    lg
    Deagle

  • Weil die schleife weiterläuft.
    Nach der Message ein return 1; und gut ist.


    Ok. Nun ist es so, dass wenn eine Pflanze gepflanzt, allerdings nicht reif ist, die Meldung kommt ich wäre nicht in der nähe..


    GetPlayerName(playerid,sendername,sizeof sendername);
    if((!strcmp(DPlantInfo[i][dOwner],sendername,true))) {
    new str[128];
    if(DPlantInfo[i][dFinished] == 1) {

  • ocmd:harvest(playerid,params[])
    {
    for(new i;i<MAX_DRUGPLANTS;i++) {
    if(IsPlayerInRangeOfPoint(playerid,3,DPlantInfo[i][dPos][0],DPlantInfo[i][dPos][1],DPlantInfo[i][dPos][2])) {
    GetPlayerName(playerid,sendername,sizeof sendername);
    if((!strcmp(DPlantInfo[i][dOwner],sendername,true))) {
    new str[128];
    if(DPlantInfo[i][dFinished] == 1) {
    new rnd,r=random(4),Year,Month,Day,Hour,Minute,Second,dt[16],ti[16];
    getdate(Year,Month,Day);
    gettime(Hour,Minute,Second);
    format(dt,16,"%d.%d.%d",Day,Month,Year);
    format(ti,16,"%d:%d:%d",Hour,Minute,Second);
    DPlantInfo[i][dCreated] = false;
    DestroyDynamicObject(DPlantInfo[i][dObject]);
    if(r==0){ r=1; }
    switch(DPlantInfo[i][dType]) {
    case 1: {
    rnd=random(120);
    if(rnd>10) {
    format(str,sizeof str,"Diese Marihuanapflanze hat dir %dg Marihuana und %d Marihuanasamen erbracht!",rnd,r);
    } else {
    rnd=10;
    format(str,sizeof str,"Diese Marihuanapflanze hat dir %dg Marihuana und %d Marihuanasamen erbracht!",rnd,r);
    }
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    pInfo[playerid][pGras] += rnd;
    pInfo[playerid][pGrassamen] += r;
    SavePlayer(playerid);
    return 1;
    }
    case 2: {
    rnd=random(110);
    if(rnd>10) {
    format(str,sizeof str,"Diese Kokainpflanze hat dir %dg Kokain und %d Kokainsamen erbracht!",rnd,r);
    } else {
    rnd=10;
    format(str,sizeof str,"Diese Kokainpflanze hat dir %dg Kokain und %d Kokainsamen erbracht!",rnd,r);
    }
    SendClientMessage(playerid,COLOR_LIGHTBLUE,str);
    pInfo[playerid][pKokain] += rnd;
    pInfo[playerid][pKokainsamen] += r;
    SavePlayer(playerid);
    return 1;
    }
    }
    format(str,sizeof str,"UPDATE `Drugplants` SET `Harvested` = '1', `HarvestDate` = '%s', `HarvestTime` = '%s' WHERE `ID` = '%d'",dt,ti,DPlantInfo[i][dID]);
    mysql_query(str);
    } else {
    switch(DPlantInfo[i][dType]) {
    case 1: {
    if(60-DPlantInfo[i][dTime] > 1) {
    format(str,sizeof str,"Diese Marihuanapflanze ist erst in %d Minuten reif!",60-DPlantInfo[i][dTime]);
    } else { format(str,sizeof str,"Diese Marihuanapflanze ist erst in %d Minute reif!",60-DPlantInfo[i][dTime]); }
    }
    case 2: {
    if(60-DPlantInfo[i][dTime] > 1) {
    format(str,sizeof str,"Diese Kokainpflanze ist erst in %d Minuten reif!",90-DPlantInfo[i][dTime]);
    } else { format(str,sizeof str,"Diese Kokainpflanze ist erst in %d Minute reif!",90-DPlantInfo[i][dTime]); }
    }
    }
    SendClientMessage(playerid,COLOR_LIGHTRED,str);
    return 1;
    }
    } else {
    switch(DPlantInfo[i][dType]) {
    case 1: { SendClientMessage(playerid,COLOR_LIGHTRED,"Diese Marihuanapflanze gehört nicht dir!"); return 1; }
    case 2: { SendClientMessage(playerid,COLOR_LIGHTRED,"Diese Kokainpflanze gehört nicht dir!"); return 1; }
    }
    }
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist nicht in der nähe einer Pflanze!");
    return 1;
    }
    }
    return 1;
    }

  • Hallo, dein Problem liegt da drinne, dass du jedesmal wenn er nicht in der nähe ist eine Nachricht sendet sprich du krichst 1x true und 199x false


    Hier eine Lösung wie du das Problem beheben könntest:



    ocmd:harvest(playerid,params[])
    {
    new check=0;
    for(new i;i<MAX_DRUGPLANTS;i++) {
    if(IsPlayerInRangeOfPoint(playerid,3,DPlantInfo[dPos][0],DPlantInfo[dPos][1],DPlantInfo[dPos][2])) {
    check=1;
    //Hier dein Code
    }
    }
    if(check==0) {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Du bist nicht in der nähe einer Pflanze!");
    }
    check=0;
    return 1;
    }

    1+1=10


    Es gibt 10 Arten von Menschen.
    Die die Binärcode verstehen, und die, die ihn nicht verstehen.

    Einmal editiert, zuletzt von seegras ()