[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
  • Zitat von Kasakow

    @KinGRaPTiiC
    Das hat sich zur Info seit den neuen Versionen ein bisschen umgestellt, les dir mal die aktuelle Wiki durch;)

    @Kasakow Vielen Dank wusste nicht das es das gibt vielleicht hab ich jetzt mal weniger Probleme :D




    /edit Frage:


    Sehe in manchen Scripts das die Dialoge in einem Enum gemacht werden wofür ist das Ressourcen sparender oder so was? weil hab es halt ganz normal mit #define XXXX 1 z.b

    Einmal editiert, zuletzt von KinGRaPTiiC ()

  • weil hab es halt ganz normal mit #define XXXX 1 z.b

    Das ist auch besser so, vor allem dann, wenn man Dialoge in mehreren Codes (Gamemode, Filterscript) definiert.
    Beim enum würde die erste ID immer bei 0 anfangen, somit hätte man in beiden Codes den ersten Dialog auf ID 0, das klappt nicht. Man muss daher den ersten Wert des enums explizit anpassen, damit das nicht vorkommt.
    Vergisst man das, sodass sich die IDs überschneiden, kommt es schnell zu Dialog-Konflikten, sprich falsche Dialoge werden angezeigt.
    Vor allem bei Filterscripts, die veröffentlicht werden, sollte man das unbedingt vermeiden, mit enums zu machen.


    Ich empfehle daher die #define - Variante, auch wenn es mehr Schreibarbeit ist.


    Ressourcentechnisch spielt es keine Rolle.

  • Sehe in manchen Scripts das die Dialoge in einem Enum gemacht werden wofür ist das Ressourcen sparender oder so was? weil hab es halt ganz normal mit #define XXXX 1 z.b

    Ich weiß, es wurde von meinen beiden Vorpostern schon mehr oder weniger erklärt, aber ich möchte dennoch auf dieses Tutorial verweisen:
    Dialoge strukturieren - leicht gemacht | Script strukturieren

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Guten Morgen,
    ich habe mal eine Frage, ich lasse meine [wiki]PlayerTextDraws[/wiki] über eine Schleife laden, das auch soweit komplett,
    leider haut mir "CrashDetect" dabei aber einige an Infos raus, die ich gerne nicht hätte aber dennoch meine Schleife nutzen könnte.


    [pwn]
    Die Schleife:
    for(new i = 0; i < sizeof(vRL_Register); i++)
    {
    PlayerTextDrawShow(playerid, vRL_Register[playerid][i]);
    }


    Die Log:
    [00:56:29] [debug] Run time error 4: "Array index out of bounds"
    [00:56:29] [debug] Attempted to read/write array element at index 20 in array of size 20
    [00:56:29] [debug] AMX backtrace:
    [00:56:29] [debug] #0 00020d14 in public OnPlayerRequestClass (playerid=0, classid=0) at Visual-RL.p:39
    [/pwn}


    Mit freundlichen Grüßen,

    Die Missglückte Persönlichkeit, Ciao!

  • PlayerTextDrawShow(playerid, vRL_Register[playerid]);
    ZuPlayerTextDrawShow(playerid, vRL_Register[playerid][i]);


    Und die Schleife zu
    for(new i = 0; i < sizeof(vRL_Register[]); i++)


    Eventuell musst du auch dein gesamtes Array noch auf zwei Dimensionen anpassen. Zuerst MAX_PLAYERS und dann 20.

  • Öhh ich komm derzeit nicht weiter, ich wollte eine Error Message erstellen. Leider funktioniert das nicht so wie ich das will ( shit Errors)


    Hier die Errors:
    (220) : error 021: symbol already defined: "ERROR"
    (222) : error 021: symbol already defined: "format"
    (223) : error 010: invalid function or declaration
    (244) : error 021: symbol already defined: "INFO"
    (245) : error 021: symbol already defined: "string"
    (247) : error 010: invalid function or declaration



    Die Script zeilen:
    [pwn=220]


    stock ERROR(playerid, error[]){
    new string[128];
    format(string, 128, ""#HTML_RED"[Fehler] "#HTML_WHITE"%s", error);
    return SendClientMessage(playerid, -1, string);
    }
    [/pwn]


    Mehr transparents zu der Community!
    Aber bitte künftig: Transparenz und nicht Transparents

  • Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: ^-^ ().
  • Was ich drinne habe ist nur: Register / Login System in MySQL von dir @Jeffry

    Das erklärt es.
    In der a_mysql.inc findet sich das hier:
    enum E_LOGLEVEL
    {
    NONE = 0,
    DEBUG = 1,
    INFO = 2,
    WARNING = 4,
    ERROR = 8,

    ALL = ERROR | WARNING | INFO | DEBUG
    };


    Somit sind beide bereits deklariert, daher der Fehler.


    Entweder du benennst deine Funktion etwas um, oder du benennst diese enum-Werte in der a_mysql.inc um, beides ist möglich.

  • Danke, hab das so gemacht wie in dem Tutorial:
    include:


    und unter OnGameModeInit im Script hab ich das definiert, aber es wird keine Tabelle erstellt.
    Woran liegt das?


    Mehr transparents zu der Community!
    Aber bitte künftig: Transparenz und nicht Transparents

  • Ich habe eine frage und zwar möchte ich das wenn ich /scheine eingebe dort steht Führerschein bestanden aber das soll dann z.B so aussehen:


    SendClientMessage(playerid,x,"Führerschein<- WEISS -> GRÜN bestanden // oder
    SendClientMessage(playerid,x,"Führerschein<- WEISS -> ROT nicht bestanden


    aber wie mache ich das dass script erkennt das wenn PlayerInfo[playerid][pCarlic] = 1;


    dort halt bestanden steht?

  • Da gibt es viele Möglichkeiten, hier mal ein paar:


    1. Möglichkeit:


    C
    if(PlayerInfo[playerid][pCarlic] == 1) SendClientMessage(playerid,-1,"Führerschein {00FF00}bestanden!");
    else SendClientMessage(playerid,-1,"Führerschein {FF0000}noch nicht bestanden!");

    2. Möglichkeit:
    SendClientMessage(playerid,-1,(PlayerInfo[playerid][pCarlic])?("Führerschein {00FF00}bestanden!"):("Führerschein {FF0000}noch nicht bestanden!"));


    3. Möglichkeit:


    new tmp[][]={"{00FF00}bestanden!", "{FF0000}noch nicht bestanden!"};
    format(string,sizeof(string),"Führerschein %s",tmp[PlayerInfo[playerid][pCarlic]]);
    SendClientMessage(playerid,-1,string);




    :D

    ast2ufdyxkb1.png


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

  • Was mach ich nur falsch^^?


    Mir wird garnicht's angezeigt :)
    hier der screen:


    Hier der Code:


    Es wird auch richtig abgerufen:

    mysql_format(handle, query, sizeof(query), "SELECT id FROM account_ban WHERE name = '%e'",PlayerInfo[playerid][pName]);
    printf("%s",query);
    //Das Query wird abgesendet und die playerid an OnUserCheck übergeben.
    mysql_pquery(handle, query, "OnUserBanned", "d", playerid);


    Mehr transparents zu der Community!
    Aber bitte künftig: Transparenz und nicht Transparents

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