Beiträge von Flag

    oder ein anderes afk sys. hätte ich auch. also wenn einer aufn desktop geht mit nem CallBack OnPlayerAFK und wenn er wieder back kommt OnPlayerRE ^^ ist find ich besser als nur das mit den "sich nicht bewegen"....


    das ganze geht über OnPlayerUpdate, denn wenn einer aufn desktop geht, kommen von seinem player keine PlayerUpdates mehr.

    so kann man viel schneller waffendaten auslesen:


    new weapons[13][2];
    new msg[256];
    for (new i = 0; i < 13; i++)
    {
    GetPlayerWeaponData(playerid, i, weapons[i][0], weapons[i][1]);
    //zur Kontrolle ob es richtig ausgelesen hat
    if(weapons[i][0] != 0 && weapons[i][1] != 0)
    {
    new waffenname[32];
    GetWeaponName(weapons[i][0],waffenname,sizeof(waffenname));
    format(msg,sizeof(msg),"Du hast eine %s mit %d Schuss",waffenname,weapons[i][1]);
    SendClientMessage(playerid,COLOR_iwas,msg); //i-eine Farbe, weiß grad keinen Farbcode auswendig :P
    }
    }


    Ihr habt euch schon immer mal gefragt, ob es nicht möglich wäre, einen Gamemode zu schreiben, in dem man Battlefield nachzocken kann? ;D
    Hier ist mein Release meines BF:F Addons, welches Folgendes beinhaltet:


    -Flaggen-Punktesystem: Wer schon mal Battlefield gezockt hat, wird bestimmt die Flaggen kennen, welche man erobern muss und dann als Einstiegspunkt für dein Team genutzt werden kann.


    Die Flagge sieht gut aus und ist wie im Original animiert (Flagge runter/rauf + Ladebalken).


    Hier ein Video wie das ganze aussieht.



    -Scoreboard (ähnlich dem Scoreboard von BF1943)


    -Teamfarben(Das eigene Team wird in Blau angezeigt, das gegnerische in Rot. Wie in Battlefield eben.



    Das Addon ist für TDM Gamemodes gedacht, welche die Function SetPlayerTeam mit den Team-IDs 0 und 1 verwenden (in meinem Example Script ist Team 0 die Elite Force und Team 1 sind Terroristen).


    Installation des Addons:


    Der Filterscript bff-engine ist wichtig und muss mit dem Server laufen. Wenn ihr die include in eueren Gamemode eingebettet habt könnt ihr Folgende CallBacks nutzen:

    public FLAG_OnTeamAWinFlagg(gebiet)
    public FLAG_OnTeamBWinFlagg(gebiet)
    public FLAG_OnTeamALooseFlagg(gebiet)
    public FLAG_OnTeamBLooseFlagg(gebiet)
    public FLAG_OnTeamAWinBackFlagg(gebiet)
    public FLAG_OnTeamBWinBackFlagg(gebiet)
    public FLAG_OnDraw()
    public FLAG_OnTeamAWinGame()
    public FLAG_OnTeamBWinGame()


    Außerdem auch Folgende Funktionen:

    CreateFlagg(Float: fX, Float: fY, Float: fZ, owner(0/1/[2/3])); //returns flaggid
    DestroyFlagg(flaggid);
    GetTeamScore(team);
    SetTeamScore(team, points); //default team 0: 9999; team 1: 9999
    NoFlaggs(team);
    GetFlaggOwner(team);
    GetXYZofFlagg(Flagg, &X, &Y, &Z);
    UseTeamColors(mode);
    CheckBFEngine();
    SetFlaggRange(Float:range); //default: 5.0
    DisableScoreBoard(mode);


    Um eine neue Flagge zu erstellen wird die Stelle mit /save ingame abgespeichert und die Koordinaten aus der savedpostions.txt werden mit CreateFlagg verwendet.
    z.B.: CreateFlagg(342.893707, 882.210083, 20.431209, 0);
    Wenn als Owner 2, oder 3 angegeben wird, bleibt die Flagge beim Starten des Servers unbesetzt.
    Das Maximum an Flaggen ist 4.


    Das Example Script bf-bsp verwendet fast alle oben angeführten Funktionen. Außerdem sind darin noch einige andere Sachen, welche man im originalen Battlefield, ebenfalls drin wie z.B.: Klassenauswahl, Schaden beim Verlassen der Kampfzone, usw. enthalten.


    Das Login/Register System des Example Gamemodes ist nicht zu 100% von mir. Es kommt euch vielleicht von GF bekannt vor^^. Ich hatte nur welche von mir die dafür unnötig zu kompliziert gewesen wären.


    Es ist außerdem zweisprachig (Englisch-Deutsch), die Sprache wählt man bei der Registration aus (jo das ist von mir :D).




    Falls ihr euch fragt, warum das Addon einen FS braucht, hier die Antwort:


    Ich will nicht mein komplettes Werk freigeben, da ich schon etwas Zeit darin investiert habe und nicht will, dass es von jemandem geklaut wird und von jemanden behauptet wird, er habe es selbst gescriptet. Außerdem war es eine nette Übung für mich, mein Script zu sichern^^


    Bei Fragen oder Vorschlägen zur Erweiterung des Addons, postet hier rein.




    Viel Spaß weiters,
    Flag



    //Edit:
    Aja wichtig ist dass jeder Spieler der quasi am Spiel teilnimmt mit InGame[playerid] = 1; angeführt wird, sonst kann dieser Spieler keine Flaggen einnehmen.


    wer die ingame kontrolle in seinem eigenem script entfernen will, fügt das unter OnGameModeInit:


    for(new i; i<MAX_PLAYERS; i++) InGame[i] = 1;

    es nützt alles nix, man kann es net deaktivieren. auch wenn eine auto-kick auf leute drinnen is die sich als admin einloggen. dann loggt sich derjenige halt per console ein? und da liegt auch schon das problem leute. wenn ein hacker mal da eingeloggt ist dann isses aus :D. kein hacker würde es auch ingame versuchen, wenn dann per rcon console weil man da auch per brute force methode sich durchhacken kann.

    ja und welche coords muss ich dann nehmen also wenn ich oben links /save gemacht habe bekomme ich ja x,y,z und wenn ich unten rechts gesaved habe kommt auch x,y,z ich muss doch 2 coords von jedem save nehmen oder nicht ?? also z.b. vom 1. x,y und vom 2. y,z nur welche muss ich nehmen kann nicht jemand mit den folgenden coords mal nen beispiel machen??


    2126.2019,-2629.0349,13.5469,313.2012
    1365.0581,-2405.5195,13.5547,75.9280


    die 4 coords

    auch wenn du es auf
    dcmd_mgadmin(playerid,params[]) {
    if(PlayerInfo[playerid][admin]>=5 || IsPlayerAdmin(playerid)) {
    if(!strlen(params)) return SendClientMessage(playerid,rot,"/mgadmin [ID] [LEVEL]");
    new typ = strval(strget(params,0));
    if(IsPlayerConnected(typ)) {
    if(!strlen(strget(params,1))) return SendClientMessage(playerid,rot,"/mgadmin [ID] [LEVEL]");
    new adminlvl = strval(strget(params,1));
    if(adminlvl>=0 && adminlvl<=5) {
    new s[100], name[16];
    GetPlayerName(typ,name,sizeof(name));
    format(s,sizeof(s),"Du hast %s zum Admin Level %d gemacht",name,adminlvl);
    SendClientMessage(playerid,blau,s);
    GetPlayerName(playerid,name,sizeof(name));
    format(s,sizeof(s),"%s hat dich zum Admin Level %d gemacht",name,adminlvl);
    SendClientMessage(typ,blau,s); PlayerInfo[typ][admin] = adminlvl; }
    else { SendClientMessage(playerid,rot,"Inkorrektes Level"); }}
    else { SendClientMessage(playerid,rot,"ID nicht vergeben"); }}
    else { SendClientMessage(playerid,rot,"Dein Admin Level ist nich hoch genung"); }
    return 1;
    }


    umgeändert hast?

    ne nur an zwei ecken eigentlich


    wenn das nun dein gebiet ist





    hier______________
    |................|
    |................|
    |................|
    |................|
    |................|
    |________________|hier




    also an den DIAGONALEN

    wie stellst du dir das genau vor, das ein tor davor steht und es sich nur automatisch öffnet, wenn einer den stuntpass hat? oder man sofort wieder rausfliegt (SetPlayerWorldBounds)?

    meinst du, dass jeder spieler, der die area betritt ne warnung bekommt oder dass wenn ein unauthorisierter reingeht, alle die warnung bekommen?

    wieder auch forward Bsn(playerid); in forward Bsn(); umändern


    public Bsn()
    {
    for(new playerid;playerid<MAX_PLAYERS;playerid++)
    {
    if (PlayerToPoint(1, playerid, 1198.8156,-918.5995,43.1227)) // PD Eingang // if (PlayerToPoint(Radius, playerid, Float:X, Float:Y, Float:Z)) // Wo der Spieler Stehen soll
    {
    SetPlayerInterior(playerid, 10);
    SetPlayerPos(playerid, 363.4130,-74.5787,1001.5078); // Wo der Spieler hin kommen soll
    SetPlayerFacingAngle(playerid, 0.0);
    }
    else if (PlayerToPoint(1, playerid, 363.4130,-74.5787,1001.5078)) // PD Ausgang
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, 1198.8156,-918.5995,43.1227);
    SetPlayerFacingAngle(playerid, 90.0);
    }
    }
    return 1;
    }

    die vierte koordinate ist keine koordinate sonder die rotation....


    x - - - - - - - - - - -y - - - - - - - - z - - - - -...rotation
    2126.2019,-2629.0349,13.5469


    x - - - - - - - - - - -y - - - - - - - - z - - - - -....rotation
    1365.0581,-2405.5195,13.5547



    und für SetPlayerWorldBounds brauchst du außerdem die Z koordinate auch nicht



    SetPlayerWorldBounds(playerid,2126.2019,1365.0581,-2405.5195,-2629.0349);
    SetPlayerWorldBounds(playerid,maxX,minX,maxY,minY);

    klar^^das mit den lvln kannst dir ja vom GF abgucken und das selbe prinzip wendest du mit tnt und metall an
    da hast auch ein bsp wie man waffen aus materials baut (siehe cmd "/sellgun")