Wollt heute mal mein eigenes Tutorial schaffen, es geht um ein Duty-System für Fraktionen, um z.B. Rüstungen & Waffen zu erhalten.
Hoffe, es ist verständlich und klappt! Bei mir tut es dies jedenfalls.
--------------------------------------------------------------------------------------------------------------------------------
Wir stellen uns erstmal vor, was wir machen müssen:
- Einen bestimmten Ort, wo man Duty machen kann, durch Pickup darstellen
- Abfragen, ob der Spieler in der Fraktion ist
- Abfragen, ob er in der Nähe des Duty-Punktes ist
- Waffen/Rüstung geben
Ich weise hier nochmal draufhin: Ihr müsst das Script bestimmt auf eures anpassen. Ich kann, wenn ich die Zeit habe, euch gerne helfen!
--------------------------------------------------------------------------------------------------------------------------------
Ich benutze als Beispiel ein Duty-Punkt für das SFPD
------------------------------------------------------------------
Erstmal brauchen wir zwei New's, das sind Variablen.
new Duty;
new sfpddutypickup;
Als nächstes brauchen wir ein Pickup für den Duty-Punkt:
sfpddutypickup = CreatePickup(1239, 1 , x,y,z, 0); //1239 ist die MODELID des Pickups (Information-Pickup), 1 steht dafür das man es nicht aufnehmen kann und x,y,z ersetzt ihr durch eure Koordinaten!
Jetzt kommen wir zum eigentlichen Befehl:
Erstmal:
ocmd:duty(playerid, params[])
{
Jetzt müssen wir natürlich schauen, zu welcher Fraktion er gehört. Ich lass es auslesen undzwar so:
ocmd:duty(playerid, params[]) //Befehl
{
switch(pInfo[playerid][Member]) //So schauen wir, welche Waffen der Spieler bekommt.
{
jetzt brauchen wir natürlich die Aktionen..
Ich ordne das in verschiedene cases, ihr könnt das auch anders machen..
ocmd:duty(playerid, params[])
{
switch(pInfo[playerid][Member])
{
case 0: //Ist er ein Zivilst, kann er es natürlich nicht ausführen
{
SendClientMessage(playerid, COLOR_GRAD2, "Du hast keine Rechte dazu!");
}
case 1://San Andreas Police Department
{
if(pInfo[playerid][Member] == 2)
if(IsPlayerInRangeOfPoint(playerid, 5.0, x,y,z)) return SendClientMessage(playerid, 0xFF0A00FF , "Du bist nicht am Duty-Punkt!"); // 1. Wird abgefragt, ob er beim Duty-Punkt ist. 5.0 steht für die Distanz, in der man sich entfernen kann. XYZ durch Koordinaten ersetzen!
GivePlayerWeapon(playerid, 3 , 1); //Gibt dem Spieler ein Knüppelstock (3 ist die Waffen-ID, 1 steht für die Munitionsanzahl)
GivePlayerWeapon(playerid, 24, 100); //Gleiche wie oben
GivePlayerWeapon(playerid, 31, 230); //Gleiche wie oben
SetPlayerArmour(playerid, 100); //Setzt die Rüstung auf 100
return 1;
}
}
return 1;
}
Und jetzt machen wir noch einen /unduty Befehl um wieder aus dem Dienst zu treten.
ocmd:unduty(playerid, params[])
{
switch(pInfo[playerid][Member])
{
case 0: //Ist er ein Zivilst, kann er es natürlich nicht ausführen
{
SendClientMessage(playerid, COLOR_GRAD2, "Du hast keine Rechte dazu!");
}
case 1://San Andreas Police Department
{
if(pInfo[playerid][Member] == 2)
if(IsPlayerInRangeOfPoint(playerid, 5.0, x,y,z)) return SendClientMessage(playerid, 0xFF0A00FF , "Du bist nicht am Duty-Punkt!"); // 1. Wird abgefragt, ob er beim Duty-Punkt ist. 5.0 steht für die Distanz, in der man sich entfernen kann. XYZ durch Koordinaten ersetzen!
ResetPlayerWeapons(playerid); //Waffen abnehmen
SetPlayerArmour(playerid, 0); //Setzt die Rüstung auf 0
return 1;
}
}
return 1;
}
Hoffe konnt einigen helfen! Und nicht zu hart bewerten, ich bin teilweise noch Anfänger