[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
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
  • Hast du ICQ oder so,weil will net den thread vollmüllen, oder aktiviere PMs :D
    Ja welche Art soll man haben als Ini :D ich kenne die arten net :D

  • dcmd_changepw(playerid,params[])
    {
    new id,pw[32],userfile[MAX_PLAYER_NAME+12],nname[MAX_PLAYER_NAME];
    sscanf(params,"us",id,pw);
    if(!IsPlayerConnected(id) || IsPlayerNPC(id))return SendClientMessage(playerid,0xFF0000FF,"Benutzer nicht Aktiv!");
    if(!pw[0])return SendClientMessage(playerid,0xFF0000FF,"Passwort muss vorhanden sein!");
    GetPlayerName(id,nname,sizeof nname);
    format(userfile,sizeof userfile,"%s.ini",nname);
    dini_Set(userfile,"DeinPWkey",MD5_Hash(pw));
    return 1;
    }



    Nur ein Beispiel

    Mfg. BlackFoX_UD_ alias [BFX]Explosion


  • hey irgendwie ist in meinem script ein "allgemeiner Zeitbug"
    d.h. wenn ich zb jemanden im knast einsperre und die zeit auf 10 min gestellt is, is bei /time nach ca. 4 min die zeit vorbei aber er ist jedoch noch in der Zelle. Auch wenn man noch 10 min wartet ist er nicht draussen. Sozusagen erkennt das Script nicht dass die Zeit vorbei ist. Hat das was mit der v. 0.3a zu tun?
    Das mit dem Knast war nur ein Beispiel. Dieser bug ist überall.


    Danke schonmal im Voraus


    mfg
    Boeing

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(strcmp(cmd, "/time", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    new mtext[20];
    new year, month,day;
    getdate(year, month, day);
    if(month == 1) { mtext = "Januar"; }
    else if(month == 2) { mtext = "Februar"; }
    else if(month == 3) { mtext = "März"; }
    else if(month == 4) { mtext = "April"; }
    else if(month == 5) { mtext = "Mai"; }
    else if(month == 6) { mtext = "Juni"; }
    else if(month == 7) { mtext = "Juli"; }
    else if(month == 8) { mtext = "August"; }
    else if(month == 9) { mtext = "September"; }
    else if(month == 10) { mtext = "Oktober"; }
    else if(month == 11) { mtext = "November"; }
    else if(month == 12) { mtext = "Dezember"; }
    new hour,minuite,second;
    gettime(hour,minuite,second);
    FixHour(hour);
    hour = shifthour;
    if (minuite < 10)
    {
    if (PlayerInfo[playerid][pJailTime] > 0)
    {
    format(string, sizeof(string), "~y~%d %s~n~~g~|~w~%d:0%d~g~|~n~~w~Knastzeit: %d sek", day, mtext, hour, minuite, PlayerInfo[playerid][pJailTime]-1);
    }
    else
    {
    format(string, sizeof(string), "~y~%d %s~n~~g~|~w~%d:0%d~g~|", day, mtext, hour, minuite);
    }
    }
    else
    {
    if (PlayerInfo[playerid][pJailTime] > 0)
    {
    format(string, sizeof(string), "~y~%d %s~n~~g~|~w~%d:%d~g~|~n~~w~Knastzeit: %d sek", day, mtext, hour, minuite, PlayerInfo[playerid][pJailTime]-1);
    }
    else
    {
    format(string, sizeof(string), "~y~%d %s~n~~g~|~w~%d:%d~g~|", day, mtext, hour, minuite);
    }
    }
    GameTextForPlayer(playerid, string, 5000, 1);
    }
    return 1;
    }

  • Hi, hab mal ein paar Fragen.
    Was bedeutet die Funktion:

    case 0:
    case 1:
    case 3:
    usw.


    und:

    continue (oder so)



    Würde gerne wissen wie man diese Funktionen einsetzen kann.
    Mfg

  • Zu case:


    Das sind sowas wie Ordner.


    z.B bei einem Menü.
    Du wählst das erste, so wird case 0 gewählt und von dort die Funktion.


    Beispiel:


    new Menu:test;
    Da machste ein Menü.
    test ist im dem Fall der Name des Menüs.


    Dann werden 3 Menü Items hinzugefügt

    teleportmenu = CreateMenu("Teleportmenu", 2, 200.0, 100.0, 150.0, 150.0);
    // Die 3 Menü Items
    AddMenuItem(test, 0, "LS");
    AddMenuItem(test, 0, "LS");
    AddMenuItem(test, 0, "SF");


    Dann lässt du das Menü erscheinen mit einem CMD z.B



    if(strcmp(cmdtext, "/beispiel", true) == 0)
    {
    ShowMenuForPlayer(test,playerid);
    return 1;
    }
    // Das Menü wird nun eingeblendet.


    Num kommen wir mal zum wesentlichem.
    if(CurrentMenu == test)
    {
    switch(row)
    {
    case 0:
    {
    // Hier passiert etwas
    }
    case 1:
    {
    // Hier passiert etwas
    }
    case 2:
    {
    // Hier passiert etwas
    }


    Bla bla bla.
    Also Bildlich gesehen:


    Das Skript ist ein Schrank.
    Man öffnet erst eine Schublade.
    Dort sind dann einige anderen Sachen.
    Damit alles schön sortiert ist, ist alles in einer Schublade in einem Kästchen.


    Man öffnet das Kästchen nummer 0, passiert etwas, was man selbst da rein schrieb.


    Aber Case giebts auch bei der Skin Auswahl.
    Da kann man mit
    case 0
    case 1


    etc. Skins beschriften mit einem GameTextForPlayer.

  • Das hab ich schon gewusst.
    Nur hab ich vorhin irgendwas gesehen das case bei showplayeridalog verwendet wurde.
    nur warum und wie?

  • Ja wie gesagt...


    Wenn er z.B ein Dialog mit verschiedenen Funktion machen will etc.


    Kannste ja alles bei Wiki lesen.

  • das geht dann so:
    #define DEFINIERTER _MUELL 3
    public OnDialogResponse ( ... )
    {
    switch(dialogid)
    {
    case 0:print("dialog 0");
    case 1:print("dialog 1");
    case 2:print("dialog 2");
    case DEFINIERTER_MUELL:print("dialog Müll");
    }
    }
    und continue springt zum start einer schleife also
    for(new i;i<10;i++)
    {
    if(i==5)continue;
    printf("%d",i);
    }Ausgabe:

    Code
    0
    1
    2
    3
    4
    6
    7
    8
    9

    (5 wird übersprungen)

  • ja du kannst die camerapos dort hinsetzten und mit setplayercameralookat bestimmen wo sie hinschauen soll.


    Du solltest aber den Spieler auch noch mit dorthinsetzten und freezen, da sonst möglicherweise die autos und objecte nicht eingestreamet werden

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen