Beiträge von M4rciii

    Du musst dir Immer merken, alles was zusammen innerhalb von {} steht, muss auf einer Linie Stehen



    if(strcmp(cmdtext, "/airportstuntsf", true) == 0)
    {
    if(IsPlayerInAnyVehicle(playerid))
    {
    new VehicleID = GetPlayerVehicleID(playerid);
    SetVehiclePos(VehicleID,-1346.071,-292.228,14.809);
    }
    else
    {
    SetPlayerPos(playerid,-1346.071,-292.228,13.809);
    }

    new pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
    format(string, sizeof(string), "%s ist zum Airport nach SF gegangen( /airportstuntsf )", pname);
    SendClientMessageToAll(COLOR_GREEN, string);
    ResetPlayerWeapons(playerid);
    SetPlayerInterior(playerid,0);
    return 1;
    }

    Verwöhnter Godfathernutzer :P


    Naja, da brauchste einfach das FIlterscript adminspec, das schon beim server dabei is.


    Einfach mit /rcon login pw einloggen und dann /adminspec id eingeben


    Dann siehste was der Spieler auch sieht, nur kannste nix Steuern

    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)

    Ein neuer Codeschnipsel von mir. Is nur ne ganzganz kleine Kleinigkeit, aber sehr nützlich für die Godfahternutzer:



    stock IsPlayerInFrac(playerid,fracid)
    {
    if (PlayerInfo[playerid][pMember] == fracid || PlayerInfo[playerid][pLeader] == fracid) return 1;
    else return 0;
    }


    Ein Beispiel dafür:



    if(IsPlayerInFrac(playerid,1) print("Er ist ein Cop!");
    else print("Er ist kein Cop!");

    Sach ich ma Glückwunsch, breadfish! Vorn paar monaten warens noch 50, daran merkt man, dass das Forum immer weiterwächst!


    Möcht mich auch hier mal bedanken! Super Forum!

    Kommt davon, dass dieses RemovePlayerFromVehicle nur funkt, wenn man in einem Auto ist, und OnPlayerEnterVehicle ist der Moment, wenn man F drückt, also noch nicht drin ist


    Machs mal so:


    public OnPlayerStateChange(playerid, newstate, oldstate)
    {
    if(newstate == PLAYER_STATE_DRIVER)
    {
    if(GetPlayerVehicleID(playerid) == ShockeR)
    {
    new name[32];
    GetPlayerName(playerid, name, sizeof(name));
    if(strfind("ShockeR", name, true) == 0)
    {
    SendClientMessage(playerid,COLOR_YELLOW,"Willkomen in deinem Auto Shocker!");
    }
    else
    {
    RemovePlayerFromVehicle(playerid);
    SendClientMessage(playerid,COLOR_YELLOW,"[!] Nur für ShockeR!");
    }
    }
    }

    return 1;
    }


    if (strcmp("/copm4", cmdtext, true) == 0)
    {
    if(PlayerInfo[playerid][pLeader] == 1 || PlayerInfo[playerid][pMember] == 1) //1=cop
    {
    GivePlayerWeapon(playerid,31,1000);
    SendClientMessage(playerid,COLOR_YELLOW,"Viel Spaß mit der M4!");
    }
    else SendClientMessage(playerid,COLOR_RED,"Du bist kein Cop!");
    return 1;
    }