params kannst in diesem Fall durch cmdtext[10] ersetzen ( wenn unter OnPlayerCommandText ).
Warum 10 ?
Angenommen du gibst "/makebizz 500 1 1 1" ein, dann müssen wir den Text bis nach dem ersten Leerzeichen hinter makebizz abschneiden. Einfach den index von cmdtext direkt ansprechen."/makebizz " muss weg. Einfachen die Zeichen zählen, dann hast den korrekten index.
Beiträge von Goldkiller
-
-
-
Das ist normal und auch logisch. Hast wohl den Textdraw zentriert eingestellt.
Du kannst es auch über format lösen:
format(string,sizeof(string),"kills %2d", <var_kills>);
Wird die Zahl immer über mindestens 2 Zeichen darstellen.
Heisst jetzt Beispielsweise:
kills 5
kills 10Den Textdraw musst du jetzt aber etwas nach rechts schieben.
-
_: entfernt nur das Tag.
Beispiel:
new Text:tdTextdraw;
tdTextdraw = CreateTextDraw(...);
if( _: tdTextdraw == 1000 ) // gibt kein tag mismatch
// if ( tdTextdraw == 1000 ) // gibt ein tag mismatch
enum ProblemEnum
{
ProblemID,
NochMehr[5],
ProblemText[255]
}
ProblemID,NochMehr und ProblemText haben hier nämlich das Tag ProblemEnum, also:
new ProblemEnum:var = ProblemEnum:ProblemID; // macht kaum Sinn,funktioniert aberZum Anderen,
GetAnimationName(index, animlib[], len1, animname[], len2)
prüfen ob animlib "SWIN" heisst. -
Außerdem spreche ich auch nirgendwo 0 an
Hab ich ja gesagt,deswegen ist es unnötiger Speicher der dort belegt wird aber nie genutzt wird. Du sprichst ja nur den Index 1 - 7 an, niemals die 0. Trotzdem ist der Index 0 gültig bzw vorhanden. -
sizeof brauch man dafür gar nicht.
printf("size ProblemText %d ", _:ProblemEnum - _:ProblemText);
Das gilt dann aber auch nur für den letzten Eintrag ( ProblemText ) des enum's ProblemEnum . -
_v[MAX_VEHICLES][ 0 ] ;
Index 0 wird nie belegt, liegt an der Vergabe deiner Zahlem hier:
#define MOTOR 1
#define LICHT 2
#define ALARM 3
#define TUREN 4
#define MOTORHAUBE 5
#define KOFFERRAUM 6
#define OBJEKTIVE 7
Fang lieber bei 0 an, dann ist die Größe des Arrays auch 7 ( so wie du es wohl sicherlich möchtest bzw dachtest ) und nicht 8.#define MOTOR 1
#define LICHT 2
#define ALARM 3
#define TUREN 4
#define MOTORHAUBE 5
#define KOFFERRAUM 6
#define OBJEKTIVE 50
Kannst es ja mal so kompilieren und gucken ob sich was an der Größe der *.AMX verändert,dadurch dass aus OBJEKTIVE 7 -> OBJEKTIVE 50 wird. -
Gibt da auch einen Trick um es ausrechnen zu lassen. Einfache Mathemtik und bischen Verständnis für das Schlüsselwort "enum" brauch man dafür aber schon :p.
Bin mir nicht mehr ganz sicher wie es ging,die hat die "größe" direkt erfasst. Es funktioniert aber auch Problemlos so:#include <a_samp>
enum ProblemEnum
{
ProblemID,
NochMehr[5],
ProblemText[255],
dummy // ohne den dummy wäre ProblemText nicht rechenbar
}
main() {
printf("size ProblemText %d ", _:dummy - _:ProblemText ); // für größe von ProblemText
printf("size NochMehr %d ", _:ProblemText - _:NochMehr ); // für größe von NochMehr
printf("size ProblemID %d ", _:NochMehr - _:ProblemID ); // für größe von ProblemID
}
Wieso das funktioniert ? Hinter ProblemID,NochMehr,ProblemText und dummy stecken nur Zahlen.
Es funktioniert auch ohne dummy, müsste man dann aber etwas schreiben . -
Sinnloser Thread 0o.
-
Ging mit dini noch nie und wird mit dini auch nie gehen.
Hiermit geht es aber ( dcreate ). -
Lohnt sich eh nicht,das Callback OnPlayerPrivmsg existiert nicht mehr regulär in SA:MP.Früher wurde das Callback über /PM aufgerufen, gibt es aber schon bestimmt seit 0.3a nicht mehr.
Kannst es also auch genau so gut löschen ( oder mit deiner eigenen /PM Funktion verknüpfen ). -
Fcar_get hast du nicht gepostet. Was wird dort zurückgegeben ? Überleg doch mal einen Schritt weiter, falls man dir helfen soll.
Falls es ein String / Array sein sollte,dann ist folgendes falsch:
new ServerCars[MAX_CARS][ServerVeh];
for(new i;i<MAX_CARS;i++)
{
ServerCars[i][carID] = Fcar_Get(i,"carID"); // <- falsch,da kein Array
ServerCars[i][carX] = Fcar_Get(i,"PosX");// <- falsch,da kein Array
ServerCars[i][carY] = Fcar_Get(i,"PosY");// <- falsch,da kein Array
ServerCars[i][carZ] = Fcar_Get(i,"PosZ");// <- falsch,da kein Array
ServerCars[i][carA] = Fcar_Get(i,"PosA");// <- falsch,da kein Array
ServerCars[i][Color1] = Fcar_Get(i,"C1");// <- falsch,da kein Array
ServerCars[i][Color2] = Fcar_Get(i,"C2");// <- falsch,da kein Array
ServerCars[i][Numplate] = Fcar_Get(i,"Numplate");// <- richtig,da Numplate ein Array ist.Jede bezweifel ich,dass Fcar_Get ein Array der größte 50 zurück gibt
CreateVehicle(ServerCars[i][carID],ServerCars[i][carX],ServerCars[i][carY],ServerCars[i][carZ],ServerCars[i][carA],ServerCars[i][Color1],ServerCars[i][Color2],-1);
} -
[...], außer er ist noch offen.
Ist er doch. Keine Gute Ausrede ;).ZitatGoldkiller hast du ein Tutorial zu der print Methode zur Fehlersuche? Kenne mich da noch nicht so aus.
Signatur ( Debugnachrichten ). -
Genau der gleiche Fehler wie hier. Hast dir wohl nicht den Beitrag von MiniYoda der 2 Post später kommt durchgelesen,mh ?
-
format(string,sizeof(string),"Die SkinID wurde erkannt\nGeben sie nun die WaffenID ein\Wenn ihr NPC keine Waffe haben soll drücken sie Keine");//Hier der error
[..] WaffenID ein\Wenn ihr NPC[..] .
Nach \ hast wohl das n vergessen,denn \ ist ein besonderes Zeichen. Da kann nicht jedes X-Beliebige Zeichen drauf folgen. -
format(save,sizeof(save),"/Spieler/%d.ini",pName);
%d ist falsch. Überleg nochmal, was dort hin müsste ( String ).Zitatstock stockWechslePasswort(playerid,key[])
stock stockWechslePasswort , komischer Name :p -
Wie sieht denn die passende Zeile dazu aus ?
Bist du dir denn auch sicher,dass der MySQL Server wirklich läuft. -
[...] und das er mit PVars arbeite o: MySQL ist tausendmal besser und schneller.
Ach, ist das so ?wiki.sa-mp.com und probieren,probieren,probieren.
-
Und Zeilen markieren war nicht möglich :-O?
mysql_SetInt("accounts", "Level", "12", SpielerName(playerid)); // <- "12" ist kein Integer-Wert
mysql_SetInt("accounts", "Geld", 300, SpielerName(playerid));
mysql_SetInt("accounts", "Kills", 10, SpielerName(playerid));
mysql_SetInt("accounts", "Tode", 5, 5, SpielerName(playerid)); // <-- Ehm , 5, 5, ? Wohl eher doppelt ;)
mysql_SetFloat("accounts", "Health", , 10.0, SpielerName(playerid)); // , , - Da sind zwei Kommata, eines muss weg
Übrigenes fehlt dort überall noch "Name" vor SpielerName() .//Edit:
http://forum.sa-mp.de/san-andr…-login-register-beispiel/Zitatmysql_SetInt "Updatet" den Wert der an der Angegebenen Stelle in der Tabelle liegt, auf den neuen Wert den wir angegeben haben.
Table[] - Die Tabelle in der der Wert verändert werden soll.
Field[] - Das Feld (die Spalte) in der der Wert verändert werden soll.
To - Der Wert der an der in das Angegebene feld eingetragen werden soll.
Where[] - Das Feld (die Spalte) in der Nach der Bedingung gesucht wird.
Where2[] - Die bedingung um die richtige Reihe zu finden.
mysql_SetInt("accounts", "Level", SpielerInfo[playerid][pLevel], "Name", SpielerInfo[playerid][pName]); -
Nein.
Ich hab alles im Post erwähnt.
Du hast nichts von dem gemacht,was ich geschrieben habe. Ich seh nicht mal auf den ersten Blick, ob du überhaupt irgendwas geändert hast.new /* Text3D:ADuty[MAX_PLAYERS],adminduty[128] , */ string[128];
ADuty und adminduty ( adminduty sollte immernoch MAX_PLAYERS als größe haben,nicht 128 ) sind immernoch nicht Global, da du sie in der Funktion deklarierst. Mit "static" würde es zwar funktionieren,aber das lassen wir lieber mal.
Weisst du denn wenigstens wie du eine Variable Global deklarierst ? Du schreibst die Variable einfach nicht in irgendeine Funktion hinnein. Am besten in den Kopf deines Scriptes ( bevor irgendwas mit main() oder On<Irgendwas> kommt ) .