Ein haufen Fragen

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 bins nochmal schnell,
    ich möchte ein Script erstellen das wenn ein Spieler 100 Kills hat das er dann eine Waffe bekommt, volle HP und Armor.


    Als 2. ein Script das Geld durch Zufall verteilt, das heisst es wird in einer bestimmten Zeit z.B. 10 Minuten ein Zufallsspieler bereichert, der Bereich um wieviel Geld es sich handelt sollte man festlegen können am besten zwischen 100 und 1000$.


    Als 3. ein Script das wenn man eine bestimmte Zeit lang schon zum Server verbunden ist das man dann deine Zufallswaffe bekommt, ja wirklich eine Zufallswaffe, also muss man dort auch wieder einen bestimmten Bereich festlegen.


    Als 4. ein Script das AFK Kicks durchführt, das heisst wenn jemand eine bestimmte Zeit verbunden ist sich aber nicht bewegt das er dann vom Server geschmissen wird.


    Wie stelle ich das alles an? Es klingt vielleicht nach einfachen Fragen aber wie schonmal angedeutet, ich kann zwar programmieren aber muss mich halt erst zu recht finden. Lieber einmal mehr fragen als einmal zu wenig nacher lerne ich das falsch.


    Ich danke für jede Antwort und wünsch euch eine gute Nacht :)

  • Zu deiner ersten Frage:


    new Kills[MAX_PLAYERS];


    public OnPlayerConnect(playerid)
    {
    Kills[playerid] = 0;
    return 1;
    }


    public OnPlayerDeath(playerid, killerid, reason)
    {
    Kills[killerid]++;
    if(Kills[killerid] == 100)
    {
    GivePlayerWeapon(killerid, 35, 500); // gibt dem Spieler einen Raketenwerfer mit 500 Schuss...
    SetPlayerArmour(killerid, 100.0); // und eine Schutzweste...
    SetPlayerHealth(killerid, 100.0); // und volles Leben.
    }
    return 1;
    }

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

  • zu 4 (noch ungetestet)


    //oben ins script
    forward autokick(playerid);

    //bei ongamemodeinit
    SetTimer("autokick",600000,1);//sind glaube 10 minuten


    //am besten ganz unten ins script
    public autokick(playerid)
    {
    new Float:autokx, Float:autoky,Float:autokz;
    new pos = GetPlayerPos(playerid,Float:autokx, Float:autoky,Float:autokz);
    if(pos == pos)
    Kick(playerid);
    return 1;
    }


    edit timer zeit geändert

    Einmal editiert, zuletzt von Kain101 ()

  • Ich danke euch schonmal :) aber ich hab noch Fragen bezüglich des Codes damit ich ihn verstehe, also:
    new Kills[MAX_PLAYERS];

    Was macht diese Befehl? Also er gibt der Variable Kills eine definition aber was hat das mit dem MAX_PLAYERS zu bedeuten?


    Oh, war doch nur eine Frage :) umso besser. Danke schonmal für die ganze Hilfe und schonmal im Vorraus für die Erklärung.

  • mit MAX_PLAYERS wird die Variable für alle Spieler erstellt.


    EDIT:


    zu 3:



    new onlinezeit[MAX_PLAYERS];
    forward Online(playerid);
    // OnPlayerConnect
    onlinezeit[playerid] =0;
    SetTimerEx("Online",60000,1,"d",playerid);


    // OnPlayerDisconnect
    onlinezeit[playerid] =0;


    // Public:
    public Online(playerid)
    {
    onlinezeit[playerid] ++;
    if(onlinezeit[playerid] >= 60)
    {
    GivePlayerWeapon(playerid,WAFFENID,1000);
    SendClientMessage(playerid,FARBE,"Da du 1 Stunde online warst, bekommst du eine Waffe!");
    onlinezeit[playerid] =0;
    }
    return 1;
    }


    Nicht getestet aber soltle funktionieren. Statt WAFFENID musst du eine Waffen-ID eingeben und statt FARBE eine Farbe.

    Einmal editiert, zuletzt von Haxler ()

  • Ah, schön zu wissen dann kann ich mir ja eine Menge Arbeit sparen. So, nun meine letzte Frage:
    Wo ist der unterschied zwischen den Klammern () und []? Also wann setzt man was ein? Sind die Klammern () für normale Parameter und die [] für sozusagen Sub-Parameter? Also das man die eckigen nur dann einsetzt wenn sie in den runden kommen? ?( Aua, das kann ja auch nicht sein... Wann setzt man was ein?


  • wie schon erwähnt 1000 Millisekunden sind 1 Sek und nun berechne mal wie viel 60000 sind. Es sind dann wohl 6 min und keine Stunde

  • 60000 millisekunden sind 1 Minute. Im Timer wird pro Minute die Variable hochgehählt und wenn sie auf 60 ist (60*60 = 3600 = 1 Stunde) bekommt man die Waffe etc. Das praktische daran ist, man kann jederzeit die onlinezeit variable abfragen.

  • Zitat

    wie schon erwähnt 1000 Millisekunden sind 1 Sek und nun berechne mal wie viel 60000 sind. Es sind dann wohl 6 min und keine Stunde

    Das ist nicht weiter schlimm ;) ich kann eine andere Programmiersprache daher weiss ich das Timer immer in Millisekunden zählen. Ich würde es sowieso genaustens anpassen und nicht einfach rauskopieren. Das was schlimm ist, ist das ich noch immer nicht den Unterschied zwischen den Klammern kenne ?(

  • MAX_PLAYERS ist für SA-Mp als 500 definiert. Also die maximale Spieleranzahl. Kills[MAX_PLAYERS]; Ist im Grunde dasselbe wie: Kills[500];


    Also erstellt Kills[MAX_PLAYERS]; : Kills[0], Kills[1], Kills[2], usw bis 500, für jede SpielerID eine Variable. Und anstatt die Zahl in die Klammern einzusetzen, kann man eben playerid einsetzen, falls es definiert ist.


    Nehmen wir an, Spielerid 7 macht einen Kill. Dann wird die public "OnPlayerDeath(playerid, killerid, reason)" aufgerufen. Die Killerid ist in dem Fall die 7. Wenn Kills[killerid] bzw. Kills[7] vorher den Wert 0 hatte, wird der nun um einen erhöht (Kills[killerid]++; ).

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.

    Einmal editiert, zuletzt von RedDragon ()

  • Zu der Zufallswaffe:

    new bool:p=false,ID;
    while(p!=true)
    {
    new idx;
    idx=random(49);
    if(idx!=44||idx!=45||idx!=46||idx!=47||idx!=48)
    {
    ID=idx;
    p=true;
    }
    }
    GivePlayerWeapon(playerid,ID,1000);
    Müsste eigentlich so gehen.
    Gruß Hauke ;)

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.

  • Zitat

    MAX_PLAYERS ist für SA-Mp als 500 definiert. Also die maximale Spieleranzahl. Kills[MAX_PLAYERS]; Ist im Grunde dasselbe wie: Kills[500];


    Also erstellt Kills[MAX_PLAYERS]; : Kills[0], Kills[1], Kills[2], usw bis 500, für jede SpielerID eine Variable. Und anstatt die Zahl in die Klammern einzusetzen, kann man eben playerid einsetzen, falls es definiert ist.


    Nehmen wir an, Spielerid 7 macht einen Kill. Dann wird die public "OnPlayerDeath(playerid, killerid, reason)" aufgerufen. Die Killerid ist in dem Fall die 7. Wenn Kills[killerid] bzw. Kills[7] vorher den Wert 0 hatte, wird der nun um einen erhöht (Kills[killerid]++; ).

    Jetzt weiss ich genau was es bedeutet, da kann ich mir ja wirklich Arbeit sparen.


    Zitat

    Zu der Zufallswaffe:

    Das hab ich so gelöst:
    new rand;
    new muni;

    if(Kills[killerid] == 100){
    rand = 0;
    muni = 0;
    rand = random(46);
    muni = random(50);
    GivePlayerWeapon(killerid,rand,muni);
    SetPlayerArmour(killerid,100);
    SetPlayerHealth(killerid,100);
    SendClientMessage(killerid,COLOR_YELLOW,"Herzlichen Glückwunsch! Du hast nun 100 Kills!");
    SendClientMessage(killerid,COLOR_YELLOW,"Du hast eine Zufallswaffe mit unbekannter Munition bekommen!");
    SendClientMessage(playerid,COLOR_YELLOW,"Dein wild-um-sich-schießender Kollege hat nun 100 Kills!");
    }
    Ich hoffe es geht so :)

  • Ein Bool ist eine Variable, nur dass du ihr keine Zahlenwerte geben kannst, sondern nur false oder true.


    Beispiel:


    new bool:Variable;


    Variable = false;
    Variable = true;

    mfg RedDragon 8)


    Was ist GFKD?


    Ein revolutionärer Clan, dessen Eröffnung kurz bevorsteht.
    Mehr Informationen folgen bald.