Ich rieche Unwissen.
Texte/Strings werden immer mit strcmp verglichen und das gibt 0 zurück, wenn es gleich ist:
New gname[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, gname, sizeof(gname));
if(!strcmp(gname, TaxiInfo[i][FahrerName])) return 0;
//Hier geht's mit dem Code weiter, wenn gname und der Fahrername nicht gleich sind
Beiträge von Ditti
-
-
Komplett unsichtbar machen kann man die Namen nicht, spätestens wenn man darauf klickt, werden sie weiß. (Also in der Spielerliste, die via Tab zu erreichen ist)
MitSetPlayerColor(playerid, 0x11111100);kann man den Spielernamen aber relativ unsichtbar machen.
Ich hab mal einen Screenshot gemacht, der obere Name ist hier zu beachten:
Besser geht es leider nicht zu machen. -
new string[20], Float:health;
GetVehicleHealth(GetPlayerVehicleID(playerid), health);
format(string, sizeof(string), "Zustand: %d%%", floatround(health / 10));
Das sollte das machen, was du möchtest. -
Warum sollte Strassensperren ein Float sein ? Und seit wann, kann ein Float ein Array sein ?
Ein Array kann ja auch ein int sein. :p
Bin mir da gerade nicht sicher gewesen, wäre halt einen Versuch wert gewesen.
Und es sollen floats sein, da er über seine Funktion als Parameter floats reinkriegt. -
}
Kommt da jetzt noch etwas? -
Mach mal ein
new Float:Strassensperren[70][5];
daraus. -
Zeig mal alle Zeilen mit tag mismatch und number off arguments does not match definition.
-
Du hast in deinem Enum für "Strassensperren" vermutlich nur integer, keine floats verwendet und versuchst nun, den integern float-Werte zuzuweisen.
-
Kommen denn nun mit oder ohne Include die Errors?
-
@Grashalm: Da hast du noch eine Menge Arbeit vor dir. :p
Wir können es jedenfalls ohne code nicht fixen.T4125Gamer: Wo hast du die denn gefunden? :o
-
Die offset.inc ist wirklich nicht zu finden. Schreib da mal testweise überall eine 0 statt SkinCapOffset[][]. Dann sitzt die Mütze zwar nicht richtig, aber das solltest du dann anpassen können und du Fehler wären weg.
-
Es ist davon auszugehen, dass er für jeden Spieler ein DutyLabel hat. Also wäre
DeletePlayer3DTextLabel(playerid, DutyLabel[playerid]); voraussichtlich richtig. -
Bei dem Per-Player-Zeug (PlayerTextdraws, Label), ist der erste Parameter fast immer die playerid, der zweite dann erst die Variable mit dem anzusteuernden Objekt.
Siehe auch http://wiki.sa-mp.com/wiki/DeletePlayer3DTextLabel -
Die richtige Funktion wurde bereits genannt.Falls du diese in der Wiki nicht finden solltest, hier ein Link dahin.
Ich hab doch einen Link zum Wiki geschrieben. :o -
-
Guck mal, ob es was bringt, bei Create3DTextLabel als letzten Parameter noch 1 hinzuzufügen. Also so:
Create3DTextLabel(tanktext,GELB,1001.5837,-929.2642,42.3281,25,0, 1);
Nach der Farbe nimmt die Funktion noch 6 Parameter, nicht nur 5 und der letzte ist laut Wiki nicht optional: http://wiki.sa-mp.com/wiki/Create3DTextLabel -
file_exists() tuts eigtl. auch.
Wenn man schon mit dini arbeitet, dann komplett.
Aber du hast recht, war mir nur nicht sicher, ob man dann noch die file.inc braucht. Aber sehe gerade, dass a_samp diese automatisch mit inkludiert. -
So, hab mich mal eben an eine Include gesetzt: [ INCLUDE ] checkname.inc - Dini-based Case insensitive Name-Checker
Sollte genau den Zweck erfüllen, für den du es brauchst, @Runcorn: -
Inspiriert von Runcorn bzw durch diesen Thread: [HILFE] User name problem hab ich mich mal fix an eine klitzekleine Include gesetzt.
Hinweis: Es geht sicherlich besser, aber das war ein 5min-Projekt und es sollte nur funktionieren.
Was ist checkname.inc?
Das ist recht schnell erklärt:
Spieler A registriert sich mit dem Namen "Spieler".
Spieler B will sich mit dem Namen "spieler" registrieren, wird aber gekickt, da es schon "Spieler" gibt.Funktionen
RegisterPlayerName(playerid, dininame) - Fügt zur Dini-Datei den Spielername in korrekter Groß- und Kleinschreibung hinzu
CheckPlayerName(playerid) - Prüft den Spielername und ruft nach Bedarf RegisterPlayer(playerid) und LogPlayerIn(playerid) auf.Voraussetzungen
Die Funktionen RegisterPlayer(playerid, dininame[]) und LogPlayerIn(playerid, dininame[]) müssen vorhanden sein. Diese dürfen in der Include gern anders genannt werden.
Zudem muss die Datei für den Spieler so wie der Spieler heißen, nur alles klein geschrieben. So wird also aus "PlAyEr" "player.txt".
Und natürlich muss die dini.inc inkludiert sein.Ein kleines How-To
In RegisterPlayer(playerid, dininame[]) muss die Funktion RegisterPlayerName(playerid, dininame[]) aufgerufen werden, um den Spielernamen einzutragen.
CheckPlayerName(playerid) wird am besten in OnPlayerConnect noch vor jeglichen Login-Funktionen aufgerufen.Ein Mini-Beispiel:
#include <checkname>public OnPlayerConnect(playerid)
{
CheckPlayerName(playerid);
return 1;
}//...
stock RegisterPlayer(playerid, dininame[])
{
dini_Create(dininame); //RegisterPlayer wird nur aufgerufen, wenn die Datei nicht existiert.
//...
RegisterPlayerName(playerid, dininame);
return 1;
}stock LogPlayerIn(playerid, dininame[])
{
ShowPlayerDialog(); //...
return 1;
}
Beim obigen Beispiel beinhaltet dininame[] den Namen der Spielerdatei.Download
Zum Download gibt es die Include hier: http://download.riditt.de/checkname.inc und auf Pastebin findet man sie hier: http://pastebin.com/uTca8t3MIch würde sagen, dass das alles war. Bei Fragen stehe ich selbstverständlich zur Verfügung. Viel Spaß und tschüss.
-
Mal ganz simpel: "Spielerdatei" -> "Spielerdatei[playerid]"