Beiträge von 4#Future

    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!