Beitrag von JustMe.77 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Unter den Includes:
CMD:ejoin(playerid,params[])
{
new name[MAX_PLAYER_NAME], string[100];
GetPlayerName(playerid, name, sizeof(name));
if(zaehler >= sizeof(RandomSpawns)) zaehler = 0;
SetPlayerPos(playerid, RandomSpawns[zaehler][0], RandomSpawns[zaehler][1], RandomSpawns[zaehler][2]);
format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} joined the Event - {FF1717}/ejoin", GetPlayerColor(playerid) >>> 8,name);
SendClientMessageToAll(0xC4C4C4FF, string);
zaehler++;
inEvent[playerid] = true;
return 1;
}
Alles anzeigen
Beim Dialog anzeigen:
new str[512], pname[MAX_PLAYER_NAME];
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && inEvent[i])
{
GetPlayerName(i, pname, MAX_PLAYER_NAME);
format(str, sizeof(str), "%s%s (ID: %d)\n", str, pname, i);
}
}
ShowPlayerDialog(playerid, DIALOG_EVENTLIST, DIALOG_STYLE_MSGBOX, "Event Participants", str, "Ok", "");
Beim Verlassen des Events:
Wie speicherst du deine anderen Statistiken? Poste gegebenenfalls mal den Code dazu, auch wie du sie lädst.
Meinst du mit zurücksetzen, alle Variablen auf 0 bzw leer.
Oder den Spielern den Werten der Variablen wiedergeben?
Müsste so funktionieren.
Unter den Variablen
enum Enum_Player
{
Float:p_Health,
Float:p_Armour,
Float:p_X,
Float:p_Y,
Float:p_Z,
Float:p_A,
p_Interior,
p_VirtualWorld
}
new PlayerInfo[MAX_PLAYERS][Enum_Player];
Alles anzeigen
OnPlayerConnect
public OnPlayerConnect(playerid)
{
PlayerInfo[playerid][p_Health] = 0.0;
PlayerInfo[playerid][p_Armour] = 0.0;
PlayerInfo[playerid][p_X] = 0.0;
PlayerInfo[playerid][p_Y] = 0.0;
PlayerInfo[playerid][p_Z] = 0.0;
PlayerInfo[playerid][p_A] = 0.0;
PlayerInfo[playerid][p_Interior] = 0;
PlayerInfo[playerid][p_VirtualWorld] = 0;
return 1;
}
Alles anzeigen
Dein Befehl
CMD:ejoin(playerid,params[])
{
new name[MAX_PLAYER_NAME], string[100];
GetPlayerName(playerid, name, sizeof(name));
if(inEvent[playerid] != false)return SendClientMessage(playerid, COLOR_GREY, "Error: Du bist schon in einem Event."); // Übersetzen
new Float:HP, Float:Pos[4], Float:Armour;
GetPlayerPos(playerid, Pos[0], Pos[1], Pos[2]);
GetPlayerFacingAngle(playerid, Pos[3]);
GetPlayerHealth(playerid, HP);
GetPlayerArmour(playerid, Armour);
PlayerInfo[playerid][p_Health] = HP;
PlayerInfo[playerid][p_Armour] = Armour;
PlayerInfo[playerid][p_X] = Pos[0];
PlayerInfo[playerid][p_Y] = Pos[1];
PlayerInfo[playerid][p_Z] = Pos[2];
PlayerInfo[playerid][p_A] = Pos[3];
PlayerInfo[playerid][p_Interior] = GetPlayerInterior(playerid);
PlayerInfo[playerid][p_VirtualWorld] = GetPlayerVirtualWorld(playerid);
if(zaehler >= sizeof(RandomSpawns)) zaehler = 0;
SetPlayerPos(playerid, RandomSpawns[zaehler][0], RandomSpawns[zaehler][1], RandomSpawns[zaehler][2]);
format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} joined the Event - {FF1717}/ejoin", GetPlayerColor(playerid) >>> 8,name);
SendClientMessageToAll(0xC4C4C4FF, string);
zaehler++;
inEvent[playerid] = true;
return 1;
}
Alles anzeigen
Wenn das Event vorbei ist, musst du dann nur noch die Variablen auf den Spieler überschreiben.
Also mit SetPlayerPos(... und so weiter.
// Edit
Habe etwas im Befehl geändert, musst du bei bedarf noch bei dir umändern.
Du musst die zuvor gespeicherten Spieler-Variablen den Spieler wiedergeben.
CMD:eleave(playerid,params[])
{
new name[MAX_PLAYER_NAME], string[100];
GetPlayerName(playerid, name, sizeof(name));
if(inEvent[playerid] != true)return SendClientMessage(playerid, WHITE, "{FF1717}ERROR:{FFFFFF} You're not in an event. Use {FF1717}/ejoin{FFFFFF} to join one.");
format(string, sizeof(string), "{FF1717}[EVENT]:{FFFFFF}{%06x} %s{FFFFFF} has left the Event - {FF1717}/eleave", GetPlayerColor(playerid) >>> 8,name);
SendClientMessageToAll(0xC4C4C4FF, string);
inEvent[playerid] = false;
// Setzt den Spieler die zuvor gespeicherten Variablen zurück.
SetPlayerPos(playerid, PlayerInfo[playerid][p_X], PlayerInfo[playerid][p_Y], PlayerInfo[playerid][p_Z]);
SetPlayerFacingAngle(playerid, PlayerInfo[playerid][p_A]);
SetPlayerInterior(playerid, PlayerInfo[playerid][p_Interior]);
SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][p_VirtualWorld]);
SetPlayerHealth(playerid, PlayerInfo[playerid][p_Health]);
SetPlayerArmour(playerid, PlayerInfo[playerid][p_Armour]);
return 1;
}
CMD:erem(playerid,params[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(!IsPlayerConnected(i) || IsPlayerNPC(i)) continue;
if(IsPlayerInRangeOfPoint(i, 5, 1869.0564,-2499.7913,5048.4761))
{
//SetPlayerPos(i, 1857.0629,-2477.5789,5048.4761);
SendClientMessage(i,WHITE,"{FF1717}Wrong answer!");
PlayerPlaySound(i, 1057, 0.0, 0.0, 0.0);
// Setzt den Spieler die zuvor gespeicherten Variablen zurück.
SetPlayerPos(i, PlayerInfo[i][p_X], PlayerInfo[i][p_Y], PlayerInfo[i][p_Z]);
SetPlayerFacingAngle(i, PlayerInfo[i][p_A]);
SetPlayerInterior(i, PlayerInfo[i][p_Interior]);
SetPlayerVirtualWorld(i, PlayerInfo[i][p_VirtualWorld]);
SetPlayerHealth(i, PlayerInfo[i][p_Health]);
SetPlayerArmour(i, PlayerInfo[i][p_Armour]);
}
}
return 1;
}
Alles anzeigen
Hier ist ein Beispiel dabei, wie das geht.
https://wiki.sa-mp.com/wiki/GetPlayerWeaponData
Float muss nur bei Kommazahlen verwendet werden, und die WaffenID sowie die Ammo sind ja ganze Zahlen.