[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
  • Also, wenn der Spieler ins Wasser springt, ändert sich ja seine Fortbewegung. Also von Gehen zu Schwimmen. Und wie lautet die ID von Schwimmen, und wo überprüfe ich das? Bei OnPlayerUpdate ?

    LG cinema


  • Ich hab aber auf einen Server schonmal sowas gesehen:


    Es war ein Derby, und wer von der Strecke (die war in der Luft) runtergefallen ist, und das Wasser berührt hat, wurde er ausgeschieden.


    Wie kann ich sonst überprüfen, ob der Player noch am Schiff ist, und wenn er vom SChiff runterfällt wieder Spawnt?

    LG cinema


  • Okay, wie mache ich diese Höhenüberprüfung? (Pls Link zu einen Tut)


    Und noch eine Frage:


    Ich habe erfolgreich einen Textdraw erstellt, also wird mir auch richtig angezeigt.


    Nun möchte ich, dass der Textdraw im Hintergrund schwarz ist. Zurzeit ist er so grau. Was muss ich ändern? Und wie mach ich das, dass bei "Team A" dahinter eine Variable ausgegeben wird? Also zum Beispiel die Variable: Team_a?



    ForumsAdresse = TextDrawCreate(3,435,"Team A: ");
    TextDrawLetterSize(ForumsAdresse,0.5,1.3);
    TextDrawColor(ForumsAdresse,COLOR_YELLOW);
    TextDrawBackgroundColor(ForumsAdresse,COLOR_RED);
    TextDrawSetShadow(ForumsAdresse,1);
    TextDrawUseBox(ForumsAdresse,1);

    LG cinema


  • Die Höhe wird von der Z Achse überprüft ,


    IsPlayer3DZone(playerid,Float:minx,Float:miny,Float:minz,Float:maxx,Float:maxy,Float:maxz)
    {
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    if(pos[0] > minx && pos[0] < maxx && pos[1] > miny && pos[2] < maxy && pos[3] > minz && pos[3] < maxz)return true;
    return false;
    }


    Sollte so stimmen der Code, sollte nun eine Zone + Richtige Höhe Checken

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Hmm... Iergendwie verstehe ich den Code nicht....


    Also was gehört wo hin? Und wie mache ich es, wenn er unter dieser Höhenkontrolle ist, dass er wieder am Spawn ist? Also SetPlayerPos, blablabla...


    Und wo soll ich /save machen? Denn dann habe ich nur einen Punkt, und nicht ein Rechteck... Oder ist die Höhe gleich, egal wie ich bei X und Y bin?

    LG cinema


    Einmal editiert, zuletzt von cinema ()

  • Zone


    |max
    Y ^
    |^
    |^
    |min>>>>>>>>>> max
    |
    ------------------X


    Der Spieler muss über dem Minimalen Y Wert Sein zudem aber unter dem Maximalen genau das gleiche bei x & z


    Das ganze kann man sich hier wie ein Rechteck vorstellen mit der Z Überprüfung ein Quadrat

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • Also so:


    IsPlayer3DZone(playerid,92.0053,-2219.0132,10.1945,92.0053,-2219.0132,72.3358)
    {
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    if(pos[0] > 92.0053 && pos[0] < 92.0053 && pos[1] > -2219.0132 && pos[2] < -2219.0132 && pos[3] > 10.1945 && pos[3] < 72.3358)return true;
    return false;
    }


    Wo gehört nun der Teil hin? Unter onPlayerUpdate? Und wo schreibe ich hin, dass wenn er unter dem Min oder über den Max ist, dass er wieder am Spawn ist? (SetPlayerPos)

    LG cinema


    Einmal editiert, zuletzt von cinema ()

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Okay. Bis jetzt sieht es so aus:



    IsPlayer3DZone(playerid,92.0053,-2219.0132,10.1945,92.0053,-2219.0132,72.3358)
    {
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    if(pos[0] > 92.0053 && pos[0] < 92.0053 && pos[1] > -2219.0132 && pos[2] < -2219.0132 && pos[3] > 10.1945 && pos[3] < 72.3358)return true;
    return false;
    }


    Wo gehört nun hin, falls der Player unterhalb Z ist (also im Wasser) dass er weggeportet wird (SetPlayerPos) ?


    Und wie ist das mit den Textdraw?



    Hat jemand eine Lösung?

    LG cinema


    Einmal editiert, zuletzt von cinema ()

  • Was soll ich gemacht haben?


    Also:



    public OnPlayerUpdate(playerid)
    {
    IsPlayer3DZone(playerid,92.0053,-2219.0132,10.1945,92.0053,-2219.0132,72.3358) // Hier ein Error
    {
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    if(pos[0] > 92.0053 && pos[0] < 92.0053 && pos[1] > -2219.0132 && pos[2] < -2219.0132 && pos[3] > 10.1945 && pos[3] < 72.3358)return true; // Der nächste Error
    return false;
    }
    return 1; // Der Warning
    }


    So schaut es jetzt aus, und wie mach ich es, wenn der Spieler unterhalb / oberhalb Z ist, dass er weggeportet wird (SetPlayerPos) ? Also wohin kommt das SetPlayerPos? Und was ist mit dem TextDraw?


    PS.: Bekomme da aber 3 Errors:


    Code
    C:\Users\Patrick\Desktop\Samp server\gamemodes\gungame.pwn(610) : error 017: undefined symbol "IsPlayer3DZone"
    C:\Users\Patrick\Desktop\Samp server\gamemodes\gungame.pwn(614) : error 032: array index out of bounds (variable "pos")
    C:\Users\Patrick\Desktop\Samp server\gamemodes\gungame.pwn(617) : warning 225: unreachable code
    Pawn compiler 3.2.3664	 	 	Copyright (c) 1997-2006, ITB CompuPhase
    
    
    
    
    2 Errors.

    LG cinema


  • Nein LoL
    IsPlayer3DZone lässt du einzeln irgendwo in deinem Script stehen.
    Nur nicht in einem Anderen Code.
    Dann kannst du das z.b. benutzen.
    If(IsPlayerConnected(playerid))
    {
    if(IsPlayer3DZone(playerid,X,Y,Z))
    SendClientMessage(playerid,FARBE,"Du bist in der richtigen Zone");
    else
    SendClientMessage(playerid,FARBE,"Du bist nicht in der richtigen Zone");
    }

  • Das ist ein Funktion ...
    IsPlayer3DZone(playerid,92.0053,-2219.0132,10.1945,92.0053,-2219.0132,72.3358)
    {
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    if(pos[0] > 92.0053 && pos[0] < 92.0053 && pos[1] > -2219.0132 && pos[2] < -2219.0132 && pos[2] > 10.1945 && pos[2] < 72.3358)return true;
    return false;
    }


    Sie muss wie eine Öffentliche Klasse ,,public´´ irgendwo im Skript stehen & wird verwendet wie ein Skript Kommando

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • public OnPlayerUpdate(playerid)
    {
    GameStreamer_OnPlayerUpdate();
    /*IsPlayer3DZone(playerid,92.0053,-2219.0132,10.1945,92.0053,-2219.0132,72.3358)
    {*/
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    if(pos[0] > 92.0053 && pos[0] < 92.0053 && pos[1] > -2219.0132 && pos[2] < -2219.0132 && pos[3] > 10.1945 && pos[3] < 72.3358)
    {
    SendClientMessage(playerid,COLOR_RED,"Du bist in der richtigen Zone");
    }
    else
    {
    SetPlayerPos(playerid, 91.4494,-2236.6765,13.0705);
    }
    return true;
    //return false;
    }
    return 1;
    }


    So jetzt? Also es soll überprüft werden, ob der Player unterhalb der Minz ist. (10.1945), wenn Ja, soll er weggeportet werden (SetPlayerPos)

    LG cinema


  • nur unterhalb? dann reicht es auch so:
    public OnPlayerUpdate(playerid)
    {
    GameStreamer_OnPlayerUpdate();
    new Float:pos[3];
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    if(pos[3]<10.1945)
    {
    SetPlayerPos(playerid, 91.4494,-2236.6765,13.0705);
    }
    return 1;
    }

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen