Hallo,
ich hab mal ein Script gesehen, wo Hydra ein zweisitzer war. Wie geht das? Und bugt der Server dann bissel rum?
Hydra zu zweisitzer machen?
- Tom Sunder
- Geschlossen
- Erledigt
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
-
-
Abfragen ob der Spieler in der Nähe von einer Hydra ist. Wenn ja -> in ein Interior setzen. Alternativ kannst du ihn auch in den "Spectate-Modus" setzen.
-
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. -
Ich würde einfach PutPlayerInVehicle benutzen. Und wichtig ist, dass beim Aussteigen RemovePlayerFromVehicle benutzt wird sonst crasht der Client.
-
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.
-
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.
-
Also OnPlayerKeyStateChage, dort findest du die Tasten heraus.
Mit einer for Schleife durch alle Fahrzeuge kannst du die Positionen von Fahrzeugen herausfinden.
Vorher noch Abfragen ob das Fahrzeug eine Hydra ist. -
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.
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.
-
-
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 -
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.
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.
-
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.
Ok. Haben die dann ale hintereinander Platz oder sind die auch nebeneinander bzw schweben in der Luft? -
Ok. Haben die dann ale hintereinander Platz oder sind die auch nebeneinander bzw schweben in der Luft?
Naja Sie sitzen ineinander...aber das sieht man nicht genaumfg.
-
Naja Sie sitzen ineinander...aber das sieht man nicht genaumfg.
ok macht nixKaliber
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? -
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.
//Edit: Rechtschreibung
-
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.
//Edit: Rechtschreibung
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 OnPlayerEnterVehiclemfg.
-
Stimmt..dann nutze den Callback OnPlayerEnterVehiclemfg.
Was ist Callback? Kannste mir zeigen was du meinst?