Frage zu /getroller

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
  • Moin



    Habe mal eine Frage zu meinem Befehl /getroller,


    und zwar hab ich das so gemacht der Spieler wird aufm Roller gesetzt und kann rumfahren wie er lustig ist,
    nur hab ich es jetzt so vor gehabt das wenn der Roller Zerstört wird oder der Spieler den Server verlässt das der Roller dann auch direkt vom Server gelöscht wird.



    Ich hab es schon versucht aber funktioniert leider nicht ^^



    Code:


    ocmd:getroller(playerid, params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid,4.0,1777.7705,-1893.9436,13.3877))return SendClientMessage(playerid,ORANGE,"Du bist nicht am /getroller Punkt");
    if(!BesitztSpielerEinBike(playerid))return SendClientMessage(playerid,DUNKELROT,"Du besitzt bereits einen Roller");
    {
    spielerbike[1] = CreateVehicle(462,1776.3328,-1889.3347,12.9875,266,1,1,-1);
    PutPlayerInVehicle(playerid,462,0);
    SendClientMessage(playerid,ORANGE,"=> Roller Info <=");
    SendClientMessage(playerid,GRAU,"Sobalt du den Server Verlassen tust");
    SendClientMessage(playerid,GRAU,"Oder der Motoroller zerstört wird");
    SendClientMessage(playerid,GRAU,"Wird dieser Automatisch gelöscht!");
    SendClientMessage(playerid,ORANGE,"=====================");
    SetPVarInt(playerid,"Bike",1);
    }
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    if(GetPVarInt(killerid,"Bike") == 1)
    {
    spielerbike[1] = GetPlayerVehicleID(killerid);
    SetPVarInt(killerid,"Bike",0);
    DestroyVehicle(killerid);
    }


    return 1;
    }



    Nur OnPlayerConnect hab ich es noch nicht versucht
    hoffe ihr könnt mir weiter helfen



    Grüße

  • Du machst nen globalen Array
    new Roller[MAX_PLAYERS]


    Deinen Command änderst du wie folgt:

    ocmd:getroller(playerid, params[])
    {
    if(!IsPlayerInRangeOfPoint(playerid,4.0,1777.7705,-1893.9436,13.3877))return SendClientMessage(playerid,ORANGE,"Du bist nicht am /getroller Punkt");
    if(!BesitztSpielerEinBike(playerid))return SendClientMessage(playerid,DUNKELROT,"Du besitzt bereits einen Roller");

    Roller[playerid] = CreateVehicle(462,1776.3328,-1889.3347,12.9875,266,1,1,-1);
    PutPlayerInVehicle(playerid,Roller[playerid],0);
    SendClientMessage(playerid,ORANGE,"=> Roller Info <=");
    SendClientMessage(playerid,GRAU,"Sobald du den Server verlässt");
    SendClientMessage(playerid,GRAU,"oder der Motorroller zerstört wird,");
    SendClientMessage(playerid,GRAU,"wird dieser automatisch gelöscht!");
    SendClientMessage(playerid,ORANGE,"=====================");
    SetPVarInt(playerid,"Bike",1);

    return 1;
    }

    DEr Code bei OnVehicleDeath ist sinnlos, da du das Fahrzeug vom Zerstörer löscht und nicht den Besitzer des Fahrzeuges. Das muss wie folgt sein:

    public OnVehicleDeath(vehicleid, killerid)
    {
    for(new i; i<MAX_PLAYERS;i++) { // Geht alle Spieler durch
    if(vehicleid == Roller[i]) { // Falls der Roller dem Spieler gehört, der aktuell überprüft wird
    SetPVarInt(i, "Bike", 0); // setzt die PVar "Bike" auf 0
    }
    }
    return 1;
    }

    Zerstören brauchst du es nicht mehr, da es sowieso zerstört ist.


    Jetzt OnPlayerDisconnect:

    public OnPlayerDisconnect(playerid, reason) {
    if(GetPVarInt(playerid, "Bike")) { // Wenn Roller existiert (PVar 1 ist)
    DestroyVehicle(Roller[playerid]; // Zerstört Roller
    SetPVarInt(playerid, "Bike", 0);
    }
    }

    Bei Fragen kannste gerne antworten. Alles ungetestet


    Kostenlose Pawno Alternative / PAWN IDE -> PawnStar
    Mass Effect
    :love: