Hallo,
Also ich weiß das ist denke ich mal leicht und ich denke mal ich weiß auch die Lösung aber bei mir funzt das nicht.
Ich habe mir mit Hilfe von verschiedenen Threads was gebastelt und zwar das man ne Rampe Spawnen kann. So jetzt funktioniert das aber nicht. Wenn ich jemand anders eine spawnt kommt diese bei mir.
Also ich würde gerne mal wissen ob es da ne "Regel" gibt wo man überall "i" oder "playerid" nutzen muss.
Hier mal das was ich alles zu dem "Befehl" habe.
new DesRamp[MAX_PLAYERS];
new bool: rampe[MAX_PLAYERS];
new bool: gesprungen[MAX_PLAYERS];
forward DestroyRamp(playerid);
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if(newkeys & KEY_ACTION)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(rampe[i] == true && gesprungen[i] == false)
{
new Float:angle, Float:x, Float:y, Float:z;
GetPlayerPos(i, x, y, z);
angle = GetXYInFrontOfPlayer(playerid, x, y, GetOptimumRampDistance(playerid));// das hatte ich jetzt nur von i in playerid geändert aber noch nicht getestet
if (angle < 0.0) angle += 360.0;
z += 0.5;
DesRamp[i] = CreateObject(1632, x, y, z - 0.5, 0.0, 0.0, angle);
SetTimer("DestroyRamp", 2000, 0);
gesprungen[i] = true;
}
else
{
}
}
}
return 1;
}
public DestroyRamp(playerid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(gesprungen[playerid] == true)
{
DestroyObject(DesRamp[i]);
gesprungen[i] = false;
}
}
}
Float:GetXYInFrontOfPlayer(playerid, &Float:x, &Float:y, Float:distance)
{
new Float:a;
GetPlayerPos(playerid, x, y, a);
if (IsPlayerInAnyVehicle(playerid)) GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
else GetPlayerFacingAngle(playerid, a);
x += (distance * floatsin(-a, degrees));
y += (distance * floatcos(-a, degrees));
return a;
}
Float:GetOptimumRampDistance(playerid)
{
new ping = GetPlayerPing(playerid), Float:dist;
dist = floatpower(ping, 0.25);
dist = dist*4.0;
dist = dist+5.0;
return dist;
}
CMD:rampe(playerid, params[])
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(rampe[i] == false)
{
TextDrawHideForPlayer(playerid, RampenTextOff);
TextDrawShowForPlayer(playerid, RampenTextOn);
rampe[i] = true;
}
else if(rampe[i] == true)
{
TextDrawHideForPlayer(playerid, RampenTextOn);
TextDrawShowForPlayer(playerid, RampenTextOff);
rampe[i] = false;
}
}
return 1;
}
ich habe schon mit den for schleifen rumprobiert und geguckt wie und was geht. Aber ich weiß nicht vielleicht bin ich zu dumm.
Wäre auch sehr nett wenn mir jemand mal ein Tutorial dazu geben könnte mit den Schleifen bzw. wie das geht das mehrer Spieler z.B. einen timer nutzen können oder wie auch immer. Damit ich das für die zukundt lernen kann.
MfG
Xtreame