Beiträge von Syno

    Das ist die Lösung für...


    Und du meinst das wüsste ich nicht und musst hier jetzt rum spammen?
    Ich redifiniere in meinem Code ganz bestimmt nicht MAX_PLAYERS, dafür ist er nicht da also hör jetzt auf zu spammen!

    dcmd_lock(playerid,params[])
    {
    #pragma unused params
    if(SpielerInfo[playerid][pFraktion] == 1)
    {
    new Float: X, Float: Y, Float: Z;
    for(new i;i<sizeof(Streifenwagen);i++)GetVehiclePos(i, X,Y,Z);
    if(IsPlayerInRangeOfPoint(playerid,2.0, X, Y, Z))
    {
    if(SpielerInfo[playerid][pFraktion] == 1) // Ersetzen mit der Abfrage ob das Fahrzeug abgeschlossen ist.
    {
    GameTextForPlayer(playerid,"~g~FAHRZEUG AUFGESCHLOSSEN",1000,3);
    }
    else
    {
    GameTextForPlayer(playerid,"~r~FAHRZEUG ABGESCHLOSSEN",1000,3);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,FARBE_GRAU3,"Du hast kein Auto");
    }
    return 1;
    }
    Du musst in der Schleife auch die VehiclePos abfragen ;)

    Dann nutz da bitte MAX_PLAYERS das ist etwas schneller als die Variante


    Es gibt Leute die lassen MAX_PLAYERS aber auf 500 und das geht dann sicher nicht schneller als GetMaxPlayers(); bei einem 100Slot Server.

    Ich release heute mal ein kleines System welches ich letzte Nacht kurz geschrieben habe. Es ist dazu da, einem Spieler einen Dialog anzuzeigen, zb. Mit allen connected Spielern oder mit allen Admins etc. Man kann dann ganz leicht unter OnPlayerDialogResponse das Listitem benutzen.


    Als erstes erstellen wir ein Makro für den Dialog.
    #define DIALOG_PLAYERS 1525 //1525 = Eindeutige DialogID.
    Dann brauchen wir noch eine Variable in der das Listitem zwischengespeichert wird.
    new item[MAX_PLAYERS][MAX_PLAYERS]; //Das 1. MAX_PLAYERS ist dafür da das das Array für jeden Spieler einzeln erstellt wird. Das 2. ist für die einzelnen Listitems da.
    Dann der Befehl:
    if(strcmp("/players", cmdtext, true) == 0)//Standart-Befehl halt
    {
    new iItem;//Variable damit das listitem richtig gesetzt wird
    new string[MAX_PLAYER_NAME*MAX_PLAYERS];//String
    new dName[MAX_PLAYER_NAME];//String für den Namen
    for(new i; i<MAX_PLAYERS; i++)//Schleife die alle Spieler durchgeht
    {
    if(!IsPlayerConnected(i))continue;//Wenn Spieler nicht Connected -> Continue
    //if(!IsPlayerAdmin(i))continue; <- Würde alle RCON-Admins anzeigen.
    GetPlayerName(i, dName, sizeof dName);//String mit Namen setzen
    format(string, sizeof string, "%s\n%s", string, dName);//String für den Dialog erweitern + nächsten Namen reinsetzen
    item[playerid][iItem] = i;//Listitem auf Playerid setzen
    iItem ++;//Listitem hochsetzen damit es das nächste ist
    }
    ShowPlayerDialog(playerid, DIALOG_PLAYERS, DIALOG_STYLE_LIST, "Spieler:", string, "Weiter","Abbrechen");//Dialog anzeigen
    return 1;
    }
    Dann noch ganz simpel bei OnPlayerDialogResponse:
    if(dialogid == DIALOG_PLAYERS)//Dialogid abfragen
    {
    if(!response)return 1;//Wenn er auf Abbrechen drückt -> Abbrechen
    //Hier kannst du nun item[playerid][listitem] für den gewählten Spieler verwenden.
    SendClientMessage(item[playerid][listitem], -1, "Dein Name wurde angeklickt!");
    }


    Wenn ihr noch Fragen habt, schreibt sie einfach hier im Thema!
    Bei Bugs natürlich auch ;)


    MfG.

    Er hat doch nur des ! gelöscht ??


    Aber wenn man das ! weglässt ist jeder kill ein Teamkill.


    Nein da muss ein == ?
    if(TeamVonSpieler1 == TeamVonSpieler2)// Wenn TeamVonSpieler1 ist das selbe wie TeamVonSpieler2 dann:
    {
    //TEAMKILL
    }
    Bei dir ist es:
    if(TeamVonSpieler1 != TeamVonSpieler2)// Wenn TeamVonSpieler1 ist nicht das selbe wie TeamVonSpieler2 dann:
    {
    //TEAMKILL
    }

    Wir sollen aber glaube ich nicht eine biblische Geschichte direkt nacherzählen sondern eher auf das heutige Leben beziehen..


    Muss die Person zeigen das irgendwas auch Heute noch so ist, oder kann es auch so sein, das es heute auch anders ist?
    Ich würde nämlich evtl. davon schreiben das Jesus niemals was gepredigt hat, was er nicht selber eingehalten hat wie zB. Gewalt anwenden.

    ocmd:tickets(playerid,params[])
    {
    #pragma unused params
    if(!isPlayerAnAdmin(playerid,1)) return SendClientMessage(playerid,HELLROT,"AdmCmd: Du besitzt keine Rechte, um diesen Befehl zu benutzen!");
    if(GetPVarInt(playerid,"AdminDienst")==0)return SendClientMessage(playerid,HELLROT,"AdmCmd: Du musst in den Dienst gehen, um diesen Befehl zu benutzen!");
    new bool:var;
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(GetPVarInt(i,"ReportTicket") == 1 && IsPlayerConnected(i))
    {
    var = true;
    new string[128];
    format(string,sizeof(string),"[OFFEN] Name: %s | ID: %i",SpielerName(i),i);
    SendClientMessage(playerid,LILA,string);
    }
    }
    if(var == false)
    {
    SCM(playerid,HELLROT,"AdmCmd: Derzeit sind keine Report Tickets offen.");
    }
    return 1;
    }

    Beim ersten muss noch sowas rein:
    AdminVariable = rank;
    Beim zweiten (Aus freier Hand geschrieben + ungetestet):
    new string[500];
    for(new i; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    format(string, sizeof string, "%s\n%s", SpielerName(i), string);
    }
    ShowPlayerDialog(playerid, MAXPLAYERS, DIALOG_STYLE_LIST, "{FF0066}A{FFFFFF}dmin {FF0066}C{FFFFFF}ontrol {FF0066}P{FFFFFF}anel", string,"Ausführen","Spielen");
    Wenns nicht klappt schick mir TV Daten oderso.


    Was ist playerid und was ist forplayerid?


    Playerid = Der der weg geht
    Killerid = Der dem playerid halt ausgestreamt wird.

    Spoiler anzeigen
    public OnPlayerStreamOut(playerid, forplayerid)
    {
    new string[80];
    format(string, sizeof(string), "Your computer has just unloaded player ID %d", playerid);
    SendClientMessage(forplayerid, 0xFF0000FF, string);
    return 1;
    }



    EliteBread:
    Nein, nur ganz am Ende vom OnPlayerCommandText das return 0; mit meinem Code ersetzen.

    Wie kann ich einen Timer für playerid killen?


    Mit einer Variable:
    //oben:
    new BankraubTimer[MAX_PLAYERS];
    //Benutzung:
    BankraubTimer[playerid] = SetTimerEx(...);
    Und dann:
    KillTimer(BankraubTimer[playerid]);



    EliteBread:
    Bei OnPlayerCommandText statt dem return 0; am ende dieses hier:
    return SendClientMessage(playerid, COLOR_RED, "Diesen Befehl gibt es nicht!");