Warum funktioniert die "inputtext"-abfrage nicht? :0

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
  • Guten Morgen :huh: :D


    Ich komme leider mal wieder bei einem Fehler nicht weiter und hoffe um Rat :)


    Was passieren soll: "/abgeben" -> Dialog(Input) -> Code 5791 als Bestätigung -> Man bekommt eine von 16 Pins in den ACC gespeichert
    Was tatsächlich passiert: "/abgeben" -> Dialog(Input) -> nichts ?(


    Ich hoffe, ihr könnt mir mal wieder unter die Arme greifen :) vielen Dank im Vorraus!
    ocmd:abgeben(playerid,params[])
    {
    if(IsPlayerInRangeOfPoint(playerid,5,596.9559,-3962.3389,40.3781))
    {
    if(GetPlayerScore(playerid)>=1)
    {
    ShowPlayerDialog(playerid,abgebendialog,DIALOG_STYLE_INPUT,"CODE","Gib den Code ein!","SET","");
    }
    if(GetPlayerScore(playerid)==0)
    {
    SendClientMessage(playerid,0xFF000FFF,"Netter Versuch! Besuche das Tutorial!");
    }
    }
    }


    if(dialogid==abgebendialog)
    {
    if(response==1) //OK
    {
    if(inputtext[abgebendialog]== 5791)
    {
    new Pin = random(15);
    switch(Pin)
    {
    case 0: Pin = 1;//4564;
    case 1: Pin = 2;//4563;
    case 2: Pin = 3;//7456;
    case 3: Pin = 4;//4567;
    case 4: Pin = 5;//1047;
    case 5: Pin = 6;//4507;
    case 6: Pin = 7;//4467;
    case 7: Pin = 8;//3217;
    case 8: Pin = 9;//1454;
    case 9: Pin = 10;//4204;
    case 10: Pin = 11;//3448;
    case 11: Pin = 12;//4045;
    case 12: Pin = 13;//4254;
    case 13: Pin = 14;//6542;
    case 14: Pin = 15;//6542;
    case 15: Pin = 16;//6547;
    }
    SetPVarInt(playerid,"Pin",Pin);
    SpielerSpeichern(playerid);
    new string[128];
    new pin[64];
    switch(GetPVarInt(playerid,"Pin"))
    {
    case 1:{pin="4564";}
    case 2:{pin="4563";}
    case 3:{pin="7456";}
    case 4:{pin="4567";}
    case 5:{pin="1047";}
    case 6:{pin="4507";}
    case 7:{pin="4467";}
    case 8:{pin="3217";}
    case 9:{pin="1454";}
    case 10:{pin="4204";}
    case 11:{pin="3448";}
    case 12:{pin="4045";}
    case 13:{pin="4254";}
    case 14:{pin="6542";}
    case 15:{pin="6542";}
    case 16:{pin="6547";}
    }
    format(string,sizeof(string),"[Pin: %s]",GetPVarInt(playerid,"Pin"));
    SendClientMessage(playerid,0xFF000FFF,string);
    SendClientMessage(playerid,0xFF000FFF,"Falls du diesen vergisst, kannst du ihn bei '/stats' aufrufen");
    SetPlayerScore(playerid,GetPlayerScore(playerid)+1);
    }


    }
    if(!response)
    {
    return 1;
    }
    if(response==0) //also nein
    {
    return 1;
    }
    }


    Mit der Pin, die man theoretisch bekommen sollte, soll folgendes passieren:


    if(pickupid==gateinselkegel)
    {
    if(GetPlayerScore(playerid) == 0)
    {
    SendClientMessage(playerid, 0xFF0000FF, "Gehe für die Einweisung erst zum Priester!");
    }
    if(GetPlayerScore(playerid) != 0)
    {
    ShowPlayerDialog(playerid,opengatedialog,DIALOG_STYLE_INPUT,"PIN","Gib die Pin ein!","SET","");
    }
    }
    if(dialogid==opengatedialog)
    {
    if(response==1) //also OK
    {
    if(inputtext[opengatedialog]== 4564)
    {
    if(GetPVarInt(playerid,"Pin")==1)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(inputtext[opengatedialog]== 4563)
    {
    if(GetPVarInt(playerid,"Pin")==2)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(inputtext[opengatedialog]== 7456)
    {
    if(GetPVarInt(playerid,"Pin")==3)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(inputtext[opengatedialog]== 4567)
    {
    if(GetPVarInt(playerid,"Pin")==4)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }



    if(!response)
    {
    return 1;
    }
    if(response==0) //also nein
    {
    return 1;
    }
    }


    forward Freiheit(playerid);
    public Freiheit(playerid)
    {
    MoveObject(inseltor1,744.5,-4021.2,40.4,3);
    if(GetPlayerScore(playerid)<=1)
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    SetTimer("Freiheit2",5000,false);
    }
    }
    }
    forward Freiheit2(playerid);
    public Freiheit2(playerid)
    {
    if(GetPlayerScore(playerid)<=1)
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    SetTimer("Freiheitback",3000,false);
    }
    }
    }
    forward Freiheitback(playerid);
    public Freiheitback(playerid)
    {
    MoveObject(inseltor1,744.5,-4026.4,40.4,3);
    if(GetPlayerScore(playerid)<=1)
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    }
    }
    }


    //Edit: Hab mir die Pin mal manuell eingefügt....Der 2. Dialog funzt auch nicht so, wie gewollt ;(
    (Tor bewegt sich nicht ansatzweise)

  • Mal wieder vielen Dank Jeffry ^^


    Der Dialog mit der Pin scheint soweit zu funktionieren, daß er ihn als random 1-16 speichert.

    new string[128];
    new pin[64];
    switch(GetPVarInt(playerid,"Pin"))
    {
    case 1:{pin="4564";}
    case 2:{pin="4563";}
    case 3:{pin="7456";}
    case 4:{pin="4567";}
    case 5:{pin="1047";}
    case 6:{pin="4507";}
    case 7:{pin="4467";}
    case 8:{pin="3217";}
    case 9:{pin="1454";}
    case 10:{pin="4204";}
    case 11:{pin="3448";}
    case 12:{pin="4045";}
    case 13:{pin="4254";}
    case 14:{pin="6542";}
    case 15:{pin="6542";}
    case 16:{pin="6547";}
    }
    format(string,sizeof(string),"[Pin: %i]",GetPVarInt(playerid,"Pin"));
    SendClientMessage(playerid,0xFF000FFF,string);
    SendClientMessage(playerid,0xFF000FFF,"Falls du diesen vergisst, kannst du ihn bei '/stats' aufrufen");
    Funktioniert nicht richtig, da (wenn Random-Pin z.B. 11 ist) "[Pin:11]" und nicht "3448" erscheint.


    D.w. (im 2. Dialog mit Pin-Abfrage um das Tor zu öffnen) wird der Pin zwar ausgelesen und (ich hab mir im fall [Pin:11] die 3448 ausm Script geholt)
    das Tor bewegt sich,... allerdings klont es sich einfach (Habs nur 1 mal erstellt) und der Timer um das Tor zurück zu bewegen tut auch nicht was er soll. (nachm 1. Timer passiert nicht mehr)


    if(dialogid==opengatedialog)
    {
    if(response==1) //also OK
    {
    if(strval(inputtext) == 4564)
    {
    if(GetPVarInt(playerid,"Pin")==1)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 4563)
    {
    if(GetPVarInt(playerid,"Pin")==2)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 7456)
    {
    if(GetPVarInt(playerid,"Pin")==3)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 4567)
    {
    if(GetPVarInt(playerid,"Pin")==4)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 1047)
    {
    if(GetPVarInt(playerid,"Pin")==5)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 4507)
    {
    if(GetPVarInt(playerid,"Pin")==6)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 4467)
    {
    if(GetPVarInt(playerid,"Pin")==7)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 3217)
    {
    if(GetPVarInt(playerid,"Pin")==8)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 1454)
    {
    if(GetPVarInt(playerid,"Pin")==9)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 4204)
    {
    if(GetPVarInt(playerid,"Pin")==10)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 3448)
    {
    if(GetPVarInt(playerid,"Pin")==11)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 4045)
    {
    if(GetPVarInt(playerid,"Pin")==12)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 4254)
    {
    if(GetPVarInt(playerid,"Pin")==13)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 6542)
    {
    if(GetPVarInt(playerid,"Pin")==14)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 6542)
    {
    if(GetPVarInt(playerid,"Pin")==15)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    if(strval(inputtext) == 6547)
    {
    if(GetPVarInt(playerid,"Pin")==16)
    {
    SetTimer("Freiheit",1000,false);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }
    return 1;
    }
    if(!response)
    {
    return 1;
    }
    if(response==0) //also nein
    {
    return 1;
    }


    inseltor1 = CreateObject(988,744.5996100,-4026.3994000,40.4000000,0.0000000,0.0000000,267.9950000); //


    forward Freiheitpin(playerid);
    public Freiheitpin(playerid)
    {
    new Pin = random(15);
    switch(Pin)
    {
    case 0: Pin = 1;//4564;
    case 1: Pin = 2;//4563;
    case 2: Pin = 3;//7456;
    case 3: Pin = 4;//4567;
    case 4: Pin = 5;//1047;
    case 5: Pin = 6;//4507;
    case 6: Pin = 7;//4467;
    case 7: Pin = 8;//3217;
    case 8: Pin = 9;//1454;
    case 9: Pin = 10;//4204;
    case 10: Pin = 11;//3448;
    case 11: Pin = 12;//4045;
    case 12: Pin = 13;//4254;
    case 13: Pin = 14;//6542;
    case 14: Pin = 15;//6542;
    case 15: Pin = 16;//6547;
    }
    SetPVarInt(playerid,"Pin",Pin);
    SpielerSpeichern(playerid);
    new string[128];
    new pin[64];
    switch(GetPVarInt(playerid,"Pin"))
    {
    case 1:{pin="4564";}
    case 2:{pin="4563";}
    case 3:{pin="7456";}
    case 4:{pin="4567";}
    case 5:{pin="1047";}
    case 6:{pin="4507";}
    case 7:{pin="4467";}
    case 8:{pin="3217";}
    case 9:{pin="1454";}
    case 10:{pin="4204";}
    case 11:{pin="3448";}
    case 12:{pin="4045";}
    case 13:{pin="4254";}
    case 14:{pin="6542";}
    case 15:{pin="6542";}
    case 16:{pin="6547";}
    }
    format(string,sizeof(string),"[Pin: %i]",GetPVarInt(playerid,"Pin"));
    SendClientMessage(playerid,0xFF000FFF,string);
    SendClientMessage(playerid,0xFF000FFF,"Falls du diesen vergisst, kannst du ihn bei '/stats' aufrufen");
    }


    forward Freiheit(playerid);
    public Freiheit(playerid)
    {
    MoveObject(inseltor1,744.5,-4021.2,40.4,3);
    if(GetPlayerScore(playerid)<=1)
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    SetTimer("Freiheit2",5000,false);
    }
    }
    }
    forward Freiheit2(playerid);
    public Freiheit2(playerid)
    {
    if(GetPlayerScore(playerid)<=1)
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    SetTimer("Freiheitback",3000,false);
    }
    }
    }
    forward Freiheitback(playerid);
    public Freiheitback(playerid)
    {
    MoveObject(inseltor1,744.5,-4026.4,40.4,3);
    if(GetPlayerScore(playerid)<=1)
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    }
    }
    }


    Danke für die Mühe :thumbup:

  • Also so ganz blick ich in deinem System noch nicht durch, daher kann ich nicht nachvollziehen warum sich das Objekt "klont", da müsste man mal den Code sehen, mit dem du das Objekt verschiebst.
    Zwecks dem angezeigten Pin, ändere mal folgende Dinge:


    new Pin = random(15);
    switch(Pin)
    {
    case 0: Pin = 1;//4564;
    case 1: Pin = 2;//4563;
    case 2: Pin = 3;//7456;
    case 3: Pin = 4;//4567;
    case 4: Pin = 5;//1047;
    case 5: Pin = 6;//4507;
    case 6: Pin = 7;//4467;
    case 7: Pin = 8;//3217;
    case 8: Pin = 9;//1454;
    case 9: Pin = 10;//4204;
    case 10: Pin = 11;//3448;
    case 11: Pin = 12;//4045;
    case 12: Pin = 13;//4254;
    case 13: Pin = 14;//6542;
    case 14: Pin = 15;//6542;
    case 15: Pin = 16;//6547;
    }
    SetPVarInt(playerid,"Pin",Pin);
    zu:
    SetPVarInt(playerid,"Pin",random(15)+1);
    Dann sparst du dir den switch.


    Und dann:
    format(string,sizeof(string),"[Pin: %i]",GetPVarInt(playerid,"Pin"));
    zu:
    format(string,sizeof(string),"[Pin: %s]",pin);


    Allerdings weiß ich nicht warum du das als String in "pin" speicherst.



    Die Timer musst du so ändern:
    SetTimer("Freiheit",1000,false);
    zu:
    SetTimerEx("Freiheit", 1000, false, "d", playerid);


    Sonst übergibst du die playerid nicht. Das musst du natürlich bei allen diesen Timern machen, auch bei Freiheit2 und Freiheitback.

  • Die Pin wird nun richtig ausgelesen, danke ^^


    new inseltor1;
    inseltor1 = CreateObject(988,744.5996100,-4026.3994000,40.4000000,0.0000000,0.0000000,267.9950000); //



    Allerdings machen das Tor noch immer nicht, was es soll.
    Folgender Ablauf funktioniert:
    if(dialogid==opengatedialog)
    {
    if(response==1) //also OK
    {
    if(strval(inputtext) == 4564)
    {
    if(GetPVarInt(playerid,"Pin")==1)
    {
    SetTimerEx("Freiheit", 1000, false, "d", playerid);
    SendClientMessage(playerid,0xFF000FFF,"Begib dich schnell zum Tor!");
    }
    }forward Freiheit(playerid);
    public Freiheit(playerid)
    {
    MoveObject(inseltor1,744.5,-4021.2,40.4,3);
    if(GetPlayerScore(playerid)<=1)//Spieler level 0 oder 1
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    SetTimerEx("Freiheit2", 1000, false, "d", playerid);
    }
    }
    } Ab hier klont das Tor;( (Dachte, den Fehler gefunden zu haben [2 mal erstellt] - aber das tor gibts nach abfrage und move trotzdem noch doppelt)


    im Timer lag ein Idiotenfehler:


    public Freiheit(playerid)
    {
    MoveObject(inseltor1,744.5,-4021.2,40.4,3);
    if(GetPlayerScore(playerid)<=1)//Spieler level 0 oder 1
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    SetTimerEx("Freiheit2", 1000, false, "d", playerid);
    }
    }zupublic Freiheit(playerid)
    {
    MoveObject(inseltor1,744.5,-4021.2,40.4,3);
    SetTimerEx("Freiheit2", 1000, false, "d", playerid);
    if(GetPlayerScore(playerid)<=1)//Spieler level 0 oder 1
    {
    if(IsPlayerInArea(playerid,740,-4020,763,-4036))
    {
    SpawnPlayer(playerid);
    }
    }

    3 Mal editiert, zuletzt von XxXTIMOXxX ()