Beiträge von 8D

    Zum 1.


    Guck doch mal


    Du redest die ganze Zeit von Textdraw2, willst am ende aber Textdraw0 anzeigen lassen.


    Also ändere


    TextDrawShowForAll(Text:Textdraw0);


    zu


    TextDrawShowForAll(Textdraw2);


    bei GameModeInIt.

    Im Vgl dazu ohne Ex:


    Ein sich wiederholender 1 Sekunden Timer wird gebraucht.



    public SucideTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(WillSterben[i] > 0)
    {
    WillSterben[i]++;
    }
    if(WillSterben[i] == 16)
    {
    SetPlayerHealth(i,0.0);
    WillSterben[i] = 0;
    }
    }
    }


    if(strcmp(cmdtext,"/sucide",true,7)
    {
    WillSterben[playerid] = 1;
    return 1;
    }

    Jo ich weiß auch warum, ich habe doch keinen Fehler gemacht ^^ Also ist das jetzt doppelt gemoppelt mit der ID bei mir :D Kann also nicht funzen.
    Ersetz wieder:


    CheckKillCars(playerid,vehiclemodel);


    mit


    CheckKillCars(playerid,vehicleid);


    bei OnPlayerstatechange.


    Dann geht das.

    Oben:


    new choosetimer;

    forward Info();/ganz oben bei den anderen Forwards

    SetTimer("Info", 150000, 1);//unter OnGameModeInit


    public Info()
    {
    choosetimer+=1;
    if(choosetimer == 1) // 150.000ms
    {
    //Hier dein zweiter Text rein
    }
    else if(choosetimer == 2) // 300.000ms wie vorher auch (2*150.000)
    {
    SendClientMessageToAll(COLOR_WHITE, "======Regelaufruf======");
    SendClientMessageToAll(COLOR_BLUE, "Regelwerk und Verkehrsordnung im Forum unter");
    SendClientMessageToAll(COLOR_BLUE, "www.gr-projekt.de");
    SendClientMessageToAll(COLOR_WHITE, "--------------------------------------------------");
    SendClientMessageToAll(COLOR_BLUE, " Bei Waffenscheinabnahme 48h Sperre!");
    SendClientMessageToAll(COLOR_WHITE, "===============================================");
    choosetimer = 0; // wieder zurürcksetzen ist wichtig!
    }
    return 1;
    }//das hab ich ganz unten

    if (strcmp("/gpns", cmdtext, true, 5) == 0)
    {
    if(gTeam[playerid] == 1)
    {
    SetPlayerPos(playerid, 1829.0084,-1680.9541,13.5469);
    return 1;
    }
    else if(gTeam[playerid] == 2)
    {
    SetPlayerPos(playerid, 2124.6208,-1947.1683,13.5469);
    return 1;
    }


    }

    Das für das Kills Problem ;)


    Und zum rest:
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if (newstate == PLAYER_STATE_DRIVER)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    new vehiclemodel = GetVehicleModel(vehicleid);
    CheckKillCars(playerid,vehiclemodel);


    if(vehiclemodel == 416)
    {
    new rand = random(3), Float:Health;
    if(rand == 1)
    {
    SendClientMessage(playerid,COLOR_RED,"- blabla");
    if(GetPlayerHealth(playerid, Health) > 60) SetPlayerHealth(playerid,100);
    else SetPlayerHealth(playerid,Health+(rand*13));
    }
    }
    }
    if (newstate == 2) KillTimer(dbtime);
    if (newstate == PLAYER_STATE_ONFOOT) AntiDriveBy(playerid);
    return 1;
    }



    Wir haben uns beide vertan.
    Wir sprechen die ganze Zeit von der MODEL-ID aber haben die vehicleid benutzt :D

    Ist aber (finde ich zumindest) schwerer weil es mit Dialogen gemacht es, sieht aber besser aus und spart ein bisschen Zeit.

    Nicht wirklich.
    Ja gibt es. Einfach mal im Tutorial Bereich suchen ;)

    Gibt zwei arten:


    else if(GetVehicleModel(vehicleid) == 401 && Kills[playerid] < 150) // 401 zur Model ID ändern die du abfragen willst, und bei 150 die Kills.
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_GRAD2,"Für dieses Fahrzeug brauchst zu 150 Kills!");
    }


    Oder aber du machst das so: (dynamisch)


    #define KILL_CARS 4 // 4 = Anzahl der Autos


    new KillInfo[KILL_CARS][2] = {
    {400,200},// Nach dem Schema Model-ID, Kills
    {401,150},
    {402,125},
    {403,100}
    };


    forward CheckKillCars(playerid,vehicleid);


    Den Scheiß bei if(newstate == PLAYER_STATE_DRIVER) was ihr dir vorgeschlagen habe, wieder entfernen und das einfügen.


    new vehicleid = GetPlayerVehicleID(playerid);
    CheckKillCars(playerid,vehicleid);


    Und dann irgendwo im Script:



    public CheckKillCars(playerid,vehicleid)
    {
    new string[128];
    for(new i = 0; i <= KILL_CARS; i++)
    {
    if(GetVehicleModel(vehicleid) == KillInfo[i][0])
    {
    if(Kills[playerid] < KillInfo[i][1])
    {
    RemovePlayerFromVehicle(playerid);
    format(string,128,"Nicht genügend Kills! Benötigt %d!",KillInfo[i][1]);
    SendClientMessage(playerid,COLOR_GRAD2,string);
    return 1;
    }
    }
    }
    return 1;
    }


    Ist ungetestet, sollte aber funktionern.
    Es ist bei weitem einfacher Autos hinzuzufügen, einfach die #define Variable erhöhen immer und dann das Auto nach dem Schema Model-ID, Kills einfügen.