Beitrag von JustMe.77 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Unter OnPlayerConnect ganz unten:
PlayerTextDrawShow(playerid,CPText0);
PlayerTextDrawShow(playerid,CPText1);
Versuch es mal so:
new PlayerText:CPText0[MAX_PLAYERS];
und beim Rest
CPText0
in
CPText0[playerid]
ersetzten.
Wird der Befehl denn sonst bis zum Ende ausgeführt?
Ok habe es nun mal bei mir ausprobiert: https://screencloud.net/v/8WZf
Eingefügt habe ich es so wie ich es vorhin geschrieben habe, vielleicht versuchst du es einfach mal so:
//Oben im Script
new PlayerText:CPText0[MAX_PLAYERS],
PlayerText:CPText1[MAX_PLAYERS];
//Erstellen (OnPlayerConnect)
CPText0[playerid] = CreatePlayerTextDraw(playerid,269.000000, 112.000000, "~r~C~w~heck~r~p~w~oints");
PlayerTextDrawBackgroundColor(playerid,CPText0[playerid], 255);
PlayerTextDrawFont(playerid,CPText0[playerid], 2);
PlayerTextDrawLetterSize(playerid,CPText0[playerid], 0.379999, 3.200000);
PlayerTextDrawColor(playerid,CPText0[playerid], -1);
PlayerTextDrawSetOutline(playerid,CPText0[playerid], 0);
PlayerTextDrawSetProportional(playerid,CPText0[playerid], 1);
PlayerTextDrawSetShadow(playerid,CPText0[playerid], 1);
PlayerTextDrawSetSelectable(playerid,CPText0[playerid], 0);
CPText1[playerid] = CreatePlayerTextDraw(playerid,293.000000, 136.000000, "(~r~10~w~/~r~20~w~)");
PlayerTextDrawBackgroundColor(playerid,CPText1[playerid], 255);
PlayerTextDrawFont(playerid,CPText1[playerid], 2);
PlayerTextDrawLetterSize(playerid,CPText1[playerid], 0.379999, 3.200000);
PlayerTextDrawColor(playerid,CPText1[playerid], -1);
PlayerTextDrawSetOutline(playerid,CPText1[playerid], 0);
PlayerTextDrawSetProportional(playerid,CPText1[playerid], 1);
PlayerTextDrawSetShadow(playerid,CPText1[playerid], 1);
PlayerTextDrawSetSelectable(playerid,CPText1[playerid], 0);
//Wie ich es angezeigt habe
ocmd:textdraws(playerid, params[])
{
PlayerTextDrawShow(playerid, CPText0[playerid]);
PlayerTextDrawShow(playerid, CPText1[playerid]);
return 1;
}
Alles anzeigen
//EDIT: Screen wurde nicht angezeigt
Meinst du die Variable zaehler ? Die setzt du ja immer auf einen Random Wert
Wenn du eine andere meinst erstellst du einfach oben eine Variable (Wenn diese auch nach dem Serverstart gleich bleiben soll musst du mysql verwenden)
new PlayerEnterCheckpointVar = 0;
und die setzt du einfach bei OnPlayerEnterCheckpoint hoch
PlayerEnterCheckpointVar++;
Ok ganz kurz, ich glaube du möchtest die Variable spielerspezifisch gestalten (Also das sie für jeden Spieler anders ist)
Dies machst du entweder mit new PlayerCheckpointVar[MAX_PLAYERS]; oder einfach in dein ggf. vorhandenes Spieler Enum
Mit dem Serverstart meine ich das die Variable für jeden Spieler auf 0 gesetzt wird, wenn der Server neustartet. Dies verhinderst du indem du dies in einer Mysql-Datenbank oder in einer Datei abspeicherst und dann lädst.
Die Variable setzt du einfach so auf 0 PlayerCheckpointVar[playerid] = 0;
Leider kenne ich mich nur mit strtook aus aber wir nehmen man an du hast den Parameter schon eingefügt und ihn 'cpanzahl' genannt.
Ich hab dir mal das so geschrieben, wie ich es gemacht hätte
//Oben Im Script
new PlayerCPAbgelaufen[MAX_PLAYERS], //Neue Variable für die bereits abgelaufenden Checkpoints
PlayerCheckpointVar[MAX_PLAYERS]; //Die Variable für die Anzahl der abzulaufenden Checkpoints
//Im Befehl
PlayerCheckpointVar[pID] = cpanzahl; // Setzen wir auf den eingegebenen Wert
PlayerCPAbgelaufen[pID] = 0; //setzten wir um Bugs zu verhindern auf 0
// bei OnPlayerEnterCheckpoint
public OnPlayerEnterCheckpoint(playerid)
{
if(PlayerCheckpointVar[playerid] > 0) //Abfragen ob er überhaupt welche ablaufen muss
{
DisablePlayerCheckpoint(playerid);
if(zaehler >= sizeof(RandomCheckPoints)) zaehler = 0;
SetPlayerCheckpoint(playerid, RandomCheckPoints[zaehler][0], RandomCheckPoints[zaehler][1], RandomCheckPoints[zaehler][2], 1.5);
zaehler = random(sizeof(RandomCheckPoints));
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
PlayerCPAbgelaufen[playerid]--;
if(PlayerCPAbgelaufen[playerid] >= PlayerCheckpointVar[playerid])
{
SendClientMessage(playerid, -1, "Du bist fertig");
PlayerCheckpointVar[playerid] = 0;
PlayerCPAbgelaufen[playerid] = 0;
}
}
return 1;
}
Alles anzeigen
//EDit Pawn quellcode angegeben