Beiträge von maddin

    Also um die Spieler datein auslesen zu können, brächtest du eine art liste mit allen namen der Spieler die existieren, aber sich pawn orientieren kann. Denn woher soll pawn sonst wissen ob spieler XYZ existiert oder nicht.
    Du könntest das lösen indem du z.b auf MySQL umsteigst, da lässt sich sowas relativ leicht umsetzen ;)


    Ansonsten musst du dir überlegen ob es nicht auch reicht die Wanteds der Spieler aufzulisten die gerade Online sind, das ist auch relativ simpel.

    • Einen relativ großen string, und einen kleinen erstellen
    • Eine Schleife erstellen die durch alle Spieler loopt
    • Abfragen ob der Spieler mindestens 1 Wanted hat
    • per format den kleineren string zu "Horst - 6 Wanteds" formatieren (natürlich der gewünschte name und die anzahl an wanteds nehmen)
    • und natürlich \n für den zeilenumbruch nach dem namen dahinter setzen
    • per strcat den kleinen string "hinter" den großen setzen
    • nach der schleife den großen string dem Spieler ausgeben der den befehl verwendet hat

    public OnPlayerSpawn(playerid)
    {
    if(PlayerInfo[playerid][pTut] == 0)
    {
    TogglePlayerControllable(playerid, 0);
    TutTimer = SetTimerEx("ShowTut", 10000, false, "i", playerid);
    TutorialStage[playerid] = 1;
    }



    public ShowTut(playerid)
    {
    if(TutorialStage[playerid] == 1)
    {
    SetPlayerCameraPos(playerid,x, x, x);
    SetPlayerCameraLookAt(playerid,x, x,x);
    ClearScreen(playerid);
    SendClientMessage(playerid, COLOR_LG, "| blabalbala |");
    TutorialStage[playerid] = 2;
    TutTimer = SetTimerEx("ShowTut", 10000, false, "i", playerid);
    }
    else if(TutorialStage[playerid] == 2)
    {
    ClearScreen(playerid);
    SendClientMessage(playerid, COLOR_LG, "| blabalbala |");
    TutorialStage[playerid] = 3;
    TutTimer = SetTimerEx("ShowTut", 10000, false, "i", playerid);
    }


    /* Und so weiter ... */

    else if(TutorialStage[playerid] == 8)
    {
    ClearScreen(playerid);
    SendClientMessage(playerid, COLOR_LG, "| blabalbala |");


    TogglePlayerControllable(playerid, 1);
    PlayerInfo[playerid][pTut] = 1;
    TutorialStage[playerid] = 0;
    KillTimer(TutTimer);
    SetCameraBehindPlayer(playerid);
    }
    }
    Einfach immer wieder nen timer starten mit der zeit wann der nächste abschnitt kommen soll.

    Auch wenn Hisara es schon gepostet hat... Ich war schon fertig mit schreiben als ich das gesehen hab deshalb poste ich es trotzdem, als erklärung ^^
    #define FILTERSCRIPT


    #include <a_samp>


    #if defined FILTERSCRIPT


    forward level(playerid);


    public OnFilterScriptInit()
    {
    print("\n--------------------------------------");
    print(" Blank Filterscript by your name here");
    print("--------------------------------------\n");
    return 1;
    }


    public OnPlayerSpawn(playerid)
    {
    level(playerid); // Lässt das Level erscheinen.
    /* Du möchtest ja das level von dem angegeben spiler verwenden, also geben wir den parameter "playerid" mit dazu. */
    return 1;
    }



    public level(playerid)
    /* nach dem Public kommt direkt die klammer, und erst dann kannst du variablen mit new erstellen */
    {
    new level = GetPlayerScore(playerid);
    new string[10];
    /* ein string mit der länge von 2 ist mit sicherheit zu klein, dur brauch ja allein schon für das wort "Level" 5 zeichen. Also:
    Level = 5 zeichen
    : = 1 Zeichen
    Die zahl (ich geh jetzt mal davon aus dass das level nicht höher als 999 sein wird) also nochmal 3 zeichen.
    Macht 5+1+3+1 = 10*/
    format(string, sizeof string, "Level:%d", level);
    /* die variable "level" ist ein integer, also eine zahl. Und für zahlen wird %d oder %i benutzt. %s ist für strings, also zeichenketten.*/
    new Text:leveltext;
    /* du hast der variable "level" schon den Score zugewiesen, also musst du für den/das Textdraw eine andere bzw neue variable nehmen. Und bei textDraw muss der
    Text: -tag davon sein.*/
    TextDrawHideForAll(leveltext);
    leveltext = TextDrawCreate(20,110,string);
    TextDrawLetterSize(leveltext, 0.6, 1.8);
    TextDrawFont(leveltext, 3);
    TextDrawSetOutline(leveltext, 2);
    return 1;
    }


    public OnFilterScriptExit()
    {
    return 1;
    }



    #endif

    die strings sind zu klein.
    new newname[MAX_PLAYER_NAME], namestr[MAX_PLAYER_NAME+11];
    GetPlayerName(playerid, newname, sizeof(newname));
    format(namestr, sizeof(namestr), "[Paintball]%s", newname);
    SetPlayerName(playerid, namestr);

    also
    script.php?username=BeispielName&ID=1


    erstellt eine datei mit namen "BeispielName" und schreibt dort "1" (also ID) rein.


    script2.php?username=BeispielName


    öffnet die datei "userconfig.txt" und schreibt "BeispielName" in eine neue zeile, sodass alles namen untereinander sind.


    So richtig verstanden?

    BasdiDerGamer:
    Vielen dank :)


    [D.S.Z]Cody09:
    Das sollte keine probleme geben da nur Exakt das aufgerufen wird. Man kann es aber auch so machen das ähnliche namen aufgerufen werden.
    mysql_query("SELECT * FROM accounts WHERE Name LIKE 'Peter'");
    Würde z.b alles aus der tabelle accounts holen, wo der Name so ähnlich wie 'Peter' ist. Also sowohl bei 'Peter', also auch bei 'Peter1' oder 'Peter2'.

    Ich hab zwar keine ahnung, aber wenn du Bluscreens bekommst ist das normalerweise ein zeichen dafür das nicht alles ok ist.

    Benutzt du für die ID Spalte Auto Increment?
    Ansonsten versuch mal die Udate query mit ner where bedingung zu versehen. Glaube gerade nicht das er das so einfach ändern kann.
    format(query, 128, "UPDATE autos SET ID = %d WHERE ID = %d",xD,ID);

    Wenn du per SELECT * ausliest werden die einzelnen felder durch ein | getrennt, also musst du p<|> verwenden.
    Ausserdem benutzt du e<>, was dafür gedacht ist die einzelnen parameter direkt an ein enum weiter zu geben, was du nicht tust^^
    Probier es mal so:
    sscanf(str, "p<|>iiffffiiis[256]i",ID,mid,x,y,z,angle,col1,col2,Besitzer,schild,status);

    Das wird dir auch nichts bringen, heute ist alles möglich. die klatschen einfach i-ein foto rein was zu 99% echt aussieht..


    Jo siehe das video: [video]

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    ist genau das gleiche Bild vom "Toten osama" was George W. Bus 2008 gezeigt hat. Der bleibt eh nur so lange tot bis wieder ne Videobotschaft kommt ^^