Beiträge von malE

    Ciao,


    Jeffry:


    sobald ich eine Hanf Pflanze erstelle wird die erste Pflanze nicht richtig angezeigt und auch nicht wie gewollt aktualisiert durch das public Hanf().
    Aber wenn ich mehr als eine Pflanze erstelle funktionieren alle bis auf die erste erstellte Pflanze.


    Bild

    Die rechte Pflanze ist die erste Pflanze die ich erstellt habe.




    enum HanfEnum {
    Float:h_X,
    Float:h_Y,
    Float:h_Z,
    h_Wasser,
    h_Zustand,
    h_Prozent,
    h_Pflanze,
    bool:h_Gepflanzt,
    h_ID,
    Text3D:h_Label,
    h_Besitzer[MAX_PLAYER_NAME]
    }
    new HanfInfo[MAX_HANF][HanfEnum];



    ocmd:planthanf(playerid, params[])
    {
    new Float:x, Float:y, Float:z, str[145], query[256];
    GetPlayerPos(playerid, x, y, z);
    if(PlayerInfo[playerid][pHanf] < 1)return SendClientMessage(playerid, -1, " Du hast keine Hanfsamen mehr übrig");
    new i = getFreeHanfID();
    if(HanfInfo[i][h_Gepflanzt])return 1;
    HanfInfo[i][h_X] = x;
    HanfInfo[i][h_Y] = y;
    HanfInfo[i][h_Z] = z;
    HanfInfo[i][h_Gepflanzt] = true;
    HanfInfo[i][h_Wasser] = 35;
    HanfInfo[i][h_Zustand] = 75;
    HanfInfo[i][h_Prozent] = 1;
    format(HanfInfo[i][h_Besitzer], MAX_PLAYER_NAME, "%s", PlayerInfo[playerid][pName]);
    format(str, sizeof(str), "[Besitzer: %s]\nWasser: %i\nZustand: %i\nProzent: %i%",
    HanfInfo[i][h_Besitzer], HanfInfo[i][h_Wasser], HanfInfo[i][h_Zustand], HanfInfo[i][h_Prozent]);
    HanfInfo[i][h_Label] = Create3DTextLabel(str, -1, HanfInfo[i][h_X], HanfInfo[i][h_Y], HanfInfo[i][h_Z]+1, 10, 0, 1);
    HanfInfo[i][h_Pflanze] = CreateObject(822, x, y, z, 0, 0, 0, 75);
    PlayerInfo[playerid][pHanf] -= 1;
    format(query, sizeof(query), "INSERT INTO weed (besitzer, x, y, z, wasser, zustand, prozent) VALUES ('%s', '%f', '%f', '%f', '%i', '%i', '%i')", HanfInfo[i][h_Besitzer], x, y, z,
    HanfInfo[i][h_Wasser], HanfInfo[i][h_Zustand], HanfInfo[i][h_Prozent]);
    mysql_function_query(handle, query, true, "OnHanfCreated", "i", i);
    return SendClientMessage(playerid, -1, " Hanf wurde gepflanzt");
    }


    Wird durch ein Timer jede Minute aufgerufen.

    forward Hanf();
    public Hanf()
    {
    for(new i=0; i < sizeof(HanfInfo); i++)
    {
    new str[145], query[256];
    HanfInfo[i][h_Wasser] --;
    if(HanfInfo[i][h_Wasser] == 0)
    {
    HanfInfo[i][h_Zustand] -= 10;
    if(HanfInfo[i][h_Zustand] == 0)
    {
    HanfInfo[i][h_X] = 0;
    HanfInfo[i][h_Y] = 0;
    HanfInfo[i][h_Z] = 0;
    HanfInfo[i][h_Gepflanzt] = false;
    Delete3DTextLabel(HanfInfo[i][h_Label]);
    DestroyObject(HanfInfo[i][h_Pflanze]);
    }
    } else if(HanfInfo[i][h_Wasser] > 0 && HanfInfo[i][h_Wasser] < 30) {
    HanfInfo[i][h_Zustand] -= 5;
    HanfInfo[i][h_Prozent] +=1;
    } else if(HanfInfo[i][h_Wasser] > 30 && HanfInfo[i][h_Wasser] < 50) {
    HanfInfo[i][h_Zustand] -= 4;
    HanfInfo[i][h_Prozent] +=2;
    } else if(HanfInfo[i][h_Wasser] > 50 && HanfInfo[i][h_Wasser] < 70) {
    HanfInfo[i][h_Zustand] -= 3;
    HanfInfo[i][h_Prozent] +=3;
    } else if(HanfInfo[i][h_Wasser] > 70 && HanfInfo[i][h_Wasser] < 90) {
    HanfInfo[i][h_Zustand] -= 2;
    HanfInfo[i][h_Prozent] +=4;
    } else if(HanfInfo[i][h_Wasser] > 90 && HanfInfo[i][h_Wasser] < 100) {
    HanfInfo[i][h_Zustand] --;
    HanfInfo[i][h_Prozent] +=5;
    }
    format(query, sizeof(query), "UPDATE weed SET zustand='%i', wasser='%i', prozent='%i' WHERE id='%i'", HanfInfo[i][h_Zustand], HanfInfo[i][h_Wasser], HanfInfo[i][h_Prozent], HanfInfo[i][h_ID]);
    mysql_function_query(handle, query, false, "", "");
    format(str, sizeof(str), "[Besitzer: %s]\nWasser: %i\nZustand: %i\nProzent: %i%", HanfInfo[i][h_Besitzer], HanfInfo[i][h_Wasser], HanfInfo[i][h_Zustand], HanfInfo[i][h_Prozent]);
    Update3DTextLabelText(HanfInfo[i][h_Label], -1, str);
    }
    }


    Dann hab ich noch ein Problem das mein Hanf nicht richtig geladen wird ( 3DTextLabel ).
    Das Object ( Pflanze ) wird erstellt aber das Label wird nicht erstellt. Außer bei der ersten Pflanze.


    Bild

    Da wird das aber auch wieder mit falschen Werten angezeigt.



    forward OnHanfLoad();
    public OnHanfLoad()
    {
    new num_fields,num_rows, str[145];
    cache_get_data(num_rows, num_fields, handle);
    if(!num_rows)return 1;
    for(new i=0; i<num_rows; i++)
    {
    new id = getFreeHanfID();
    HanfInfo[id][h_X] = cache_get_field_content_float(i, "x", handle);
    HanfInfo[id][h_Y] = cache_get_field_content_float(i, "y", handle);
    HanfInfo[id][h_Z] = cache_get_field_content_float(i, "z", handle);
    HanfInfo[id][h_Gepflanzt] = true;
    HanfInfo[id][h_Wasser] = cache_get_field_content_int(i, "wasser", handle);
    HanfInfo[id][h_Zustand] = cache_get_field_content_int(i, "zustand", handle);
    HanfInfo[id][h_Prozent] = cache_get_field_content_int(i, "prozent", handle);
    new tmp_name[MAX_PLAYER_NAME];
    cache_get_field_content(i, "besitzer", tmp_name, handle);
    strmid(HanfInfo[id][h_Besitzer], tmp_name, 0, sizeof(tmp_name), sizeof(tmp_name));
    format(str, sizeof(str), "[Besitzer: %s]\nWasser: %i\nZustand: %i\nProzent: %i%",
    HanfInfo[i][h_Besitzer], HanfInfo[i][h_Wasser], HanfInfo[i][h_Zustand], HanfInfo[i][h_Prozent]);
    HanfInfo[i][h_Label] = Create3DTextLabel(str, -1, HanfInfo[i][h_X], HanfInfo[i][h_Y], HanfInfo[i][h_Z]+1, 10, 0, 1);
    HanfInfo[id][h_Pflanze] = CreateObject(822, HanfInfo[id][h_X], HanfInfo[id][h_Y], HanfInfo[id][h_Z], 0, 0, 0, 75);
    }
    return 1;
    }


    Ich hoffe es fehlt nichts und jemand kann mir helfen.


    //Edit
    noch ein Bild eingefügt
    public Hanf geändert & stock OnHanfSaved gelöscht da es nun im public vorkommt


    stock SaveHouseStats(id)
    {
    new query[128];
    format(query, sizeof(query), "UPDATE house SET h_besitzer='%s', h_preis='%i' WHERE id='%i'", HouseInfo[id][h_besitzer], HouseInfo[id][h_preis], HouseInfo[id][h_id]);
    mysql_function_query(handle, query, false, "", "");
    return 1;
    }


    SQL
    [04:41:10] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column 'id' in 'where clause'
    [04:41:10] [DEBUG] CMySQLQuery::Execute[] - error will be triggered in OnQueryError


    Ich habe keine Ahnung wie ich dieses Problem fixen soll.


    House System von MrMonat benutze es als Basis-System.

    Du meinst das ?


    Bei OnGameModeInit

    SetTimer("Laune", 60000*2, true);



    forward Laune(playerid);
    public Laune(playerid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i) && PlayerInfo[i][pLoggedIn] != true)continue;
    if(PlayerInfo[playerid][pPremium] == 1) {
    PlayerInfo[i][pLaune] -= 2;
    PlayerInfo[i][pHygiene] -= 2;
    PlayerInfo[i][pHarndrang] -= 2;
    GetLaune(i);
    GameTextForPlayer(i, "~d~ Beduerfnisse ~d~", 3000, 4);
    return 1;
    }else {
    PlayerInfo[i][pLaune] -= 3;
    PlayerInfo[i][pHygiene] -= 3;
    PlayerInfo[i][pHarndrang] -= 3;
    GetLaune(i);
    GameTextForPlayer(i, "~d~ Beduerfnisse ~d~", 3000, 4);
    }
    return 1;
    }
    return 1;
    }

    Falls du es anders meinst. Wie?


    Das mit den Farben könnte auch an mein Interface Mod liegen.
    Ansonsten danke das du dir mal wieder die Zeit genommen hast.


    if(PlayerInfo[playerid][pHygiene] >= 90) {
    //beduerfniss = "frisch gewaschen";
    format(str, sizeof(str), "~b~~h~Hygiene: ~g~frisch gewaschen");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 70) {
    //beduerfniss = "gut";
    format(str, sizeof(str), "~b~~h~Hygiene: ~g~gut");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 50) {
    //beduerfniss = "schwitzend";
    format(str, sizeof(str), "~b~~h~Hygiene: ~y~schwitzend");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 30) {
    //beduerfniss = "stinkt";
    format(str, sizeof(str), "~b~~h~Hygiene: ~y~stinkt");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] >= 20) {
    //beduerfniss = "schlecht";
    format(str, sizeof(str), "~b~~h~Hygiene: ~r~schlecht");
    TextDrawSetString(LauneTD[3], str);
    }
    else if(PlayerInfo[playerid][pHygiene] <= 13) {
    new Float:hp;
    GetPlayerHealth(playerid, hp);
    SetPlayerHealth(playerid, hp - 12.0);
    }



    LauneTD[3] = TextDrawCreate(502.333404, 123.199996, ""); //bsp. Hygiene: schwitzend
    TextDrawLetterSize(LauneTD[3], 0.327333, 1.139554);
    TextDrawAlignment(LauneTD[3], 1);
    TextDrawColor(LauneTD[3], -1);
    TextDrawSetShadow(LauneTD[3], 0);
    TextDrawSetOutline(LauneTD[3], 1);
    TextDrawBackgroundColor(LauneTD[3], 51);
    TextDrawFont(LauneTD[3], 3);
    TextDrawSetProportional(LauneTD[3], 1);
    TextDrawShowForPlayer(playerid, LauneTD[3]);


    // Edit
    Ich schicke dir alles was zum Code dazuzgehört als PN. Ich möchte ungern den ganzen Code veröffentlichen auch wenn es nicht viel ist.

    Danke dir daran lag es! Ist mir gerade etwas peinlich das ich so ein Fehler gemacht hab :S .


    // Edit
    Jeffry:


    format(str, sizeof(str), "~b~~h~Hygiene: ~g~frisch gewaschen");
    Warum wird mir hier nicht die Grüne Farbe angezeigt. Es wird alles bis auf Grün angezeigt.

    Ciao,


    hab ein Problem mit meinem stock GetLaune.



    stock GetLaune(playerid)
    {
    new laune[15];
    if(PlayerInfo[playerid][pLaune] >= 90) laune = "froehlich";
    if(PlayerInfo[playerid][pLaune] >= 70) laune = "gut";
    if(PlayerInfo[playerid][pLaune] >= 50) laune = "gelangweilt";
    if(PlayerInfo[playerid][pLaune] >= 30) laune = "traurig";
    if(PlayerInfo[playerid][pLaune] >= 20) laune = "depremiert";
    if(PlayerInfo[playerid][pLaune] >= 8) laune = "depressiv";
    if(PlayerInfo[playerid][pLaune] <= 6) SetPlayerHealth(playerid, 0.0);
    return laune;
    }


    Immer wenn ich mir die Laune auslesen lasse wird depressiv angezeigt. Obwohl meine Laune bei z.B 70 % also gut ist.


    if(ReturnPlayerID(entsprechenderName) != INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "Spieler XY ist Online");
    else {
    return SendClientMessage(playerid, -1, "Spieler XY ist Offline");
    }

    So denke ich kannst ja mal probieren

    stock GetFrakColor2(fraktID)
    {
    switch(fraktID)
    {
    case 1: return 1;
    case 2: return 247;
    case 3: return 181;
    case 4: return 128;
    }
    return -1;
    }


    Kann mir jemand erklären warum die case`s so returnt werden? Und was es bringt .

    Sollte nun funktionieren - hab dein Code bisschen Optimiert.


    Spoiler anzeigen
    if(pickupid == fbirep)
    {
    if(Spieler[playerid][Team] == 1 || Spieler[playerid][Team] == 2 || Spieler[playerid][Team] == 14)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    RepairVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, BLAU, "Fahrzeug repariert.");
    }
    }else {
    return SendClientMessage(playerid, ROT, "Du bist Kein Beamter.");
    }
    }

    Spoiler anzeigen
    if(pickupid == sapdrep)
    {
    if(Spieler[playerid][Team] == 1 || Spieler[playerid][Team] == 2 || Spieler[playerid][Team] == 14)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    RepairVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, BLAU, "Fahrzeug repariert.");
    }
    }else {
    return SendClientMessage(playerid, ROT, "Du bist Kein Beamter.");
    }
    }