Fragen zu /contract

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
  • if(strcmp(cmd, "/contract", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
    return 1;
    }
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Benutze: /contract [playerid] [Betrag]");
    return 1;
    }
    moneys = strval(tmp);
    if(moneys < 50000 || moneys > 1000000) { SendClientMessage(playerid, COLOR_GREY, " Die Vertragssumme muss mindestens $50000-, aber nicht mehr als $1.000.000 betragen!"); return 1; }
    if(PlayerInfo[playerid][pLevel] < 3)
    {
    SendClientMessage(playerid, COLOR_GRAD1, "Du musst mindestens Level 3 haben um einen Vertrag zu erstellen.");
    return 1;
    }
    if (IsPlayerConnected(giveplayerid))
    {
    if(giveplayerid != INVALID_PLAYER_ID)
    {
    if(PlayerInfo[giveplayerid][pMember] == 8 && PlayerInfo[playerid][pLeader] == 8)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
    return 1;
    }
    else if(PlayerInfo[giveplayerid][pLeader] == 8 && PlayerInfo[playerid][pMember] == 8)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keine Verträge mit deiner eigenen Agentur abschließen!");
    return 1;
    }
    else if(PlayerInfo[giveplayerid][pMember] == 8||PlayerInfo[giveplayerid][pLeader] == 8)
    {
    SendClientMessage(playerid, COLOR_GREY, " Du kannst keinen Hitman unter Vertrag nehmen !");
    return 1;
    }
    if(giveplayerid == playerid) { SendClientMessage(playerid, COLOR_GREY, "Du kannst dich nicht selber unter Vertrag nehmen!"); return 1; }
    GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    playermoney = GetPlayerMoney(playerid);
    if (moneys > 0 && playermoney >= moneys)
    {
    GivePlayerMoney(playerid, (0 - moneys));
    format(PlayerInfo[giveplayerid][pAuftraggeber], MAX_PLAYER_NAME, "%s", sendername); // Neu
    PlayerInfo[giveplayerid][pHeadValue]+=moneys;
    format(string, sizeof(string), "%s möchte das ein Hitman die Zielperson: %s für $%d tötet.",sendername, giveplayer, moneys);
    SendFamilyMessage(8, COLOR_YELLOW, string);
    format(string, sizeof(string), "* Du hast einem Hitman den Auftrag zur Beseitigung von %s für $%d erteilt.",giveplayer, moneys);
    SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
    PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAD1, " Falsche Angaben!");
    }
    }
    }
    else
    {
    format(string, sizeof(string), " %d ist kein Aktiver Spieler.", giveplayerid);
    SendClientMessage(playerid, COLOR_GRAD1, string);
    }
    }
    return 1;
    }
    // OnPlayerDeath
    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    if(IsPlayerConnected(killerid))
    {
    if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
    {
    ConsumingMoney[killerid] = 1;
    new killer[MAX_PLAYER_NAME];
    GetPlayerName(killerid, killer, sizeof(killer));
    FraktionsKasse[7] += PlayerInfo[playerid][pHeadValue]/2;
    GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]/2);
    // Neu
    if(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]) != INVALID_PLAYER_ID && IsPlayerConnected(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]))){
    format(string, 128, "Hitman %s hat dein Contract %s getötet.", killer, name);
    SendClientMessage(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]), COLOR_YELLOW, string);
    }
    format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2);
    SendFamilyMessage(8, COLOR_YELLOW, string);
    PlayerInfo[playerid][pHeadValue] = 0;
    }
    }
    }


    Der Befehl klappt nicht ganz


    Kommt das selbe wie ich vorhin gepostet habe bei Paste 1

  • So, müsste nun funktionieren.

  • // OnPlayerDeath
    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    if(IsPlayerConnected(killerid))
    {
    if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
    {
    ConsumingMoney[killerid] = 1;
    new killer[MAX_PLAYER_NAME];
    GetPlayerName(killerid, killer, sizeof(killer));
    FraktionsKasse[7] += PlayerInfo[playerid][pHeadValue]/2;
    GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]/2);
    // Neu
    if(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]) != INVALID_PLAYER_ID && IsPlayerConnected(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]))){
    format(string, 128, "Hitman %s hat dein Contract %s getötet.", killer, name);
    SendClientMessage(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]), COLOR_YELLOW, string);
    }
    format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2);
    SendFamilyMessage(8, COLOR_YELLOW, string);
    PlayerInfo[playerid][pHeadValue] = 0;
    }
    }
    }



    Der letzte code dann sollte es hoffentlich passen

  • Das hatte ich doch eigentlich schon eingerückt?
    Du kannst das auch eigentlich selbst machen, bei Notepad++ werden dir die zusammengehörigen Klammern rot angezeigt, dann weißt du nämlich was du einrücken musst.

  • C:\Windows\Vss\First Person\German-Next-Era-Life-v2.5-0.3x\German Reallife v1.2\gamemodes\German.pwn(6101) : error 033: array must be indexed (variable "pAuftraggeber")
    C:\Windows\Vss\First Person\German-Next-Era-Life-v2.5-0.3x\German Reallife v1.2\gamemodes\German.pwn(6104) : error 033: array must be indexed (variable "pAuftraggeber")
    C:\Windows\Vss\First Person\German-Next-Era-Life-v2.5-0.3x\German Reallife v1.2\gamemodes\German.pwn(49497) : error 033: array must be indexed (variable "pAuftraggeber")


    format(PlayerInfo[giveplayerid][pAuftraggeber], MAX_PLAYER_NAME, "%s", sendername);//49497




    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    if(IsPlayerConnected(killerid))
    {
    if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
    {
    ConsumingMoney[killerid] = 1;
    new killer[MAX_PLAYER_NAME];
    GetPlayerName(killerid, killer, sizeof(killer));
    FraktionsKasse[7] += PlayerInfo[playerid][pHeadValue]/2;
    GivePlayerMoney(killerid, PlayerInfo[playerid][pHeadValue]/2);
    // Neu
    if(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]) != INVALID_PLAYER_ID && IsPlayerConnected(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]))) //6101
    {
    format(string, 128, "Hitman %s hat dein Contract %s getötet.", killer, name);
    SendClientMessage(ReturnPlayerID(PlayerInfo[playerid][pAuftraggeber]), COLOR_YELLOW, string); //6104
    }
    format(string,128,"<< Hitman %s hat den Auftrag an %s erfüllt und bekommt: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]/2);
    SendFamilyMessage(8, COLOR_YELLOW, string);
    PlayerInfo[playerid][pHeadValue] = 0;
    }
    }
    }


    Dann ist es fertig

  • Du musst pAuftraggeber in deinem Enum einfügen. Dann tauchen diese Errors auch nicht mehr auf.


    Was ist damit? Habe ich doch schon jetzt mehrmals eingerückt.

  • else if(IsPlayerInFrac(playerid,2))
    {
    if(IsPlayerInRangeOfPoint(playerid,15,1572.16016, 658.79889, 6.90220)) //Schranke
    {
    MoveObject(FBITor,-1572.16016, 658.79889, 6.90220,3);
    SetTimer("CloseFBI",5000,0);
    }
    }
    else if(IsPlayerInFrac(playerid,2))
    {
    if(IsPlayerInRangeOfPoint(playerid,15,-1701.42346, 687.67249, 24.75240)) //schranke
    {
    MoveObject(FBITor1,-1701.42346, 687.67249, 24.75240,3);
    SetTimer("CloseFBI1",5000,0);
    }
    }
    else if(IsPlayerInFrac(playerid,2))
    {
    if(IsPlayerInRangeOfPoint(playerid,15,-1631.49512, 688.35559, 8.70930)) //Tor
    {
    MoveObject(FBITor2,-1631.4951, 688.3556, 14.0679,3);
    SetTimer("CloseFBI2",5000,0);
    }
    }


    Function CloseFBI()
    {
    MoveObject(FBITor, -1572.16016, 658.79889, 6.90220,3);
    return 1;
    }
    Function CloseFBI1()
    {
    MoveObject(FBITor1, -1701.42346, 687.67249, 24.75240,3);
    return 1;
    }
    Function CloseFBI2()
    {
    MoveObject(FBITor2, -1631.49512, 688.35559, 8.70930,3);
    return 1;
    }




    Beim Timer sollte es klappen habe das eben gemacht aber es rüht sich kein tor vom fleck warum?

  • das ist Richtig.


    Habe nur dir Root Geändert habe das angepasst beim map Editor wie es sich öffnen sol :l>




    //CreateDynamicObject(968, -1572.16016, 658.79889, 6.90220, 0.00000, 0.00000, 90.00000); //FBI Schranke Unten Offen
    //CreateDynamicObject(968, -1701.42346, 687.67249, 24.75240, 0.00000, 0.00000, 270.13831); //FBI Schranke Oben Offen
    FBITor = CreateObject(968, -1572.16016, 658.79889, 6.90220, 0.00000, 90.00000, 90.40604); //FBI Schranke Unten
    FBITor1 = CreateObject(968, -1701.42346, 687.67249, 24.75240, 0.00000, 90.00000, 270.13831); //FBI Schranke Oben
    FBITor2 = CreateObject(10184, -1631.49512, 688.35559, 8.70930, 0.00000, 0.00000, 270.50000); //FBI Garagen Tor

  • Du hast bei den MoveObjects auch nur die X Y Z Koordinaten "geändert", warum fügst du nicht die Rotations noch ein, dann funktioniert es auch.


    Hier die Parameters von [wiki]MoveObject[/wiki]
    (objectid, Float:X, Float:Y, Float:Z, Float:Speed, Float:RotX = -1000.0, Float:RotY = -1000.0, Float:RotZ = -1000.0)

  • else if(IsACop(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,15,1572.16016, 658.79889, 6.90220))
    {
    MoveObject(FBITor,-1572.16016, 658.79889,6.90220,0.00000,0.00000, 90.000,3);
    SetTimer("CloseFBI",5000,0);
    }
    }
    else if(IsACop(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,15,-1701.42346, 687.67249, 24.75240))
    {
    MoveObject(FBITor1,-1701.42346, 687.67249,24.75240,0.00000,0.00000,270.13831,3);
    SetTimer("CloseFBI1",5000,0);
    }
    }
    else if(IsACop(playerid))
    {
    if(IsPlayerInRangeOfPoint(playerid,15,-1631.49512, 688.35559, 8.70930))
    {
    MoveObject(FBITor2,-1631.49512,688.35559,14.09787,0.00000,0.00000,270.50000,3);
    SetTimer("CloseFBI2",5000,0);
    }
    }


    das mag mich nicht mehr^^ nein klappt nicht

  • Warum achtest du denn nicht auf die Parameter?
    Schau dir noch einmal bitte die Parameter an, besonders auf den Speed.