Beiträge von Firzen

    Das Problem ist, dass es die ObjectID 11319 nicht geben kann (viel zu hoch, soviele Objekte kann man garnicht einbinden)
    Du hast wahrscheinlich fälschlicherweise die ModelID verwendet.


    Wenn Du ein Objekt in's Spiel einfügst, musst Du CreateObject() verwenden, diese Funktion returnt die ID von dem Objekt, dass sie erstellt.
    Diese ID musst Du dann in MoveObject() verwenden und dann funktioniert der Befehl auch.


    Beispiel:

    new gDoor;


    public OnGameModeInit()
    {
    gDoor = CreateObject(11319, x, y, z, rx, ry, rz); //für x, y, z, rx, ry, rz die jeweiligen Werte eingeben
    return 1;
    }


    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(strcmp(cmdtext, "/openjp", true) == 0)
    {
    MoveObject(gDoor, -1532.064819, 2642.043213, 51.894089, 3.0);
    return 1;
    }


    if(strcmp(cmdtext, "/closejp", true) == 0)
    {
    MoveObject(gDoor, -1531.990845, 2642.041260, 56.416901, 3.0);
    return 1;
    }


    return 0;
    }

    Als ich bemerkte, dass memcpy eigenartige Vorstellungen von der Zellengröße hat, habe ich mir schnell eine eigene Funktion gemacht.
    strcpy: Kopiert source nach dest. Falls dest nicht groß genug ist, wird der überstehende Rest abgeschnitten.

    stock strcpy(dest[], const source[], maxlength=sizeof dest)
    { strmid(dest, source, 0, strlen(source), maxlength); }

    ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬


    Da mir die explode-Funktion aus PHP sehr gefehlt hat, habe ich sie nachgemacht. Es gibt noch eine andere im offiziellen SA-MP Forum, die auch Anführungszeichen unterstützt und darin eingeschlossene Strings als ein Wort betrachtet, damit kann meine Funktion leider nicht dienen. Dafür ist bei meiner die Größe des Arrays sowie auch die Länge der einzelnen Teile unabhängig wählbar. (Damals hatte ich noch kein strcpy, daher ist alles noch mit strmid gemacht)
    explode: Teilt ensemble an den Stellen, an denen separator vorkommt und returnt alle Teile in pieces.

    stock explode(const separator[], const ensemble[], pieces[][], piecesize=sizeof pieces[])
    {
    new i, p1, p2;
    new addend;

    p1 = strfind(ensemble, separator);
    p2 = strfind(ensemble, separator, false, p1+1);
    addend = strlen(separator);

    if(p1 == -1)
    { strmid(pieces[0], ensemble, 0, piecesize, piecesize); }
    else
    {
    strmid(pieces[0], ensemble, 0, p1, piecesize);

    for(i=1; p2>-1; i++, p1=p2, p2=strfind(ensemble, separator, false, p1+1))
    { strmid(pieces[i], ensemble, p1+addend, p2, piecesize); }

    strmid(pieces[i], ensemble, p1+addend, strlen(ensemble), piecesize);
    }
    }

    ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬


    Nicht lange nach explode brauchte ich auch das Gegenstück dazu. Hier ist leider ein Bytemaximum vorhanden, das man ja aber einfach erweitern kann.
    implode: Nimmt die Teile aus pieces und setzt sie - jeweils getrennt durch separator - zu einem String zusammen. (Umkehrung von explode)

    stock implode(const separator[], pieces[][], piececount=sizeof pieces)
    {
    new i;
    new ensemble[256] = "";

    for(i=0; i<piececount; i++)
    {
    if(!strlen(pieces[i]))
    { continue; }

    format(ensemble, sizeof(ensemble), "%s%s%s", ensemble, pieces[i], separator);
    }

    strdel(ensemble, strlen(ensemble)-strlen(separator), strlen(ensemble));
    return ensemble;
    }

    ▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬


    So, das war's für's Erste. Vielleicht veröffentliche ich irgendwann noch ein paar andere Funktionen.
    Ich kann nicht garantieren, dass alle Funktionen in allen Fällen einwandfrei funktionieren - natürlich sollten sie, aber Fehler kann es immer mal geben. Würde mich freuen, wenn ihr mir Probleme oder Fehler berichtet, falls ihr welche findet.

    Außerdem hat das Forum noch nicht allzu viele Mitglieder und für diese Mitgliederzahl genügend Admins, die aufpassen können.
    Viele Köche verderben ja bekanntlich den Brei und außerdem verderben zuviele „Hochrängige“ den Mitgliedern die Lust, weil diese sich dann ausgeschlossen fühlen. ^^

    Und ein „Mod“ ist in Deinen Augen was?


    Meinst Du einen Forum-Moderator?
    Oder Modder (hauptsächlich Singleplayer) oder einen SA-MP Scripter?

    Kannste Dir auch selber zusammenmischen im Kopf:
    0xRRGGBBAA
    RR: Rot
    GG: Grün
    BB: Blau
    AA: Alpha (=Deckkraft; Je höher, desto undurchlässiger)


    Bei allen ist Minimum 00 (=0) und Maximum FF (=255). (Sind Hexadezimalwerte, könnt ihr mit dem Windows-Taschenrechner umrechnen, nachdem ihr dort unter „Ansicht“ den Punkt „Wissenschaftlich“ angewählt habt. Dann „Dez“ wählen, Zahl eingeben, z.B. 200 und dann „Hex“ wählen. Schon seht ihr den Hexwert von 200 (C8)).


    Und sonst gibt es so kleine Farbübersichten:
    http://de.selfhtml.org/diverse…ge/farbnamen_netscape.htm
    http://de.selfhtml.org/diverses/anzeige/farbpalette_216.htm

    Ich bin definitiv dafür, dass wir das bereits bestehende Wiki verwenden und einfach nur die Seiten auf Deutsch übersetzen. Der Vorteil ist, dass die Seiten vom Inhalt her bereits geschrieben und formatiert sind und man wirklich nur noch übersetzen muss.


    Habe nun von Y_Less erfahren, dass Mike der zuständige Developer für's Wiki ist, habe von ihm aber bis jetzt nicht mehr als ein kurzes „Hi“ gelesen. (Danach hat er nicht mehr geschrieben...)


    Unter http://wiki.sa-mp.com/wiki/Main_Page_DE kann man schon die deutsche Übersetzung der Wiki Startseite vorfinden, Einführung wurde schon komplett übersetzt und auch richtig verlinkt auf der deutschen Hauptseite.


    Einigen sollten wir uns auf jeden Fall darauf, dass wir, nicht wie die anderen Übersetzer, einfach ein _DE an jeden englischen Seitennamen hängen, sondern diesen komplett mitübersetzen. Dann haben die deutschen Seiten wenigstens auch Deutsche Titel. (Main Page können wir ja ruhig mit _DE lassen)


    Edit:
    Außerdem sind die Wiki-Autoren gerade dabei eine neue Function-List zu machen. Wenn wir das alte Wiki verwenden, können wir also jede Menge Arbeit sparen. :P :evil:



    Edit, um Followup zu vermeiden:


    Mike hat mir endlich geantwortet und einen Deutsch-Link auf die Main Page gesetzt.
    Die Seitennamen sollen aber in Englisch bleiben, also z.B. Introduction_DE anstelle von Einführung als Seitenname. (Hat er mir so gesagt, also nicht anders machen! ^^)
    D.h. wir haben jetzt freie Fahrt. ^^


    Zum Hinzufügen eines Deutsch-Links im „Andere Sprachen“-Bereich unten links muss man an's Ende der Seite [[de:<seitenname>]] schreiben, also z.B. [[de:Introduction]].
    Genauso auch mit den anderen Sprachen (Bsp.: [[fr:Introduction]]).