Beiträge von [GSR]PreJay

    Nutze die Funktion "SpawnPlayer(playerid)", wenn das Passwort korrekt eingegebn wurde. Damit wird das OnPlayerRequestClass umgangen und er spawnt direkt. Setzte aber vorher die Spawn Infos!

    Da es wohl nun keiner wusste, hab' ich es selbst gelöst bekommen. :D


    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    vehicleid = GetPlayerVehicleID(i);
    GetVehicleHealth(vehicleid, health);
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);

    //string = "~b~~h~B: ~w~";
    //strcat(string, VehicleNames[GetVehicleModel(vehicleid)-400], sizeof(string));

    string = "~n~~B~~h~Standort: ~w~";
    strcat(string, GetPlayer3DZone(i), sizeof(string));


    strcat(string, "~n~~B~~h~Zustand: ~g~", sizeof(string));
    fstring = "iiiiiiiiii";
    if(health > 1000.0) strins(fstring, "~r~", 10, sizeof(fstring));
    else if(health < 0.0) strins(fstring, "~r~", 0, sizeof(fstring));
    else strins(fstring, "~r~", floatround(health/100.0), sizeof(fstring));
    strcat(string, fstring, sizeof(string));


    Die Zeile strcat(string, "~n~~B~~h~Standort: ~w~", sizeof(string)); musste string = "~n~~B~~h~Standort: ~w~"; werden. Denn ohne diese Angabe wurde der String immer erweitert, wenn ein neuer User in ein Auto stieg. Wie wir alle wissen, crasht jedoch der SA:MP Client bei mehr als 800 Zeichen in einem String, da er die nicht anzeigen kann. Simples Problem, große Folge.


    Jetzt wisst ihr es für's nächste Mal - und ich auch. :)


    Liebste Grüße,
    PreJay.

    Ich bin auch Scripting Anfänger aber ich hätte jetzt so probiert? ?(


    dcmd_status1(playerid, params[]) {
    if(if(IstSpielerInFraktion == 1) {
    if(GetPlayerVehicleID(playerid) == BFLS[0]) {
    SendClientMessage(playerid, COLOR_RED, "ELW meldet Status 1: Frei auf Funk.");
    }
    else if(GetPlayerVehicleID(playerid) == BFLS[1]) {
    SendClientMessage(playerid, COLOR_RED, "HLF 1 meldet Status 1: Frei auf Funk.");
    }
    }
    }

    Nach ausführlichen Tests kam ich zum Entschluss, dass es an dieser Codezeile scheitert.


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInAnyVehicle(playerid) && !IsBicycle(GetPlayerVehicleID(playerid)))
    {
    TextDrawShowForPlayer(playerid, SpeedoText[playerid]); //HIER CRASHT SAMP!!
    new vehicleid = GetPlayerVehicleID(playerid);
    if(VehicleSecurity[vehicleid] == 1)
    {
    ToggleAlarm(vehicleid, VEHICLE_PARAMS_ON);
    SetTimerEx("StopAlarm", ALARM_TIME, false, "d", vehicleid);
    }
    }
    else
    {
    TextDrawHideForPlayer(playerid, SpeedoText[playerid]);
    }
    new vehicleid = GetPlayerVehicleID(playerid);
    new id = GetVehicleID(vehicleid);
    if(IsValidVehicle(id))
    {
    if(VehicleCreated[id] == VEHICLE_DEALERSHIP)
    {
    SetPVarInt(playerid, "DialogValue1", id);
    ShowDialog(playerid, DIALOG_VEHICLE_BUY);
    return 1;
    }
    }
    if(IsBicycle(vehicleid))
    {
    ToggleEngine(vehicleid, VEHICLE_PARAMS_ON);
    }
    if(Fuel[vehicleid] <= 0)
    {
    ToggleEngine(vehicleid, VEHICLE_PARAMS_OFF);
    }
    TankLeerCheck = SetTimerEx("TankLeer", 5000, true, "i", vehicleid);
    }
    return 1;
    }


    Dazu interessiert bestimmt noch das:
    public Speedometer()
    {
    new vehicleid, Float:health;
    new engine, lights, alarm, doors, bonnet, boot, objective;
    new fstring[32], string[512];


    for(new i=0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) && IsPlayerInAnyVehicle(i))
    {
    vehicleid = GetPlayerVehicleID(i);
    GetVehicleHealth(vehicleid, health);
    GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);

    //string = "~b~~h~B: ~w~";
    //strcat(string, VehicleNames[GetVehicleModel(vehicleid)-400], sizeof(string));

    strcat(string, "~n~~B~~h~Standort: ~w~", sizeof(string));
    strcat(string, GetPlayer3DZone(i), sizeof(string));


    strcat(string, "~n~~B~~h~Zustand: ~g~", sizeof(string));
    fstring = "iiiiiiiiii";
    if(health > 1000.0) strins(fstring, "~r~", 10, sizeof(fstring));
    else if(health < 0.0) strins(fstring, "~r~", 0, sizeof(fstring));
    else strins(fstring, "~r~", floatround(health/100.0), sizeof(fstring));
    strcat(string, fstring, sizeof(string));

    strcat(string, " ~B~~h~Treibstoff: ~g~", sizeof(string));
    fstring = "iiiiiiiiii";
    if(Fuel[vehicleid] > 100.0) strins(fstring, "~r~", 10, sizeof(fstring));
    else if(Fuel[vehicleid] < 0.0) strins(fstring, "~r~", 0, sizeof(fstring));
    else strins(fstring, "~r~", floatround(Fuel[vehicleid]/10.0), sizeof(fstring));
    strcat(string, fstring, sizeof(string));

    strcat(string, " ~B~~h~", sizeof(string));
    if(GetPVarInt(i, "Speedo")) format(fstring,sizeof(fstring),"Km/h: ~w~%d", GetPlayerSpeed(i, false));
    else format(fstring,sizeof(fstring),"Km/h: ~w~%d", GetPlayerSpeed(i, true));
    strcat(string, fstring, sizeof(string));

    strcat(string, "~n~~B~~h~Motor: ", sizeof(string));
    if(engine == 1) strcat(string, "~g~An", sizeof(string));
    else strcat(string, "~r~Aus", sizeof(string));

    strcat(string, " ~B~~h~Alarm: ", sizeof(string));
    if(VehicleSecurity[vehicleid] == 1) strcat(string, "~g~Ein", sizeof(string));
    else strcat(string, "~r~Aus", sizeof(string));

    strcat(string, " ~B~~h~Verriegelung: ", sizeof(string));
    if(doors == 1) strcat(string, "~r~aktiviert", sizeof(string));
    else strcat(string, "~g~deaktiviert", sizeof(string));

    TextDrawSetString(SpeedoText[i], string);
    }
    }
    }

    public OnPlayerConnect(playerid)
    {
    RefuelTime[playerid] = 0;
    TrackCar[playerid] = 0;

    SpeedoText[playerid] = TextDrawCreate(180.000, 362.000," ");
    TextDrawAlignment(SpeedoText[playerid], 1);
    TextDrawFont(SpeedoText[playerid],2);
    TextDrawLetterSize(SpeedoText[playerid], 0.310, 1.400);
    TextDrawSetShadow(SpeedoText[playerid],0);
    //TextDrawUseBox(SpeedoText[playerid], 1);
    TextDrawBoxColor(SpeedoText[playerid], 0x99);
    TextDrawTextSize(SpeedoText[playerid], 520.000, 0.000);

    return 1;
    }


    Ich hoffe, euch verschafft das einen Überblick. Ich habe einfach keine Idee, was falsch ist. :/


    EDIT: Nein, keine Timer mit GetPlayerState... -.-

    Hi,


    mal wieder ein hübsches Problem. Wenn ich mit 2 Personen auf meinem Server bin, kann die ID 0 (zuerst gejointe Person) ohne Probleme Autos fahren etc.
    ID 1 jedoch, die zuletzt gejointe Person, braucht nur in ein Fahrzeug einzusteigen und das GTA crasht bei dem Spieler. Dem Server hat das nichts an aber das ist ja doch etwas unpraktisch für die Spieler. :D
    Im Serverlog steht auch nur Join und Part, nichts auffälliges.
    Welche Codeschnipsel braucht ihr?


    Liebe Grüße.

    Hi,


    ich hätte folgende Frage: Ich möchte die Maximale Anzahl an Autos, die ein User haben kann, aus der .ini des Users auslesen und je nach Premium Level definieren im Filterscript.
    Jetzt war meine erste Idee so:
    public MaxAnzahlAutos(playerid) {
    new string[128];
    format(string, 35, Player_File, GetName(playerid));

    if(P_Data[playerid][VIP] == 0) {
    #define MAX_PLAYER_VEHICLES 1
    }
    else if(P_Data[playerid][VIP] == 1) {
    #define MAX_PLAYER_VEHICLES 2
    }
    else if(P_Data[playerid][VIP] == 2) {
    #define MAX_PLAYER_VEHICLES 4
    }
    else if(P_Data[playerid][VIP] == 3) {
    #define MAX_PLAYER_VEHICLES 8
    }
    }


    Jedoch habe ich überlegt, wie ich diese Methode aufrufen könnte, um sicherzustellen, dass das auch richtig erkannt wird. Ich dachte an einen Timer im GameModeInit? Würde das funktionieren? Und vorallem: Funktioniert die Idee überhaupt, so wie ich denke?


    Ich hoffe, ihr könnt mir da nochmal helfen. :love:


    Liebe Grüße.

    Dankeschön, funktioniert jetzt alles.


    Könnte ich noch kurz eine Erklärung haben, warum das jetzt das Problem löst?
    War es jetzt nur wichtig, dass die playerid mit übermittelt wird, damit das Fenster dem richtigen Spieler angezeigt wird?