Duty-System (OCMD)

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • 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 :)

    [tabmenu][tab='Angebote',http://images-1.findicons.com/files/icons/1722/gnome_2_18_icon_theme/48/stock_new_meeting.png][subtab='CMS und Forumsystem',http://icons.iconarchive.com/icons/uribaani/realm/128/Control-panel-icon.png]Installationen & Forumlösung - Forumthread

    3 Mal editiert, zuletzt von Nesoc () aus folgendem Grund: //Unduty hinzugefügt

  • Leider auf Godfather gehalten. :P Nichts schweres. Wieso hast du? sfpddutypickup = CreatePickup(1239, 1 , x,y,z, 0);
    sogesehen definiert ? - CreatePickup ohne sfpddutypickup funkt genauso mit IfPlayerInRangeofPoint.


    ALso ist das:
    sfpddutypickup =
    & das:
    new sfpddutypickup;
    Unnötig. :P


    Sonst gut. 6/10.

  • Ich weiß, aber ich halte mein Script geordnet und das hilt mir eben :)
    Ich bin auch für Wünsche offen und kann es gerne erweitern!

    [tabmenu][tab='Angebote',http://images-1.findicons.com/files/icons/1722/gnome_2_18_icon_theme/48/stock_new_meeting.png][subtab='CMS und Forumsystem',http://icons.iconarchive.com/icons/uribaani/realm/128/Control-panel-icon.png]Installationen & Forumlösung - Forumthread

  • Copy & Paste Tutorial, was lernt man dabei?
    Genau -> Nichts.


    Trotzdem 1/10 für die Mühe.

    Unkompetent. Das neue dynamisch.



    ihr seit schon lustig postet erros aber nicht die zeilen wo sie sind dann können wir euch auch nicht helfen^^


    Lernt Scripten, Leute, und macht eure Augen auf!


    _______________________________________
    50 Beiträge: [x] 300 Beiträge: [x]
    100 Beiträge: [x] 500 Beiträge: [x]
    150 Beiträge: [x] 1000 Beiträge: [x]
    200 Beiträge: [x]
    2000 Beiträge: []
    250 Beiträge: [X] Boardaktivitäten: Profil


    [size=36]_______________________________________

    /Edit: Schmerzt es dir eigentlich nicht so ein Müll zu schreiben 8|

  • 3/10 für die Mühe..
    Mit freundlichen Grüßen, *> .Manager <*

  • C:\Users\Mehmet Ali\Desktop\GTA Sa\[GSF]Selfmade\gamemodes\[GSF]Selfmade.pwn(2154) : warning 203: symbol is never used: "Duty"
    C:\Users\Mehmet Ali\Desktop\GTA Sa\[GSF]Selfmade\gamemodes\[GSF]Selfmade.pwn(2154) : warning 203: symbol is never used: "duty"
    C:\Users\Mehmet Ali\Desktop\GTA Sa\[GSF]Selfmade\gamemodes\[GSF]Selfmade.pwn(903) : warning 204: symbol is assigned a value that is never used: "lspddutypickup"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    3 Warnings.

  • Ich danke für die Kritik. Nur frage ich mich, wie ich sonst erklären soll? Viele der Tutorials hier sind Copy & Paste.
    Dennoch danke, ich werde mal versuchen es nächstes mal nicht so leicht zu machen.


    @Mehmet
    Du musst auch schauen das du die Namen auf dein Script anpasst ;)

    [tabmenu][tab='Angebote',http://images-1.findicons.com/files/icons/1722/gnome_2_18_icon_theme/48/stock_new_meeting.png][subtab='CMS und Forumsystem',http://icons.iconarchive.com/icons/uribaani/realm/128/Control-panel-icon.png]Installationen & Forumlösung - Forumthread

  • So dürfte das eventuell funktioniern:



    new duty[MAX_PLAYERS] = 0;
    befehlsname
    {
    if(duty[playerid] == 0) // Abgefragt wird ob die Variable duty für die playerid 0 ist. Das bedeutet in diesem Fall "offduty"
    {
    //sonstige Nachrichten etc.
    duty[playerid] = 1;
    }
    else if(duty[playerid] == 1) //selbes wie oben, nur diesmal "onduty"
    {
    //sonstige Nachrichten etc.
    duty[playerid] = 0;
    }
    }


    Mhh Thema ist ja schon ganzschön alt :S