Astrein!
Das mit dem Sound ist auch Klasse!
Und wann kommt der Server "U-Boot-Krieg" online?
sobald mir langweilig ist
@Raven^
Werd ich gleich ausprobieren
Astrein!
Das mit dem Sound ist auch Klasse!
Und wann kommt der Server "U-Boot-Krieg" online?
sobald mir langweilig ist
@Raven^
Werd ich gleich ausprobieren
Das ist mal eine komplett neue Idee!! Wirklich super
Auch die Idee, ein Flugobjekt (Hydra, oder? :D) unter Wasser zu setzen, und durch dieses das U-Boot bewegen zu lassen ist unbeschreiblich geil.
Wie sieht es mit einer Veröffentlichung aus?
Das hab ich anfangs überllegt aber ich weiß noch net...
PS: Du hast das Rätsel gelöst das ich erwähnt hab (da wo ich erwähnt hab, dass es deshalb net ruckelt)
Perfekt!
Ich finde das U-Boot noch sehr sehr schnell!
Wie sieht es aus mit der Hitbox? Kannst du durch Objekte fahren?
ich kann nur vorne mit ner leichten Spitze durch Objekte fahren
@m4a_X:
Ich hab es net mit keyStateChange oder so gemacht sondern mit etwas das bereits vorhanden war und net ruckelt (Schau beim Video unten links hin dann verstehst etl was ich mein )
Gute Idee, mal was neues
Ruckelt beim Fahren leicht oder?
ja aber das liegt daran das die sicht sich nicht schnell genug ändert das uboot ruckelt garnicht.
Und ein kleiner Tipp an alle, die wissen wollen wie ich das gemacht hab (ich hab das nicht mit OnPlayerKeyStateChange gemacht):
schaut beim Video unten links hin etl kommt ihr drauf
Hallo Breadfishs,
ich hab die letzten Tage etwas gescriptet, dass ermöglicht, dass man mit einem U-Boot fahren kann. Darum mit fahren mein ich, dass man mit WASD fahren kann und dies überall im Wasser ohne scriptliche Vorgaben. Das U-Boot hat folgende Funktionen/Eigenschaften:
-Auftauchen
-Abtauchen
-nach oben fahren
-geradeaus fahren
-drehen
-schiesen
-kommt so ein PIP geräusch wie bei einem echten Uboot
-bei auftauchen wird veh solange gefreezt, bis man wieder einsteigt
- kann nur kaputt gehen wenn man Steil in den Boden jagt
-andere Spieler werden auf der Karte rot angezeigt
-Eeine Mannschaft bis zu 12 Leuten kann in das U-Boot
ich hab hier ein kleines Video eigentlich wollte ich noch mehr machen aber länger geht es mit Fraps Testversion nicht
Hat etl wer noch Ideen was ich dazu machen kann?
Bitte bei schlechten Bewertungen auch den Grund hinschreiben
Ich hoffe ihr verzeiht es mir, dass ich solche Präsentationen net kann und deshalb die Präsentation nicht so gut ist
Edit: Es wurden zwei weiter Funktionen/Eigenschaften hinzugefügt
Edit2: Neues Video eingefügt
AttachObjectToPlayer(Player[playerid][CameraOBJ] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0),playerid, 0.0, 0.12, 0.7, 0.0, 0.0, 0.0); AttachCameraToObject(playerid, Player[playerid][CameraOBJ]);
da ist die camera dann ganz normal
Mein Code:
public OnPlayerUpdate(playerid)
{
if(egoperspektive[playerid] == 1)
{
new Float:usX, Float:usY, Float:usZ, COBJ[MAX_PLAYERS];
GetPosVorSpieler(playerid, 0.5, usX, usY, usZ);
SetPlayerCameraPos(playerid, usX, usY, usZ+0.4);
AttachObjectToPlayer(COBJ[playerid] = CreateObject(19300, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0),playerid, 0.0, 0.12, 0.7, 0.0, 0.0, 0.0);
AttachCameraToObject(playerid, COBJ[playerid]);
}
return 1;
}
stock GetPosVorSpieler(playerid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
{
if(IsPlayerConnected(playerid))
{
new Float:a;
if(IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
else GetPlayerFacingAngle(playerid, a);
GetPlayerPos(playerid, x, y, z);
x += (dist * floatsin(-a, degrees));
y += (dist * floatcos(-a, degrees));
return true;
}
return false;
}
Auf Anfrage in PN:
Die Bewegung der Maus ist leider nicht per Code zu erkennen. Du müsstest das über die Tasten (zum Beispiel die Pfeiltasten) machen.
kann man machen, dass jede Sekunde wo q oder e gedrückt wird die sicht etwas nach links oder rechts gedreht wird? Darum kann man das einfach mit keystatechange machen und dann jedes mal um 1 drehen lassen ohne, dass man dauernd neu drücken muss?
Hallo,
ich arbeite gerade an einer Egoperspektiven-Sicht (die ich sobald sie passt veröffentliche). Und bei dieser sicht wird die kamera immer auf einen Punkt gesezt. Mein Problem: ich will machen, dass man mit der Maus immernoch nach rechts, links, oben oder nach unten kann und dann halt die Sicht auch dem entsprechen nach rechts, links, oben oder nach unten geht. Kann man das machen?
Ich hoffe ihr versteht was ich meine
Alles anzeigen
Bei meiner Variante (die von Wolf-Vito sollte auch klappen) ist es ab und zu auch so, dass die Nachricht mehrfach kommt, dann mach es einfach so:
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(IsVehicleInWater(vehicleid) == 1)
{
static lastMessage[MAX_PLAYERS];
new Float:x, Float:y, Float:z, seat;
GetPlayerPos(playerid, x, y, z);
seat = GetPlayerVehicleSeat(playerid);
SetPlayerPos(playerid, x, y, z);
PutPlayerInVehicle(playerid, vehicleid, seat);
if(lastMessage[playerid] != gettime()) SendClientMessage(playerid, 0xFF0000FF, "Du kannst das Fahrzeug im Wasser nicht verlassen!");
lastMessage[playerid] = gettime();
}
return 1;
}
ok
Hast du dir meinen Ansatz überhaupt mal angeschaut?
Bei ClearAnimations wird man autom. auf das Auto geportet quasi.
sorry hab vergessen den Fehler bei deinem zu posten: Da kommt dann dreimal die Message
Jeffry habs selbst rausgefunden: ExitVehicle
Und es funkt! Mal wieder ein Danke an Jeffry
Alles anzeigenSo geht's, grade mal getestet:
new Float:x, Float:y, Float:z, seat;
GetPlayerPos(playerid, x, y, z);
seat = GetPlayerVehicleSeat(playerid);
SetPlayerPos(playerid, x, y, z);
PutPlayerInVehicle(playerid, vehicleid, seat);
Viel Spaß!
soll ich das in exitvehicle oder in den timer tun?
Alles anzeigenProbier mal so:
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(IsVehicleInWater(vehicleid) == 1)
{
SendClientMessage(playerid, COLOR_RED, "Du kannst das Fahrzeug im Wasser nicht verlassen!");
TogglePlayerControllable(playerid,0);
return SetTimerEx("FreezeUnfreeze", 50, false, "i", playerid);
}
return 1;
}
forward FreezeUnfreeze(playerid);
public FreezeUnfreeze(playerid)
{
TogglePlayerControllable(playerid,1);
return 1;
}
Das hat mir Jeffry schon vorgeschlagen, aber wie ich oben geschrieben hab funkt das net.
Schick mal deine Funktion IsVehicleInWater
die sendclientmessage Nachricht kommt ja man bleibt nur net im auto sondern kann dann trozdem raus...
Alles anzeigenVersuch das mal so...
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(IsVehicleInWater(vehicleid) == 1)
{
SendClientMessage(playerid, COLOR_RED, "Du kannst das Fahrzeug im Wasser nicht verlassen!");
return PutPlayerInVehicle(playerid, vehicleid, GetPlayerVehicleSeat(playerid));
}
return 1;
}
geht net
Du kannst auch einfach bei OnPlayerExitVehicle abfragen, ob das Fahrzeug im Wasser ist, ohne die Variable bei OnPlayerUpdate zu nutzen.
Den Spieler direkt wieder in das Fahrzeug zu setzen klappt nicht wirklich, aber du kannst versuchen, bei OnPlayerExitVehicle den Spieler zu freezen, dann einen kurzen Timer zu setzen, 50ms zum Beispiel, und ihn dann wieder zu entfreezen.
Du kannst es auch ohne Timer versuchen, also einfach freeze und entfreeze direkt hintereinander, bei OnPlayerEnterVehicle klappt das auch.
ich kann immer noch raus hab das mit dem Timer gemacht und sogar 100 ms eingestellt funkt aber trzdm net
Hallo,
ich hab gescriptet, dass man ein Fahrzeug nur verlassen kann wenn es nicht unter Wasser ist, aber das funkt net. Ich hab es so gemacht: es geht die ganze zeit mit OnPlayerUpdate durch, ob man in einem fahrzeug ist und wenn ja ob es unter Wasser ist. Wenn es unter Wasser ist wird eine Variable auf 0 gestellt und dann soll bei OnPlayerExitVehicle abgefragt werden, ob die Variable auf 0 ist. Wenn ja soll man das Auto nciht verlassen können, aber ich kann das Auto dann verlassen, wenn cih es ausprobier.
Code:
new FahrzeugO[MAX_VEHICLES];
public SpawnVehicle(vehicleid)
{
FahrzeugO[vehicleid] = 1;
return 1;
}
public OnPlayerExitVehicle(playerid, vehicleid)
{
if(FahrzeugO[vehicleid] != 1)
{
SendClientMessage(playerid, COLOR_RED, "Du kannst das Fahrzeug im Wasser nicht verlassen!");
PutPlayerInVehicle(playerid, vehicleid, GetPlayerVehicleSeat(playerid));
}
return 1;
}
public OnPlayerUpdate(playerid)
{
if(IsPlayerInAnyVehicle(playerid))
{
if(IsVehicleInWater(GetPlayerVehicleID(playerid)) == 1)
{
FahrzeugO[GetPlayerVehicleID(playerid)] = 0;
}
}
return 1;
}
Woran kann es liegen, dass ich trozdem aussteigen kann?
Edit: Wenn man vor das PutPlayerInVehicle ein return tut kommt man trozdem raus aber dann bugts leicht
aber da wird leider nichts mit g angezeigt