[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
  • Tim


    Unter dem Callback OnPlayerEnterVehicle(playerid,vehicleid, ispassenger) musst du einfach abfragen, ob diejenige person Admin ist und es einer deiner Autos ist, also

    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(vehicleid == 1 || vehicleid == 2 || vehicleid == 3) //Halt die ID's deiner Admin Autos, achtung: Die die Funktion AddStaticVehicle gibt die ID des Autos zurück
    {
    if(Stats[playerid][adminlvl] > 0 || IsPlayerAdmin(playerid)) //oder wie du auch immer das Adminsein definiert hast
    {
    SendClientMessage(playerid,0xFFFFFFF, "Du hast das Auto betreten");
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFFF, "Du bist nicht befugt dazu");
    Ban(playerid); //oder Freezen geht auch^^, wobei ein return 0 glaub ich nix bringt weil das eh nichts bestimmtes zurückt das callback
    }
    }
    return 1;
    }


    Damit nur DU diesen Befehl ausführen kannst, gibts verschiedene Arten bzw kommt drauf an....
    du kannst den Namen vergleichen

    new test[MAX_PLAYER_NAME+1];
    GetPlayerName(playerid, test, MAX_PLAYER_NAME);
    if(strcmp(test,"DeinName",true)==0)
    {
    //Befehl ausführen
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFF,"Du bist nicht befugt");
    }

    oder mit IP

    new ip[16];
    GetPlayerIp(playerid, ip, 16)
    if(strcmp(ip,"11:11:..", true)==0)
    {
    //Befehl ausführen
    }
    else
    {
    SendClientMessage(playerid,0xFFFFFFF,"Du bist nicht befugt");
    }





    EliteCake
    Prüf doch einfach das noch dazu, sprich

    if(IsPlayerInRangeOfPoint(...) && IsPlayerInVehicle(playerid, vehicleid)) // oder IsPlayerInAnyVehicle(playerid)
    {
    //Do Sth
    }


  • Nabend, bin gerade am /pay Befehl, klappt alles schön und gut, nur wenn der User playerid /pay 1 50000 macht, dann kriegt der User pID zwar das Geld, aber der User playerid bekommt das Geld auch.
    Habe es so gemacht:
    GivePlayerMoney(playerid,-money);
    Warum "-money"?
    Es soll ihm ja abgezogen werden..
    Hat jemand eine übliche Version die auch funktioniert? ^^

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • darf man verstehen das du jemanden geld geben willst also das du so givemoney machen willst.


    ich meine damit ich gebe dir von mir 5 euro die zieht es mit ab un du bekommst sie oder willst du das einfach nur der jenige per befehl einfach geld bekommt ?

  • Legende:
    Spieler 1 = playerid
    Spieler 2 = pID


    Ablauf:
    playerid tippt in seinen Chat /pay pID 5000.
    pID bekommt 5000$.
    playerid werden 5000$ abgezogen.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • GivePlayerMoney(playerid,-money);
    GivePlayerMoney(pID,money);


    Das stimmt schon, du gibts der playerid quasi einen negativen Betrag, damit ihr was abgezogen wird. Der pID gibst du diesen Betrag

  • Ich hatte vorher es so gemacht das nicht abgefragt ob pID connectet ist, da wurde playerid einfach das Geld gegeben. 8|


    Frage 1:
    Kurze Aufklärung wie ich einem Spieler einen x beliebigen Beitrag "abziehen" kann (/ausrauben).
    Ich brauche nur den kleinen Codeschnipsel, den Rest mache ich selber. ^^


    Frage 2:
    Ich möchte nun, dass der Leader einer Fraktion im Leaderchat schreiben kann, jedoch ist man als Zivilist auch Leader und kann komischerweise schreiben und lesen was die schreiben.
    Habe einfach abgefragt ob sie in der Fraktion 1, 2 und 3 sind. - Erledigt


    //e: Frage hinzugefügt.
    //e²: weitere Frage hinzugefügt.
    //e³: Nötiges hinzugefügt.
    //e4: Frage 2 gelöst.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

    3 Mal editiert, zuletzt von Mr.DubStep ()



  • zur frage 1 benutzt man die random funktion hier ein wiki post http://wiki.sa-mp.com/wiki/Random
    beim geld solltest halt den wert adden anstatt ihrgend eine variabel wie im beispiel am sinnvollsten beim /ausrauben command wäre
    dem random betrag einer variabel zuzuweisen
    sprich
    new rand = random(1000)
    um es dem spieler abzuziehen und dem anderen diesen betrag zu geben


    zur Frage zwei
    kannst mal mit abfragen mit && und dies für jeden zugänglich zu machen außer der fraktionsid 0 GetPVarInt(playerid,"Fraktion") != 0

  • Ich habe jetzt einfach das abgefragt:
    if(GetPVarInt(playerid,"Leader") == 1)
    if(GetPVarInt(playerid,"Fraktion") == 1 || GetPVarInt(playerid,"Fraktion") == 2 || GetPVarInt(playerid,"Fraktion") == 3)
    Oder ist deine Variante leichter mit dem "GetPVarInt(playerid,"Fraktion") !=0". (?)


    Random versuche ich kurz ...

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • du kannst nehmen was du willst mit meiner variante wär es kürzer und das ! bedeutet alles außer so gesehen
    ein beispiel wo es oft verwendet wird bei if(!IsPlayerInRangeOfPoint(playerid,.......)) return SendClientMessage(playerid, ...
    für die kommt dann die nachricht wenn sie überall außer an dem punkt sind und so ist es bei der abfrage es lässt alles zu außer halt in dem falle 0

  • Habe es nun so gemacht, mir wird aber angezeigt das "RandomMoney" nirgends verwendet wird. :huh:


    Spoiler anzeigen
    new Float:RandomMoney[][11] =
    {
    {423},
    {6976},
    {1295},
    {953},
    {3829},
    {1842},
    {2043},
    {1},
    {1329},
    {103}
    };

    Spoiler anzeigen
    ocmd:ausrauben(playerid,params[])
    {
    new pID,string[128],string2[128];
    new rand = random(sizeof(RandomMoney));
    if(GetPVarInt(playerid,"Job") == 5)
    {
    GivePlayerMoney(pID,-rand);
    GivePlayerMoney(playerid,rand);
    format(string,sizeof(string),"Du hast %s beklaut, Beute: %i$.",SpielerName(pID),rand);
    format(string2,sizeof(string),"Dir wurden %i$ von einem Taschendieb geklaut.",rand);
    SendClientMessage(playerid,GOLD,string);
    SendClientMessage(pID,GOLD,string2);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist kein Taschendieb.");
    }
    return 1;
    }


    C:\Dokumente und Einstellungen\Administrator\Desktop\Selfmade\gamemodes\Dubstep.pwn(4749) : warning 203: symbol is never used: "RandomMoney"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Warning.

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.


  • 1. wieso benutzt du normale beträge als float und gibst den somit ein länge von 11 blöcken


    new RandomMoney[10] =
    {
    {423},
    {6976},
    {1295},
    {953},
    {3829},
    {1842},
    {2043},
    {1},
    {1329},
    {103}
    };

  • Hm, das Wiki wollte es so. ^^
    Fehler bleibt immernoch das angezeigt wird, ich würde es nicht verwenden..

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • Also du meinst das "new rand = random(1000);". (?)
    Was würde die 1000 dann bedeuten, den Wert der als Random genommen wird, sprich zwischen 1 und 1000?

    [tabmenu][tab=Signatur,'http://bit.ly/1i4RY3v']

    Wie poste ich richtig?
    Nachdem du Google, die FAQ und die Suchfunktion erfolgreich ignoriert hast, erstellst du 2 bis 5 neue Themen in den falschen Unterforen mit lustigem Titel,
    zu vielen Ausrufezeichen und undeutlichem Text, unter dem sich jeder etwas anders vorstellen kann.



    Mr.Dubstep | GFX | Scripting | Hackerplace
    If Mr.DubStep don't have it, you don't need it.

    [tab=Spieler bei,'http://bit.ly/1db2jaf'][subtab=Hackerplace,'http://bit.ly/1bswN2T']


    Welch wunderschöner Hack ist heute vollzogen worden, könntest Du mir es denn sagen? Ein wunderschönes Browsergame, auch für Kleinigkeiten unterwegs. Erschaffe deinen eigenen Computer, nutze ihn um anderen das Geld zu rauben, schließe dich einem Clan an oder gründe selbst einen. Bleibe allein oder mit vielen Freunden.

  • warum erstellst du ein Extra Enum?



    ocmd:ausrauben(playerid,params[])
    {
    new pID,string[128],string2[128];
    new geld = random(2000);
    if(GetPVarInt(playerid,"Job") == 5)
    {
    GivePlayerMoney(pID,-geld);
    GivePlayerMoney(playerid,geld);
    format(string,sizeof(string),"Du hast %s beklaut, Beute: %i$.",SpielerName(pID),geld);
    format(string2,sizeof(string),"Dir wurden %i$ von einem Taschendieb geklaut.",geld);
    SendClientMessage(playerid,GOLD,string);
    SendClientMessage(pID,GOLD,string2);
    }
    else
    {
    SendClientMessage(playerid,ROT,"Du bist kein Taschendieb.");
    }
    return 1;
    }


    Sollte es gehen.
    Oder du arbeitest mit GetPlayerMoney.. Blablabla dann
    Gibst Du Dem Dieb 1/4 des Geldes GivePlayerMoney(playerid,GetPlayerMoney(pID)/4);


    O.Ä


    Korriegeren wenn ich falsch liege :D


  • 1. Das ist immer noch ein array und kein enum ^^
    2. Er wollte es random haben kein 1/4

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