Hi Leute.
Wie sollte eine Funktion aussehen, mit der
ich machen kann, das zwei Spieler sich ins
Gesicht sehen? Also zb. "stock SetPlayerLookAtPlayer(playerid,giveplayerid);"
Das wär sehr nett. (=
Lg
Hi Leute.
Wie sollte eine Funktion aussehen, mit der
ich machen kann, das zwei Spieler sich ins
Gesicht sehen? Also zb. "stock SetPlayerLookAtPlayer(playerid,giveplayerid);"
Das wär sehr nett. (=
Lg
SetPlayerCameraPos
SetPlayerCameraLookAt
-> ? Ich versteh grad nicht was du damit anfangen möchtest
Nein das meine ich nicht.
Der Sichtwinkel soll sich ändern.
((G/S)etPlayerFacingAngle) und
so gesetzt werden, das beide Spieler
sich ins Gesicht sehen.
ich versteh nicht wie du das meinst mit ins gesicht sehen.
erläuter das mal genauer oder zeig ein screen wie es aussehen soll von einem anderen server oder sowas..
Ahh ich verstehe was er meint !
Spieler A
und Spieler B
per
SetPlayerLookAtPlayer(A,B);
sollen die Köpfe beider spieler aufeinander gerichtet werden also A schaut B an und B schaut A an !
Genau und wie mache ich das jz?
hmm kapier das immer noch nicht :d
am einfachsten machste es mit einem dcmd:
oben unter den #includes:
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
unter OnPlayerCommandText:
public OnPlayerCommandText(playerid, cmdtext[])
{
//dcmd(cmd,buchstabenanzahl,cmdtext);
dcmd(plook,5,cmdtext);
//hier das was du sonst noch unter OnPlayerCommandText hast..
return 1;
}
dann außerhalb eines publics:
dcmd_plook(playerid,params[])
{
new pID;
if(sscanf(params, "u", pID))
{
return SendClientMessage(playerid,0xFF0000FF,"Benutzung: /plook [id]");
}
else if(!IsPlayerConnected(pID))
{
return SendClientMessage(playerid,0xFF0000FF,"Spieler mit ID nicht Online!");
}
else
{
//Bei SetPlayerLookAtPlayer(playerid,pID); ist error, undefined..deshalb nehme ich mal playerSpectatePlayer, glaube das ist das was du meinst
PlayerSpectatePlayer(playerid,pID,SPECTATE_MODE_NORMAL);
}
return 1;
}(
hier hatte ich das problem, das er mit SetPlayerLookAtPlayer nichts anfangen konnte.
falls du sscanf nicht definiert hast, mach am besten ganz unten im script das hier noch rein:
stock sscanf(string[], format[], {Float,_}:...)
{
#if defined isnull
if (isnull(string))
#else
if (string[0] == 0 || (string[0] == 1 && string[1] == 0))
#endif
{
return format[0];
}
#pragma tabsize 4
new
formatPos = 0,
stringPos = 0,
paramPos = 2,
paramCount = numargs(),
delim = ' ';
while (string[stringPos] && string[stringPos] <= ' ')
{
stringPos++;
}
while (paramPos < paramCount && string[stringPos])
{
switch (format[formatPos++])
{
case '\0':
{
return 0;
}
case 'i', 'd':
{
new
neg = 1,
num = 0,
ch = string[stringPos];
if (ch == '-')
{
neg = -1;
ch = string[++stringPos];
}
do
{
stringPos++;
if ('0' <= ch <= '9')
{
num = (num * 10) + (ch - '0');
}
else
{
return -1;
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num * neg);
}
case 'h', 'x':
{
new
num = 0,
ch = string[stringPos];
do
{
stringPos++;
switch (ch)
{
case 'x', 'X':
{
num = 0;
continue;
}
case '0' .. '9':
{
num = (num << 4) | (ch - '0');
}
case 'a' .. 'f':
{
num = (num << 4) | (ch - ('a' - 10));
}
case 'A' .. 'F':
{
num = (num << 4) | (ch - ('A' - 10));
}
default:
{
return -1;
}
}
}
while ((ch = string[stringPos]) > ' ' && ch != delim);
setarg(paramPos, 0, num);
}
case 'c':
{
setarg(paramPos, 0, string[stringPos++]);
}
case 'f':
{
new changestr[16], changepos = 0, strpos = stringPos;
while(changepos < 16 && string[strpos] && string[strpos] != delim)
{
changestr[changepos++] = string[strpos++];
}
changestr[changepos] = '\0';
setarg(paramPos,0,_:floatstr(changestr));
}
case 'p':
{
delim = format[formatPos++];
continue;
}
case '\'':
{
new
end = formatPos - 1,
ch;
while ((ch = format[++end]) && ch != '\'') {}
if (!ch)
{
return -1;
}
format[end] = '\0';
if ((ch = strfind(string, format[formatPos], false, stringPos)) == -1)
{
if (format[end + 1])
{
return -1;
}
return 0;
}
format[end] = '\'';
stringPos = ch + (end - formatPos);
formatPos = end + 1;
}
case 'u':
{
new
end = stringPos - 1,
id = 0,
bool:num = true,
ch;
while ((ch = string[++end]) && ch != delim)
{
if (num)
{
if ('0' <= ch <= '9')
{
id = (id * 10) + (ch - '0');
}
else
{
num = false;
}
}
}
if (num && IsPlayerConnected(id))
{
setarg(paramPos, 0, id);
}
else
{
#if !defined foreach
#define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
#define __SSCANF_FOREACH__
#endif
string[end] = '\0';
num = false;
new
name[MAX_PLAYER_NAME];
id = end - stringPos;
foreach (Player, playerid)
{
GetPlayerName(playerid, name, sizeof (name));
if (!strcmp(name, string[stringPos], true, id))
{
setarg(paramPos, 0, playerid);
num = true;
break;
}
}
if (!num)
{
setarg(paramPos, 0, INVALID_PLAYER_ID);
}
string[end] = ch;
#if defined __SSCANF_FOREACH__
#undef foreach
#undef __SSCANF_FOREACH__
#endif
}
stringPos = end;
}
case 's', 'z':
{
new
i = 0,
ch;
if (format[formatPos])
{
while ((ch = string[stringPos++]) && ch != delim)
{
setarg(paramPos, i++, ch);
}
if (!i)
{
return -1;
}
}
else
{
while ((ch = string[stringPos++]))
{
setarg(paramPos, i++, ch);
}
}
stringPos--;
setarg(paramPos, i, '\0');
}
default:
{
continue;
}
}
while (string[stringPos] && string[stringPos] != delim && string[stringPos] > ' ')
{
stringPos++;
}
while (string[stringPos] && (string[stringPos] == delim || string[stringPos] <= ' '))
{
stringPos++;
}
paramPos++;
}
do
{
if ((delim = format[formatPos++]) > ' ')
{
if (delim == '\'')
{
while ((delim = format[formatPos++]) && delim != '\'') {}
}
else if (delim != 'z')
{
return delim;
}
}
}
while (delim > ' ');
return 0;
}
Awesome, solltest du meinen das der Sichtwinkel von einem Spieler zum anderen gerichtet werden soll, so muss ich dich enttäuschen, da man derzeit den Vektor vom Spieler nicht ändern kann. Möglich ist nur eine Feste Kamera zu dieser Richtung zu erstellen, also SetPlayerCameraLookAt und Co, aber da hat dann der Spieler nicht die "richtige" 3rd Person Perspektive bzw. wenn man sowas nachscriptet es ruckeln wird ^^. Was man gut verändern kann ist die Sichtrichtung von der Spielfigur mit SetPlayerFacingAngle, aber das weißt du schon
Danke Templer, endlich checkt jemand was ich meine >_>
Danke, schade aber kann man nix machen
lg