[Help] Bessere Möglichkeit Tore öffnen/schließen?

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
  • Guten Tag Samp. Und zwar suche ich eine besser Lösung Tore zu schließen udn zu öffnen leide rkomeich grad nicht weiter also ich hab mir gedacht och mach das so


    :


    enum FrGates{
    Float:g_x,
    Float:g_y,
    Float:g_z,
    g_frakid,
    OG_id
    }
    new TorInfo[][FrGates] ={
    {1103.0999800,-1742.6999500,13.3000000,0,0}, //am Spawn Parkplatz Schranke
    {1545.6999500,-1627.4000200,15.2000000,1,1}, //Eingagstor LSPD SPOT
    {1587.5000000,-1637.8994100,14.8000000,1,2} //Garage LSPD Eingang
    };


    da hab ich mir gedacht lese, ich mal so die Positionen von jedem Tor aus.
    nun weiß ich nicht wie ich die Tore richtig öffne.. also hier mal mein Code:


    ocmd@2:auf,open(playerid,params[])
    {
    for(new i=0; i<sizeof(TorInfo);i++)
    {
    if(!IsPlayerFrak(playerid, TorInfo[i][g_frakid] || TorInfo[i][g_frakid]>0))continue;
    if(IsPlayerInRangeOfPoint(playerid, 7, TorInfo[i][g_x],TorInfo[i][g_y],TorInfo[i][g_z]))
    {

    }
    return 1;

    }
    return 1;
    }


    nun weiß ich nicht wie ich nur das Tor öffnen lasse, wo der User auch in der nähe steht und nicht, dass wenn der vorm LSPD steht, das Tor am LSPD UND irgendwo in LV sich öffnet das selbe geht auch fürs schließen.. ich hoffe ihr versteht mein Vorhaben..


    /e 'OG_id' da hab ich mir gedacht dass man mit der (O)bject) (G)ate_id die Objecte Steuern kann dammit man einfach nur die Tore in das Enum eintragen muss und sie dann funktionieren
    /e push

    -Ted.

    2 Mal editiert, zuletzt von Ted. ()

  • Hm, lass die Tore doch bei ongamemodeinit mit einer ähnlichen Schleife erstellen und schreib ins enum am besten noch die Modelid und die Position des geöffneten Tors.

  • Hm, lass die Tore doch bei ongamemodeinit mit einer ähnlichen Schleife erstellen und schreib ins enum am besten noch die Modelid und die Position des geöffneten Tors.


    hmm.. also warte ich hab das etwas blöd erklärt also ich möchte die Tore nur ins enum eintragen müssen damit sie sich öffnen und schließen(per Timer) ich glaub das mit dem Timer wird nicht so das problem ehr das mit dem öffnen ohne ständig
    Zb


    if(IsPlayerFrak())
    {
    if(IsPlayerInRangeOfPoint(...))
    {
    //blaablabla
    }
    }


    ich dachte mit diesem 'OG_id' lass ich mal die eigne id rauslesen iwie ...

    -Ted.

  • ich würde es so machen:


    enum FrGates{
    g_Model,
    Float:g_Closed[3],
    Float:g_Opened[3],
    g_frakid,
    OG_id
    }
    new TorInfo[3][FrGates] ={
    {1337,{1103.0999800,-1742.6999500,13.3000000},{1103.0999800,-1742.6999500,3.3000000},0,0}, //am Spawn Parkplatz Schranke
    {1337,{1545.6999500,-1627.4000200,15.2000000},{1545.6999500,-1627.4000200,5.2000000},1,0}, //Eingagstor LSPD SPOT
    {1337,{1587.5000000,-1637.8994100,14.8000000},{1587.5000000,-1637.8994100,4.8000000},1,0} //Garage LSPD Eingang
    };


    OnGamemodeinit:
    for(new i=0; i<sizeof(TorInfo);i++)
    {
    TorInfo[i][OG_id]=CreateObject(TorInfo[i][g_Model],TorInfo[i][g_Closed][0],TorInfo[i][g_Closed][1],TorInfo[i][g_Closed][2],0.0,0.0,0.0);
    }


    Beim CmD
    ocmd@2:auf,open(playerid,params[])
    {
    for(new i=0; i<sizeof(TorInfo);i++)
    {
    if(!IsPlayerFrak(playerid, TorInfo[i][g_frakid] && TorInfo[i][g_frakid]!=0))continue;
    if(IsPlayerInRangeOfPoint(playerid, 7, TorInfo[i][g_Closed][0],TorInfo[i][g_Closed][1],TorInfo[i][g_Closed][2]))
    {
    MoveObejct(TorInfo[i][OG_id], TorInfo[i][g_Opened][0], TorInfo[i][g_Opened][1], TorInfo[i][g_Opened][2],10.0,0.0,0.0,0.0);
    SetTimerEx("CloseGate",5000,false,"d",i);
    SendClienetMessage();
    return 1;
    }
    }
    SendClienetMessage();//Kein Tor in der nähe oder nicht in der Fraktion
    return 1;
    }


    Neuer Public für den Timer:

    forward CloseGate(id);
    public CloseGate(id)
    {
    MoveObejct(TorInfo[di][OG_id], TorInfo[id][g_Closed][0], TorInfo[id][g_Closed][1], TorInfo[id][g_Closed][2],10.0,0.0,0.0,0.0);
    }


    Alle angaben ohne gewähr. Die Reihenfolde der Parameter der Nativefunctions können abweichen, da ich siese nur aus dem Kopf geschrieben habe und nicht ins wiki gekuckt hab.



  • ..... Ach logisch .. wieso komm ich nur nicht auf sowas .. :D Danke danke danke genau das hab ich gesucht und auch irgendwie versucht irgendwie hin zu bekommen :D leider nicht geschafft aber jetzt weiß ich wenigstens wie ich anzufangen hab danke nochmal :)) :thumbup:

    -Ted.