Beiträge von Jeffry

    Was wird geprintet, wenn du es so schreibst?

    Spoiler anzeigen
    public SekundenTimer3()
    {
    printf("SekundenTimer aufgerufen");
    new string[256],
    playername[MAX_PLAYER_NAME],
    Float:X,
    Float:Y,
    Float:Z;
    ForAllPlayers(i)
    {
    printf("i:%d | %d | %d | %d | %d", i,IsPlayerConnected(i),gPlayerLogged[i],IsPlayerNPC(i),AFKModus[i]);
    if(IsPlayerConnected(i) && gPlayerLogged[i] && !IsPlayerNPC(i) && AFKModus[i] == 0)
    {
    printf("Spieler: %d", i);
    SetPlayerWantedLevel(i, PlayerInfo[i][pWantedLevel]);
    // Spectator
    if(Spectate[i] != -1)
    {
    new targetid = Spectate[i];
    if(IsPlayerConnected(targetid))
    {
    if(PlayerInfo[i][pAdmin] >= 1)
    {
    new Float:health,
    name[MAX_PLAYER_NAME];
    GetPlayerName(targetid, name, sizeof(name));
    GetPlayerHealth(targetid, health);
    format(string, sizeof(string), "~n~~n~~n~~n~~n~~n~~n~~y~%s(ID:%d)~n~~y~Health:%.1f",name,targetid,health);
    GameTextForPlayer(i, string, 2500, 3);
    }
    SetPlayerVirtualWorld(i, GetPlayerVirtualWorld(targetid));
    SetPlayerInterior(i, GetPlayerInterior(targetid));
    }
    }
    if(PlayerInfo[i][pAdminOnDuty] == 1)
    {
    SetPlayerArmour(i, 2000.0); SetPlayerHealth(i, 200.0);
    }
    new Float:health;
    GetPlayerHealth(i,health);
    if(health > 160.0 && PlayerInfo[i][pAdminOnDuty] == 0)
    {
    SetPlayerHealth(i, 160.0);
    }
    if(AntiAFKTime[i] > 0)
    {
    if(IsPlayerNPC(i) || PlayerInfo[i][pAdmin] == 2020 && AFKKick[i] == 0)
    {
    AntiAFKTimer[i] = 0;
    AntiAFKTime[i] = 0;
    AntiAFKCode[i] = 0;
    TextDrawHideForPlayer(i, AntiAFK[i]);
    }
    AntiAFKTime[i] += 1;
    if(AntiAFKTime[i] >= 60)
    {
    AntiAFKTimer[i] = 0;
    AntiAFKTime[i] = 0;
    if(Spectating[i] == -1 || PlayerCuffed[i] == 0)
    {
    if(AFKKick[i] == 1)
    {
    SendClientMessage(AFKChecker[i], COLOR_LIGHTBLUE,"Spieler hat Anwesenheit nicht bestätigt und wurde gekickt!");
    SendClientMessage(i, COLOR_LIGHTBLUE,"Du hast die Anwesenheit nicht bestätigt und wurdest somit gekickt!");
    TogglePlayerControllable(i, 0);
    Kick(i);
    }
    else
    {
    SendClientMessage(AFKChecker[i], COLOR_LIGHTBLUE, "Spieler hat Anwesenheit nicht bestätigt und wurde in den AFK-Modus versetzt");
    AFKChecker[i] = -1;
    TextDrawHideForPlayer(i, AntiAFK[i]);
    GetPlayerName(i, playername, sizeof(playername));
    }
    }
    }
    }
    else if(PlayerToPoint(2.0, i, 2262.1855,2040.5841,10.8203))
    {
    GameTextForPlayer(i, "~w~Hier kannst du dein Auto~n~freikaufen,~n~falls es abgeschleppt wurde:~n~~g~/freecar", 2000, 3);
    }
    else if(PlayerToPoint(2.0, i, -372.9898,-1428.4983,25.7266))
    {
    GameTextForPlayer(i, "~y~Benutze ~g~/gangunjail, ~y~/gangjail", 2000, 1);
    }
    else if(PlayerToPoint(2.0, i, 363.7162,173.7508,1008.3828))
    {
    GameTextForPlayer(i, "~w~Um in das Jobmenu zu gelangen, benutze ~y~/jobs", 2000, 1);
    }
    else if(PlayerToPoint(2.0, i, 766.0630,13.2840,1000.7028))
    {
    GameTextForPlayer(i, "~y~Um einen neuen Fightingstyle zu erlernen, benutze ~r~/fightingstyle", 2000, 3);
    }
    else if(PlayerToPoint(2.0, i, -2237.0854,130.2281,1035.4141))
    {
    GameTextForPlayer(i, "~y~Um dir ein neues Handy zu kaufen, benutze ~r~/handys", 2000, 1);
    }
    else if(IsAtATM(i))
    {
    GameTextForPlayer(i, "~y~Willkommen beim ~r~ATM ~g~/atm", 2000, 1);
    }
    else if(PlayerToPoint(2.0,i,2311.0659,-8.6369,26.7422))
    {
    GameTextForPlayer(i, "~y~Willkommen in der ~r~Bank ~g~/bank", 2000, 1);
    }
    else if(PlayerToPoint(3.0, i, 1375.7318,-1640.7653,13.3828))
    {
    GameTextForPlayer(i, "~g~Um mit dem Fuehrerschein zu beginnen, benutze ~y~/fahrschein", 2000, 1);
    }
    else if(PlayerToPoint(100, i,-30.875, -88.9609, 1004.53))
    {
    GameTextForPlayer(i, "~y~Gib ~r~/buy ~y~ein, um dir etwas zu kaufen", 2000, 1);
    }
    else if(PlayerToPoint(2.0,i,376.5769,-68.2079,1001.5151) || PlayerToPoint(2.0,i,369.9709,-6.9479,1001.8589) || PlayerToPoint(2.0,i,374.6569,-119.6447,1001.4995))
    {
    GameTextForPlayer(i, "Nutze /menu um dir Essen zu kaufen", 2000, 1);
    }
    for(new z = 0; z < sizeof(ZollSystemInfo); z++)
    {
    if(PlayerToPoint(10.0, i, ZollSystemInfo[z][ZSObjectPosX], ZollSystemInfo[z][ZSObjectPosY], ZollSystemInfo[z][ZSObjectPosZ]))
    {
    GameTextForPlayer(i, "~y~Gib ~g~/zoll ~y~ein um den Zoll zu oeffnen", 2000, 3);
    }
    }
    if(GetPlayerSkin(i) == 0 || GetPlayerSkin(i) < 0 || GetPlayerSkin(i) == -1 || GetPlayerSkin(i) == 74)
    {
    SetPlayerSkin(i,101);
    }
    if(TransportTime[i] > 0)
    {
    if(TransportTime[i] >= 16)
    {
    TransportTime[i] = 1;
    if(TransportDriver[i] < 999)
    {
    if(IsPlayerConnected(TransportDriver[i]))
    {
    TransportCost[i] += TransportValue[TransportDriver[i]];
    TransportCost[TransportDriver[i]] = TransportCost[i];
    }
    }
    }
    TransportTime[i] += 1;
    format(string, sizeof(string), "~r~%d ~w~: ~g~$%d",TransportTime[i],TransportCost[i]);
    GameTextForPlayer(i, string, 15000, 6);
    }
    printf("pJailed: %d / i:%d", PlayerInfo[i][pJailed], i);
    if(PlayerInfo[i][pJailed] > 0 && PlayerInfo[i][pJailed] != 5)
    {
    if(PlayerInfo[i][pJailTime] > 0 && WantLawyer[i] == 0)
    {
    PlayerInfo[i][pJailTime] -= 1;
    }
    if(PlayerInfo[i][pJailTime] <= 0 && WantLawyer[i] == 0)
    {
    PlayerInfo[i][pJailTime] = 0;
    if(PlayerInfo[i][pJailed] == 1)
    {
    //Freilassung SFPD
    SetPlayerInterior(i, 0);
    SetPlayerPos(i,-1605.3224,713.3950,13.4961);
    }
    else if(PlayerInfo[i][pJailed] == 2)
    {
    //Freilassung Prison
    SpawnPlayer(i);
    CP[i] = 0;
    PlayerInfo[i][pJailed] = 0;
    SetPlayerSkin(i, PlayerInfo[i][pChar]);
    SetPlayerInterior(i, 0);
    }
    else if(PlayerInfo[i][pJailed] == 3)
    {
    // Freilassung LSPD
    SetPlayerInterior(i, 0);
    SetPlayerPos(i, 1552.8363,-1675.6121,16.1953);
    }
    SendClientMessage(i, COLOR_GRAD1," Du hast deine Schuld gegenüber der Gesellschaft beglichen.");
    format(string, sizeof(string), "~g~Freiheit~n~~w~Werde ein besserer Mensch");
    GameTextForPlayer(i, string, 5000, 1); PlayerInfo[i][pJailed] = 0; SetPlayerWorldBounds(i, 20000.0000,-20000.0000,20000.0000,-20000.0000); ClearCrime(i); SetPlayerToTeamColor(i); TogglePlayerControllable(i, 1);
    }
    }
    if(PlayerTazeTime[i] > 0)
    {
    PlayerTazeTime[i] += 1;
    if(PlayerTazeTime[i] == 15)
    {
    PlayerTazeTime[i] = 0;
    }
    else
    {
    new Float:angle; GetPlayerFacingAngle(i, angle); SetPlayerFacingAngle(i, angle + 90);
    }
    }
    if(GetPlayerDrunkLevel(i) >= 2000)
    {
    if(GetPlayerDrunkLevel(i) >= 30000)
    {
    ApplyAnimation(i,"CRACK","crckdeth2",4.0, 1,0, 0, 0, 0);
    }
    else if(GetPlayerDrunkLevel(i) >= 29900 && GetPlayerDrunkLevel(i) <= 30000)
    {
    SetPlayerSpecialAction(i, 0); ClearAnimations(i);
    }
    }
    if(PlayerStoned[i] >= 5)
    {
    if(PlayerStonedTime[i] > 0)
    {
    ApplyAnimation(i, "CRACK", "crckdeth2", 4.0, 1, 0, 0, 0, 0); PlayerStonedTime[i] -= 1;
    }
    PlayerStoned[i] += 1;
    if(PlayerStoned[i] == 15)
    {
    PlayerStoned[i] = 2;
    new Float:angle;
    GetPlayerFacingAngle(i, angle);
    if(IsPlayerInAnyVehicle(i))
    {
    if(GetPlayerState(i) == 2)
    {
    SetVehicleZAngle(GetPlayerVehicleID(i), angle + 25);
    }
    }
    else
    {
    SetPlayerFacingAngle(i, angle + 90);
    }
    }
    }
    if(PlayerInfo[i][pCarTime] != 0)
    {
    if(PlayerInfo[i][pCarTime] > 0)
    {
    PlayerInfo[i][pCarTime] -= 1;
    }
    if(PlayerInfo[i][pCarTime] < 0)
    {
    PlayerInfo[i][pCarTime] = 0;
    }
    }
    if(JobFreeze[i] > 0)
    {
    JobFreeze[i] -= 1;
    }
    if(Logintime[i] >= 0)
    {
    Logintime[i] += 1;
    }
    if(HotdogTime[i] > 0)
    {
    HotdogTime[i] -= 1;
    }
    if(PortedTimer[i] > 0)
    {
    PortedTimer[i] -= 1;
    }
    if(FindTime[i] > 0)
    {
    if(FindTime[i] == FindTimePoints[i])
    {
    FindTime[i] = 0;
    FindTimePoints[i] = 0;
    DisablePlayerCheckpoint(i);
    GameTextForPlayer(i, "~r~Redmarker weg", 2500, 1);
    }
    else
    {
    format(string, sizeof(string), "%d", FindTimePoints[i] - FindTime[i]);
    GameTextForPlayer(i, string, 1500, 6);
    FindTime[i] += 1;
    }
    }
    if(AntiSpamTime[i] > 0)
    {
    AntiSpamTime[i] -= 1;
    if(AntiSpamTime[i] == 0)
    {
    AntiSpamWarns[i] = 0;
    }
    }
    if(TaxiCallTime[i] > 0)
    {
    if(TaxiAccepted[i] < 999)
    {
    if(IsPlayerConnected(TaxiAccepted[i]))
    {
    GetPlayerPos(TaxiAccepted[i], X, Y, Z); SetPlayerCheckpoint(i, X, Y, Z, 5);
    }
    }
    }
    if(MedicAccepted[i] != -1)
    {
    GetPlayerPos(MedicAccepted[i], X, Y, Z); SetPlayerCheckpoint(i, X, Y, Z, 5); CP[i] = 71;
    }
    if(WheelmanAccepted[i] != -1)
    {
    GetPlayerPos(WheelmanAccepted[i], X, Y, Z); SetPlayerCheckpoint(i, X, Y, Z, 5); CP[i] = 72;
    }
    if(MechanicCallTime[i] > 0)
    {
    if(MechanicCallTime[i] == 90)
    {
    MechanicCallTime[i] = 0; DisablePlayerCheckpoint(i); GameTextForPlayer(i, "~r~Redmarker weg", 2500, 1);
    }
    else
    {
    format(string, sizeof(string), "%d", 90 - MechanicCallTime[i]); GameTextForPlayer(i, string, 1500, 6); MechanicCallTime[i] += 1;
    }
    }
    if(AntiRobTimer[i] > 0)
    {
    AntiRobTimer[i] -= 1;
    }
    if(PlayerCuffed[i] == 1)
    {
    if(PlayerCuffedTime[i] <= 0)
    {
    TogglePlayerControllable(i, 1); PlayerCuffed[i] = 0; PlayerCuffedTime[i] = 0; PlayerTazeTime[i] = 1; SetPlayerSpecialAction(i, 0); ClearAnimations(i);
    }
    else
    {
    PlayerCuffedTime[i] -= 1;
    }
    }
    if(PlayerCuffed[i] == 2)
    {
    if(PlayerCuffedTime[i] <= 0)
    {
    GameTextForPlayer(i, "~g~Du hast deine Handschellen geknackt, schnell fluechte!", 2500, 3);
    TogglePlayerControllable(i, 1); PlayerCuffed[i] = 0; PlayerCuffedTime[i] = 0; PlayerTied[i] = 0; SetPlayerSpecialAction(i, 0); ClearAnimations(i);
    }
    else
    {
    PlayerCuffedTime[i] -= 1;
    }
    }
    if(StartingPaintballRound == 1 && AnnouncedPaintballRound == 0)
    {
    AnnouncedPaintballRound = 1;
    if(PlayerPaintballing[i] == 1)
    {
    SendClientMessage(i, COLOR_YELLOW, "Paintball Match wird für 15 Sekunden hinausgezögert, um mehr Spieler zu errreichen.");
    }
    }
    if(StartingKartRound == 1 && AnnouncedKartRound == 0)
    {
    AnnouncedKartRound = 1;
    if(PlayerKarting[i] != 0 && PlayerInKart[i] != 0)
    {
    SendClientMessage(i, COLOR_YELLOW, "Kart Rennen wird für 15 Sekunden hinausgezögert, um mehr Spieler zu errreichen.");
    }
    }
    if(EndingKartRound == 1)
    {
    if(PlayerKarting[i] != 0 && PlayerInKart[i] != 0)
    {
    DisablePlayerCheckpoint(i);
    CP[i] = 0;
    }
    }
    }
    }
    return 1;
    }



    (Ich habe mir erlaubt den Code mal richtig einzurücken.)



    EDIT:
    Dome_: Habe noch einen print hinzugefügt. Aktualisiere deinen Code falls du es schon kopiert hast.

    Das müsste ohne Probleme dann klappen, außer du hast bei OnPlayerSpawn noch einen anderen Dialog der angezeigt wird. Aber dann müsste es mit dem Timer mit einer Sekunde klappen.


    Ändere den Timer von 10 Sekunden mal auf 9 dann 8 und so weiter. Ab wann wird der Dialog angezeigt? Also was ist die kleinste Zeit die den Dialog noch anzeigt?

    Kein Problem.
    Unter welchem Callback rufst du "SetPlayerSpawn(playerid);" auf? (OnPlayerRequestClass/OnPlayerSpawn/...?)
    Also wo steht das, in welchem public?

    @Raven^: Das liegt daran, dass deine 1er alle am Anfang stehen. Ändere mal die 3 zu einer 1, dann wirst du sehen, dass irgendwann der Uli ausgegeben wird, wenn du deinen Code verwendest. ;)
    Und wenn du nach zum Beispiel der 2 suchst, dann würde der Uwe kommen.

    Nein, das passt so nicht.
    So muss es sein:
    new count = 0, count2 = -1;
    for(new i; i<sizeof(e_array);i++)
    {
    if(e_array[i][0] == 1) count++;
    }
    new r = random(count);


    for(new i; i<sizeof(e_array);i++)
    {
    if(e_array[i][0] == 1) count2++;
    if(count2 == r)
    {
    printf("%s",e_array[i][1]);
    break;
    }
    }


    Oder so:

    Spoiler anzeigen
    new count;
    for(new i; i<sizeof(e_array);i++)
    {
    if(e_array[i][0] == 1) count++;
    }
    new r = random(count);
    count = -1;
    for(new i; i<sizeof(e_array);i++)
    {
    if(e_array[i][0] ==1) count++;
    if(count == r)
    {
    printf("%s",e_array[i][1]);
    break;
    }
    }

    O.o
    Unter welchem Callback steht das hier eigentlich?


    printf("pTut: %d / Account: %d", PlayerInfo[playerid][pTut], gPlayerAccount[playerid]);
    if(PlayerInfo[playerid][pTut] == 0 && gPlayerAccount[playerid] == 0)
    {
    printf("Zeige Dialog");
    gOoc[playerid] = 1; gNews[playerid] = 1; gFam[playerid] = 1;
    TogglePlayerControllable(playerid, 0);
    RegistrationStep[playerid] = 1;
    SetTimerEx("ShowTutDialog", 10000, 0, "d", playerid);
    SetPlayerInterior(playerid, 0);
    SetPlayerSkin(playerid, 137);
    printf("Skin gesetzt, Dialog angezeigt");
    }

    Das stimmt auch. Kann doch nicht sein.
    Ändere den Timer mal auf 10 Sekunden. Ist zwar völliger Schwachsinn, aber um zu sehen ob eher dann kommt tuts das.


    SetTimerEx("ShowTutDialog", 10000, 0, "d", playerid);


    Kommt er dann?

    Schreibe es so, möglicherweise hast du irgendwas was den Dialog entfernt.
    printf("pTut: %d / Account: %d", PlayerInfo[playerid][pTut], gPlayerAccount[playerid]);
    if(PlayerInfo[playerid][pTut] == 0 && gPlayerAccount[playerid] == 0)
    {
    printf("Zeige Dialog");
    gOoc[playerid] = 1; gNews[playerid] = 1; gFam[playerid] = 1;
    TogglePlayerControllable(playerid, 0);
    RegistrationStep[playerid] = 1;
    SetTimerEx("ShowTutDialog", 1000, 0, "d", playerid);
    SetPlayerInterior(playerid, 0);
    SetPlayerSkin(playerid, 137);
    printf("Skin gesetzt, Dialog angezeigt");
    }


    Und ganz unten im GameMode:
    forward ShowTutDialog(playerid);
    public ShowTutDialog(playerid)
    {
    printf("Timer aufgerufen");
    return ShowPlayerDialog(playerid,DIALOG_MW,DIALOG_STYLE_MSGBOX,"Geschlecht","Gib bitte dein Geschlecht an.","Männlich","Weiblich");
    }


    Geht's dann?

    Mache einen Loop durch das Array und zähle, wie viele Zeilen die 1 als ersten Wert haben.
    Dann nimmst du aus dieser Anzahl einen random Wert und machst noch eine Schleife durch das Array, zählst wieder hoch und wenn der Zähler den Wert vom Random Wert hat, dann gibst du den Name aus.


    Kommst du damit klar, oder brauchst du den Code?

    if(!strcmp(cmdtext,"/fahrrad",true))
    {
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    printf("IsInRange: %d",IsPlayerInRangeOfPoint(playerid,10.0,1778.3696,-1885.7913,13.3881));
    printf("x:%f | y:%f | z:%f", x, y, z);
    if(!IsPlayerInRangeOfPoint(playerid,10.0,1778.3696,-1885.7913,13.3881))return SendClientMessage(playerid,0xFF0000FF,"Du bist nicht in der Nähe!");
    new vID = CreateVehicle(509, x, y, z, a, -1, -1, -1);
    PutPlayerInVehicle(playerid, vID, 0);
    SendClientMessage(playerid, 0xFF00FFFF, "Fahrrad!");
    return 1;
    }


    Was steht im Log?

    Laut Log muss dir dieser Dialog angezeigt werden.
    ShowPlayerDialog(playerid,DIALOG_MW,DIALOG_STYLE_MSGBOX,"Geschlecht","Gib bitte dein Geschlecht an.","Männlich","Weiblich");


    Oder kommt der nicht?


    Wenn nicht, ändere das mal zu:
    printf("pTut: %d / Account: %d", PlayerInfo[playerid][pTut], gPlayerAccount[playerid]);
    if(PlayerInfo[playerid][pTut] == 0 && gPlayerAccount[playerid] == 0)
    {
    printf("Zeige Dialog");
    gOoc[playerid] = 1; gNews[playerid] = 1; gFam[playerid] = 1;
    TogglePlayerControllable(playerid, 0);
    RegistrationStep[playerid] = 1;
    ShowPlayerDialog(playerid,DIALOG_MW,DIALOG_STYLE_MSGBOX,"Geschlecht","Gib bitte dein Geschlecht an.","Männlich","Weiblich");
    SetPlayerInterior(playerid, 0);
    SetPlayerSkin(playerid, 137);
    printf("Skin gesetzt, Dialog angezeigt");
    }

    if(!strcmp(cmdtext, "/fahrrad", true))
    {
    if(!IsPlayerInRangeOfPoint(playerid,10.0,1778.3696,-1885.7913,13.3881)) return SendClientMessage(playerid, 0xFF0000FF, "Du bist nicht in der Nähe!");
    new Float:x, Float:y, Float:z, Float:a;
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    new vID = CreateVehicle(509, x, y, z, a, -1, -1, -1);
    PutPlayerInVehicle(playerid, vID, 0);
    SendClientMessage(playerid, 0xFF00FFFF, "Fahrrad!");
    return 1;
    }

    Wird der Code überhaupt aufgerufen?
    Füge mal vor
    //Hier
    if(PlayerInfo[i][pJailed] > 0 && PlayerInfo[i][pJailed] != 5){
    das ein:
    printf("pJailed: %d / i:%d", PlayerInfo[i][pJailed], i);


    Was steht im Log?

    Sorry, hatte das Float:a global bei mir und dadurch vergessen.


    new Float:x, Float:y, Float:z;
    zu:
    new Float:x, Float:y, Float:z, Float:a;


    Dann geht's.

    Was? :wacko:



    Kommt der erste Dialog nicht? Wenn ja, füge mal vor:
    if(PlayerInfo[playerid][pTut] == 0 && gPlayerAccount[playerid] == 0)
    das ein:
    printf("pTut: %d / Account: %d", PlayerInfo[playerid][pTut], gPlayerAccount[playerid]);
    Was steht im Log?


    ...Wenn nein, was kommt dann nicht?