Alles nur Schmarn, die Welt geht nicht wirklich unter aber wir in ihrem Chaos
Beiträge von BlackFoX
-
-
Nimm system("PAUSE"); dann beendet sich die Konsole nicht mehr ohne eine Bestätigung aber es ist nicht die beste Methode ansonsten versuch mal den Buffer der Eingabe zurückzusetzen oder
per While Schleife zu warten bis eine neue Linie bestätigt wird.
aso das brauchst du nicht
setvbuf(stdin,NULL,_IONBF,0);
setvbuf(stdin,NULL,_IOFBF,BUFSIZ);eigentlich reicht
getchar();
oder
getch(); -
lol erst GTA aufpäppeln "" und dann nicht wissen was der ,,Data´´ Ordner ist der sich im GTA SA Ordner befindet
-
öpö
if(pLeader != 10 && pMember != 10)
{
SendClientMessage(playerid,COLOR_GREY," Du hast kein Zugriff auf dieses Fahrzeug!");
TogglePlayerControllable(playerid, 0);
TogglePlayerControllable(playerid, 1);
}Wenn beides nicht stimmt
-
Ich meine wenn er ein Taxifahrer ist darf er nichts ins Fahrzeug oder wie ?

Muss so aussehen
if(!IsATaxiFahrer(playerid) && !ispassenger)
{
SendClientMessage(playerid,COLOR_GREY," Du hast kein Zugriff auf dieses Fahrzeug!");
TogglePlayerControllable(playerid, 0);
TogglePlayerControllable(playerid, 1);
} -
if(IsATaxiFahrer(playerid) && !ispassenger)
fällt dir nichts auf ?

-
Du hast deine GTA Dateien modifiziert sprich du hast Mods drinne
-
-
Die Gegend erinnert mich an Black Hawk down

Wirklich schön geworden, wie immer Top Arbeit. -
Najo kommt darauf an wie viel Speicher die Ausgabe reserviert , das hängt meist davon ab wie viele Variablenplätze reserviert wurden,
Arrays, Funktionen , Makros alle brauchen ihren Platz da sie in der Datei registriert werden wie eine kleine Datenbank.
Die Amx wird kleiner als der Quellcode da der Quellcode beim Übergang ins Binäre komprimiert wird bzw. in eine andere Kodierung gewandelt wird ( 8Bit ) -
Versuch es mal mit einer Zone
IsPlayerInZone(playerid,Float:minx,Float:maxx,Float:miny,Float:maxy)
{
Float:pos[3];
GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
return (pos[0] >= minx && pos[0] <= maxx && pos[1] >= miny && pos[1] <= maxy);
}Zone
Y
|
|
|
|>>>>>>>>>>>>> XWenn Spieler über der Minimalen Grenze der Zone & unter der Maximalen Grenze der Zone das bei beiden Achsen.
-
Bitte die betroffenen Linien einmal her zeigen.
-
Gehört hier erstens nicht rein & zweiten kann dir ohne Code niemand genau sagen wo der Fehler ist,
da manche Warnungen Mehrdeutig sein können. -
IsATaxiCar(vehicleid)
{
for(new i = 0;i<sizeof(Taxi);i++)
{
if(Taxi[i] == vehicleid)return true;
}
return false;
} -
Login erfordert eine Zugriffsangabe auf einen Index also
if(Login == 1)
zu
if(Login[playerid] == 1)
Zudem wird 1 Automatisch als Wahr erkannt , 0 als Falsch, also geht auch
if(Login[playerid])
-
-
-
if(!IsPlayerConnected(i)) continue;
if(IsPlayerAdmin(i)) continue;
Kick(i);
Tipp so etwas muss nicht immer schneller sein also immer schauen, überspringen sollte man nur wenn mehr als 3 Linien folgen sprich
immer Logisch denkenif(IsPlayerConnected (i) && IsPlayerAdmin(i))Kick(i);
Zugriff
- Schauen ob Spieler verbunden ( Wenn dies schon nicht stimmt & der Operator && gefunden wurde wird die Abfrage als Falsch erkannt also wird Falsch wiedergegeben & es wird der nächste Schritt eingeleitet )
- Als nächstes Administrator Status prüfen , wenn der vorige Status stimmt
- Spieler vom Server werfen.
Deine Zugriffe
if(!IsPlayerConnected(i)) continue;
if(IsPlayerAdmin(i)) continue;
Kick(i);- Überprüfen ob Spieler verbunden ist ( wenn nicht überspringen )
- ggf. überspringen
- Prüfen Ob Spieler Administrator ist
- ggf. überspringen
- Spieler vom Server werfen
Im Endeffekt können diese Schritte schneller sein aber nicht in allen fällen.
Wollte nur mal zeigen wie einfach das ganze ist ohne Schritte einzuleiten die nicht gebraucht werden & das ganze letztendlich langsamer machen als es sein kann.
Genau das gleichen bei solchen Rückgaben
if(Statement(...))return 1;
else return 0;Zu lang ...
return Statement(...); // << Gibt Direkt wieder ob Wahr oder Falsch
Genau das gleiche wieder hier
if(Statement(...))
{
DoSomething();
}
else
{
Test();
}Bei Kommandos sprich Direkten Aktionen braucht man keine Bereiche eingrenzen da es sich hierbei nicht um mehrere Aktionen hintereinander handelt sprich
Array Bereiche weisen immer darauf hin das mehrere Werte folgen.if(Statement(...))DoSomething();
else Test();Direkt & schneller
Hier mal ein Hinweis auf auf Dinge dieser Art ...
if(!strlen(string))
{
SendClientMessage(...);
return 1;
}Zu indirekt & zu viele Schritte ...
if(!strlen(string))return SendClientMessage(...); // SendCMessage gibt bei erfolgreichem ausführen 1 wieder
soll der Wert umgekehrt wiedergegeben werden also aus 1 , 0 werden aus Wahr > Falsch
if(!strlen(string))return !SendClientMessage(...); // << Wie man es gewohnt ist den Umkehr Operator verwenden
Fakten dazu
new var = (wert1 == wert2) // << Wird in Boolean gewandelt als Wahr / Falsch gibt je nach dem 0 & 1 wieder
wie man sieht die Sprache selber kann auch selber etwas nachdenken & entscheidet dann bei gewissen zusammenhängen selber.
-
stock StreamObject_OnPlayerUpdate(playerid)
{
updatespassed[playerid]++;
if( updatespassed[playerid] == MAXUPDATES)
{
ObjectCheck(playerid);
updatespassed[playerid] = 0;
}
}öpö , da hatte wohl jemand was vergessen
-
Mach die beiden Funktionen einfach raus & verwendet unter OnPlayerUpdate mal das
StreamObject_OnPlayerUpdate(playerid);
sollte so sein denke ich
