Hydra zu zweisitzer machen?

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums
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
  • Ich glaub sogar ich weiß was du meinst, das wollt ich damals auch nach dem video machen^^
    Im Prinzip musst du nur die Position hinter die Kabine Porten.
    Es gab mal hier so ein Panzer Filterscript, wo du im Geschützturm warst und schießen konntest, vielleicht hilft dir das, sofern du es findest.

  • Hallo,
    ich hab mal ein Script gesehen, wo Hydra ein zweisitzer war. Wie geht das? Und bugt der Server dann bissel rum?


    Das kann man wirklich umsetzen, aus jedem Auto einen Mehrsitzer machen.


    Das geht mit folgender Funktion: PutPlayerInVehicle


    und dann kannst du z.B. für die seatid 1 nehmen, dann sitzt er hinter dem Fahrer.
    Allerdings ist das natürlich nicht im Sinne des Erfinders, deshalb sobald die Person aussteigen will oder stirbt, crasht der Client.
    Man muss ihn wieder scripttechnisch mit z.B. SetPlayerPos aus der Hydra holen.


    Nein, den Server beeinflusst das nicht, nur den Client ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Ich würde einfach PutPlayerInVehicle benutzen. Und wichtig ist, dass beim Aussteigen RemovePlayerFromVehicle benutzt wird sonst crasht der Client.


    Darum meinste jetzt ich soll machen wenn g gedrückt wird soll abgefragt werden ob er in der Nähe von ner Hydra ist (wie kann man das machen?) in das hintere Teil von der Hydra geportet werden und wenn er Enter drückt das abgefragt wird ob man in ner Hydra als Beifahrer ist und dann soll er removet werden... oder?


    @ Kaliber
    Ich wil wie oben steht wenn man g drückt im Veh sein und wenn man Enter drückt drausen reicht es wenn cih einfach Abfrag ob er Enter drückt oder muss ich das mit dem normalen aussteigen ausm Veh verzögern?

  • @ Kaliber
    Ich wil wie oben steht wenn man g drückt im Veh sein und wenn man Enter drückt drausen reicht es wenn cih einfach Abfrag ob er Enter drückt oder muss ich das mit dem normalen aussteigen ausm Veh verzögern?


    Du kannst über den Callback OnPlayerKeyStateChange abfragen, ob er g drückt und in der Nähe der Hydra ist.


    Dann prüfst du ob da schon einer Sitzt auf dem Platz, wenn nicht, dann setzt du die Person mit PutPlayerInVehicle auf einen freien Platz ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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


  • Du kannst über den Callback OnPlayerKeyStateChange abfragen, ob er g drückt und in der Nähe der Hydra ist.


    Dann prüfst du ob da schon einer Sitzt auf dem Platz, wenn nicht, dann setzt du die Person mit PutPlayerInVehicle auf einen freien Platz ;)


    mfg. :thumbup:


    Wie kann ich Abfragen, ob man neben ner Hydra ist? Und wie kann cih die Abfrage mache ob der Platz bereits belegt ist?



    Flashboot
    Wie geht das mit der for Schleife? kannste mir das machen oder ein Beispiel zeigen? (nicht das Beispiel wo for für i (ersatz für playerid) genützt wird da ich da fast nix kapier)

  • Wie kann ich Abfragen, ob man neben ner Hydra ist?


    Hier eine kleine Hilfestellung:


    //Die Funktion returnt die Vehicleid von dem Spieler, der sich in der Nähe einer Hydra befindet...wenn nicht -1!
    stock IsInRangeOfHydra(playerid) {
    static Float:p[3];
    for(new v; v<MAX_VEHICLES; v++) {
    if(GetVehicleModel(v) != 520) continue;
    GetVehiclePos(v,p[0],p[1],p[2]);
    if(IsPlayerInRangeOfPoint(playerid,7.5,p[0],p[1],p[2])) return v;
    }
    return -1;
    }


    //returnt die seatid von einem freien Platz in der Hydra
    stock GetFreeSeatInHydra(vehicleid) {
    static pos=1;
    for(new i; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i) || !IsPlayerInVehicle(i,vehicleid)) continue;
    if(pos == GetPlayerVehicleSeat(i)) pos++;
    else if(pos < GetPlayerVehicleSeat(i)) pos = GetPlayerVehicleSeat(i)+1;
    }
    return pos;
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Also eine for Schleife ist so aufgebaut:
    for(Variable;Größe;Operator)
    nehmen wir einfach mal die Variable g:
    for(new g;g<MAX_VEHICLES;g++)
    Also zuerst deklarieren wir g, dann bis wann die Schleife gehen soll, dann noch das jedes Fahrzeug Durchgangen wird, du könntest auch g+=1 machen.
    Zudem kannst du auch vorher die Variable deklarieren, zB:
    new i;
    for(;i<1;i++)

    Hoffe du verstehst das nun in etwa.
    Du musst dann nur noch Abfragen ob g eine Hydra ist und ob playerid in der Nähe ist ;)


  • Danke aber was muss ich dann auf 1 setzen, damit angezeigt wird das sie belegt ist?

  • Danke aber was muss ich dann auf 1 setzen, damit angezeigt wird das sie belegt ist?


    Wenn mich nicht alles täuscht gibt es durch die Funktion kein Limit, ich bin mir nicht ganz sicher...musst du mal ausprobieren, falls doch, dann liegt es wahrscheinlich bei 8.


    //Hier wäre sie dann voll:
    if(GetFreeSeatInHydra(vehicleid) > 8) return SendClientMessage(playerid,-1,"Die Hydra ist voll besetzt!");


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Kaliber ()


  • Wenn mich nicht alles täuscht gibt es durch die Funktion kein Limit, ich bin mir nicht ganz sicher...musst du mal ausprobieren, falls doch, dann liegt es wahrscheinlich bei 8.


    //Hier wäre sie dann voll:
    if(GetFreeSeatInHydra(vehicleid) >= 8) return SendClientMessage(playerid,-1,"Die Hydra ist voll besetzt!");


    mfg. :thumbup:


    Ok. Haben die dann ale hintereinander Platz oder sind die auch nebeneinander bzw schweben in der Luft?

  • Aber wenn cih jetzt mach PutPlayerInVehicl(playeri, v, SEAT) Was für einen Sitz soll cih hinschreiben? Wie kann cih rausfinden welcher schon belegt ist? Oder soll ich alle auf den Sitz 1 darum Beifahrer tun?


    Na...nutz doch meine Funktionen:


    new veh = IsInRangeOfHydra(playerid);
    if(veh == -1) return 0; //Ist nicht in der Nähe einer Hydra
    new seat = GetFreeSeatInHydra(veh);
    if(seat > 8) return 0; //Die Hydra ist voll belegt
    PutPlayerInVehicle(playerid, veh, seat);


    mfg. :thumbup:


    //Edit: Rechtschreibung

    ast2ufdyxkb1.png


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


  • hab nochmal ein "Problem":
    Die Taste "G" gibt es net alsMacro nur als OnFoot aber das funkt net da kommt undefined symbol obwohl cih genau das von WIKI hab. Was muss cih bei OnPlayerKeyStateChange bei if( eintragen damit das mit OnFoot geht?
    Darum cih hab es so:

    public OnPlayerKeySateChange(playerid)
    {
    if(GROUP_CONTROL_FWD)



    (Nicht vollständig)
    (WIki: http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange )

  • hab nochmal ein "Problem":
    Die Taste "G" gibt es net alsMacro nur als OnFoot aber das funkt net da kommt undefined symbol obwohl cih genau das von WIKI hab. Was muss cih bei OnPlayerKeyStateChange bei if( eintragen damit das mit OnFoot geht?
    (WIki: http://wiki.sa-mp.com/wiki/OnPlayerKeyStateChange )


    Stimmt..dann nutze den Callback OnPlayerEnterVehicle ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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