[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
  • Wieso werden mir hier die Adminränge nicht im format Text ausgegeben?


    ocmd:setadmin(playerid,params[])
    {
    new pID,alevel,string[168],adminrank[228];
    if(sscanf(params,"ui",pID,alevel)) return SendClientMessage(playerid,0xFFFFFF,"Info: /makeadmin [Spieler ID] [Level]");
    if(alevel > 5 ) return SendClientMessage(playerid,0xFF3C3CFF,"Achtung!: Das maximale Adminlevel beträgt 5.");
    switch(Spieler[playerid][pAdminlevel])
    {
    case 0:{adminrank="Spieler";}
    case 1:{adminrank="Supporter";}
    case 2:{adminrank="Moderator";}
    case 3:{adminrank="Administrator";}
    case 4:{adminrank="Management";}
    case 5:{adminrank="Projektleiter";}
    }
    format(string,sizeof(string),"{FF1111}Admin Info: {E5E5E5}Der Spieler {23A7F5}%s {E5E5E5}wurde von {23A7F5}%s {E5E5E5}zum {23A7F5}%s {E5E5E5}Befördert!",Spielername(pID),Spielername(playerid),adminrank);
    SendClientMessageToAll(0xE5E5E5FF,string);
    Spieler[pID][pAdminlevel] = alevel;
    SavePlayerData(pID);
    return 1;
    }

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

    – Noël Coward

  • ocmd:setadmin(playerid,params[])
    {
    new pID,alevel,string[144],adminrank[16];
    if(sscanf(params,"ui",pID,alevel)) return SendClientMessage(playerid,0xFFFFFF,"Info: /makeadmin [Spieler ID] [Level]");
    if(alevel > 5 ) return SendClientMessage(playerid,0xFF3C3CFF,"Achtung!: Das maximale Adminlevel beträgt 5.");
    Spieler[pID][pAdminlevel] = alevel;
    switch(Spieler[pID][pAdminlevel])
    {
    case 0:{adminrank="Spieler";}
    case 1:{adminrank="Supporter";}
    case 2:{adminrank="Moderator";}
    case 3:{adminrank="Administrator";}
    case 4:{adminrank="Management";}
    case 5:{adminrank="Projektleiter";}
    }
    format(string,sizeof(string),"{FF1111}Admin Info: {E5E5E5}Der Spieler {23A7F5}%s {E5E5E5}wurde von {23A7F5}%s {E5E5E5}zum {23A7F5}%s {E5E5E5}Befördert!",Spielername(pID),Spielername(playerid),adminrank);
    SendClientMessageToAll(0xE5E5E5FF,string);
    SavePlayerData(pID);
    return 1;
    }


    Zuweisung nach Abfrage. :)
    Übrigens ist 144 das Maximum für SendClientMessage.

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry () aus folgendem Grund: playerid zu pID (Danke SynonymousZ)

  • Jeffry: Bin ich blind, oder ist die Zuweisung bei ihm nach der Abfrage? ^^
    ocmd:setadmin(playerid,params[])
    {
    new pID,aleve,string[144],adminrank[64];
    if(sscanf(params,"ui",pID,alevel))return SendClientMessage(playerid,0xFFFFFF,"Info: /makeadmin [Spieler ID] [Level]");
    if(alevel > 5)return SendClientMessage(playerid,0xFF3C3CFF,"Achtung!: Das maximale Adminlevel beträgt 5!");
    switch(alevel)
    {
    case 0:adminrank = "Spieler";
    case 1:adminrank = "Supporter";
    case 2:adminrank = "Moderator";
    case 3:adminrank = "Administrator";
    case 4:adminrank = "Management";
    case 5:adminrank = "Projektleiter";
    }
    format(string,144,"Admin Info:{E5E5E5} Der Spieler{23A7F5}%s{E5E5E5} wurde von{23A7F5} %s{E5E5E5} zum{23A7F5} %s{E5E5E5} befördert!",Spielername(pID),Spielername(playerid),adminrank);
    SendClientMessageToAll(0xE5E5E5FF,string);
    Spieler[pID][pAdminlevel] = alevel;
    SavePlayerData(pID);
    return 1;
    }


    Er hat anstatt switch(alevel) switch(Spieler[playerid][pAdminlevel]) gemacht ;)

    Einmal editiert, zuletzt von AirM4X ()

  • Die Zuweisung war bei ihm doch schon nach der Abfrage, was hast du da denn dann ausgebessert? :wacko:

  • Echt?
    Ist das so schlimm, weil der Wert bleibt doch gespeichert in alevel, oder nicht? :D

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Echt. Du fragst in deiner Version alevel ab, da hast du die Zuweisung im sscanf (also vor dem switch). Ich habe es so gelassen wie er es hatte, also muss die Zuweisung der Spieler Variable vor das switch, da diese Variable abgefragt wird:
    Spieler[pID][pAdminlevel]
    Sonst fragst du den alten Wert ab.



    EDIT: Syno: Gar nicht gesehen, natürlich. :thumbup:

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Jeffry:
    Eddy:
    Ein kleiner Fehler ist da noch drin mit der Variable:
    Deins:

    Spoiler anzeigen
    ocmd:setadmin(playerid,params[])
    {
    new pID,alevel,string[144],adminrank[16];
    if(sscanf(params,"ui",pID,alevel)) return SendClientMessage(playerid,0xFFFFFF,"Info: /makeadmin [Spieler ID] [Level]");
    if(alevel > 5 ) return SendClientMessage(playerid,0xFF3C3CFF,"Achtung!: Das maximale Adminlevel beträgt 5.");
    Spieler[pID][pAdminlevel] = alevel;
    switch(Spieler[playerid][pAdminlevel])
    {
    case 0:{adminrank="Spieler";}
    case 1:{adminrank="Supporter";}
    case 2:{adminrank="Moderator";}
    case 3:{adminrank="Administrator";}
    case 4:{adminrank="Management";}
    case 5:{adminrank="Projektleiter";}
    }
    format(string,sizeof(string),"{FF1111}Admin Info: {E5E5E5}Der Spieler {23A7F5}%s {E5E5E5}wurde von {23A7F5}%s {E5E5E5}zum {23A7F5}%s {E5E5E5}Befördert!",Spielername(pID),Spielername(playerid),adminrank);
    SendClientMessageToAll(0xE5E5E5FF,string);
    SavePlayerData(pID);
    return 1;
    }

    Richtig:
    Spoiler anzeigen
    ocmd:setadmin(playerid,params[])
    {
    new pID,alevel,string[144],adminrank[16];
    if(sscanf(params,"ui",pID,alevel)) return SendClientMessage(playerid,0xFFFFFF,"Info: /makeadmin [Spieler ID] [Level]");
    if(alevel > 5 ) return SendClientMessage(playerid,0xFF3C3CFF,"Achtung!: Das maximale Adminlevel beträgt 5.");
    Spieler[pID][pAdminlevel] = alevel;
    switch(Spieler[pID][pAdminlevel])
    {
    case 0:{adminrank="Spieler";}
    case 1:{adminrank="Supporter";}
    case 2:{adminrank="Moderator";}
    case 3:{adminrank="Administrator";}
    case 4:{adminrank="Management";}
    case 5:{adminrank="Projektleiter";}
    }
    format(string,sizeof(string),"{FF1111}Admin Info: {E5E5E5}Der Spieler {23A7F5}%s {E5E5E5}wurde von {23A7F5}%s {E5E5E5}zum {23A7F5}%s {E5E5E5}Befördert!",Spielername(pID),Spielername(playerid),adminrank);
    SendClientMessageToAll(0xE5E5E5FF,string);
    SavePlayerData(pID);
    return 1;
    }

    :thumbup:

  • Guten Abend,
    versuche gerade einen Schalldämpfer Befehl für die 9mm zu erstellen.
    Mein momentaner Code sieht folgt aus:

    COMMAND:silencer(playerid,params[])
    {
    if(GetPlayerWeapon(playerid) == 22)
    {
    GiveWeapon(playerid,23,Spieler[playerid][pPlayerWeaponAmmo][2]);
    SendClientMessage(playerid,GELB,"Du hast dir einen Schalldämpfer auf deine 9mm gedreht");
    new string[128];
    format(string,sizeof(string),"** %s dreht sich einen Schalldämpfer auf seine 9mm**",SpielerName(playerid));
    PlayerTalkPublic(playerid,MEFARBE,string,10);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,GELB,"Du hast keine 9mm in der Hand, um den Schalldämpfer draufzudrehen!");
    }
    if(GetPlayerWeapon(playerid) == 23)
    {
    GiveWeapon(playerid,23,Spieler[playerid][pPlayerWeaponAmmo][2]);
    SendClientMessage(playerid,GELB,"Du hast deinen Schalldämpfer von deiner 9mm entfernt.");
    new string[128];
    format(string,sizeof(string),"** %s dreht einen Schalldämpfer von seiner 9mm ab**",SpielerName(playerid));
    PlayerTalkPublic(playerid,MEFARBE,string,10);
    return 1;
    }
    return 1;
    }
    Das funktioniert auch alles, nur eins nicht.
    Wenn ich jetz den Befehl eingebe verdoppelt sich logischerweise meine Munition da ich ja die momentane Munition nochmal hinzufüge:
    GiveWeapon(playerid,23,Spieler[playerid][pPlayerWeaponAmmo][2]);
    Ist es möglich, irgendwie nur die Waffe zu geben ohne Munition?
    Oder gibt es vielleicht einen anderen weg dafür?


    //edit Tippfehler

    Mit freundlichen grüßen,
    Braowl

  • Könnte gehen wenn du ihm 0 Ammo gibst.
    GiveWeapon(playerid,23,0);


    Ansonsten gib ihm 1 Ammo und entferne es wieder hiermit:
    http://forum.sa-mp.de/gta-multiplayer-mods/san-andreas-multiplayer/scripting-base/18-nützliche-codeschnipsel-56#post1949049

    Wenn ich sie auf 0 setzte verschwindet die Waffe komplett. (Was ich i.wie nicht nachvollziehen kann)
    Nun hat es aber mit deiner Funktion auch nicht funktioniert.
    Habe es ncohmal anders versucht, nun funktioniert es.
    Habe aber bemerkt , dass wenn ich 200 Schuss habe und dann /silencer eingebe meine Silenced 9mm erhalte, aber immer nur mit 100 schuss.

    Mit freundlichen grüßen,
    Braowl

  • braowl:
    Bei GTA ist es so wenn deine Waffe den Munitionsstand 0 erreicht verschwindet die Waffe. Deswegen kannst du deiner Waffe keine 0 geben.

    "Imagine if the government went after corruption as hard as it goes after guys who run filesharing sites. Priorities. " - @Snowden
    "More worrying than FBI temporarily running a server that contained child porn, is hacking computers anywhere in the world with one warrant" - @josephfcox

  • Naja, du könntest es auch so machen:
    Ammo speichern in Variable.
    Waffe entfernen, mit meiner Funktion.
    Silenced geben, mit der gespeicherten Ammo.


    Dann hast das Problem mit der Ammo nicht mehr.

    Wie würde das denn aussehen.
    Wüsste nicht wie ich die Ammo abspeicher bzw. aufrufe.


    @.x22 Zieglein
    Das ist richtig, aber ich lade ja den vorherigen Munitionsstand.
    Habe aber bemerkt das es doch nicht so war.

    Mit freundlichen grüßen,
    Braowl

  • Wie mache ich es das Admins den und den Skin bekommen.
    also eine if(isPlayerAnAdmin) Abfrage.
    Gerade voll verpeilt


    #edit

    Mit freundlichen Grüßen
    [color=#696969][i][b]Maxi
    [tabmenu]
    [tab='Signatur!']

    [tab='Mein Computer System']

    • Gehäuse Delux SH891 Midi-Tower (ATX) schwarz
    • Netzteil 650 Watt Corsair VS650
    • Festplatte 1000GB SATA III 7200upm
    • Mainboard AM3 Gigabyte GA-970A-UD3P (Chipsatz:AMD 970/SB950/ATX)
    • NVIDIA Geforce GTX 770 Gainward Phantom
    • 8192MB DDR3 Single Channel 1600MHz
    • Prozessor AM3+ (FX-Serie) AMD FX-8350 8x 4.0 GHz


    [tab='Meine Handys']

    • HTC ONE M8
    • Samsung S3 mini
    • Vll bald HTC ONE M7


    [tab='Mein Steam Account = 1']

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