Beiträge von Kaliber

    Alles klar, vielen Dank für diese ganzen Informationen ich frag mal meine Hellseherin.



    Laut seiner Aussage ja nicht, @Kaliber

    Tut mir Leid, mein Post war nicht an dich, sondern an ihn gerichtet ^^


    Das funktioniert egal wo man einsteigt.


    Das bedeutet...er hat einen anderen Fehler in seinem Code :)


    Wenn er sich z.B. nur auf eine Vehicleid bezieht in seinem Code könnte ein Fehler auftreten, denn die Anhänger eines Zuges haben intern eine andere vehicleid ^^

    Unter OnPlayerStateChange kannst du folgendes abfragen:



    C
    if(newstate == PLAYER_STATE_PASSENGER && GetVehicleModel(GetPlayerVehicleID(playerid)) == 538) //Enter modelid oder vehicleid abfragen
    {
        if(SpielerInfo[playerid][pTicket] == false) //Pseudocode..hier wird geschaut ob er ein Ticket hat...
        {
            RemovePlayerFromVehicle(playerid); //Hier wird der Spieler aus dem Zug geworfen
        }
    }

    Mal so als "Pseudocode" musst du natürlich noch anpassen :)

    Die Funktion sieht so aus:


    CreateDynamic3DTextLabel(const text[], color, Float:x, Float:y, Float:z, Float:drawdistance, attachedplayer = INVALID_PLAYER_ID, attachedvehicle = INVALID_VEHICLE_ID, testlos = 0, worldid = -1, interiorid = -1, playerid = -1, Float:distance = 100.0);


    Also einfach so: (INTERIORID durch die Zahl deines Interiors ersetzen)


    CreateDynamic3DTextLabel("[ "IINFO2"Stadthalle San Fierro"#HTML_WEISS" Um das Menu zu öffnen verwende\n"HTML_WEISS"Tase: N",SAMP_WEISS,361.8299,173.7191,1008.3828,0,0,0,+1,10,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1,0,INTERIORID);

    Das Feuer sind meistens Objekte.


    Dementsprechend kannst du mit DestroyObject diese entfernen.


    Meistens wird sogar ein Feuer Objekt an den Spieler attacht um es so aussehen zu lassen, als ob dieser brennt. (Nebenher wird mit einem Timer immer ein wenig Leben abgezogen)


    Natürlich kann man, wenn dies so gemacht wird, einfach das Objekt auch hier zerstören.


    Es gibt aber auch sog. Client-seitiges Feuer. Wirf man z.B. eine Handgranate und diese explodiert gibt es auch feuer (selbiges mit CreateExplosion).
    Dieses Feuer ist jedoch für jeden Spieler anders. Dieses kann man mit einem Feuerwehrlöscher z.B. löschen und wenn man selbst brennt, mit Wasser. Allerdings hat man Serverseitig (also mit Skripting) keinen Einfluss auf dieses Client Feuer :)

    h hoffe du hast eine Lösung, danke für deinen Beitrag. Gruß.

    Das könntest du z.B. so machen:



    Ist jetzt bissl pseudo-code..musste natürlich anpassen.


    Aber so verhindert er, dass er schießt...den delay von 500ms kannste theoretisch verkürzen, dann sieht es schöner aus...allerdings wenn du ein paar "Try-Harder Kiddies" hast..könnten die versuchen das ganz oft..ganz schnell zu machen..und es besteht eine 0.1% ige Wahrscheinlichkeit, dass sie es schaffen zu schießen ^^


    Kannst das ja dann triggern unter OnPlayerWeaponShot und sie bannen (oder einfach nur wieder die Waffe geben) xD


    //Edit: Am sichersten isses eigentlich, wenn du das @reset rausmachst..also dem die Waffe gar nicht mehr wiedergibst. Dann muss er sie mit Q halt wieder auswählen...aber dann kann er nicht versuchen bug-using zu betreiben :)

    Das liegt dann an der DrawDistance.


    Entweder du hast sie serverseitig nicht hoch genug gesetzt oder du hast zu viele Objekte mit CreateObject erstellt.


    Oder du hast bei deinem Client mit ESC die DrawDistance runter gesetzt ^^

    Dann befindest du dich wahrscheinlich in einem Interior :)


    und in deinem /deagle Befehl wird abgefragt, ob du dich in diesem Interior (und evtl einer bestimmten VW) befindest...und anscheinend ist das der Fall.


    Allerdings bist du nicht an den richtigen Koordinaten.

    Naja schau mal:



    C
    //Du schreibst das hier rein zum beispiel:
    stock createText()
    {
        Create3DTextLabel(...); //usw
    }

    Und nu stell dir vor, dass du diese Funktion nie aufrufst...


    Dann werden die 3DTextLabel natürlich auch nicht erstellt.


    Oder davor...tritt ein Fehler auf, am besten auch mal crashdetect laden.


    Denn an sich ist der Code vollkommen richtig, also muss der Fehler woanders liegen :)