Beiträge von #S.

    Kriege komischerweise folgendes raus:



    Kann ich nicht verstehen, habe den Ordner offen, gecheckt ob alles dadrin ist und vorsichtshalber 2 mal neu das Tutorial durchgegangen. Woran kann das liegen?

    //Edit:
    Alles super, habs schon. :whistling:

    Irgendwie fangen auf einmal an auf dem Server bestimmte (wohlgemerkt: selbst eingefügte Teile im Skript) Maps einfach unsichtbar zu werden. So wird z.B. nur noch 15 % von dem eigentlichen Bank Interior angezeigt. Dieses Problem kam erst auf, als ich ein neues Jail ins Skript gefügt habe.
    Ich denke also mal dass es an zu vielen(?) Objekten liegt. Ich benutze den Incognito Streamer (v. 2.8.2 - aktuellster laut Github). Was kann ich noch probieren? Andere Streamer ausprobieren?

    Irgend jemand eine Idee, was ich dort machen kann? Ist ein ziemlich blödes Problem, kann kaum etwas testen deswegen.

    Irgendwie fangen auf einmal an auf dem Server bestimmte (wohlgemerkt: selbst eingefügte Teile im Skript) Maps einfach unsichtbar zu werden. So wird z.B. nur noch 15 % von dem eigentlichen Bank Interior angezeigt. Dieses Problem kam erst auf, als ich ein neues Jail ins Skript gefügt habe.
    Ich denke also mal dass es an zu vielen(?) Objekten liegt. Ich benutze den Incognito Streamer (v. 2.8.2 - aktuellster laut Github). Was kann ich noch probieren? Andere Streamer ausprobieren?

    Man kann auch nicht direkt alles von Anfang an wissen. Dafür ist dieses Forum ja auch hier.
    Vorher müsstest du allerdings oben am Script noch dieses eine Pickup genau definieren.



    // oben im Script
    new armourpickup;


    // OnGameModeInit


    armourpickup = AddStaticPickup(1239, 2, Float:X, Float:Y, Float: Z, 0);


    // Du kannst es so wie Kristik es bereits erläutert hat in einem Befehl mit IsPlayerInRangeOfPoint verwenden, oder OnPlayerEnterPickup.


    public OnPlayerPickUpPickup(playerid, pickupid)
    {
    if(pickupid == armourpickup)
    {
    // Vielleicht vorher noch abfragen, ob er in einer Gang ist (wäre zumindest in deinem Fall sinvoll)
    // Was dann alles passieren soll (Armour auf 100 setzen, etc. wie es dir beliebt).
    }
    return 1;
    }

    public OnPlayerCommandText(playerid, cmdtext[])


    OnPlayerCommandText hat keine Params. Schau dir mal irgendwascmd an:



    xcmd:test123(playerid,params[])
    {
    return 1;
    }

    Da hast du die Params. Sscanf kann also nicht wissen, was du mit params meinst, bei deinem Beispiel, weil du ja nur if(!strcmp(cmd, "/blitzer")) bei OnPlayerCommandText stehen hast.

    Irgendwie möchte mein 3DTextLabel nicht erstellt werden. Findet jemand den Fehler?


    Würde aller Code dadrunter ausgeführt werden?
    Logisch wäre nein, weiß aber nicht ob return SendClientMessage einen ähnlichen Effekt hat wie return 1; (was auf jeden Fall die Schleife stoppen würde)



    for(o=0;o<GetMaxPlayers();o++)
    {
    if(!IsPlayerConnected(o))continue;
    if(playerlotto[o]<=0)return SendClientMessage(o,CLR_YELLOW,"Du hattest dir kein Lottoschein geholt.");
    if(playerlotto[o]!=lottozahl)return SendClientMessage(o,CLR_YELLOW,"Du hast Leider nicht gewonnen! Nächstes mal jedoch bestimmt.");
    //?

    Klappt perfekt, danke Prototype.
    Mache ich die Abspeicherung am besten mit PVars oder/und nem Array (oder sonst irgendwas).


    //Edit:


    Nvm, habs selbst. Das letzte Problem ist, dass obwohl alles übereinstimmt trotzdem "Vorgang abgebrochen." kommt.



    (strval war nur ein Versuch, klappte auch ohne nicht.)

    if(playertextid==PinCodeAccept[playerid])
    {
    printf("Ergebnis : %s",PinString);
    strval(PinString);
    printf("Ergebnis 2 : %i",PinString);
    printf("Mein Pin : %i",pInfo[playerid][pBankkartenpin]);
    if(strlen(PinString)!=pInfo[playerid][pBankkartenpin])
    {
    strdel(PinString,0,5);
    deleteCharacter(playerid);
    deleteCharacter(playerid);
    deleteCharacter(playerid);
    deleteCharacter(playerid);
    PlayerTextDrawSetString(playerid,PinCodeX[playerid],PinCode[playerid]);
    SendClientMessage(playerid,CLR_RED,"Vorgang abgebrochen.");
    }
    else
    {
    SendClientMessage(playerid,CLR_GREEN,"Erfolgreich.");
    strdel(PinString,0,5);
    deleteCharacter(playerid);
    deleteCharacter(playerid);
    deleteCharacter(playerid);
    deleteCharacter(playerid);
    PlayerTextDrawSetString(playerid,PinCodeX[playerid],PinCode[playerid]);
    PlayerTextDrawHide(playerid,PinCodeEingabe[playerid]);
    PlayerTextDrawHide(playerid,PinCode1[playerid]);
    PlayerTextDrawHide(playerid,PinCode2[playerid]);
    PlayerTextDrawHide(playerid,PinCode3[playerid]);
    PlayerTextDrawHide(playerid,PinCode4[playerid]);
    PlayerTextDrawHide(playerid,PinCode5[playerid]);
    PlayerTextDrawHide(playerid,PinCode6[playerid]);
    PlayerTextDrawHide(playerid,PinCode7[playerid]);
    PlayerTextDrawHide(playerid,PinCode8[playerid]);
    PlayerTextDrawHide(playerid,PinCode9[playerid]);
    PlayerTextDrawHide(playerid,PinCodeX[playerid]);
    PlayerTextDrawHide(playerid,PinCodeAccept[playerid]);
    PlayerTextDrawHide(playerid,PinCodeBack[playerid]);
    PlayerTextDrawHide(playerid,PinCodeCancel[playerid]);
    CancelSelectTextDraw(playerid);
    TogglePlayerControllable(playerid,1);
    }

    Danke schon einmal für die Hilfe!
    Wofür steht bei new number das + 1?
    Habe das jetzt mal auf 4 + 1 geändert, weil ich ja nur 4 '*' brauche.


    Verwende ich deine Funtkion dann dementsprechend so (wobei ich noch nicht ganz bei den Parametern durchblicke)?



    if(playertextid==PinCode1[playerid])
    {
    PlayerTextDrawSetString(playerid,PinCodeX[playerid],addCharacter(/*?*/));
    }

    Und bei bei meinem Löschen-Textdraw dann logischerweise mit deleteCharacter.


    + Kann ich das irgendwo besser lösen mit den Zahlen im Hintergrund speichern?
    Dann könnte ich ja theoretisch (falls das möglich ist) in einem PVar mehrere (am besten 4) Zahlen speichern. Dann bräuchte ich einfach nur die letzte Zahl, die gedrückt wurde, zu speichern, oder muss ich dann bei jedem Zahlenfeld die entsprechende Zahl speichern (z.B. PinCode1 == SetPVarInt 1, PinCode2 == SetPVarInt 2 usw...)?


    mfg.

    Kann man strcmp mit switch benutzen?
    Beispiel wo ichs versucht habe:



    new pID, auswahl[12];
    if(!isPlayerInFrakt(playerid,3))return SendClientMessage(playerid,CLR_RED,"Fehler: Du bist kein Fahrschullehrer.");
    if(sscanf(params,"us",pID,auswahl))return SendClientMessage(playerid,CLR_RED,"Fehler: Benutzung: /givelic [playerid] [carlic/bikelic/planelic/weaponlic]");
    switch(strcmp(auswahl))
    {
    case "carlic":
    {
    return 1;
    }
    }

    Hallo Breadfish,


    bin momentan an eine Art "Pin" System für die Bank am werkeln und stoße jetzt auf viele verschiedene Probleme.
    Erstmal allerdings einen kleinen Codeausschnitt um zu verdeutlichen, was ich so denke:



    if(playertextid==PinCode1[playerid]) //Geht von PinCode1 - PinCode9
    {
    if(pincodestufe[playerid]==0) // Das ist die Stufe, also quasi ob er (wie hier) beim ersten Zeichen ist oder vielleicht beim dritten (von vier).
    {
    new string[4];
    pincodestufe[playerid]=1; // Da er jetzt eine Zahl angegeben hat, ist er auf Stufe 1.
    format(string,sizeof(string),"%s",pincodecensor[playerid]); // Weiter unten
    PlayerTextDrawSetString(playerid,PinCodeX[playerid],string);
    SetPVarInt(playerid,"PINCODENUMBER1",1); // Die Nummer die er eingegeben hat muss ich ja auch irgendwie zwischenspeichern.
    }


    // Das hier ist pincodecensor


    new pincodecensor[MAX_PLAYERS]="*";


    // Wie ich z.b. die Zahl 1 erstelle


    PinCode1[playerid] = CreatePlayerTextDraw(playerid,250.000000, 171.000000, "1");
    PlayerTextDrawBackgroundColor(playerid,PinCode1[playerid], 255);
    PlayerTextDrawFont(playerid,PinCode1[playerid], 1);
    PlayerTextDrawLetterSize(playerid,PinCode1[playerid], 0.500000, 2.200000);
    PlayerTextDrawColor(playerid,PinCode1[playerid], 16711935);
    PlayerTextDrawSetOutline(playerid,PinCode1[playerid], 0);
    PlayerTextDrawSetProportional(playerid,PinCode1[playerid], 1);
    PlayerTextDrawSetShadow(playerid,PinCode1[playerid], 1);
    PlayerTextDrawBoxColor(playerid,PinCode1[playerid], 255);
    PlayerTextDrawTextSize(playerid,PinCode1[playerid], 262.000000, 8.000000);
    PlayerTextDrawSetSelectable(playerid,PinCode1[playerid], 1);
    PlayerTextDrawHide(playerid,PinCode1[playerid]);


    Meine Probleme sind jetzt folgende: Wenn er ausversehen eine falsche Zahl gedrückt hat, habe ich natürlich einen Button erstellt, womit er das letzte Zeichen löschen kann. Wie kann ich sowas verwirklichen?
    2tes Problem: Ich muss die 4 gedrückten Zahlen aneinanderreihen (er drückt 5 - 3 - 9 - 7 == 5397) und diese dann mit seinem Pin abgleichen (pInfo[playerid][pBankkartenpin]).
    3tes Problem: Er erstellt kein * sobald auf ich auf eine Zahl drücke.
    Über Vorschläge wäre ich extrem glücklich.