[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
  • 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 :D

    ast2ufdyxkb1.png


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

  • Wo ist mein Fehler :D Hab ehrlich ka warum es nicht geht



    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, "/kacken");
    }
    }


    MFG

  • 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

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • 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:


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