Beiträge von KleinerTeufel

    Das Script kennt die Variable "v" nicht, du musst ihm erst sagen was denn in der Variable drin stehen soll.


    Du musst ein For-Schleife verwenden, die immer + 1 geht. (LSPDcar[0], LSPDcar[1], LSPDcar[2] usw...)


    for(new v = 0; v < sizeof(LSPDcar); v++)
    {
    SetVehicleNumberPlate(LSPDcar[v], "{FF0005}LS-PD");
    SetVehicleToRespawn(LSPDcar[v]);
    AddVehicleComponent(LSPDcar[v], 1010);
    AddVehicleComponent(LSPDcar[v], 1096);
    }

    Habe es gerade nach dem Absenden gesehen und sofort editiert, das war aber deswegen weil ich am Anfang den forward nur Kick genannt hatte und dann gemerkt habe das ich die net so nennen kann, weil es ja die Function Kick schon gibt.


    Und dann vergessen habe es bei dem Timer auch noch umzubennen :D

    forward KickPlayer(playerid);


    ocmd:kick(playerid, params[])
    {
    new pID, Grund[128], string[128];
    if(sscanf(params, "us", pID, Grund)) return SendClientMessage(playerid, grau, "Benutze: /kick [playerid] [grund]");
    if(GetPVarInt(playerid, "Adminlevel") >= 1)
    {
    if(IsPlayerConnected(pID))
    {
    format(string, sizeof(string), "[AdmCmd]: %s wurde von %s vom Server gekickt. Grund: %s", SpielerName(pID), SpielerName(playerid), Grund);
    SendClientMessageToAll(rot, string);
    SetTimerEx("KickPlayer", 1000, false, "i", pID);
    return 1;
    }
    else
    {
    SendClientMessage(playerid, grau, "Spieler nicht gefunden.");
    return 1;
    }
    }
    SendClientMessage(playerid, Weiss, "Sie sind kein Admin 1");
    return 1;
    }


    public KickPlayer(playerid)
    {
    FreezePlayer(playerid);
    Kick(playerid);
    }

    Das erstellte Fahrzeug definieren:


    SubCar[playerid] = CreateVehicle(...);
    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid = SubCar[playerid])
    {
    if(!IsPlayerAdmin(playerid))
    {
    RemovePlayerFromVehicle(playerid);
    return 1;
    }
    }
    }
    return 1;
    }

    Das liegt daran das du das ShowPlayerDialog in der Schleife jedes mal neu anzeigen lässt und es deswegen jedes mal überschrieben wird.
    Und ich würde dir empfehlen strcat zu benutzen.
    if(listitem==0)
    {
    for(new i=0;i<GetMaxPlayers();i++)
    {
    if(IsPlayerConnected(i) && gPlayerLogged[i] == 1)
    {
    if(Spieler[i][pJob] == 1)
    {
    format(string, sizeof(string), "Farmer %s (ID: %i) (Tel: -)\n", GetName(i), i);
    strcat(str2, string);
    }
    }
    }
    ShowPlayerDialog(playerid, DIALOG_FARMLISTE, DIALOG_STYLE_MSGBOX,COLOR_HEX_ORANGE"Farmer-Liste", str2, "Schließen", "");
    }


    new Engine, Lights, Alarm, Doors, Bonnet, Boot, Objective;
    if(strcmp(cmd, "/carlock", true) == 0)
    {
    new file[50];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(file,50,"/Cars/%s.txt",name);
    if(gPlayerHasCar[playerid] == 1)
    {
    new v, Float:vehx, Float:vehy, Float:vehz;
    v = Vehicle[playerid];
    GetVehiclePos(v, vehx, vehy, vehz);
    if(IsPlayerInRangeOfPoint(playerid, 3.0, vehx, vehy, vehz))
    {
    if(VehicleInfo[playerid][Locked] == 0)
    {
    GetVehicleParamsEx(v, Engine, Lights, Alarm, Doors, Bonnet, Boot, Objective);
    SetVehicleParamsEx(v, Engine, Lights, Alarm, VEHICLE_PARAMS_ON, Bonnet, Boot, Objective);
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    GameTextForPlayer(playerid, "~r~Fahrzeug abgeschlossen!", 3000, 6);
    dini_IntSet(file,"Locked",1);
    VehicleInfo[playerid][Locked] = 1;
    gVehLocked[v] = 1;
    return 1;
    }
    if(VehicleInfo[playerid][Locked] == 1)
    {
    GetVehicleParamsEx(v, Engine, Lights, Alarm, Doors, Bonnet, Boot, Objective);
    SetVehicleParamsEx(v, Engine, Lights, Alarm, VEHICLE_PARAMS_OFF, Bonnet, Boot, Objective);
    PlayerPlaySound(playerid, 1145, 0.0, 0.0, 0.0);
    GameTextForPlayer(playerid, "~g~Fahrzeug aufgeschlossen!", 3000, 6);
    dini_IntSet(file,"Locked",0);
    VehicleInfo[playerid][Locked] = 0;
    gVehLocked[v] = 0;
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAU, "Du bist nicht in der Nähe deines Fahrzeuges.");
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid, COLOR_GRAU, "Du besitzt kein Fahrzeug.");
    }
    return 1;
    }

    Ich weiß nicht ob es ein Thema hier im Forum gibt. Aber ich kenne einen Youtuber der vor laufender Kamera ein super funktionierendes Autohaus scriptet und sogar noch erklärt wie es funktioniert.
    Und wenn du mal das Forum ein bisschen durchsuchst findest du viele Theards wo einiges anderes erklärt ist.
    Zum Beispiel dieses Tutorial von Maddin was ich gefunden habe, als ich nur Mysql eingeben habe.


    [ SCRIPTING ] MySQL (Installation, Zugriff, Einstellungen, Login & Register Beispiel)


    Und außerdem bin ich der Meinung das es einem garnichts bringt wenn es andere für einen Scripten.
    Wenn man sich Tutorials anguckt wird es einem super erklärt und man lernt auch so langsam das Scripten.


    Mit freundlichen Grüßen
    KleinerTeufel

    Hallo, hier der Code:


    public OnPlayerDeath(playerid, killerid, reason)
    {
    new string[16];
    SetPVarInt(killerid, "Kills", GetPVarInt(killerid, "Kills") +1);
    format(string, sizeof(string)," Kills: %i",GetPVarInt(killerid, "Kills"));
    TextDrawSetString(Textdraw0[killerid], string);
    return 1;
    }


    Du musst aber noch anstatt Textdraw0, Textdraw0[MAX_PLAYERS] machen.
    Und
    for(new i; i < MAX_PLAYERS; i ++)
    {
    if(IsPlayerConnected(i))
    {
    Textdraw0[i] = TextDrawCreate(498.000000, 256.000000, "Kills:");
    //usw.
    }
    }

    Sonst wird jedem Spieler die kills angezeigt!


    Ungetestet, müsste aber funktionieren!

    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(GetPVarInt(playerid, "VehRang") !=6)
    {
    if(IsPlayerInVehicle(playerid, 411))
    {
    SendClientMessage(playerid, Rot, "Dein Rang reicht nicht aus um dieses Fahrzeug zu fahren/fliegen.");
    RemovePlayerFromVehicle(playerid, vehicleid);
    return 1;
    }
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    new SpielerDatei[128];
    format(SpielerDatei,sizeof(SpielerDatei),"/User/%s.ini",SpielerName(playerid));
    if(GetPVarInt(playerid,"LoggedIn") == 1)
    {
    dini_IntSet(Spielerdatei, "VehRang", GetPVarInt(playerid, "VehRang"));
    }
    return 1;
    }
    stock LoadAccount(playerid)
    {
    new SpielerDatei[128];
    format(SpielerDatei,sizeof(SpielerDatei),"/User/%s.ini",SpielerName(playerid));
    SetPVarInt(playerid, "VehRang", dini_Int(Spielerdatei,"VehRang"));
    SetPVarInt(playerid, "LoggedIn", 1);
    return 1;
    }

    Du kannst bei OnPlayerEnterVehicle oder OnPlayerStateChange doch abfragen ob er ein Fahrzeug betreten hat.
    Dann fragst du einfach ab, ob er z.B den Rang 6 hat. Wenn nein kickst du ihn aus dem Fahrzeug wieder raus.


    if(GetPVarInt(playerid, "VehRang") != 6)
    {
    SendClientMessage(playerid, Rot, "Dein Rang reicht nicht aus um dieses Fahrzeug zu fahren/fliegen.");
    RemovePlayerFromVehicle(playerid, vehicleid);
    return 1;
    }


    Wenn du das MrMonat Script hast musst du einfach in dem Login/Register System den Rang wie z.B das AdminLevel speichern und natürlich auch wieder laden.


    Speichern:
    dini_IntSet(Spielerdatei, "VehRang", GetPVarInt(playerid, "VehRang"));
    Laden:
    SetPVarInt(playerid, "VehRang", dini_Int(Spielerdatei,"VehRang"));


    Wenn du Grundkenntnise im Scripten hast und dich mit dem Script von MrMonat ausseinander gesetzt hast, dürfte das für dich kein Problem sein.


    MFG
    KleinerTeufel

    Hallo,


    ich habe auf meinem eigenen Server ein Derby erstellt.
    Und jetzt würde ich es gerne so haben dass wenn ein Spieler den Befehl /derby eingibt, in das erst Fahrzeug gesetzt wird.
    Wenn in diesem ersten Fahrzeug aber jemand schon drin sitzt, soll er in das Zweite Fahrzeug gesetzt werden usw.


    Ich habe schon einiges ausprobiert, nur mit meinem Scripting Kenntnissen komme ich nicht weiter.
    Ich hoffe das ihr mit weiter helfen könnt.


    Danke schonmal.
    MFG KleinerTeufel

    Versuch es mal so.



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == 1)
    {
    if(!response) return SendClientMessage(playerid, system, "Aktion abgebrochen.");
    if(strcmp(inputtext,"abcd",false))
    {
    new Float:x, Float:y, Float:z;
    GetObjectPos(gatedown, x, y, z);
    if(z == 1007.79998779)
    {
    MoveObject(gateup, 377.60000610,172.39999390,1015.59997559, 5); //Tor wird geschlossen
    MoveObject(gatedown, 377.60000610,172.39999390,1002.79998779, 5); //Tor wird geschlossen
    }
    if(z == 1002.79998779)
    {
    MoveObject(gateup, 377.60000610,172.39999390,1010.59997559, 5); //Tor wird geöffnet
    MoveObject(gatedown, 377.60000610,172.39999390,1007.79998779, 5); //Tor wird geöffnet
    }
    }
    return 1;
    }
    return 0;
    }