[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
  • Guten Tag!


    Ich habe mir folgende Funktion für mein Script erstellt:


    stock mayPlayerJoin(playerid) {
    new n[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, n, sizeof(n));
    for(new i=0;i<sizeof(AllowedPlayers); i++) {
    if(strcmp(AllowedPlayers[i], n, true)) return true;
    }
    return false;
    }


    Das dazugehörige Array:

    static const AllowedPlayers[1][MAX_PLAYER_NAME+1] = {
    "DerCrash"
    };


    Sie wird in dem OnPlayerJoin() Callback aufgerufen:



    public OnPlayerConnect(playerid)
    {
    if(!mayPlayerJoin(playerid)) return sendError(playerid, "Der Server ist im Wartungsmodus!");
    return 1;
    }


    Wenn ich jetzt mit dem Namen "DerCrash" joine, wieso bekomme ich dann die Meldung: "Der Server ist im Wartungsmodus"?


    Danke schonmal im Vorraus

  • SQL
    SELECT pVerheiratet FROM user WHERE name = '%s';


    Dann das result auslesen und abfragen ob strlen größer als 1 ist. Wenn ja, dann ist er verheiratet, wenn nein, dann nicht.


    Sinnvoller wäre es natürlich das beim Login zu laden, und dann nur abzufragen:
    if(strlen(pVerheiratetName)>1) //verheiratet
    else //nicht verheiratet

  • Okay, danke dir. Ich versuche das mal.
    Ich habe die ID nun zwischen gespeichert, ist es irgendwie möglich anhand seiner ID seinen Namen wieder auszulesen?


    //e:
    Stehe sowas von aufm Schlauch, nachdem ich jetzt 24 Stunden wach bin..
    Hier mal mein Code:
    if(strcmp(option, "antrag", true) == 0)
    {
    if(Spieler[playerid][pAcceptHeirat] != -1)
    {
    if(IsPlayerConnected(pAcceptHeirat[playerid]))
    {
    GivePlayerMoney(pAcceptHeirat[playerid],-15000);
    //Spieler[pAcceptTicket][pVeheiratet] = 1;
    Spieler[playerid][pVerheiratet] = 1;
    //format(string,sizeof(string),"%s hat soeben %s geheiratet.",GetName(playerid),
    //SendClientMessageToAll(COLOR_ORANGE,string);
    }
    }
    }


    Ich habe die ID zwischengespeichert, welcher den Antrag erstellt hat.
    Jedoch kriege ich schon Errors in folgender Zeile.
    if(Spieler[playerid][pAcceptHeirat] != -1)


    Jeffry:

  • if(!strcmp(option,"antrag",true))
    {
    if(pAcceptHeirat[playerid] != -1)
    {
    if(IsPlayerConnected(pAcceptHeirat[playerid]))
    {
    GivePlayerMoney(pAcceptHeirat[playerid],-15000);
    //Spieler[pAcceptTicket][pVeheiratet] = 1;
    Spieler[playerid][pVerheiratet] = 1;
    //format(string,sizeof(string),"%s hat soeben %s geheiratet.",GetName(playerid),GetName(pAcceptHeirat[playerid]));
    //SendClientMessageToAll(COLOR_ORANGE,string);
    }
    }
    return 1;
    }
    Bist du dir sicher, dass das option heißt und nicht cmdtext? ;)


    Cheevy.Shakur:
    Ja, dann passt das ;)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • CMD:accept(playerid, params[])
    {
    if(!IsLoggedIn(playerid))return 1;
    new option[32], string[128];
    if(sscanf(params, "s[32]", option))
    {
    SendClientMessage(playerid, COLOR_GREY, "** Benutze /accept [Option]");
    SendClientMessage(playerid, COLOR_GREY, "** Optionen: Ticket, Paket, Antrag");
    return 1;
    }
    if(strcmp(option, "antrag", true) == 0)
    ...
    Option ist denke ich schon richtig. :)

  • Code
    C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : error 028: invalid subscript (not an array or too many subscripts): "pAcceptHeirat"
    C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : warning 215: expression has no effect
    C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : error 001: expected token: ";", but found "]"
    C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : error 029: invalid expression, assumed zero
    C:\Users\Alex\Desktop\\gamemodes\reallife.pwn(3473) : fatal error 107: too many error messages on one line
  • Ich möchte damit ja nicht den Spieler abfragen, der den Befehl eingibt.
    In pAcceptHeirat[playerid] ist die ID des anderen gespeichert.


    Hier mal der Befehl, womit man einen Heiratsantrag macht. Damit du ungefähr weißt, was ich meine.
    CMD:heiraten(playerid,params[])
    {
    new pID,string[128],Float:pos[3];
    if(sscanf(params,"u",pID))return SendClientMessage(playerid,COLOR_GREY,"** Benutze /heiraten [SpielerID/Name]");
    if(IsPlayerNPC(pID))return 1;
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid, COLOR_GREY, ERROR_OFFLINE);
    GetPlayerPos(pID, pos[0], pos[1], pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid, 4.0, pos[0], pos[1], pos[2]))return SendClientMessage(playerid, COLOR_GREY, "** Der Spieler befindet sich nicht in deiner Nähe.");
    if(Spieler[pID][pVeheiratet] == 1)return SendClientMessage(playerid,COLOR_GREY,"** Dieser Spieler ist bereits verheiratet.");
    if(GetPlayerMoney(playerid) < 15000)return SendClientMessage(playerid,COLOR_GREY,"** Du besitzt nicht genügend Geld.");
    format(string,sizeof(string),"%s hat dir einen Heiratsantrag gemacht. Tippe /accept antrag um den Antrag anzunehmen.");
    SendClientMessage(pID,COLOR_GREEN,string);
    Spieler[pID][pAcceptHeirat] = playerid;
    return 1;
    }

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