Das kannst du mit GetPlayerFacingAngle abfragen.
https://wiki.sa-mp.com/wiki/GetPlayerFacingAngle
[wiki]GetPlayerFacingAngle[/wiki]
Das kannst du mit GetPlayerFacingAngle abfragen.
https://wiki.sa-mp.com/wiki/GetPlayerFacingAngle
[wiki]GetPlayerFacingAngle[/wiki]
Kann mir jemand helfen ?
Ihr kennt bestimmt das pRP Script undzwar, kann man den Motor da nur mit /cv starten, das finde ich aber sehr blöd.
Ich wollte dann den Command vom neuen pRP nehmen, den hier.
COMMAND:engine(playerid,params[])
{
if(CheckPermissions(playerid,true,true,true,true,true,true) == 1)return 1;
new vehicleid = GetPlayerVehicleID(playerid);
if(!IsPlayerInAnyVehicle(playerid))return SCM(playerid,GRAU,"[FEHLER]: Du befindest dich in keinem Fahrzeug!");
if(GetPlayerVehicleSeat(playerid) != 0)return SCM(playerid,GRAU,"[FEHLER]: Du bist nicht der Fahrer des Fahrzeugs!");
if(Spieler[playerid][pHealTime] != 0)return SCM(playerid,GRAU,"[FEHLER]: Du kannst während des Geschlechtsverkehr den Motor des Fahrzeuges nicht starten!");
if(RefillVehicle[vehicleid] == 1)return SCM(playerid,GRAU,"[FEHLER]: Du tankst gerade!");
if(GetVehicleModel(vehicleid) == 509 || GetVehicleModel(vehicleid) == 481 || GetVehicleModel(vehicleid) == 510)return SCM(playerid,GRAU,"[FEHLER]: Das Fahrzeug hat keinen Motor!");
else if(vFahrzeug[vehicleid][motorschaden] != 0)return SCM(playerid,WEISS,"Das Fahrzeug ist kaputt. Rufe einen Abschlepper oder einen Kraftfahrzeugmechaniker.");
else if(vFahrzeug[vehicleid][Tank] <= 0.0)return SCM(playerid,GRAU,"Tank leer.");
else if(vFahrzeug[vehicleid][motor] == false)
{
vFahrzeug[vehicleid][motor] = true;
KillTimer(vFahrzeug[vehicleid][VehicleEngineTimer]);
vFahrzeug[vehicleid][VehicleEngineTimer] = SetTimerEx("VehicleEngine",VehicleInfo[GetVehicleModel(vehicleid)-400][vEngineStartInSek]*1000,0,"ii",playerid,vehicleid);
GTFP(playerid,"~w~Motor~g~ wird gestartet~n~...",VehicleInfo[GetVehicleModel(vehicleid)-400][vEngineStartInSek]*1000,6);
}
else if(vFahrzeug[vehicleid][motor] == true)
{
KillTimer(vFahrzeug[vehicleid][VehicleEngineTimer]);
GetVehicleParamsEx(vehicleid,engine,lights,alarm,doors,bonnet,boot,objective);
SetVehicleParamsEx(vehicleid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective);
vFahrzeug[vehicleid][motor] = false;
GTFP(playerid,"~w~Motor ~r~ausgeschaltet",2000,6);
}
return 1;
}
Ich bekam aber immer einen Error wegen dem "CheckPermission" es wäre nett wenn mir jemand weiter helfen könnte.
Und mir die Lösung per PN schreiben könnte.
Mit freundlichen Grüßen,
Dubst3p.[44]
Kann man irgendwie neue Schriftarten auf dem Server hinzufügen?
Z.b An einer Wand steht:
[Youtube Icon Bild ] : TestChannel
: TestChannel
( Soll für einen Localen Server sein
)
Schriftarten die auf dem Rechner des Users installiert sind funktionieren. Daher sollte man sich an die Standard-Fonts halten, da sonst jeder die Schriftart braucht, die dein SetObjectMaterialText nutzt.
Wie muss ich GetPlayerFacingAngle benutzen? Komme nicht klar. Habe die Abfrage so aber bekomme ein Error:
if(GetPlayerFacingAngle(playerid)<90)
Number of Arguments does not match definition.
new Float:angle;
GetPlayerFacingAngle(playerid, angle);
if(angle < 90 && angle > 70) //Beispiel
{
//Mach was
}
Ich habe ein Befehl womit angezeigt wird was für ein Angle Wert ich habe wenn ich auf die Position schaue die ich haben möchte. Der ist zwischen 80 und 90. Das heißt also ich muss den Wert zwischen 80 und 90 erlauben. Aber ich verstehe diese Vorzeichen in deiner Abfrage nicht, zumindest nicht alle. Gibt es eine Liste wo sie alle erklärt sind?
> größer
< kleiner
== gleich
>= größer gleich
<= kleiner gleich
!= nicht gleich
&& und
||oder
Denke die meinst du.
Mein Server crasht wenn ich ein Getränk nehme
[18:43:16] [debug] Server crashed while executing Lotto.amx
[18:43:16] [debug] AMX backtrace:
[18:43:16] [debug] #0 native SetTimerEx () from samp-server.exe
[18:43:16] [debug] #1 000036dc in public OnPlayerKeyStateChange (0, 16, 0) from Lotto.amx
[18:43:17] [debug] Native backtrace:
[18:43:17] [debug] #0 004828d2 in ?? () from samp-server.exe
[18:43:17] [debug] #1 00473919 in ?? () from samp-server.exe
[18:43:17] [debug] #2 004010b6 in ?? () from samp-server.exe
[18:43:17] [debug] #3 684062ca in ?? () from plugins\crashdetect.DLL
[18:43:17] [debug] #4 68408b28 in ?? () from plugins\crashdetect.DLL
[18:43:17] [debug] #5 684009c7 in ?? () from plugins\crashdetect.DLL
[18:43:17] [debug] #6 6840631a in ?? () from plugins\crashdetect.DLL
[18:43:17] [debug] #7 0046b6c8 in ?? () from samp-server.exe
[18:43:17] [debug] #8 004837a5 in ?? () from samp-server.exe
[18:43:17] [debug] #9 004867d8 in ?? () from samp-server.exe
Dann hau mal das crashdetect Plugin rein und poste den Log ![]()
Dann hau mal das crashdetect Plugin rein und poste den Log
Ist doch schon drin ![]()
Wie sieht der Code mit SetTimerEx dazu aus?
forward Animation(playerid);
public Animation(playerid)
{
ApplyAnimation(playerid,"VENDING","VEND_Eat_P",1.4,0,1,1,0,1200,1);
return 1;
}
else if(IsPlayerInRangeOfPoint(playerid, 0.2,1411.1259,-1484.6494,106.6032) )//Sprunk Machine
{
{
if (gettime() <Waitingtime[playerid])
return 1;
Waitingtime[playerid] = gettime() + WaitingtimeInterval;
}
new Float:angle;
GetPlayerFacingAngle(playerid, angle);
if(angle <90 && angle >70) //Beispiel
if(GetPlayerMoney(playerid) <1) // 1 $ required.
{
// Won't heal the player unless he got at least 1 $.
}
else
{
ApplyAnimation(playerid,"VENDING","VEND_Use",4.1,0,0,0,0,0);
SetTimerEx("Animation",2600, false, "playerid", playerid);
//ApplyAnimation(playerid,"VENDING","VEND_Drink_P",1.4,0,1,1,0,1200,1);
//ApplyAnimation(playerid,"VENDING"," VEND_Eat_P ",1.4,0,1,1,0,1200,1);
PlayerPlaySound(playerid,42600,0,0,0);
GivePlayerMoney(playerid,-1);
new Float:health;
GetPlayerHealth(playerid,health);
health += 33.3;
if(health > 100.0) health = 100.0;
SetPlayerHealth(playerid,health);
}
}
}
if (PRESSED(KEY_CTRL_BACK)) // H-Key
{
if(IsPlayerInRangeOfPoint(playerid, 1.0,1415.3289,-1485.0154,106.6032))//Party Room Elevator
{
SetPlayerPos(playerid,1425.5829,-1466.8423,115.2628); // Staffteam Elevator
}
{
}
}
return 1;
}
SetTimerEx("Animation",2600, false, "playerid", playerid);
zu:
SetTimerEx("Animation",2600, false, "d", playerid);
d oder i steht für einen Integer (ganze Zahl).
Nice, crasht nicht mehr. Aber ich muss länger als 5 Minuten meine Position wechseln bis ich mal die richtige Position habe. Kann ich auch abfragen ob der Spieler von Wert A bis Wert B liegt? Also die Angle Koordinate?
Und können mir diese Funktionen nicht auch helfen? Habe die bei einem anderem FS entdeckt:
stock GetXYInFrontOfSprunk(&Float:X, &Float:Y, Float:A){X += (0.75*floatsin(-A,degrees));Y += (0.75*floatcos(-A,degrees));return 1;}
oderstock GetXYInFrontOfObject(playerid, &Float:x, &Float:y, Float:distance){ new Float:a, Float:z; GetObjectRot(playerid,x,y,a); GetObjectPos(playerid, x, y, z); x += (distance * floatsin(-a, degrees)); y += (distance * floatcos(-a, degrees));
@FleX_GuN Wenn du Spalten meinst, ja maximum ist 4 ![]()
So dürfte es passen:
else if(IsPlayerInRangeOfPoint(playerid, 0.2,1411.1259,-1484.6494,106.6032) )//Sprunk Machine
{
if(gettime() < Waitingtime[playerid]) return 1;
if(GetPlayerMoney(playerid) >= 1) // 1 $ required.
{
new Float:angle;
GetPlayerFacingAngle(playerid, angle);
if(angle < 90 && angle > 70)
{
Waitingtime[playerid] = gettime() + WaitingtimeInterval;
ApplyAnimation(playerid,"VENDING","VEND_Use",4.1,0,0,0,0,0);
SetTimerEx("Animation",2600, false, "playerid", playerid);
//ApplyAnimation(playerid,"VENDING","VEND_Drink_P",1.4,0,1,1,0,1200,1);
//ApplyAnimation(playerid,"VENDING"," VEND_Eat_P ",1.4,0,1,1,0,1200,1);
PlayerPlaySound(playerid,42600,0,0,0);
GivePlayerMoney(playerid,-1);
new Float:health;
GetPlayerHealth(playerid,health);
health += 33.3;
if(health > 100.0) health = 100.0;
SetPlayerHealth(playerid,health);
}
}
}
Danke wie immer ![]()
Sind mehr als 10 Zeilen nicht möglich?
CMD:wshop(playerid,params[])
{
ShowPlayerDialog(playerid, DIALOG_WSHOP, DIALOG_STYLE_TABLIST_HEADERS, "Buy Weapon",
"Weapon\tPrice\tAmmo\n\
{FF0000}Silenced 9mm\t{00FF00}$600\t{FFFF00}100\n\
{FF0000}Desert Eagle\t{00FF00}$1000\t{FFFF00}100\n\
{FF0000}Shotgun\t{00FF00}$1000\t{FFFF00}100\n\
{FF0000}Sawnoff Shotgun\t{00FF00}$1000\t{FFFF00}100\n\
{FF0000}Combat Shotgun\t{00FF00}$2500\t{FFFF00}100\n\
{FF0000}Uzi\t{00FF00}$1500\t{FFFF00}100\n\
{FF0000}Mp5\t{00FF00}$700\t{FFFF00}100\n\
{FF0000}AK-47\t{00FF00}$1250\t{FFFF00}100\n\
{FF0000}M4\t{00FF00}$1750\t{FFFF00}100\n\
{FF0000}Tec-9\t{00FF00}$1000\t{FFFF00}100", // Etc.
"Select", "Cancel");
return 1;
}