Dazu müsstest du mal posten wie du "Autohaus" deklarierst + das enum,welches du dort verwendest.
Könnte mir vorstellen,dass du Float als Tag ( Float: ) vergessen hast bei posx,posy oder posz.
Beiträge von Goldkiller
-
-
Habe ich doch geschrieben.
Dazu lässt du einfach die eckigen Klammern leer [].
Lass es doch einfach offen und automatisch ermitteln wie groß es sein muss:
new Buycars[][AKinfo] = {
Damit sparst du dir sinnloses zählen.Die Größe bekommst auch mit sizeof() zurück. -
Hast oben die Fahrzeug anzahl geändert?
Also gezählt und +1 dazugerechnet?Gruß
Was für ein Quatsch. Warum soll(te) er +1 rechnen ?Lass es doch einfach offen und automatisch ermitteln wie groß es sein muss:
new Buycars[][AKinfo] = {
Damit sparst du dir sinnloses zählen.Die Größe bekommst auch mit sizeof() zurück.In der letzten Zeile des Arrays muss auch das , am Ende weg.
-
Du kannst doch einfach die Nachricht entfernen aus dem Code und stattdessen eine Variable hoch zählen lassen. ( Ob die weg müssen,musst du entscheiden )
Deklarieren musst du die Variablen außerhalb der Schleife. Wenn die Schleife durchgelaufen ist, eine Nachricht formatieren und dort den Wert der Variablen einfügen. -
Wo hilft dein Post bei dem Fehler,Uppermost ?
ZitatIch habe den String formatiert, doch weiß jetzt nicht, ob ich bei Versuch % ein %s, %i oder ein %d nehmen muss.
%i und %d sind identisch. Das müsstest du benutzten anstatt %s.
Wofür %[s,i,d,etc.] steht,siehst du hier:
http://wiki.sa-mp.com/wiki/FormatZitatÜbrigens: Ich habe %s, %i und %d probiert, doch bei allen stand: tag misbatch oder so etwas ähnliches.
Tag Mismatch hat nichts mit %s,%i oder %d zu tun. Denn der Compiler prüft nicht,ob %[s,i,d,etc.] mit dem Variablentyp zusammenpasst, für den es Platzhalter ist.format(string,sizeof(string),"Das angegebene Passwort war falsch!\nVersuch % von 3\nBitte gib dein richtiges Passwort ein!",Loginversuche);
Wieso schreibst du dort nur Loginversuche und nicht SpielerAccount[playerid][Loginversuche] ? Denn das ist dein Fehler.//Edit:
Die Erklärung findest du irgendwo im Forum. Hängt jedenfalls mit der Funktionsweise von "enum" zusammen. -
Ich sehe irgendwie nicht, wo du auf Variablen explizit eingehst.
Ungarische_Notation
Find ich persöhnlich ganz praktisch, besonders für Variablen.
Es lässt 1:1 auf Pawn beziehen,da alle Variablen technisch vom gleichen Typ sind. Lässt sich aber mMn dennoch abstrakt dafür verwenden.new sString[] = "String"; // oder sz,wie man es halt möchte
new Float:fFloat = 0.0;
new iInteger = 14;
new aiArrayInteger[10] = {0,1,..};
//etc//Edit: Für spezielle Tags in Pawn nehm ich auch immer ein Präfix.
new Text:tdTextdraw; // td = TextDraw
new Text3D:t3dLabel;Damit weiss ich zumindest immer, um was für ein "Objekt" es sich bei der Variable handelt.
Find ich gut,dass Jemand versuchst hier den Coding-Stil zu verbessern.
-
Sag doch mal welches Plugin du benutzt,dann such ich dir die *.so raus ;).
Spoiler anzeigen Ich bezweifel das du überhaupt weisst,welches Plugin du brauchst. -
new adtext[100],string[200];
new zeichenpreis = strlen(adtext)*10;
if(sscanf(params,"s",adtext)) return SendClientMessage(playerid,ROT,"Verwendung: /ad (Deine Werbung)");
0 * 10 = 0.
Du solltest mal die Reihenfolge überdenken zwischen Zeile 2 und 3. Macht es nicht mehr Sinn,erst den Text in die Variable adtext zu laden und danach erst dessen Länge auszulesen ?//Edit: Eigentlich kannst du auch komplett params verwenden und auf eine extra Variable verzichten ( adtext ).
-
if(Safe[u][Loesung] == inputtext)
Strings vergleicht man immernoch mit strcmp. -
Im nachhinein habe ich erst gesehen,dass du gar kein Auto Increment benutzt sondern die IDs manuell vergibst.
Dann fallen die o.g. Lücken irgendwann wieder weg, sobald neue Häuser "gelöschte alte" ersetzen.Würde trotzdem nicht den Index gleich HausID legen.
Hier ein Punkt:
ZitatDer stock geht eigendlich nur eine For new schleife durch alle häuser und prüft ob er in der nähe des pickups ist.
Es ist kein stock,sondern eine Funktion. ( siehe Hier )
Du schreibst was von einer for Schleife,verwendest aber while im Code der nach dem o.g. Zitat folgt. -
Zitat
Vllt noch verbesserungsvorschläge?
Ja.
Wieso ist der Index gleich der HausID ? So hast du definitiv schon eine Lücke beim Index 0. Denn eine ID per AutoIncrement 0 kriegst du sicherlich nicht.
Leider machen es hier im Forum viele so ( Index = ID ) , verstehe nicht wieso. Ist nämlich kein guter Stil.Angenommen ich habe dieses Häuser:
Spoiler anzeigen MAX_HAUS laut Quellcode 100
1,2,3,5,6,7 ... bis 100.
Die 0 fehlt, Index ist aber belegt.
Die 4 fehlt, Index ist aber belegt.
Die 100 habe ich, der Index 100 existiert aber nicht. Ich habe also theoretisch nicht mal die Möglichkeit 100 Häuser zu erstellen, sondern "nur" 99.
Spoiler anzeigen Denn: Gültiger Index ist 0 bis MAX_HOUSES-1Hätte ich folgende Häuser:
1,2,3,4,5,101,102,103,104
Die 0 fehlt wieder.Index ist aber wieder belegt.
Sind Insgesamt 9 Häuser, wovon aber nur die ersten 5 funktionieren. 101,102,103 und 104 würde ich gar nicht erstellt bekommen :/.Das Problem mit den Lücken hast du sobald Jemand ein Haus löschst. Das bietest du ja immerhin mit /delhaus an.
//Edit:
Da wie oben genannt Lücken durchaus vorhanden sein werden, würde ich dir auch empfehlen auf den Wert von "erstellt" zurückzugreifen.
Zum Beispiel hier: IsHaus
Wieso alle 100 Häuser theoretisch prüfen, wenn sowieso nur 3 erstellt wurden ? Die Abfrage von "erstellt" würde ich definitiv vor der Position prüfen. -
Zitat
Das kommt nicht [...]
Was soll ich jetzt machen ? Du hast dann die falschen Koordinaten oder bist am falschen Punkt. Das musst du doch selber erkennen können.Zitat[...] der Label erscheint immernoch nicht.
Sehr gut. Nur hab ich keine Ahnung was du "jetzt" machst,damit es immernoch nicht geht. -
Dazu brauchst du einen neuen Thread?
ZitatWarum geht das nicht wenn ich dort bin
Woher soll man das wissen ? Füg doch einfach mal Debug Informationen ein. Dann kannst du wenigsten nachvollziehen, bei welcher Abfrage es scheitert.Create3DTextLabel("Benutze die\n{1BE032}N Taste", 0x008080FF, 1279.1732,-1651.6665,13.6519, 0, -1);
0 als drawdistance ist nicht sehr weit. -
if(GetPlayerVehicleID(playerid) == grovefahrzeuge(vehicleid))
Habe doch oben geschrieben,dass das Quatsch ist.
Ließ doch nochmal meinen Post.
Spoiler anzeigen Ist zwar sowieso falsch,aber wozu nochmal GetPlayerVehicleID() ? Du ließt doch vorher den Wert eh aus
Wenn du die Funktion grovefahrzeuge() selber geschrieben hast,dann musst du doch wissen,welchen Wert die Funktion zurück gibt,wenn du in einem Grove Fahrzeug sitzt . -
habe keine erors und keine warnings mehr habe über
if(new.. ein new gesetzt [pwn]
"if(new" ? Wirklich ?!Poste doch einfach mal den ganzen Code von OnPlayerStateChange. Denk doch mal etwas nach. Dir soll Jemand helfen, muss aber alle Grundlegenden Informationen nachfragen anstatt sie einfach direkt zu bekommen. Das hilft dir nicht.
Du bist damit aber auch leider nicht die Ausnahme. -
Zitat
was soll ich dann machen um frak auto zu erstellen ?
Dazu habe ich doch rein gar nichts geschrieben. Ich habe nur gesagt, dass du unter OnPlayerStateChange einen Logik Fehler hast.Zitat//EDIT weil es funktioniert nicht xD
Sehr gute Beschreibung. Glaubst du wirklich Jemand außer dir hat jetzt verstanden wo der Fehler ist ?
Du musst viel genauer sagen,was genau nicht funktioniert. Keiner kann auch nur erahnen wo der Fehler sein kann,da du 0 Informationen gibst. -
Wie du siehst,"debug 2" wird nie ausgegeben.
Der Code springt also nie in die while Schleife:
while(mysql_retrieve_row())
{
print("debug 2");
mysql_fetch_field_row("Name", result);
format(string, sizeof(string), "%s\n%s", string, result);
}
Dadurch füllt sich auch nie string und du bekommst nur (null) ausgegeben für den String. Ich gehe mal davon aus,dass es definitiv Einträge geben sollte ( Die Tabelle ist also nicht leer ).Ich weiss jetzt nicht welches Plugin du benutzt,aber änder die mysql_store_result() Zeile in folgendes:
printf("mysql_store_result() = %d",mysql_store_result() );
http://wiki.sa-mp.com/wiki/MySQL#mysql_store_resultJe nachdem welches Plugin du verwendest,gibt es auch das Callback OnQueryError.
http://wiki.sa-mp.com/wiki/MySQL#OnQueryError
Dort könntest du eventuelle Fehler abfangen und dir per print ausgeben.
Zum Beispiel so:
public OnQueryError(errorid, error[], callback[], query[], connectionHandle)
{
printf("OnQueryError(%d,%s,%s)",errorid,error,query);
return 1;
}//Edit:
Das oben fällt dann wohl weg.Laut Wiki gehört mysql_fetch_field_row etwas anders.
http://wiki.sa-mp.com/wiki/MySQL#mysql_fetch_field_row
Es müssten also getausch werden bei dir in
mysql_fetch_field_row(result, "Name");
Hast du auch nur 1 Account in der Tabelle ? Sonst müsstest "debug 2" häufiger ausgegeben bekommen. -
Nein
Er soll mir einfach nur alle vorhandenen Accounts in der Datenbank auflisten, damit ich diese per Dialog löschen kann etc.
Leider funktioniert der Code von @Josh_Hunter: auch nicht ..
Du sollst auch nicht einfach nur kopieren.Hast du denn überhaupt eine MySQL Datenbank ? Gibt es dort die Tabelle samp und ist dort eine Spalte mit dem Namen Name ? Wird der Dialog angezeigt und ist lediglich der Inhalt leer ?Mach doch einfach mal Debug Informationen rein:
mysql_query("SELECT Name FROM samp");
mysql_store_result();
print("debug 1");
new result[512], string[256];
while(mysql_retrieve_row())
{
print("debug 2");
mysql_fetch_field_row("Name", result);
format(string, sizeof(string), "%s\n%s", string, result);
}
print("debug 3");
mysql_free_result();
print("debug 4");
print(string);
ShowPlayerDialog(playerid,temp,DIALOG_STYLE_MSGBOX,"Hi",string,"Ok",""); -
Sind denn bei dir alle Spieler auf dem Server die jemals bei dir einen Account angelegt haben ? Ich nehm die Antwort mal vorne weg,Nein.
ZitatWeiß nicht wo da das Problem sein soll, aber gut das du Sachlich bleibst und direkt rumheulen musst.
Tust du ja gerade. -
Hast du einen stock der mysql_CheckAccount heißt?
Lösch bitte deinen Beitrag. Was bringt denn diese Funktion ( Es ist eine Funktion,kein stock ) um aufzulisten, was für Accounts es alles gibt ?
Soll man jetzt etwa zufällig alle möglichen Namen ausprobieren ?
Spoiler anzeigen Wer aber in seiner Signatur auch Pawno Hilfe anbietet hat sich sowieso disqualifiziertDer Beitrag von John_Hunter ist gut.