Leben verlieren, sobald Spieler in Rauchwolke ist (Weapon ID: 17)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey Leute,


    ich war mal auf einem Server, wo man Leben verloren hat, sobald man in dem Rauch/Gas der Rauch/Gasgranate stand (ID: 17).


    Ich möchte wissen, ob ihr wisst wie die Abfrage, bzw. das ganze scripttechnisch aussehen würde? :)


    Gruß


    DCF

  • wie die Abfrage lautet, ob man in diesem Rauch (der Rauchgranate) steht, oder nicht...


    Dafür gibt es keine Funktion und das kannst du auch nicht 100%ig ermitteln.


    Nutze, wie schon erwähnt einfach IsPlayerInRangeOfPoint ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ich hoffe ich erzähle hier jetzt nicht totalen Mist, aber müsste man nicht, um die Position der Rauchgranate herauszufinden (wo sie hingeworfen wurde), den Punkt
    speichern, zu dem der Spieler beim werfen der Granate guckt und dementsprechend die Koordinaten des Punktes in den Timer einbauen (IsPlayerInRangeOfPoint(playerid, 5.0, rauchgranate_x, rauchgranate_y, rauchgranate_z))?


    /edit:
    Zumindest ist das die einzige/beste Methode, die mir gerade einfällt :)
    Ist aber viel arbeit :P

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • ICy.: bei deinem würde er aber nur 1mal Leben verlieren, dafür muss dann die Posi und eine Var für die Time global erstellt werden.
    bei OnPlayerWeaponShot hat man das Problem, dass es nicht bei jeder Waffe aufgerufen würd.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • zu dem der Spieler beim werfen der Granate guckt und dementsprechend die Koordinaten des Punktes in den Timer einbauen


    Genau so muss man es machen, hier ein Beispiel:



    const Float:distance = 5.0; //Wie weit er die Granate wirft..
    new Float:x,Float:y,Float:z,Float:a;
    GetPlayerPos(playerid, x, y, z),GetPlayerFacingAngle(playerid, a);
    x += (distance * floatsin(-a, degrees));
    y += (distance * floatcos(-a, degrees));


    //x,y und z an den Timer übergeben


    //Dann in dem Timer:
    for(new i,Float:heal; i<MAX_PLAYERS; i++)
    {
    if(IsPlayerInRangeOfPoint(i,7.5,x,y,z)) GetPlayerHealth(i,heal),SetPlayerHealth(i,heal-2.0);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • ICy.: bei deinem würde er aber nur 1mal Leben verlieren, dafür muss dann die Posi und eine Var für die Time global erstellt werden.
    bei OnPlayerWeaponShot hat man das Problem, dass es nicht bei jeder Waffe aufgerufen würd.


    Das ist mir auch gerade aufgefallen als ich das getestet habe :)
    Schade eigentlich, dass das nicht bei jeder Waffe aufgerufen wird.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Schade eigentlich, dass das nicht bei jeder Waffe aufgerufen wird.


    Man kann sich einen Callback ganz simpel basteln, der das checkt:


    forward WeaponCalled(playerid, weaponid);


    //unter OnPlayerKeyStateChange
    if(newkeys & KEY_FIRE && GetPlayerWeapon(playerid) != 0) WeaponCalled(playerid, GetPlayerWeapon(playerid));


    //Dann weiter unten im Skript
    public WeaponCalled(playerid, weaponid)
    {
    if(weaponid == 16)
    {
    //Hier hat der Spieler eine Granate geworfen
    }
    return 1;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S