Beiträge von Red_Romeo

    Wo liegt denn genau das Problem ?
    Könntest du es vielleicht mal genauer beschreiben ?


    Ansonsten probier dass mal, also bei mir Funktionierts.

    //So machst du es ja anscheinend oben, bei OnPlayerCommandText..
    new cmd[30], params[128];
    sscanf(cmdtext, "ss", cmd, params);


    //Ohne Höhenangabe (Z)
    if(strcmp("/setmarker",cmd,true)==0)
    {
    new Float:x, Float:y;
    if(sscanf(params,"ff",x,y)) return SendClientMessage(playerid,COLOR_GREY,"/setmarker x y ");
    SetPlayerCheckpoint(playerid, x,y,0,3);
    SendClientMessage(playerid,COLOR_BLUE,"Marker gesetzt");
    return 1;
    }


    //Mit Höhenangabe (Z)
    if(strcmp("/setmarker",cmd,true)==0)
    {
    new Float:x, Float:y, Float:z;
    if(sscanf(params,"fff",x,y,z)) return SendClientMessage(playerid,COLOR_GREY,"/setmarker x y z");
    SetPlayerCheckpoint(playerid, x,y,z,3);
    SendClientMessage(playerid,COLOR_BLUE,"Marker gesetzt");
    return 1;
    }

    Hey, ich wollte mal wieder eine Runde samp spielen, jedoch habe ich letztens auf Windows 10 geupgraded und jetzt will das Spiel nicht mehr ganz so wie ich will.


    Mein Problem:
    Meine Maus wird nicht mehr richtig dargestellt, sowohl im Dialog-Menüs als auch im Chat bleibt der Mauszeiger immer an einer Stelle stehen (nur optisch), funktionsmäßig funktioniert jedoch alles.
    Dadurch habe ich das Problem, das ich nicht sehe wo sich meine Maus derzeit befindet, und ich immer ein wenig ausprobieren muss, bis ich aufs richtige Feld klicke.


    Meine Ansätze:

    • GTA neuinstalliert -> Fehler besteht weiterhin
    • samp neuistalliert -> Fehler besteht weiterhin
    • User Files gelöscht -> Fehler besteht weiterhin
    • mousefix.asi -> Fehler besteht weiterhin
    • samp_debug -> Fehler besteht dort auch
    • kompatiblitätsmodus auf win 98/Me -> Fehler besteht weiterhin


    Im Esc-Modus funktioniert die Maus übrigens einwandfrei, dort wird die Maus richtig dargestellt.
    Evtl. hat ja schon mal jemand das Problem gehabt, oder hat einen Lösungsvorschlag und kann mir weiterhelfen.


    //edit
    Nach dem ich schon kurz davor war, das Spiel mal in einer Virtuellen Maschine zu testen,
    habe ich herausgefunden, dass alles perfekt im Fenstermodus klappt.
    Vielleicht kann mir ja jetzt einer weiterhelfen.


    Mfg, Red_Romeo

    Super :)


    Ich habe grade noch gesehen, das du beim speichern und laden "VehicleID2" hinzugefügt hast, das brauchst du nicht, die Zeilen kannst du wieder löschen.

    In deiner Ladefunktion musst du es so schreiben:
    FactionCars[fc][fvid] = CreateVehicle(...);


    //edit
    stock LoadCar()
    {
    new Spielerdatei[64];
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    format(Spielerdatei,sizeof(Spielerdatei),"/FraktionAutos/%d.txt",fc);
    FactionCars[fc][fvehid] = dini_Int(Spielerdatei,"VehicleID");
    FactionCars[fc][fvid] = dini_Int(Spielerdatei,"VehicleID2");
    FactionCars[fc][fcolor1] = dini_Int(Spielerdatei,"VehicleColour1");
    FactionCars[fc][fcolor2] = dini_Int(Spielerdatei,"VehicleColour2");
    FactionCars[fc][xpos] = dini_Float(Spielerdatei,"VehicleX");
    FactionCars[fc][ypos] = dini_Float(Spielerdatei,"VehicleY");
    FactionCars[fc][zpos] = dini_Float(Spielerdatei,"VehicleZ");
    FactionCars[fc][apos] = dini_Float(Spielerdatei,"VehicleA");
    format(FactionCars[fc][fplate], 25, dini_Get(Spielerdatei,"Numberplate"));
    FactionCars[fc][ffrak] = dini_Int(Spielerdatei,"FrakID");
    FactionCars[fc][fcarid] = dini_Int(Spielerdatei,"fcarid");
    FactionCars[fc][fvid] = CreateVehicle(FactionCars[fc][fvehid],FactionCars[fc][xpos],FactionCars[fc][ypos],FactionCars[fc][zpos],FactionCars[fc][apos],FactionCars[fc][fcolor1],FactionCars[fc][fcolor2],-1);
    SetVehicleNumberPlate(FactionCars[fc][fvid],FactionCars[fc][fplate]);
    }
    return 1;
    }

    Ja, weil er ja auch noch abfragt ob er im Fahrzeug ist. :wacko:


    Machs wie folgt:


    Füge zu deinem FactionCars enum fvid hinzu.


    und schreibs so:


    ocmd:fpark(playerid,params[])
    {
    new Float:fxpos,Float:fypos,Float:fzpos,Float:fapos,vehicleid = GetPlayerVehicleID(playerid);
    if(!IsPlayerConnected(playerid))return 1;
    if(!IsPlayerAdminLevel(playerid, 3))return SendClientMessage(playerid, -1, "Du bist kein Admin");
    if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,Grau,"Bitte logge dich zuerst ein.");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Grau,"Du sitzt in keim Fahrzeug.");
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    if(FactionCars[fc][fvid] < 1)continue;
    if(!IsPlayerInVehicle(playerid, FactionCars[fc][fvid]))continue;
    if( GetPVarInt(playerid,"Fraktion") != FactionCars[fc][ffrak])return SendClientMessage(playerid,Grau,"Dieses Fahrzeug gehört nicht deiner Fraktion.");
    //Leaderabfrage ???
    GetVehiclePos(vehicleid,fxpos,fypos,fzpos);
    GetVehicleZAngle(vehicleid,fapos);
    FactionCars[fc][xpos] = fxpos;
    FactionCars[fc][ypos] = fypos;
    FactionCars[fc][zpos] = fzpos;
    FactionCars[fc][apos] = fapos;
    SaveCar();
    SendClientMessage(playerid,Grün,"Fahrzeug geparkt.");
    return 1;
    }
    SendClientMessage(playerid,Grau,"Du sitzt nicht in einem Fraktionsfahrzeug.");
    return 1;
    }


    ocmd:efa(playerid,params[])
    {
    new str[128],Spielerdatei[64],frakname[25],vID,color1,color2,frakt,Float:fxpos,Float:fypos,Float:fzpos,Float:fapos,spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid,spielername,sizeof(spielername));
    if(IsPlayerConnected(playerid))
    if(IsPlayerAdminLevel(playerid, 3))
    {
    if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,Grau,"Bitte logge dich zuerst ein.");
    if(sscanf(params,"dddd",vID,color1,color2,frakt))return SendClientMessage(playerid,Grau,"Benutze: /efa [VehicleID] [Farbe 1] [Farbe 2] [Fraktion]");
    if(frakt < 1 || frakt > 6)return SendClientMessage(playerid,Grau,"Diese Fraktion existiert nicht! (1-6)");
    if(color1 < 0 || color1 > 255)return SendClientMessage(playerid,Grau,"Diese Farb ID existiert nicht! (0-255)");
    if(color2 < 0 || color2 > 255)return SendClientMessage(playerid,Grau,"Diese Farb ID existiert nicht! (0-255)");
    if(vID < 400 || vID > 611)return SendClientMessage(playerid,Grau,"Diese Fahrzeug ID existiert nicht! (400-611)");
    if(frakt == 1) { frakname = "RussenMafia"; }
    else if(frakt == 2) { frakname = "LVPD"; }
    else if(frakt == 3) { frakname = "Triaden"; }
    else if(frakt == 4) { frakname = "CNNNews"; }
    else if(frakt == 5) { frakname = "Hitman"; }
    else if(frakt == 6) { frakname = "Sanitäter"; }
    else if(frakt == 6) { frakname = "O-Amt"; }
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    if(FactionCars[fc][fcarid] != 0) continue;
    FactionCars[fc][fcarid] = 1 + random(10000000);
    GetPlayerPos(playerid,fxpos,fypos,fzpos); GetPlayerFacingAngle(playerid,fapos);
    format(Spielerdatei,sizeof(Spielerdatei),"/FraktionAutos/%d.txt",fc);
    dini_Create(Spielerdatei);
    FactionCars[fc][fvehid] = vID;
    FactionCars[fc][fcolor1] = color1;
    FactionCars[fc][fcolor2] = color2;
    FactionCars[fc][xpos] = fxpos;
    FactionCars[fc][ypos] = fypos;
    FactionCars[fc][zpos] = fzpos;
    FactionCars[fc][apos] = fapos;
    FactionCars[fc][ffrak] = frakt;
    FactionCars[fc][fvid] = CreateVehicle(vID,fxpos,fypos,fzpos,fapos,color1,color2,-1);
    format(FactionCars[fc][fplate],25,frakname);
    SetVehicleNumberPlate(FactionCars[fc][fvid],FactionCars[fc][fplate]);
    PutPlayerInVehicle(playerid,FactionCars[fc][fvid],0);
    SaveCar();
    SendClientMessage(playerid,Grün,"Fahrzeug erfolgreich erstellt.");
    SendClientMessage(playerid,Weiss,"Vergiss es nicht mit /fpark zu parken.");
    format(str,sizeof(str),"[AdmCmd]: %s %s hat ein Fahrzeug (%d) für die Fraktion %s erstellt.",Adminrang(playerid),spielername,vID,frakname);
    printf("%s",str);
    return 1;
    }
    }
    return 1;
    }


    Deine Lade Funktion musst du dann auch noch anpassen und die vid abspeichern.


    //edit
    Ein Simikolen hinzugefügt (hatte ich vergessen)
    PutPlayerInVehicle geändert (sollte zuvor nicht geklappt haben)
    //edit2
    else if(frakt == 6) { frakname = "Sanitäter"; }
    else if(frakt == 6) { frakname = "O-Amt"; }


    frakt 6 ist Oamt und Sanitäter ?^^

    Da haben wir doch den fehler :)
    Du speicherst in fvehid die modelid, ich dachte das du da die vehicleid (halb vID) drinne abspeicherst.


    Änder folgendes, dann sollte es klappen.
    if(FactionCars[fc][fvehid] < 1)continue;
    zu
    if(FactionCars[fc][fvehid] < 400 || 611 < FactionCars[fc][fvehid])continue;

    Hast dus ausprobiert ? Funktionierts ?


    //edit
    Machs mal so und schick mal die Log.


    ocmd:fpark(playerid,params[])
    {
    new Float:fxpos,Float:fypos,Float:fzpos,Float:fapos,vehicleid = GetPlayerVehicleID(playerid);
    if(!IsPlayerConnected(playerid))return 1;
    if(!IsPlayerAdminLevel(playerid, 3))return SendClientMessage(playerid, -1, "Du bist kein Admin");
    if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,Grau,"Bitte logge dich zuerst ein.");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Grau,"Du sitzt in keim Fahrzeug.");
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    printf("count: %i | vehicleid: %i | spieler_vehicleid: %i ", fc, FactionCars[fc][fvehid], vehicleid);
    if(FactionCars[fc][fvehid] < 1)continue;
    if(!IsPlayerInVehicle(playerid, FactionCars[fc][fvehid]))continue;
    if( GetPVarInt(playerid,"Fraktion") != FactionCars[fc][ffrak])return SendClientMessage(playerid,Grau,"Dieses Fahrzeug gehört nicht deiner Fraktion.");
    //Leaderabfrage ???
    GetVehiclePos(vehicleid,fxpos,fypos,fzpos);
    GetVehicleZAngle(vehicleid,fapos);
    FactionCars[fc][xpos] = fxpos;
    FactionCars[fc][ypos] = fypos;
    FactionCars[fc][zpos] = fzpos;
    FactionCars[fc][apos] = fapos;
    SaveCar();
    SendClientMessage(playerid,Grün,"Fahrzeug geparkt.");
    return 1;
    }
    SendClientMessage(playerid,Grau,"Du sitzt nicht in einem Fraktionsfahrzeug.");
    return 1;
    }

    Probiers mal so:


    ocmd:fpark(playerid,params[])
    {
    new Float:fxpos,Float:fypos,Float:fzpos,Float:fapos,vehicleid = GetPlayerVehicleID(playerid);
    //if(IsPlayerConnected(playerid)) Sinn ?
    if(!IsPlayerConnected(playerid))return 1;//<- Wenn dann so
    //if(IsPlayerAdminLevel(playerid, 3))Sinn ?
    if(!IsPlayerAdminLevel(playerid, 3))return SendClientMessage(playerid, -1, "Du bist kein Admin");//<- Wenn dann so
    if(GetPVarInt(playerid,"loggedin") == 0)return SendClientMessage(playerid,Grau,"Bitte logge dich zuerst ein.");
    if(!IsPlayerInAnyVehicle(playerid))return SendClientMessage(playerid,Grau,"Du sitzt in keim Fahrzeug.");
    for(new fc;fc<sizeof(FactionCars);fc++)
    {
    if(FactionCars[fc][fvehid] < 1)continue;
    if(!IsPlayerInVehicle(playerid, FactionCars[fc][fvehid]))continue;
    if( GetPVarInt(playerid,"Fraktion") != FactionCars[fc][ffrak])return SendClientMessage(playerid,Grau,"Dieses Fahrzeug gehört nicht deiner Fraktion.");
    //Leaderabfrage ???
    GetVehiclePos(vehicleid,fxpos,fypos,fzpos);
    GetVehicleZAngle(vehicleid,fapos);
    FactionCars[fc][xpos] = fxpos;
    FactionCars[fc][ypos] = fypos;
    FactionCars[fc][zpos] = fzpos;
    FactionCars[fc][apos] = fapos;
    SaveCar();//Speicherst du damit alle Fahrzeuge, oder warum gibst du keine ID an ?
    SendClientMessage(playerid,Grün,"Fahrzeug geparkt.");
    return 1;
    }
    SendClientMessage(playerid,Grau,"Du sitzt nicht in einem Fraktionsfahrzeug.");
    return 1;
    }

    Hätte jetzt gehofft das du das selbst schaffen könntest :)


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_BAN)
    {
    if(!response)return 1;
    if(!IsNumeric(inputtext))return SendClientMessage(playerid, -1, "Ungülte Spieler ID");
    new pID = strval(inputtext);
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, -1, "Spieler ist nicht Online.");

    if(listitem == 0)//AccountBan
    {

    }
    else if(listitem == 1)//IPBan
    {

    }
    else if(listitem == 2)//TimeBan
    {

    }
    }
    return 1;
    }

    @Firefan: Seit wann gibt es die Funktion strint ? Ich glaube du meinst wohl ehr strval ;)



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]){
    if(dialogid == DIALOG_BAN)
    {
    if(!response)return 1;
    if(!IsNumeric(inputtext))return SendClientMessage(playerid, -1, "Ungülte Spieler ID");
    new pID = strval(inputtext);
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, -1, "Spieler ist nicht Online.");
    //Dein Code..
    //Ban(pID); ?^^
    }
    return 1;
    }
    //Irgentwo im Script
    stock IsNumeric(value[])
    {
    new cpoint;
    while((value[cpoint] >= '0' && value[cpoint] <= '9') || (cpoint == 0 && value[cpoint] == '-'))cpoint++;
    return (value[0] && strlen(value) == cpoint);
    }

    Dein zweiter Versuch war schon richtig, das es da rein muss.
    Versuchs einfach mal ganz unten in der Funktion rein zu kopieren oder wenn du mit switch und case arbeitest passe es wenn es nicht geht ggf. an. Sprich case DIALOG_GUTSCHEIN:

    Habe es grade selbst getestet :)
    rAktive und rPickup habe ich aus dem Enum genommen und dafür 2 Globale Variablen gemacht.


    new RepairPickup, AktiveRepairPickup = -1;
    public UpdateRepair()
    {
    new NewAktiveRepairPickup, count = sizeof(rInfo);
    if(count <= 1)return 0;
    DestroyPickup(RepairPickup);
    do NewAktiveRepairPickup = random(count);
    while(AktiveRepairPickup == NewAktiveRepairPickup);
    AktiveRepairPickup = NewAktiveRepairPickup;
    RepairPickup = CreatePickup(1248,1,rInfo[AktiveRepairPickup][rX],rInfo[AktiveRepairPickup][rY],rInfo[AktiveRepairPickup][rZ]);
    return 1;
    }


    //edit
    Ich habe grade auch nochmal deinen Code oben ausprobiert, der klappt auch ^^
    Startest du denn überhaupt den Timer ?
    public OnGameModeInit()
    {
    SetTimer("UpdateRepair", 900000, true);//15 Minuten
    return 1;
    }

    Irgentwie hast du meinen letzten Beitrag nicht gelesen. Dort ist ein Pastebin drinne welcher dir die Koordinaten gibt, aber egal^^


    stock SetCameraBeforPlayer(playerid)
    {
    new Float:cam_x,Float:cam_y,Float:cam_z, Float:cam_a;
    GetPlayerPos(playerid,cam_x,cam_y,cam_z);
    SetPlayerCameraPos(playerid, cam_x, cam_y, cam_z);
    GetPlayerFacingAngle(playerid, cam_a);
    cam_x += (10 * floatsin(-cam_a, degrees));
    cam_y += (10 * floatcos(-cam_a, degrees));
    SetPlayerCameraLookAt(playerid, cam_x, cam_y, cam_z);
    return 1;
    }

    Du gehst auf den Link (der oben in deinem Bild ist) drückst auf den Reiter SQL und gibst den Befehl dort ein, dann siehst du die Auswirkung des Befehls.


    //e Oder was verstehst du genau nicht ?^^

    Jup, Count(*) gibt dir die Anzahl aus, du kannst der Spalte auch noch einen Namen geben indem du es z.B. so schreibst.
    SELECT Count(*) AS FahrzeugAnzahl FROM fracvehicles WHERE FracID = '???' <- Hier würde dann die Spalte 'FahrzeugAnzahl' heißen.
    Kannst es ja einfach mal in phpMyAdmin ausprobieren.

    Hey, mit folgendem Befehl kannst du die 'Anzahl' ausgeben.
    SELECT Count(*) FROM fracvehicles WHERE FracID = '???'


    Aber ich glaube es wäre einfacher wenn man es über eine Schleife regeln würde und dann halb Abfragt ob das Fahrzeug zu Fraktion gehört und count einfach ein höher setzt.

    Du musst den Pickup Type 14 benutzen und das Pickup neu erstellen, da die anderen Pickup Type's nicht im Fahrzeug aufgerufen werden bzw. das Callback nicht aufrufen wird.
    Wenn dir das zu dumm ist mit dem neu erstellen gibt es auch noch andere Methoden, wie einen Timerzu erstellen oder mit OnPlayerKeyStateChangeund einer Tastezu arbeiten.