Danke, hab es aber selber grade festgestellt.
Probiere grade noch etwas rum, weil es immer noch nicht so funktioniert wie ich es brauche, aber melde mich dann nochmal.
Trotzdem danke für die Hilfe, hatte die Lösung nicht bedacht.
Danke, hab es aber selber grade festgestellt.
Probiere grade noch etwas rum, weil es immer noch nicht so funktioniert wie ich es brauche, aber melde mich dann nochmal.
Trotzdem danke für die Hilfe, hatte die Lösung nicht bedacht.
Ach guter Lösungansatz, bin ich nicht drauf gekommen.
Trotzdem gibt es ein weiteres problem. Wenn Ich nur /notruf benutze, dann zeigt er mir einen Checkpoint an. und wenn ich /notruf 0 schreibe, dann zeigt er mir die leere Liste
Bin grade dabei es zu versuchen, wie man es löst, aber vielleicht fällt es hier einem ja schneller ein.
Hey,
ich habe ein kleines Problem.
Ich möchte den Befehl /notruf programmieren. Dieser soll folgerndermaßen funktioneren: wird /notruf mit einer ID benutzt, dann soll zu dieser person ein Checkpoint führen. Wird der Befehl jedoch ohne ID verwendet, dann soll eine Liste angezeigt werden, wo alle aufgelistet sind.
Das Problem welches ich habe ist, dass ich nicht weiß, wie man ausließt ob der Paramter leer ist oder ob eine ID angegeben wurde.
#if !defined isnull
#define isnull(%1) \
((!(%1[0])) || (((%1[0]) == '\1') && (!(%1[1]))))
#endif
ocmd:notruf(playerid,params[])
{
new pID,str2[500],name[MAX_PLAYER_NAME];
if(sInfo[playerid][pFraktion] != 6) return SendClientMessage(playerid,COLOR_HINWEIS,"Du bist kein Sanitäter!");
//if(sscanf(params,"{u}",pID)) return SendClientMessage(playerid,COLOR_HINWEIS,"INFO: /wiederbeleben [ID]");
//if(sInfo[playerid][pDuty] != 1) return SendClientMessage(playerid,COLOR_HINWEIS,"Du bist nicht im Dienst!");
if(!IsPlayerConnected(pID)) return SendClientMessage(playerid,COLOR_HINWEIS,"Der Spieler ist nicht online!");
if(isnull(params))
{
format(str2,sizeof(str2),"Verbleibende Notrufe: \n");
for(new i=0; i<MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i)) continue;
if(sInfo[i][pTot] == 1)
{
format(str2, sizeof(str2),"%s [%i] %s Ort: %s, %i Sekunden verbleibend. \n",str2,i,GetPlayerName(i,name,sizeof(name)),GetPlayerArea(i),sInfo[i][pTotZeit]);
}
}
SendClientMessage(playerid,COLOR_RETTUNG,str2);
return 1;
}
else
{
SetPlayerCheckpoint(playerid,sInfo[pID][pTotX],sInfo[pID][pTotY],sInfo[pID][pTotZ],5);
return 1;
}
}
Weiß jemand wie ich bei OCMD prüfe, ob der Paramter gefüllt ist oder nicht ?? (Siehe Zeile 11 & 14)
Danke
Ich würde an deiner Stelle generell lieber mit einem Enum für die Spieler arbeiten. Ich persönlich finde das viel einfacher, auch wenn dein Script irgendwann mal 20000 Zeilen hat.
Geh mal Ingame, mach dich zum Admin und teste es dann erneut. Scheint mir ein Speicherfehler zu sein.
Dein System ist viel zu umständlich. Irgendwann verlierst du den Überblick, falls es noch nicht passiert ist.
Schau dir folgendes Video an:
https://www.youtube.com/watch?…=UUBhEYGU7oGPnkg0NSeU12Ug
MrMonat erklärt das scripten für Anfänger recht gut, dass sollte für's erste locker reichen.
MfG
foestwing
Mach es doch so, dass man sich die Stats nur angucken kann, wenn man einen Perso hat. Das ist auf vielen Servern so üblich.
Es geht ja auc nicht nur darum, ob am Ende viele User drauf sind. Wenn du grade Lust auf's scripten hast, dann mach es einfach. Wenn es Spaß macht, ist es ja absolut in Ordnung. Und vielleicht wird daraus dann irgendwann mal ein guter Server, aber das würde ich nicht unbedingt in den Mittelpunkt rücken.
PS: bei new gehört es ohne MAX_PLAYERS
Nein, das new testtimer [MAX_PLAYERS]; kommt nach ganzen oben ins Script. Das ist schon richtig so. Das ist ein Array, d.h. du kannst für jeden Spieler diesem Timer verwenden
Der Timer gibt eine ID zurück, welche du speicern musst. für KillTimer brauchst du diese ID.
new testtimer[MAX_PLAYERS];
testtimer =SetTimerEx("vFreeze",10,true,ifff,hydra,uX,uY,uZ);
KillTimer(testtimer);
Weißt du eigentlich was du für einen Mist schreibst?
Deine Antwort ist 1:1 meine.
Lern du lieber auch die Grundlagen, dann wüsstest du das.
Nehm es nicht persönlich, jedoch ist das einfach genau das gleiche. Zudem muss man dass i nicht einsetzen bei einer While Schleife
Statt deine Beiträge zu pushen solltest du lieber andere dir angucken und mal lieber was vernünftiges bringen.
Les das bitte nochmal durch !!
Das Ergebnis ist das selbe (habe ich auch nie verneint). Ich habe geschrieben, dass deine Lösung nicht die OPTIMALE Lösung ist.
Der Grund ist ganz einfach. While & For-Schleifen haben bestimmte "Funktionen" die sie erfüllen. Eine For-Schleife ist wirklich NUR für das zählen gedacht, deshalb wird Sie auch Zählschleife genannt ! While-Schleifen werden/können auch noch für ganz andere Funktionen benutzt werden.
Warum sollte man eine While-Schleife schreiben, wenn es extra dafür eine spezielle Schleife gibt ??
Zudem muss man dass i nicht einsetzen bei einer While Schleife
Was meinst du damit ?
for(new i=0; i<sizeof(TuTsxi); i++)
{
AddVehicleComponent(TuTsxi[i],1028);
AddVehicleComponent(TuTsxi[i],1169);
AddVehicleComponent(TuTsxi[i],1141);
AddVehicleComponent(TuTsxi[i],1032);
AddVehicleComponent(TuTsxi[i],1139);
AddVehicleComponent(TuTsxi[i],1030);
AddVehicleComponent(TuTsxi[i],1074);
AddVehicleComponent(TuTsxi[i],1086);
}
Das ist der komplette benötigte Code. Das "i" ist die Laufvariable und hier ebenfalls der Index. Das spart Code länge und ist effektiver.
Du könntest zwar auch eine While-Schleife verwenden, aber wer macht das für so eine Funktion ??
Bevor du so eine Antwort schreibst und respektlos, unüberlegt und auch beleidigend antwortest, solltest du mal lieber erst irgendwelche Argumente für deine Methode und Gegenargumente für meine Methode aufzählen, anstatt so etwas zu schreiben.
Gerne können sich auch andere hier zu Wort melden !
Alles anzeigen....
new i=0;
while(i{
//CODE
i++;
}
Lern die Grundlagen, sonst wird das nichts!
Das ist aber auch nicht die optimale Lösung !!!
Genau dafür sind Zähl-Schlaifen gemacht.
for(new i=0; i<sizeof(TuTsxi); i++)
{
AddVehicleComponent(TuTsxi[i],1028);
//Und so weiter
}
u steht für die ID des Spieler's ODER seinen Namen.
Du könntest auch "i" benutzen, dann könnte man aber nur die ID angeben. Und bei "s" nur den namen des Spielers. So kann man beides benutzen.
Alles anzeigen
ocmd:goto(playerid, params[]) {
new portid;
new Float:X, Float:Y, Float:Z;
if(sscanf(params, "u",portid)) return SendClientMessage(playerid, Orange, "Verwendung: /goto [ID]");
GetPlayerPos(portid, X, Y, Z);
SetPlayerPos(playerid, X, Y, Z);
return 1;
}
So müsste es korrekt sein (ungetestet)
wieso strcat()??? Das iost um Variablen Strings zu ergänzen.
Nehme das strcat raus und auch strdel.
Schreibe entwerder Mehrmals Update Befehle oder mache 2 Functions.. einmal für Inter und String. z.b. mysql_setString(table, spalte, set,, where)
Wenn man so eine Funktion schreibt/nutzt wie mysql_setString, dann wird für jedes einezelnes Feld in der Datenbank bzw. jede einzelne variable eine Query weggeschickt. Dies könnte irgendwann zu Laggs führen.
Mach lieber eine lange Query oder teil Sie in 2 Query's auf
Der 2. textdraw Editor speichert bei mir nichts
1. Hast du ihn auch richtig installiert ?
2. Exportierst du dein textdraw auch richtig ?
Dem kann ich nur zustimmen. Nimm einen der beiden und teste Sie mal. Benutz dann den, der dir am besten gefällt.
Sind aber beide Sehr gut !
Hey,
um ehrlich zu sein finde ich deine Speicherfuntkion extrem unübersichtlich. Das geht viel einfacher und mit mehr Überblick. Es reicht auch wenn du nur eine query (oder 2) formatierst und abschickst. Mach die query dafür einfach etwas länger
Ja das weiß ich auch alles, jedoch habe ich Probleme das zu scripten.
Ich habe ja einen Pastebin gepostet mit allen scriptteilen. Vielleicht konnte einer diese Funktionen für mich scripten( kann auch nur ein Teil sein und ich ergänze den Rest)
Es fehlen ja nur noch die Funktion für das Auto kaufen und der Rest des Tunings. Ein Teil wird ja schon gespeichert
Also,
Ich habe das Carsystem angefangen. Man steigt in ein Kaufauto und man bekommt einen Dialod angezeigt. Dann kann man das Auto kaufen, doch nun weiß ich nicht wie man die Funktion für Autokaufen machen, also das ein Autoerstellt wird und ein Eintrag in meiner MYSQL Tabelle erstellt wird.Ausserdem bekomme ich das Tuning nicht hin