Frage an den scripter von sa-mp.de server (Auto... Tore)

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 Morgen alle zusammen ich wollte gerne mal nach fragen wie der scripter von sa-mp.de samp server die tore gemacht hat das die aufgehen sobalt sich einer zu den tor bewegt ich habe es immer mit timer gemacht doch es spackte gib da noch andere möglichkeiten ?


    ps der server ist gemeint 188.40.86.88:7777

    Einmal editiert, zuletzt von DJSatrox () aus folgendem Grund: edit

  • Du machst eine if(IsPlayerOnRangeOfPoint(playerid...


    und wenn er da ist, öffnet sich das tor :)


    und wo hin das abfragen es muss doch geupdatet werden und du hast vergessen das auch eine schleife erforderlich ist oder ? bin ich da veraltet ^^


  • Evtl OnPlayerUpdate? kA :D


    welche schleife??


    Da, wo das tor aufgehen soll....


    eine MAX_PLAYERS i++ schleife wo der druch alle players geht ?



    SetTimer("Nerdtor",1000,1);
    Public NerdTor()
    {
    if(IsPlayerOnRangeOfPoint(playerid...
    {
    moveobject(nerd,x,y,z);
    return 1;
    }

    das soll so gehen ?

  • Du kannst auch mit SetTimerEx arbeiten, dann ist eine Schleife nicht nötig ! ;)


    Bsp:


    //Bei OnPlayerConnect
    SetTimerEx("Up", 1000, 1, "i", playerid);


    //Callback
    forward Up(playerid);
    public Up(playerid)
    {
    if(IsPlayerInRangeOfPoint(playerid, X, Y, Z)) //Natürlich ersetzen
    {
    MoveObject(...);
    }
    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

  • if(IsPlayerOnRangeOfPoint(i //Hier kommt denn aber "i" Statt Playerid hin^^


    ja das mir auch klar nur meine frage ist jetzt muss man eine schleife machen und gibt es net noch eine ander möglichkeit anstatt 1000 timer zu erstellen ?
    weil das kostet auch enorm resorces

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • new bool:door;
    forward Timer();public Timer(){ for(new i=0;i!=MAX_PLAYERS;i++) { if(IsPlayerConnected(i)) { if(IsPlayerInRangeOfPoint(i,5.0,x,y,z))
    { if(door == false)
    { MoveObject(blaaaa //hier öffnen lassen
    door=true; SetTimer("Timer2",5000,0); } } } }}
    forward Timer2();public Timer2(){ MoveObject(blub //lass das Tor hier wieder zu gehen. door=false;}


    MFG!

    now @ glowfire CMS.

  • Nein, es gibt keine andere Möglichkeit als einen Timer, aber du benötigst ja nur 1nen, bzw wenn du schon einen hast, kannst du alles auf 1nen Timer reduzieren ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • Kleine verschönerung :)


    new bool:door;
    forward Timer();
    public Timer()
    {
    for(new i=0;i!=MAX_PLAYERS;i++)
    {
    if(IsPlayerConnected(i))
    {
    if(IsPlayerInRangeOfPoint(i,5.0,x,y,z))
    {
    if(door == false)
    {
    MoveObject(blaaaa //hier öffnen lassen
    door=true;
    SetTimer("Timer2",5000,0);
    }
    }
    }
    }
    return 1;
    }
    forward Timer2();
    public Timer2()
    {
    MoveObject(blub //lass das Tor hier wieder zu gehen. door=false;
    return 1;
    }

  • Ich hab dir mal den Quellcode dazu hochgeladen.
    Es funktioniert mit dem Streamer Plugin. Für jedes Tor wird eine Area / Zone angelegt. Sobald diese Zone betreten bzw verlassen wird,wird der nächste Zustand für das dazugehörige Tor herausgefunden. Es gibt 4 Zustände
    enum ( <<= 1 ) {
    e_Gate_Closed = 1,
    e_Gate_Opening,
    e_Gate_Open,
    e_Gate_Closing
    } auf die reagiert wird bzw werden muss.


    Falls du es nutzen möchtest,


    Gate::Gate() - Initialisierung. ( LoadGates , Parameter für die Tore sind: Model,X[0],Y[0],Z[0],RotX,RotY,RotZ,X[1],Y[1],Z[1],Speed,Size )
    Gate::GateClose() - Schließen, in dem Fall aber unwichtig da nichts passiert.
    Gate_OnPlayerEnterDynamicArea - Bei OnPlayerEnterDynamicArea aufrufen ( Geliefert durch Plugin )
    Gate_OnPlayerLeaveDynamicArea - Bei OnPlayerLeaveDynamicArea aufrufen ( Geliefert durch Plugin )
    Gate_OnDynamicObjectMoved- Bei OnDynamicObjectMoved aufrufen ( Geliefert durch Plugin )
    e_Flag_Gate ist irgendeine Zahl.


    http://goldkiller.bplaced.net/filemanager/gate.inc

  • Dieser Code ist sehr schlecht Reloadet und das nicht nur weil er 2 Timer benötigt, obwohl man das in einen schreiben kann :pinch:

    ast2ufdyxkb1.png


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

  • Dieser Code ist sehr schlecht Reloadet und das nicht nur weil er 2 Timer benötigt, obwohl man das in einen schreiben kann :pinch:

    Ich will ja nichts sagen, aber bei deinem Code würde


    1. Das Objekt die ganze Zeit nach unten gemoved werden
    2. Das Tor würde nicht wieder zurück fahren

    now @ glowfire CMS.