Beiträge von Kaliber

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums

    Nein, dass sind Argumente.
    Aufgerufene Funktionen haben Parameter, Funktionen selber haben Argumente
    *Hust* number of arguments...


    So ein enormer unterschied :pinch:


    Wir waren uns doch einig, das dies ein "anfänger" Tutorial sein soll.
    Was fängst du da mit Pointern an?
    Diese erklärst du nicht, sondern stellst sie hin.


    Es ist als wenn du einem Kleinkind ein Auto gibst.
    Das Kind weiß nicht was es damit machen soll.


    Ich hatte gehofft, dass mal ein wenig zu revolutionieren, damit man das nutzt anstatt forward und public :D


    Was sind dann Datenbanken?
    Sind die einfach da?
    Exestieren die in der Luft?


    Ja, wo sonst :wacko:


    Dini speichert schonmal keine Variablen.


    Wenn dem so wäre, dann wäre es eine Schande, es als Speicherungsart zur Verfügung zu stellen, wenn es keine Variablen speichert, bzw die Werte der Variablen...


    Auch .exe, wenn es dir Spaß macht


    Ja, das haben die Funktionen fopen etc so an sich, dass du da wirklich halt alles machen kannst :rolleyes:


    Datei öffnen/Schließen muss (und das bei z.B 600 Accounts,...)


    Ja, 600 Querys bzw nach maddins Tutorial > 600 Querys, sind ja viel besser :rolleyes:

    Dazu wäre allerdings noch ne Frage, ob der Code in Echtzeit bei beiden Seiten angezeigt wird, oder ob nur einer Zurzeit scripten kann?


    Haha :D


    Der Code ist für was völlig anderes gedacht :D


    Les dir das alles nochmal in Ruhe durch ;)

    Ich will aber, das man nur Num 2 Drücken kann wenn das Objekt "2677" dort auch ist.


    Es gibt leider kein GetObjectModel(objectid); Zwar kann man diese Funktion neu schreiben, musst nur CreateObject etc hooken, dennoch brauchst du das in dem Fall nicht.


    Gib dem Objekt 2677 also, wenn du es erstellt eine id, sprich new obj = CreateObject(2677,...); so und nun fragst du ab ob er in der Nähe von obj ist, mit GetObjectPos und IsPlayerInRangeOfPoint, kannst du das gut machen ;)


    mfg. :thumbup:

    //Edit4: Danke noch an Kaliber: für den Codeoptimierungslink.


    Du hast nich richtig gelesen.


    new PRaum [MAX_PLAYERS char][5];


    Das ist ein 2 Dimensionaler Array, hier kannst du kein char verwenden (hatte ich extra geschrieben).


    new bool:EinsGegenEins[MAX_PLAYERS] = false;


    Hier allerdings schon, das solltest du so machen:


    new bool:EinsGegenEins[MAX_PLAYERS char];


    Wie schon erwähnt dieses = false; ist überflüssig, da die Variablen in Pawn eh mit 0x00 initialisiert werden ;)


    mfg. :thumbup:

    & Verbesserungsvorschläge sind natürlich erwünscht.


    Dann gebe ich dir mal ein paar :)


    new Raum1 = 0;
    new Raum2 = 0;
    new Raum3 = 0;
    new Raum4 = 0;
    new Raum5 = 0;


    Nun, du solltest in deinem Script Arrays nutzen, das erleichtert dir so einiges, zudem spart es Platz und ist effektiver.
    Sprich das sollte so aussehen:


    new Raum[5];
    Dieses = 0; braucht man in Pawn bei der Deklaration der Variablen nicht, da sie automatisch mit 0x00 initialisiert werden.


    So Sachen wie unter OnPlayerSpawn, lassen sich viel verkürtzter darstellen, ich gebe dir mal ein Beispiel, wenn du Arrays benutzt hättest:


    public OnPlayerSpawn(playerid) {
    new rand = random(sizeof(RandomSpawnEGE));
    for(new i; i<5; i++) if(EinsGegenEins[playerid] || PRaum[i][playerid]) return SetPlayerPos(playerid, RandomSpawnEGE[rand][0], RandomSpawnEGE[rand][1],RandomSpawnEGE[rand][2]),GivePlayerWeapon(playerid, 24, 300);
    return 1;
    }


    Sprich, wir nutzen 5 Zeilen, anstatt 40 ;)


    Selbiges bei deinen Befehlen, z.B. dein /exit Befehl, bin jetzt zu faul, dass alles umzustellen, aber du kannst auf jeden Fall wie du oben siehst, sehr viele Zeilen sparen ;)


    if(PRaum2[playerid] == 1)return SendClientMessage(playerid, ROT, "Du bist bereits in einem Raum!");
    if(PRaum3[playerid] == 1)return SendClientMessage(playerid, ROT, "Du bist bereits in einem Raum!");
    if(PRaum4[playerid] == 1)return SendClientMessage(playerid, ROT, "Du bist bereits in einem Raum!");
    if(PRaum5[playerid] == 1)return SendClientMessage(playerid, ROT, "Du bist bereits in einem Raum!");


    Das hast du unter OnDialogResponse mehrere male verwendet, auch hier solltest du entweder Arrays + Schleife verwenden oder alles in 1ne if-Abfrage schreiben ;)


    Zum Schluss noch eins, ich rate von der Funktion ReturnUser ab ;)


    mfg. :thumbup:

    Das ist nur möglich, wenn du das auf mehrere Messages ausgleichst ;)


    Sprich wenn es mehr als 128 Zeichen sind, fängst du den rest ab, und packst den in eine neue SendClientMessage.


    Aber andernfalls funktioniert das nicht ;)


    mfg. :thumbup:

    Um dich ein wenig zu trollen es heit SQLite


    :rolleyes:


    MySQL hat gewisse vorteile zu SQlite und zwar was die menge an daten angeht da ist MySQL schneller bei einer geringeren Menge wiederrum SQLite.


    Von was für einer Menge reden wir hier...?


    Was die verwendung von MySQL angeht ist es besser MySQL für ein UCP zu nutzen als bei inis über den ftp zu gehen da bei MySQL eine geringere belastung vorhanden ist im bezug auf den Server.


    Nun, das werde ich mal ergänzen ;)


    mfg. :thumbup:

    Magst noch nen Korrektes Tutorial machen oder Erklärung Datenbanken, diese zu benutzen Speichern/laden ? könnt eich sehr gebrauchen derzeit..


    Maddin hat doch eins für Einsteiger gemacht, obwohl ich das nicht empfehle wegen den schlechten Querys, aber gut und ausführlich erklärt ist es ;)


    mfg. :thumbup: