Beiträge von Jeffry

    new Text:Geld2[MAX_PLAYERS];
    zu
    new PlayerText:Geld2[MAX_PLAYERS];


    Auch bei Geld1:
    new PlayerText:Geld1;



    Auch wenn ich das zuvor schon geschrieben habe, aber es scheint als hättest du das noch nicht gemacht, anders sind die Warnungen nicht zu erklären.

    printf("Head: %d", PlayerInfo[playerid][pHeadValue]);
    if(PlayerInfo[playerid][pHeadValue] > 0)
    {
    if(IsPlayerConnected(killerid))
    {
    printf("Member: %d, Leader: %d", PlayerInfo[killerid][pMember], PlayerInfo[killerid][pLeader]);
    if(PlayerInfo[killerid][pMember] == 8 || PlayerInfo[killerid][pLeader] == 8)
    {
    printf("Chase: %d -> playerid: %d", GoChase[killerid], playerid);
    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 erhält: $%d >>",killer,name,PlayerInfo[playerid][pHeadValue]);
    print("Test");
    SendFamilyMessage(8, COLOR_YELLOW, string);
    PlayerInfo[playerid][pHeadValue] = 0;
    GotHit[playerid] = 0;
    GetChased[playerid] = 999;
    GoChase[killerid] = 999;
    }
    }
    }
    }


    Was wird geprintet, wenn du es so einfügst?

    Der Fehler liegt in der Berechnung, wenn du es so ohne Timer machen willst.


    if(strcmp(cmd,"/equip",true)==0)
    {
    if(PlayerInfo[playerid][pMember]!=20&&PlayerInfo[playerid][pLeader]!=20)return SendClientMessage(playerid,COLOR_GREY,"Du bist nicht in der jewaligen Fraktion.");
    if(PlayerInfo[playerid][pFriedhof]==1)return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich nicht ausrüsten, solange du auf den Friedhof bist.");
    if(!PlayerToPoint(5,playerid,-1869.5820,-1624.6660,21.8426))return SendClientMessage(playerid,COLOR_GREY,"Du kannst dich hier nicht ausrüsten.");
    if(gettime()<equipusen[playerid])
    {
    new equipzeit=equipusen[playerid]-gettime();
    format(string,sizeof(string),"Du kannst dich erst wieder in %d:%02d Minuten wieder ausrüsten.",equipzeit / 60, equipzeit % 60);
    return SendClientMessage(playerid,COLOR_GREY,string);
    }
    GivePlayerWeapon(playerid,24,200);
    equipusen[playerid]=gettime()+(60*2);
    SendClientMessage(playerid,COLOR_GREY,"Du hast dich erfolgreich ausgerüstet.");
    return 1;
    }


    Dann passt es.

    Den einen Teil den ich dir gesagt habe hast du ja nicht gemacht.


    Payday[playerid] = CreatePlayerTextDraw(playerid, 8, 300, "~r~PayDay: ~w~%d~r~/~w~60");
    PlayerTextDrawFont(playerid, Payday[playerid], 1);
    PlayerTextDrawAlignment(playerid, Payday[playerid], 0);
    PlayerTextDrawLetterSize(playerid, Payday[playerid], 0.500000, 0.999990);
    PlayerTextDrawSetProportional(playerid, Payday[playerid], 1);
    PlayerTextDrawSetShadow(playerid, Payday[playerid], 1);
    PlayerTextDrawShow(playerid, Payday[playerid]);


    for(new i=0; i < MAX_PLAYERS; i++)
    {
    new string[68];
    format(string,sizeof(string),"~r~PayDay: ~w~%d~r~/~w~60",PlayerInfo[playerid][pPlayMinutes]);
    PlayerTextDrawSetString(i, Payday[i], string);
    } //OnPlayerSpawn
    zu:
    Payday[playerid] = CreatePlayerTextDraw(playerid, 8, 300, "~r~PayDay: ~w~0~r~/~w~60");
    PlayerTextDrawFont(playerid, Payday[playerid], 1);
    PlayerTextDrawAlignment(playerid, Payday[playerid], 0);
    PlayerTextDrawLetterSize(playerid, Payday[playerid], 0.500000, 0.999990);
    PlayerTextDrawSetProportional(playerid, Payday[playerid], 1);
    PlayerTextDrawSetShadow(playerid, Payday[playerid], 1);
    PlayerTextDrawShow(playerid, Payday[playerid]);
    ^Das muss zu OnPlayerConnect und aus OnPlayerSpawn weg.
    Die Schleife muss ganz weg.



    Außerdem:
    PlayerTextDrawHide(playerid,Payday[playerid]); // OnPlayerDisconnect
    zu:
    PlayerTextDrawDestroy(playerid,Payday[playerid]); // OnPlayerDisconnect

    Erstellst du das Textdraw on deinem PayDay Timer? Das würde das erklären, du musst es nämlich bei OnPlayerConnect erstellen.


    An deinen Codes oben wird das nicht klar, da du die Callbacks nicht dazu geschrieben hast. Schau da mal nach.

    new equipusen[MAX_PLAYERS];


    if(strcmp(cmd,"/equip", true) == 0)
    {
    if(PlayerToPoint(5,playerid, -1869.5820,-1624.6660,21.8426))
    {
    if(equipusen[playerid] == 1)
    {
    SendClientMessage(playerid,COLOR_GREY,"Du kannst dich noch nicht Ausrüsten.");
    return 1;
    }
    if(PlayerInfo[playerid][pFriedhof] == 1)
    {
    SendClientMessage(playerid, COLOR_GREY, "Du kannst auf dem Friedhof keine Befehle benutzen.");
    return 1;
    }
    if(PlayerInfo[playerid][pMember] == 20 || PlayerInfo[playerid][pLeader] == 20)
    {
    GivePlayerWeapon(playerid,24,200);
    equipusen[playerid] = 1;
    SetTimerEx("EquipTimer",120000,0,"i",playerid);
    }
    }
    }


    Einfach über ein Array. ;)

    Payday[playerid] = CreatePlayerTextDraw(playerid, 8, 300, "~r~PayDay: ~w~%d~r~/~w~60");
    PlayerTextDrawFont(playerid, Payday[playerid], 1);
    PlayerTextDrawAlignment(playerid, Payday[playerid], 0);
    PlayerTextDrawLetterSize(playerid, Payday[playerid], 0.500000, 0.999990);
    PlayerTextDrawSetProportional(playerid, Payday[playerid], 1);
    PlayerTextDrawSetShadow(playerid, Payday[playerid], 1);
    PlayerTextDrawShow(playerid, Payday[playerid]);


    for(new i=0; i < MAX_PLAYERS; i++)
    {
    new string[68];
    format(string,sizeof(string),"~r~PayDay: ~w~%d~r~/~w~60",PlayerInfo[playerid][pPlayMinutes]);
    PlayerTextDrawSetString(i, Payday[i], string);
    }
    zu:
    Payday[playerid] = CreatePlayerTextDraw(playerid, 8, 300, "~r~PayDay: ~w~0~r~/~w~60");
    PlayerTextDrawFont(playerid, Payday[playerid], 1);
    PlayerTextDrawAlignment(playerid, Payday[playerid], 0);
    PlayerTextDrawLetterSize(playerid, Payday[playerid], 0.500000, 0.999990);
    PlayerTextDrawSetProportional(playerid, Payday[playerid], 1);
    PlayerTextDrawSetShadow(playerid, Payday[playerid], 1);
    PlayerTextDrawShow(playerid, Payday[playerid]);


    Die Schleife muss weg, und %d wird zu 0 beim Erstellen.


    Das hier kannst du ganz weg machen:
    PlayerTextDrawSetString(playerid, Payday[playerid], "~r~PayDay: ~w~0~r~/~w~60");
    PlayerTextDrawShow(playerid,Payday[playerid]);

    Dann musst du noch
    DisablePlayerRaceCheckpoint(playerid);
    unter das Flugschein[playerid] = 1; setzen.


    Der Flugschein müste aber 1 sein, da sollte alles passen. Wenn du in der Spieler-Datei oder Datenbank nachschaust, dann lass den Spieler vorher speichern.

    Ok, debugge es bitte so nochmal:
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    printf("Prüfung: %d", Prufung[playerid]);
    if(Prufung[playerid] == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    printf("cID: %d /Range: %d", cID, IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]));
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID >= sizeof(fsCP))
    {
    printf("Ende");
    SetPVarInt(playerid, "fCP", 0);
    new string[128];
    format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
    SetPlayerVirtualWorld(playerid,0);
    Prufung[playerid] = 0;
    Flugschein[playerid] = 1;
    }
    else
    {
    printf("Nächster: %d", cID);
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)-1) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    printf("Angezeigt: %d", cID);
    }
    }
    return 1;
    }
    DisablePlayerRaceCheckpoint(playerid);
    return 1;
    }


    Was kommt dann?

    Du musst den alten "per" bzw. "t" Wert wieder mitgeben. Dazu muss der Timer neu gestartet werden.
    Alternativ könnte man es auch über eine Variable machen.


    Außerdem ist es im Timer nur "d", nicht "%d". ;)


    CMD:load(playerid){
    SetTimerEx("T", 1000, false, "dd", playerid, 0);
    return 1;
    }


    forward T(playerid, t);
    public T(playerid, t){
    t+=random(5);
    setper(playerid, t);
    SetTimerEx("T", 1000, false, "dd", playerid, t);
    return 1;
    }


    setper(playerid, per){
    TextDrawTextSize(Textdraw1, 245.099914+(226.794708/100*per), 0.000000);
    TextDrawShowForPlayer(playerid, Textdraw1);
    }

    Ok. Um nicht unnötig viel Radius um die anderen Checkpoints zu prüfen, schreib es so:
    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    printf("Prüfung: %d", Prufung[playerid]);
    if(Prufung[playerid] == 1)
    {
    new cID = GetPVarInt(playerid, "fCP");
    new Float:range;
    if(cID == sizeof(fsCP)-1) range = 20.0;
    else range = 10.0;
    printf("cID: %d /Range: %d", cID, IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]));
    if(IsPlayerInRangeOfPoint(playerid, range, fsCP[cID][fx], fsCP[cID][fy], fsCP[cID][fz]))
    {
    cID++;
    if(cID > sizeof(fsCP))
    {
    printf("Ende");
    SetPVarInt(playerid, "fCP", 0);
    new string[128];
    format(string,128,"{C8C8C8}Du hast den Flugschein erfolgreich {41FF00}bestanden.");
    DestroyVehicle(GetPVarInt(playerid,"Flugzeug"));
    SetPlayerPos(playerid,415.1635,2535.5076,19.1484);
    SetPlayerVirtualWorld(playerid,0);
    Prufung[playerid] = 0;
    Flugschein[playerid] = 1;
    }
    else
    {
    printf("Nächster: %d", cID);
    SetPVarInt(playerid, "fCP", cID);
    if(cID < sizeof(fsCP)) SetPlayerRaceCheckpoint(playerid, 3, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID+1][fx], fsCP[cID+1][fy],fsCP[cID+1][fz], 10);
    else SetPlayerRaceCheckpoint(playerid, 4, fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], fsCP[cID][fx], fsCP[cID][fy],fsCP[cID][fz], 10);
    }
    }
    return 1;
    }
    DisablePlayerRaceCheckpoint(playerid);
    return 1;
    }


    Falls 20.0 nicht reicht, nimm 30.0.