Teams mit gTeam erstellen [UPDATED]

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
  • In diesem Tutorial erkäre ich euch, wie ihr gTeam arbeiten könnt und somit Commands, Spawns, etc. nur für bestimmte Teams machbar sind.



    1. Variable erstellen
    Oben zu den anderen new's im Script fügt man ein
    new gTeam[MAX_PLAYERS];
    ein. Im Klartext erstellt man eine Variable für jeden Spieler, der die Nummer des Teams speichert.



    2. Teams erstellen/definieren
    Man definiert die gewünschten Teams mit einer Nummer. Die Nummer ist Endeffekt egal, hauptsache eine Gangzahl:
    #define TEAM_GROVE 0
    #define TEAM_BALLAS 1
    #define TEAM_VAGOS 2
    #define TEAM_COPS 3
    #define TEAM_ZIVILISTEN 4



    3. Teams zuweisen

    Nun geht man zu
    OnPlayerRequestClass. Das ist das Callback, das aufgerufen wird, wenn jemand bei der Skinauswahl ist/zwischen den Skins hin und her wechselt. playerid ist der Spieler und classid der wievielte Skin es gerade ist, den er anschaut. Wichtig: Bei der ClassID fängt man bei 0 an zu zählen. Also entspricht der 1. Skin ClassID 0, der 2.Skin entspricht ClassID 1, etc.
    Um die ClassID abzufragen, benutzt man am besten switch. Hier ein kleines Beispiel:
    public OnPlayerRequestClass(playerid,classid)
    {
    switch(classid)
    {
    case 0: gTeam[playerid] = TEAM_GROVES; // 1. Skin
    case 1,2,3: gTeam[playerid] = TEAM_BALLAS; // 2. 3. und 4. Skin
    case 6..10: gTeam[playerid] = TEAM_VAGOS; // 7. bis 10. Skin
    case 4,5,11..14: gTeam[playerid] = TEAM_COPS; // 5. 6. und 12. bis 15. Skin
    default: gTeam[playerid] = TEAM_ZIVILISTEN; // alle restlichen Skins, die hier drüber nicht abgefragt wurden (zum Beispiel: 16. bis 80. Skin)
    }
    return 1;
    }
    Ich hoffe ich muss jetzt switch nicht noch extra erklären, wenn ihr das nicht versteht, einfach nach einem kleine Tut schauen.



    4. Teams abfragen
    Das sollte nicht sonderlich schwierig sein:
    if(gTeam[playerid] == TEAM_ZIVILISTEN) // wenn playerid zum Team TEAM_ZIVILISTEN gehört
    {
    // Do blabla
    }
    else if(gTeam[playerid] == TEAM_GROVES || gTeam[playerid] == TEAM_BALLAS) // wenn playerid zu TEAM_GROVES oder TEAM_BALLAS gehört
    {
    // Do blabla
    }
    else // wenn playerid zu einem anderen Team gehört
    {
    // Do blabla
    }



    5. Verwendung
    Hier ein Beispiel von einem Teleport, der nur für Cops nutzbar ist
    if(strcmp("/copbase",cmdtext,true) == 0)
    {
    if(gTeam[playerid] == TEAM_COPS)
    {
    SetPlayerPos(playerid,123.00,456.00,22.00);
    SendClientMessage(playerid,0x00FF00FF,"Du bist nun bei der Cop-Base, da du ein Cop bist! :)");
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist kein Cop, deswegen wirst du nicht teleportiert!");
    }
    return 1;



    6. Fertig ;D
    Und dann hat mans auch schon gepackt, es ist im Grunde genommen ganz einfach. Hier noch ein Scriptbeispiel, wenn es Probleme geben sollte:
    breadfish.de/wcf/attachment/1719/

    Viel Spaß damit und gutes Gelingen!


    Last Update: 12.02.10 22:04 (Tut mir Leid, die Intention ist irgendwie im Arsch, ich hab das Tut grundauf etwas verbessert)


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

    5 Mal editiert, zuletzt von M4rciii ()

  • Das passiert bei NICHT-GODFATHERNUTZERN!!!! unter OnGameModeInit


    Das erste AddPlayerClass ist dann erster Skin


    AddPlayerClass(idvoncopzB280,X,Y,Z,A,Waffe1,Munition1,W2,M2,W3,M3);


    Ich scripte NICHT mehr, ich möchte mit NIEMANDEM einen Server aufmachen habe auch NICHTS mehr mit LoH zu tun, also lasst es mit den PNs!

  • Find ich gut aber könnteste das bitte auch für Autos erklären, also das eine Partei nur bestimmte Autos fahren darf.


    Sorry bin noch Anfänger, hab aber mit 2 Stunden Tutorial Videos schon was auf die Beine gestellt^^

  • so hier wie du eine oder mehrer Personen für ein Wagen zu teilen kannst Stefan



    new Auto4two;



    public OnFilterScriptInit()
    {


    Auto4two = AddStaticVehicle(560,1095.5482,-820.8516,86.6679,134.5751,0,0);
    return 1;
    }







    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)


    if(vehicleid == Auto4two)
    {
    new name[32];
    GetPlayerName(playerid, name, sizeof(name));
    if(strfind("ShockeRone", name, true) == 0 || strfind("ShockeRtwo", name, true) == 0)
    {
    SendClientMessage(playerid, COLOR_YELLOW, "[!] Willkommen in deinem Auto");
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_YELLOW,"[!] Nur für ShockeRone und two!");
    }
    }
    return 1;
    }

  • Also ich meins eig. so,


    am Amfang hab ich ja teams definiert



    static gTeam[MAX_PLAYERS];


    und dann

    #define TEAM_Cops 0
    #define TEAM_Robman 1


    so nun habe ich ein polizei hq mit an die 40 autos
    und diese autos sollen nur für das tam 0 also cops zugänglich sein und dass andere team einfach sofrt ausm fahrzeug rausschmeißen


    wäre cool wenn du mir das so sagen könntest, wie geagt ich kenn nur die grund commands^^


    MFG Hagi

  • Du meinst doch sicher so, dass der Name über dem Character steht oder?


    Dann benutzt du einfach...


    GameTextForPlayer, bsp:


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerClass(playerid, classid);
    SetupPlayerForClassSelection(playerid);
    gPlayerClass[playerid] = classid;


    switch (classid) {
    case 0:
    {
    GameTextForPlayer(playerid, "~g~TESTSPAWNS-MOUNTCHILIAD", 500, 3);
    //Hier die Aktion(für den Spieler, "TEXT", Zeit, Style)
    }



    Hinweis: Keinen Kontakt über TeamViewer oder Skype !
    Grüßt den Fehlerklärbär von mir.
    Coming soon: Pawn-Café ( Concept-Sharing | Scripting-First-Aid )

  • so habe ich das gemacht habe darauf geachtet das es den sdcin in keinem anderem script gibt und das ist dann der erste skin
    #include <a_samp>



    static gTeam[MAX_PLAYERS];


    #define TEAM_MAFIA 0


    public OnFilterScriptInit()
    {


    AddPlayerClass(0, 2388.6797,1099.4380,34.2578,359.9680, 0, 0, 0, 0, 0, 0);


    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    if(classid == 0)
    {
    gTeam[playerid] = TEAM_MAFIA;
    }
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerPrivmsg(playerid, recieverid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mafia", cmdtext, true, 10) == 0)
    {
    if(gTeam[playerid] == TEAM_MAFIA)
    {
    SetPlayerPos(playerid,123.00,456.00,22.00);
    SendClientMessage(playerid,0x00FF00FF,"Du bist nun beim mafia hq!");
    }
    else
    {
    SendClientMessage(playerid,0xFF0000FF,"Du bist kein Mafia Miedglied");
    }
    return 1;
    }
    return 0;
    }


    public OnPlayerInfoChange(playerid)
    {
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }

  • Noch eine Frage.


    Also ich hab ne Penner Gang gemacht und da gibt es 3 Skins, und man muss ja oben #define Penner 0 machen und die 0 heißt ja das es der erste Skin ist.Wie mache ich jetzt das das meine 3 Penner zur Gang Penner gehören?

    Spendet pls für mich.Bin ein Armer Schlucker.
    Einfach auf Signatur klicken.

  • Mein frage währe das ich die als admin frei schalten muss?

  • #include


    // This is a comment
    // uncomment the line below if you want to write a filterscript
    //#define FILTERSCRIPT


    #if defined FILTERSCRIPT


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }


    #else


    main()
    {
    print("\n----------------------------------");
    print(" Blank Gamemode by your name here");
    print("----------------------------------\n");
    }


    #endif


    public OnGameModeInit()
    {
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
    }


    public OnGameModeExit()
    {
    return 1;
    }


    public OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
    SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
    return 1;
    }


    public OnPlayerRequestSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerConnect(playerid)
    {
    return 1;
    }


    public OnPlayerDisconnect(playerid, reason)
    {
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    return 1;
    }


    public OnVehicleSpawn(vehicleid)
    {
    return 1;
    }


    public OnVehicleDeath(vehicleid, killerid)
    {
    return 1;
    }


    public OnPlayerText(playerid, text[])
    {
    return 1;
    }


    public OnPlayerPrivmsg(playerid, recieverid, text[])
    {
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if (strcmp("/mycommand", cmdtext, true, 10) == 0)
    {
    // Do something here
    return 1;
    }
    return 0;
    }


    public OnPlayerInfoChange(playerid)
    {
    return 1;
    }


    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    return 1;
    }


    public OnPlayerExitVehicle(playerid, vehicleid)
    {
    return 1;
    }


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerEnterRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnPlayerLeaveRaceCheckpoint(playerid)
    {
    return 1;
    }


    public OnRconCommand(cmd[])
    {
    return 1;
    }


    public OnObjectMoved(objectid)
    {
    return 1;
    }


    public OnPlayerObjectMoved(playerid, objectid)
    {
    return 1;
    }


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    return 1;
    }


    public OnPlayerSelectedMenuRow(playerid, row)
    {
    return 1;
    }


    public OnPlayerExitedMenu(playerid)
    {
    return 1;
    }


    </a_samp>bitte sagt mir genau wo ich was in welche zeile einfügen muss, pls bitte ich weis net weiter
    MFG
    ]BSC[Simon


    MY SELFMADE GAMEMODE "NoName"

    Spoiler anzeigen


    - AccountSystem: 100%
    - LizenzenSystem: 5%
    - TelefonSystem: 5%
    - JobSystem: 3%
    - GeldSystem: 80%
    - AutoSystem: 75%
    - FahndungsSystem: [color=#ff6600]10%
    [color=#000000]- HausSystem: [color=#ff0000]0%

    [color=#000000]- GeschäftsSystem: [color=#ff0000]0%

    [color=#000000]- ZahlTag System: [color=#ff0000]0%

    [color=#000000]- WetterSystem: [color=#ff0000]0%

    [color=#000000]- AntiCheatSystem: [color=#ff0000]0%

    Spoiler anzeigen
    GameModeName: [GM]MyGamemode
    Filterscripts: None
    Benutze Includes: [Inc]MyInclude
    Voraussichtliche Fertigstellung: Unbekannt
    Voraussichtliche Servereröffnung: Unbekannt
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Voraussichtliche Veröffentlichung des Scripts: Wahrscheinlich NIE
    Sonstige Anmerkungen: Selfmade

  • Als erstes braucht man ein
    static gTeam[MAX_PLAYERS];
    oben in seinem Script unter den Includes.


    Dann definiert man die gewünschten Teams mit einer Nummer:
    #define TEAM_GROVE 0
    #define TEAM_BALLAS 1
    #define TEAM_COPS 2


    ja... wo gehöhren wohl die #defines hin? vllt bei den anderen #defines?
    bei dem nächsten steht da sogar der public mit dran
    und sonst, der Command... wohin nur? vllt ja OnPlayerCommandText