Beiträge von PStar

    Es geht ja nicht darum, dass die Fahrzeuge gelöscht werden, wenn das Filterscript beendet wird,sondern wenn der User disconnected ...
    Oder versteh ich deine Intention falsch?


    Probiers einfach mal aus ;)


    Oder so:
    public OnPlayerDisconnect(playerid, reason)
    {
    printf("Autos: OnPlayerDisconnect %d-1", playerid);
    for(new x=0;x<MaxVehs; x++)
    {
    //if(PlayerCar[playerid][x][CarBesitz])
    printf("Autos: OnPlayerDisconnect %d-%d-1", playerid, x);
    if(IsValidVehicle(PlayerCar[playerid][x][cID]))
    {
    SavePlayerCar(playerid, x);
    printf("Autos: OnPlayerDisconnect %d-%d-2", playerid, x);
    UnLockCar(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-3", playerid, x);
    DestroyVehicle(PlayerCar[playerid][x][cID]);
    printf("Autos: OnPlayerDisconnect %d-%d-4", playerid, x);
    PlayerCar[playerid][x][CarBesitz] = 0;
    PlayerCar[playerid][x][cID] = -1;
    PlayerCar[playerid][x][cModel] = -1;
    PlayerCar[playerid][x][cCurX] = -1;
    PlayerCar[playerid][x][cCurY] = -1;
    PlayerCar[playerid][x][cCurZ] = -1;
    PlayerCar[playerid][x][cCurR] = -1;
    printf("Autos: OnPlayerDisconnect %d-%d-5", playerid, x);
    }
    }
    return 1;
    }

    Mal ein kleiner Tipp von mir, was wenn du bestimmte Zonen machst also nicht nur Punkte sondern gleich ne Zone.
    Oder ein weiterer Tipp ich weiß nicht ob das hinhaut, das du bei dem Include halt die Abfrage so umbaust das z.b.
    if(!IsPlayerNotinWater)
    {
    return 1;
    }
    Wäre das nicht möglihc?


    ocmd:report(playerid,params[])
    {
    if(!strlen(params))return SendClientMessage(playerid,-1,"Vewendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,(params));
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }


    Ps. Kommt die Meldung wenn kein Text erscheint: /report [Text] ?


    Und wenn das so nicht geht machs so:

    ocmd:report(playerid,params[])
    {
    if(sscanf(params,"us",params))return SendClientMessage(playerid,0x00A5FFFF,"Verwendung: /report [Text]");
    new namestr[MAX_PLAYER_NAME],string[144];
    GetPlayerName(playerid, namestr, MAX_PLAYER_NAME);
    format(string,144,"[Report] %s meldet Folgendes: %s",namestr,(params));
    for(new i; i<MAX_PLAYERS; i++)if(isPlayerAnAdmin(i, 1))SendClientMessage(i,ROT,string);
    return 1;
    }


    Wäre natürlich auch ne Option, aber wenn man sich lieber ein paar Zeilen sparren möchte und auf die Abrundung verzichten möchte dann würde ich lieber meine Variante nehmen.

    Kannst du auch mit Textdraws machen.
    Als Text dann einfach so: _________________
    Also Beispiel:
    http://wiki.sa-mp.com/wiki/TextDrawCreate


    Oben im Script:
    newText:strichText;


    public OnGameModeInit()
    {
    strichText = TextDrawCreate(240.0,580.0,"_______");
    return 1;
    }


    Und wo auch immer er Ihn aufrufen soll z.B. OnPlayerConnect:
    public OnPlayerConnect(playerid)
    {
    TextDrawShowForPlayer(playerid,strichText);
    return 1;
    }

    Wenn ich mich nicht täusche:
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));


    Sollte dein Problem lösen...
    Weil pID ist sogesehen die SpielerID eines zweiten Mitspielers, also so gesehen völliger Mist.

    Dann mach das so:
    ocmd:report(playerid,params[])
    {
    if(!params[0]) return SendClientMessage(playerid,-1,"Vewendung: /report [Text]");
    for(new i; i<MAX_PLAYERS; i++)
    if(isPlayerAnAdmin(i))
    {
    new pID,string[144];
    format(string,144,"[Report] %s meldet folgendes %s",pID,params);
    SendClientMessage(i,ROT,string);
    return 1;
    }
    return 1;
    }

    Aber es kann nicht nur der Admin Rank 1ser Sehen?
    Also ist nur eine Sicherheits frage.



    Er geht eine 0-500 Schleife durch, sendet bei jedem mal dem Spieler die Nachricht falls er keinen Text eingegeben hat. Also bekommt man die MSG 500 mal. Schau dir nochmal an wo du die Schleife gesetzt hast, ist nicht mal ein großer Fehler den du da gemacht hast ;)


    Habs jetzt verbessert, sollte stimmen ? :D



    Am besten fragst du dann ab ob Admin >= 1 ist ;)


    Hast du vielleicht so ne Abfrage bzw. irgendwo so ein Stock wie IsPlayerAnAdmin oder so?

    ocmd:report(playerid,params[])
    {
    if(!params[0]) return SendClientMessage(playerid,-1,"Vewendung: /report [Text]");
    for(new i; i<MAX_PLAYERS; i++)
    if(GetPVarInt(i,"Adminlevel") == 1)
    {
    new pID,string[144];
    format(string,144,"[Report] %s meldet folgendes %s",pID,params);
    SendClientMessage(i,ROT,string);
    return 1;
    }
    return 1;
    }
    Probiers mal ungefähr so.

    Sehr geehrten Leser und Leserinnen,
    ich habe vor zwei Tagen ein Dynamisches Gruppensystem Filterscript begonnen, welches ich soeben fertig bekommen habe.


    [tabmenu]


    [tab='Allgemeinen Info:']
    Es ist ein Dynamisches Gruppensystem Filterscript, man kann Spieler in eine Gruppe einladen und zusammen ein Deagle Spiel starten.
    Nachdem man /spielstarten aufruft, wird man in ein Interior gesetzt wo jeder gegen jeden deaglen kann.
    Pro Kill kriegt man +1000 Spiellgeld und +1 Score, ebenso werden die Kills und die Deaths per Textdraw gezählt.
    [tab='Allgemeinen Befehle:']
    /deaglespielen-->Spiel Erstellung starten!
    einladen-->Spieler einladen!
    /ausladen-->Spieler ausladen!
    /spielstarten-->Spiel beginnen!"
    /shop-->Sachen kaufen!
    /spielbeenden-->Spiel beenden!
    /spielverlassen-->Spiel verlassen!
    /teilnehmer-->Teilnehmer ansehen!
    [tab='Screenshots:']





    [tab='Nächste Planung:']
    Zurzeit nichts!
    [/tabmenu]


    Ps. Ist jetzt was simples, habe das Tacho von meinem Haustiersystem hergenommen.
    Damit das Filterscript, wenigstens etwas einzigartiges hat.
    Feedback und Updatetvorschläge sind erwünscht.