Problem mit killer mission

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
  • Hi


    Ich hab versucht eine Killer Mission zu scripten.


    Das Problem ist wenn ich /killer mach kommt ich soll ein Bot killen,
    ich hab es aber so gemacht das man keine Bots killen muss.
    public AuftragsKiller(playerid)
    {
    new OpferS;
    new PlayersOnlin = 0;
    for(new i=0; i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    PlayersOnlin++;
    OpferS = random(i);
    }
    }


    if(PlayersOnlin == 1) return SendClientMessage(playerid, blau,"*** Es ist niemand da den du killen könntest!");


    if(IsPlayerConnected(OpferS) && OpferS!=playerid)
    {
    new string[100];
    GetPlayerName(OpferS, string, sizeof(string));
    format(string, sizeof(string), "<<Killer>> Du musst %s umbringen.", string);
    SendClientMessage(playerid, blau, string);
    Killer[playerid] = playerid;
    Opfer[playerid] = OpferS;
    KillerMission[playerid] = true;
    } else {
    AuftragsKiller(playerid);
    }
    return 1;
    }


    kann mir da einer helfen :?:
    thx schonmal

  • Machs ma so:
    public AuftragsKiller(playerid)
    {
    new OpferS;
    new PlayersOnlin = 0;
    for(new i=0; i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    PlayersOnlin++;
    OpferS = random(PlayersOnlin);
    if(IsPlayerConnected&&!IsPLayerNPC(OpferS ))return OpferS ;
    }
    return INVALID_PLAYER_ID;
    }


    if(PlayersOnlin == 1) return SendClientMessage(playerid, blau,"*** Es ist niemand da den du killen könntest!");


    if(IsPlayerConnected(OpferS) && OpferS!=playerid)
    {
    new string[100];
    GetPlayerName(OpferS, string, sizeof(string));
    format(string, sizeof(string), "<<Killer>> Du musst %s umbringen.", string);
    SendClientMessage(playerid, blau, string);
    Killer[playerid] = playerid;
    Opfer[playerid] = OpferS;
    KillerMission[playerid] = true;
    } else {
    AuftragsKiller(playerid);
    }
    return 1;
    }


    ...oder so ähnlich!!!

  • if(IsPlayerConnected(OpferS) &&!IsPLayerNPC(OpferS ))return OpferS ;


    Parameter wird erwartet , daher wird bei keiner Angabe && als Parameter gewertet,
    da && ein Operator ist , ist der Funktionsaufruf nicht gültig.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • forward ToKill(playerid);
    public ToKill(playerid)
    {
    new tokill = random(MAX_PLAYERS),
    opx[MAX_PLAYER_NAME],strx[64];
    while((!IsPlayerConnected(tokill) || IsPlayerNPC(tokill)) && tokill != playerid)tokill = random(MAX_PLAYERS);
    format(strx,sizeof strx,"Auftrag : Du musst %s töten !",opx);
    SendClientMessage(playerid,0x0000FFFF,strx);
    dasopferfuer[playerid] = tokill;
    return 1;
    }


    Sollte gehen, ,,dasopferfuer´´ gibt den Spieler zurück der getötet werden soll , Nachricht wird Automatisch gesendet,
    also musst du bei OnPlayerDeath nur noch abfragen ob die Spielerid die du tötest der ID des Opfers entspricht.

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • ok es geht, außer das ich mich oft selbst killen muss


    ich habs jezt so, aber es müsste doch gehen ?(


    public AuftragsKiller(playerid)
    {
    new PlayersOnlin = 0;
    for(new i=0; i<MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i) && !IsPlayerNPC(i))
    {
    PlayersOnlin++;
    }
    }
    if(PlayersOnlin == 1) return SendClientMessage(playerid, blau,"*** Es ist niemand da den du killen könntest!");


    new tokill = random(MAX_PLAYERS), strx[64];
    while((!IsPlayerConnected(tokill) || IsPlayerNPC(tokill)) && tokill != playerid)tokill = random(MAX_PLAYERS);
    GetPlayerName(tokill, strx, sizeof(strx));
    format(strx,sizeof strx,"Auftrag : Du musst %s töten !",strx);
    SendClientMessage(playerid,0x0000FFFF,strx);
    KillerMission[playerid] = true;
    Opfer[playerid] = tokill;
    return 1;
    }



    edit: Ok es geht danke BlackFox und marvv