Beiträge von ItsFreaky | Marcel

    Du hast zweimal zu viele ")" versuchs jetzt mal :)

    Achso okay, dann änder ich es jetzt nochmal :D
    Danke :D



    Edit: Nun kommen wir zur Erweiterung.


    Ich möchte das mehrere Zeilen gelesen und ausgegeben werden, am besten dann in einem anklickbaren Textdraw, da ich den Code / die Zeilen IG auch bearbeiten möchte.
    Sprich: Neue Zeilen hinzufügen, vorhandene Zeilen editieren, um es auch Deutsch zu sagen, ich möchte von IG aus Scripten können.
    Beispiel: Ich stehe vor einem Hofeingang, habe mir ein IG Objecteditor geholt, stelle dort ein Tor hin, dann möchte ich mit meinem "System" IG mein Script öffnen z.B per /Script [Zeile] [Zeile], oder ich suche einen bestimmten Bereich durch mein System sagen wir mit dem Schlüsselwort "OnGamemodeInit", dann wird mir die Zeile ausgegeben in der OnGamemodeInit (Sagen wir mal 500) steht oder auch gleich per Textdraw geladen.
    Ich öffne die Zeile folgendermaßen : /Script 500 520, dann wird ein Textdraw geöffnet in der die Zeilen 500 - 520 stehen und ich sie frei editieren kann, neues hinzufügen, altes entfernen oder editieren.


    Soweit zur Theorie.


    Orientieren tu ich mich dabei am Beispiel Code von Jeffry und am Hilfesystem von GRP (/Help [Suchtext])


    Der Code der mir dabei im Kopf schwebt ist folgender, (Ich weiß nicht ob er richtig ist leider... )


    CMD:Test(playerid,params[])
    {
    new File:Text, i, string[128];
    new Zahl = strval(params);
    new Zahl1 = strval(params);
    if(fexist("Text.txt"))
    {
    Text = fopen("Text.txt", io_read);
    while(fread(Text, string))
    {
    i++;
    if(i==Zahl && i==Zahl1) format(string, sizeof(string), "Gesuchter Text in Zeile %d: %s", i, string), SendClientMessage(playerid, RED, string);
    }
    }
    return 1;
    }



    Re-Edit: Den Code habe ich getestet doch bekomme da immer nur "Unknown Command".
    Ich hab heute auch schon ein wenig rumprobiert und gesucht doch immer mit dem gleichen Ergebnis nämlich nichts.
    Entweder Unknown Command oder ich habe nichts passendes gefunden / hinbekommen.
    Ich hab es erst einmal an einem andern Befehl und neuem Text getestet doch wieder das gleiche Ergebnis.
    Ich werde mich dann mal mit Filemanager auseinander setzen ich befürchte das werde ich bei meinem Vorhaben sowieso müssen, damit es realisierbar ist.
    Ich möchte es ja möglichst dynamisch und komfortabel gestalten.

    Danke dir Jeffry


    Jaa, stimmt. Aber ich lerne noch und ich habe auf jeden Fall was gelernt dabei, ich werde mich weiter damit auseinander setzen.
    Dir gebührt mein Dank, du hast mir ganz schön geholfen jetzt, danke dir. =)
    Danke für deine Hilfe und deine Beispiele / Grundlagen / Lösungen, ich werde mir das weiter anschauen und die einzelnen Schritte verinnerlichen. :)


    Mit allerfreundlichsten Gruß
    Marcel :)




    EDIT: Bekomme Error :error 025: function heading differs from prototype
    Zeile:
    public OnPlayerText(playerid, cmdtext[]) :D



    Re-Edit: Gelöst, OnPlayerText(playerid, text[])
    So lautet der Public eigentlich. :D
    Hab es nun in der a_samp.inc geändert zu : OnPlayerText(playerid,cmdtext[])

    Das Funktioniert wunderbar. =)
    Die Zeilen werden mir Ausgegeben + Inhalt.
    Bsp: /Zeile 219 -> Zeile 219: cmd:zeile(playerid,params[])


    Läuft perfekt.
    Nun nur noch das Problem, wie mache ich das wenn ich ein Befehl eingebe das mir die Zeile mit ausgegeben wird.
    Wieder Beispiel /sayhay
    SendClientMessageToAll(playerid, 0xFF0000FF, "Hallo an Alle!");
    SendClientMessage(playerid, 0xFF0000FF, "Zeile 225 : cmd:sayhay(playerid,params[])"
    ODER: SendClientMessage(playerid, 0xFF0000FF, "Du hast grade Zeile %d (225) benutzt!");



    Aber vielen vielen dank Jeffry *_*
    Es funktioniert soweit schon einmal <3
    :love:

    Damit kann ich auf jeden Fall schon einmal was anfangen.
    Nun nur noch das Problem, die Zahl ist vorher ja nicht festgelegt.


    Sprich :
    new Zahl = 1000;


    Sondern das war ja nur ein Beispiel.
    Das ganze soll ja so gesehen mit unbekannten Zahlen & Texten laufen.


    Wie folgt:


    Client gibt ein /Befehl
    /Befehl wird ausgeführt dazu wird ausgeben in welcher Zeile /Befehl steht.
    IG über SendClientMessage.
    Weil printen tut er ja nur in der Konsole.


    Nun dazu aber auch die unbekannten Texte ...
    Bsp: /Zeile (ZID) - Die Zeilen ID (Bsp: 1000)
    Ausgeben wird folgendes Zeile (%d - in diesem Fall ->) 1000 : CMD:Befehl(playerid,params)
    Wieder per SendClientMessage.



    Allerdings kann ich dir gar nicht genug danken für deine Hilfe.
    Ich werde mich mit dem Filemanager und deinem Beispiel Code mal auseinander setzen, ob ich den Praxis Test heute noch schaffe weiß ich noch nicht.
    Aber die Theorie hab ich zumindest schon einmal ein bisschen mehr verstanden und im Kopf.


    Ansonsten hätte ich vielleicht noch eine "abstrakte" Lösung im Kopf und zwar folgende..
    Der gesuchte Text / die gesuchte Zeile (Bsp: /Zeile 1000) wird im Script gesucht und verglichen ob es mehrere Treffer gibt eher unwarscheinlich wenn man nach einer Zeile speziell sucht aber trotzdem.
    Die Zeile wird gefunden und ist auch nur einmal vorhanden (eigentlich logisch es kann ja auch nur eine Zeile 1000 geben).
    Die Zeile wird ausgelesen und der Inhalt wird dem Clienten ausgegeben.


    Nun zu einer anderen Vorstellung wegen der unbekannten Zahl und zwar das es im Script schon so geschrieben wird:
    new Zahl = %d / %i


    %i wegen einem Integer aber %d erfüllt auch den Zweck.
    Ich kenne leider nicht den vollständigen Umfang und den Bereich der Möglichkeiten von PAWN.
    Aber irgendwie muss das ganze doch dynamisch und Komfortabel zu händeln sein oder nicht.


    Vorgang:
    Der Vorgang aus dem Beispiel leuchtet mir soweit ja auch ein, nur irgendwo dazwischen muss es doch noch weitere Möglichkeiten geben dies dynamisch und Komfortabel zu gestalten.
    Das was ich im Kopf hab ist wirklich nicht einfach zu erklären, vielleicht auch gar nicht möglich.


    Orientiren wir uns mal ein wenig am Hilfesystem von (darf ich den Namen nennen? Ich tu es jetzt einfach mal) German-Roleplay.
    Dort wird wie folgt gesucht, die Datenbank erfasst Einträge sagen wir mal von 0 - 100.
    Die Einträge liegen wohl in den Scriptfiles als .txt so gehe ich jetzt einfach mal davon aus.
    Du suchst einen bestimmten Eintrag, Beispiel: /Help 50
    Der Eintrag Nummer 50 wird gesucht und ausgegeben.


    Hat vielleicht nicht ganz so viel mit meinem vorhaben zu tun ist aber vielleicht eine kleine Hilfe.


    So ähnlich soll es bei mir auch ablaufen, nur das bei mir diese "Einträge" fest im Script sind in Form von den Zeilen.
    Beispiel: "/Zeile 50"
    Zeile 50 wird gesucht & gelesen.
    Zeile 50 wurde gefunden, gelesen und wird nun ausgegeben.
    "Zeile 50: Hallo Welt, ich bin Zeile 50 im TestScript"


    So viel zur Theorie.
    Jede Antwort und Anregung ist weiterhin herzlich willkommen.



    Aber an dieser Stelle noch einmal einen großen und besonderen dank an Jeffry :love:

    Ja, es ist eher Sinnfrei und nicht dynamisch weil er die Datei immer wieder durchließt und dadurch vermutlich mengen an Ressourcen "verschwendet".


    Nun aber die Frage, hab ich es jetzt anhand meines Beispiels richtig gemacht?
    Liegen dort Fehler? (Hab es jetzt hinbekommen untereinander zu schreiben)



    Und die wichtigere Frage, wie anders machen.
    Ich hab mir alles noch einmal angeschaut und werde den Code gleich sofern er richtig ist zum ersten mal in der Theorie testen.
    Nur verstehe ich Filemanager.inc nicht ganz, ich werde mit damit auf jeden Fall nochmal genau auseinander setzen.


    Okay, vielen dank für deine schnelle Hilfe.
    Ich werde mal schauen ob ich es hinbekomme.



    new File:hFile;
    hFile = fOpen)("TestScript.pwn", io_read);
    while(fread(hFile, string))
    {
    i++;if(i==1000) print(string);
    }



    So ungefähr? Dann müsste es doch eigentlich auch möglich sein durch die if-Abfrage eine beliebige Zeile zu erfragen und sie direkt auszugeben.
    Vorstellung:


    Die Script Datei als .txt statt .pwn falls das Include damit besser klar kommt.



    new File:hFile;
    if(fexist("TestScript.txt"))
    {
    hFile = fOpen)("TestScript.txt", io_read);
    }
    while(fread(hFile, string))
    {
    i++;
    format(string, sizeof(string), "%s");
    if(i==%d) SendClientMessage(playerid, FARBE, "Zeile %d: %s);
    }


    Kann ich das ganze in eine Function schreiben?


    Edit: Wieso schreibt er den verdammten Code immer nebeneinander -.-'

    Zur Info, wenn du eine Kopie der PWn auf dem Server hast kann man dir einfacher das Script klauen, da mann nur Server zugrff braucht und keinen Zugriff auf deinen PC. Ich würd mir das 5 mal überlegen wenn ich du wäre.

    Natürlich ist mir dies bewusst. Nur möchte ich keinen Server machen sondern soll dies lediglich für mich sein, ich plane etwas damit doch habe nicht vor damit in SA:MP einen öffentlichen Server zu errichten.
    Dieses "System" oder Script wird ausschließlich auf meinem Homeserver laufen. :)


    Danke trotzdem für deinen Rat/Tipp

    Wenn ich das nun richtig im Kopf habe kann ich wenn ich die Kopie des Scripts im Scriptfiles Ordner habe per file.inc doch eigentlich wie folgt vorgehen oder nicht?



    new File:hFile;
    hFile = fopen("TestScript.pwn", io_read);
    fClose(hFile);


    So müsste die Datei ja ausgelesen werden, aber wie gebe ich sie wieder beziehungsweise wie gebe ich genau die gewünschte Zeile aus?


    Kann ich vorher irgendwie abfragen ob die Datei existiert?
    Aber wie gebe ich das dann aus, klar es mir den Aufwand wert, ich hab auch schon einen Teil davon verstanden, nur schließt sich das ganze mir leider noch nicht wirklich auf.


    Zumindest wie gebe ich die Zeile dann aus, wie gebe ich es allgemein aus?
    Muss ich es für jede Zeile einzeln Abfragen oder kann ich das ganze in einem Stock oder in einer Function schreiben so das ich global darauf zugreifen kann.


    Ich versteh es leider nur Stückweise aber "programmieren" ist auch kein Ponyhof.

    Ich schreibe mal meine letzten 10


    Vielleicht kann ja jemand einen gebrauchen :D


    1) Was ich für dich Aufgebe, Minimal, was für ein Preis ich bekomme, Optimal, wie sehr ich dich Liebe, Maximal.
    2) Ich gefalle dir nicht? Fuck drauf! Ich bin kein Facebook Status 8)
    3) Egal wie du dein Leben lebst, der alltägliche Alltagsrythmus holt dich schnell ein.
    4) Parallel zu den Gefühlen eines Menschen, wächst die Angst ihn zu verlieren.
    5) Mal bist du der Hund, mal der Baum.
    6) Wir leben in den Tag, ohne Plan und wird es auch mal hart, betäuben wir uns mit Gras jedes mal!
    7) Für einige bist du nichts! Für andere eine Welt!<3
    8.) Versuche das unmögliche, um das mögliche zu erreichen.
    9) Uns halten nur die Grenzen, die wir uns selber setzen.
    10) Viele denken ich wäre eingebildet, dabei gibt es mich wirklich!=)

    Schönen guten Abend, liebe Breadfish Community.


    Gestern kam mir eine Idee, ob sie gut oder schlecht ist wird sich noch heraus stellen, doch habe derzeit kein "Plan" wie sich die Idee verwirklichen lässt.
    Es geht um folgendes.. der Gamemode / das Script soll IG (in-Game) auslesbar sein, wie ich mir das vorgestellt habe werde ich anhand von zwei Beispielen verdeutlichen.


    Beispiel Eins:



    Der Client gibt einen Befehl ein Bsp: "/Befehl", der besagte Befehl ist meinetwegen in den Zeilen 1000-1005 geschrieben, als Block gesehen oder eben nur die einzelne Zeile in welcher der Befehl steht aufs Beispiel bezogen Zeile 1000.
    Nun soll der Befehl ganz normal ausgeführt werden aber parallel dazu soll dem Client die Zeilen in welchen der besagte Befehl steht ausgegeben werden.
    Beispiel: Client gibt ein "/Befehl", der Befehl wird ausgeführt und dazu bekommt der Client ausgegeben (SendClientMessage evtl.) : "Zeile 1000" oder so ähnlich.


    Auf dem ersten Blick vielleicht etwas unnötig, doch ich habe etwas damit geplant, was ich derzeit aber noch nicht bekannt geben kann / mag.


    Beispiel Zwei:



    Kommen wir nun zur Dynamik.
    Ich möchte zu dieser "Funktion" sprich das auslesen des Scripts auch noch einen passenden Befehl haben Bsp: "/Zeile (ZeilenID / ZID)" Beispiel Ausführung: "/Zeile 1000".
    Dann soll dem Client (Mir) ausgegeben werden was nun genau in dieser Zeile steht, diesmal aber nicht der ganze Block sondern nur diese eine Zeile. Bsp: "SendClientMessage(playerid, COLOR, "Zeile %i(Als Integer (ZID / ZeilenID) : TEXT" Sprich: "Zeile 1000 : CMD:Befehl(playerid,params) | Also der genaue Aufbau der Zeile soll wiedergegeben werden.



    Ich hoffe ich konnte es ein wenig näher erläutern, doch wie gesagt fehlt mir derzeit die Idee wie oder womit ich anfange, deshalb frage ich euch vielleicht hat ja jemand von euch eine gute Idee.
    Ich hoffe das ist der richtige Bereich für diese Frage, es gibt ja den Bereich "kleine/re Scripting-Anfragen" doch dies ist ja eigentlich keine kleine Anfrage.


    Ich bedanke mich im voraus für jede Antwort.
    Mit freundlichen Gruß
    ItsFreaky | Marcel


    PS: Bitte nicht klauen.. ich gehe jetzt einfach mal davon aus das ich der erste bin dem diese Idee gekommen ist

    Schönen guten Abend liebe Breadfish Community,


    heute mal wieder eine kleine Frage und zwar folgendes.. jeder kennt SSCANF, benutzt ihr es lieber im Stock oder im Include in Verbindung mit dem Plugin.


    Gibt es dort unterschiede, wenn ja welche, welches ist "besser" oder für euch angenehmer.
    Mir fällt Spontan nur ein Unterschied ein kann mich aber auch täuschen, lange nicht mehr gescriptet und zwar die "Spezifizierungen" Bsp: "U","I","S" usw. usw.


    S - String
    I - Integer
    U - Namen/Spieler.


    Wenn ich mich nicht irre, doch gibt es noch andere unterschiede, zum Beispiel in der Performance oder Geschwindigkeit?
    Ist beides jeweils mit jedem Script kompatibel?
    Eurer Wissen ist gefragt.


    Über eine Antwort würde ich mich sehr freuen, einfach was ihr lieber benutzt und wo die Unterschiede liegen.
    Vielen dank im voraus <3

    Schönen guten Abend,


    also.. bei dieser Anfrage kannst du nicht erwarten das sich die "Elite" bei dir meldet, sondern eher die Anfänger die unbedingt ein Projekt auf die Beine stellen wollen, welches sich nach (großzügiger) weise Zwei Wochen wieder verabschiedet, dies hier ist eine 08/15 Anfrage.


    Wie wäre es denn zum Beispiel wenn du etwas ins Detail gehst was deine Vorstellung angeht, etwas über dich, etwas darüber was dich zu dieser Idee bewegt hat etc. .. es gibt genug was du schreiben könntest.


    Ich wünsche dir trotzdem viel Erfolg & Glück bei deiner Suche.
    MfG

    Hallo liebe Breadfish Community.


    Ich bräuchte einen PSC Rest von 0.50€ wenn jemand die besagte Summe übrig haben sollte würde ich mich sehr über eine Nachricht freuen.
    Über eine Gegenleistung, wie diese aussehen soll usw. könnte man dann gerne über PN verhandeln.
    Vielen Dank im voraus.


    Mit freundlichen Gruß

    Schönen guten Tag.


    Ein schönes Tutorial, schön erklärt, wenn auch ein wenig zu sehr auf Copy & Paste ausgelegt.
    Für Anfänger sicher sehr hilfreich, doch gleichzeitig muss ich sagen das ich auch nicht nötig finde, da ich finde das sowas zum Grundwissen gehört, jeder sollte mittlerweile wissen wie man einen Befehl mit Parametern aufbaut.
    Es ist nicht so das wir hier in den Anfängen von PAWN sind sondern uns in der SA:MP Version schon bei 0.3z befinden, natürlich macht das in erster Linie keinen Unterschied, denn selbst jetzt gibt es immer wieder Anfänger.


    Doch persönlich finde ich gehört ein Befehl mit Parametern + der Umgang mit Sscanf und einem Command Prozessor zum Grundwissen.
    Genauso verstehe ich von machen die Kritik nicht zum Beispiel woher er denn SpielerInfo hat, wer sowas nicht versteht sollte nochmal bei Null anfangen, aber das ist nur meine Meinung.


    Alles in allem trotzdem ein sehr schönes Tutorial.
    Mach weiter so.


    Mfg