Du musst den Spieler in das Interior setzen (SetPlayerInterior), sonst siehste nix.
Die Position wo die Kamera hinschauen soll braucht du zwingend.
Du musst den Spieler in das Interior setzen (SetPlayerInterior), sonst siehste nix.
Die Position wo die Kamera hinschauen soll braucht du zwingend.
Du musst den Spieler in das Interior setzen (SetPlayerInterior), sonst siehste nix.
Die Position wo die Kamera hinschauen soll braucht du zwingend.
Okay, das mit dem Interior setzen, das habe ich schon gemacht..
Kann ich vlt die Koords von der Position, wo die Kamera 'stehen' soll, einfach die x / y Achse um einen kleinen Wert erhöhen und es dann verwenden, für die Koordinate, wo der hinschauen soll?
Es ist für mein Haussystem und ich habe leider nur die Koords, von wo der schauen soll ..
Okay, das mit dem Interior setzen, das habe ich schon gemacht..
Kann ich vlt die Koords von der Position, wo die Kamera 'stehen' soll, einfach die x / y Achse um einen kleinen Wert erhöhen und es dann verwenden, für die Koordinate, wo der hinschauen soll?
Es ist für mein Haussystem und ich habe leider nur die Koords, von wo der schauen soll ..
Klar ist sowas möglich du kannst auch ebenfalls eine kleine Berechnung machen
http://wiki.sa-mp.com/wiki/GetPlayerCameraFrontVector
was sinnvoller wäre für die ausgelesenen werte einfach konstanten nehmen
aber generel gehts nur um den Teil object_x wäre die koordinate für SetCameraLookAt
object_x = fPX + floatmul(fVX, fScale);
object_y = fPY + floatmul(fVY, fScale);
object_z = fPZ + floatmul(fVZ, fScale);
Keine Ahnung ob ich das schon mal gefragt habe, war in letzter Zeit etwas beschaeftigt, aber wie kann ich die Positionen links und rechts neben dem Spieler herausfinden? Bin nicht gerade ein Mathecrack ( Note 5/6 )
Danke im Voraus.
Keine Ahnung ob ich das schon mal gefragt habe, war in letzter Zeit etwas beschaeftigt, aber wie kann ich die Positionen links und rechts neben dem Spieler herausfinden? Bin nicht gerade ein Mathecrack ( Note 5/6 )
Danke im Voraus.
Ich meine man müsste dazu Vektorenrechnung beherrschen, aber davon habe ich keine Ahnung.
Dialog-Fehler
Ich habe ein kleines Problem und zwar habe ich einen Teleport-Dialog und einen Hilfe-Dialog. Mit dem Teleport-Dialog funktioniert alles einwandfrei, aber wenn ich den Hilfe-Dialog aufrufe und dann auf "Fahrzeuge" klicke, werde ich zur ersten Position teleportiert, die im Teleport-Dialog steht. Ein kleines Video dazu:
https://www.youtube.com/watch?v=aojLzut5jaU
ocmd:teleport(playerid,params[])
{
ShowPlayerDialog(playerid,DIALOG_TELEPORT,DIALOG_STYLE_LIST,"Teleport","Blueberry\nDillimore\nGrove Street\nLos Santos Police Department\nWheel Arch Angels\nBrücke Los Santos - Flint County","Fortfahren","Abbrechen");
return 1;
}
ocmd:help(playerid,params[])
{
ShowPlayerDialog(playerid,DIALOG_HELP,DIALOG_STYLE_LIST,"Hilfe","Fahrzeuge\nEinstellungen\nSonstiges","Bestätigen","Schließen");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid==DIALOG_TELEPORT)
{
if(response)
{
if(listitem==0)
{
// Blueberry
SetPlayerPos(playerid, 271.4776,-63.6031,1.5781);
SetPlayerFacingAngle(playerid,180.7952);
SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich nach Blueberry teleportiert.");
}
if(listitem==1)
{
// Dillimore
SetPlayerPos(playerid, 630.9876,-571.7619,16.3359);
SetPlayerFacingAngle(playerid,269.2972);
SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich nach Dillimore teleportiert.");
}
if(listitem==2)
{
// Grove Street
SetPlayerPos(playerid, 2495.3125,-1687.0536,13.5151);
SetPlayerFacingAngle(playerid,357.9294);
SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zur Grove Street teleportiert.");
}
if(listitem==3)
{
// LSPD
SetPlayerPos(playerid, 1545.2042,-1675.6261,13.5599);
SetPlayerFacingAngle(playerid,90.3408);
SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zum Los Santos Police Department teleportiert.");
}
if(listitem==4)
{
// Wheel Arch Angels, San Fierro
SetPlayerPos(playerid, -2713.3762,223.8495,4.3281);
SetPlayerFacingAngle(playerid,267.6334);
SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zur Wheel Arch Angels-Werkstatt teleportiert.");
}
if(listitem==5)
{
// Brücke von Los Santos und Flint County
SetPlayerPos(playerid, 65.1056,-1533.8071,5.1562);
SetPlayerFacingAngle(playerid,81.1712);
SendClientMessage(playerid,COLOR_LIME,"Du hast dich erfolgreich zur Brücke von Los Santos und Flint County teleportiert.");
}
}
else
{
SendClientMessage(playerid,COLOR_RED,"Du hast den Teleportationsvorgang abgebrochen.");
}
return 1;
}
if(dialogid==DIALOG_HELP)
{
if(response)
{
if(listitem==0)
{
// Fahrzeuge
SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Fahrzeuge ]---------------");
SendClientMessage(playerid,COLOR_WHITE,"Fahrzeug erstellen: /vehicle [ID]");
SendClientMessage(playerid,COLOR_WHITE,"Fahrzeug lackieren: /vehiclecolor [ID] [ID]");
SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Fahrzeuge ]---------------");
}
if(listitem==1)
{
// Einstellungen
SendClientMessage(playerid,COLOR_YELLOW,"-------------[ Einstellungen ]-------------");
SendClientMessage(playerid,COLOR_WHITE,"Skin wechseln: /skin [ID]");
SendClientMessage(playerid,COLOR_WHITE,"Waffe erhalten: /weapon [ID]");
SendClientMessage(playerid,COLOR_WHITE,"Kampfstil ändern: /fightstyle [ID]");
SendClientMessage(playerid,COLOR_WHITE,"Zeit ändern: /time [Stunde] [Minute]");
SendClientMessage(playerid,COLOR_WHITE,"Teleportieren: /teleport");
SendClientMessage(playerid,COLOR_WHITE,"Wetter ändern: /weather [ID]");
SendClientMessage(playerid,COLOR_YELLOW,"-------------[ Einstellungen ]-------------");
}
if(listitem==2)
{
// Sonstiges
SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Sonstiges ]---------------");
SendClientMessage(playerid,COLOR_WHITE,"Private Nachricht senden: /pm [Empfänger] [Nachricht]");
SendClientMessage(playerid,COLOR_WHITE,"Straßensperre erstellen: /roadblock [Spieler]");
SendClientMessage(playerid,COLOR_WHITE,"Server neustarten: /restart");
SendClientMessage(playerid,COLOR_YELLOW,"---------------[ Sonstiges ]---------------");
}
}
else
{
SendClientMessage(playerid,COLOR_WHITE,"Du hast das Menü geschlossen.");
}
return 1;
}
return 1;
}
Ich hoffe jemand kann mir da behilflich sein.
Mit freundlichen Grüßen,
Crusard
Crusard: Habe mir den Code nicht ganz angeschaut, aber zeig uns mal die entsprechenden Dialog Defines. Habe das Gefühl, dass beide Werte identisch sind.
#define DIALOG_HELP 1
#define DIALOG_TELEPORT 1
Mach die zweite 1 zu einer 2.
Oder schreib es direkt so
enum
{
DIALOG_HELP,
DIALOG_TELEPORT,
..
}
Wird alles automatisch hochgezählt.
Da haben wir's doch.
Folgender Ablauf:
Beide Dialoge haben die selbe Dialog ID.
Der Compiler läuft immer von oben nach unten und da der TP Dialog zuerst ausgeführt wird, da eben die ID's identisch sind und der Ausdruck dann eben auch wahr ist, wird er teleportiert. Der Callback wird dann mit "return 1" abgebrochen.
Einfach das zweite Dialog Define zu einer 2 machen.
Crusard:
Danke, da hab' ich gar nicht drauf geachtet.
Mit freundlichen Grüßen,
Crusard
ocmd:teilnehmer(playerid)
{
new string[128];
if(GetPVarInt(playerid,"Mitspieler") == 1)
{
SendClientMessage(playerid, 0x00FFFFFF, "**Fraktions - Mitglieder Online**");
for(new i = 0; i < MAX_PLAYERS; i++)
{
new sendername[MAX_PLAYER_NAME];
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 40, " *Teilnehmer: %s", sendername);
SendClientMessage(playerid, 0x0005FFFF, string);
}
}
return 1;
}
Funktioniert nicht so ganz
Variable wird so abgeseichert:
SetPVarInt(playerid,"Mitspieler", "1");
SetPVarInt(playerid,"Mitspieler", "1");
zu
SetPVarInt(playerid,"Mitspieler", 1);
1 ist kein String, daher ohne " "
EDIT:
ocmd:teilnehmer(playerid,params[]){
new string[144],sendername[MAX_PLAYER_NAME];
if(!GetPVarInt(playerid,"Mitspieler"))return 1;
SendClientMessage(playerid,0x00FFFFFF,"**Fraktions - Mitglieder Online **");
for(new i;i<GetMaxPlayers();i++){
GetPlayerName(i,sendername,MAX_PLAYER_NAME);
format(string,144,"%s\n*Teilnehmer: %s",string,sendername),SendClientMessage(playerid,0x0005FFFF,string);
}
return 1;
}
ocmd:teilnehmer(playerid)
{
new string [32],sendername[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if (! IsPlayerConnected (i)) continue;
else if(! GetPVarInt (i,"Teilnehmer")) continue;
GetPlayerName(i, sendername, sizeof(sendername));
format(string, 32, " *Teilnehmer: %s", sendername);
SendClientMessage(playerid, 0x0005FFFF, string);
}
return 1;
}
Da würde er jetzt alle Teilnehmer aufzählen. .
Das wolltest du doch, oder?
#Handy
Und wie könnte ich eine SendClientMessage machen und das nur an alle Teilnehmer?
Und wie könnte ich eine SendClientMessage machen und das nur an alle Teilnehmer?
for(new i = 0; i < MAX_PLAYERS; i++){
if(IsPlayerConnected(i)){
if(GetPVarInt(i,"Teilnehmer")){
SendClientMessage(i, 0x0005FFFF,"Hallo.");
}}}
Hat eventuell jemand die Einfahrtkoordinaten von San Andreas ? Also wenn man in Ls reinfährt, Sf, Lv. Möchte ungerne alles mühsam per Hand raussuchen^^
{"Los Santos", {44.60,-2892.90,-242.90,2997.00,-768.00,900.00}},
{"Las Venturas", {869.40,596.30,-242.90,2997.00,2993.80,900.00}},
{"Bone County", {-480.50,596.30,-242.90,869.40,2993.80,900.00}},
{"Tierra Robada", {-2997.40,1659.60,-242.90,-480.50,2993.80,900.00}},
{"Tierra Robada", {-1213.90,596.30,-242.90,-480.50,1659.60,900.00}},
{"San Fierro", {-2997.40,-1115.50,-242.90,-1213.90,1659.60,900.00}},
{"Red County", {-1213.90,-768.00,-242.90,2997.00,596.30,900.00}},
{"Flint County", {-1213.90,-2892.90,-242.90,44.60,-768.00,900.00}},
{"Whetstone", {-2997.40,-2892.90,-242.90,-1213.90,-1115.50,900.00}}
Quelle: http://pastebin.com/f68e1a6ad
Wie erstelle ich ein Random aus Spieler welche nur eine gewisse Variable haben.
Also Beispiel, Spieler XY und Spieler ZY haben beide die Variable 1 und sollten somit beim random dabei sein.
Es sollte immer einer der ganzen im random ausgewählt werden.
Gibts eine möglichkeit das eine Animation nicht unterbricht ?
ApplyAnimation(i, "ON_LOOKERS", "wave_loop", 4.0, 1, 0, 0, 0, 0, 0);
Die unterbricht komischerweise so komisch...