Hallo,
will das machen, das an dem Punkt wo der user offline geht ein Punkt ist also ein Icon erscheint mit dem User name.
Weiß einer was ich wo reinscripten muss?
Hallo,
will das machen, das an dem Punkt wo der user offline geht ein Punkt ist also ein Icon erscheint mit dem User name.
Weiß einer was ich wo reinscripten muss?
Unter OnPlayerDisconnect
Bei OnPlayerDisconnect die playerid ermitteln, und ein Pickup Erstellen. Wo ist das Problem?
Ja OnPlayerDisconnect weiß ich aber den Code den ich einfügen muss nicht.
Habe schon im Forum gesucht aber nichts gefunden. Überall gibt es irgendwelche probleme
public OnPlayerDisconnect(playerid,reason)
{
new NameStr[35],pName[MAX_PLAYER_NAME];
new Float:x,Float:y,Float:z;
GetPlayerName(playerid,pName,sizeof(pName));
GetPlayerPos(playerid,x,y,z);
format(NameStr,35,"Ka, %s is Offline.",pName);
Create3DTextLabel(....);
CreatePickup(.....);
return 1;
}
Hier, füg es genau so ein, dann geht es ..
public OnPlayerDisconnect(playerid, reason)
{
new Float:posX,Float:posY,Float:posZ,name[32];
GetPlayerName(playerid,name,32);
GetPlayerPos(playerid,posX,posY,posZ);
CreatePickup(1254,1,posX,posY,posZ);
Create3DTextLabel(name,0xFEFEFEFF,posX,posY,posZ,20.0,0,0);
return 1;
}
Verschwindet der Pickup denn auch :D?
format(NameStr,35,"Ka, %s is Offline.",pName);
Wieso das denn?
Wieso das denn?
will das machen, das an dem Punkt wo der user offline geht ein Punkt ist also ein Icon erscheint mit dem User name.
Achso, entschuldige. Habe mich nur gewundert weil das format nirgends wiedergegeben wurde.
Versuch es mal so
new disc_pick[MAX_PICKUPS];
public OnPlayerDisconnect(playerid, reason)
{
new Float:posX,Float:posY,Float:posZ,name[32];
GetPlayerName(playerid,name,32);
GetPlayerPos(playerid,posX,posY,posZ);
for(new i=0;i<MAX_PICKUPS;i++) {
if(disc_pick[i]!=0)continue;
disc_pick[i] = CreatePickup(1254,1,posX,posY,posZ);
Create3DTextLabel(name,0xFEFEFEFF,posX,posY,posZ,20.0,0,0);
SetTimerEx("desPickup",15000,false,"i",i);
break;
}
return 1;
}
forward desPickup(pickup);
public desPickup(pickup)
{
DestroyPickup(disc_pick[pickup]);
return 1;
}
Kann man das auch so machen, das da steht *Offline*\nName\nUhrzeit: %d ??
Klar, du musst nur die Uhrzeit ermitteln.
Hallo,
mit einem Timer kannst du dann hoch zählen lassen, wie lange das Pickup schon da steht und ggf. ab 60 Sekunden das Pickup löschen lassen. Bei meinem GameMode habe ich das so gelöst, dass der Spieler sich solange nicht mehr einloggen kann, bis sein Logout- Pickup nach 60 Sekunden gelöscht wurde.
Sollte der Spieler sich einloggen während das andere Pickup noch da ist und sich noch gleich ausloggen, kann es sein, dass 2 Pickups vorhanden sind während eines dann immer bestehen bleiben würde. Wie gesagt, versuch das mit dem Timer und der Login "Verweigerungs"- Methode.
Hallo,
mit einem Timer kannst du dann hoch zählen lassen, wie lange das Pickup schon da steht und ggf. ab 60 Sekunden das Pickup löschen lassen. Bei meinem GameMode habe ich das so gelöst, dass der Spieler sich solange nicht mehr einloggen kann, bis sein Logout- Pickup nach 60 Sekunden gelöscht wurde.
Sollte der Spieler sich einloggen während das andere Pickup noch da ist und sich noch gleich ausloggen, kann es sein, dass 2 Pickups vorhanden sind während eines dann immer bestehen bleiben würde. Wie gesagt, versuch das mit dem Timer und der Login "Verweigerungs"- Methode.
Wie haste das mit der Login Verweigerung gemacht?
Einfach in die Spielerdatei speichern und nach einer gewissen Zeit wieder rauslöschen, bzw. auf 0 Setzen!
Wie haste das mit der Login Verweigerung gemacht?
Hallo,
ich habe einfach überprüfen lassen, ob ein Pickup das zu dem Spielernamen gehört, noch vorhanden ist, oder schon gelöscht wurde.
Also dann bei OnPlayerConnect eine If abfrage machen und gucken ob mein Totenkopficon : TotenKopf[playerid] und mein 3DTextLabel gelöscht wurde oder wie?
Hallo,
ich habe als allererstes einmal ein ENUM erstellt.
enum MeinTotalesEnum
{
PickupID,
PickupPlayername[MAX_PLAYER_NAME]
PickupSeconds,
};
new Pickups[200][MeinTotalesEnum];
Wenn der Spieler offline geht, wird ein Pickup erstellt und im Enum alle Daten festgehalten (aber nur wenn der Spieler eingeloggt ist). Danach mit einem Timer der einen Intervall von 1000 Millisekunden hat, das ganze Array durchgehen und PickupSeconds (sofern PickupID != 0 ist) um 1 erhöhen. Bei 60 angekommen, wird das Pickup im Timer gelöscht. PickupID enthält logischerweise die ID des Pickups.
Danach bei OnDialogResponse (bei dem Login Dialog) kommt dann folgendes rein:
new playername[MAX_PLAYER_NAME], find;
GetPlayerName(playerid, playername, sizeof(playername));
for (new i = 0; i < sizeof(LogoutPickups); i++)
{
if (LogoutPickups[i][PickupID] != 0)
{
if (!strcmp(playername, LogoutPickups[i][PickupPlayername], true))
{
// pickup wurde noch gefunden
find = 1;
break;
}
}
}
if (find == 1)
{
// pickup gefunden meldung
}
else
{
// spieler halt spawnen und spielerinfos laden
}
Hallo,
ich habe einfach überprüfen lassen, ob ein Pickup das zu dem Spielernamen gehört, noch vorhanden ist, oder schon gelöscht wurde.
Alles anzeigenHallo,
ich habe als allererstes einmal ein ENUM erstellt.
enum MeinTotalesEnum
{
PickupID,
PickupPlayername[MAX_PLAYER_NAME]
PickupSeconds,
};
new Pickups[200][MeinTotalesEnum];
Wenn der Spieler offline geht, wird ein Pickup erstellt und im Enum alle Daten festgehalten (aber nur wenn der Spieler eingeloggt ist). Danach mit einem Timer der einen Intervall von 1000 Millisekunden hat, das ganze Array durchgehen und PickupSeconds (sofern PickupID != 0 ist) um 1 erhöhen. Bei 60 angekommen, wird das Pickup im Timer gelöscht. PickupID enthält logischerweise die ID des Pickups.
Danach bei OnDialogResponse (bei dem Login Dialog) kommt dann folgendes rein:
new playername[MAX_PLAYER_NAME], find;
GetPlayerName(playerid, playername, sizeof(playername));
for (new i = 0; i < sizeof(LogoutPickups); i++)
{
if (LogoutPickups[i][PickupID] != 0)
{
if (!strcmp(playername, LogoutPickups[i][PickupPlayername], true))
{
// pickup wurde noch gefunden
find = 1;
break;
}
}
}
if (find == 1)
{
// pickup gefunden meldung
}
else
{
// spieler halt spawnen und spielerinfos laden
}
Ich komme damit nicht wirklich klar
Habe einfach diesen Code bei OnPlayerDisconnect, was muss ich nun tun?
new stringt[128];
new Float:posX,Float:posY,Float:posZ,name[32];
new hour,minuite,second;
gettime(hour,minuite,second);
GetPlayerName(playerid,name,32);
GetPlayerPos(playerid,posX,posY,posZ);
Diskette[playerid] = CreatePickup(1277,1,posX,posY,posZ);
format(stringt, sizeof(stringt), "*Offline*\n%s\n%d:%d:%d", name, hour, minuite, second);
OfflineText[playerid] = Create3DTextLabel(stringt,0xFFFFFFAA,posX,posY,posZ,20.0,0,0);
SetTimerEx("Offlinegehen", 90000, false, "d", playerid);
Reicht da nicht die If Abfrage ?