[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
  • Warum wird der Skin nicht angezeit? Also ich habe es per Anklickbare Textdraws gemacht... z.b. Man klickt "TEAM 1" an dann soll z.b.: ein Grove Street Skin erscheinen , jedoch bleibt es einfach leer, hier der Code:



    Textdraw3[playerid] = CreatePlayerTextDraw(playerid, 194.000000, 124.444442, "_");//LD_SPAC:white
    PlayerTextDrawFont(playerid, Textdraw3[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);
    PlayerTextDrawLetterSize(playerid, Textdraw3[playerid], 0.000000, 0.000000);
    PlayerTextDrawTextSize(playerid, Textdraw3[playerid], 254.000000, 296.177764);
    PlayerTextDrawAlignment(playerid, Textdraw3[playerid], 1);
    PlayerTextDrawColor(playerid, Textdraw3[playerid], -1);
    PlayerTextDrawSetShadow(playerid, Textdraw3[playerid], 0);
    PlayerTextDrawSetOutline(playerid, Textdraw3[playerid], 0);
    PlayerTextDrawFont(playerid, Textdraw3[playerid], 4);



    if(clickedid == Textdraw6) // Team 1
    {
    PlayerTextDrawSetPreviewModel(playerid, Textdraw3[playerid], 287);
    ClearChat(playerid);
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben {FF0000}Team 1{FFFFFF}als Team ausgewählt!");


    }
    //...

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Hö? Und was muss man da jetzt ändern?


    also dies?



    Textdraw3[playerid] = CreatePlayerTextDraw(playerid, 194.000000, 124.444442, "_");//LD_SPAC:white
    PlayerTextDrawFont(playerid, Textdraw3[playerid], TEXT_DRAW_FONT_MODEL_PREVIEW);
    PlayerTextDrawLetterSize(playerid, Textdraw3[playerid], 0.000000, 0.000000);
    PlayerTextDrawTextSize(playerid, Textdraw3[playerid], 254.000000, 296.177764);
    PlayerTextDrawAlignment(playerid, Textdraw3[playerid], 1);
    PlayerTextDrawColor(playerid, Textdraw3[playerid], -1);
    PlayerTextDrawSetShadow(playerid, Textdraw3[playerid], 0);
    PlayerTextDrawSetOutline(playerid, Textdraw3[playerid], 0);


    EDIT:


    Habe es jetzt geändert jedoch wird jetzt nur der CJ Skin angezeigt?

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • ok das mit den Textdraw3[playerid]........
    ist bei mir ganz unten in einem Stock drinne wo alle Textdraws aufgerufen werden unter: stock TextDrawLoad(playerid), der wird aufgerufen unter: OnPlayerConnect...


    Und hier sollte der Skin dann aufgerufen werden:


    public OnPlayerClickTextDraw(playerid, Text:clickedid)
    {
    if(_:clickedid != INVALID_TEXT_DRAW) //Sagt das wenn der Player ein falsches TD anklickt nichts passieren soll.
    {
    LoadPlayer(playerid);
    //Team-Ausawhl
    if(clickedid == Textdraw6) // United States
    {
    PlayerTextDrawSetPreviewModel(playerid, Textdraw3[playerid], 287);
    ClearChat(playerid);
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben {FF0000}United States {FFFFFF}als Team ausgewählt!");
    gTeam[playerid] = TEAM_UNITEDSTATES;
    if(mysql_CheckAccount(playerid) == 1)
    {
    SpielerInfo[playerid][pTeamAuswahl] = 1;
    }
    else if(mysql_CheckNoAccount(playerid) == 1)
    {
    NoSpielerInfo[playerid][pNoTeamAuswahl] = 1;
    }
    }
    else if(clickedid == Textdraw7)//Russland
    {
    ClearChat(playerid);
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben {FF0000}Russland {FFFFFF}als Team ausgewählt!");
    gTeam[playerid] = TEAM_RUSSLAND;
    if(mysql_CheckAccount(playerid) == 1)
    {
    SpielerInfo[playerid][pTeamAuswahl] = 1;
    }
    else if(mysql_CheckNoAccount(playerid) == 1)
    {
    NoSpielerInfo[playerid][pNoTeamAuswahl] = 1;
    }
    }
    else if(clickedid == Textdraw13)//Afghanistan
    {
    ClearChat(playerid);
    SendClientMessage(playerid, 0xFF0000FF,"[INFO] {FFFFFF}Sie haben {FF0000}Afghanistan {FFFFFF}als Team ausgewählt!");
    gTeam[playerid] = TEAM_AFGHANISTAN;
    if(mysql_CheckAccount(playerid) == 1)
    {
    SpielerInfo[playerid][pTeamAuswahl] = 1;
    }
    else if(mysql_CheckNoAccount(playerid) == 1)
    {
    NoSpielerInfo[playerid][pNoTeamAuswahl] = 1;
    }
    }
    //....

    Mit freundlichen Grüßen
    [KoSoVa] :klugs:

  • Beitrag von 085zehn ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • ocmd:ban(playerid, params[])
    {
    new query[128], string[128], pID, grund;
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
    if(sscanf(params,"ui",pID,grund))return SendClientMessage(playerid,-1,"Tippe: /ban [spieler] [grund]");
    format(string, sizeof(string),"Du wurdest von %s gebannt. Grund: %s",NamePlayer(playerid),grund);
    SendClientMessage(pID,ROT,string);
    format(query, sizeof(query), "UPDATE accounts SET Banned ='1'");
    format(query, sizeof(query), "UPDATE accounts SET Bangrund ='%s'",grund);
    mysql_tquery(mysqlHandle, query, "", "");
    Kick(pID);
    return 1;
    }


    Ingame kommt immer "Tippe /ban [spieler] [grund]".


    Keine Errors/Fehler.

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(sscanf(params,"ui",pID,grund))return SendClientMessage(playerid,-1,"Tippe: /ban [spieler] [grund]");
    Der Grund ist bestimmt kein Integer :)


    new query[128], string[128], pID, grund;
    Hier muss der "grund" auch zu ein String.

  • Füge doch noch die MySQL-Syntax "WHERE" hinzu.


    EDIT:
    ocmd:ban(playerid, params[])
    {
    new query[128], string[128], pID, grund[64];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
    if(sscanf(params,"us[64]",pID,grund))return SendClientMessage(playerid,-1,"Tippe: /ban [spieler] [grund]");
    format(string, sizeof(string),"Du wurdest von %s gebannt. Grund: %s",NamePlayer(playerid),grund);
    SendClientMessage(pID,ROT,string);
    format(query, sizeof(query), "UPDATE accounts SET Banned=1 WHERE Name='%s'",NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "", "");
    format(query, sizeof(query), "UPDATE accounts SET Bangrund ='%s' WHERE Name='%s'",grund,NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "", "");
    Kick(pID);
    return 1;
    }
    In der Query musst du wahrscheinlich noch "Name" ändern. Ich weiß gerade nicht, wie das in deiner Datenbankstruktur aussieht.
    @FerienFreak:

  • Außerdem fehlt nach dem ersten Query das Absenden des Queries.
    Schreibe es so:
    ocmd:ban(playerid, params[])
    {
    new query[128], string[128], pID, grund[64];
    if(!isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,-1,"Du brauchst Adminlevel 2");
    if(sscanf(params,"us[64]",pID,grund))return SendClientMessage(playerid,-1,"Tippe: /ban [spieler] [grund]");
    format(string, sizeof(string),"Du wurdest von %s gebannt. Grund: %s",NamePlayer(playerid),grund);
    SendClientMessage(pID,ROT,string);
    format(query, sizeof(query), "UPDATE accounts SET Banned ='1' WHERE name = '%s'", NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "", "");
    format(query, sizeof(query), "UPDATE accounts SET Bangrund ='%s' WHERE name = '%s'",grund, NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "", "");
    Kick(pID);
    return 1;
    }



    @[GeD]Max: Wenn du Skin 287 angibst, dann sollte der auch angezeigt werden. Außer du zeigst woanders noch was anderes an. Bei mir hat es wie gesagt funktioniert. Wenn du den Skin siehst, und dann das PreviewModel zu 287 setzt, siehst du dann den richtigen Skin? Wenn ja, dann überschreibst du die 287 vor dem ersten Mal anzeigen.

  • Nein. eher so.
    format(query, sizeof(query), "SELECT Banned FORM accounts WHERE Name='%s'", NamePlayer(playerid));

  • Nicht ganz.
    Schau mal hier, das hast du ein gutes Beispiel:
    http://wiki.sa-mp.com/wiki/MySQL/R33#mysql_tquery


    Du musst nach dem tquery nämlich ein callback aufrufen, um das Ergebnis aus dem Cache auslesen zu können.



    EDIT:
    Beispiel für dich:
    format(query, sizeof(query), "SELECT Banned FORM accounts WHERE Name='%s'", NamePlayer(pID));
    mysql_tquery(mysqlHandle, query, "CheckBanned", "d", pID);


    //Callback: Ganz unten im Code.
    forward CheckBanned(playerid);
    public CheckBanned(playerid)
    {
    new NumRows = cache_num_rows();
    if(NumRows)
    {
    Kick(playerid);
    }
    return 1;
    }

    3HZXdYd.png

    3 Mal editiert, zuletzt von Jeffry () aus folgendem Grund: Kommentierung

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