strmid(Staat[Besitzer],string,0,strlen(string),64);
zu
format(Staat[Besitzer], len, "%s", string);
Und zeig uns mal was in der MySQL Log Steht
strmid(Staat[Besitzer],string,0,strlen(string),64);
zu
format(Staat[Besitzer], len, "%s", string);
Und zeig uns mal was in der MySQL Log Steht
Ohne Code, ist hier nichts los ![]()
Er hat dir einen Tipp gegeben, denke mal nach und klicke endlich auf den Link!
Wieso nimmst du denn Globale Arrarys für Timer mit Parametern ?
Wenn mehrere Spieler drauf sind, dann klappt das auch nicht ganz so gut.
Deswegen mach mal:
new Timer[anzahl][MAX_PLAYERS];
Zeig uns mal einen Quellcode im Script, wo du denkst daran könnte es liegen
Guten Abend,
Mein Name lautet MrPawn.
Ich habe ja gesagt, ich finde es gut das du deine Meinung/Kritik ausstrahlst.
Sonst wären deine Beiträge in diesem Thema ja unnütz.
Ich werde es die Woche Vielleicht mal bearbeiten ..
Mit freundlichen Grüßen,
MrPawn
Ja natürlich könnte ich, das & das machen ..
Aber wenn man die Überschrift liest, dann merkt man ganz schnell das es ein Simples Anmelduns System darstellen soll.
Dazu habe auch noch geschrieben, ob es sich für anfänger lohnt, wird man dann ja sehen ![]()
Aber trotzdem Danke, das du hier deine Kritik oder Meinung rauslässt, je wie mans nimmst ![]()
Ist doch ganz klar, da fehlen klammern..
Naja bearbeite am besten deine Schleife.
Vo 16 anzufangen, wenn es 16/17 ist ?
Dann fängt er nähmlich erst von FrakCar 16 an zu zählen.
Deswegen:
if(newstate == PLAYER_STATE_DRIVER){
for(new i; i<sizeof(lvpdcars);i++){
if(GetPlayerVehicleID(playerid) == lvpdcars[i])
if(Spieler[playerid][Fraktion] != 1)return RemovePlayerFromVehicle(playerid),SCM(playerid,WES,"Du Bist Keine LVPD");
}
}
Und ich würde die Anzahl von den Frakcars Minimal erweitern, falls du mal nachschub brauchst ![]()
Du darfst nicht return 1; in einer schleife verwenden, oder solltest es zu mindest nicht umbedingt ![]()
Verwende continue den dies Überspringt dann die jeweiligen sachen
Ich habe eine Möglichkeit, mit der müsste es ganz simpel gehen
Naja send mir mal PN deine Teamspeak daten, erkläre ich dir wie ich das meine
Ich hätte eine Möglichkeit, du hast doch eine Passwort abfrage, wenn diese richtig ist, tuhst du einfach inputtext auslesen ![]()
Ja das return 1; gehört da auch nicht hin
Und auserdem schrieb ich dir per PN das SpielerInfo groß geschrieben wird
Das ist doch ein altes MrMonat tutorial oder so sieht es jedenfalls aus.
Schau doch sein Adminsystem tutorial an :o ?
Das Login/Register habe ich ihm gemacht ![]()
Gut danke, das klappt nun auch
Jetzt ergibt es aber ein weiteres Problem..
Und zwar übergibt er nur noch an die ID 1.


Aktueller CODE:
public Pfandadd()
{
new str[3], count, query[128];
for(new i=0;i<MAX_TONNEN;i++)
{
format(str, 3, "%i", i);
if(mysql_GetFloat("nlr_tonne", "X", "id", str) < 1.0)continue;
count ++;
printf("Exists: %d -> count = %d", i, count);
}
new rand = 1 + random(count);
format(query, sizeof(query), "SELECT * nlr_tonne WHERE id=%i", rand);
mysql_query(query);
mysql_store_result();
if(!count)
{
KillTimer(Tonnentimer);
Tonnentimer = SetTimer("Pfandadd", 10000, false);
print("Es konnten keine Pfandflaschen an ID: ? übermittelt werden!");
}
else
{
KillTimer(Tonnentimer);
new rand1 = 1 + random(11);
format(query, sizeof(query), "UPDATE nlr_tonne SET Pfandflaschen=Pfandflaschen+%i WHERE id=%i",rand1, rand);
mysql_query(query);
Tonnentimer = SetTimer("Pfandadd", 10000, true);
printf("Es wurden %i Pfandflaschen an ID: %i übermittelt!",rand1,rand);
}
mysql_free_result();
return 1;
}
Danke dies Klappt nun wunderbar, nun habe ich aber ein Fehler in meinem /dtonne befehl..
Und zwar wenn ich in der nähe einer tonne bin , dann zeigt er mir den Dialog an und sagt gleichzeitig das ich nicht in der nähe bin.
ocmd:dtonne(playerid)
{
new str[3], Float:X, Float:Y, Float:Z, string[256];
if(uInfo[playerid][sAdminlevel] < 6)return SendClientMessage(playerid, COLOR_LIGHTRED, "FEHLER: {FFFFFF}Du hast nicht das Recht dazu.");
GetPlayerPos(playerid, X, Y, Z);
for(new i=1;i<MAX_TONNEN;i++)
{
format(str, 3, "%i", i);
if(mysql_GetFloat("nlr_tonne", "X", "id", str) < 1.0)continue;
X = mysql_GetFloat("nlr_tonne", "X", "id", str), Y = mysql_GetFloat("nlr_tonne", "Y", "id", str), Z = mysql_GetFloat("nlr_tonne", "Z", "id", str);
if(!IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z))continue;
SetPVarInt(playerid, "mID", i);
format(string, sizeof(string), "{FFFFFF}Möchtest du wirklich die {EBFF00}Mülltonne{FFFFFF} mit der ID: {EBFF00}%i{FFFFFF} entfernen?", i);
ShowPlayerDialog(playerid, DIALOG_TONNE, DIALOG_STYLE_MSGBOX, "Mülltonne", string, "Ja", "Nein");
break;
}
return SendClientMessage(playerid, COLOR_LIGHTRED, "FEHLER: {FFFFFF}Du stehst an keiner Tonne!");
}
Das was in der Schleife steht, printet er garnicht ?

Aktueller CODE:
public Pfandadd()
{
new str[3], count, query[128];
for(new i=0;i<MAX_TONNEN;i++)
{
format(str, 3, "%i", i);
if(mysql_GetFloat("nlr_tonne", "X", "id", str) < 1.0)continue;
count ++;
printf("Exists: %d -> count = %d", i, count);
}
new rand = 1 + random(count);
format(query, sizeof(query), "SELECT * nlr_tonne WHERE id=%i", rand);
mysql_query(query);
mysql_store_result();
if(!mysql_num_rows())
{
KillTimer(Tonnentimer);
Tonnentimer = SetTimer("Pfandadd", 10000, false);
printf("Es konnten keine Pfandflaschen an ID: %i übermittelt werden!",rand);
}
else
{
KillTimer(Tonnentimer);
new rand1 = 1 + random(11);
format(query, sizeof(query), "UPDATE nlr_tonne SET Pfandflaschen=Pfandflaschen+%i WHERE id=%i",rand1, rand);
mysql_query(query);
Tonnentimer = SetTimer("Pfandadd", 10000, true);
printf("Es wurden %i Pfandflaschen an ID: %i übermittelt!",rand1,rand);
}
mysql_free_result();
return 1;
}
Es Funktioniert ja alles, nur ich möchte wenn keine Tonne eingetragen wird das er dann auch hinschreibt das sie nicht übergeben wurde ..
Mit Tonne:

Also wenn eine Tonne eingetragen wird, dann klappt es wunderbar aber sonst..
Ich hatte auf dem Screen garkeine Tonnen ![]()
Deswegen verwundert mich es ja das so große Zahlen kommen.
Aktuell klappt /pfandsuchen einwandfrei und wenn tonnen in der Datenbank eingetragen sind, bekommt immer einer von den beiden Pfandflaschen, aber wenn keine Tonnen eingetragen sind, dann kommen große Zahlen.
Aber warum ![]()
Alles anzeigenZu deinem ersten Problem, du musst den Code aus der Schleife holen:
public Pfandadd()
{
new str[3], count, query[128];
for(new i=1;i<MAX_TONNEN;i++)
{
format(str, 3, "%i", i);
if(mysql_GetFloat("nlr_tonne", "X", "id", str) < 1.0)continue;
count ++;
}
new rand = 1 + random(count);
format(query, sizeof(query), "SELECT * nlr_tonne WHERE id=%i", rand);
mysql_query(query);
mysql_store_result();
if(!mysql_num_rows())
{
KillTimer(Tonnentimer);
Tonnentimer = SetTimer("Pfandadd", 1000, false);
printf("Es konnten keine Pfandflaschen an ID: %i übermittelt werden!",rand);
}
else
{
KillTimer(Tonnentimer);
format(query, sizeof(query), "UPDATE nlr_tonne SET Pfandflaschen=Pfandflaschen+12 WHERE id=%i", rand);
mysql_query(query);
Tonnentimer = SetTimer("Pfandadd", 60*1000*10, true);
printf("Es wurden 12 Pfandflaschenan ID: %i übermittelt!",rand);
}
mysql_free_result();
return 1;
}
Zum zweiten Problem: Hier genau andersrum, du musst den Code in die Schleife Packen:
ocmd:pfandsuchen(playerid)
{
new str[3], Float:X, Float:Y, Float:Z, query[128], string[256], rand = 1 + random(12);
for(new i;i<MAX_TONNEN;i++)
{
format(str, 3, "%i", i);
format(query, sizeof(query), "SELECT * nlr_tonne WHERE id=%i", i);
mysql_query(query);
mysql_store_result();
if(mysql_GetFloat("nlr_tonne", "X", "id", str) < 1.0)continue;
X = mysql_GetFloat("nlr_tonne", "X", "id", str), Y = mysql_GetFloat("nlr_tonne", "Y", "id", str), Z = mysql_GetFloat("nlr_tonne", "Z", "id", str);
if(!IsPlayerInRangeOfPoint(playerid, 3.0, X, Y, Z))continue;
mysql_free_result();
format(query, sizeof(query), "UPDATE nlr_tonne SET Pfandflaschen=Pfandflaschen-%i WHERE id=%i",rand, i);
mysql_query(query);
uInfo[playerid][sPfandflaschen] += rand;
format(string, sizeof(string), "ERFOLGREICH: {FFFFFF}Du hast %i {EBFF00}Pfandflaschen{FFFFFF} aus der {EBFF00}Mülltonne{FFFFFF} gekramt!", rand);
SendClientMessage(playerid, COLOR_GREEN, string);
return 1;
}
return SendClientMessage(playerid, COLOR_RED, "Keine Tonne hier.");
}
Ich habe dir mal deine MySQL Queries gelassen wie sie sind, da ich nicht weiß wie du die Funktionen (mysql_GetFloat) hast, aber unter Umständen ist das recht Ressourcenlastig geschrieben. Aber in erster Linie schauen wir mal, dass es überhaupt geht.
Leider ist es aktuell so, wenn es diese ID nicht gibt, versucht er es trotzdem zu übergeben

Aktueller Code:
public Pfandadd()
{
new str[3], count, query[128];
for(new i=1;i<MAX_TONNEN;i++)
{
format(str, 3, "%i", i);
if(mysql_GetFloat("nlr_tonne", "X", "id", str) < 1.0)continue;
count ++;
}
new rand = 1 + random(count);
format(query, sizeof(query), "SELECT * nlr_tonne WHERE id=%i", rand);
mysql_query(query);
mysql_store_result();
if(!mysql_field_rows())
{
KillTimer(Tonnentimer);
Tonnentimer = SetTimer("Pfandadd", 10000, false);
printf("Es konnten keine Pfandflaschen an ID: %i übermittelt werden!",rand);
}
else
{
KillTimer(Tonnentimer);
new rand1 = 1 + random(11);
format(query, sizeof(query), "UPDATE nlr_tonne SET Pfandflaschen=Pfandflaschen+%i WHERE id=%i",rand1, rand);
mysql_query(query);
Tonnentimer = SetTimer("Pfandadd", 10000, true);
printf("Es wurden %i Pfandflaschen an ID: %i übermittelt!",rand1,rand);
}
mysql_free_result();
return 1;
}