Drogensystem Selfmade Problem

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
  • Guten Tag liebe Breadfisher,


    Habe Problem mit meinem Drogensystem.
    Dieses Wurde selbst erstellt.
    Mein Problem /pflugen und /pflanzen und /pflanzegiesen.
    bei /pflanzen 1/2/3/4 wird das Object erstellt und in der Datenbank auch erstellt nur der Text wird nicht erstellt.
    bei /pflugen wird nur die Letzte Pflanze mit der Größten ID der Datenbank funktioniert es nur eine einzigen will aber alle haben.
    Das gleiche Problem bei /pflanzegiesen.
    Hier meine Codes:
    enum drugsEnum{
    d_id,
    Float:d_x,
    Float:d_y,
    Float:d_z,
    d_type,
    d_wasser,
    d_prog,
    d_obj,
    Text3D:d_text,
    d_dbid,
    d_fraktion
    };
    new dPlant[100][drugsEnum];
    forward DrugsLoads();
    forward DrugsUpdate();
    forward DrugsSave();
    forward DrugsTimer();
    OnGameModeInit
    new query2[128];
    format(query2,128,"SELECT * FROM drugs");
    mysql_function_query(Handle, query2, true, "DrugsLoads", "");
    SetTimer("DrugsTimer", 3600000, true);
    public DrugsTimer()
    {
    for(new i=0; i<sizeof(dPlant); i++)
    {
    if(dPlant[i][d_wasser] >= 3)
    {
    dPlant[i][d_prog] += 10;
    dPlant[i][d_wasser] -= 1;
    }
    else if(dPlant[i][d_wasser] == 2)
    {
    dPlant[i][d_wasser] -= 1;
    dPlant[i][d_prog] += 10;
    for (new p=0; p<MAX_PLAYERS; p++)
    {
    if(pInfo[p][pFrak] == dPlant[i][d_fraktion])
    {
    new str[128];
    format(str,128,"Hinweis Pflanze(%i) braucht Wasser sonst Stirbt die Pflanze aus.", dPlant[i][d_id]);
    SendClientMessage(p, COLOR_YELLOW, str);
    }
    }
    }
    else
    {
    }
    }
    DrugsUpdate();
    return 1;
    }


    public DrugsSave()
    {
    new query[128];
    for(new i=0; i<sizeof(dPlant); i++)
    {
    if(dPlant[i][d_wasser] >= 1)
    {
    format(query,128,"UPDATE drugs SET Wasser='%i', Fortschritt='%i' WHERE id='%i'",dPlant[i][d_wasser], dPlant[i][d_prog], dPlant[i][d_dbid]);
    mysql_function_query(Handle, query, false, "", "");
    }
    else if(dPlant[i][d_wasser] == 0)
    {
    format(query,128,"DELETE FROM drugs WHERE id='%i'", dPlant[i][d_dbid]);
    mysql_function_query(Handle, query, false, "", "");
    }
    }
    return 1;
    }


    public DrugsUpdate()
    {
    for(new i=0; i<sizeof(dPlant); i++)
    {
    new dddtext[128];
    format(dddtext,128,"[Pflanze]\nID: %i\nWasser %i/5l\nFortschritt: %i/100",i,dPlant[i][d_wasser],dPlant[i][d_prog]);
    Update3DTextLabelText(dPlant[i][d_text], COLOR_WHITE, dddtext);
    DrugsSave();
    }
    return 1;
    }


    public DrugsCreate(id)
    {
    hInfo[id][h_id]=cache_insert_id();
    return 1;
    }


    public DrugsLoads()
    {
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields,Handle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id=getFreeDrugsID();
    new dddtext[128];
    dPlant[id][d_x]=cache_get_field_content_float(i, "X", Handle);
    dPlant[id][d_y]=cache_get_field_content_float(i, "Y", Handle);
    dPlant[id][d_z]=cache_get_field_content_float(i, "Z", Handle);
    dPlant[id][d_wasser]=cache_get_field_content_int(i, "Wasser", Handle);
    dPlant[id][d_prog]=cache_get_field_content_int(i, "Fortschritt", Handle);
    dPlant[id][d_type]=cache_get_field_content_int(i, "Type", Handle);
    dPlant[id][d_dbid] = cache_get_field_content_int(i, "id", Handle);
    dPlant[id][d_obj]=CreateObject(dPlant[id][d_type], dPlant[id][d_x], dPlant[id][d_y], dPlant[id][d_z], 0.0, 0.0, 0.0);
    format(dddtext,128,"[Pflanze]\nID: %i\nWasser %i/5l\nFortschritt: %i/100",dPlant[id][d_dbid],dPlant[id][d_wasser],dPlant[id][d_prog]);
    dPlant[id][d_text] = Create3DTextLabel(dddtext,COLOR_WHITE,dPlant[id][d_x],dPlant[id][d_y],dPlant[id][d_z],20,0,0);
    dPlant[id][d_fraktion] = cache_get_field_content_int(i, "FraktionsID", Handle);
    }
    return 1;
    }
    getFreeDrugsID()
    {
    for(new i=0; i<sizeof(dPlant); i++)
    {
    if(dPlant[i][d_id]==0)return i;
    }
    return 0;
    }


    Befehle:
    ocmd:pflugen(playerid, params[])
    {
    for(new i=0; i<sizeof(dPlant); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 8, dPlant[i][d_x], dPlant[i][d_y], dPlant[i][d_z]))
    {
    new msg[128];
    format(msg,128,"Du stehst an der Pflanze(%i)", dPlant[i][d_dbid]);
    SendClientMessage(playerid, COLOR_CYAN, msg);
    return 1;
    }
    }
    /*for(new i=0; i<sizeof(dPlant); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 8, dPlant[i][d_x], dPlant[i][d_y], dPlant[i][d_z]))
    {
    if(pInfo[playerid][pFrak] == dPlant[i][d_fraktion])
    {
    if(dPlant[i][d_prog] == 100)
    {
    new erbung = random(50) + 10;
    switch(dPlant[i][d_type])
    {
    case 1580:{pInfo[playerid][pMarh] += erbung;}//Marihuana
    case 1577:{pInfo[playerid][pLSD] += erbung;}//LSD
    case 1578:{pInfo[playerid][pKoks] += erbung;}//Kokain
    case 1579:{pInfo[playerid][pHeroin] += erbung;}//Heroin
    }
    dPlant[i][d_prog] = 0;
    SendClientMessage(playerid, COLOR_CYAN, "Erfolgreich die Pflanze gepflügt!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Diese Pflanze ist nicht Reif genug!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Diese Pflanze gehört nicht dir!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du stehst an keiner Pflanze!");
    return 1;
    }
    }*/
    return 1;
    }
    ocmd:pflanzegiesen(playerid, params[])
    {
    for(new i=0; i<sizeof(dPlant); i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 5.0, dPlant[i][d_x], dPlant[i][d_y], dPlant[i][d_z]))
    {
    if(pInfo[playerid][pFrak] == dPlant[i][d_fraktion])
    {
    if(dPlant[i][d_wasser] < 5)
    {
    dPlant[i][d_wasser] = 5;
    }
    else
    {
    SendClientMessage(playerid, COLOR_WHITE, "Deine Pflanze hat genug Wasser!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Diese Pflanze gehört nicht dir!");
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Du stehst an keiner Pflanze!");
    }
    }
    return 1;
    }


    ocmd:pflanzen(playerid, params[])
    {
    new cmdint;
    if(sscanf(params,"i",cmdint))return SendClientMessage(playerid, COLOR_WHITE, "Benutzung: /pflanzen [1 = Marihuana, 2 = Kokain, 3 = LSD, 4 = Heroin]");
    if(cmdint == 1)
    {
    if(pInfo[playerid][sMarh] >= 1)
    {
    new Float:ppx, Float:ppy, Float:ppz;
    GetPlayerPos(playerid, ppx, ppy, ppz);
    new Query[999];
    format(Query, 999, "INSERT INTO drugs (X, Y, Z, Wasser, Fortschritt, Type, FraktionsID) VALUES ('%f', '%f', '%f', '5', '0', '1580', '%i')", ppx, ppy, ppz, pInfo[playerid][pFrak]);
    mysql_function_query(Handle, Query, true, "DrugsCreate", "");
    pInfo[playerid][sMarh] -= 1;
    for(new i=0; i<sizeof(dPlant); i++)
    {
    dPlant[i][d_obj] = CreateObject(1580, ppx, ppy, ppz, 0.0, 0.0, 0.0);
    new dddtext[128];
    format(dddtext,128,"[Pflanze]\nID: %i\nWasser %i/5l\nFortschritt: %i/100",dPlant[i][d_dbid],dPlant[i][d_wasser],dPlant[i][d_prog]);
    dPlant[i][d_text] = Create3DTextLabel(dddtext,COLOR_WHITE,dPlant[i][d_x],dPlant[i][d_y],dPlant[i][d_z],20,0,1);
    DrugsSave();
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast keine Marihuana Samen!");
    }
    }
    else if(cmdint == 2)
    {
    if(pInfo[playerid][sKoks] >= 1)
    {
    new Float:ppx, Float:ppy, Float:ppz;
    GetPlayerPos(playerid, ppx, ppy, ppz);
    new Query[999];
    format(Query, 999, "INSERT INTO drugs (X, Y, Z, Wasser, Fortschritt, Type, FraktionsID) VALUES ('%f', '%f', '%f', '5', '0', '1578', '%i')", ppx, ppy, ppz, pInfo[playerid][pFrak]);
    mysql_function_query(Handle, Query, true, "DrugsCreate", "i", getFreeDrugsID());
    pInfo[playerid][sKoks] -= 1;
    for(new i=0; i<sizeof(dPlant); i++)
    {
    dPlant[i][d_obj] = CreateObject(1578, ppx, ppy, ppz, 0.0, 0.0, 0.0);
    new dddtext[128];
    format(dddtext,128,"[Pflanze]\nID: %i\nWasser %i/5l\nFortschritt: %i/100",dPlant[i][d_dbid],dPlant[i][d_wasser],dPlant[i][d_prog]);
    dPlant[i][d_text] = Create3DTextLabel(dddtext,COLOR_WHITE,dPlant[i][d_x],dPlant[i][d_y],dPlant[i][d_z],20,0,1);
    DrugsSave();
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast keine Kokain Samen!");
    }
    }
    else if(cmdint == 3)
    {
    if(pInfo[playerid][sLSD] >= 1)
    {
    new Float:ppx, Float:ppy, Float:ppz;
    GetPlayerPos(playerid, ppx, ppy, ppz);
    new Query[999];
    format(Query, 999, "INSERT INTO drugs (X, Y, Z, Wasser, Fortschritt, Type, FraktionsID) VALUES ('%f', '%f', '%f', '5', '0', '1577', '%i')", ppx, ppy, ppz, pInfo[playerid][pFrak]);
    mysql_function_query(Handle, Query, true, "DrugsCreate", "i", getFreeDrugsID());
    pInfo[playerid][sLSD] -= 1;
    for(new i=0; i<sizeof(dPlant); i++)
    {
    dPlant[i][d_obj] = CreateObject(1577, ppx, ppy, ppz, 0.0, 0.0, 0.0);
    new dddtext[128];
    format(dddtext,128,"[Pflanze]\nID: %i\nWasser %i/5l\nFortschritt: %i/100",dPlant[i][d_dbid],dPlant[i][d_wasser],dPlant[i][d_prog]);
    dPlant[i][d_text] = Create3DTextLabel(dddtext,COLOR_WHITE,dPlant[i][d_x],dPlant[i][d_y],dPlant[i][d_z],20,0,1);
    DrugsSave();
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast keine LSD Samen!");
    }
    }
    else if(cmdint == 4)
    {
    if(pInfo[playerid][sHeroin] >= 1)
    {
    new Float:ppx, Float:ppy, Float:ppz;
    GetPlayerPos(playerid, ppx, ppy, ppz);
    new Query[999];
    format(Query, 999, "INSERT INTO drugs (X, Y, Z, Wasser, Fortschritt, Type, FraktionsID) VALUES ('%f', '%f', '%f', '5', '0', '1579', '%i')", ppx, ppy, ppz, pInfo[playerid][pFrak]);
    mysql_function_query(Handle, Query, true, "DrugsCreate", "i", getFreeDrugsID());
    pInfo[playerid][sHeroin] -= 1;
    for(new i=0; i<sizeof(dPlant); i++)
    {
    dPlant[i][d_obj] = CreateObject(1579, ppx, ppy, ppz, 0.0, 0.0, 0.0);
    new dddtext[128];
    format(dddtext,128,"[Pflanze]\nID: %i\nWasser %i/5l\nFortschritt: %i/100",dPlant[i][d_dbid],dPlant[i][d_wasser],dPlant[i][d_prog]);
    dPlant[i][d_text] = Create3DTextLabel(dddtext,COLOR_WHITE,dPlant[i][d_x],dPlant[i][d_y],dPlant[i][d_z],20,0,1);
    DrugsSave();
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Du hast keine Heroin Samen!");
    }
    }
    return 1;
    }


    Hoffe ihr könnt ihr mir Helfen.


    Liebe Grüße,
    SkoMe

  • Sind die Labels auch in der richtigen Virtual World?


    mfg :thumbup:

    Ja Sind sie. Habe echt keine Ahnung mehr warum es nicht funktioniert.
    Brauche auch wo anders Hilfe. Falls mann das lesen kann.


  • Oh Man Danke schön versuche es gleich nochmal.
    UNd zu den Befehle: /pflugen und /pflanzegiesen
    BRauche ich auch hilfe es geht nur an der Pflanze die die größte ID hat die anderen Funktionieren nicht.


    Liebe Grüße,
    SkoMe

  • Näste sache wäre dann
    du benutz d_id
    zum abfragen einmal bei getFreeDrugsID und bei

    format(str,128,"Hinweis Pflanze(%i) braucht Wasser sonst Stirbt die Pflanze aus.", dPlant[i][d_id]);


    Aber wo lässt du die d_id sätzen???


    Edith
    So wie ichd as sehe benutz du eins zuviel :D :D
    entweder d_id oder d_dbid.

    Einmal editiert, zuletzt von Mogly1 ()

  • Neues Problem /pflugen Funktioniert nur bei ID1.
    ocmd:pflugen(playerid, params[])
    {
    for(new i=0; i<sizeof(dPlant); i++)
    {
    if(!dPlant[i][d_dbid])continue;
    if(!IsPlayerInRangeOfPoint(playerid, 8, dPlant[i][d_x], dPlant[i][d_y], dPlant[i][d_z]))return SendClientMessage(playerid, COLOR_RED, "Du stehst an keiner Pflanze!");
    if(pInfo[playerid][pFrak] == dPlant[i][d_fraktion])
    {
    if(dPlant[i][d_prog] == 100)
    {
    new erbung = random(50) + 10;
    switch(dPlant[i][d_type])
    {
    case 1580:{pInfo[playerid][pMarh] += erbung;}//Marihuana
    case 1577:{pInfo[playerid][pLSD] += erbung;}//LSD
    case 1578:{pInfo[playerid][pKoks] += erbung;}//Kokain
    case 1579:{pInfo[playerid][pHeroin] += erbung;}//Heroin
    }
    dPlant[i][d_prog] = 0;
    SendClientMessage(playerid, COLOR_CYAN, "Erfolgreich die Pflanze gepflügt!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Diese Pflanze ist nicht Reif genug!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Diese Pflanze gehört nicht dir!");
    return 1;
    }
    }
    return 1;
    }
    Screen:


    LG,
    SkoMe

  • das liegt am return bei isplayer da müsstest du continue wieder hin amchen
    also so
    ocmd:pflugen(playerid, params[])
    {
    for(new i=0; i<sizeof(dPlant); i++)
    {
    if(!dPlant[i][d_dbid])continue;
    if(!IsPlayerInRangeOfPoint(playerid, 8, dPlant[i][d_x], dPlant[i][d_y], dPlant[i][d_z]))continue;
    if(pInfo[playerid][pFrak] == dPlant[i][d_fraktion])
    {
    if(dPlant[i][d_prog] == 100)
    {
    new erbung = random(50) + 10;
    switch(dPlant[i][d_type])
    {
    case 1580:{pInfo[playerid][pMarh] += erbung;}//Marihuana
    case 1577:{pInfo[playerid][pLSD] += erbung;}//LSD
    case 1578:{pInfo[playerid][pKoks] += erbung;}//Kokain
    case 1579:{pInfo[playerid][pHeroin] += erbung;}//Heroin
    }
    dPlant[i][d_prog] = 0;
    SendClientMessage(playerid, COLOR_CYAN, "Erfolgreich die Pflanze gepflügt!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_GREY, "Diese Pflanze ist nicht Reif genug!");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_RED, "Diese Pflanze gehört nicht dir!");
    return 1;
    }
    }
    return SendClientMessage(playerid, COLOR_RED, "Du stehst an keiner Pflanze!");
    }