Standard-Kill: 2 Wanteds, Contract-Kill: 1 Wanted.

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
  • Hallo Liebe Mitglieder.
    Ich versuche seit 10-20 Minuten unter OnPlayerDeath zu scripten, dass wenn einer einen anderen ganz normal killt, bekommt er 2 Wanteds (was einwandfrei läuft).
    Aber wenn ein Hitman ein Contract hat und einen anderen killt, bekommt er auch 2 Wanteds, kann mir einer helfen und sagen wie ich es umsetzen kann, dass der Hitman, der ein Contract hat nur ein Wanted bekommt?
    mfG, Nighthawk.


    Ich habe es versucht mit:


    if(!IsACop(killerid) && GotHit[killerid] == 0)
    {
    WantedLevel[killerid]+=1;
    SetPlayerCriminal(killerid, 255, "Mord");
    }
    else if(GotHit[killerid] == 1)
    {
    SetPlayerCriminal(killerid, 255, "Mord");
    }


    unter OnPlayerDeath, was leider nicht funktioniert.

  • Bei OnPlayerDeath habe ich nichts besonderes, und diesen Code da oben habe ich selber geschrieben, wie muss das denn heißen, dass wenn ein Hitman ein Contract hat und jemanden killt, dass er nur 1 Wanted bekommt und ohne Contract, 2?
    mfG, Nighthawk.

  • Das ist davon abhängig, welches Skript du verwendest und wie dort mit Wanteds umgegangen wird.


    Da du ja offensichtlich bisher ein System drinnen hast,
    was automatisch 2 Wanteds vergibt,
    könnte man, wenn du uns diesen Schnipsel denn zeigen würdest,
    daraus die Funktionsweise des Skriptes ableiten und dir die richtige Lösung zeigen,

  • Hier ist mein OnPlayerDeath, ich hoffe du kannst mir weiterhelfen.


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    new string[256];
    new playercash;
    new victimteam;
    new Float:px,Float:py,Float:pz;
    GetPlayerPos(playerid, px, py, pz);
    new killerteam;
    TextDrawHideForPlayer(playerid,txtTimeDisp);

    if(!IsACop(killerid) && GotHit[killerid] == 0)
    {
    WantedLevel[killerid]+=1;
    SetPlayerCriminal(killerid, 255, "Mord");
    }
    if(!IsACop(killerid) && GotHit[killerid] == 1)
    {
    SetPlayerCriminal(killerid, 255, "Mord");
    }

    if(PlayerPaintballing[playerid] == 0 && FirstSpawn[playerid] == 0)
    {
    ClearCrime(playerid);
    PlayerInfo[playerid][pTot] = 1;
    SetPlayerInterior(playerid, 0);
    Clear5Text(playerid);
    Clear5Text(playerid);
    SendClientMessage(playerid,COLOR_LIGHTBLUE, "Du wurdest schwer verletzt ins Krankenhaus gebracht!");
    GameTextForPlayer(playerid, "~w~IN BEHANDLUNG ~n~~r~ DAUER CA. 60 SEKUNDEN", 5000, 3);
    SetPlayerPos(playerid,1162.871704, -1339.109619, 14.297291);
    SetPlayerCameraPos(playerid, 1223.379028, -1333.354126, 33.809105);
    SetPlayerCameraLookAt(playerid, 1178.824829, -1325.804077, 13.284119);
    if(PlayerInfo[playerid][pJailed] == 2)
    {
    PlayerInfo[playerid][pTot] = 0;
    SpawnPlayer(playerid);
    }
    }

    if(FirstSpawn[playerid] == 1)
    {
    FirstSpawn[playerid] = 0;
    }


    if(IsAtNoDm(playerid))
    {
    new kickname[MAX_PLAYER_NAME];
    new nn[MAX_PLAYER_NAME], str[150];
    GetPlayerName(playerid, nn, MAX_PLAYER_NAME);
    GetPlayerName(killerid, kickname, sizeof(kickname));
    format(str, 150, "AdmCmd: %s wurde von Kent_Brockman gekickt, Grund: DM in einer NO-DM Zone", kickname);
    SendClientMessageToAll(COLOR_LIGHTRED, str);
    Kick(killerid);
    }


    if(InGangJail[playerid] == 1)
    {
    format(string,sizeof(string),"AdmCmd: %s ist im Gangjail gestorben! Er wird automatisch zurück teleportiert.",PlayerName(playerid));
    ABroadCast(COLOR_LIGHTRED,string,1);
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid,-1634.9923,-2239.2424,31.4766);
    TogglePlayerControllable(playerid,true);
    PlayerTied[playerid] = 0;
    InGangJail[playerid] = 1;
    }


    RobTime[playerid] = 0;
    InCargo[playerid] = 0; InLevi[playerid] = 0;
    victimteam = gTeam[playerid];
    killerteam = gTeam[killerid];
    gPlayerSpawned[playerid] = 0;
    GetPlayerName(playerid, name, sizeof(name));
    PlayerInfo[playerid][pLocal] = 255;


    if (gPlayerCheckpointStatus[playerid] > 4 && gPlayerCheckpointStatus[playerid] < 11)
    {
    DisablePlayerCheckpoint(playerid);
    gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
    }
    new caller = Mobile[playerid];
    if(caller != 255)
    {
    if(caller < 255)
    {
    SendClientMessage(caller, COLOR_GRAD2, " Die Verbindung wurde unterbrochen....");
    CellTime[caller] = 0;
    CellTime[playerid] = 0;
    Mobile[caller] = 255;
    }
    Mobile[playerid] = 255;
    CellTime[playerid] = 0;
    }
    if(PlayerPaintballing[playerid] != 0)
    {
    PlayerPaintballKills[killerid] ++;
    if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
    {
    new killer[MAX_PLAYER_NAME];
    PaintballWinner = killerid;
    PaintballWinnerKills = PlayerPaintballKills[killerid];
    GetPlayerName(killerid, killer, sizeof(killer));
    ClearCrime(playerid);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerPaintballing[i] != 0)
    {


    format(string, sizeof(string), "* %s ist mit %d Kills in Führung.",killer,PaintballWinnerKills);
    SendClientMessage(i, COLOR_WHITE, string);
    }
    }
    }
    }
    return 1;
    }
    if(IsBlacklist[playerid]==1)
    {
    ClearBlack(playerid);
    IsBlacklist[playerid]=0;
    }
    if(GettingCK[playerid] < 999 || OnCK[playerid] < 999)
    {
    if(IsPlayerConnected(killerid))
    {
    if(GettingCK[killerid] < 999 || OnCK[playerid] < 999)
    {
    new killer[MAX_PLAYER_NAME];
    new dier[MAX_PLAYER_NAME];
    GetPlayerName(playerid, dier, sizeof(dier));
    GetPlayerName(killerid, killer, sizeof(killer));
    format(string, sizeof(string), "* %s hat deinen Charakter gesperrt, du kannst nun mit diesem Charakter nicht mehr Spielen.",killer);
    SendClientMessage(playerid, COLOR_LIGHTRED, string);
    format(string, sizeof(string), "** %s hat den Spieler %s erledigt**",killer,dier);
    CKLog(string);
    PlayerInfo[playerid][pCK] = 1;
    if(GettingCK[playerid] < 999) { GettingCK[playerid] = 999; }
    else if(OnCK[playerid] < 999) { OnCK[playerid] = 999; }
    if(GettingCK[killerid] < 999) { GettingCK[killerid] = 999; }
    else if(OnCK[killerid] < 999) { OnCK[killerid] = 999; }
    KickPlayer[playerid] = 1;
    }
    }
    }
    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    if(IsPlayerConnected(killerid))
    {
    if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
    {
    if(GoChase[killerid] == playerid)
    {
    ConsumingMoney[killerid] = 1;
    new killer[MAX_PLAYER_NAME];
    GetPlayerName(killerid, killer, sizeof(killer));
    GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]);
    format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]);
    SendFamilyMessage(8, COLOR_YELLOW, string);
    PlayerInfo[playerid][pHeadValue] = 0;
    GotHit[playerid] = 0;
    GetChased[playerid] = 999;
    GoChase[killerid] = 999;
    }
    }
    }
    }
    if(victimteam >= 4)
    {
    if(IsPlayerConnected(killerid))
    {
    new slice = 100; //$100
    playercash = GetPlayerMoney(playerid);
    if(gTeam[killerid] != 2 && PlayerInfo[killerid][pMember] != 7) { WantedLevel[killerid] += 2; } //+ 2 wanted points
    if(SafeTime[playerid] <= 0)
    {
    if(gTeam[killerid] != gTeam[playerid])
    {
    if(GetPlayerState(killerid) == 1)
    {
    PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills] + 2;
    }
    else
    {
    PlayerInfo[killerid][pKills]++;
    }
    PlayerInfo[playerid][pKills]--;
    }
    }
    if (((gTeam[killerid]) == 1) || ((gTeam[killerid]) == 3 && civnokill) || (gTeam[killerid] == gTeam[playerid] && gTeam[playerid] != 4))
    {
    slice = 0;
    }
    if (((gTeam[killerid]) != 4) && ((gTeam[killerid]) == gTeam[playerid]))//no team kill
    {
    slice = 0;
    }
    if (playercash > 0)
    {
    GivePlayerMoney(playerid, -slice);
    }
    else
    {
    slice = slice+500;
    }
    GivePlayerMoney(killerid, slice);
    PlayerPlaySound(killerid, 1083, 0.0, 0.0, 0.0);
    if (((gTeam[killerid]) == 3) && reason == 49)
    {
    SetPlayerCriminal(killerid,255, "Fahrerflucht");
    }
    }
    }
    else if (victimteam == 2)
    {
    if(IsPlayerConnected(killerid))
    {
    // Cop kill
    PlayerInfo[playerid][pKills]--;
    if (gTeam[killerid] == 2)//cops kill cop
    {
    PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
    GivePlayerMoney(killerid, -suecost);
    GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
    }
    if (gTeam[killerid] >= 3)
    {
    // WantedLevel[killerid] += 1; //+ 2 wanted points


    if (reason == 49)
    {
    SetPlayerCriminal(killerid,255, "Fahrerflucht");
    }
    }
    if(gTeam[killerid] >= 5 && SafeTime[playerid] <= 0)
    {
    if(GetPlayerState(killerid) == 1)
    {
    PlayerInfo[killerid][pKills] = PlayerInfo[killerid][pKills]+2;
    }
    else
    {
    PlayerInfo[killerid][pKills]++;
    }
    WantedLevel[killerid]+=2;
    }
    }
    }
    else if (victimteam == 3)
    {
    if(IsPlayerConnected(killerid))
    {
    // Civ kill
    if ((gTeam[killerid]) == 2 || PlayerInfo[killerid][pMember] == 7)//cops kill civ
    {
    if(WantedLevel[playerid] < 1)
    {
    PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
    GivePlayerMoney(killerid, -suecost);
    GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
    }
    }
    else
    {
    }


    }
    }
    else if (victimteam == 1)
    {
    if(IsPlayerConnected(killerid))
    {
    // Civ kill
    if ((gTeam[killerid]) == 2)//cops kill civ
    {
    PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
    GivePlayerMoney(killerid, -suecost);
    GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
    }
    else if ((gTeam[killerid]) == 1)//med kill civ
    {
    PlayerPlaySound(killerid, 1084, 0.0, 0.0, 0.0);
    GivePlayerMoney(killerid, -suecost);
    GivePlayerMoney(playerid, suecost+100);//+100pays hospital bill
    }
    else if (((gTeam[killerid]) == 3) && reason == 49)
    {
    SetPlayerCriminal(killerid,255, "Fahrerflucht");
    }
    }
    }
    if (victimteam >= 3 && WantedLevel[playerid] > 0 && killerteam == 2)
    {
    SetPlayerFree(playerid,killerid, "Gekillt");
    }
    if(BlindFold[playerid] == 1)
    {
    BlindFold[playerid] = 0;
    }
    if(PlayerInfo[playerid][pMauled] == 1)
    {
    PlayerInfo[playerid][pMauled] = 0;
    }
    if(reauber[playerid] == 1)
    {
    new s[100];
    GetPlayerName(playerid,name,sizeof(name));
    reauber[playerid] = 0;
    glav = 1800;
    KillTimer(bankcountdown1);
    KillTimer(bankcountdown2);
    KillTimer(bankcountdown3);
    KillTimer(bankcountdown4);
    KillTimer(bankcountdown5);
    KillTimer(ausgeraubt1);
    SetTimer("rauberlauben1", 1800000, 0);
    format(s,sizeof(s),"%s ist gestorben. Bankrob gescheitert.",name);
    SendClientMessageToAll(COLOR_YELLOW,s);
    }
    if(reaubersf[playerid] == 1)
    {
    new s[100];
    GetPlayerName(playerid,name,sizeof(name));
    reaubersf[playerid] = 0;
    glavsf = 1800;
    KillTimer(bankcountdown1sf);
    KillTimer(bankcountdown2sf);
    KillTimer(bankcountdown3sf);
    KillTimer(bankcountdown4sf);
    KillTimer(bankcountdown5sf);
    KillTimer(ausgeraubt1sf);
    SetTimer("rauberlauben1sf", 1800000, 0);
    format(s,sizeof(s),"%s ist gestorben. Bankrob gescheitert.",name);
    SendClientMessageToAll(COLOR_YELLOW,s);
    }
    ImShamalInterior[playerid] = 0;
    ShamalID[playerid] = -1;
    killerid = INVALID_PLAYER_ID;
    SetPlayerColor(playerid,COLOR_GRAD2);
    return 1;
    }
    public OnPlayerUpdate(playerid)
    {
    /*new String[128];
    if(IsPlayerOnDesktop(playerid) == 1)
    {
    if(GetPVarInt(playerid, "TxtCreated") == 0)
    {
    SetPVarInt(playerid, "TxtCreated", 1);
    format(String, 128, "Spieler ist seit %d Sekunden im Menü\noder auf dem Desktop", GetPlayerDesktopTime(playerid));
    Player_AFK_Text[playerid] = Create3DTextLabel(String, COLOR_RED, 0.0, 0.0, 0.0, 30.0, 0, 0);
    Attach3DTextLabelToPlayer(Player_AFK_Text[playerid], playerid, 0.0, 0.0, 0.5);
    }
    format(String, 128, "Spieler ist seit %d Sekunden im Menü\noder auf dem Desktop", GetPlayerDesktopTime(playerid));
    Update3DTextLabelText(Player_AFK_Text[playerid], COLOR_RED, String);
    }
    else
    {
    if(GetPVarInt(playerid, "TxtCreated") == 1)
    {
    SetPVarInt(playerid, "TxtCreated", 0);
    Delete3DTextLabel(Player_AFK_Text[playerid]);
    }
    }*/
    if(IsPlayerConnected(playerid) && !IsPlayerNPC(playerid) && gPlayerLogged[playerid])
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER && GetPlayerWeapon(playerid) == 29)
    {
    new Keys[3];
    GetPlayerKeys(playerid,Keys[0],Keys[1],Keys[2]);
    if(Keys[0] == 260 || Keys[0] == 68 || Keys[0] == 4) {}
    }
    }
    /*if(FireInProgress == true)
    {
    new Float:X1, Float:Y1, Float:Z1, Float:X2, Float:Y2, Float:Z2, Float:X3, Float:Y3, Float:Z3, Float:X4, Float:Y4, Float:Z4, Float:X5, Float:Y5, Float:Z5;
    GetObjectPos(o1, X1, Y1, Z1);
    GetObjectPos(o2, X2, Y2, Z2);
    GetObjectPos(o3, X3, Y3, Z3);
    GetObjectPos(o4, X4, Y4, Z4);
    GetObjectPos(o5, X5, Y5, Z5);


    if(IsPlayerInRangeOfPoint(playerid, 7.0, X1, Y1, Z1) == 1 || IsPlayerInRangeOfPoint(playerid, 7.0, X2, Y2, Z2) == 1 || IsPlayerInRangeOfPoint(playerid, 7.0, X3, Y3, Z3) == 1 || IsPlayerInRangeOfPoint(playerid, 7.0, X4, Y4, Z4) == 1 || IsPlayerInRangeOfPoint(playerid, 7.0, X5, Y5, Z5) == 1)
    {
    new Float:health;
    if(GetPlayerSkin(playerid) != 277 || GetPlayerSkin(playerid) != 278 || GetPlayerSkin(playerid) != 279)
    {
    GetPlayerHealth(playerid, health);
    SetPlayerHealth(playerid, health - 0.0001);
    return 1;
    }
    }


    }*/
    return 1;
    }
    public split(const strsrc[],strdest[][],delimiter){
    new i,li,aNum,len;
    while(i <= strlen(strsrc))
    {
    if(strsrc[i]==delimiter||i==strlen(strsrc))
    {
    len=strmid(strdest[aNum],strsrc,li,i,128);
    strdest[aNum][len]=0;
    li=i+1;
    aNum++;
    }
    i++;
    }
    return 1;
    }


    mfG, Nighthawk.

  • Hier ist mein SetPlayerCriminal public:


    public SetPlayerCriminal(playerid,declare,reason[])
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pJailed] == 0)
    {
    PlayerInfo[playerid][pCrimes] += 1;
    new turned[MAX_PLAYER_NAME];
    new turner[MAX_PLAYER_NAME];
    new turnmes[128];
    new wantedmes[128];
    WantedLevel[playerid]++;
    strmid(PlayerCrime[playerid][pAccusedof], reason, 0, strlen(reason), 255);
    GetPlayerName(playerid, turned, sizeof(turned));
    if (declare == 255)
    {
    format(turner, sizeof(turner), "Unbekannt");
    strmid(PlayerCrime[playerid][pVictim], turner, 0, strlen(turner), 255);
    }
    else
    {
    if(IsPlayerConnected(declare))
    {
    GetPlayerName(declare, turner, sizeof(turner));
    strmid(PlayerCrime[playerid][pVictim], turner, 0, strlen(turner), 255);
    strmid(PlayerCrime[declare][pBplayer], turned, 0, strlen(turned), 255);
    strmid(PlayerCrime[declare][pAccusing], reason, 0, strlen(reason), 255);
    }
    }

    format(turnmes, sizeof(turnmes), "Du hast ein Verbrechen begangen ( %s ). Reporter: %s.",reason,turner);
    SendClientMessage(playerid, COLOR_LIGHTRED, turnmes);
    format(wantedmes, sizeof(wantedmes), "Derzeitiges Wantedlevel: %d", WantedLevel[playerid]);
    SendClientMessage(playerid, COLOR_YELLOW, wantedmes);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsACop(i) || IsAOamt(i))
    {
    format(cbjstore, sizeof(turnmes), "HQ: Alle Einheiten: Reporter: %s",turner);
    SendClientMessage(i, TEAM_BLUE_COLOR, cbjstore);
    format(cbjstore, sizeof(turnmes), "HQ: Verbrechen: %s, Gesuchter: %s",reason,turned);
    SendClientMessage(i, TEAM_BLUE_COLOR, cbjstore);
    }
    }
    }
    }
    }//not connected
    }


    Das sind 2 Abfrage, weil ich gerne möchte, dass wenn ein Hitman ein Auftrag (Contract) hat nur 1 Wanted bekommt und wenn ein Hitman kein Auftrag hat, bekommen die 2 Wanteds, wie ALLE anderen auch auf dem Server.


    mfG, Nighthawk.


    //edit: Und wenn ich die Zeile 15 lösche, kriegt man für normale Mord's 1 Wanted und für Contract-Kills ebenfalls, so soll das aber nicht laufen.

  • So wie es aktuell ist, müsste es doch eigentlich funktionieren...
    Du gibst einem User ohne Contract ein Wanted vor SetPlayerCriminal,
    und die selber gibt auch nochmal eins.


    Mit Contract wird nur die Funktion aufgerufen -> ein Wanted.


    Hast du deinen Code denn schon getestet ?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich glaube dann habe ich das Problem gefunden ;)


    Änder doch mal den Grund in Zeile 4 im Startpost zu "Mord (1)".
    Wenn ich richtig liege, steht das dann auch da, wenn du Hitmen bist.


    Wenn das stimmt,
    änder die if-Bedingung für Hitmens zu
    if(GoChase[killerid] == playerid) (stammt aus Zeile 154 vom Onplayerdeath)

  • Läuft das dann so:
    Wenn ein Hitman ein Auftag hat und jemanden killt, bekommt er nur 1 Wanted & wenn ein Hitman und alle andere kein Auftrag haben und jemanden killen, bekommt man 2 Wanteds?
    mfG, Nighthawk.

  • Wieso soll ich jetzt:
    if(GoChase[killerid] == playerid)
    ändern?


    mfG, Nighthawk.


    //edit habe es jetzt auf:


    if(!IsACop(killerid) && GotHit[killerid] == 0)
    {
    WantedLevel[killerid]+=1;
    SetPlayerCriminal(killerid, 255, "Mord");
    }
    else if(!IsACop(killerid) && GotHit[killerid] == 1)
    {
    SetPlayerCriminal(killerid, 255, "Mord (Auftrag)");
    }


    geändert.


    //edit: Bekomme noch immer 2 Wanted, ob mit Auftrag oder nicht.
    Hier ist mein Code:


    if(!IsACop(killerid) && GotHit[killerid] == 0)
    {
    WantedLevel[killerid]+=1;
    SetPlayerCriminal(killerid, 255, "Mord");
    }
    else if(!IsACop(killerid) && GotHit[killerid] == 1)
    {
    SetPlayerCriminal(killerid, 255, "Mord (Auftrag)");
    }

    Einmal editiert, zuletzt von Nighthawk ()