1o1-System Killcounter..

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Wie kann ich ein Killcounter erstellen der nur für die 1o1 Arena besteht..


    Script:



    if(!strcmp("/1o1",cmdtext,true)){
    if(IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,COLOR_ORANGE,"Du kannst die 1o1 Arena nicht betreten da du dich in einem Fahrzeug befindest");
    if(DM[playerid][8] == 0) return SendClientMessage(playerid,COLOR_YELLOW,"Du bist bereits in einer Arena. Benutze /exit");
    new one1[4];
    for(new i = 0; MAX_PLAYERS > i; i++){
    for(new ii = 0; 4 > ii; ii++){
    if(one[i][ii] == 1){
    one1[ii]++;
    }
    }
    }
    format(text,sizeof(text),"1 VS. 1 | %d/2 Spieler\n1 VS. 1 | %d/2 Spieler\n1 VS. 1 | %d/2 Spieler\n1 VS. 1 | %d/2 Spieler",one1[0],one1[1],one1[2],one1[3]);
    ShowPlayerDialog(playerid,dialog_1o1,DIALOG_STYLE_LIST,"Purge-Deathmatch 1o1",text, "Auswahl", "Abbruch");
    return 1;
    }



    if(dialogid == dialog_1o1){
    if(response){
    switch(listitem){
    case 0:{
    new taken;
    for(new i = 0; MAX_PLAYERS > i; i++){
    if(one[i][0] == 1){
    taken++;
    }
    }
    if(taken >= 2) return SendClientMessage(playerid,COLOR_YELLOW,"Diese Arena ist bereits voll.");
    one[playerid][0] = 1;
    DM[playerid][2] = 1;
    DM[playerid][8] = 0;
    format(text,sizeof(text),"* Arena * Spieler %s ist der 1o1 Arena 1 beigetreten",PlayerName(playerid));
    SendClientMessageToAll(COLOR_BLUE,text);
    SpawnPlayer(playerid);
    }case 1:{
    new taken;
    for(new i = 0; MAX_PLAYERS > i; i++){
    if(one[i][1] == 1){
    taken++;
    }
    }
    if(taken >= 2) return SendClientMessage(playerid,COLOR_YELLOW,"Diese Arena ist bereits voll.");
    one[playerid][1] = 1;
    DM[playerid][2] = 1;
    DM[playerid][8] = 0;
    format(text,sizeof(text),"* Arena * Spieler %s ist der 1o1 Arena 2 beigetreten",PlayerName(playerid));
    SendClientMessageToAll(COLOR_BLUE,text);
    SpawnPlayer(playerid);
    }case 2:{
    new taken;
    for(new i = 0; MAX_PLAYERS > i; i++){
    if(one[i][2] == 1){
    taken++;
    }
    }
    if(taken >= 2) return SendClientMessage(playerid,COLOR_YELLOW,"Diese Arena ist bereits voll.");
    one[playerid][2] = 1;
    DM[playerid][2] = 1;
    DM[playerid][8] = 0;
    format(text,sizeof(text),"* Arena * Spieler %s ist der 1o1 Arena 3 beigetreten",PlayerName(playerid));
    SendClientMessageToAll(COLOR_BLUE,text);
    SpawnPlayer(playerid);
    }case 3:{
    new taken;
    for(new i = 0; MAX_PLAYERS > i; i++){
    if(one[i][3] == 1){
    taken++;
    }
    }
    if(taken >= 2) return SendClientMessage(playerid,COLOR_YELLOW,"Diese Arena ist bereits voll.");
    one[playerid][3] = 1;
    DM[playerid][2] = 1;
    DM[playerid][8] = 0;
    format(text,sizeof(text),"* Arena * Spieler %s ist der 1o1 Arena 4 beigetreten",PlayerName(playerid));
    SendClientMessageToAll(COLOR_BLUE,text);
    SpawnPlayer(playerid);
    }
    }
    return 1;
    }
    }
    return 1;
    }

  • Wie soll dieser "Killcounter" aussehen, und wann soll er was machen?

    Also eigentlich ganz schlicht,


    Es sollte ein Textdraw erscheinen wo


    Kills: x Deaths:x steht.. aber nur in 1o1


    Und wenn man rein und raus geht sollte sich dies resetten.

  • Versuche es mal so:
    Unter den Includes:
    new Text:KillCounter[4];
    new oneKills[MAX_PLAYERS];


    Unter OnGameModeInit (entsprechend deinem Design auffüllen):
    KillCounter[0] = TextDrawCreate(...);
    //...
    KillCounter[1] = TextDrawCreate(...);
    //...
    KillCounter[2] = TextDrawCreate(...);
    //...
    KillCounter[3] = TextDrawCreate(...);
    //...


    Unter OnPlayerDeath:
    for(new i = 0; i < sizeof(one[]); i++)
    {
    if(one[playerid][i] == 1)
    {
    new str[64], name[MAX_PLAYER_NAME];
    for(new p = 0; p < MAX_PLAYERS; p++)
    {
    if(!IsPlayerConnected(p)) continue;
    if(one[p][i] == 1)
    {
    if(p != playerid) oneKills[p]++;
    GetPlayerName(p, name, MAX_PLAYER_NAME);
    format(str, sizeof(str), "%s%s: %d ", str, name, oneKills[p]);
    TextDrawShowForPlayer(p, KillCounter[i]);
    }
    TextDrawSetString(KillCounter[i], str);
    }
    break;
    }
    }


    Beim Start:
    new str[64], name[MAX_PLAYER_NAME];
    for(new p = 0; p < MAX_PLAYERS; p++)
    {
    if(!IsPlayerConnected(p)) continue;
    if(one[p][listitem] == 1)
    {
    oneKills[p] = 0;
    GetPlayerName(p, name, MAX_PLAYER_NAME);
    format(str, sizeof(str), "%s%s: %d ", str, name, oneKills[p]);
    TextDrawShowForPlayer(p, KillCounter[i]);
    }
    TextDrawSetString(KillCounter[i], str);
    }


    Beim Beenden:
    for(new i = 0; i < sizeof(one[]); i++)
    {
    if(one[playerid][i] == 1)
    {
    for(new p = 0; p < MAX_PLAYERS; p++)
    {
    if(!IsPlayerConnected(p)) continue;
    if(one[p][i] == 1)
    {
    one[p][i] = 0;
    TextDrawHideForPlayer(p, KillCounter[i]);
    }
    TextDrawSetString(KillCounter[i], "_");
    }
    break;
    }
    }