[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
  • Um noch was von D0erf|er vllt zu ergänzen es ist besser in solch einem fall case zu benutzen dieses ist schneller als if oder else if
    in dem fall könntest du natürlich auch else if verwenden da die ganzen if statements nach dem zugriffen umgangen werden es ist etwas kompliziert gerade ausgedrückt möglicherweiße dazunoch ein kleines beispiel.



    if(testjob[playerid] == 1)print("1");
    else if(testjob[playerid] == 2)print("2");
    else if(testjob[playerid] == 3)print("3");


    sollte nun testjob[playerid] 2 sein so bricht er die if statements nach der 2 ab.

  • Hallo, immer wenn ich /ban SPIELER GRUND eingebe, wird der Spieler nicht gebannt und er returnt ab den sscanf Code.
    ocmd:ban(playerid,params[])
    {
    if(GetPVarInt(playerid,"Online") == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht eingeloggt und kannst diesen Befehl nicht verwenden.");
    new pID,string[256],reason[31];
    if(!isPlayerAnAdmin(playerid,3))return SendClientMessage(playerid,COLOR_GRAU,"Du hast nicht die benötigten Rechte für diesen Befehl.");
    if(GetPVarInt(playerid,"Adminduty") == 0)return SendClientMessage(playerid,COLOR_GRAU,"Du bist nicht im Admindienst.");
    if(sscanf(params,"us[31]",pID,reason))return SendClientMessage(playerid,COLOR_GRAU,"Benutzung: /ban [ID/Name][Grund]");
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,COLOR_GRAU,"Der angegebene Spieler ist nicht online.");
    if(playerid != pID)
    {
    if(GetPVarInt(pID,"Adminrang") > GetPVarInt(playerid,"Adminrang"))return SendClientMessage(playerid,COLOR_GRAU,"Du kannst kein ranghöheres Teammitglieder bannen.");
    }
    format(string,sizeof(string),"Teammitglied %s hat den Spieler %s gebannt, Grund: %s",SpielerName(playerid),SpielerName(pID),reason);
    SendClientMessageToAll(COLOR_ROT,string);
    TogglePlayerControllable(playerid,0);
    SetPVarInt(pID,"Gebannt",1);
    Kick(pID);
    return 1;
    }


    Gruß

  • Hallo ich versuche mich seit kurzem an mysql und benutze dabei BlueG R6 folgender Code ist aber für R7 und höher geschrieben worden und ich wüsste gerne was ich hier alternativ zu cache_get_row und cache_get_data einsetzen müsste da diese ja erst in R7 verfügbar sind.


    public OnGameModeLoadHouses()
    {
    new rows, fields, content[MAX_PLAYER_NAME]; // Deklaration der benötigten Variablen (content muss max. so groß wie ein Username sein).
    cache_get_data(rows, fields); // Die Anzahl der Reihen und Spalten der Ergebnismenge herauslesen und abspeichern.


    for(new i = 0; i != rows; i++) { // Schleife die Anzahl der Reihen (= Anzahl der Häuser) durchlaufen lassen.
    cache_get_row(i, 0, content); // Daten einer Zeile im String 'content' speichern.
    hausInfo[i][hID] = strval(content); // HausArray mit Enumerator mit dem Integer (strval()) füllen.
    cache_get_row(i, 1, content); // Wiederholung für andere Werte ...
    hausInfo[i][hPreis] = strval(content);
    cache_get_row(i, 2, content); // Feld steigt nach und nach wie auch im Query von links nach rechts.
    format(hausInfo[i][hBesitzer], MAX_PLAYER_NAME, "%s", content);
    cache_get_row(i, 3, content);
    hausInfo[i][hInterior] = strval(content);
    cache_get_row(i, 4, content);
    hausInfo[i][hX] = floatstr(content);
    cache_get_row(i, 5, content);
    hausInfo[i][hY] = floatstr(content);
    cache_get_row(i, 6, content);
    hausInfo[i][hZ] = floatstr(content);
    }


    printf("Haussystem: Es wurden %i Häuser geladen.", rows); // Ausgabe der Anzahl der geladenen Häuser.
    return 1;
    }

  • Also ich mach das, obwohl ich derzeit R15 auf meinem Server habe, trotzdem an einer Stelle im Script anders (ohne cache):


    new string[512];
    mysql_store_result();
    mysql_fetch_row_format(string,"|",cH); // "|" <- Delimeter, cH = Verbindung (connectionHandle)
    mysql_free_result();


    Dann gibt er das ungefähr so aus:

    Code
    "5|23|83|378|Peter|23.99|9889.00|28.00"


    Diese Zeichenkette splitte ich dann mit einem selbstgebastelten split-stock.

  • mysql_connect gibt einen Integer zurück (erste Verbindung: 1, zweite Verbindung: 2, dritte Verbindung: 3).
    Du kannst dich so mit mehreren Datenbanken verbinden, das kann sehr nützlich sein.


    // Außerhalb allen Callbacks:
    new cH; // oder irgendwas anderes


    // OnGameModeInit:
    cH=mysql_connect(....);


    //Befehl:
    mysql_fetch_row_format(string,"|",cH);

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

  • Und wo gebe ich dann hier an auf welchen table ich mich beziehe?

  • Habe ein Problem, kann mir jemand helfen? Neuste MySQL Version

    Spoiler anzeigen
    SA-MP Dedicated Server
    ----------------------
    v0.3x, (C)2005-2013 SA-MP Team

    Spoiler anzeigen
    [19:23:16] filterscripts = "" (string)
    [19:23:16]
    [19:23:16] Server Plugins
    [19:23:16] --------------
    [19:23:16] Loading plugin: streamer
    [19:23:16]

    Spoiler anzeigen
    *** Streamer Plugin v2.6.1 by Incognito loaded ***

    Spoiler anzeigen
    [19:23:16] Loaded.
    [19:23:16] Loading plugin: mysql
    [19:23:16]

    Spoiler anzeigen
    > MySQL plugin R7 successfully loaded.

    Spoiler anzeigen
    [19:23:16] Loaded.
    [19:23:16] Loading plugin: sscanf
    [19:23:16]

    Spoiler anzeigen
    [19:23:16] ===============================

    Spoiler anzeigen
    [19:23:16] sscanf plugin loaded.

    Spoiler anzeigen
    [19:23:16] (c) 2009 Alex "Y_Less" Cole

    Spoiler anzeigen
    [19:23:16] 0.3d-R2 500 Players "dnee"

    Spoiler anzeigen
    [19:23:16] ===============================

    Spoiler anzeigen
    [19:23:16] Loaded.
    [19:23:16] Loading plugin: crashdetect
    [19:23:16] crashdetect v4.5.1 is OK.
    [19:23:16] Loaded.
    [19:23:16] Loaded 4 plugins.

    Spoiler anzeigen
    [19:23:16]
    [19:23:16] Filterscripts
    [19:23:16] ---------------
    [19:23:16] Loaded 0 filterscripts.

    Spoiler anzeigen
    [19:23:17] [debug] Run time error 19: "File or function is not found"
    [19:23:17] [debug] The following natives are not registered:
    [19:23:17] [debug] mysql_query
    [19:23:17] [debug] mysql_fetch_int
    [19:23:17] Script[gamemodes/Selfmade.amx]: Run time error 19: "File or function is not found"
    [19:23:17] Number of vehicle models: 0


  • [19:23:17] [debug] mysql_query
    [19:23:17] [debug] mysql_fetch_int


    Die beiden funktionen gibt es nicht mehr es gibt nur noch mysql_function_query jedoch gibt es dazu ein define um immer noch mysql_query zu benutzen das ganze wird dann zu OnQueryFinish. und bei mysql_fetch_int gibt es jetzt cach_get_row_int
    getriggert.
    Du benutzt ganz einfach funktionen also natives die nicht existieren daher kommt der fehler.

  • Wie kann ich mit der php Funktion z.B. sowas auslesen und Ingame wiedergeben?


    echo 'Error 1258-552 Wende dich an einen Admin';


    Mit Java ist sowas möglich in guy (kp wie man das schreibt) Wiederzugeben
    Wie macht man das in Pawn?

    All in all it's just another brick in the wall