Beiträge von apoolecu

    Hey,


    eine funktion einbauen die, die Sekunden Speichert und ob der Player im Knast ist? Wenn der Spieler auf den Server kommt einfach wieder den Timer aktivieren mit den gespeicherten Sekunden?

    SAMP Wiki? Schon mal die Funktion SetTimerEx angesehen? True/1 steht für wiederholen setzt das mal auf false ;) somit startest du immer mehr timer das erklärt auch die Zahlen ;)


    MfG: Apoolecu

    So


    new Variable[MAX_PLAYERS];
    forward RepairVehicle(playerid);


    if(strcmp(cmdtext,"/repair",true)==0)
    {
    if(IsPlayerInAnyVehicle(playerid) && Variable[playerid] == 0)
    {
    SendClientMessage(playerid,Farbe,"Du bist in einem Auto, es wird nun Repariert.");
    SetVehicleHealth(GetPlayerVehicleID(playerid),100.0);
    RepairVehicle(GetPlayerVehicleID(playerid));
    SetTimerEx("RepairVehicle", 1000*5,1, "d", playerid);
    Variable[playerid] = 1;
    }
    else if(Variable[playerid] == 1)
    {
    SetTimerEx("RepairVehicle", 1000*5,0, "d", playerid);
    SendClientMessage(playerid,Farbe,"dein Auto wird nicht mehr Repariert!");
    }
    }
    return 1;
    }


    public RepairVehicle(playerid)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    SetVehicleHealth(GetPlayerVehicleID(playerid),100.0);
    RepairVehicle(GetPlayerVehicleID(playerid));
    }
    return 1;
    }



    EDIT: Ausgebessert

    ja die For-Schleife raus! Damit gehst du jeden Spieler durch, nehme die Funktion SetTimerEx (http://wiki.sa-mp.com/wiki/SetTimerEx) die tust du dann immer wiederholen ca. alle 5 sekunden (musst in Milisekunden umrechnen) und in der Funktion gibst du vor das das Fahrzeug von dem User (man beachte SetTimerEx ist user bezogen!) reparier wird.


    Wenn du willst das du mit /repair das wieder beenden tust baust du noch eine Variable ein, die bei dem ersten /repair auf 1 gesetzt wird und bei zweiten mal auf 0. Du darfst aber nicht die Abfragen vergessen ob du Variable auf 0 oder 1 ist!

    Wie tust du sie denn wieder verschließen? via CMD? Weil ich habe jetzt das jetzt so verstanden das sie nur bei der Public verschlossen werden, und die wird nur einmal also beim Server start nach meinem Wissen abgerufen...

    Hey habe den nächsten Fehler und zwar wird dies mal der Dialog irgendwie nicht erstellt, Definiert ist er oben im Script ;)


    if(dialogid == DIALOG_GGangC)
    {
    if(response == 0)
    {}
    if(response == 1)
    {
    if(listitem == 0) // Grün
    {
    Gang[Gangerstellt][gColor] = 0x339933FF;
    ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
    }
    if(listitem == 1) // Rot
    {
    Gang[Gangerstellt][gColor] = 0xCE000000;
    ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
    }
    if(listitem == 2) // Blau
    {
    Gang[Gangerstellt][gColor] = 0x0000F600;
    ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
    }
    if(listitem == 3) // Schwarz
    {
    Gang[Gangerstellt][gColor] = 0x000000;
    ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
    }
    if(listitem == 4) // Gelb
    {
    Gang[Gangerstellt][gColor] = 0xFFDE00FF;
    ShowPlayerDialog(playerid,DIALOG_GGangW1,DIALOG_STYLE_LIST,"Gang System: Gang erstellen","Schlagring\nGolfschläger\nSchlagstock\nMesser\nBaseballschläger\nSchaufel\nBrechstange\nKantana","Weiter","");
    }
    }
    }


    maddin also die Funktion funktioniert jetzt schon ;)


    EDIT: Erledigt ;)

    Hey


    wisst ihr wo der Fehler ist?


    public IsPlayerInGangZone(playerid)
    {
    for(new t = 1; t < MAX_GEBIETE; t++)
    {
    new string[75];
    format(string, sizeof(string), "SAP/GangSystem/Zonen/%d.gebiet", t);
    if(fexist(string))
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    if ((x > Gebiete[t][gminX] && x < Gebiete[t][gmaxX]) && (y > Gebiete[t][gminY] && y < Gebiete[t][gmaxY])){return 1;}
    else{return 0;}
    }
    }}


    Zeile (4362) : warning 209: function "IsPlayerInGangZone" should return a value



    ich finde den wirklich nicht :o


    MFG: Apoolecu

    Hallo,


    via CMD wird bei mir eine GangZone erstellt problem ist nur das die GangZone gar nicht erscheint.
    Bei Printf(unten im Code) werden die Werte aber richtig herraus geben. An was kann es liegen?


    if(strcmp(cmd,"/gebietmin", true) == 0)
    {
    if(GebietZone[playerid] == 1)
    {
    new Float:z;
    Gebieterstellt ++;
    GetPlayerPos(playerid,gangminX,gangminY,z);
    ShowPlayerDialog(playerid,DIALOG_GZonenEmi,DIALOG_STYLE_MSGBOX,"Gang System: Zone erstellen","Nun gehe an das untere rechte Ende der Zone.(/gebietmax)","Ok","");
    return 1;
    }
    }
    if(strcmp(cmd,"/gebietmax", true) == 0)
    {
    if(GebietZone[playerid] == 1)
    {
    new Float:z;
    GetPlayerPos(playerid,gangmaxX,gangmaxY,z);
    ShowPlayerDialog(playerid,DIALOG_GZonenEmi,DIALOG_STYLE_MSGBOX,"Gang System: Zone erstellen","Zone wurde erstellt","Ok","");
    Gebiete[Gebieterstellt][gID] = Gebieterstellt;
    GangZoneCreate(gangminX,gangminY,gangmaxX,gangmaxY);
    Gebiete[Gebieterstellt][gminX] = gangminX;
    Gebiete[Gebieterstellt][gminY] = gangminY;
    Gebiete[Gebieterstellt][gmaxX] = gangmaxX;
    Gebiete[Gebieterstellt][gmaxY] = gangmaxY;
    Gebiete[Gebieterstellt][gGang] = 0;
    GangZoneShowForAll(Gebiete[Gebieterstellt][gID],COLOR_WHITE);
    printf("Gebieterstellt: %d ID, Float X: %.1f Float Y: %.1f Float X: %.1f Float Y: %.1f",Gebiete[Gebieterstellt][gID],Gebiete[Gebieterstellt][gminX],Gebiete[Gebieterstellt][gminY],Gebiete[Gebieterstellt][gmaxX],Gebiete[Gebieterstellt][gmaxY]);
    SpeicherGebiet(Gebieterstellt);
    GebietZone[playerid] = 0;
    return 1;
    }
    }



    MfG: Apoolecu

    Hallo,


    in meinem tacho Script sollte normalerweise der Zustand in I I I I dargestellt werden das wird es auch aber irgendwie nur in rot sprich der niedrigste wert wird wieder gegeben :o


    public TachoTimer()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    new Float:Entfernung, Float:Geschwindigkeit;// Die definierten Floats die mit den Werten gefüttert werden
    GetVehiclePos(GetPlayerVehicleID(i), X1[i], Y1[i], Z1[i]); //Erste Koordinate wird genommen
    Entfernung = floatsqroot(floatpower(floatabs(floatsub(X1[i], X2[i])), 2)+floatpower(floatabs(floatsub(Y1[i], Y2[i])), 2)+floatpower(floatabs(floatsub(Z1[i], Z2[i])), 2)); //Berechnung der Entfernung
    CarInfo[GetPlayerVehicleID(i)][aMeter] += Entfernung;
    MeterCar[i] +=Entfernung;
    Geschwindigkeit = (Entfernung / (TACHOTIMER/1000)) * 3.6; //Meter/Sekunde in Kilometer/Stunde
    new Tachostring[125], Float:CarHealth;
    GetVehicleHealth(GetPlayerVehicleID(i), CarHealth);
    CarInfo[GetPlayerVehicleID(i)][aZustand] = CarHealth;
    if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) >=900.0)
    {
    format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~g~I I I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
    TextDrawSetString(Tacho[i], Tachostring);
    }
    if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) >=750.0)
    {
    format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~r~I~g~I I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
    TextDrawSetString(Tacho[i], Tachostring);
    }
    if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) >=500.0)
    {
    format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~r~I I~g~I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
    TextDrawSetString(Tacho[i], Tachostring);
    }
    if(GetVehicleHealth(GetPlayerVehicleID(i), CarHealth) <=499.0)
    {
    format(Tachostring, sizeof(Tachostring), "Km/h: %d~n~Benzin: %.1fL/%.1fL~n~Besitzer: %s~n~KM: %.1f~n~Zustand: ~r~I I I", floatround(Geschwindigkeit), CarInfo[GetPlayerVehicleID(i)][aBenzin],CarInfo[GetPlayerVehicleID(i)][aMBenzin],CarInfo[GetPlayerVehicleID(i)][aBesitzer],CarInfo[GetPlayerVehicleID(i)][aMeter]/500);
    TextDrawSetString(Tacho[i], Tachostring);
    }
    GetVehiclePos(GetPlayerVehicleID(i), X2[i], Y2[i], Z2[i]); //Zweite Koordinate wird genommen
    TextDrawShowForPlayer(i, Tacho[i]);
    CarInfo[GetPlayerVehicleID(i)][aKM] = MeterCar[i]/500;
    CheckKM(GetPlayerVehicleID(i),i);
    }
    else if(!IsPlayerInAnyVehicle(i))
    {
    TextDrawHideForPlayer(i, Tacho[i]);
    }
    }
    return 1;
    }