Beiträge von 4#Future

    Guten Tag,


    ich hätte mal eine kleine Frage...
    Und zwar gibt es ja die Möglichkeit die Spielernamen, der gerade auf dem Server befindlichen
    Spieler einzufärben, quasi bunt zu machen.


    Einige Server nutzen dies z.B. dafür Polizei oder einigen Jobs bestimmte Farben zu geben.


    Das Problem bei mir... mit "SetPlayerToTeamColor()" wird dies normaler weise getan, doch ist
    man dann auch auf der Karte, mit der definierten Farbe, makiert und die Position ist für alle sichtbar.


    Wie bekomme ich gleich nochmal die jeweilige Makierung des Spielers, dann auf der Karte
    wieder weg? - Ich habe das total vergessen :D


    Bzw. man kann doch die Makierungen, nur von Spielern, mit welchen Farben auch immer deaktivieren, oder?



    Freundliche Grüße


    4#Future Reallife

    Ok Ihr zwei, passt mal auf...


    Ihr habt Eure Pickups sicherlich mit 'AddStaticPickup...' eingefügt.
    Nun, für Euer Problem gibt es eine SA-MP Grundfunktion, nämlich 'public CustomPickups()'.
    EDIT: Ihr erstellt eine Funktion namens 'CostumPickups()' und vergesst das 'forward CostumPickups()' nicht!


    Ihr fügt jetzt folgenden Code ein, um erstmal Euer Pickup zugänglich zu machen:


    public CustomPickups()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerToPoint(2.0, i, KORDI-X, KORDI-Y,KORDI-Z))
    {
    GameTextForPlayer(i, "~w~Hier meinen Text", 5000, 3);
    }
    }
    }
    return 1;
    }

    Nun, du setzt für 'KORDI-X,Y & Z' deine Pickup Koordinaten ein.
    Würdest du nun in das Pickup laufen würde 5 Sekunden lang da stehen 'Hier mein Text'.


    Wenn du nun möchtest, dass nur eine bestimme Fraktkion, oder Spielerklasse dieses
    Pickup ansehen soll, machst du eine entsprechende If-Anweisung vor das 'GameTextFor...'.
    Um dir ein Beispiel zu geben, nur Admins können die geheimen Infos sehen:



    public CustomPickups()
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerConnected(i))
    {
    if(PlayerToPoint(2.0, i, KORDI-X, KORDI-Y,KORDI-Z))
    {
    if(IsPlayerAdmin(i))
    {
    GameTextForPlayer(i, "~w~Hier meinen Text", 5000, 3);
    } else {
    SendClientMessage(i, COLOR_WHITE, "Du bist kein Admin und kannst die geheimen Infos nicht lesen!");
    return 1;
    }
    }
    }
    }
    return 1;
    }
    Und das wars dann auch schon! Weitere Fragen oder Probleme? Antwortet einfach meinem Post...


    Mit freundlichem Gruß - #4-Future | Philip (Scripter)

    Hey Leute,


    Ich habe heute ein weiteres kleines Tutorial für Euch... | Thema: einen Spieler finden


    Sicherlich haben Sich schon oft einige von Euch gefragt, wie ich einen Mitspieler
    finden kann, ohne mich zu Ihm zu teleportieren.
    Hier ist die Lösung...


    Schritt 1 - Einen Befehl erstellen (z.B. /findplayer)


    if(strcmp(cmd, "/findplayer", true) == 0)
    {
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZE: /findplayer [SpielerID/SpielerName]");
    return 1;
    }
    }


    Schritt 2 - Position ermittel


    if(strcmp(cmd, "/findplayer", true) == 0)
    {
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZE: /findplayer [SpielerID/SpielerName]");
    return 1;
    }
    new Float:pPosX,Float:pPosY,Float:pPosZ;
    GetPlayerPos(giveplayerid, pPosX, pPosY, pPosZ);
    }


    Am besten wäre es, wenn Ihr das 'New Float:...' am besten vor dem Befehl definieren
    könntet... warum, werde ich später noch erwähnen! Also es sollte dann so aussehen:


    new Float:pPosX,Float:pPosY,Float:pPosZ;


    if(strcmp(cmd, "/findplayer", true) == 0)
    { ...


    Schritt 3 - Position des Spielers rot makieren lassen

    new Float:pPosX,Float:pPosY,Float:pPosZ;


    if(strcmp(cmd, "/findplayer", true) == 0)
    {
    giveplayerid = ReturnUser(tmp);
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_GRAD1, "BENUTZE: /findplayer [SpielerID/SpielerName]");
    return 1;
    }
    GetPlayerPos(giveplayerid, pPosX, pPosY, pPosZ);
    SetPlayerCheckpoint(playerid, pPosX, pPosY, pPosZ, 5.0);
    }


    Theoretisch werd ich an dieser Stelle fertig, doch was haben wir vergessen?
    ...natürlich wir müssen den Checkpoint entfernen, sobald wir bei dem Spieler angekommen sind.


    Bei der Funktion 'OnPlayerEnterCheckpoint' fügt Ihr folgendes hinzu:


    public OnPlayerEnterCheckpoint(playerid)
    {
    if(PlayerToPoint(15.0, playerid, pPosX, pPosY, pPosZ); { DisablePlayerCheckpoint(playerid); }
    }


    Sollte die Funktion bei Euch noch nicht vorhanden sein, macht Ihr einfach bitte unter
    das 'if(PlayerToPoint...' ein 'return 1;' und ihr habt keine Probleme damit!


    So und das wars dann auch schon! Nun könnt Ihr andere Spieler auf Euer Karten
    finden, ohne Euch direkt hinzutelepotieren...

    Hey Leute,


    nach langem Suchen bin ich auf die Lösung des Problems gestoßen, dass bei der 0.3a Version auftritt.
    Bisher kann man keine Fahrzeuge abschleppen, doch dies ändert sich mit folgendem Codeschnippsel:


    (fügt Ihn einfach über/unter 'OnPlayerStateChange' ein und danach funktionert es)


    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if((newkeys==KEY_ACTION)&&(IsPlayerInAnyVehicle(playerid))&&(GetPlayerState(playerid)==PLAYER_STATE_DRIVER))
    {
    if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 525)
    {
    new Float:pX, Float:pY, Float:pZ;
    GetPlayerPos(playerid, pX, pY, pZ);
    new Float:vX, Float:vY, Float:vZ;
    new Found = 0;
    new vid = 0;
    while((vid<MAX_VEHICLES)&&(!Found))
    {
    vid++;
    GetVehiclePos(vid,vX,vY,vZ);
    if((floatabs(pX-vX)<7.0)&&(floatabs(pY-vY)<7.0)&&(floatabs(pZ-vZ)<7.0)&&(vid!=GetPlayerVehicleID(playerid)))
    {
    Found=1;
    if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)))
    {
    DetachTrailerFromVehicle(GetPlayerVehicleID(playerid));
    }
    AttachTrailerToVehicle(vid,GetPlayerVehicleID(playerid));
    // SendClientMessage(playerid,0xFFFF00AA,"Das Auto ist am Hacken!");
    return 1;
    }
    }
    }
    }
    return 1;
    }
    Für alle die hiernach gesucht haben... hier ist es :D


    Der jenige der im Abschlepper sitzt muss dann nur noch die Aktions-Taste drücken
    und schon hängt das Auto am Hacken!


    MfG - #4-Future (Philip)

    Hallo Jungs & Mädels,


    ich habe eine kurze Frage.
    Für meine Statsanzeige würde ich nicht nur gern den 'CarKey', also die VehicleID anzeigen lassen,
    sondern auch den Fahrzeugname des Spielers. Das wirft mich vor ein Problem...



    new playername[50];
    GetPlayerName(targetid, playername, sizeof(playername));
    new cartext[20];
    if(PlayerInfo[playerid][pPcarkey] != 999 && strcmp(playername, CarInfo[PlayerInfo[playerid][pPcarkey]][cOwner], true) == 0) { cartext = "%s"; }


    Ich habe keine Ahnung wie ich die %s Variable definieren kann... für sie sollte dann der Name des
    Fahrzeugs, also in meinem Script CarInfo[vehicleid][cDescription] (z.B. Huntly, Cheetah, ...) da stehen.


    Quasi muss für %s überprüft werden, welches Car in der cars.cfg dem Spieler gehört bzw. was zu
    seinem Namen passt und die Beschreibung des Cars.


    Könnt Ihr mir helfen? Danke... im Voraus!