[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
  • Ich habe ein Problem mit tagof.
    Ich arbeite gerade zum ersten Mal damit, und wollte wissen, warum das hier nicht funktioniert,
    da es mMn eigentlich richtig aussieht :/


    if(tagof(strlen(bin)/8) == ( Float: )){/**/}


  • Ich habe ein Problem mit tagof.


    Das geht so leider nicht :S


    Du musst bei tagof alles Zwischenspeichern und Schritt für Schritt machen, also schreib es so:


    new idx = strlen(bin)/8,tag = tagof (idx);
    if(tag == tagof (Float:)){/**/}


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Ich möchte das der Geldbetrag im Dialog abgefragt wird
    DIALOG :

    Spoiler anzeigen
    {
    if(dialogid == DIALOG_TICKET)
    {
    if(response == 0)
    {
    SendClientMessage(playerid,WEIß,"Du hast dein Ticket weggeschmissen und Flüchtest");
    SetPlayerWantedLevel(playerid,1);
    return 1;
    }
    if(response == 1)
    {
    SendClientMessage(playerid,WEIß,"Du hast den Betrag %d gezahlt!");
    return 1;
    }
    }

    TICKET BEFEHL
    Spoiler anzeigen
    ocmd:ticket(playerid,params[])
    {
    if(!isPlayerInFrakt(playerid,1))return SendClientMessage(playerid,WEIß,"Du bist kein agestellter bei der Polizei");
    if(DutyPD[playerid] == 0)return SendClientMessage(playerid,WEIß,"Du bist nicht im Dienst");
    new pID, grund[265], betrag[265];
    if(sscanf(params,"usd",pID,grund,betrag)) return SendClientMessage(playerid,HELLBLAU,"Benutze: /Ticket [PLAYERID] [GRUND] [STRAFE]");
    format(grund,sizeof(grund),"Du hast ein Ticket bekommen GRUND: %s \nDu musst eine Betrag von %d zahlen", grund, betrag);
    ShowPlayerDialog(pID, DIALOG_TICKET, DIALOG_STYLE_MSGBOX, "TICKET", grund, "Bezahlen", "Flüchten");
    return 1;
    }



    Wie kann ich das machen? :)
    Danke im vorraus

    Regelmäßiger Stuhlgang im Leben des Menschen ist das A&A

  • Hey,
    ich wollte ein EP-System in meinem Script machen und wollte nicht immer so 4 Zeilen haben.
    Da habe ich mir gedacht, das ich alles wichtige in ein public mache.
    Das sieht dann so aus:

    forward GivePlayerEP(playerid, xp);
    public GivePlayerEP(playerid, xp)
    {
    new string[128];
    PlayerInfo[playerid][pRespekt] += xp;
    format(string, sizeof(string), "* Du hast "#SERVERFARBE"+%i EXP{FFFFFF} für deine Aktion bekommen.", xp);
    SendClientMessage(playerid, COLOR_WHITE, string);
    return 1;
    }


    Wie ich jemanden EP gebe:

    GivePlayerEP(playerid, 2);
    //oder
    GivePlayerEP(i, 2);
    //oder
    GivePlayerEP(killerid, 2); //etc

    Würde das so gehen?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Warum muss ich immer den Nickname des Spielers eintragen und kann nicht bloß die ID nehmen damit etwas passiert?
    Beispielsweise beim /kick-Befehl:
    ocmd:kick(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Du besitzt nicht die notwendigen Rechte!");
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GRAU,"/kick [id] [grund]");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gekickt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(ROT,string);
    Kick(pID);
    return 1;
    }

    Aber bei meinem /ban-Befehl und /makeadmin ist das gleiche Problem. Erst wenn ich den Nickname nehme wird die Person auch gekickt. Ansonsten steht da wo der SpielerName(pID) stehen soll einfach nichts, der String wird zwar an alle gesendet aber es passiert nichts.

  • Probiere den Prameter "u" durch den Parameter "i" für Integer zu ersetzen.
    Hinzukommend wäre eine Abfrage ob der Spieler connected ist nicht verkehrt, sonst kommen schnell Probleme auf.


    Bitte bitte, lass es sein.


    Das was du da redest / schreibst, ist kompletter Mumpitz.
    Sscanf gibt einen Fehler raus, wenn der Spieler nicht connected ist, eben so ist "i" als Parameter wenn man nach Usern sucht falsch.


    JohnsonC:
    Nur mal so, es wäre schlau das sscanf Plugin zu nutzen, nicht eine 4 Jahre alte Include.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski


  • Bitte bitte, lass es sein.


    Das was du da redest / schreibst, ist kompletter Mumpitz.
    Sscanf gibt einen Fehler raus, wenn der Spieler nicht connected ist, eben so ist "i" als Parameter wenn man nach Usern sucht falsch.


    JohnsonC:
    Nur mal so, es wäre schlau das sscanf Plugin zu nutzen, nicht eine 4 Jahre alte Include.

    Vor ca. einem Jahr gab es nach meinem Wissensstand solch ein Vorfall wo mein kompletter Mumpitz die Lösung war.
    Ich schrieb, "probiere", ist wohl besser als nichts zu schreiben. Also keineswegs habe ich dies mit 100%er Weise als die Lösung angepriesen wobei diese Fehlermeldung nicht kommen sollte, wenn der Spieler connected ist. Und das ist wohl keine Kunst zu wissen ob wer online ist.
    Zudem wollte er nur die ID eingeben wo dann dementsprechend i & u korrekt ist.


    Und Angesicht dessen spiegelt sich dein Beitrag meinem wieder. Also spiel dich nicht so auf?!


    /e1

  • Vor ca. einem Jahr gab es nach meinem Wissensstand solch ein Vorfall wo mein kompletter Mumpitz die Lösung war.


    Diese Lösung war vielleicht zu 0.1 Zeiten so, was aber unglaublich lange her ist.
    Dein Weg war vor einem Jahr sicherlich keine Lösung, das wüsste ich.


    Zu dem sollte bekannt sein, das die PAWN sscanf Version schon immer anfällig für Fehler war, das ist nicht seid letztem Jahr :P


    Somit ist deine "Lösung" falsch, weil es dieses Problem in den letzten Jahren nie gab.


    Jetzt mal zu deinem 'i & u sind richtig'.
    Eh wir sind immer noch bei Spielern, warum das Risiko eingehen der Spieler ist nicht connected.
    i schleust den Code einfach durch wenn es eine Zahl findet,findet es was anderes -> Fehler.
    Geht man wirklich nur nach Zahlen, muss man immer noch prüfen ob der Spieler auch wirklich da ist, aber warum diese Ressourcen verschwenden? Das ist nun wirklich ineffektiv bzw. Blöd

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Habe mal eine Frage bezüglich des Streamers von Ingocnito (oder wie auch immer).
    Wie könnte ich diesen optimieren?
    Ich nutze die neuste Include und auch das neuste Plugin, dennoch
    streamt er nicht wie gewünscht. Objekte "ploppen" auf und sind auf entfernung ( keine Große) nicht sichtbar....


    Serversettings:
    stream_distance 1000.0
    stream_rate 1000

  • Die jeweilige settings bringen hinsichtlich des streamers nicht viel, wenn du willst das die Objekte von einer weiteren distanz sichtbar sind so kannst du die Drawdistanz
    erhöhen enwteder über die Funktion CreateDynamicObjectEx oder durch das setzen dieser über Streamer_SetFloatData.


    Ebenfalls ist es möglich das zu viele Objekte auf einem Punkt sind daher kann man mit streamdistance arbeiten, um ein objekt früher oder später einzustreamen.
    Zusätzlich könntest du TickRate verringern was jedoch auf die CPU leistung geht falls die Elemente zu langsam erscheinen.

  • Die jeweilige settings bringen hinsichtlich des streamers nicht viel, wenn du willst das die Objekte von einer weiteren distanz sichtbar sind so kannst du die Drawdistanz
    erhöhen enwteder über die Funktion CreateDynamicObjectEx oder durch das setzen dieser über Streamer_SetFloatData.


    Ebenfalls ist es möglich das zu viele Objekte auf einem Punkt sind daher kann man mit streamdistance arbeiten, um ein objekt früher oder später einzustreamen.
    Zusätzlich könntest du TickRate verringern was jedoch auf die CPU leistung geht falls die Elemente zu langsam erscheinen.


    Ok, danke dir für die Info :)


    Jetzt mal ein ganz anderes Problem:
    Ich habe in mein Script den Public eingefügt:
    public OnPlayerTakeDamage(playerid, issuerid, Float: amount, weaponid, bodypart)


    Ansicht passt alles, der Code darunter meines erachtens nach auch, dennoch bekomme ich ein
    Error:

    error 025: function heading differs from prototype
    Wie kann ich diesen beheben? Auf einem Blanc Script passt alles.
    Mein Aktuelles Script habe ich halt komplett geupdatet, damit alles auf 0.3z abgestimmt ist,
    dennoch will der public nicht so richtig :S

  • Wie kann ich diesen beheben? Auf einem Blanc Script passt alles.
    Mein Aktuelles Script habe ich halt komplett geupdatet, damit alles auf 0.3z abgestimmt ist,
    dennoch will der public nicht so richtig :S


    Dein Pawno bezieht die Includes aus dem falschen ordner. Daher starte Pawno von dem Ordner aus von mit den aktuellsten includes und öffne danach ein skript.
    Weil in der a_samp.inc ist der zusätzliche parameter enthalten

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