Beiträge von RedDragon

    Prüfung, ob es ein Feuerwehrauto ist:


    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 407) // 407 ist das Löschfahrzeug
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 544) //544 ist das mit der Leiter

    new VehicleGespawnt[MAX_VEHICLES];
    // Dein /spawn CMD... (füg es in deinen CMD ein)
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/spawn", cmdtext, true, 10) == 0)
    {
    //...
    VehicleGespawnt[GetPlayerVehicleID(playerid)] = 1;
    return 1;
    }
    return 0;
    }


    public OnVehicleSpawn(vehicleid)
    {
    if(VehicleGespawnt[vehicleid] == 1)
    {
    DestroyVehicle(vehicleid);
    VehicleGespawnt[vehicleid] = 0;
    }
    return 1;
    }

    Mir ist jetzt nicht genau klar, was du meinst. Hab mal zwei Möglichkeiten:


    1. ShowNameTags(1); -> Wiki-Eintrag


    2. Befehl: /markierung ID (Beispiel: /markierung 2)
    strtok(const string[], &index)
    {
    new length = strlen(string);
    while ((index < length) && (string[index] <= ' '))
    {
    index++;
    }


    new offset = index;
    new result[20];
    while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
    {
    result[index - offset] = string[index];
    index++;
    }
    result[index - offset] = EOS;
    return result;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    new cmd[128], idx;
    cmd = strtok(cmdtext, idx);


    if(strcmp(cmd, "/markierung", true) == 0)
    {
    new tmp[128];
    tmp = strtok(cmdtext, idx);
    if(strlen(tmp) == 0) return SendClientMessage(playerid, 0xFFFFFFFF, ">> Benutzung: /markierung [playerid]");
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(strval(tmp),X,Y,Z);
    SetPlayerCheckpoint(playerid, X, Y, Z, 3.0);
    return 1;
    }
    return 0;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    DisablePlayerCheckpoint(playerid);
    return 1;
    }

    Ungetestet:


    new Skin[MAX_PLAYERS], Skinpickup;


    public OnFilterScriptInit()
    {
    Skinpickup = CreatePickup(1275, 23, PositionX, PositionY, PositionZ, -1); // Position-X usw. an deine Koordinaten anpassen ;)
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i) == 1)
    {
    Skin[i] = GetPlayerSkin(i);
    }
    }
    return 1;
    }


    public OnFilterScriptExit()
    {
    DestroyPickup(Skinpickup);
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    Skin[playerid] = GetPlayerSkin(playerid);
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == Skinpickup)
    {
    if(GetPlayerSkin != 45)
    {
    SetPlayerSkin(playerid,45);
    return 1;
    }
    else
    {
    SetPlayerSkin(playerid,Skin[playerid]);
    return 1;
    }
    }
    return 1;
    }

    Habe seit längerem ein selbstgemachtes Passengerscript für den Shamal, daher habe ich beschlossen, meins zu veröffentlichen.


    Was macht dieses Script?


    - Mithilfe von diesem Script kannst du, wenn du neben einem Shamal stehst, den Interior des Shamals betreten. Dafür einfach ganz normal die Taste drücken, mit der du sonst in Fahrzeuge als Passagier einsteigst (Standart: G).
    - Jeder Shamal hat seine eigene VirtualWorld, daher wird es wohl keine Probleme mit anderen "Shamals" geben. Der Eingang zur Fahrerkabine ist jedoch durch ein Objekt zugemappt (damit es authentischer wirkt).
    - Den Shamal kannst du erst wieder verlassen, wenn du neben dem Ausgang stehst, dafür drückst du einfach die Taste mit der du in Fahrzeuge ein- und aussteigst (Standart: F oder Enter).
    - Aber Achtung, jagt der Pilot das Flugzeug hoch, indem du als Passagier drin sitzt, kommt es auch bei dir zu einer großen Explosion ;).


    Fragen, Anregungen, Lob und Kritik sind erwünscht. Falls ihr Bugs findet, könnt ihr sie mir auch melden ;). Ihr dürft das Script verändern, aber lasst bitte die Credits stehen.


    Screenshots:


    Screenshot 1:
    Screenshot 2:


    Download:


    breadfish.de/wcf/attachment/2420/
    Pastebin-Link

    Dann versuch doch mal selber so einen Code zu scripten, so schwer ist es nicht.


    Tipps: 1. Wenn man g gedrückt hat (public OnPlayerKeyStateChange) 2. lass eine Schleife laufen ob sich in der Nähe vom Spieler ein Shamal befindet, wenn ja Schleife abbrechen und Spieler porten ;)

    Am besten du nimmst dir mal etwas Zeit und schaust mal in dein ganzes Script rein, vielleicht erkennst du ja den Fehler... denn so wie du es schilderst, kann das eigentlich nicht sein^^

    Ungetestet:


    new Abgeschlossen[MAX_VEHICLES];


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext,"/lock",true))
    {
    if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,0xFFFFFFAA,"Du musst in einem Fahrzeug sitzen.");
    if(GetPlayerVehicleSeat(playerid) > 0) return SendClientMessage(playerid,0xFFFFFFAA,"Du musst der Fahrer eines Fahrzeuges sein.");
    // Die Fraktionscar-Überprüfung musst du hier selber hinmachen, da ich von GF keine Ahnung habe

    if(Abgeschlossen[GetPlayerVehicleID(playerid)] == 0)
    {
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    if(i != playerid)
    {
    SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i,0,1);
    }
    }
    Abgeschlossen[GetPlayerVehicleID(playerid)] = 1;
    SendClientMessage(playerid,0xFFFFFFAA,"Dein Fahrzeug wurde abgeschlossen.");
    }
    else
    {
    Abgeschlossen[GetPlayerVehicleID(playerid)] = 0;
    SendClientMessage(playerid,0xFFFFFFAA,"Dein Fahrzeug wurde aufgeschlossen.");
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    SetVehicleParamsForPlayer(GetPlayerVehicleID(playerid),i,0,0);
    }
    }

    return 1;
    }
    return 0;
    }


    public OnVehicleSpawn(vehicleid)
    {
    Abgeschlossen[vehicleid] = 0;
    for(new i=0; i < MAX_PLAYERS; i++)
    {
    SetVehicleParamsForPlayer(vehicleid,i,0,0);
    }
    return 1;
    }


    Edit: Verbessert