Naja du könntest mit GetPlayerVehicleID arbeiten. Also einmal fragst du deine VehicleID ab und einmal die des Bots, wenn sie übereinstimmt bisst du in dem Auto eines Bots. Und soweit ich weiß können Bots nicht aus dem Fahrzeug gezogen werden.
Beiträge von Oskaar1994
-
-
Das muss eigentlich funktioniert, hatte es bei mir damals auch. Benutzt du auch PlayerTextdrawSetString ?
-
Der Editor von Zamaroht hat die Option unten in der Leiste du musst nur Suchen
-
Welchen benutzt du den ?
-
Du hast das doch sicher mit einem Textdraweditor erstellt ? Da gibt es eigentlich immer die Möglichkeit die "Art" des Textdraws von Global auf Player zu stellen.
-
MAX_PLAYER_NAME+5 wohl eher
Ist ja jetzt egal iPrototype hat eh einer bessere Methode
-
Ich würde es so in der Art machen:
new nametag[MAX_PLAYER_NAME+6];new name[MAX_PLAYER_NAME]; GetPlayerName(playerid,name);format(nametag,sizeof(nametag)"[VRP]%s",name);SetPlayerName(playerid,nametag);
UPS da ware andere schneller -
Ein Playertextdraw ist nur für einen Spieler und kann bei jedem Spieler individuell sein, während ein globales für alle Spieler gleich ist.
-
Benutze Playertextdraws, dann dürfte es gehen
-
Mache es so :
stock isAdmin(playerid, adminlevel) { if(SpielerInfo[playerid][pAdminlevel] >= adminlevel) return 1;
return 0; }
Ich weiß nicht wieso aber irgendwie klappt der Zeilenumbruch nicht so wirklich, aber das kannst du ja ändern -
Nein, dann würde es z.B 5ten den Eintrag nehmen, aber nicht den 5ten Eintrag bei dem diese Kondition :
(cInfo[i][besitzer] == sInfo[playerid][id0]erfüllt ist.
*edit* Ich bin schon etwas weiter, aber es funktioniert noch nicht ganz:
if(dialogid==80){
if(response){
new Float:vehX,Float:vehY,Float:vehZ;
GetPlayerPos(playerid,vehX,vehY,vehZ);
for(new i=listitem;i<sizeof(cInfo);i++){
if(cInfo[i][besitzer] != sInfo[playerid][id0]) continue;
SetVehiclePos(cInfo[i][id_x],vehX,vehY+2,vehZ);
}
}
} -
Hey,
könnte mir jemand bei einer Schleife helfen ? Mein Ziel ist es einen bestimmten Eintrag aus einem Enum zu bekommen. Nehmen wir als Beispiel den 5ten Eintrag bei dem diese Kondition:
cInfo[i][besitzer] == sInfo[playerid][id0] erfüllt ist. Ich habe schon etwas probiert, aber das ganze funktioniert nicht.
if(dialogid==80){
if(response){
new Float:vehX,Float:vehY,Float:vehZ;
GetPlayerPos(playerid,vehX,vehY,vehZ);
for(new i=0;i<sizeof(cInfo);i++){
if(cInfo[i][besitzer] == sInfo[playerid][id0]) continue;
if(i!=listitem) continue;
SetVehiclePos(cInfo[i][id_x],vehX,vehY+2,vehZ);
}
}
}
Ich hoffe man versteht auf was ich hinaus will. Und statt dem 5ten Eintrag halt immer den, der die Nummer des Listitems "besitzt". -
Ich hatte ja schon seit Tagen Probleme mit OnPlayerKeyStateChange, z.B dass einfach nichts passiert wenn ich eine Taste drücke. Jetzt stehe ich vor einem neuen Problem. Jedes Callback endet ja mit einer Klammer und die meisten mit einem return 1; nur ich bekomme immer den Fehler Invalid function or declaration bei return 1; unter OnPlayerKeyStateChange. Selbst wenn sonst kein Code in dem Callback steht. Wenn ich das return 1; entferne ist der Fehler weg und ich bekomme auch keine Warnung, was ich komisch finde weil sonst heißt es ja immer the function should return a value. Hatte noch jemand außer ich schonmal das Problem ?
-
Immer wenn ich mit dem Editor ein Previewmodel erstelle und auf exportieren klicke steht im Code nichts von Previews nur der Code vom eigentlichen Textdraw.
*edit* So habe jetzt eins mit einem Textdraweditor erstellt, es funktioniert auch auf meinem Server aber das andere immer noch nicht :
SkinTest = CreatePlayerTextDraw(playerid,303.000000, 142.000000, "New Textdraw");
PlayerTextDrawBackgroundColor(playerid,SkinTest, 255);
PlayerTextDrawFont(playerid,SkinTest, 5);
PlayerTextDrawLetterSize(playerid,SkinTest, -0.129999, -0.700000);
PlayerTextDrawColor(playerid,SkinTest, -1);
PlayerTextDrawSetOutline(playerid,SkinTest, 0);
PlayerTextDrawSetProportional(playerid,SkinTest, 1);
PlayerTextDrawSetShadow(playerid,SkinTest, 1);
PlayerTextDrawUseBox(playerid,SkinTest, 1);
PlayerTextDrawBoxColor(playerid,SkinTest, -16711681);
PlayerTextDrawTextSize(playerid,SkinTest, -200.000000, 249.000000);
PlayerTextDrawSetPreviewModel(playerid, SkinTest, 74);
PlayerTextDrawSetPreviewRot(playerid, SkinTest, 0.000000, 0.000000, 0.000000, 1.000000); Habe es auch schon ohne [playerid] probiert. -
Mach mal
if(newkeys & KEY_NO && GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
Bei mir funzt das immer
Geht auch nicht, also langsam weiß ich echt nicht mehr was ich machen soll
-
Immer noch nicht
-
Müsste es nicht
if(newkeys && (KEY_NO))
sein?
Funktioniert leider immer noch nicht. -
Leider geht gerade garnichts mehr, egal ob ein oder mehrere Spieler. Das gleiche gillt auch für if(newkeys == (KEY_NO) ){ und if(newkeys & (KEY_NO) ){
if(newkeys == (KEY_NO) ){
if(GetPlayerState(playerid)== 2) {
new vID=GetPlayerVehicleID(playerid),tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective;
GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
new id = GetMyCarID(vID);
if(tmp_engine==1){
tmp_engine = 0;
GameTextForPlayer(playerid, "~r~Engine turned off", 2000, 3);
if(IsPrivateCar(vID)){
new ownertext[128];
format(ownertext,sizeof(ownertext),"{FFFFFF}%s\n{FF0000}Owner %s",GetVehicleName(cInfo[id][id_x]),getPlayerName(playerid));
ownedtext[cInfo[id][id_x]] = Create3DTextLabel( ownertext, COLOR_WHITE, 0.0, 0.0, 0.0, 50.0, 0, 1 );
Attach3DTextLabelToVehicle( ownedtext[cInfo[id][id_x]] ,cInfo[id][id_x], 0.0, 0.0, 0.5);
}
}else{
//if(FuelState[vID] == 0) return 0;
tmp_engine = 1;
GameTextForPlayer(playerid, "~r~Engine turned on", 2000, 3);
if(IsPrivateCar(vID)){
Delete3DTextLabel(ownedtext[cInfo[id][id_x]]);
}
}
SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
}
}
ManualVehicleEngineAndLights(); habe ich auch unter OnGameModeInit -
Hey,
habe ein kleines Problem mit meinem Motor System. Eigentlich funktioniert es einwandfrei. Wenn man die Taste 'n' drückt soll der Motor ein/ausgeschaltet werden. Wenn man alleine auf dem Server ist klappt alles gut, nur wenn mehr als eine Person auf dem Server ist, funktioniert es nicht mehr. Dann funktioniert entweder garnichts oder man muss die Taste 1000mal drücken. Was mache ich falsch ?
if(newkeys == (KEY_NO) )
{
if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER)return 1;
new vID=GetPlayerVehicleID(playerid),tmp_engine,tmp_lights,tmp_alarm,tmp_doors,tmp_bonnet,tmp_boot,tmp_objective;
GetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
new id = GetMyCarID(vID);
if(tmp_engine==1){
tmp_engine = 0;
GameTextForPlayer(playerid, "~r~Engine turned off", 2000, 3);
new ownertext[128];
format(ownertext,sizeof(ownertext),"{FFFFFF}%s\n{FF0000}Owner %s",GetVehicleName(cInfo[id][id_x]),getPlayerName(playerid));
ownedtext[cInfo[id][id_x]] = Create3DTextLabel( ownertext, COLOR_WHITE, 0.0, 0.0, 0.0, 50.0, 0, 1 );
Attach3DTextLabelToVehicle( ownedtext[cInfo[id][id_x]] ,cInfo[id][id_x], 0.0, 0.0, 0.5);
}else{
//if(FuelState[vID] == 0) return 0;
tmp_engine = 1;
GameTextForPlayer(playerid, "~r~Engine turned on", 2000, 3);
Delete3DTextLabel(ownedtext[cInfo[id][id_x]]);
}
SetVehicleParamsEx(vID, tmp_engine, tmp_lights, tmp_alarm, tmp_doors, tmp_bonnet, tmp_boot, tmp_objective);
} -
Habe bis jetzt das:
if(dialogid==80){
if(response){
new Float:vehX,Float:vehY,Float:vehZ;
GetPlayerPos(playerid,vehX,vehY,vehZ);
SetVehiclePos(cInfo[listitem][id_x],vehX,vehY+2,vehZ);
}
}
Das funktioniert logischerweiße nur wenn ein Spieler online ist, da die Autos immer erst spawnen wenn ein Spieler connectet. Ich muss das irgendwie in eine Schleife einbauen also z.B. wenn ich das 5te Listitem anklicke soll es das 5te Fahrzeug, dass mir gehört zu mir teleportieren. Habe da etwas gemacht, aber das funktioniert nicht:
if(dialogid==80){
if(response){
new Float:vehX,Float:vehY,Float:vehZ;
GetPlayerPos(playerid,vehX,vehY,vehZ);
for(new i=listitem;i<sizeof(cInfo);){
if(cInfo[i][besitzer] == sInfo[playerid][id0]) continue;
SetVehiclePos(cInfo[i][id_x],vehX,vehY+2,vehZ);
}
}
}