[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
  • Doch habe ich auch vorhin so eingefügt. Es klappt trotzdem nicht :/



    if(newkeys & KEY_CTRL_BACK)
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0, X, -Y, Z)) OnPlayerCommandText(playerid,"/mv");
    else if(IsPlayerInRangeOfPoint(playerid,10.0, X, -Y, Z)) OnPlayerCommandText(playerid,"/mv2");
    }
    else OnPlayerCommandText(playerid, "/enter");
    }

  • Dann printe dir mal deine Position und die, die du eingegeben hast und vergleiche diese.


    Bzw checke ob OnPlayerCommandText aufgerufen wird


    Irgendwo muss ja der Fehler sein

    Das meinte ich...

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • IsPlayerConnected ist da komplett überflüssig, da der Spieler ja online sein muss..um zu hupen...wird für offline Spieler eher schwierig haha xD

    Stimmt jetzt nicht so ganz da man theoretisch Pakete an den Server senden kann mit denen man hupt (auch wenn das seeeeeeeeeeeeeeeeeehr unwahrscheinlich ist)

  • Hmm ka was Schuld ist aber es klappt nicht Pfffff



    if(newkeys == KEY_CTRL_BACK)
    {
    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
    if(IsPlayerInRangeOfPoint(playerid,10.0, 1589.60828, -1638.15710, 14.57770)) OnPlayerCommandText(playerid,"/mv");
    else if(IsPlayerInRangeOfPoint(playerid,10.0, 1544.68750, -1630.83167, 13.11210)) OnPlayerCommandText(playerid,"/mv2");
    }
    else OnPlayerCommandText(playerid, "/enter");
    }

  • Stimmt jetzt nicht so ganz da man theoretisch Pakete an den Server senden kann mit denen man hupt

    ...klar...man kann so einiges. Kann auch eine Bot Armada draufpacken und alle hupen lassen, damit die Tore aufgehen, Mensch jetzt hab ichs dem Server aber gezeigt :D
    Zumal man auch durch das package sagen könnte, dass man online ist...


    In der 0.1 Version gab es auch mal einen Bug, dass gekickte Spieler immer noch Commands eingeben konnten haha :D


    Aber sind wir mal realistisch und bleiben bei normalem Code Flow.



    Hmm ka was Schuld ist aber es klappt nicht Pfffff

    Ja, wir haben es verstanden. Es geht darum, dass du diese print Statements setzt und es herausfindest.

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Habe ein kleines Problem mit meinem alten Script.


    das Enter Exit System funktioniert nur bei einem enum und bräuchte das für mehrere Systeme.


    Hier sind meine Codes:
    ocmd:enter(playerid, params[])
    {
    for(new x=0; x<sizeof(fmInfo); x++)
    {
    if(!fmInfo[x][fff_id])continue;
    if(fmInfo[x][fhi_x]==0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,fmInfo[x][fhx],fmInfo[x][fhy],fmInfo[x][fhz]))continue;
    SetPlayerPos(playerid,fmInfo[x][fhi_x],fmInfo[x][fhi_y],fmInfo[x][fhi_z]);
    SetPlayerInterior(playerid,fmInfo[x][ff_Interior]);
    SetPlayerVirtualWorld(playerid,x);
    }
    for(new i=0; i<50; i++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 5.0, sbInfo[i][sbx], sbInfo[i][sby], sbInfo[i][sbz]))
    {
    SetPlayerInterior(playerid, sbInfo[i][sbint]);
    SetPlayerPos(playerid, sbInfo[i][isbx], sbInfo[i][isby], sbInfo[i][isbz]);
    SetPlayerVirtualWorld(playerid, i);
    return 1;
    }
    }
    for(new e=0; e<sizeof(hInfo); e++)
    {
    if(!hInfo[e][h_id])continue;
    if(hInfo[e][ih_x]==0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[e][h_x],hInfo[e][h_y],hInfo[e][h_z]))continue;
    SetPlayerPos(playerid,hInfo[e][ih_x],hInfo[e][ih_y],hInfo[e][ih_z]);
    SetPlayerInterior(playerid,hInfo[e][h_interior]);
    SetPlayerVirtualWorld(playerid,e);
    return 1;
    }
    for(new u=0; u<sizeof(bInfo); u++)
    {
    if(!bInfo[u][b_id])continue;
    if(bInfo[u][ibx]==0.0)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[u][bx],bInfo[u][by],bInfo[u][bz]))continue;
    SetPlayerPos(playerid,bInfo[u][ibx],bInfo[u][iby],bInfo[u][ibz]);
    SetPlayerInterior(playerid,bInfo[u][b_interior]);
    SetPlayerVirtualWorld(playerid,u);
    return 1;
    }
    return 0;
    }
    ocmd:exit(playerid, params[])
    {
    for(new x=0; x<sizeof(fmInfo); x++)
    {
    if(GetPlayerVirtualWorld(playerid)!=x)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,fmInfo[x][fhi_x],fmInfo[x][fhi_y],fmInfo[x][fhi_z]))continue;
    SetPlayerPos(playerid, fmInfo[x][fhx], fmInfo[x][fhy], fmInfo[x][fhz]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    }
    for(new i=0; i<50; i++)
    {
    if(GetPlayerInterior(playerid) == 0)continue;
    if(IsPlayerInRangeOfPoint(playerid, 5.0, sbInfo[i][isbx], sbInfo[i][isby], sbInfo[i][isbz]))
    {
    SetPlayerInterior(playerid, 0);
    SetPlayerPos(playerid, sbInfo[i][sbx], sbInfo[i][sby], sbInfo[i][sbz]);
    SetPlayerVirtualWorld(playerid, 0);
    return 1;
    }
    }
    for(new e=0; e<sizeof(hInfo); e++)
    {
    if(GetPlayerVirtualWorld(playerid)!=e)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,hInfo[e][ih_x],hInfo[e][ih_y],hInfo[e][ih_z]))continue;
    SetPlayerPos(playerid, hInfo[e][h_x], hInfo[e][h_y], hInfo[e][h_z]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    return 1;
    }
    for(new u=0; u<sizeof(bInfo); u++)
    {
    if(GetPlayerVirtualWorld(playerid)!=u)continue;
    if(!IsPlayerInRangeOfPoint(playerid,2,bInfo[u][ibx],bInfo[u][iby],bInfo[u][ibz]))continue;
    SetPlayerPos(playerid, bInfo[u][bx], bInfo[u][by], bInfo[u][bz]);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid, 5.0, 866.91089, 1857.31665, -30.40188))//Stadthallen Exit
    {
    SetPlayerPos(playerid, 1481.0325,-1772.2615,18.7958);
    SetPlayerInterior(playerid, 0);
    SetPlayerVirtualWorld(playerid, 0);
    return 1;
    }
    return 0;
    }


    Wenn ich an einem Haus stehe und /enter eingebe kriege ich die Meldung dass dieser Befehl nicht existiert. Doch bei den StaticBuildings(enum,new) funktioniert es.
    Hoffe ihr könnt mir weiter helfen.


    Liebe Grüße,
    Genadj_Andrenov

    ...Lerne C#, JS für RageMP...

  • Beitrag von Dr. Frauenarzt ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Beitrag übersehen ().
  • kriege ich die Meldung dass dieser Befehl nicht existiert

    Das liegt daran, dass am Ende return 0; steht.



    Probiers mal so :)


    PS: Du kannst in den Schleifen auch die Variablen alle gleich nennen (nur so als Tipp) ist n bisschen übersichtlicher :)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ahnung, warum mir das nicht ausgelesen wird?

    cache_get_value_name(i, "verwendungszweck", InstructionInfo[i][iVerwendungszweck]);
    cache_get_value_name(i, "time", InstructionInfo[i][iTime]);



    enum e_Instructions_System
    {
    iID,
    iMyNumber,
    iOtherNumber,
    iValue,
    iOldValue,
    iNewValue,
    iVerwendungszweck[64],
    iTime[64]
    }
    new InstructionInfo[MAX_INSTRUCTIONS][e_Instructions_System];


    Versuche es als String auszugeben, was ja richtig wäre.

  • Versuchs mal so:



    cache_get_value_name(i, "verwendungszweck", InstructionInfo[i][iVerwendungszweck], 64);
    cache_get_value_name(i, "time", InstructionInfo[i][iTime], 64);


    Du musst die maximale lände des strings angeben da es sonst Buggy ist hatte das problem auch mal.

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • Danke klappt, stehe aber gerade auf dem Schlauch.. xD
    Die Formatierung haut einfach 0 hin.

  • Ach mist, ganz vergessen. Sorry.
    format(DialogString, sizeof(DialogString),"Empfänger\tBetrag\tAlter Kontostand\tNeuer Kontostand\tVerwendungszweck\tUhrzeit\n%s\n"HTML_WHITE"%d\t"HTML_WHITE"$%d\t"HTML_RED"$%d\t"HTML_GREEN"$%d\t"HTML_WHITE"%s\t"HTML_WHITE"%s", DialogString, InstructionInfo[i][iOtherNumber], InstructionInfo[i][iValue], InstructionInfo[i][iOldValue], InstructionInfo[i][iNewValue], InstructionInfo[i][iVerwendungszweck], InstructionInfo[i][iTime]);

  • so wirds nicht gehen.


    @Alva.


    versuchs so:
    der Header des Dialogs muss ausserhalb der Schleife stehen:
    strcat(string, "Empfänger\tBetrag\tAlter Kontostand\tNeuer Kontostand\tVerwendungszweck\tUhrzeit\n");
    for().....{
    format"(%s\nHTML_WHITE"%d\t"HTML_WHITE"$%d\t"HTML_RED"$%d\t"HTML_GREEN"$%d\t"HTML_WHITE"%s\t"HTML_WHITE"%s",stirng1, , InstructionInfo[i][iOtherNumber], InstructionInfo[i][iValue], InstructionInfo[i][iOldValue], InstructionInfo[i][iNewValue], InstructionInfo[i][iVerwendungszweck], InstructionInfo[i][iTime);
    }
    strcat(string, string1, sizeof(string1));

    Mit freundlichen Grüßen,


    Fabi.StaR :love::saint:


  • so wirds nicht gehen.
    @Alva.


    versuchs so:
    der Header des Dialogs muss ausserhalb der Schleife stehen:
    strcat(string, "Empfänger\tBetrag\tAlter Kontostand\tNeuer Kontostand\tVerwendungszweck\tUhrzeit\n");for().....{format"(%s\nHTML_WHITE"%d\t"HTML_WHITE"$%d\t"HTML_RED"$%d\t"HTML_GREEN"$%d\t"HTML_WHITE"%s\t"HTML_WHITE"%s",stirng1, , InstructionInfo[i][iOtherNumber], InstructionInfo[i][iValue], InstructionInfo[i][iOldValue], InstructionInfo[i][iNewValue], InstructionInfo[i][iVerwendungszweck], InstructionInfo[i][iTime);}strcat(string, string1, sizeof(string1));

    Nene, der war schon richtig, habe ihn soeben ausgetestet. Habe jedoch vergessen, nach dem Titel eine neue Zeile zu setzen.
    Und das mit der Schleife stimmt natürlich, ich wusste aber nicht, dass er eine Schleife hat, da in seinem geposteten Code keine vorhanden war.


    https://pastebin.com/AXP6t8uK

  • Hallo Leute


    Mein Arrest System ist so dass man einen Spieler nur durch die Aktion Gestellt oder nicht gestellt einsperren kann. Keine Spieler ID oder.
    Der Spieler muss nur in deiner Nähe sein. Ich würde es gerne so haben dass man die Spieler ID eingeben kann und die Sekunden.
    Kein gestellt oder nicht sondern einfach nur selber entscheiden kann wv Sekunden der sitzt. Natürlich muss der Spieler auch Wanteds besitzen.


    z.B /arrest [Spieler-ID] [Sekunden]


    Wie mache ich das??


    Ich freue mich auf eure Hilfe.



    if(strcmp(cmd, "/arrest", true) == 0)
    {
    if(IsACop(playerid))
    {
    if(OnDuty[playerid] != 1 && PlayerInfo[playerid][pMember] == 2)
    {
    SendClientMessage(playerid,rot,"Du bist nicht im Dienst!");
    return 1;
    }
    if(IsPlayerInRangeOfPoint(playerid,2.0,X,Y,Z) || IsPlayerInRangeOfPoint(playerid,3.0,X,Y,Z))
    {
    new suspect = GetClosestPlayer(playerid);
    if(IsACop(suspect))
    {
    SendClientMessage(playerid,rot,"Du kannst keine Polizisten einsperren");
    return 1;
    }
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid, COLOR_WHITE, "Benutze: /arrest [Aktion]");
    SendClientMessage(playerid, COLOR_WHITE, "Aktion: 1-Nicht Gestellt, 2-Gestellt");
    return 1;
    }
    if(strcmp(tmp, "1", true) == 0)
    {
    if(IsPlayerConnected(suspect))
    {
    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
    {
    moneys = WantedLevel[suspect] * 1000;
    new time = WantedLevel[suspect] * 120;
    GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(WantedLevel[suspect] < 1)
    {
    SendClientMessage(playerid,rot, "Der Spieler wird nicht gesucht!");
    return 1;
    }
    GivePlayerMoney(playerid, moneys/2);
    FraktionsKasse[0] += moneys/2;
    format(string, sizeof(string), "Du hast %s eingesperrt. Geldstrafe [%d$], Zeit %d Sekunden!", giveplayer,moneys, time);
    SendClientMessage(playerid, COLOR_GREEN, string);
    GivePlayerMoney(suspect, -moneys);
    format(string, sizeof(string), "Du wurdest von %s für %d Sekunden eingesperrt. [Geldstrafe %d$]", sendername, time, moneys);
    SendClientMessage(suspect,rot, string);
    UnFreezePlayer(suspect);
    ResetPlayerWeapons(suspect);
    if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
    {
    format(string, sizeof(string), "<< Officer %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
    OOCNews(0x1E4C99FF, string);
    }
    else if(PlayerInfo[playerid][pMember]==2)
    {
    format(string, sizeof(string), "<< Polizist %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
    OOCNews(0x1E4C99FF, string);
    }
    else if(PlayerInfo[playerid][pLeader]==2)
    {
    format(string, sizeof(string), "<< FBI-Leader %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
    OOCNews(0x1E4C99FF, string);
    }
    if(PolizeiZellen == 0)
    {
    SetPlayerInterior(suspect,0);
    SetPlayerPos(suspect,X,Y,Z);
    SetPlayerFacingAngle(suspect,270.000);
    SetPlayerVirtualWorld(suspect,0);
    PolizeiZellen += 1;
    }
    PlayerInfo[suspect][pJailTime] = time;
    PlayerInfo[suspect][pJailed] = 1;
    PlayerInfo[suspect][pArrested] += 1;
    SetPlayerInterior(suspect, 0);
    WantedPoints[suspect] = 0;
    WantedLevel[suspect] = 0;
    SetPlayerWantedLevel(suspect,0);
    }
    else
    {
    SendClientMessage(playerid,rot, "Es befindet sich kein Spieler in deiner Nähe");
    }
    }
    else
    {
    SendClientMessage(playerid,rot, "Es befindet sich kein Spieler in deiner Nähe!");
    }
    }
    else if(strcmp(tmp, "2", true) == 0)
    {
    if(IsPlayerConnected(suspect))
    {
    if(GetDistanceBetweenPlayers(playerid,suspect) < 5)
    {
    moneys = WantedLevel[suspect] * 500;
    new time = WantedLevel[suspect] * 60;
    GetPlayerName(suspect, giveplayer, sizeof(giveplayer));
    GetPlayerName(playerid, sendername, sizeof(sendername));
    if(WantedLevel[suspect] < 1)
    {
    SendClientMessage(playerid,rot, "Der Spieler ist nicht gesucht!");
    return 1;
    }
    GivePlayerMoney(playerid, moneys/2);
    FraktionsKasse[0] += moneys/2;
    format(string, sizeof(string), "Du hast %s eingesperrt für %d$ und %d Sekunden!", giveplayer,moneys, time);
    SendClientMessage(playerid, COLOR_GREEN, string);
    GivePlayerMoney(suspect, -moneys);
    format(string, sizeof(string), "Du wurdest von %s für %d Sekunden und für %d$ eingesperrt", sendername, time, moneys);
    SendClientMessage(playerid,rot, string);
    ResetPlayerWeapons(suspect);
    if(PlayerInfo[playerid][pMember]==1||PlayerInfo[playerid][pLeader]==1)
    {
    format(string, sizeof(string), "<< Officer %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
    OOCNews(0x1E4C99FF, string);
    }
    else if(PlayerInfo[playerid][pMember]==2||PlayerInfo[playerid][pLeader]==2)
    {
    format(string, sizeof(string), "<< FBI-Agent %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
    OOCNews(0x1E4C99FF, string);
    }
    else if(PlayerInfo[playerid][pMember]==3||PlayerInfo[playerid][pLeader]==3)
    {
    format(string, sizeof(string), "<< Soldat %s hat den Verdächtigen %s eingesperrt >>", sendername, giveplayer);
    OOCNews(0x1E4C99FF, string);
    }
    if(PolizeiZellen == 0)
    {
    SetPlayerInterior(suspect,0);
    SetPlayerPos(suspect,X,Y,Z);
    SetPlayerFacingAngle(suspect,270.000);
    SetPlayerVirtualWorld(suspect,0);
    PolizeiZellen += 1;
    }
    PlayerInfo[suspect][pJailTime] = time;
    PlayerInfo[suspect][pJailed] = 1;
    PlayerInfo[suspect][pArrested] += 1;
    SetPlayerInterior(suspect, 0);
    WantedPoints[suspect] = 0;
    WantedLevel[suspect] = 0;
    SetPlayerWantedLevel(suspect,0);
    }
    else
    {
    SendClientMessage(playerid,rot, "Es befindet sich kein Spieler in deiner Nähe!");
    }
    }
    else
    {
    SendClientMessage(playerid, rot, "Spieler ist nicht online!");
    }
    }
    }
    else
    {
    SendClientMessage(playerid,rot, "Du bist nicht an der Zelle!");
    }
    }
    else
    {
    SendClientMessage(playerid,rot, "Du bist kein Polizist");
    }
    return 1;
    }




    Mit freundlichen Grüßen

  • @HandsUper versuch es doch bitte einmal mit einem eigenen Code und nicht mit Copy & Paste in der Hoffnung das dir auf Breadfish jemand das Ding umschreibt...
    Das ist eigentlich ein ziemlich simpler Command. Nutze für dein Vorhaben Zcmd oder Ocmd und Sscanf. Dadurch hast du gleich die Möglichkeit einen Command zu erstellen wo du die Parameter abfragen kannst.

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