[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
  • Mit new KTime[128];
    definierst du einen String, wenn es eine Zahl darstellen soll musst du [128] entfernen


    new KTime; also so


    KTime macht aber auch keinen Sinn da es durchgehend 0 ist!

    Jetzt hab ich folgende Fehler


    15479) : error 028: invalid subscript (not an array or too many subscripts): "KTime"
    (15479) : warning 215: expression has no effect
    (15479) : error 001: expected token: ";", but found "]"
    (15479) : error 029: invalid expression, assumed zero
    (15479) : fatal error 107: too many error messages on one line



    Fehlerzeile:
    WantedLevel[pid] = KTime[playerid];

  • Und wie kann ich es umschreiben das es sinn macht ?



  • Danke schonmal, das mit der Zeit klappt ,


    nur der Timer nicht, werde direkt nach nichtmal einer sekunde aus dem Gefängnis entlassen



    SetTimerEx("UnPrisons", PlayerInfo[pid][pJailTime], false, "i", pid);


    etTimerEx("UnPrisons", PlayerInfo[pid][pJailTime], 0, "i", pid);

  • Das kannst du mit format machen:
    format(string, sizeof(string), "Du wurdest für %d Sekunden eingesperrt.", WantedLevel[pID] * 60);
    SendClientMessage(pID, COLOR_RED, string);


    Edit:
    Müsste doch auch eigentlich
    WantedLevel[pID]
    sein (habe es geändert), wenn ich den Ablauf richtig verstanden habe. Es bezieht sich ja auf das WantedLevel des Spielers, der eingesperrt wird. Also ändere das auch beim Timer.


  • Danke, ja hab ich schon vorher editiert


    http://forum.sa-mp.com/showthread.php?t=467261



    So ne kleine Anzeige oben Rechts wo Knastzeit: x Sekunden steht und dann immer runterzählt bis 0.


    Wie genau kann ich das dann noch machen?

  • Wie genau kann ich das dann noch machen?


    Du erstellst ein PlayerTextDraw für den Spieler bei OnPlayerConnect, und wenn er eingesperrt wird, zeigst du es ihm an.
    Mit PlayerTextDrawSetString setzt du dann die verbleibende Zeit in das Textdraw.


    Zusätzlich erstellst du einen Timer bei OnGameModeInit, der jede Sekunde läuft (1000ms). Dort machst du eine Schleife durch alle Spieler, und ziehst eine Sekunde von der Jail Zeit des Spielers ab, wenn er eingesperrt ist. Dann zeigst du das Textdraw wieder aktualisiert über PlayerTextDrawSetString an.


    Dadurch kannst du dann auch den Timer weg lassen, den du beim Einsperren startest. Das Unjail Event kann exakt dann starten, wenn die Jail Zeit 0 ist. Das *1000 kannst du dann auch wieder weg machen.


  • ocmd@2:f,funk(playerid,params[])
    {
    #pragma unused params
    if(Eingeloggt[playerid] == 0)return SendClientMessage(playerid, GRAU, "Du bist nicht eingeloggt!");
    if(SpielerDaten[playerid][pTot] == 1)return SendClientMessage(playerid,GRAU,"Du bist verletzt.");
    if(SpielerDaten[playerid][pCuffed] == 1)return SendClientMessage(playerid,GRAU,"Du bist gefesselt.");
    new text[96], string[128], string2[128], fv = IsAFraktionsVeh(playerid);
    if(sscanf(params, "s[96]", text))return SendClientMessage(playerid, GRAU, "Benutze: /funk [Nachricht]");
    if(SpielerDaten[playerid][pFunkgeraet] == 0 || fv != -1 && fVehicle[fv][vehFraktion] == SpielerDaten[playerid][pFraktion])return SendClientMessage(playerid, GRAU, "Du hast kein Funkgerät mit oder sitzt in keinem Fraktionsfahrzeug!");
    if(!(SpielerDaten[playerid][pFraktion] == 1 || SpielerDaten[playerid][pFraktion] == 2 || SpielerDaten[playerid][pFraktion] == 3))return SendClientMessage(playerid, GRAU, "Diesen Befehl kannst du nicht nutzen!");
    //if(!(SpielerDaten[playerid][pFraktion] == 1 || SpielerDaten[playerid][pFraktion] == 2))return SendClientMessage(playerid, GRAU, "Diesen Befehl kannst du nicht nutzen!");
    format(string ,sizeof(string), "[Funk] %s [%s]: %s", GetRoleplayName(playerid), GetRankName(SpielerDaten[playerid][pFraktion], SpielerDaten[playerid][pRank]), text);
    format(string2, sizeof(string2), "[Walki Talki] %s [%s]: %s", GetRoleplayName(playerid), GetRankName(SpielerDaten[playerid][pFraktion], SpielerDaten[playerid][pRank]), text);
    for(new i=0;i<GetMaxPlayers();i++)
    {
    if(Eingeloggt[i] == 1)
    {
    if(SpielerDaten[i][pFraktion] == 1 || SpielerDaten[i][pFraktion] == 2)
    {
    SendClientMessage(i, HELLBLAU, string);
    }
    else if(SpielerDaten[i][pFraktion] == 3)
    {
    SendClientMessage(i, HELLBLAU, string2);
    }
    }
    }
    return 1;
    }


    Hab es jetzt so geschrieben.
    Wenn man aber in der jeweiligen Fraktion ist, kann nur die ID: 0 schreiben. Wenn man bspw. ID 1 ist, steht dort, dass man ein Funkgerät braucht.

  • Hi!


    Stellvertretend für @_Max



    stock IsAFraktionsVeh(vehicleid)
    {
    for(new fV;fV<MAX_FVEHS;fV++)
    {
    if(vehicleid == fVehicle[fV][vehID])return fV;
    }
    return INVALID_VEHICLE_ID;
    }



    stock IsAPrivateVeh(playerid, vehicleid)
    {
    for(new slot=0;slot<MAX_PLAYER_VEHICLES;slot++)
    {
    if(vehicleid == PrivateVehicle[playerid][slot][vehID])
    {
    return 1;
    }
    }
    return 0;
    }


    MfG

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