[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
  • hi,
    ein paar Fragen:


    1. Wie lautet der Befehl, dass ein Spieler nach einer bestimmten Zeit oder Tat nicht mehr spawnen kann?


    2. Wie kann ich meinen Timer Killn?
    Bei KillTimer(timerid); kommt ein Error:
    error 076: syntax error in the expression, or invalid function call


    3. Wie kann ich eine Runde beenden? z.B ein Spieler geht in einen Checkpoint und die Runde endet.


    4. Wie kann ich Checkpoints untereinander unterscheiden? Z.B. im ersten CP bekommt man 2000$, dann erscheint der nächste CP und wenn man den betritt, bekommt man 5000$. Jetzt passiert bei allen CP's die gleiche Aktion, dass soll aber nicht so sein.


    Wäre super wenn jemand vllt. nur eine Antwort auf eine Frage hat und diese posten könnte, man muss schließlich nicht alles wissen. :D


    mfg.


    //edit Frage geändert.

  • Gruß
    keyboy

    www.g4e-clan.de


    Kein (unbez.) Scripting-Support per PN | Dafür ist das Forum da.

  • hi, danke schon mal für die Antwort.


    1. z.B wurde kurz zuvor eine Minugun an alle Player im Server verteilt und alle anderen Waffen wurden resettet, quasi eine Sudden Death Mode.
    Ich möchte, dass der Spieler, der nach der Sudden Death Mode, also der Minigunvergabe an alle Player, nicht mehr spawnen kann und warten muss, bis die Runde zu ende ist. So das er nach seinem Tod vllt. den einzelnen Spieler, die noch im Spiel sind zuschauen kann. (Ist wahrscheinlich hamma kompliziert. :D zum scripten)



    SetTimerEx("DeathMatchMode",900000,1,"d",playerid);


    public DeathMatchMode(playerid)
    {
    ResetPlayerWeapons(playerid);


    new r = random(sizeof ValidWeaponsDeathmatch);
    GivePlayerWeapon(playerid, ValidWeaponsDeathmatch[r][0], ValidWeaponsDeathmatch[r][1]);
    SendClientMessage(playerid,0x660000AA, "Sudden Death Mode!! Kill or be killed!!!!");
    new name[ 24 ], string[ 64 ];
    format( string, sizeof(string), "~l~!!!! ~r~Sudden Death Mode ~l~!!!!", name );
    GameTextForAll( string, 8000, 5 );


    return 1;
    }

    2. ja der Timer ist definiert:

    forward Bombspawn(playerid);


    public OnPlayerEnterCheckpoint(playerid)
    {
    if (IsPlayerInCheckpoint(playerid))
    {

    SetTimer("Bombspawn",15000,1);//ich muss 15 sec im CP warten, bis eine Bombe gespawnt wird, dannach läuft der Timer jedoch weiter auch wenn ich nicht im CP bin , deshalb muss ein kill her.

    }


    public Bombspawn(playerid)
    {
    bomb = CreatePickup(1252, 3, 2555.2290,-1296.4255,1031.4219);


    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,0x7CFC00AA, "Bomb has been created!! Start the countdown fast!! ( +2000$ ).");
    GivePlayerMoney(playerid,2000);


    new name[ 24 ], string[ 64 ];
    GetPlayerName( playerid, name, 24 );
    format( string, sizeof(string), "~y~%s has created the Bomb!", name );
    GameTextForAll( string, 5000, 5 );


    return 1;
    }


    Und der Timer soll abgebrochen werden, wenn man den CP während dem Countdown verlässt.
    Eine Countdownanzeige wäre auch super( 15,14,13 usw)



    3. Also vorstellen tue ich mir das so: Alles Player werden gefreezed und fangen an eine Animation auszuführen, dabei noch eine GTA sound id einfügen.
    Dannach erscheint ein Fenster mit der Rangliste, 1.Playername, 15 kills 10deaths 2.Playername, 10kills 10deaths usw.
    Dannach würde dann die Map wechseln, zu einer bei der es andere Spawnpoints und andere created Objekte gibt.
    Ich habe z.b keine vorstellung, wie ich es machen soll, damit die Map nach der Runde endet. Z.B Mapwechsel nach einer Rundenzeit von 15min.


    4. Wäre SUPER, wenn du mir das mit den Checkpoint noch genauer erklären könntests.



    public OnPlayerSpawn(playerid)
    {
    SetPlayerCheckpoint(playerid, 681.3374,-463.3429,22.5705, 2.0);



    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    if (IsPlayerInCheckpoint(playerid))
    {

    SetTimer("Bombspawn",15000,false);

    }


    return 1;
    }



    public Bombspawn(playerid)
    {
    bomb = CreatePickup(1252, 3, 2555.2290,-1296.4255,1031.4219);


    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid,0x7CFC00AA, "Bomb has been created!! Start the countdown fast!! ( +2000$ ).");
    GivePlayerMoney(playerid,2000);
    //SetPlayerCheckpoint(playerid, 2555.2290,-1296.4255,1031.4219, 2.0);


    new name[ 24 ], string[ 64 ];
    GetPlayerName( playerid, name, 24 );
    format( string, sizeof(string), "~y~%s has created the Bomb!", name );
    GameTextForAll( string, 5000, 5 );


    return 1;
    }



    Nachdem ich mit dem CP im obigem Code die Bombe erstellt habe, kommt woanders ein anderer CP zum Vorschein.
    Wenn man den dann betritt, möchte ich nicht, dass diese Aktion nochmal ausgeführt wird.



    Wäre superfroh, wenn du mir wenigstens 1 Frage beantworten könntest oder wenigsten Codeschnipseö posten könntest.


    //edit ergänzung

  • Hi,
    wäre super, wenn mir jemand sagen könnte, wie ich diesen Error beheben kann.


    error 029: invalid expression, assumed zero



    public OnPlayerLeaveCheckpoint(playerid)
    {


    if (gettime() - 15 >= time[playerid])
    bomb = CreatePickup(1252, 3, 2555.2290,-1296.4255,1031.4219);
    SendClientMessage(playerid, 0x7CFC00AA, "Bomb has been created!! Start the countdown fast!! ( +2000$ )");
    DisablePlayerCheckpoint(playerid);
    GivePlayerMoney(playerid,2000);


    new name[ 24 ], string[ 64 ];
    GetPlayerName( playerid, name, 24 );
    format( string, sizeof(string), "~y~%s has created the Bomb!", name );
    GameTextForAll( string, 5000, 5 );

    else SendClientMessage(playerid, 0x7CFC00AA, "You stayed in the checkpoint for less than 15 seconds!"); //Error bezieht sich auf diese Zeile
    GetPlayerName( playerid, name, 24 );
    format( string, sizeof(string), "~y~%s has attempted to create a bomb!!", name );
    GameTextForAll( string, 5000, 5 );


    return 1;
    }

  • public OnPlayerLeaveCheckpoint(playerid)
    {
    if (gettime() - 15 >= time[playerid])
    {
    bomb = CreatePickup(1252, 3, 2555.2290,-1296.4255,1031.4219);
    SendClientMessage(playerid, 0x7CFC00AA, "Bomb has been created!! Start the countdown fast!! ( +2000$ )");
    DisablePlayerCheckpoint(playerid);
    GivePlayerMoney(playerid,2000);
    new name[ 24 ], string[ 64 ];
    GetPlayerName( playerid, name, 24 );
    format( string, sizeof(string), "~y~%s has created the Bomb!", name );
    GameTextForAll( string, 5000, 5 );
    }
    else
    {
    SendClientMessage(playerid, 0x7CFC00AA, "You stayed in the checkpoint for less than 15 seconds!"); //Error bezieht sich auf diese Zeile
    GetPlayerName( playerid, name, 24 );
    format( string, sizeof(string), "~y~%s has attempted to create a bomb!!", name );
    GameTextForAll( string, 5000, 5 );
    }
    return 1;
    }

    The fact is, I am right. And if you think I'm wrong, you are wrong.

  • hi,


    kann mir jemand sagen, wie ich alle Spieler im Server auf einmal freezen kann?
    z.B wenn man in einen Checkpoint geht.
    Ich weis, ist sicher was mit toggleplayercontrol... ,aber ich weis nicht wie ich alle auf einmal erwischen kann.


    mfg.

  • also, wenn die letzte Bombe in meinem game gezündet wurde, sollen alle spieler gefreezed werden und eine Animation abgespilet werden.
    Bis die Map wechselt.
    Alles andere habe ich schon, aber ich weis nicht, wie ich alle auf einmal freezen kann

  • hi,
    vielen dank mal wieder :)
    Wie kann ich eigentlich eine neue Runde automatisch starten lassen, nachdem die erste fertiggespielt ist?
    Also wie kann ich es einstellen, das eine neue Runde beginnt, nach einer bestimmten Aktion oder Abkauf einer bestimmten Zeit?


    mfg.


    //edit Frage geändert.

  • Ok Danke werde dann mal eine Lesestunde einlegen.
    Aber noch eine kleine Frage:
    Welche Befehle gibt es bei "dini"?
    Ich finde keine passende Liste....


    Ich speichere z.B. einen Namen in eine Datei wie kann ich diesen laden?
    Kenne alle mit Int usw. aber weis nicht welcher Befehl für das Abrufen einer Zeichenfolge ist also eines Strings?


    Danke


    mfg.
    Opa