Beiträge von RedDragon

    Es geht leichter.


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/eis", cmdtext, true, 10) == 0)
    {
    for(new i = 0; i < MAX_VEHICLES; i++)
    {
    if(GetVehicleModel(i) == 423) // Mr. Whoopie
    {
    new Float:vX, Float:vY, Float:yZ;
    GetVehiclePos(i, vX,vY,vZ);
    if(IsPlayerInRangeOfPoint(playerid, 5.0, vX, vY, vZ) == 1)
    {
    SendClientMessage(playerid,0x05FF00FF, "Eis gekauft.");
    // Was weiter passieren soll...
    return 1;
    }
    }
    }
    SendClientMessage(playerid,0xFF0000FF, "Es ist kein Eiswagen in der Nähe.");
    return 1;
    }
    return 0;
    }

    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp("/sp",cmdtext,true) == 0)
    {
    status4 = 1;
    GetPlayerPos(playerid,SaveX[playerid],SaveY[playerid],SaveZ[playerid]);
    SendClientMessage(playerid,COLOR_GREEN,"Your Posesition has been saved! To load use /lp");
    GetPlayerFacingAngle(playerid,SaveR[playerid]);
    return 1;
    }


    if(strcmp("/lp",cmdtext,true) == 0)
    {
    if(status4 == 1)
    {
    SetPlayerPos(playerid,SaveX[playerid],SaveY[playerid],SaveZ[playerid]);
    SetPlayerFacingAngle(playerid,SaveR[playerid]);
    new car = GetPlayerVehicleID(playerid);
    SetVehiclePos(car, SaveX[playerid],SaveY[playerid],SaveZ[playerid]);
    PutPlayerInVehicle(playerid,car,0);
    TogglePlayerControllable(playerid,0);
    SetTimerEx("Control1", 1000, 0, "i",playerid);
    }
    return 1;
    }
    return 0;
    }


    forward Control1(playerid);
    public Control1(playerid)
    {
    TogglePlayerControllable(playerid, 1);
    return 1;
    }

    Tja wenn es so einfach wäre, aber Spectaten ist nicht Beifahrer sein, [...]


    Natürlich, Spectaten ist so gut wie dasselbe wie Beifahrer sein, der Beifahrer sieht ja im Normalfall das Fahrzeug wie es vom Fahrer gelenkt wird... Und ich finde meine Lösung ist da deutlich einfacher als irgendwelche Objekte an ein Fahrzeug zu heften...

    Ich kann dir sagen wie du es selber scripten kannst, ist sehr einfach.


    Wenn man G drückt, dann prüfe, ob sich in der Nähe des Spielers ein Cargobob befindet, wenn ja soll man den Cargobob spectaten. Wenn man wieder aussteigt sollte man dann noch zum Cargobob teleportiert werden.

    Um den Spawn eines Spielers zu verhindern kannst du folgendes machen:


    public OnPlayerRequestSpawn(playerid) // Wenn jemand auf den "Spawn"-Button drückt...
    {
    if(!IsPlayerAdmin(playerid)) // falls der Spieler kein Admin ist...
    {
    SendClientMessage(playerid,COLOR_GREEN,"Du bist kein Admin und darfst nicht spawnen!");
    return 0; // Spawn nicht gestatten.
    }
    return 1;
    }

    Versuch's mal so:
    new ns[5], Text3D:label[MAX_VEHICLES];
    for(new i = 0; i<MAX_VEHICLES; i++)
    {
    format(ns, sizeof(ns), "%d", i);
    label[i] = Create3DTextLabel(ns, COLOR_RED, 0.0, 0.0, 0.0, 25.0, 0, 0);
    Attach3DTextLabelToVehicle(Text3D:label[i], i, 0.0, 0.0, 1.0);
    }

    Mit deiner if fragst du ab, ob jemand 100 Leben oder mehr und gleichzeitig weniger als 0 Leben hat oder -1 Leben hat, was nicht möglich ist. Man kann maximal 100 Leben haben. Bei der Variable Heal sind nur Werte von 0.0 bis 100.0 möglich.

    Man gibt /repair ein, wird gefreezt und 3 Sekunden später wird man entfreezt und das Auto repariert.


    #define rot 0xFF0000FF
    #define blau 0x66FFCC


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/repair", cmdtext, true, 10) == 0)
    {
    if(GetPlayerVehicleSeat(playerid) == 0)
    {
    TogglePlayerControllable(playerid,0);
    SetTimerEx("Reparieren",3000,0, "i",playerid);
    return 1;
    }
    return SendClientMessage(playerid,rot,"Du musst als Fahrer in einem Fahrzeug sitzen.");
    }
    return 0;
    }


    forward Reparieren(playerid);
    public Reparieren(playerid)
    {
    TogglePlayerControllable(playerid,1);
    if(IsPlayerConnected(playerid) == 1 && GetPlayerVehicleSeat(playerid) == 0)
    {
    RepairVehicle(GetPlayerVehicleID(playerid));
    SendClientMessage(playerid, blau, "Fahrzeug repariert!");
    }
    }

    Zitat

    Der Client (Spieler) kommuniziert mit dem Server, vereinfacht, indem er kleine Datenpakete verschickt, die Informationen wie seine Position, Bewegung oder aktuell ausgerüstete Waffe enthalten. Der Server verschickt die Daten dann weiter an alle anderen Clients, so entsteht die Synchronisation --> Alle sehen dasselbe.


    Jedesmal wenn der Server eines dieser Datenpakete empfängt, wird OnPlayerUpdate ausgeführt, also jedesmal wenn der Client den Server über seinen aktuellen Status informiert. Dies passiert sehr (!) oft, daher solltest du, wie KornChief schon gesagt hat, nicht viel Code in diesem Callback ausführen lassen.


    Was lernen wir daraus? OnPlayerUpdate wird sehr oft in kurzer Zeit ausgeführt!!! Diese public ist nur mit Vorsicht zu benutzen.