Beiträge von Jeffry

    Also die Speicherung sieht mir recht denkwürdig aus, mach das so:


    format(var, 256, "AH_Mats=%d\n", Carlist[playerid][h][Cmats]);
    fwrite(Carfile,var);
    Das macht mehr Sinn.



    Du willst einen Befehl, mit dem du Material in ein Auto legen kannst, also praktisch so:
    /legematerialinauto [Auto] [Menge]


    Oder wie? Falls so, dann fange doch erst mal mit dem Befehl selbst an und poste dann nochmal falls du den Befehl nicht zum Laufen bekommst, dann können wir dir den Befehl vervollständigen, das macht mehr Sinn als wenn ihn dir einfach jemand hinklatscht.

    Mit gewissen Einschränkungen, sicherlich. Kommt darauf an was du unter Skin Shop verstehst. Wenn du sowas schon im Code hast, dann auf jeden Fall, muss eben geändert werden. (Soweit ich weiß gehen die Kleidungs-Läden in SA-MP nicht, falls du die meinst.)


    Skin speichern kannst du ja mit GetPlayerSkin. Dann kannst du an den Schrank einen Checkpoint setzen, der eine Art selbst gemachte class Selektion öffnet, in der du über anklickbare Textdraws einen Skin weiter bzw einen zurück gehst (SetPlayerSkin). Die Skins die er schon hat speicherst du in einer datei oder Datenbank.


    Für alles Weitere musst du deine Fragestellung konkretisieren, falls nötig.

    Equ: (und an alle Weiteren die das lesen)


    Ich habe hier kurz was geschrieben, mit dem du alle Befehle in Sekundenschnelle ausgegeben bekommst:


    (Siehe Anhang)



    Einfach den Code (oben) als .vbs Datei speichern (oder im Anhang runterladen), in den Gamemodes-Ordner (bzw. Filterscripts, wo du es eben haben willst) einfügen, Doppelklick und schon hast du dort die AlleBefehle.txt stehen, darin alle Befehle. :thumbup:



    Viel Spaß damit!



    (Wäre nett wenn der Ein oder Andere mir ein Feedback geben könnte.)

    Schau in die jeweiligen enums.


    Verleih: RentVeh_daten
    ATM: ATMuTelefonzellenInfo


    Falls es dann noch nicht klar ist, poste diese enums und den Code mit dem du die Verleihe bzw die ATMs erstellst.

    Hast du den Code 1:1 so übernommen? Wenn nicht mach das bitte, und wenn doch, dann füge bitte jeweils unter den Format's einen print hin und poste was im Server Log steht.


    Beispiel:
    print(String4);

    Wie ich schon sagte...

    Wenn das Total Kills nicht in jeder Zeile angezeigt werden soll, musst es aus der Schleife nehmen und vor TextDrawSetString dem String anfügen.


    Hier:
    forward Endstand();
    public Endstand()
    {
    new String[24], String2[24], String3[1024], String4[1024];
    format(String, 24, "%s", TName1);
    TextDrawSetString(Textdraw0, String);
    format(String2, 24, "%s", TName2);
    TextDrawSetString(Textdraw1, String2);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(GetPlayerSkin(i) == T1Skin1 || GetPlayerSkin(i) == T1Skin2 || GetPlayerSkin(i) == T1Skin3)
    {
    new Name[24];
    GetPlayerName(i, Name, 24);
    format(String3, sizeof(String3), "%s%s Kills: %d Tode: %d\n", String3, Name, Kills[i], Tode[i]);
    }
    }
    format(String3, sizeof(String3), "%s\nTotal: Kills: %d Runden: %d", String3, Totalkillst1, Roundst1);
    TextDrawSetString(Textdraw2, String3);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(GetPlayerSkin(i) == T2Skin1 || GetPlayerSkin(i) == T2Skin2 || GetPlayerSkin(i) == T2Skin3)
    {
    new Name2[24];
    GetPlayerName(i, Name2, 24);
    format(String4, sizeof(String4), "%s%s Kills: %d Tode: %d\n", String4, Name2, Kills[i], Tode[i]);
    }
    }
    format(String4, sizeof(String4), "%s\nTotal: Kills: %d Runden: %d", String4, Totalkillst2, Roundst2);
    TextDrawSetString(Textdraw3, String4);
    return 1;
    }

    Wie gesagt, eventuell musst du die Größe anpassen, hast du das gemacht bzw geprüfte, ob die Größe stimmt?


    Wie sieht es denn genau aus, hast du ein Bild davon? (http://www.tinypic.com)


    Wird das public auch aufgerufen, hast du das geprüft?


    Hast du den Code auch mal debuggt, das heißt die Variablen via print auszugeben?

    forward Endstand();
    public Endstand()
    {
    new String[24], String2[24], String3[1024], String4[1024];
    format(String, 24, "%s", TName1);
    TextDrawSetString(Textdraw0, String);
    format(String2, 24, "%s", TName2);
    TextDrawSetString(Textdraw1, String2);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(GetPlayerSkin(i) == T1Skin1 || GetPlayerSkin(i) == T1Skin2 || GetPlayerSkin(i) == T1Skin3)
    {
    new Name[24];
    GetPlayerName(i, Name, 24);
    format(String3, sizeof(String3), "%s%s Kills: %d Tode: %d Total: Kills: %d Runden: %d\n", String3, Name, Kills[i], Tode[i], Totalkillst1, Roundst1);
    }
    }
    TextDrawSetString(Textdraw2, String3);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(!IsPlayerConnected(i)) continue;
    if(GetPlayerSkin(i) == T2Skin1 || GetPlayerSkin(i) == T2Skin2 || GetPlayerSkin(i) == T2Skin3)
    {
    new Name2[24];
    GetPlayerName(i, Name2, 24);
    format(String4, sizeof(String4), "%s%s Kills: %d Tode: %d Total: Kills: %d Runden: %d\n", String4, Name2, Kills[i], Tode[i], Totalkillst2, Roundst2);
    }
    }
    TextDrawSetString(Textdraw3, String4);
    return 1;
    }


    Eventuell musst du es noch an die Größe deines Textdraws anpassen. Wenn das Total Kills nicht in jeder Zeile angezeigt werden soll, musst es aus der Schleife nehmen und vor TextDrawSetString dem String anfügen.

    ShowPlayerDialog(playerid, DIALOG_FACTION, DIALOG_STYLE_LIST, "{FFFFFF}Die Fraktion", "Finanzen\nRangnamen\nFahrzeuge\nKasse", "Auswählen", "Abbrechen");


    Und dann bei OnDialogResponse unter DIALOG_FACTION:
    case 3: return OnPlayerCommandText(playerid, "/fkasse");

    Hallo zusammen,


    mir ist eben aufgefallen, dass es keine Möglichkeit gibt, eine Meldung zurückzuziehen, zumindest so lange, bevor es ein Moderator überprüft hat. Das wäre wirklich sinnvoll, da es gut vorkommen kann, dass man kurz später merkt, dass die eigene Meldung falsch war.
    Mir ging es gerade eben so, dass ich fälschlicherweise einen Post gemeldet habe, und erst danach gemerkt habe, das ich falsch lag weil ich einen Teil übersehen habe (Entschuldigung an die Moderatoren!).


    Wie gesagt, es wäre sinnvoll eine solche Option hinzuzufügen.



    Danke.



    Jeffry 8)

    Martey:
    public OnPlayerCommandText(playerid, cmdtext[])
    {
    if(!strcmp(cmdtext, "/zoll", true))
    {
    if(IsPlayerInRangeOfPoint(playerid, 10.0, 1729.86, 440.44, 30.65))
    MoveObject(zoll1, 1729.86, 440.44, 30.65, 0.02);
    SendClientMessage(playerid, 0xFFFF00FF,"Die Schranke schließt sich automatisch. Gute Weiterfahrt!");
    SetTimer("close", 5000, 0);
    GivePlayerMoney(playerid, -50);
    }
    return 1;
    }

    So meinst du das, ok. Ganz einfach:


    if(Supporter[playerid] == 1) format(string, sizeof(string), " %s(Supporter): %s", sendername, text);
    else format(string, sizeof(string), " %s: %s", sendername, text);


    Die Supporter Variable musst du eben mit der deinen ersetzen.

    Hallo,


    Dein erstes Problem verstehe ich nicht wirklich, kannst du das genauer ausführen?


    Zu deinem zweiten Problem:
    Setze bei SetPlayerChatBubble die Zeit (letzter Parameter). Zur Zeit hast du es auf 10 Sekunden (10000ms). Es geht dann automatisch weg. Wenn du es ganz weg haben willst, dann entferne einfach die Zeile mit SetPlayerChatBubble.

    Ich werde dir das Scripten nicht in aller Einzelheit erklären, daß ist auch nur schwer möglich, für jeden, aber ich gebe dir ein paar gute Tipps wie du dir es selbst sehr gut beibringen kannst, so habe ich es zumindest vor fast 5 Jahren gelernt.


    Du solltest dich zu aller erst mit den Grundlagen der Programmierung beschäftigen, bevor du anfängst einen vorhandenen Gamemode zu "vergewaltigen", dazu gehört nämlich ein Grundwissen, welches bei dir offensichtlich fehlt.


    Ich erkläre dir mal wie du am besten lernen kannst, damit du in Zukunft auch verstehst, was ein Code ist, und wann du welchen Code benutzen musst, weil so hat das doch recht wenig Sinn, wenn du nicht mal weißt welchen Code du uns zeigen sollst um das Problem zu beheben.


    Also ich habe PAWN gelernt, indem ich mir den LAdmin4v2 (damals sehr neu) genommen habe, und versucht habe, die einzelnen Teile zu verstehen. Dann habe ich einfach losgelegt, und überlegt, welcher Teil das tut, was ich will. Den Code hab ich mir dann angeschaut, und so für den neuen Code verändert, dass er seinen Zweck erfüllt hat.


    Wichtig: Fang klein an, jeder tut das, nimm nicht gleich einen Gamemode und verunstalte den, du wirst nichts kapieren. Ich arbeite nun über 4 1/2 Jahre mit PAWN und mein Wissen ist noch lange nicht komplett, im Gegenteil.
    Falls dir jemand sagt, du sollst dir die PAWN Doc durchlesen, lass es, genauso rate ich dir davon ab das wiki in allen Einzelteilen durchzulesen. Du wirst es nicht verstehen. Das kannst du in 3 Jahren machen, wenn du es verstehst, und selbst dann wirst du den Großteil in der Pawn Doc nicht auf Anhieb verstehen.


    Noch was: Ausprobieren. Du kannst nichts kaputt machen. Das einzige was passieren kann, ist dass du Errors bekommst. Na und? Für was gibt es STRG+Z. Einfach probieren, wenn du nicht weiter kommst, lass es, oder frag nach Hilfe, sofern es im kleinen Bereich ist.


    Learning By Doing nennt sich das. Nicht aufgeben, einfach machen machen machen. Das muss nicht immer perfekt sein, und muss auch nicht immer Sinn ergeben, hauptsache du machst was. Zum Anfang kannst du dir z.B. vornehmen, einen FilterScript der hier im Forum veröffentlicht wurde (einen einfachen) nachzumachen. Musst ihn ja nicht auch veröffentlichen, aber nur zur Übung einfach nachmachen. Wenn du hängst, kannst du ja nachsehen, was falsch ist.


    Meiner Meinung nach besser als alles andere.


    Wie machst du das?
    Du suchst dir einen Filterscript der irgendwas macht, sei es ein Auto Spawn Menu.
    Schau dir zuerst mal an, was der FilterScript denn machst (z.B. ein Auto-Menu, um Auto's zu spawnen). Dann überlegst du, was du denn alles dafür brauchst, suchst dir die Funktionen zusammen (Google, SAMP Wiki) und legst los so ein Menu zu erstellen. Wenn du irgendwo hängst, kannst du einen Blick in den Code werfen, und ein paar Zeilen, die du denkst zu verstehen abschreiben, dann siehst du ja was passiert.
    Am Besten ist es aber, wenn du es ganz ohne in den Code zu schauen hin bekommst, deshalb fang mit leichten Dingen an.
    Bis du erst mal richtig rein findest vergehen mit Sicherheit 1-3 Monate! Also nicht verzagen, du wirst am Anfang ziemlich oft stecken bleiben und auf die Nase fallen (ist wie laufen lernen). Ich weiß das von mir. Wenn du einmal drinne bist, dann gehts jeden Tag besser.


    PS: Ich hab es ganz alleine gelernt. Die einzige Hilfestellung die ich damals hatte war ein /kill Command aus 6 Zeilen code, den mir jemand gemacht hat. Den gebe ich dir auch:
    if(strcmp(cmdtext, "/kill", true) == 0)
    {
    SetPlayerHealth(playerid, 0.0);
    SendClientMessage(playerid, 0xFF0000FF, "Du hast dich selbst getötet.");
    return 1;
    }
    Probiere aus, mit diesem Code klar zu kommen.
    Das fügst du im callback OnPlayerCommandText ein. Dann auf den Compiler drücken, und Server neu starten.
    Wenn du damit klar kommst, gehe weiter und versuche Dinge selbst zu erstellen.


    Und am wichtigsten: Immer dranbleiben!
    Viel Erfolg!