[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
  • Selbst wenn ein Aufruf einer non-public Funktion etwas schneller ist, als der Aufruf eines publics, ist der Unterschied so minimal, dass man das selbst bei tausenden Aufrufen pro Minute niemals merken wird. Ebenfalls am Speicherverbrauch.
    Den Aufwand, da etwas zu verkomplizieren oder zu verbiegen, kannst du dir sparen, das macht keinen Sinn. Zudem wird es in den meisten Fällen auf Grund der Notwendigkeit gar nicht möglich sein.


    Nutze publics für Timer und Callbacks aus MySQL, und stock's (bzw. Funktionen generell, geht ja auch ohne stock) für simple Aufrufe.

  • Danke, für die Info!
    Ich hab gestern mit Hilfe von @Javez_ einen Befehl gebaut und er funktioniert auch, aber ich hätte ihn doch gerne einfacher.



    CMD:mapeditor(playerid, params[])
    {
    new option[10];
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, ROT, "Bitte benutze /login um den Befehl benutzen zu können.");
    if(sscanf(params, "s[10]", option))return SendClientMessage(playerid, ROT, "USAGE: /mapeditor [ein | aus]");
    if(strcmp(option, "ein", true) == 0)
    {
    SRC("loadfs mapedit");
    return 1;
    }
    if(strcmp(option, "aus", true) == 0)
    {
    SRC("unloadfs mapedit");
    return 1;
    }
    return 1;
    }

    Wie mache ich den Befehl so, dass man nur mit /mapeditor den Editor ein und ausschalten kann ohne ein bzw. aus dahinter?


    MfG

  • CMD:mapeditor(playerid, params[])
    {
    #pragma unused params
    static bool:s_mapedit;
    if(!IsPlayerAdmin(playerid))return SendClientMessage(playerid, ROT, "Bitte benutze /rcon login um den Befehl benutzen zu können.");
    if(!s_mapedit) SRC("loadfs mapedit");
    else SRC("unloadfs mapedit");
    s_mapedit = !s_mapedit;
    return 1;
    }

  • Danke, klappt.


    Einen Fehler hab ich noch.
    [09/28/18 12:05:50] [INFO] changed log level from 'warning, error' to 'debug, info, warning, error'[09/28/18 12:05:50] [DEBUG] mysql_connect("213.202.255.90", "samp", "*****", "samp", 0) (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:153 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] CHandleManager::Create(this=0x7506b0, host='213.202.255.90', user='samp', pass='****', db='samp', options=0x752378)[09/28/18 12:05:50] [INFO] Creating new connection handle...[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x74c528, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x760670[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x35ed020, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x778b50[09/28/18 12:05:50] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x35ed020, connection=0x35ed020)[09/28/18 12:05:50] [DEBUG] CConnectionPool::CConnectionPool(size=2, this=0x74bb68)[09/28/18 12:05:50] [DEBUG] CThreadedConnection::WorkerFunc(this=0x35ed020, connection=0x35ed020)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x37bb020, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x7868a8[09/28/18 12:05:50] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x37bb020, connection=0x37bb020)[09/28/18 12:05:50] [DEBUG] CThreadedConnection::WorkerFunc(this=0x37bb020, connection=0x37bb020)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection(this=0x3985020, host='213.202.255.90', user='samp', passw='****', db='samp', options=0x752378)[09/28/18 12:05:50] [DEBUG] CConnection::CConnection - new connection = 0x7cdc70[09/28/18 12:05:50] [DEBUG] CThreadedConnection::CThreadedConnection(this=0x3985020, connection=0x3985020)[09/28/18 12:05:50] [INFO] Connection handle with id '1' successfully created.[09/28/18 12:05:50] [DEBUG] CHandleManager::Create - new handle = 0x757728[09/28/18 12:05:50] [DEBUG] mysql_connect: return value: '1' (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:153 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] mysql_errno(1) (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:155 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] CHandle::GetErrorId(this=0x757728)[09/28/18 12:05:50] [DEBUG] CConnection::GetError(this=0x74c528, connection=0x760670)[09/28/18 12:05:50] [DEBUG] CHandle::GetErrorId - return value: true, error id: '0', error msg: ''[09/28/18 12:05:50] [DEBUG] mysql_errno: return value: '0' (C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/stocks.inc:155 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\../include/core/publics.inc:12 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\Pawn.CMD.inc:125 -> C:\Users\Alexander\Documents\meinserver\script\Map\pawno\include\sscanf2.inc:204)[09/28/18 12:05:50] [DEBUG] CThreadedConnection::WorkerFunc(this=0x3985020, connection=0x3985020)



    Was ist da los?


    Edit: Kann man sich irgendwie wärend dem Spiel aus dem RCON ausloggen?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Du machst einfach eine Query wie diese (musst du an deine Werte anpassen):

    //OnPlayerConnect
    mysql_format(handle,Query,sizeof(Query),"SELECT adminlevel FROM users WHERE Name = '%s'",GetName(playerid));
    mysql_pquery(handle,Query,"OnCheckAdmin","d",playerid);


    forward OnCheckAdmin(playerid);
    public OnCheckAdmin(playerid)
    {
    new alevel;
    cache_get_value_name_int(0,"adminleven",alevel);


    if(alevel > 0) return 1;
    else if(alevel == 0)
    {
    SendClientMessage(playerid, 0xFFFF00, "Der Login wurde administrativ deaktiviert.");
    Kick(playerid);
    }
    }


  • new gInfo[MAX_GEBAUDE][GebaudeEnum] = {
    {"Stadthalle Los Santos", 1209.4045,-1752.3353,13.5936, 40.7642, 384.808624,173.804992,1008.382812, 0.0000, "Du kannst das Gebäude mit "HTML_SERVER"/enter"HTML_WEIS"\n oder mit der Taste "HTML_SERVER"F"HTML_WEIS" betreten!", 3, 100},
    };

    Da muss das , am Ende weg. Beim letzten Element musst du das , weglassen.

  • Ich muss LoginTimer[playerid] definieren, einfach new LoginTimer? Oder LoginTimer[MAX_PLAYERS]


    Der Public heißt dann: LoginKick richtig? @Jeffry

    new LoginTimer[MAX_PLAYERS]


    //bei deinem Login
    LoginTimer[playerid] = SetTimerEx("PlayerLoginTimer", 20000, false, "d", playerid);
    //Nachdem er sich eingeloggt hat
    KillTimer(LoginTimer[playerid]);
    //Falls er zu lang braucht
    forward PlayerLoginTimer(playerid);
    public PlayerLoginTimer(playerid)
    {
    KickPlayer(playerid);
    return 1;
    }

  • Super, Danke!


    Code
    forward PlayerLoginTimer(playerid);
    public PlayerLoginTimer(playerid)
    {
    	ShowPlayerDialog(//X...", "","");
    	Kick(playerid);
    	return 1;
    }

    Dialog wird nicht angezeigt, wahrscheinlich weil alles zu schnell abläuft oder?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

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