[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Jo, im Log steht :


    [18:39:15] Leader: 10 || Member: 0


    Und Fraktion 10 = Taxi


    Und bei der Taxi Fraktion, bekomme ich 1x " Du hast keinen Zugriff auf das Fahrzeug"
    Bei den anderen Fraktionen, bekomme ich die Message 2x
    Bei News Reporter bekomme ich die auch nur 1x


    Ich meine wenn ich Taxi Leader bin, und in ein Taxi auto steigen will, steht die Message nur 1x da.
    Wen ich GS Leader bin z.b dan steht die 2x
    Beim News Reporter, steht die Message auch 1x.

    2 Mal editiert, zuletzt von xivo ()

  • Ui dann weis ich auch grad nicht , vllt weiß ja jemand anders weiter



    -----------


    Hab jetzt aber selber mal ne Frage.
    Man macht ja um Recourcen zu sparen MaxPlayers immer nur so hoch wie Slots verfügbar sind

    #undef MAX_PLAYERS
    #define MAX_PLAYERS 100


    aber kann man nicht theoretisch auch sowas machen ?


    new maxplayers = GetMaxPlayers();
    #undef MAX_PLAYERS
    #define MAX_PLAYERS maxplayers


    Weil wenn ich das so in nen Befehl mache, sagt er mir maxplayers seie nicht definiert und einmal es würde nicht benutzt.


    Und wäre es Recorcensparender die Slotanzahl als MAxPlayers festzulegen oder jede Sekunde zu schaun wie viele Spieler online sind (getMaxPlayers) ?

  • #undef MAX_PLAYERS
    #define MAX_PLAYERS maxplayers


    wird vom Compiler Erstellt und dann wieder Verworfen also kommt es beim Server Niemals an! deshalb kann es nicht funktionieren rein aus der Logik her nicht.


    xD du kannst aber mit deiner Variable die Schleifen laufen lassen!

    I'm Sorry For Your Mistake!
    but it's yours

  • Ich schätze jede Minute zu überprüfen wie viele Spieler online sind.


    So:


    Ich habe ein Feld:


    1 | 2 | 3
    ------------
    4 | 5 | 6
    ------------
    7 | 8 | 9


    Wie definiere ich nun in meinen Script die bereiche? Also wenn der spieler jetzt in 1 ist?

    LG cinema


  • Ne wird nicht verworfen, zumindest laut meiner Logik her nicht


    new maxplayers = GetMaxPlayers(); // variable wird erstellt
    #undef MAX_PLAYERS // define wird gelöscht , variable aber nicht
    #define MAX_PLAYERS maxplayers // define wird mit vorhandener variable erstellt


    Die Frage ist nun ob man ein define mit einer Variable definieren kann


    @dit |@ cinema


    Du kanst für jede Reihe ein Array machen new
    reihe1[2] // 2 da 3 felder
    reihe2[2] // 2 da 3 felder
    reihe3[2] // 2 da 3 felder
    /*
    reihe1[0] | reihe1[1] | reihe1[2] --> 1 | 2 | 3
    reihe2[0] | reihe2[1] | reihe2[2] --> 4 | 5 | 6
    reihe3[0] | reihe3[1] | reihe3[2] --> 7 | 8 | 9
    */


    Denke du willst Tic Tac Toe machen ^^. Also legst du einfach die playerid als inhalt der Array-Zelle fest


    reihe1[0] = playerid;


    @dit: mit einem array gehts natürlich auch


    new reihe[2/*reihe*/][2/*spalte*/];

  • Ich meine eine Gangzone. ^^


    Halt ja, es ist Tic Tac Toe, doch:


    Wie mache ich es mit einer Gangzone, damit ich überprüfe: ist er nun in dem Feld, dann mach das.


    Wie lautet die Abfrage? Zwischen was müssen die bereiche liegen? Welche Coordinaten brauche ich?


    EDIT://


    Also ich habe mir nun folgendes angeschaut: http://wiki.sa-mp.com/wiki/GangZoneCreate


    Damit erstelle ich die Zone (muss ja nicht angezeigt werden), wie mach ich es jetzt die Abfrage? Ob er in 1, 2, 3 oder so ist?

    LG cinema


    Einmal editiert, zuletzt von cinema ()

  • Mit nem Radius kann man da jetzt nicht arbeiten da eine Zone ja ein Rechteck ist.


    Man bräuchte eine Funktion wie IsPlayerInZone.
    Leider gibt es diese nur mit einem, mir nicht bekannten, Include.
    Vllt kannst du damit ja was anfangen

    Klick

    Ganz unten ist was das heißt mic_zone


    wo man es runterladen kann weiß ich leider auch nicht

  • Und woher bekomme ich das nun? Und welche Coordinaten muss ich nun wo angeben?


    Float:x1 - the x cordinates of the first place.
    Float:y1 - the y cordinates of the first place.
    Float:x2 - the x cordinates of the second place.
    Float:y2 - the y cordinates of the second place.
    Float:x3 - the x cordinates of the third place.
    Float:y3 - the y cordinates of the third place.
    Float:x4 - the x cordinates of the fourth place.
    Float:y4 - the y cordinates of the fourth place.


    Was ist der 1ste Platz? Sind damit die Eckpunkte gemeint?

    LG cinema


  • Hmm... Okay, kann mir trotzdem einer helfen?



    Wie würde das mit einer Gangzone funktionieren? Brauch ich die Coordinaten von Rechts Oben und Links unten?

    LG cinema


    2 Mal editiert, zuletzt von cinema ()

  • Was liegt hier am falschen punkt ? :D


    public DeleteTextdraw(playerid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    TextDrawDestroy(playerclick); // <-- STELLE GEMEINT
    }
    return 1;
    }


    C:\DOKUME~1\Daniel\Desktop\RealLife.pwn(38184) : error 035: argument type mismatch (argument 1)

  • jap hab ich ;)


    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    playerclick[playerid] = TextDrawCreate(95.000000,28.000000," ");
    TextDrawUseBox(playerclick[playerid],1);
    TextDrawBoxColor(playerclick[playerid],0x00000033);
    TextDrawTextSize(playerclick[playerid],602.000000,0.000000);
    TextDrawAlignment(playerclick[playerid],0);
    TextDrawBackgroundColor(playerclick[playerid],0x000000ff);
    TextDrawFont(playerclick[playerid],1);
    TextDrawLetterSize(playerclick[playerid],0.299999,1.400000);
    TextDrawColor(playerclick[playerid],0xffffffff);
    TextDrawSetOutline(playerclick[playerid],1);
    TextDrawSetProportional(playerclick[playerid],1);
    TextDrawSetShadow(playerclick[playerid],1);
    }


    new Text:playerclick[MAX_PLAYERS];


  • Wie würde das mit einer Gangzone funktionieren? Brauch ich die Coordinaten von Rechts Oben und Links unten?

    LG cinema


  • public DeleteTextdraw(playerid)
    {
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    TextDrawDestroy(playerclick[i]);// <-- STELLE GEMEINT
    }
    return 1;
    }


    Würd ich jetzt mal sagen.


    @dir ||@cinema


    Ja links unten und rechts oben, wobei links unten IMMEr kleiner als rechts oben sein soll.
    Das Problem ist nur es gibt meines wissens nach kein nativ um zu ÜBerprüfen ob ein Spieler in einer GangZone ist
    Löscht den textdraw von jedem Spieler

  • Naja, wie würde die Abfrage ausschauen, ob der Spieler sich einfach hier befindet:


    -------------------
    | X | | |
    -------------------
    | | | |
    -------------------
    | | | |
    -------------------

    LG cinema


  • Du könntest über eine Variable cmd sperren.

    new isclosed;

    Je nachdem ob an oder aus sein soll


    isclosed = 1;
    //oder
    isclosed = 0;


    Jetzt in den einzelnen Commands


    if(isclosed == 0) // wenn also die commands ativiert sind


    Bei Commands die nicht vom Sperren betroffen sein soll, die abfrage einfach weglassen

  • @ Hagi


    Danke hat wunderbar geklappt ;)


    Aber ich habe aus dem DeleteTextdraw


    HideForPlayer, aber der Hided das nicht wieso ?


    TextDrawHideForPlayer(playerclick[i]);


    C:\DOKUME~1\Daniel\Desktop\RealLife.pwn(38184) : warning 213: tag mismatch
    C:\DOKUME~1\Daniel\Desktop\RealLife.pwn(38184) : warning 202: number of arguments does not match definition

    Einmal editiert, zuletzt von xivo ()