Beiträge von IPrototypeI

    FEHLER: C:\Users\Denis\Desktop\INDEPENDENT ROLEPLAY\gamemodes\erporiginal - Kopie.pwn(41540) : error 029: invalid expression, assumed zero


    zeile: case default:{fraktname="FEHLER";}


    EMM .. und wenn ich diese entferne geht compilen aber InGame steht wieder nur Leader .. :(( kann das den keiner fixxen :D


    Das würde ich nicht einfügen da dies nur hirnlose scheiße ist
    //edit mal so nebenbei du benutzt schon das sscanf 2.8.1 Plugin und nicht die reine Funktion davon.


    stock GetFraktion(frak){
    new fName[20]="Unbekannt";
    switch(frak){
    case 1: fName="LSPD";
    case 2: fName="SFPD";
    case 3: fName="Armee";
    case 4: fName="Rettungsdienst";
    case 5: fName="La Cosa Nostra";
    case 6: fName="Yakuza";
    case 7: fName="Regierungs";
    case 8: fName="Hitman";
    case 9: fName="News Reporter";
    case 10: fName="Taxi Company";
    case 11: fName="Fahrschul";
    case 12: fName="Groove Street";
    case 13: fName="Ballas";
    case 14: fName="Hells Angels";
    case 15: fName="Aztecas";
    case 16: fName="LVPD";
    case 17: fName="Terroristen";
    case 18: fName="ADAC";
    }
    return fName;


    }


    so wäre der Aufbau korrekt


    zu dem sollte pLeader oder sLeader und wie auch immer du es genannt hast einen wert zugeweißen werden daher muss das
    Query stimmen also die jeweiligen Spalten müssen vorhanden sein.

    IPrototypeI:
    bin grad etwas verwirrt^^
    Also bools und 1bit arrays ist das das gleiche oder was unterschiedliches?


    Sie können beide nur 1 wert speichern das ist eine gemeinsamkeit , nur 1 Bit- Arrays benutzen wie der Name schon 1 Bit und keine 8 Bytes was 32 mal soviel Memory ist.
    8 Bytes sind 32 Bits .

    Okay danke dir daführ :)


    Dafür kannst du nur Werte von 0 - 254 drin speichern da eine Zelle 1 Byte groß ist also 4 Bits.
    Ich hatte es ja bereits ihrgend wo geschrieben wenn man nur 2 Werte 0 und 1 speichern will so sollte man 1Bity-Arrays verwenden.
    Da auch boolesche Variabeln 8 bytes verbrauchen wie ein integer.

    Nun gut wi eman will :D


    ein kleiner Trick

    new val;
    if((val = 10) == 10)printf("%d",val);


    Auch in einer if abfrage kann man variabeln setzen


    was ich auch ab und zu sehe ist das hier


    new a= 1;
    if(a< 10 && a> 0)


    kann man vereinfachen
    if( 0 < a < 10)


    Das # ist nur unnötige Schreibarbeit, man verwendet # wenn man "" nicht verwenden kann.


    Beispiel:
    #define A "Test3"
    #define B(%0) print(%0#\32;#A)

    Hey
    Vielen Dank, hast mir sehr geholfen :)!


    edit


    Ich kann den DialogText nicht formatieren, also bspw. den Namen, die ID o.ä. auslesen lassen, oder? :S
    @IPrototypeI:


    warum solltest du den Dialog string nicht formatieren können


    format(GermanDialoge[0][DContent],256,"Der Account %s wurde nicht gefunden!\nBitte gebe dein gewünschtes Passwort ein um dich zu registrieren!",PlayerName(playerid));");


    du kannst dort nicht sizeof verwenden das hab ich dir schon geschrieben in der Erklärung von der Benutzung der MySQL r7 plugins.

    Weil im Gamemode noch mehr Objekte kommen werden wahrscheinlich. Desshalb ist ein Array doch eine einfache Variante, so kürzer der Code heißt nicht das er um so verständlicher ist.


    Ich finde das eintragen via Tastatur die fortführung des Arrays nicht mehr human. Zu dem ist das verschwendeter Memory okay nun gut wenn man das mit dem Plugin von BigETI macht dem Memory access plugin kannst du den dynamischen Speicher danach löschen. Aber so wird es als globales Array in der amx gespeichert oder als ungenutzter Speicher im heap space sollte das innerhalb definiert sein.

    Warum schreibt ihr ihm so umständliche Lösungen einen Konverter oder dort dein variante via Array.


    Das ganze geht auch via Define



    #define _Height 10.0
    #define CreateObjectEx(%0,%1,%2,%3,%4,%5,%6) CreateObject(%0,%1,%2,%3+_Height,%4,%5,%6)


    obwohl nichtmal hier das zusätzliche define nötig ist, jedoch das ist doch jedem selbst überlassen


    #define CreateObjectEx(%0,%1,%2,%3,%4,%5,%6) CreateObject(%0,%1,%2,%3+10.0,%4,%5,%6)


    nun braucht man nur noch das ganze via Replacefunktion von Pawno zu ersetzen

    Hey,


    da ich eien gewisse Ordnung mag, möchte ich (fast) alle Dialog Paramter in einem Array machen.


    Nur kommt da ein Error argument type mismatch (argument 2)

    Das ganze würde so auch niemals gehen da dies als string gewertet wird.


    Den selben error erzielst du auch mit
    ShowPlayerDialog(playerid,"","",GermanDialoge[0][2],GermanDialoge[0][3],GermanDialoge[0][4],GermanDialoge[0][5]);


    Der Datentyp für das jeweilige argument passt nichz zusammen daher benutz doch ein enum


    enum dialog {
    Did,
    DStyle,
    DHeadline[64],
    DContent[256],
    DButton1[20],
    DButton2[20],
    };
    new GermanDialoge[1][dialog]= {
    // {DialogID,DialogStyle"Überschrift","Inalt","Button1","Button2"}
    {diaRegistration, DIALOG_STYLE_PASSWORD,"Registration","Der Account wurde nicht gefunden!\nBitte gebe dein gewünschtes Passwort ein um dich zu registrieren!","Registrieren","Abbrechen"}
    };


    und um dir die verwendung zu vereinfachen ein einfaches define

    #define ShowDialog(%0,%1) ShowPlayerDialog(%0,GermanDialoge[%1][Did],GermanDialoge[%1][DStyle],GermanDialoge[%1][DHeadline],GermanDialoge[%1][DContent],GermanDialoge[%1][DButton1],GermanDialoge[%1][DButton2])

    #define Set4BitBlock(%0,%1,%2) %0 |= %1<<(%2*4)
    #define Reset4BitBlock(%0,%1) %0 &= ~(0xF<<(%1*4))
    #define Compare4BitBlock(%0,%1,%2) (!!((%0)&(%1<<(%2*4))))


    xD ein bissle fun mit bit manipulation in dem fall kann man in einem integer 4 Bits reservieren
    also somit in einem integer 8 verschiedene werte von 0 - 15 unterbringen.
    Das ganze kann man auch erhöhen 8,16 bits oder verringern auf 1,2 bit/bits





    new bool:val;
    val |= true;
    val |= true<<1;
    val |= true<<2;
    printf("%b",val);


    Also bei PAWN ist das nicht so auch ein bool verwendet 4 bytes wie ein Integer , da ist die Verwendung von char sinnvoller und verwendet nur 1 Byte.
    Was hier am meisten sinn macht ist die verwendung von bitoperatoren und das setzen einzelner werte also daher bitarrays oder bitvariabeln was auch möglich ist.

    Und wie schreibe ich am besten die ganzen befehle?


    Du benutzt zum ersten ein vernünftigen Commandprozessor , wenn du konstante werte weißt solltest du diese auch benutzen und was den CPU schohnt ist wenn du
    direkt beim verbinden den namen ausließt da du bestimmt den Namen in deinem Enum als string enthalten hast.



    Commandprozessoren: pcmd, zcmd, ycmd oder die CMDProzessor-Plugins.

    Womit du am schnellsten dein skript optimierst ist wenn du MAX_PLAYERS deiner Slotanzahl anpasst


    #undef MAX_PLAYERS
    #define MAX_PLAYERS Wert


    da wofür 500 Tellen benutzen bei einem array oder alle 500 Spieler durchgehen wenn diese niemals connecten/ auf den Server können wenn der Server 50 Slots hat.


    Was auch viel Memory spart ist die verwendung von Bit-Arrays


    am besten schaust du dir mal das an


    http://forum.sa-mp.com/showthread.php?t=57018

    Als erstes vergewisserst du dch das du deine Objekt e nicht via createobject laufen lässt sondern über die von deinem Streamer da du bestimmt den von Incognito benutzst zu CreateDynamicObject danach fügst das ein
    Streamer_MaxItems(STREAMER_TYPE_OBJECT, 1000); ein standardmäßig ist es auf 500 gestellt