Vehicles Spawnen mit ID und Name

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Schönen Guten Abend,


    ich suche schon vergebens seit 5 Stunden nach einem /v Befehl womit ich auch /v nrg eingeben kann. Ich habe es Bisher nur so das ich das mit der ModelID machen kann.
    Das ist das was ich bisher habe.



    CMD:v(playerid, params[])
    {
    if(GetPVarInt(playerid, "test") < 4)
    {
    SetPVarInt(playerid, "test", GetPVarInt(playerid, "test") +1);
    new ModelID, Float:VehPos[4], vehicleid;
    new color1 = random(252);
    new color2 = random(252);
    if(GetPlayerState(playerid)!=PLAYER_STATE_ONFOOT) return SendClientMessage(playerid,0xB0AFB0FF,"Du bist nicht zu Fuß unterwegs!");
    if(sscanf(params, "d",ModelID)) return SendClientMessage(playerid,0xB0AFB0FF, "Benutze: /v [vehicleid]");
    if(ModelID < 400 || ModelID > 611) return SendClientMessage(playerid,0xB0AFB0FF, "Die VehicleID muss zwischen 400 und 611 liegen");
    GetPlayerPos(playerid, VehPos[0],VehPos[1],VehPos[2]);
    GetPlayerFacingAngle(playerid, VehPos[3]);
    vehicleid = CreateVehicle(ModelID,VehPos[0],VehPos[1],VehPos[2],VehPos[3],color1,color2,-1);
    LinkVehicleToInterior(vehicleid,GetPlayerInterior(playerid));
    SetVehicleVirtualWorld(vehicleid,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid, vehicleid, 0);
    new vid = GetPlayerVehicleID(playerid);
    new engine,lights,alarm,doors,bonnet,boot,objective;
    GetVehicleParamsEx(vid,engine,lights,alarm,doors,bonnet,boot,objective);
    SetVehicleParamsEx(vid,VEHICLE_PARAMS_ON,lights,alarm,doors,bonnet,boot,objective);
    motor[vid] = true;
    }
    if(GetPVarInt(playerid, "test") == 4)
    {
    SendClientMessage(playerid, COLOR_ROT, "Alle Slots sind belegt, lösche mit /des (im Wagen)");
    }
    return 1;
    }


    Man kann hier auch erkennen das ich das Spawnenbegrenzt habe Leider macht er das bei mir so das wenn ich das 4te mal /v ... eingebe das er Zeigt ein Fahrzeug spawnt und im selben Moment auch schreibt das alle Slots belegt sind weiß da jemand eine Andere Lösung für das er das erst anzeigt wenn ich es das nächste mal eingebe. Wenn nicht dann halb so wild.



    Wäre wirklich sehr Nett wenn mir jemand den Befehl so erweitern könnte das das geht mit dem /v [VehicleName].
    Das habe ich auch schon.

    new pAllVehicleNames[][] =
    {
    "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",
    "Boxvillde", "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", "Stratum", "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"
    };


    Danke schonmal im vorraus.

  • doch, wenn man die id hinterschreibt spawnt er auto, wenn man nur /v eingibt, öffnet sich ein dialog. da kannst dann die id oder den Namen reinschreiben und es wird ein auto gespawnt. mit /vweg machste den wieder weg :D

    dcmd_v(playerid,params[])
    {
    new vID;
    if(sscanf(params, "d", vID))
    {
    if(Spieler[playerid][Admin] >= 1)
    {
    return ShowPlayerDialog(playerid,DIALOG_AUTO,DIALOG_STYLE_INPUT,"Auto spawnwn","{FFFFFF}Gebe die {00FF00}ID{FFFFFF} oder den {00FF00}Namen{FFFFFF} des Gewünschten Fahrzeuges ein!","Okay","Cancel");
    }
    else
    {
    return 0;
    }
    }
    if(vID < 400 || vID > 611)
    {
    return SendClientMessage(playerid,grau,"Nur Vehicle-ID's von 400-611 benutzen!");
    }
    if(Spieler[playerid][Admin] < 1)
    {
    return 0;
    }
    else
    {
    new Float:x, Float:y, Float:z, name[MAX_PLAYER_NAME];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerName(playerid,name,sizeof(name));
    new cv = CreateVehicle(vID, x, y, z, 0, 117, 117, -1);
    entercar[playerid][cv] = 1;
    Adminauto[cv] = 1;
    MAX_CARS++;
    new str[20];
    format(str,sizeof(str),"Admin %d",MAX_CARS);
    SetVehicleNumberPlate(cv,str);
    SetVehicleHealth(cv,1000.0);
    SetVehicleVirtualWorld(cv,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,cv,0);
    new string[256];
    format(string, sizeof(string), "AdmCmd: %s hat eine(n) %s gespawnt.",name,carname[vID-400]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Admin] >= 1)
    {
    SendClientMessage(i, 0xFF6347FF, string);
    }
    }
    }
    return 1;
    }


    dcmd_vwegall(playerid,params[])
    {
    #pragma unused params
    if(Spieler[playerid][Admin] < 2)
    {
    return 0;
    }
    else
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Admin] >= 1)
    {
    new str[256], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(str,sizeof(str),"AdmCmd: %s hat alle unbenutzten gespawnte Admincars zertört.", name);
    SendClientMessage(i,0xFF6347FF,str);
    }
    }
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    if(Adminauto[i] == 1)
    {
    if(IsVehicleEmpty(i))
    {
    DestroyVehicle(i);
    }
    }
    }
    }
    return 1;
    }


    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid == DIALOG_AUTO)
    {
    if(response)
    {
    if(strlen(inputtext) >= 3)
    {
    if(strval(inputtext) > 399 && strval(inputtext) < 612)
    {
    new Float:x, Float:y, Float:z, name[MAX_PLAYER_NAME];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerName(playerid,name,sizeof(name));
    new cv = CreateVehicle(strval(inputtext), x, y, z, 0, 117, 117, -1);
    entercar[playerid][cv] = 1;
    Adminauto[cv] = 1;
    MAX_CARS++;
    new str[20];
    format(str,sizeof(str),"Admin %d",MAX_CARS);
    SetVehicleNumberPlate(cv,str);
    SetVehicleHealth(cv,1000.0);
    SetVehicleVirtualWorld(cv,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,cv,0);
    new string[256];
    format(string, sizeof(string), "AdmCmd: %s hat eine(n) %s gespawnt.",name,carname[strval(inputtext)-400]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Admin] >= 1)
    {
    SendClientMessage(i, 0xFF6347FF, string);
    }
    }
    }
    else
    {
    new variable;
    for(new i = 0; i < MAX_VEHS; i++)
    {
    if(strcmp(inputtext, carname[i], true) == 0)
    {
    new Float:x, Float:y, Float:z, name[MAX_PLAYER_NAME];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerName(playerid,name,sizeof(name));
    new cv = CreateVehicle(i+400, x, y, z, 0, 117, 117, -1);
    entercar[playerid][cv] = 1;
    Adminauto[cv] = 1;
    MAX_CARS++;
    new str[20];
    format(str,sizeof(str),"Admin %d",MAX_CARS);
    SetVehicleNumberPlate(cv,str);
    SetVehicleHealth(cv,1000.0);
    SetVehicleVirtualWorld(cv,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,cv,0);
    new string[256];
    format(string, sizeof(string), "AdmCmd: %s hat eine(n) %s gespawnt.",name,carname[i]);
    for(new j = 0; j < MAX_PLAYERS; j++)
    {
    if(Spieler[j][Admin] >= 1)
    {
    SendClientMessage(j, 0xFF6347FF, string);
    }
    }
    variable = 1;
    }
    }
    if(variable == 0)
    {
    SendClientMessage(playerid,0xDD0000FF,"Fahrzeugname oder Fahrzeugid ungültig!");
    }
    else
    {
    variable = 0;
    }
    }
    }
    else OnPlayerCommandText(playerid,"/v");
    }
    }
    return 1;
    }




    musst die dcmd und dialogid definieren und die adminabfrage anpassen.


    LG Simon


    //edit: carname[vID-400] musst du auch anpassen und sry das das nicht richtig eingedrückt wurde, hat er iwie nicht gemacht

  • DANKE,


    das is zwar nicht ganz das was ich suchte aber ich kriege auch nicht hin das bei mir einzubauen. Nen Profi bin ich ja auch nicht Geht das nicht evtl. leichter Also das er in meinem /v Befehl nur noch zusätzlich die Namen abfragt und dann halt dieses -400??? Ich habe das auch schon versucht nur noch nicht hinbekommen.


    Simon ich bin dir wirklich dankbar.


    Aber Kann mir nicht noch jemand ne andere Passende Lösung dazu Schreiben



    EDIT: OK habe eine Zahl falsch definiert Funktioniert Prima.

    Einmal editiert, zuletzt von Xtreame ()

  • ähm ich weiß nicht ob das klappt, aber probier das mal so:


    dcmd_v(playerid,params[])
    {
    new vID;
    new Float:x, Float:y, Float:z, name[MAX_PLAYER_NAME];
    GetPlayerPos(playerid, x, y, z);
    GetPlayerName(playerid,name,sizeof(name));
    if(Spieler[playerid][Admin] < 3) return 0;
    if(sscanf(params, "d", vID))
    {
    new car[40];
    if(sscanf(params, "s", car)) return SendClienMessage(playerid,grau,"Benutzung: /v [id/Name]");
    for(new i = 0; i < 212; i++)
    {
    if(!strcmp(car,carname[i],true))
    {
    new cv = CreateVehicle(vID, x, y, z, 0, 117, 117, -1);
    Adminauto[cv] = 1;
    SetVehicleNumberPlate(cv,"Admin Car");
    SetVehicleHealth(cv,1000.0);
    SetVehicleVirtualWorld(cv,GetPlayerVirtualWorld(playerid));
    new string[256];
    format(string, sizeof(string), "AdmCmd: %s hat eine(n) %s gespawnt.",name,cInfo[vID-400][cName]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Admin] >= 1) SendClientMessage(i, 0xFF6347FF, string);
    }
    return PutPlayerInVehicle(playerid,cv,0);
    }
    else continue;
    }
    SendClientMessage(playerid,grau,"Ungültiger Fahrzeugname!");

    }
    else
    {
    if(vID < 400 || vID > 611) return SendClientMessage(playerid,grau,"Nur Vehicle-ID's von 400-611 benutzen!");
    new cv = CreateVehicle(vID, x, y, z, 0, 117, 117, -1);
    Adminauto[cv] = 1;
    SetVehicleNumberPlate(cv,"Admin Car");
    SetVehicleHealth(cv,1000.0);
    SetVehicleVirtualWorld(cv,GetPlayerVirtualWorld(playerid));
    PutPlayerInVehicle(playerid,cv,0);
    new string[256];
    format(string, sizeof(string), "AdmCmd: %s hat eine(n) %s gespawnt.",name,cInfo[vID-400][cName]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Admin] >= 1) SendClientMessage(i, 0xFF6347FF, string);
    }
    }
    return 1;
    }

  • Leider funktioniert dies nicht.


    Ich glaube ich bin zu dumm Dafür. Ich habe versucht sämtliche sachen umzuschreiben und auf meines anzupassen aber Leider ohne erfolg. Vielleicht noch eine Idee.
    evtl kann mir auch jemand per Teamviewer helfen oder genauer per Skype oder ICQ beschreiben.


    Skype Xtreame441
    ICQ 642480567

  • Erstens Ja ( mein Script und Server ). Nein da ich ZCMD nutze und das kommt meines Wissens nach nicht dort rein. Hatte ich vorher nicht aber jetzt. Bringt aber nichts. Habe sscanf2 also das was man halt zu Diesen Zeitpunkt runterladen kann.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Da ist so einiges falsch gewesen. Eine Funktion , die überprüft, ob man überhaupt ein Fahrzeug mit dem Kriterium findet würde es um einiges erleichtern.


    new cv = CreateVehicle(vID, x, y, z, 0, 117, 117, -1);
    Würde zB. bei der Suche nach Namen immer crashen , weil vID nie einen Wert zugewiesen bekommt.


    Ich hab das mal neu geschrieben :
    static const pAllVehicleNames[][] =
    {
    "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",
    "Boxvillde", "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", "Stratum", "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"
    };
    enum {
    e_Not_Found = -1,
    e_Multi_Match = -2
    };


    stock GetVehicleModelIDByName( vehiclename[] , &treffer) {
    new
    iModelID = 0;
    treffer = 0;
    for(new i ; i < sizeof( pAllVehicleNames ) ; i++) {
    if(!strfind( pAllVehicleNames[i],vehiclename,true)) {
    treffer++;
    iModelID = 400 + i;
    }
    }
    if( treffer == 0 ) {
    return e_Not_Found;
    }
    else if( treffer > 1 ) {
    return e_Multi_Match;
    }
    else {
    return iModelID;
    }
    }
    COMMAND:v(playerid,params[]) {
    new
    modelid;
    if( sscanf(params,"d",modelid ) ) {
    // keine Zahl, also suchen durchsuchen wir namen!
    if( isnull(params) ) {
    return SendClientMessage(playerid,0xFF0000FF,"USAGE: /v ( FahrzeugID / Name )");
    }
    new
    iTreffer = 0,
    string[128];
    modelid = GetVehicleModelIDByName( params , iTreffer);
    if( modelid == e_Multi_Match ) {
    format(string,sizeof(string),"ERROR - Es wurden %d Fahrzeuge gefunden nach dem Suchkriterium '%s'.Bitte genauer suchen!",iTreffer, params);
    SendClientMessage(playerid,0xFF0000FF,string);
    return 1;
    }
    else if ( modelid == e_Not_Found ) {
    format(string,sizeof(string),"ERROR - Es wurden kein Fahrzeug gefunden mit dem Suchkriterium '%s'.",params);
    SendClientMessage(playerid,0xFF0000FF,string);
    return 1;
    }
    // Wir haben die modelid gefunden!
    // Rufen wir uns selber nochmal auf, dann brauch man den Code nicht kopieren!
    // uns selber = /V
    string[0] = '\0';
    format(string,sizeof(string),"%d",modelid);
    CallLocalFunction("cmd_v","ds",playerid,string);
    }
    else {
    // Zahl eingegeben
    // überprüfen
    if( modelid < 400 || modelid > 611) return SendClientMessage(playerid,0xFF0000FF,"Nur Model-ID's von 400-611 benutzen!");
    new
    name[MAX_PLAYER_NAME],
    string[128],
    vehicleid,
    Float:fX,
    Float:fY,
    Float:fZ;
    GetPlayerPos( playerid, fX , fY , fZ);
    GetPlayerName( playerid, name , sizeof(name) );
    vehicleid = CreateVehicle( modelid, fX , fY , fZ , 0.0 , -1 , -1 , -1);
    Adminauto[vehicleid] = 1;
    SetVehicleNumberPlate( vehicleid ,"Admin Car"); // Erst sichtbar nach respawn!
    SetVehicleHealth( vehicleid ,1000.0); // 1000.0 ist sowieso Standart - Sinn ???
    PutPlayerInVehicle(playerid,vehicleid,0);
    format(string, sizeof(string), "AdmCmd: %s hat eine(n) %s gespawnt.",name, pAllVehicleNames[ modelid - 400 ] );
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(Spieler[i][Admin] >= 1) SendClientMessage(i, 0xFF6347FF, string);
    }
    }
    return 1;
    }

  • OK Vielen Vielen Dank für jegliche Hilfe.


    Das von dir Goldkiller habe ich zwar bisher noch nicht alles ganz verstanden aber ich werde mir das auf jeden fall genauer anschauen Damit ich das auch Verstehe.


    Jetzt aber noch eine Frage wenn ich jetzt zum Beispiel möchte das man mit dem /v befehl nur Bestimmte Fahrzeuge nicht spawnen kann also diese Quasi gesperrt sind für Diesen Befehl wie mache ich das?


    und würde das hier funktionieren? Das soll das spawnen Begrenzen

    if(GetPVarInt(playerid, "test") < 4)
    {
    SetPVarInt(playerid, "test", GetPVarInt(playerid, "test") +1);
    //Inhalt vom /v befehl
    }
    if(GetPVarInt(playerid, "test") == 4)
    {
    SendClientMessage(playerid, COLOR_ROT, "...");
    }

    Einmal editiert, zuletzt von Xtreame ()