Beiträge von [DT]Sniper

    Ja, das wäre eine Möglichkeit. Man müsste dann eben noch einen Befehl erstellen, der bei Bedarf die Daten neu aus der Datenbank ausließt.
    Allerdings kommt es darauf an, wie viele Nachrichten man hat, denn man muss beachten, dass man ja für jede Nachricht dann Speicherplatz in Form eines Arrays reservieren muss, und das kann viel werden, allerdings denke ich, dass das kein Problem werden sollte, da keiner 1 Million Nachrichten hat.

    Ist zwar auch nicht ganz so performant wie es direkt in den Code zu schreiben, allerdings hat man die Möglichkeit die Nachrichten im laufenden Betrieb anzupassen, das kann man also durchaus so machen, da der Nutzen dem Verbrauch überwiegt.
    Das wäre für ein mehrsprachiges System sicherlich eine der besten Möglichkeiten.


    Ich habe da noch nen inlcude von mir was ich gerne benutzte habe es mal angehangen, mit deisem ist es auch möglich eingefügte Variablen zu verschieben etc. und ist somit nicht an dem normalen Format gebunden.
    Das ganze läuft über files. Es hat ein paar kleine Ahnnähmlichlkeiten, so kann mann mehrere Files nutzen um es übersichtlich zu halten und man kann auch direkt Wörter oder ähnliches aus anderen Files hineinschreiben.


    Hier mal ein wenig Beispielcode:
    Herausholen eines Textes und direkt Formatieren mit Varbiablen:
    new lstr[2][126];
    GetLangVar(LANG[0],"ChatP","%sPlayer% %sText%",lstr[0],sizeof(lstr[]),GetName(playerid),text),//LANG ist ein Array indem die sprachen als 2 Buchstabige Abkürzungen stehen: In diesem Fall "DE" und "EN"
    GetLangVar(LANG[1],"ChatP","%sPlayer% %sText%",lstr[1],sizeof(lstr[]),GetName(playerid),text),
    SendClientMessage(playerid,COLOR_WHITE,lstr[SpielerInfo[playerid][pLang]]);


    Auszug der DAYZ_DE.txt: (DAYZ kommt durch ein define welches oberhalb der inculde liegt: #define DT_lf_prefix "DAYZ" )

    Code
    ChatP={A0A0A0}%sPlayer% sagt: {FFFFFF}%sText%
    ChatA={FF0000}%sPlayer% sagt: {FFFFFF}%sText%


    Auszug der DAYZ_EN.txt

    Code
    ChatP={A0A0A0}%sPlayer% tell: {FFFFFF}%sText%
    ChatA={FF0000}%sPlayer% tell: {FFFFFF}%sText%


    Einen Dialog mit format erstellen und Texte aus einer anderen Datei holen:
    new string[126];
    new tmp0[2][45];
    GetLangVar(LANG[SpielerInfo[playerid][pLang]],"Dia:Regist","",tmp0[0],sizeof(tmp0[]));
    GetLangVar(LANG[SpielerInfo[playerid][pLang]],"Dia:Regeln","",tmp0[1],sizeof(tmp0[]));
    GetLangVar(LANG[SpielerInfo[playerid][pLang]],"Dia:RegistText","%sIP%",string,sizeof(string),GetIP(playerid));
    ShowPlayerDialog(playerid,DIALOG_REGISTER,DIALOG_STYLE_PASSWORD,tmp0[0],string,tmp0[0],tmp0[1]);


    Auszug der DAYZ_DE_Dia.txt:

    Code
    Regeln=Regeln
    Regist=Registrieren
    RegistText={FEFEFE}Bitte wähle ein Passwort um dir einen {969696}Account {FEFEFE}zu erstellen!%n%Deine IP {969696}%sIP%{FEFEFE} wird aus Sicherheitsgründen gespeichert.
    %h%%n%%n%Mit der Registrierung stimmst du automatisch unseren {969696}Regeln{FEFEFE} zu.


    Auszug der DAYZ_EN_dia.txt

    Code
    RegistText={FEFEFE}Please choose a password to create an {969696}account{FEFEFE}!%n%Your IP {969696}%sIP%{FEFEFE} will be logged for security.
    %h%%n%%n%By registering you agree to our {969696}rules{FEFEFE} automatically.


    Erläuterung:
    %n% beginnt eine neue Zeile im script wie \n
    %h% benutzt diese Zeile zur vorherigen zeile


    Erstellen eines Dialogs ohen Format direkt mit der Include:
    new tmp[45];
    GetLangVar(LANG[SpielerInfo[playerid][pLang]],"Kick:PermBan","",tmp,sizeof(tmp));
    ShowPlayerLangDia(playerid,DIALOG_BAN,DIALOG_STYLE_MSGBOX,LANG[SpielerInfo[playerid][pLang]],tmp,"Kick:PermBanT","Dia:ButOk","");


    Auszug aus der DAYZ_DE_Kick.txt

    Code
    PermBan={FFFFFF}Permanenter Ban
    PermBanT={FFFFFF}Du wurdest von diesem Server {FF000F}permanent {FFFFFF}gebannt!


    Einige erklärungen zu den Tags:


    Feste Tags:
    %n% neue zeile wie bei \n
    %h% am anfang einer zeile: diese Zeile gehört zur vorhergegangenen Zeile (kann mehrmals eingesetzt werden)


    Interne Tags:
    %xIwas% Ruft den Text Iwas aus den Sprachdateien auf und baut ihn ander stelle ein.
    Beispiel:
    DAYZ_DE.txt:

    Code
    KeinBenzin=Du hast kein Benzin für die %xItem:Kettens%!


    DAYZ_DE_Item.txt:

    Code
    Kettens=Kettensäge


    Externe Tags für Variablen:
    diese sind für Format und funktionieren ähnlich, nur dass man den Variablen Namen gibt.
    %sText%
    %dNummer%


    entscheidend ist der Aufbau:
    % - Identifikation -Name - %
    als Identifikation gibt es nur:
    d - Nummer
    f - Float
    s - String

    Willst du die Kills der Top 5 Spieler oder willst du immer den Spieler einer gang mit den größten kills?


    Wenn ja brauch ich einen code schnippsel in dem ich sehe was für variablen ein Spieler hat wen er im gangwar ist und wie ich die andere Frak herausfinden kann gegen die gekämpft wird.

    Aber zu ner eigenen Insel sei gesagt, dass dies nicht einfach umzusetzen ist und sehr sehr viel Arbeit und viel Frust bedeutet. Denn ab einer gewissen Anzahl von größeren Objekten (Hochhäuser, Berge oder große Landstriche) bekommt jeder User beim betreten des Servers einen Crash.


    zudem ibt es viele bugs welche auf Objecten exestieren. SO ist es beispielsweise nicht möglich abzuschleppen.

    Wenn die Tabelle stimmt deckt diese versicherung nur das ab was ne Garantie auch macht. Das heisst Herstellungsfehler etc. Es ist aber später sehr schwer Nachzuweisen ob es ein Hersteller Fehler war. Die gängigen Fehler die später passieren können sind ausgeschlossen.

    Ein paar sachen fehlen mir zu anklickbaren Textdraws:
    1. Textsize variert je nach align des Textdraws siehe dazu meinen Post sowie das Topic:
    Frage zu anklickbaren TextDraw's
    3. Man sollte die Textsize für Anklickbare textdraws mitr einer Boxdefinieren und die Box nacher manuell rauslöschen so hat man aber wenigstens einen wert Korrekt.

    Wenn das Interesse groß ist, könnte ich ein Tutorial machen wie man Theoretisch einen TriggerBot für SA-MP erstellen könnte.


    Du kannst gerne Tutorials zum Thema Reverse Engineering machen. Doch keine Hacks oder ähnliches auch keine game Cracking. Sowas unterstützen wir nicht.
    Aber ich selbst bin auch sehr an dem Thema Interessiert.

    dazu muss man aber nen guten server haben denn es geht etwas auf den speicher bei 30 user oder mehr


    Absoluter Schwachsinn, die Objecte werden ja nicht im Server geladen sondern beim Spieler er bekommt die belastung voll ab. für den Server sind es nur paar Zahlen im Arbeitsspeicher, dieser könnte milionen vertragen.


    SAMP unterstützt nur 1000 Objekte. Wodurch streamer nur 1000 Objekte gelichzeitig anzeigen lassen können.
    Jedoch sollte man nie an limit gehen, sonst gibt es probleme mit allen Objecten die sonst noch kömmen könnten (dynamisches ATM, Laserpointer an Waffen, Neon am Auto etc.).
    Sollte man dennoch viele Objecte haben so sollte für jedes Object eine Streamdistanz gewählt werden. da man einen Mülleimer nicht so früh sehen muss wie eine Wand oder einen Berg.

    Das bedeutet also, dass dieses Verfahren so gesehen alles in einen für uns Menschen verständlichen Code wiedergibt ?


    Nein, man kann nur Nachvollziehen wie das Programm Funktioniert um es NAchzubauen oder zu verändern oder Zusatzanwendungen zu schreiben (Wie Cheats etc.)

    Du meinst so wie bei den Erweiterungen des WCF? So etwas gibt es noch nicht, aber wenn jemand Interesse zeigt, können wir sicher etwas einbauen, das den selben Zweck erfüllt.


    Genau, das würde euch selbst auch helfen da ihr erweiterungen welche nicht für jeden Server Interessant sind anbieten könnt.


    Und somit Entwicklungskosten für einzelene Erweiterungen auf mehrere Nutzer umlegen könnt. SOó muss einer nicht so tief in die Tasche greifen, wenn er eine Erweiterung will die auch für andere Interessant sein könnten..

    Dies kann mehrere Möglichkeiten haben. Ansich sollte man seinen Pc hin und wieder neu aufsetzen um ihn zu entlasten.
    Auch kann dein PC zu verstaubt sein was die Luftzuführ behindert etc.


    Leider kenne ich mich mit Laptops selber nicht so gut aus.


    aber ich bin sicher das der ein oder andere dir Tipps geben kann.

    Hast du eigendlich ne funktion eingebaut, mit der man "Erweiterungen" für das Cp schreiben kann ohne in deinen Daten selbst herumzufummeln?


    So hättest du auch die möglichkeiten Erweiterungen zu schreiben diese seperat zu verkaufen oder Erweiterungen auf Wunsch anzufertigen. Zudem bietet dass Nutzern welche selbst PhP können eine Möglichkeit das CP zu erweitern, ohne dass man bei Updates alles überprüfen muss was geändert wurde.


    Sonst sieht es super aus.