MoveObject(SFPDINTDOOR[3], -1600.89868, 696.17023, 12.79330, [b]1500[/b], 0.00000, 0.00000, 90.00000);
Die Tür wird innerhalb einstelligen Millisekunden geöffnet, die Door soll aber langsam aufgehen.
Beiträge von malE
-
-
Wenn du willst das nur der Fahrer gekickt wird, musst du davor abfragen ob playerid als passenger einsteigt.
public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
if(!ispassenger)
{
new Float:health;
new name[MAX_PLAYER_NAME], string[50+MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(health > 995)
format(string, sizeof(string), "%s has been banned by the System for Vehicle Health Hack.", name);
SendClientMessageToAll(RED,string);
GetVehicleHealth(vehicleid, health);
SetVehicleHealth(vehicleid, 995);
Kick(playerid);
}
return 1;
} -
Ja stimmt! War der Meinung das ist es schon mit && ausprobiert habe, deswegen wollte ich euch um Rat bitten.
Jetzt funktioniert es natürlich, danke dir Jeffry. -
if(IsCopCarEx(GetPlayerVehicleID(playerid)) != 1 || PoliceEquip[playerid][pe_Funkgerat] == false)return SendClientMessage(playerid, COLOR_GREY, " Du bist in keinem Polizeifahrzeug oder du hast kein Funkgerät.");
Wenn ich ein Funkgerät habe kommt trotzdem die Fehlermeldung.
Es soll aber nur so sein:
Kein Funkgerät & in keinem Polizei Auto = Fehler. -
objekt id? -
Wie?
Wenn ich möchte das ein Spieler nur ein PickUp aufheben kann wenn er geduckt ist ( KEY_CROUCH )?//E:
bei OnPlayerPickUpPickup -
So kann man es auch machen. Dann werde ich einfach alle Fahrzeuge direkt verschlossen spawnen, danke dir.
-
Dein Code funktioniert nur wenn ich das Fahrzeug mit einem Befehl respawne.
Also es ist nicht von Anfang an verschlossen, sondern nur wenn ich es mit dem Befehl respawne.Ergo: Fahrzeug beim erstellen nicht verschlossen - respawne ich stattdessen ein Privatfahrzeug mit einem Befehl wird das Fahrzeug verschlossen gespawnt, dank dein Code.
Aber es soll ja von Anfang an verschlossen spawnen. -
@Jeffry dein Code funktioniert, nur dann wenn ich das Fahrzeug schon einmal in dem Fall mit meinem Befehl respawne.
@Bluescreen sowie ich es getestet habe, wird das Fahrzeug auch nicht direkt nach dem erstellen respawnt.
stock CreateVehicleEx(model, Float:x, Float:y, Float:z, Float:r, color, color2, respawndelay, siren)
{
new id = CreateVehicle(model, x, y, z, r, color, color2, respawndelay, siren);
SetVehicleToRespawn(id);
return 1;
} -
Zu diesem public, da lasse ich mir printen ob die Variable wirklich auf true ist, laut dem print schon.
forward OnPlayerVehiclesLoad(playerid);
public OnPlayerVehiclesLoad(playerid)
{
new num_fields, num_rows;
cache_get_data(num_rows, num_fields, handle);
if(!num_rows)return 1;
for(new i=0; i < num_rows; i++)
{
VehicleInfo[i][v_Besitzer] = cache_get_field_content_int(i, "besitzer", handle);
VehicleInfo[i][v_Model] = cache_get_field_content_int(i, "model", handle);
VehicleInfo[i][v_Color1] = cache_get_field_content_int(i, "color1", handle);
VehicleInfo[i][v_Color2] = cache_get_field_content_int(i, "color2", handle);
VehicleInfo[i][v_X] = cache_get_field_content_float(i, "x", handle);
VehicleInfo[i][v_Y] = cache_get_field_content_float(i, "y", handle);
VehicleInfo[i][v_Z] = cache_get_field_content_float(i, "z", handle);
VehicleInfo[i][v_R] = cache_get_field_content_float(i, "r", handle);
VehicleInfo[i][v_Schloss] = bool:cache_get_field_content_int(i, "schloss", handle);
VehicleInfo[i][v_ID] = cache_get_field_content_int(i, "id", handle);
printf("Schloss: %d", VehicleInfo[i][v_Schloss]);
if(VehicleInfo[i][v_Model] >= 400 && VehicleInfo[i][v_Model] <= 611) {
VehicleInfo[i][v_DLID] = CreateVehicle(VehicleInfo[i][v_Model], VehicleInfo[i][v_X], VehicleInfo [i][v_Y], VehicleInfo[i][v_Z], VehicleInfo[i][v_R], VehicleInfo[i][v_Color1], VehicleInfo[i][v_Color2], -1, 0);
} else{
printf("[FEHLER] Fahrzeug-Model %d existiert nicht (DB-ID: %d).", VehicleInfo[i][v_Model], i);
}
}
return 1;
} -
[00:09:41] Schloss: 1
[00:09:51] Schloss == false
[00:09:51] Türen: 0
[00:09:51] Schloss == false
[00:09:51] Türen: 0Fahrzeug bleibt weiterhin offen.
-
Habe es provisorisch mit einem Befehl gemacht, weil ich in der Wiki gelesen habe das, dass public OnVehicleSpawn nur Aufgerufen wird wenn ein Fahrzeug respawnt wird.
ocmd:vehrespawn(playerid,params[])
{
if(PlayerInfo[playerid][p_Admin] < 3)return 1;
new id;
if(sscanf(params, "i", id))return SendClientMessage(playerid, COLOR_GREY, "Benutze: /vehrespawn [Fahrzeug-ID]");
if(!IsValidVehicle(id))return SendClientMessage(playerid, COLOR_GREY, " | Ungültige Fahrzeug-ID angegeben.");
SetVehicleToRespawn(id);
SendClientMessage(playerid, COLOR_ADMCMD, "[AdmCmd] Fahrzeuge wurde respawnt.");
return 1;
}
Wenn ich damit das Fahrzeug respawne werden mir auch die Infos geprintet, aber das Fahrzeug bleibt halt immer noch aufgeschlossen. -
Das komische ist das, dass ganze nicht einmal aufgerufen wird, bzw. es wird nichts geprintet.
//E:
Naja wenn ich das Fahrzeug respawne ( SetVehicleToRespawn ) wird das geprintet.
[20:14:42] Schloss: 1 // Wird beim erstellen des Fahrzeugs geprintet - also Schloss ist trueOnVehicleSpawn
[20:14:54] Schloss == false
[20:14:54] Türen: 0 -
Gerade eben getestet, funktioniert leider auch nicht.
-
Fahrzeug wird offen gespawnt, obwohl die Variable true ist.
Habe mir auch die Variable printen lassen, die ist zu 100% true.
public OnVehicleSpawn(vehicleid)
{
new engine, lights, alarm, doors, bonnet, boot, objective;
if(VehicleInfo[vehicleid][v_Schloss] == true) {
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
doors = 1; // Türen werden geschlossen
}else{
GetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
doors = 0; // Türen werden geöffnet
}
SetVehicleParamsEx(vehicleid, engine, lights, alarm, doors, bonnet, boot, objective);
return 1;
} -
funktioniert danke.
-
Komischer Weise schon. Soll ich die Abfrage nach ganz unten verschieben?
-
Was bringt void und static? Und wann sollte man die verwenden oder wofür?
-
Sobald ich TextDraw TeamTextDraw[4], TextDraw TeamTextDraw[6] und TextDraw TeamTextDraw[11] drücke, wird der Mauszeiger immer noch angezeigt, obwohl ich es ausschalte.
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(_:clickedid == INVALID_TEXT_DRAW)return SelectTextDraw(playerid, 0x00FF00FF);
if(clickedid == TeamTextDraw[4])
{
if(PlayerInfo[playerid][p_Team] == 1)return SendClientMessage(playerid, COLOR_GREY, " Du gehörst schon zum Team der Gangster.");
PlayerInfo[playerid][p_Team] = 1;
SendClientMessage(playerid, COLOR_RED, " Du hast dich für den Gangster entschieden.");
CancelSelectTextDraw(playerid);
for(new i=0; i < 12; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
return 1;
}
if(clickedid == TeamTextDraw[6])
{
if(PlayerInfo[playerid][p_Team] == 2)return SendClientMessage(playerid, COLOR_GREY, " Du gehörst schon zum Team der Polizsten.");
PlayerInfo[playerid][p_Team] = 2;
SendClientMessage(playerid, COLOR_BLUE, " Du hast dich für den Polizisten entschieden.");
CancelSelectTextDraw(playerid);
for(new i=0; i < 12; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
return 1;
}
if(clickedid == TeamTextDraw[11])
{
for(new i=0; i < 12; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
CancelSelectTextDraw(playerid);
return 1;
}
return 1;
} -
Sobald ich ein TextDraw ausgewählt habe, wird der Mauszeiger immer noch angezeigt, obwohl ich es ausschalte.
public OnPlayerClickTextDraw(playerid, Text:clickedid)
{
if(_:clickedid == INVALID_TEXT_DRAW)return SelectTextDraw(playerid, 0x00FF00FF);
if(clickedid == TeamTextDraw[4])
{
PlayerInfo[playerid][p_Team] = 0;
SendClientMessage(playerid, COLOR_RED, " Du hast dich für den Gangster entschieden.");
CancelSelectTextDraw(playerid);
for(new i=0; i < 11; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
return 1;
}
if(clickedid == TeamTextDraw[6])
{
PlayerInfo[playerid][p_Team] = 1;
SendClientMessage(playerid, COLOR_BLUE, " Du hast dich für den Polizisten entschieden.");
CancelSelectTextDraw(playerid);
for(new i=0; i < 11; i++)TextDrawHideForPlayer(playerid, TeamTextDraw[i]);
return 1;
}
return 1;
}