Einige Fragen [ERNSTGEMEINT]

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo,Da ih aus dem Englichen Wiki nicht ganz Schlau werde,wollte ich hier mal Fragen ob mir huier ein wenig etwas Erklähren kann ?


    1.Was ist ein String,und weshalb brauch man ihn ?
    Ich weiß das man ihn bei nem Message Befehl brauch wie "%s hat %s Getötet.);Playername[playerid" oder so,das verstehe ich nicht,und für was ist die nummer hinter dem String
    z.B.
    String[128]???


    2.Für was sind Enums und Forwards und New's ?


    3.Werden Folgen,weiß nicht mehr genau die Restlichen Fragen ;D


    Danke aber im Vorraus


    Dr.Turk

  • 1. ein string ist eine zeichenkette, meistens steht er zeischen 2 "
    bsp: SendClientMesasge(playerid,FARBE,"Ich bin ein string/ eine zeichenfolge");
    die nummer 128 wenn du den string definirst steht dafür, wie viele buchstaben er hat
    Bsp: Möchtest du nur Hallo also variable speichern brauchst du ein string mit maximal 5 Zeichen.
    2.
    Mit einem New kanst du dinge definiren z.b. variabeln die du später im Script brauchst.
    mit einem forward kannst duein public einleiten bzw definiren.
    ein enum ist schweer zu erklären, es ist wie wenn du verschiedene variabeln zusammen fassen willst.
    3. Frag nur

  • Also um deine Fragen zu beantworten ;)


    Pawno ist eine Abart von Visual C++ und dort definiert man Zahlen mit int und Variablen mit Wörtern mit String ;)


    hinter dem String steht der ARRY oder auch string[MAX_STRINGS]; also die maximale Anzahl von Buchstaben die in der Variable enthalten sein können...


    Forward definiert eine public Funktion;
    new definiert eine normale neue Variable;
    enum ist einfach eine schleife die eine neue naja wie soll man das nennen....okay, komisch das zu erklären aber es ist einfach ein neuer Begriff mit verschiedenen Arrays ;)


    mfg. :thumbup:


    (Korrigiert mich ist nicht alles exakt formuliert :D)

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Code
    Was ist ein String ?


    Ein String ist ein Array/Kette aus Zeichen, zB so:


    new Name[6] = {H,a,l,l,o,\0}


    Am Schluss findest Du immer ein Endzeichen, welches sagt, dass der String sozusagen fertig ist


    Code
    Was ist die Zahl da


    Die Zahl ist für die Zeichenlänge. Diese ist immer 1 Zeichen länger, als Du das sehen kannst, denn es gibt ja wie oben genannt dieses Endzeichen:



    new Name[6] = {H,a,l,l,o,\0}
    [6] = 6 Zeichen


    Code
    Was sind Enums


    Enums sind wie Karteiordner. Du hast zB für einen Spieler 5 Variabeln. Damit Du nun nicht 500 Mal diese Variabel schreiben musts, kannst Du ein Enum erstellen. Dies geht nicht nur für Spieler, sondern auch für folgende Sachen:


    MAX_PLAYERS
    MAX_VEHICLES
    MAX_PICKUPS
    MAX_OBJECTS


    Code
    Was sind new's


    new deklariert eine neue Speichervariable, zB so:


    new int = 1 ; // Erstellt eine bespeicherbare Zahl
    new string[6]; // Erstellt einen beschreibbaren String


    Ich hoffe, ich konnte das Ganze mal so auf die Schnelle klären, sonst frag ruhig nochmals ;)
    MfG dUDA


    Edit
    Kaliber
    Ich denke mal, Pawn ist eher eine Abart von C und Small C, sicher nicht von C++, okay es hat Elemente von C++, aber das kommt daher, das C++ Elemente von C hat. Wenn Du mir nicht glaubst, solltest Du mal das hier lesen:


    http://www.compuphase.com/pawn/Pawn_Language_Guide.pdf

  • Auch wenn die Fragen schon beantwortet wurden, möchte ich auf dieses Tutorial verweisen, dort erkläre ich ziemlich ausführlich die Variablentypen, die Funktionsweise und warum es ist wie es ist.

    Moderator der Bereiche: Coding, Vorstellungsrunde und Handelsecke. Über Verwarnungen, falls du zu den Wenigen gehörst, die eine Verwarnung von mir erhalten haben, kannst du jederzeit mit mir reden, sofern der Umgangston stimmt.


    expect us. / unkompetent. Das neue dynamisch. / easy-stripping.net - coming soon! / "9§. the entire website bestands out of english." / Vollprofi in allem, wo gibt und noch mehr; kann auch OOP.
    Kleine Coding-Frage? Schau doch in #dev im IRC vorbei, wir können dir sicher helfen.


    Ich bin für Aufträge im Bereich der Webentwicklung (z.B. User Control Panel) zu haben. Kontaktiere mich diesbezüglich einfach in einer privaten Nachricht mit deinen, möglichst konkreten, Vorstellungen.


    lesen.denken.posten. - [22:54:14] <Goldkiller2> früher gabs immer so coole user da stand in der signatur "lesen.denken.posten."


    Mafia 2 Multiplayer (m2mp.de) - Eine kostenlose Modifikation für Mafia 2, die es, ähnlich wie SAMP, erlaubt über das Internet oder LAN mit bis zu 1000 anderen Spielern zu spielen.

  • Jetzt interessiert mich aber mal brenned, was folgendes ist:
    enum (+= 1)
    {
    e_Flag_None = 0,
    e_Flag_Race,
    e_Flag_DM_SHIP,
    e_Flag_DM_WAR,
    e_Flag_DM_HANGAR,
    e_Flag_DM_SNIPER,
    e_Flag_BountyHunter,
    e_Flag_SprengMeister,
    e_Flag_Trucking,
    e_Flag_Derby,
    e_Flag_Parcour,
    e_Flag_Fallout,
    e_Flag_Stunting
    }



    public OnFilterScriptInit()
    {
    new
    test;
    test = 1;
    if( test == e_Flag_Race ) {
    printf("test == e_Flag_Race");
    }
    else {
    printf("test != e_Flag_Race");
    }
    return 1;
    }

    Ist das jetzt etwa kein enum mehr ? Eigentlich sagt das Wort schon,was es konkret ist.
    Aufzählungstyp

    Zitat

    Mit enum können Aufzählungstypen definiert werden. Dazu gehören Wochentage oder Farben. Den Elementen eines Aufzählungstyps werden Namen zugeordnet, obwohl sie intern natürlich als Zahlen codiert werden.


    Trifft es eigentlich ganz gut, hier mal eine Verdeutlichung:
    enum e_Test {
    a, // 0 da Index bei 0 startet
    b, // 1
    c, // 2
    d[3] // 3 - 6
    }


    new
    Test[e_Test];

    public OnFilterScriptInit()
    {
    Test[a] = 5;
    printf("Test[a] = %d",Test[a]);
    printf("Test[ e_Test:0] = %d", Test[ e_Test:0] );
    printf("Test[0] = %d", Test[0] ); // tag mismatch
    Test[2] = 13; // tag mismatch
    printf("Test[code=c] = %d",Test[code=c]);
    printf("Test[ e_Test:2] = %d", Test[ e_Test:2] );
    printf("Test[2] = %d", Test[2] ); // tag mismatch
    return 1;
    }


    Edit:
    [pwn]enum e_Test {
    a, // 0 da Index bei 0 startet
    b, // 1
    c, // 2
    d[3] // 3 - 6
    }


    Edit:
    Hier noch etwas:
    enum e_Test {
    a = 2,
    b, // 3
    }
    new
    Test[e_Test];

    public OnFilterScriptInit() {
    printf("sizeof(Test) %d", sizeof(Test) ); // 4 !
    Test[2] = 5 ;
    printf("Test[a] %d", Test[a]);
    }


  • Was mich am new immer verwirrt, wie gbt man den platz im arbeitsspeicher wieder frei.
    In c++ muss man dafür die adresse in einem zeiger speichern
    int *variable
    aber in pawn hab ich sowas nie nie gesehen


    Freigeben gibt es in Pawn so einfach nicht, dafür kannst du auch keine Variablen zur Laufzeit erstellen, sondern ausschließlich im Vorfeld. Daher hat die .amx Datei zu jedem Script auch immer eine feste Größe, abhängig von der Anzahl der erstellten Variablen. ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • So kann man gut arrys erklären.
    Haxler hat zu mir mal gesagt eine Arry ist wie ien Schrank mit vielen Schubladen und Kästchen
    Arry[MAX_PLAYERS][100]
    Erstellt im Schrank für jeden Spieler eine Schublade, wenn der spieler sie öffnet, findet er 100 leere neue Schubladen oder volle, in die er etwas rein legen kann.
    Das bedeutet es gäbe insgesamt
    MAX_PLAYERS*100 Schubladen
    erweiterbar durch
    Arry[MAX_PLAYERS][100][10]
    Nun hat jeder Spieler eine Schublade mit weiteren 100 Schubladen und in diesen 100 Schubladen sind wieder 10 wo er etwas reinlegen kann:
    MAX_PLAYERS * 100 * 10 Schubladen.

  • Zitat

    Erstellt im Schrank für jeden Spieler eine Schublade


    Naja, das ist nicht ganz korrekt ^^
    Genaugenommen erstellt es MAX_PLAYERS Fächer, wobei MAX_PLAYERS eine definierte Zahl ist und nicht automatisch für alle Spieler zählt ;D
    Man verwendet nur MAX_PLAYERS für "Schränke", die für alle Spieler da sind.
    Man könnte genau so gut FOO oder mudder für diese Schränke nehmen.


    Aber auch nur, wenn man gaaaaanz genau ist ;D