Script Frageecke

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
  • ShowPlayerMarkers zeigt die normalen viereckigen Markierungen aller Spieler an. Das zum Einen und zum Anderen ist es noch wichtig, welchen Alpha-Wert die Farben Deiner Spieler haben. Farben werden ja in den meisten Modes so definiert:
    #define COLOR_GRAY 0x777777AA
    Wichtig ist das AA am Ende, das ist der Wert für die Deckkraft der Farbe. Die meisten nehmen AA, kA warum, aber wenn man 00 wählt ist die Deckkraft 0 und somit komplett transparent. Wenn das der Fall ist bei Deinen Spielerfarben, dann liegt es daran. Der Alphawert hat keinen Einfluss auf die Schriftfarbe, sondern nur auf die Farbe des viereckigen Markers auf dem Radar.
    Ich empfehle AA oder wenn Du's komplett undurchsichtig haben willst FF.

  • Ah ja geht ganz gut hab aber ne neue frage:
    wie kann man es machen das ein cp aktieviert wir wenn man in die nähe kommt?
    geschweigedenn deakiteviert wird.


    2. frage wie kann man es machen das wenn das car so beschädigt ist das es schwartzt rauch nicht mehr fährt (freeze)
    mfg jp

    [img=http://img293.imageshack.us/img293/6485/unbenanntwb1.jpg]

  • Also ich habe jetzt auch mal wieder ne frage und zwar:


    ich habe CreatePlayeObject gemacht, dazu brauche ich die Playerid, aber wie definiere ich die für alle, denn playerid erkennt er nicht und wenn ich was mit "new" mache komm ein error mit (argument 1)


    mfg

  • Das wird mit einem Timer gemacht, der ständig schaut ob sich eine Koordinate inenrhalb einer viereckigen Bereichs befindet.

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!

  • Du brauchst die beiden Funktionen:


    forward AreaCheck();
    public AreaCheck() {
    for (new i; i<MAX_PLAYERS; i++) {
    if (IsPlayerInArea(i,1928.1771,987.5739,1970.5675,1042.8369)) {
    //setplayercheckpoint(i,...)
    } else {
    DisablePlayerCheckpoint(i);
    }
    }
    }


    stock IsPlayerInArea(playerID, Float:X_max, Float:X_min, Float:Y_max, Float:Y_min) {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerID, X, Y, Z);
    if(X >= X_max && X <= X_min && Y >= Y_max && Y <= Y_min) {
    return 1;
    }
    return 0;
    }


    Der Timer wird in OnGameModeInit() initiiert:


    SetTimer("AreaCheck", 500, 1);

    Intel Xeon W3690 Hexacore @ 4.5 GHz - 48GB Triple Channel DDR3 - GeForce RTX 2070 Super - Asus P6T Deluxe V1 @ P6T WS Pro BIOS

    Mainboard 12 Jahre, CPU 10 Jahre alt - old but gold!

  • So breadfish, ich hab das gemacht ohne errors hab auch schon alle Kordinaten und so.
    Nur der CP kommt und geht nicht, also wenn ich iwo nicht im gebiet spawne sehe ich ihn trotzdem


    forward AreaCheck();
    public AreaCheck() {
    for (new i; i<MAX_PLAYERS; i++) {
    // Blitz' Garagen Cp
    if (IsPlayerInArea(i,-1498.2483,2537.9236,-1470.3575,2511.3096)) {
    SetPlayerCheckpoint(i,-1477.8943,2533.8799,55.9759, 3.0);
    } else {
    DisablePlayerCheckpoint(i);
    }
    }
    }


    stock IsPlayerInArea(playerID, Float:X_max, Float:X_min, Float:Y_max, Float:Y_min) {
    new Float:X,Float:Y,Float:Z;
    GetPlayerPos(playerID, X, Y, Z);
    if(X >= X_max && X <= X_min && Y >= Y_max && Y <= Y_min) {
    return 1;
    }


    Und ich habe diese zwei Kordinaten benutzt


    AddPlayerClass(60,-1498.2483,2537.9236,55.7483,260.3825,0,0,0,0,0,0); // ecke rechts oben
    AddPlayerClass(60,-1470.3575,2511.3096,56.1470,270.7226,0,0,0,0,0,0); // ecke links unten


    Ja und den Timer eben von dir.


    Aber jetzt geht das hald iwie nicht


    bitte hilf mir mfg

  • Das kann so auch nicht funktionieren, weil Du die for-Schleife oben von 0 bis MAX_PLAYERS laufen lässt und mit jeder PlayerID einmal die IsPlayerInArea-Funktion aufrufst, die jedoch die PlayerID für GetPlayerPos verwendet. Wenn der Spieler mit dieser ID aber nicht existiert, gibt das einen Fehler und das Script bricht ab.



    forward AreaCheck();
    public AreaCheck()
    {
    new i;

    for(i=0; i<MAX_PLAYERS; i++)
    { // Blitz' Garagen Cp
    if(IsPlayerConnected(i)
    {
    if(IsPlayerInArea(i, -1498.2483, 2537.9236, -1470.3575, 2511.3096))
    { SetPlayerCheckpoint(i, -1477.8943, 2533.8799, 55.9759, 3.0); }
    else
    { DisablePlayerCheckpoint(i); }
    }
    }
    }


    stock IsPlayerInArea(playerID, Float:X_max, Float:X_min, Float:Y_max, Float:Y_min)
    {
    new Float:X, Float:Y, Float:Z;

    GetPlayerPos(playerID, X, Y, Z);
    if(X >= X_max && X <= X_min && Y >= Y_max && Y <= Y_min)
    { return 1; }


    return 0;
    }


    So sollte es funktionieren.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Neues Prob habe ich da mit nem CP


    und zwar  


    {
    new FloatHealth;
    new vehicleid;


    SetPlayerCheckpoint(playerid,-2047.1967,-111.2868,35.2442,3.0);


    if(IsPlayerInAnyVehicle(playerid))
    {
    vehicleid = GetPlayerVehicleID(playerid);


    SetVehicleHealth(vehicleid,FloatHealth);
    }
    else
    {
    GivePlayerMoney(playerid,-100);
    }
    return 1;
    }


    Normaler weise sollte dass das Vehicle reparieren, aber es zerstört es. was ist da falsch.
    Auch wenn ich ne Zhal stat dem FloatHealth eingeben wirds trotzdem zerstört.


    Aja meistens nehme ich die zahl 100


    mfg Blitz


    BUSTED


    Das heißt so viel wie es hat sich erledigt

    3 Mal editiert, zuletzt von Dikey ()

  • Frage:


    Ich habe ein bisschen die Area51 gescript, und ich will wenn jmd. die Area51 verlässt das er Energie verliert.
    Wie mach ich das?
    Und ich habe Armor bei mir auf der Map aber wenn ich es nehme gehts es weg (Für immer) und ich krieg nicht mal
    Armor dazu. Ich will aber das es nach dem Tod wieder da ist, und das man Armor bekommt.


    Script/Line:


    //Armor


    173 AddStaticPickup(1242, 2, 116.7814, 1933.9747, 18.9748) ;
    174
    175 AddStaticPickup(1242, 2, 223.4923, 1869.3615, 13.1406) ;
    176
    177 AddStaticPickup(1242, 2, 315.6819,973.5135,1961.5435) ;

  • Nicht ausprobiert...Habe keine Lust Kordinaten zu sammeln ;P

    forward Area51Check();


    public OnGameModeInit()
    {
    SetTimer("Area51Check",1000*1,1); //jede Sekunde wird gecheckt.....
    return 1;
    }


    stock IsPlayerInArea(playerid, Float:minx, Float:maxx, Float:miny, Float:maxy) //By Alex "Y_Less" Cole
    {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid, x, y, z);
    if (x > minx && x < maxx && y > miny && y < maxy) return 1;
    return 0;
    }




    public Area51Check() {
    for(new i;i<MAX_PLAYERS;i++) {
    if(IsPlayerInArea(i,minX,maxX,minY,maxY)){ //minX,maxX,minY,maxY sind die Cordinaten.Musst selber eintragen ;)
    //Ist in Area51 also nix machen,oder?
    }
    else { //nicht in area51
    new Float:h;
    GetPlayerHealth(i,h);
    SetPlayerHealth(i,h-15.0);//zieht 15hp ab
    GameTextForPlayer(i,"~r~ Get Back into ~y~ Area51",3000,4);
    }
    }
    return 1;
    }


    Bei deinem Pickup problem weiss ich nicht.Eigentlich sollte es respawnen.