Ciao,
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.
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.
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