Beiträge von samu

    Habe 64 Bit OS, naja gta hängt sich auf wenn ich auf die Karte gehe, einige treiber gehen nicht mehr ich halte es nich unbedingt für sinnvoll :whistling:

    // GELÖSCHT


    So aktueller Stand:


    public Tacho()
    {
    printf("Timer work ...");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    new statee = GetPlayerState(i);
    if(IsPlayerInAnyVehicle(i) && statee == PLAYER_STATE_DRIVER)
    {
    new car = GetPlayerVehicleID(i);
    new Float:CarHealth;
    GetVehicleHealth(car, CarHealth);
    new string[30];
    if(CarHealth == 1000)
    {
    format(string, sizeof(string),"Zustand: ~g~unbeschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 950 )
    {
    format(string, sizeof(string),"Zustand: ~y~leicht beschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 700 )
    {
    format(string, sizeof(string),"Zustand: ~y~beschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 500 )
    {
    format(string, sizeof(string),"Zustand: ~r~stark beschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 300 )
    {
    format(string, sizeof(string),"Zustand: ~r~Motorschaden");
    TextDrawSetString(canzeige, string);
    }
    if(JobInfo[i][Hjob] == 5 && JobInfo[i][Jobactive] == 1)
    {
    return 1;
    }
    else
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(i, x, y, z);
    CreateExplosion(x, y, z, 12, 3.0);
    TogglePlayerControllable(i, 0);
    GameTextForPlayer(i,"Du bist eingeklemmt!~n~Die ~r~Feuerwehr kann dich befreien.", 4000, 5);
    }
    }
    }
    return 1;
    }


    Ich versteh es einfach nich, hab einen simplen Timer gemacht der bei OnGameModeInit startet, am Anfang ne for schleife rein, aber nie geht das, wenn ich normal playerid verwende gehts, warum funktioniert das nicht ?( :pinch:

    Hi,


    habe Wiki etc. schon durchsucht, aber ich finde nicht die Codes für diese Statusleisten, die z.B. am Anfang wenn SA-Mp läd kommt, die den Ladevorgang anzeigt. Hoffe ihr wisst was ich meine ^^


    Gruß
    samu

    aso, ok jettz versteh ich das Problem ^^


    Wie muss die for schleife dann genau aussehen?


    EDIT: Habe das ganze jetzt umgeschrieben, der Timer Tacho wird bei OnGameModeinit() erstellt:


    public Tacho()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid ++)
    {
    if(IsPlayerConnected(playerid) && IsPlayerInAnyVehicle(playerid))
    {
    new car = GetPlayerVehicleID(playerid);
    new Float:CarHealth;
    GetVehicleHealth(car, CarHealth);
    new string[30];
    if(CarHealth == 1000)
    {
    format(string, sizeof(string),"Zustand: unbeschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 950 )
    {
    format(string, sizeof(string),"Zustand: leicht beschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 700 )
    {
    format(string, sizeof(string),"Zustand: beschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 500 )
    {
    format(string, sizeof(string),"Zustand: stark beschaedigt");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(CarHealth <= 300 )
    {
    format(string, sizeof(string),"Zustand: Motorschaden");
    TextDrawSetString(Tachoanzeige, string);
    }
    if(JobInfo[playerid][Hjob] == 5 && JobInfo[playerid][Jobactive] == 1)
    {
    return 1;
    }
    else
    {
    TogglePlayerControllable(playerid, 0);
    GameTextForPlayer(playerid,"Du bist eingeklemmt!~n~Die ~r~Feuerwehr kann dich befreien.", 4000, 5);
    }
    }
    }
    return 1;
    }


    OnGameModeInit:


    Tachotimer = SetTimer("Tacho", 1000, true);


    Funktionieren tut garnichts, Ig wird kein string an das Textdraw gesendet ;(

    Hi,


    ich habe ein Problem mit einem Timer, und zwar wenn der Spieler in den Wagen einsteigt, startet ein Timer mit Intervall 1 Sekunden der Carhealth überprüft. Wenn die dann unter 300 ist soll der Spieler eingeklemmt sein, also TogglePlayerControllable(playerid, 0). Das Funktioniert soweit auch, nur habe ich folgendes Problem:


    Wenn ich in ein Fahrzeug einsteige, danach wieder raus gehe und ein anderer User steigt ein, dann kommt bei mir die Meldung das ich eingeklemmt wäre, das passiert auch umgekehrt.
    Ich hab alles versucht den TImer zu löschen sobald ich aus dem Fahrzeug austeige:


    Bei OnPlayerStateChange(playerid):


    if(newstate == 2)
    {
    if(CarInfo[carid][tankaktuell] == 0)
    {
    SendClientMessage(playerid, ORANGE, "Der Tank ist leer! Du musst den Pannendienst rufen.");
    SendClientMessage(playerid, ORANGE, "Tippe /exit um wieder auszusteigen!");
    TogglePlayerControllable(playerid, 0);
    }
    else
    {
    Tanktimer = SetTimer("Tankanzeigetimer", 1000, true);
    TextDrawShowForPlayer(playerid, Tankanzeige);
    Tankfunktionstimer = SetTimer("Tankfunktion", 100000, true);
    //Geschwindigkeitstimer = SetTimer("Geschwindigkeitstimer2", 1000, true);
    //TextDrawShowForPlayer(playerid, Geschwindigkeit);
    }
    if(CarInfo[carid][carshealth] <= 300)
    {
    SendClientMessage(playerid, ORANGE, "Dein Wagen hat einen Motorschaden! Du musst den Pannendienst rufen.");
    SendClientMessage(playerid, ORANGE, "Tippe /exit um wieder auszusteigen!");
    TogglePlayerControllable(playerid, 0);
    return 1;
    }
    else
    {
    Tachotimer = SetTimer("Tacho", 1000, true);
    TextDrawShowForPlayer(playerid, Tachoanzeige);
    }
    }


    Dann beim Aussteigen:


    if(newstate == 1)
    {
    TextDrawHideForPlayer(playerid, Tachoanzeige);
    TextDrawHideForPlayer(playerid, Tankanzeige);
    KillTimer(Tachotimer);
    KillTimer(Tanktimer);
    KillTimer(Tankfunktionstimer);;
    }


    Zur Sicherheit habe ich bei OnPlayerExitVehicle das "KillTimer(Tachotimer)" nochmal rein aber das problem tritt immer wieder auf :(
    Hoffe mir kann jemand helfen!


    Gruß samu

    habe jetzt mal zum Test das in den Cmd "/waffen" eingebaut:


    if(strcmp(cmd, "/waffen", true) == 0)
    {
    new weapons[13][2];
    new msg[256];
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
    //zur Kontrolle ob es richtig ausgelesen hat
    if(weapons[i][0] != 0 && weapons[i][1] != 0)
    {
    new waffenname[32];
    GetWeaponName(weapons[i][0],waffenname,sizeof(waffenname));
    format(msg,sizeof(msg),"Du hast eine %s mit %d Schuss", waffenname, weapons[i][1]);
    SendClientMessage(playerid, YELLOW, msg);
    JobInfo[playerid][Waffe] = weapons;
    JobUpdate(playerid);
    }
    }
    return 1;
    }


    Nur dann kommt der Error "must be assigned to an array"
    Die Zeile: JobInfo[playerid][Waffe] = weapons;


    :|

    Hi,


    habe ein Problem mit meinem /login! Wenn ich /login [PW] eingebe werden aus der Userdatei die Koords. geladen und ich spawne auch perfekt da, nur wenn ich dann einmal sterbe muss ich erst SHIFT drücken (Dieser Classauswahl was weiß ich was das ist ^^ und das Samp Logo erscheint dann unten) erst danach spawne ich wie gewohnt am Krankenhaus 8|


    Das habe ich bei RequestClass drin, erst nachdem man eingeloggt ist spawnt man:


    if (fexist(string) && AccountInfo[playerid][Logged] == 0)
    {
    return 0;
    }


    ... und das hier ist bei /login [PW]:


    if (strcmp(cmd, "/login", true) == 0)
    {
    new tmppass[128];
    if(AccountInfo[playerid][Logged] == 1) return SendClientMessage(playerid, RED, "Du bist schon eingeloggt!");
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid, ORANGE, "Benutze: /login [Passwort]");
    new plname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, plname, sizeof(plname));
    format(string, sizeof(string), "/sAccounts/%s.seifadmin", plname);
    if(!fexist(string)) return SendClientMessage(playerid, RED, "Dieser Account ist nicht registriert! /register [Passwort]");
    strmid(tmppass, tmp, 0, strlen(cmdtext), 255);
    SetSpawnInfo(playerid, 0, 0, 1685.529663, -2331.233154, 13.546875, 0.0, 0, -1, -1, -1, -1, -1);
    SpawnPlayer(playerid);
    //KillTimer(Loginspawn)
    OnPlayerLogin(playerid, MD5_Hash(tmppass));
    return 1;
    }
    return 0;
    }


    // In OnPlayerLogin werden dann die Daten aus der Datei geladen und falls Koords. gespeichert sind spawnt man da, nur halt anch dem 1. Kill erscheitn die skinauswahl, danach nich mehr ?(


    Gruß samu

    Hi,


    habe ein Problem mit dem speichern von Waffen. Sobald man mit /job in Dienst geht startet der Timer Weapons(playerid) und sollte die Waffen in strings speichern ...


    public Weapons(playerid)
    {
    GetPlayerWeaponData(playerid, 0, JobInfo[playerid][Weapon1], JobInfo[playerid][Ammo1]);
    GetPlayerWeaponData(playerid, 1, JobInfo[playerid][Weapon2], JobInfo[playerid][Ammo2]);
    GetPlayerWeaponData(playerid, 2, JobInfo[playerid][Weapon3], JobInfo[playerid][Ammo3]);
    GetPlayerWeaponData(playerid, 3, JobInfo[playerid][Weapon4], JobInfo[playerid][Ammo4]);
    GetPlayerWeaponData(playerid, 4, JobInfo[playerid][Weapon5], JobInfo[playerid][Ammo5]);
    GetPlayerWeaponData(playerid, 5, JobInfo[playerid][Weapon6], JobInfo[playerid][Ammo6]);
    GetPlayerWeaponData(playerid, 6, JobInfo[playerid][Weapon7], JobInfo[playerid][Ammo7]);
    GetPlayerWeaponData(playerid, 7, JobInfo[playerid][Weapon8], JobInfo[playerid][Ammo8]);
    GetPlayerWeaponData(playerid, 8, JobInfo[playerid][Weapon9], JobInfo[playerid][Ammo9]);
    GetPlayerWeaponData(playerid, 9, JobInfo[playerid][Weapon10], JobInfo[playerid][Ammo10]);
    JobUpdate(playerid);
    return 1;
    }


    Ich habe mir auch mal per SendClientMessage die Strings auslesen lassen, alle zeigen 0 an obwohl ich die 9 mm Pistole hatte .. :thumbdown:
    hat jmd ne Idee?


    Gruß samu