Beiträge von Alexus

    if(Playerid, 30 im loginsystemkick(playerid...

    :facepalm:


    Ganz oben ins Script:
    new NoLogin[MAX_PLAYERS];


    Dann erstellst du ne Funktion:
    forward NoLoginKick(playerid);
    public NoLoginKick(playerid)
    {
    if(NoLogin[playerid] == 0) Kick(playerid);
    return 1;
    }


    Beim OnPlayerConnect:
    SetTimerEx("NoLoginKick", 30000, true, "d", playerid);


    Und wenn er sich einlogt:
    NoLogin[playerid] = 99;


    und bei OnPlayerDisconnect:
    NoLogin[playerid] = 0;

    Und ob das geht Leute:


    Erstmal musst du die Namen definieren. Folgendes ganz nach oben ins Script:
    new VehicleNames[][] =
    {
    "Landstalker", "Bravura", "Buffalo", "Linerunner", "Perrenial", "Sentinel",
    "Dumper", "Firetruck", "Trashmaster", "Stretch", "Manana", "Infernus",
    "Voodoo", "Pony", "Mule", "Cheetah", "Ambulance", "Leviathan", "Moonbeam",
    "Esperanto", "Taxi", "Washington", "Bobcat", "Whoopee", "BF Injection",
    "Hunter", "Premier", "Enforcer", "Securicar", "Banshee", "Predator", "Bus",
    "Rhino", "Barracks", "Hotknife", "Trailer", "Previon", "Coach", "Cabbie",
    "Stallion", "Rumpo", "RC Bandit", "Romero", "Packer", "Monster", "Admiral",
    "Squalo", "Seasparrow", "Pizzaboy", "Tram", "Trailer", "Turismo", "Speeder",
    "Reefer", "Tropic", "Flatbed", "Yankee", "Caddy", "Solair", "Berkley's RC Van",
    "Skimmer", "PCJ-600", "Faggio", "Freeway", "RC Baron", "RC Raider", "Glendale",
    "Oceanic","Sanchez", "Sparrow", "Patriot", "Quad", "Coastguard", "Dinghy",
    "Hermes", "Sabre", "Rustler", "ZR-350", "Walton", "Regina", "Comet", "BMX",
    "Burrito", "Camper", "Marquis", "Baggage", "Dozer", "Maverick", "News Chopper",
    "Rancher", "FBI Rancher", "Virgo", "Greenwood", "Jetmax", "Hotring", "Sandking",
    "Blista Compact", "Police Maverick", "Boxville", "Benson", "Mesa", "RC Goblin",
    "Hotring Racer A", "Hotring Racer B", "Bloodring Banger", "Rancher", "Super GT",
    "Elegant", "Journey", "Bike", "Mountain Bike", "Beagle", "Cropduster", "Stunt",
    "Tanker", "Roadtrain", "Nebula", "Majestic", "Buccaneer", "Shamal", "Hydra",
    "FCR-900", "NRG-500", "HPV1000", "Cement Truck", "Tow Truck", "Fortune",
    "Cadrona", "FBI Truck", "Willard", "Forklift", "Tractor", "Combine", "Feltzer",
    "Remington", "Slamvan", "Blade", "Freight", "Streak", "Vortex", "Vincent",
    "Bullet", "Clover", "Sadler", "Firetruck", "Hustler", "Intruder", "Primo",
    "Cargobob", "Tampa", "Sunrise", "Merit", "Utility", "Nevada", "Yosemite",
    "Windsor", "Monster", "Monster", "Uranus", "Jester", "Sultan", "Stratium",
    "Elegy", "Raindance", "RC Tiger", "Flash", "Tahoma", "Savanna", "Bandito",
    "Freight Flat", "Streak Carriage", "Kart", "Mower", "Dune", "Sweeper",
    "Broadway", "Tornado", "AT-400", "DFT-30", "Huntley", "Stafford", "BF-400",
    "News Van", "Tug", "Trailer", "Emperor", "Wayfarer", "Euros", "Hotdog", "Club",
    "Freight Box", "Trailer", "Andromada", "Dodo", "RC Cam", "Launch", "Police Car",
    "Police Car", "Police Car", "Police Ranger", "Picador", "S.W.A.T", "Alpha",
    "Phoenix", "Glendale", "Sadler", "Luggage", "Luggage", "Stairs", "Boxville",
    "Tiller", "Utility Trailer"
    };


    Nun kommt dein Befehl ins Spiel. Ich empfehle dcmd. Mit folgendem Code ermittelst du die ID aus dem Namen:
    new model[64];
    if(sscanf(params, "s", model))
    {
    return SendClientMessage(playerid, WHITE, "Verwendung: /spawncar [Model]");
    }


    new spawncar = -1;
    if(!IsNumeric(model))
    {
    for(new sauto=0; sauto < 212; sauto++)
    {
    if(!strcmp(VehicleNames[sauto], model, true))
    {
    spawncar = sauto+400;
    break;
    }
    }
    }
    if(IsNumeric(model)) spawncar = strval(model);
    if(spawncar == -1) return SendClientMessage(playerid, ROT, "Unbekannter Fahrzeugname!");


    Das ganze läuft wie folgt: Du kannst in deinem Befehl nun einen String eingeben.
    Die Funktion IsNumeric prüft, ob es sich um ausschließlich Zahlen (Integer), oder um Buchstaben und Zahlen (String) handelt.
    Wenn es ein String ist wird versucht, den Namen auszulesen. Dafür loopt die Schleife durch alle vorher definierten Namen und gibt bei einem Treffer die Modelid dem Integer "spawncar" über.
    Sollte es sich bei dem eingegebenen Text jedoch um eine Zahl handeln, ist dies die direkte ID, und auch diese wird "spawncar" übergeben.


    Da wir "spawncar" vorher mit -1 definiert haben, und bei keinem Treffer die Zahl auch nicht verändert wird, können wir so überprüfen, ob der String nun ein Fahrzeug enthält oder nicht.


    Du kannst also mit diesem Schnipsel sowohl eine ID, als auch einen Namen eingeben. Dabei muss der Name jedoch mit dem im Fahrzeugarray übereinstimmen.
    Mit spawncar kannst du nun beliebig weiterarbeiten. Es enthält die Modelid


    Bitteschön :rolleyes:


    /edit: Hier noch der Code für IsNumeric. Einfach irgendwo ins Script:
    IsNumeric(const string[])
    {
    for (new i = 0, j = strlen(string); i < j; i++)
    {
    if (string[i] > '9' || string[i] < '0') return 0;
    }
    return 1;
    }

    Jetzt mal ganz im Ernst:
    1.: 90% vom Inhalt kann man sich selber ableiten,
    2.: Wenn die Admins das ernsthaft alles abfragen würde ich mir an deiner Stelle nen neuen Server suchen, das ist ja nicht zumutbar,
    und 3.: drei Gründe klingen immer cooler

    Ganz nach oben:


    //DCMD
    #define dcmd(%1,%2,%3) if (!strcmp((%3)[1], #%1, true, (%2)) && ((((%3)[(%2) + 1] == '\0') && (dcmd_%1(playerid, ""))) || (((%3)[(%2) + 1] == ' ') && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

    Ich hab schnell nen dcmdbefehl geschrieben:


    Unter OnPlayerCommadText:
    dcmd(savecar, 7, cmdtext);


    irgendwo im Script (in keiner Funktion oder in keinem Callback):
    dcmd_savecar(playerid, params[])
    {
    new car, farbe1, farbe2;
    if(sscanf(params, "ddd", car, farbe1, farbe2)) return SendClientMessage(playerid, 0xFFFFFFFF, "/savecar [ID] [Col1] [Col2]");

    new Float:x, Float:y, Float:z, Float:a
    GetPlayerPos(playerid, x, y, z);
    GetPlayerFacingAngle(playerid, a);
    if(IsPlayerInAnyVehicle(playerid))
    {
    GetVehiclePos(GetPlayerVehicleID(playerid), x, y, z);
    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
    }

    CreateVehicle(car, x, y, z, a, farbe1, farbe2, 0);
    if(IsPlayerInAnyVehicle(playerid)) SetVehiclePos(GetPlayerVehicleID(playerid), x+5, y+5, z);
    else SetPlayerPos(playerid, x+5, y+5, z);

    new File:logfile=fopen("autos.txt", io_append);
    format(string, sizeof(string), "CreateVehicle(%d, %f, %f, %f, %f, %d, %d, 0);\r\n",car, x, y, z, a, farbe1, farbe2);
    fwrite(logfile, string);
    fclose(logfile);

    format(string, sizeof(string), "CreateVehicle(%d, %f, %f, %f, %f, %d, %d, 0);",car, x, y, z, a, farbe1, farbe2);
    SendClientMessage(playerid,0x00FF1EFF, "Fahrzeug wurde erstellt und gesichert. Code:");
    SendClientMessage(playerid, 0x00FF1EFF, string);
    }


    Bitteschön :rolleyes:


    Müsste so klappen, wenn nicht posten.
    Einfach ingame /savecar [Carid] [farbe1] [farbe2] tippen. Am besten du sitzt in einem Fahrzeug, da stimmt die Position besser


    In Scriptfiles wird eine Datei namens autos.txt erstellt. Dort steht ein Code, welchen du ins script einfügen kannst.