Beiträge von Anubis

    Zitat

    Weil du nicht mehr als 100 % health haben kannst. 1 hp = 1 % . Außerdem ist dein Text iwie schwer zu verstehen :wacko: ^^

    Warum in % ? Ist doch einfach nur eine Kommazahl ?.........wäre mir neu wenn die Lebenspunkte in Prozent gerechnet würden - aber kann ja gut sein(ehrlich gesagt - ich weiß es nicht).Schwer zu verstehen, naja - wenn man zu 100% versteht wovon ich Rede und den code auch, ist es eigentlich ganz einfach zu verstehen ;)



    Zitat

    Das Limit in SA-Mp für Health eines Spielers beträgt 100. Und im Singleplayer kann man maximal 250 Health haben.

    Trotzdem bekomme ich die Lebenspunkte bis auf 255, kann also nicht ganz stimmen. Cheater können ihre healthpoints ja auch auf 1000 hochschrauben.

    Servus,


    Ich überarbeite gerade ein bischen mein Script und mir ist zufälligerweise aufgefallen das bei meinem sethp Befehl immer interessante zahlen dabei herauskommen wenn ich die hp über 255 setze.Mit der 255er max Stringlänge kann es ja nichts zu tun haben zumal sie bei SAMP ja bei 128 liegt und bei der Zahl 255 sind es 3 wenn ich mich nicht verzählt habe ^^ Aber warum ist 255 die Grenze bei den HP ohne das irgendwelche minuszahlen entstehen ? Wenn ich zb. 500 eingebe wird in der sethp variable zwar 500 gespeichert und übergeben(laut textmessage welche ja die sethp variable ausliest und formatiert) aber im health textdraw wird dann irgendein mist angezeigt und und sekunden später sterbe ich obwohl selbst die gta interne lebenanzeige voll ist. Weiß jemand woran das liegt ?



    if(!strcmp(strget(cmdtext, 0), "/sethp"))
    {
    if(pInfo[playerid][staff] == ADMIN)
    {
    if(strlen(strget(cmdtext, 1)) && strlen(strget(cmdtext, 2)))
    {
    tId[playerid] = strval(strget(cmdtext, 1));
    GetPlayerName(tId[playerid],tName[playerid],MAX_PLAYER_NAME);
    if(IsPlayerConnected(tId[playerid]))
    {
    new Float:sethp = strval(strget(cmdtext, 2));
    format(pMsg[playerid], MAX_STRING_LENGHT, "Du hast die Lebenspunkte von %s auf %d gesetzt",tName[playerid],floatround(sethp));
    SendClientMessage(playerid,COLOR_HELLGRUEN, pMsg[playerid]);
    format(tMsg[playerid], MAX_STRING_LENGHT, "%s hat deine Lebenspunkte auf %d gesetzt",pName[playerid],floatround(sethp));
    SendClientMessage(tId[playerid],COLOR_HELLGRUEN, tMsg[playerid]);
    SetPlayerHealth(tId[playerid], sethp);
    }
    else return SendClientMessage(playerid,COLOR_ROT, "Dieser Spieler existiert nicht !");
    }
    else return SendClientMessage(playerid,COLOR_ROT, "Benutze /sethp [playerid] [health] !");
    }
    else return SendClientMessage(playerid,COLOR_ROT, "Du bist kein Administrator !");
    }




    MfG


    Anubis

    Na also^^



    #define PlayerInfo
    Kannst du aus deinem Script löschen da es keinen Zweck erfüllt und daher auch nicht notwendig ist.Das andere kannst du so lassen.




    Zeile 705 muss demzufolge so aussehen --->
    if(pInfo[playerid][gLeader] == 3 || pInfo[playerid][pMember] == 3)






    EDIT ->


    Mir ist aufgefallen das es pMember garnicht in deinem enum gibt aber trotzdem verwendest du das in der Funktion. Musst du dann wohl noch mit einfügen.

    Hast du die PlayerInfo denn schon irgendwo in deinem Script mal verwendet ohne das Fehler aufgetreten sind ? Oder hast du das auch gerade eben erst erstellt ? Denn der Fehler kann nurnoch an der definition der PlayerInfo liegen da der Torcode vom Aufbau her absolut fehlerfrei ist.


    Um es nochmal an einem bespiel zu erklären ->



    new pInfo[MAX_PLAYERS][PlayerInfo];


    enum PlayerInfo
    {
    variable1,
    variable2,
    }



    Wenn du dann eine Variable ansprechen möchtest sieht das zb so aus ->

    pInfo[playerid][variable1] = 1337;


    oder


    pInfo[playerid][variable2] = 1337;


    usw.....






    EDIT: Beispiel hinzugefügt

    Normal wird eine "PlayerInfo" ja so aufgebaut, die Frage ist...wie schaut das bei dir aus ?


    new pInfo[MAX_PLAYERS][PlayerInfo];


    enum PlayerInfo
    {
    variable1,
    variable2,
    usw,
    }

    Versuch doch mal spasseshalber nur eine mögliche Bedingung.


    if(PlayerInfo[playerid][pLeader] == 3)



    Mal schauen ob der Compiler dann immernoch was zu meckern hat.

    Also vorher hattest du auf jeden Fall ein paar mehr fehler drin, die sache ist nur das der compiler immer abgebrochen hat weil in zeile 705 zuviele fehler waren - weshalb er dann alle restlichen Fehler nach zeile 705 nicht angezeigt hat. Dein Code ist jetzt aber einwandfrei und ich weiß beim besten willen nicht was bei 705 das problem ist.........mysteriös.

    Die Objectid "17546" vom Tor gehört nicht da rein auch wenn es in der Wiki etwas irreführend so erklärt wird.Zudem fehlte da noch eine Klammer.



    Mach es mal so ->



    //----------------------Tore--------------------------------------
    if (strcmp("/auf", cmdtext, true, 10) == 0)//hier der befehl der eingegeben werden muss das das tor aufgeht
    {
    if(PlayerInfo[playerid][pLeader] == 3 || PlayerInfo[playerid][pMember] == 3)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0, 1141.7572021484, 1355.6986083984, 3.2196474075317)) //hier die koordinate zu der spieler fahren muss das das tor aufgeht die 10.0 ist der radius
    {
    if(status == 0)
    {
    MoveObject(tor1,1141.7572021484, 1355.6986083984, 6.2196474075317,1.0);// hier die koordinate hin wo das tor offen ist 1 ist hier die geschwindigkeit
    SendClientMessage(playerid, COLOR_GREEN, "Hebebühne hochgefahren");
    status = 1;
    }
    else if(status == 1)
    {
    MoveObject(tor1,1141.7572021484, 1355.6986083984, 1.7696316242218,1.0);// hier die koordinate wo das tor zu ist 1 ist auch hier wieder die geschwindigkeit
    SendClientMessage(playerid, COLOR_RED, "Hebebühne runtergefahren");
    status == 0;
    }}}
    return 1;
    }

    if(IsPlayerInRangeOfPoint(playerid,radius als float,x,y,z))


    MoveObject(tordefinition,x, y, z, geschwindigkeit als float);




    So muss das ausschauen. Und jetzt guck mal was bei dir wohl falsch ist ;)

    Hm ne so wird das nix, da musst du du schon die ganze Funktion + ProxDetector Funktion posten, eventuell versteckt sich der Fehler ja dort.Das einzige was man jetzt sieht ist das der formatierte string mittels der Funktion "ProxDetector" an Spieler in einem Umkreis von 20 gesendet wird.Bekommt denn der angerufene seinen Text auch ?, denn das ist jetzt hier nicht ersichtlich.....

    Und was soll das nun bringen ? Das Label wird dann trotzdem für jeden sichtbar erstellt und nicht nur für die Cops...........



    Seine Frage ist doch eindeutig



    Zitat

    Kann mir jemand helfen & sagen, wie ich das hinbekomme, dass Wanteds:, Grund:, & Zeuge: nur Cops sehen?


    Geht nicht........er kann höchstens einen Befehl um ein entsprechendes Label beim Spieler zu erstellen aber sehen tut es jeder...egal ob Cop oder nicht.

    Zitat

    Das hatt aber seine Frage noch nicht beantwortet...

    Ich habe schon in meinem ersten Post die Frage beantwortet aber ihr wollt ja nicht hören ;)


    Klar geht das


    for-Schleife welche überprüft obs ein Cop ist und dann http://wiki.sa-mp.com/wiki/CreatePlayer3DTextLabel benutzen.


    Habt ihr seine frage tatsächlich immernoch nicht verstanden........



    Er will das zb über einem Verbrecher ein Label mit seinem Fahndungslevel zu sehen ist. Das Label über dem Verbrecher sollen dann aber nur die
    Cops sehen - das geht aber nicht..................wie denn auch ? Es gibt überhaupt keinen passsenden Parameter der das möglich machen könnte.

    IsACop ist dazu da um das Label über dem Spieler anzuzeigen, beispielsweise unter "OnPlayerSpawn". Mit IsACop wird überprüft ob der Spieler ein Cop ist und wenn ja wird ihm das Label zugewiesen...mehr nicht.




    Hat mit seinem Problem recht wenig zu tun........

    Finde da steckst du ihn aber gerade mit anderen pappenheimer in einen Schublade Metricks......Er hat einen funktionierenden Code und will wissen wie er das 3D label so konfigurieren kann das es nur für Cops angezeigt wird.




    Aber ich bin mal so frei und gebe direkt eine Antwort darauf.. ......man kann einen 3D Text erstellen und an einen Spieler binden sodass es an ihm klebt so wie du es jetzt in deinem Code hast. Aber das Label nur für bestimmte Spieler anzeigen geht nicht.