Deagle Event verbuggt!

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
  • Hey.


    Ich habn Deagle Event gescriptet , nur es ist verbuggt!


    Alleine klappt alles , nur zu 2+ nicht.


    Wir haben es zu 2. getestet , nur kommt im Chat statt 20 , 10 , 3 , 2 ,1 nur 20 , 3 , 1 undn icht weiter , man wird auch nicht unfreezed , ausser der , der das Event gestartet hat.



    forward DeagleEventTimer();
    forward DeagleCheck();
    new bool:deagleeventteilnehmer[MAX_PLAYERS] = false;
    new bool:deagleeventaktiv = false;


    public OnPlayerDisconnect(playerid, reason)
    {
    if(deagleeventteilnehmer[playerid])
    {
    deagleeventteilnehmer[playerid]=false;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    new string[128];
    format(string,sizeof(string),"%s ist raus!",PlayerName(playerid));
    SendClientMessage(i,Grau,string);
    }
    }
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    if(deagleeventteilnehmer[playerid])
    {
    deagleeventteilnehmer[playerid]=false;
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    new string[128];
    format(string,sizeof(string),"%s ist raus!",PlayerName(playerid));
    SendClientMessage(i,Grau,string);
    }
    }
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==Dialog_DeagleEventFrage)
    {
    if(response==0)
    {

    }
    if(response==1)
    {
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(playerid));
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    dini_FloatSet(Spieler,"X",x);
    dini_FloatSet(Spieler,"Y",y);
    dini_FloatSet(Spieler,"Z",z);
    dteilnehmer++;
    new rand = random(13);
    SetPlayerPos(playerid,deagleeventpos[rand][deagle_x],deagleeventpos[rand][deagle_y],deagleeventpos[rand][deagle_z]);
    SetPlayerFacingAngle(playerid,deagleeventpos[rand][deagle_za]);
    TogglePlayerControllable(playerid,0);
    GivePlayerWeapon(playerid,24,999);
    SetPlayerArmour(playerid,100);
    SetPlayerHealth(playerid,100);
    deagleeventteilnehmer[playerid]=true;
    }
    }


    if(deagleeventaktiv)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    SendClientMessage(playerid,Hellblau,"Das Event wurde gestartet!");
    DeagleTime = 2;
    DeagleTimer = SetTimer("DeagleEventTimer",1000,1);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Es ist kein Event vorbereitet!");
    }


    public DeagleCheck()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(dteilnehmer==1)
    {
    if(deagleeventteilnehmer[i])
    {
    new string[256];
    format(string,sizeof(string),"%s hat das Deagle Event gewonnen!",PlayerName(i));
    SendClientMessageToAll(Hellblau,string);
    GivePlayerMoney(i,25000);
    SendClientMessage(i,Hellblau,"Herzlichen Glückwunsch! Du hast das Event gewonnen. Du erhälst nun 25.000€ Gewinn.");
    deagleeventteilnehmer[i]=false;
    SetPlayerArmour(i,0);
    SetPlayerHealth(i,100);
    ResetPlayerWeapons(i);
    new Spieler[64];
    format(Spieler,sizeof(Spieler),"Spieler/%s.txt",PlayerName(i));
    SetPlayerPos(i,dini_Float(Spieler,"X"),dini_Float(Spieler,"Y"),dini_Float(Spieler,"Z"));
    SetCameraBehindPlayer(i);
    KillTimer(DeagleCheckTimer);
    }
    }
    }
    }


    public DeagleEventTimer()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    if(DeagleTime >= 1)
    {
    if(DeagleTime == 2)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 20 Sekunden.");
    }
    else if(DeagleTime == 7)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 15 Sekunden.");
    }
    else if(DeagleTime == 12)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 10 Sekunden.");
    }
    else if(DeagleTime == 19)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 3 Sekunden.");
    }
    else if(DeagleTime == 20)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 2 Sekunden.");
    }
    else if(DeagleTime == 21)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 1 Sekunde.");
    }
    else if(DeagleTime == 22)
    {
    SendClientMessage(i,Hellblau,"Viel Glück!");
    TogglePlayerControllable(i,1);
    DeagleCheckTimer=SetTimer("DeagleCheck",1000,1);
    KillTimer(DeagleTimer);
    }
    }
    DeagleTime++;
    }
    }
    }

  • Der Fehler liegt in der Funktion "DeagleEventTimer", dort erhöhst du die Variable "DeagleTime" immer um 1,
    jedoch innerhalb der for-Schleife, heißt also, wenn 1 Spieler am Event teilnimmt, wird die Variable einmal um 1 erhöht.
    Wenn nun aber 2 Spieler am Event teilnehmen, wird die Variable zweimal um 1 erhöht.
    So sollte es funktionieren:



    public DeagleEventTimer()
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    if(DeagleTime >= 1)
    {
    if(DeagleTime == 2)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 20 Sekunden.");
    }
    else if(DeagleTime == 7)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 15 Sekunden.");
    }
    else if(DeagleTime == 12)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 10 Sekunden.");
    }
    else if(DeagleTime == 19)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 3 Sekunden.");
    }
    else if(DeagleTime == 20)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 2 Sekunden.");
    }
    else if(DeagleTime == 21)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 1 Sekunde.");
    }
    else if(DeagleTime == 22)
    {
    SendClientMessage(i,Hellblau,"Viel Glück!");
    TogglePlayerControllable(i,1);
    DeagleCheckTimer=SetTimer("DeagleCheck",1000,1);
    KillTimer(DeagleTimer);
    }
    }
    }
    }
    DeagleTime++;
    }



    BlackLegend

  • Aah , danke :)


    Nur hab jetzt ist es wieder verbuggt ._.


    public DeagleEventTimer()
    {
    if(DeagleTime >= 1)
    {
    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(deagleeventteilnehmer[i])
    {
    if(DeagleTime == 2)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 20 Sekunden.");
    }
    else if(DeagleTime == 7)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 15 Sekunden.");
    }
    else if(DeagleTime == 12)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 10 Sekunden.");
    }
    else if(DeagleTime == 19)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 3 Sekunden.");
    }
    else if(DeagleTime == 20)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 2 Sekunden.");
    }
    else if(DeagleTime == 21)
    {
    SendClientMessage(i,Hellblau,"Das Event startet in 1 Sekunde.");
    }
    else if(DeagleTime >= 22)
    {
    SendClientMessage(i,Hellblau,"Viel Glück!");
    TogglePlayerControllable(i,1);
    DeagleCheckTimer=SetTimer("DeagleCheck",1000,1);
    DeagleTime=0;
    KillTimer(DeagleTimer);
    }
    }
    }
    DeagleTime++;
    }
    }


    http://i.imgur.com/LYIrm.png