[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
  • Ich hab da ein GlobalenArray gemacht


    new ID[MAX_PLAYERS];


    und diese Variable will ich dann in diesen Befehl einbauen


    ID[playerid] = pID;


    ocmd:id(playerid,params[])
    {


    new string[128];


    new name[MAX_PLAYER_NAME];


    if(sscanf(params, "u", pID)) return SendClientMessage(playerid, GRAU, "Verwende: /id {C67700}<Spieler-ID>");


    if(!IsPlayerConnected(pID)) return SendClientMessage(playerid, GRAU, "Ungültige ID!");


    GetPlayerName(pID,name,sizeof(name));


    format(string,sizeof(string), "%s hat die ID %i.",name,pID);


    SendClientMessage(playerid, GELB, string);


    return 1;
    }


    Nur wo kommt das hin? Ich habe das Tutorial von Raven auf aber dort wird nur gesagt das kommt in den Befehl. Ich bekomme aber Errors.

    Mit freundlichen Grüßen,
    Derakar

  • Ich hoffe ich bin nicht der einzigste, der deine Frage nicht ganz versteht.
    Deine Frage ist: Wo musst du die ID[playerid] = pID; eintragen.
    Im Prinzip ist das egal , hauptsache nach der sscanf-Abfrage.

  • So moin hab mal ne kleine anfängerfrage.
    habe mir mithilfe der nemesus tutorials ein adminsystem erstellt, das auch top funktioniert.


    Nun will ich aber noch haben, das ich bzw leute die das rcon pw haben sich zum Fulladmin machen können.
    Leider scheitert es grade.


    dcmd_rmakeadmin(playerid,params[])
    {
    new pid;//Das sind die Variablen, /MakeAdmin [pID] [AdminLevel]
    if(sscanf(params, "u",pid))
    {
    if(IsPlayerAdmin(playerid);
    {
    sSpieler[playerid][Adminlevel] = 4;
    SendClientMessage(playerid,Weiß,"Du hast dich über Rcon zum Vorstandsadmin befördert!");
    }
    else
    {
    SendClientMessage(playerid,Weiß,"Du hast dafür keine Berechtigung!");
    return 1;
    }


    Ich weiß nun aber nicht ob das new was da steht wirkloich brauche, weil ja per abfrage des rcon nur das adminlevel in die spieler datei eingetragen werden soll.

  • Laut deinen Vorstellungen kann ich mir das so denken, dass das so passen sollte.
    dcmd_rmakeadmin(playerid,params[])
    {
    if(IsPlayerAdmin(playerid))
    {
    sSpieler[playerid][Adminlevel] = 4;
    SendClientMessage(playerid,Weiß,"Du hast dich über Rcon zum Vorstandsadmin befördert!");
    }
    else
    {
    SendClientMessage(playerid,Weiß,"Du hast dafür keine Berechtigung!");
    }
    return 1;
    }

  • das passt so außer das ich diesen warning bekomme:


    C:\Users\NoxiZ\Desktop\Server\gamemodes\selfmade.pwn(372) : warning 203: symbol is never used: "params"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.


    edit.


    befehl funktioniert, aber eine 2te frage hab ich noch.


    bei meinem makeleader befehl wird ja in das userfile des accounts ja die zahl der fraktion eingetragen in der der spieler leader ist.
    wie bekomme ich hin, das er noch in einen anderen teil das einträgt?


    dcmd_makeleader(playerid,params[])
    {
    new pid, frakid;
    if(sscanf(params, "ud",pid,frakid))
    {
    return SendClientMessage(playerid,Weiß,"Info: /makeleader [playerid] [Fraktion]");
    }
    if(pid == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,Weiß,"Der Spieler mit dieser ID ist nicht Online!");
    }
    if(sSpieler[playerid][Adminlevel] == 4)
    {
    new spieler[256];
    new admin[256];
    new adminname[MAX_PLAYER_NAME];
    new spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, adminname, sizeof(adminname));
    GetPlayerName(pid, spielername, sizeof(spielername));
    if(frakid > 2)
    {
    SendClientMessage(playerid,Weiß,"Soviele Fraktionen gibt es nicht!");
    return 1;
    }
    if(frakid == 0)
    {
    format(spieler, sizeof(spieler),"Vorstandsadmin %s hat dir die Leaderrechte entzogen!",adminname);
    format(admin, sizeof(admin),"Du hast %s die Leaderrechte entzogen!",spielername);
    SetPlayerPos(pid, 1517.7534,-1657.6643,13.5392);
    SetPlayerColor(pid,Weiß);
    SendClientMessage(pid,Weiß,spieler);
    SendClientMessage(playerid,Weiß,admin);
    sSpieler[pid][Leader] = 0;


    sSpieler[pid][Leader] bekomme ich hier noch einen weiteren einzutragenden teil hin? bzw [Fraktion]? = 0;

    Einmal editiert, zuletzt von NoxiZ ()

  • Ich versuche über einen Befehl einem User ein Objekt "überzustölpen" dessen ID ich angebe,
    Das Objekt wird unter OnGameModeInit erstellt ist auch Ingame zu sehen, aber sobald ich es versuche dem User überzustölpen verschwindet es einfach.
    Hat da jmd. eine Idee


    Code:



    ocmd:stest(playerid,params[])
    {
    new pID;
    if(sscanf(params,"u",playerid))return SendClientMessage(playerid,0xFFFFFFFF,"Nutze: /stest [Name/ID]");
    new Float:posx,Float:posy,Float:posz;
    GetPlayerPos(pID,posx,posy,posz);
    SetObjectPos(silentobj,posz,posy,posz);
    SetObjectRot(silentobj,89.16,-91.14,3.48);
    SendClientMessage(pID,0x0073FFFF,"Test");
    return 1;
    }

  • NoxiZ:
    dcmd_rmakeadmin(playerid)
    Das muss so.
    Zu deiner 2. Frage:
    Ja, warum solltest du keinen weiteren Teil dort einfügen können?


    #edit:
    Jeffry:
    Stimmt, danke! Ich arbeite immer mit ocmd, und war daher an dieser Methode gewohnt! :)

    Einmal editiert, zuletzt von AirM4X ()

  • enum Firma
    {
    Name,
    Posx,
    Posy,
    };
    new Firmaname[3][Firma] =
    {
    {Adidas,15,15},
    {Twixo,15,15}, //595
    {Alaska,15,14}
    };//587


    Warum folgende Errors:
    (595) : error 020: invalid symbol name ""
    (597) : error 010: invalid function or declaration

  • enum Firma
    {
    Name[20],
    Posx,
    Posy,
    };
    new Firmaname[3][Firma] =
    {
    {"Adidas",15,15},
    {"Twixo",15,15}, //595
    {"Alaska",15,14}
    };
    Das muss so aussehen, denn die Namen sind ja strings ;=)

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Jeffry: Hat funktioniert, danke.


    Eine frage habe ich da jetzt nochmal, wie setze ich nun das "pBanned" auf 0?


    Code:


    {
    new query[256],rows,fields;
    switch(sqlresultid)
    {
    case MySQL_Check_UnBan:
    {
    cache_get_data(rows,fields);
    if(!rows)
    {
    if(!IsPlayerAnAdmin(extraid,1)) return SendClientMessage(extraid,0xCC4747,"Dieser Spieler ist laut der Datenbank nicht Gesperrt oder nicht Registriert! Bitte Überprüfen Sie den Spielernamen.");
    return 1;
    }
    format(query,sizeof(query),"DELETE FROM `Banned` WHERE Name = '%s'",index);
    mysql_function_query(DBHandle,query,false,"","");
    format(query,sizeof(query),"{FF1111}Admin Info: {23A7F5}%s {E5E5E5} hat den Spieler {23A7F5}%s{E5E5E5} Entbannt.- {FF7979}Grund: {E5E5E5}%s",Spieler[extraid][pName],extraid,index,index2);
    SendClientMessageToAll(0xCC4747,query);
    printf(query);
    format(query,sizeof(query),"Admin: %s * Zielperson: %s * Grund: %s",Spieler[extraid][pName],index,index2);
    SavePlayerData(extraid);
    Log("Unbansqllog",query);
    return 1;
    }
    }
    return 1;
    }



    //Edit


    Ich habe 2 Tabellen 1 mal Accounts und dann Banned

    Die Kritik an anderen hat noch keinem die eigene Leistung erspart.

    – Noël Coward

  • dcmd_makeleader(playerid,params[])
    {
    new pid, frakid;
    if(sscanf(params, "ud",pid,frakid))
    {
    return SendClientMessage(playerid,Weiß,"Info: /makeleader [playerid] [Fraktion]");
    }
    if(pid == INVALID_PLAYER_ID)
    {
    return SendClientMessage(playerid,Weiß,"Der Spieler mit dieser ID ist nicht Online!");
    }
    if(sSpieler[playerid][Adminlevel] == 4)
    {
    new spieler[256];
    new admin[256];
    new adminname[MAX_PLAYER_NAME];
    new spielername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, adminname, sizeof(adminname));
    GetPlayerName(pid, spielername, sizeof(spielername));
    if(frakid > 2)
    {
    SendClientMessage(playerid,Weiß,"Soviele Fraktionen gibt es nicht!");
    return 1;
    }
    if(frakid == 0)
    {
    format(spieler, sizeof(spieler),"Vorstandsadmin %s hat dir die Leaderrechte entzogen!",adminname);
    format(admin, sizeof(admin),"Du hast %s die Leaderrechte entzogen!",spielername);
    SetPlayerPos(pid, 1517.7534,-1657.6643,13.5392);
    SetPlayerColor(pid,Weiß);
    SendClientMessage(pid,Weiß,spieler);
    SendClientMessage(playerid,Weiß,admin);
    sSpieler[pid][Leader] = 0;


    die letzte zeile ist die wo er es in die txt des accounts einträgt, das er halt die rechte entzogen bkommen hat.
    wenn er jetzt aber geleadert wird in fraktion 1, soll das ebenfalls in der datei stehen, weswegen jetzt rein theoretisch noch [Fraktion] dastehen müsste, aber das geht halt nicht, weil nicht zulässig ist ^^

  • kennt sich jemand zufällig mit der BlueG R38 aus?


    Sitze schon fast 1 Stunde an dem Problem und mir Raucht schon der Schädel.


    So sieht der Code aus


    Ich Rufe LoadFactionbyID per OnGamemodeInit auf
    Hier ist mal die Log


    PHP
    [03:12:09] LoadFactionbyID(1)
    [03:12:09] SELECT * FROM faction WHERE id='1'


    Abschlusssatz: ich sehe bei dieser Mysql Version langsam nicht mehr durch. Ich will meine alte wieder

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.