Beiträge von Padarom

    ocmd:ban(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,5))
    {
    new pID, reason[128],string[128];
    if(sscanf(params,"us",pID,reason)) return SendClientMessage(playerid,RED,"Versuch es noch einmal es geht so: /ban Playerid Grund.");
    format(string,sizeof(string),"AdmCmd: %s wurde von %s gebannt. Grund: %s",SpielerName(pID),SpielerName(playerid),reason);
    SendClientMessageToAll(RED,string);
    SetPVarInt(playerid,"Gebannt",1);
    BanEx(pID, reason); // Du hast hier Kick angewendet. Das kickt den Spieler aber nur.
    }
    return 1;
    }


    Mit freundl. Grüßen
    Padarom

    public DeinTimer()
    {
    new zombieid;
    do
    {
    zombieid = random(MAX_PLAYERS);
    }
    while(!IsPlayerConnected(zombieid) || IsPlayerNPC(zombieid))
    TurnIntoZombie(zombieid); // Dein Zombie-Command
    return 1;
    }
    Das sollte eigentlich sein, was du willst.
    Das erzeugt solange eine zufällige Zahl zwischen 0 und MAX_PLAYERS, bis er eine ID findet, die connected und kein NPC ist.


    Mit freundl. Grüßen
    Padarom

    // Entweder:
    format(string,sizeof(string),"[Name: %s] [Kills: %i] [Tode: %i] [Adminlevel: %i] [Warns: %i]",SpielerName(playerid),GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"),GetPVarInt(playerid,"Adminlevel"),GetPVarInt(playerid,"Warn"));
    // Holt sich die PVar "Kills" anstatt den Score.


    //Oder:
    if(killerid != INVALID_PLAYER_ID)
    {
    new zufall = random(10000);
    SetPVarInt(killerid, "Geld", GetPVarInt(killerid, "Geld") + zufall);
    SetPVarInt(killerid, "Kills", GetPVarInt(killerid, "Kills") + 1);
    SetPlayerScore(killerid, GetPlayerScore(killerid)+1); // Score wurde nicht hochgesetzt -> Eingefügt
    SetPVarInt(playerid, "Tode", GetPVarInt(playerid, "Tode") + 1 + -1000);
    }


    Mit freundl. Grüßen
    Padarom

    Okay danke, dann klappt das ja wie geplant (wird man aber auch noch de/aktivieren können, falls sich da was wichtiges mit dem GM überschneiden würde).
    Hab deine Anfrage angenommen, kannst PN schreiben ;)

    Wird so sein, wie ich es auch bei Cleared to Land gemacht hab.
    Ein Admin sieht, dass ein Ticket geschrieben wurde und klickt dann in der Ticketbeschreibung auf 'nen Button.
    Dann wird dem Schreiber des Tickets (wenn er online ist) eine Nachricht gesendet, dass er bitte mit einem CMD dieses Ticket annehmen soll.
    Danach kann man einfach ohne CMD miteinander schreiben, bis einer von beiden einen CMD zum Schließen eingibt.


    Kleine Zwischenfrage an die Scripter:
    Überschneidet sich OnPlayerText im FS mit dem des GM's? Also wenn ich im FS return 0; schreibe, aber im GM return 1; steht, wird die Nachricht ja trotzdem gesendet?

    Danke für die guten Bewertungen :)


    @Bear: Sollte nur ein kleiner Schmankerl sein ;)
    Meisternuke: Die Admins geben einen CMD ein, worauf sich eine Liste öffnet (10 Einträge, danach Seite 2 mit ebenfalls 10 Einträgen). Jenachdem welchen Eintrag man anklickt kommt man zu einer Beschreibung der Beschwerde (ähnlich dem Bestätigen-Dialog für's Absenden). Dort kann man die Beschwerde dann auch bei Bedarf löschen.
    Vielleicht werde ich daraus dann auch noch ein Ticketsystem machen, mit dem die Admins dann direkt den jeweiligen Nutzer, der die Beschwerde abgesendet hat, sprechen können.

    Hallo,
    hiermit biete ich euch mein selbstgeschriebenes Fahrzeugsystem.
    [tabmenu]

    [tab='Scriptinfos']

    • Motor- & Lichtsystem (Tasten zum Ein-/Ausschalt selbst definierbar, aktuell Q/E)
    • Tanksystem (Kosten/Liter und Verbrauch selbst einstellbar)
    • Geschwindigkeitsanzeige (Koeffizient zur Geschwindigkeitsberechnung selbst einstellbar)
    • Kilometerzähler (Auf Wunsch inkl. Speicherung des Kilometerstandes*)
    • Fahrzeugzustandsanzeige
    • Fahrzeugnamensanzeige

    Alles wird in einem sauber erstelltem Textdraw - welches nicht zu viel Platz verbraucht und sich in der rechten unteren Ecke befindet - angezeigt.
    [tab='Kaufinhalt']Ihr bietet auf das vollwertige Script, inklusive .pwn und .amx-Datei.
    In der .pwn-Datei befinden sich Anweisungen zu möglichen Änderungen, die von euch getroffen werden können/müssen.


    Achtung: Betanken kann man ein Fahrzeug nur an Tankstellen. Diese sind noch nicht eingetragen, müssen also von euch
    nachgetragen werden. Das folgt einem simplen Muster und ein Beispiel ist bereits enthalten.


    Nicht enthalten sind: Updates bzw. Änderungen (beispielsweise unterschiedlicher Verbrauch von verschiedenen Fahrzeugen).
    Außerdem steht es euch nicht frei, das Script nach dem Handel weiterzuverkaufen, zum Download anzubieten oder in irgend einem anderen Weg zu verbreiten.


    Wenn ihr einen Testserver haben wollt, um das Tacho zu testen, so gebe ich euch gerne eine IP über Private Nachricht durch.
    [tab='Bezahlung']Das Script wird nach aktuellem Stand nur 1x verkauft.
    Der Preis beläuft sich auf 5€ (via Paysafecard) oder 2,50€ (+ Gebühren) per Paypal. Banküberweisung ist ebenfalls möglich,
    würde die anderen beiden Methoden jedoch vorziehen.


    Natürlich möchte ich auch nicht, dass ihr das Script danach zum Download anbietet oder weiterverkauft. Es darf also nur in eurem Besitz sein.
    [tab='Sicherheit']Zur Sicherheit eures Kaufes werde ich auf Wunsch einen Mittelsmann hinzuziehen.
    Dieser wird entweder DurtyFree oder Trooper sein (Denke ich zumindest mal, wenn keiner von beiden Zeit hat,
    ggf. auch jemand anders).
    [tab='Screenshots']


    [video='Vorschauvideo',center,wide]

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.
    [/video]
    [tab='Kaufabwicklung']

    • Ihr nehmt Kontakt mit mir auf (per PN o. Skype @ ooofreakyooo)
    • Ihr könnt das Tachosystem auf meinem Testserver testen (auf Wunsch)
    • Ihr könnt mir Fragen darüber stellen
    • Wir besprechen alles weitere (Mittelsmann?)
    • Mittelsmann kontrolliert mein Script und euren Gift-Key
    • Ihr erhaltet das Script vom Mitelsmann

    Beachtet aber, dass Punkt 3 immer wieder die Position tauschen kann :P
    [/tabmenu]


    Ich hoffe, dass euch meine Vorstellung zugesagt hat.


    Mit freundl. Grüßen
    Padarom

    Hallo,
    heute stelle ich euch mein erstes veröffentlichtes Filterscript vor. Es ist ein Reportsystem, mit dem man Spieler aufgrund verschiedener Gründe mit einer Kurzbeschreibung den Admins melden kann.
    Diese Beschwerde wird als Datei (oder in einer MySQL) gespeichert und falls gewünscht einem Admin gesendet.


    Englische Version



    Das Script ist sozusagen dynamisch/flexibel aufgebaut, was heißt, dass ihr selbst ohne Scriptkenntnisse ganz einfach Einstellungen treffen könnt.
    Daher rührt auch der Name des Scripts (und meiner zukünftigen): dynamic Report


    Außerdem sind 3 Speicherungsmethoden zulässig.

    • MySQL (Plugin von Strickenkid, ist im Download inbegriffen)
    • Dini (Include von DracoBlue, ist im Download inbegriffen)
    • fwrite-Funktionen (benötigt keine Includes, SA:MP native Funktionen)

    Wie verwendet man das Reportsystem?

    • /report oder /melden - Danach den Dialogen folgen
    • TAB-Menü, Spieler anklicken - Danach den Dialogen folgen (kann falls nicht gewollt deaktiviert werden)
    • /showtickets, /tickets, /checkreports - Als RCON-Admin (oder im Gamemode per pVar gespeichert, s. Changelog) um alle erstellten Tickets einzusehen (erst ab v1.12 am 24.02.)

    Was muss vor dem Nutzen des Scripts erledigt werden?

    • Im Script muss eingestellt werden, welche Dateispeicherungsmethode verwendet wird. Dazu bitte den Anweisungen im Script folgen und die entsprechenden Zeilen ausklammern.
    • Soll dini/fwrite zum Speichern verwendet werden, so muss der Pfad im Scriptfiles-Ordner angegeben und der entsprechende Ordner manuell erstellt werden.
    • Wird MySQL verwendet, so muss man die Nutzerdaten angeben. Dazu ebenfalls den Anweisungen folgen.

    • Code
      CREATE  TABLE  `reports` (  `id` INT NOT  NULL  AUTO_INCREMENT ,  `reporter` VARCHAR( 24  )  NOT  NULL ,  `reported` VARCHAR( 24  )  NOT  NULL ,  `reason` VARCHAR( 24  )  NOT  NULL ,  `description` VARCHAR( 68  )  NOT  NULL ,  `read` INT( 2  ) ,    `time` VARCHAR( 24  )  NOT  NULL ,  PRIMARY  KEY (  `id`  )   )

    Warum Padarom's Script?
    Weil ich bereits seit knapp 3 1/2 Jahren im deutschen SA:MP Forum registriert bin, seitdem knapp 900 Beiträge sammeln konnte und mir daher einen recht ansehlichen Ruf erarbeitet habe, ohne wirklich negativ aufzufallen.
    Außerdem habe ich das teils erfolgreiche Projekt "Cleared to Land" geleitet und dafür gescriptet (das Script gibt es in meiner Signatur zu finden). Ebenfalls geleitet und gescriptet habe ich (für) das Projekt "xReallifex" (später Dynamic Reallife, wird ggf. bald fortgesetzt).
    Wie ihr also sehen könnt, habe ich einiges an Erfahrung gesammelt. Diese Erfahrung, gemischt mit dem Inhalt meines Filterscripts ergibt nur eins: Download- und Nutzpflicht!


    Irren ist menschlich...
    Deshalb wusste ich auch nicht bei jeder Scriptpassage genau, welchen Code ich benötige. Da ich die File-Funktionen bisher noch nie in der Praxis verwendet habe, wusste ich auch erstaunlich wenig über diese bescheid - Zumal die Dokumentation in der englischen Wiki dafür recht dürftig ausfällt. Aus diesem Grund habe ich das ein oder andere Mal nach Hilfe gefragt, und bedanke mich hierbei bei ein paar Leuten, die mir mehr oder weniger geholfen haben.
    Goldkiller, BloodyEric, Y_Less (Hilfe im englischen Forum)

    Changelog


    Download
    Pastebin
    Mediafire
    Virustotal Scan
    Lizenz:


    Screenshots




    Mit freundl. Grüßen
    Padarom

    @TuX: Muss nicht sein. Ich hab auch schon per Kleinanzeigen verkauft und bis nach Berlin verschickt (wohne in der nähe von Frankfurt/Main).
    Nur ist das persönliche Abholen natürlich sicherer, als das verschicken (zwecks Bezahlen usw.)


    Shadowfighter: Einfach auf http://kleinanzeigen.ebay.de/ "Anzeige aufgeben" anklicken und alles ausfüllen.

    Alternativ könntest du auch was bei Ebay Kleinanzeigen reinstellen, da fallen gar keine Gebühren an und du kannst das Angebot immer verlängern oder wieder rausnehmen.
    Da werden Kaufe/Verkäufe aber bisschen anders gehandhabt, gibt keine Auktionen, sondern du setzt einen Preis an und interessierte Leute kontaktieren dich dann per Mail.

    Die Kollision ist im Moment nicht meine Sorge,
    mir geht es eher um die Tatsache, dass man sich "Mini-Scripts" im npcmodes-Ordner schreiben muss.


    Wie schaffe ich es dann, den zugehörigen Spieler als Variable von meinem Gamemode in den npcmode zu übergeben?

    Hallo,
    ich habe mich bisher nicht wirklich mit NPC's beschäftigt, jetzt aber ein großes Vorhaben, bei dem ich noch keine Idee habe, wie es zu bewerkstelligen ist.
    Hier meine Idee: Ein Spieler kommt auf den Server, registriert sich und wählt einen von zwei Spawns aus.
    Danach soll ein Taxi vorfahren, welches an einem bestimmten Punkt hält und erst wieder weiterfährt, wenn der Spieler im Taxi sitzt (PauseRecordingPlayback und ResumeRecordingPlayback).
    Das Taxi fährt zu einem bestimmten Punkt, hält dort auch wieder und fährt erst weg wenn der Spieler ausgestiegen ist.


    Die NPC's haben alle feste Namen mit denen sie connected werden ([BOT]%i - %i ist dabei die ID des dem Bot angehörigen Spielers). Wenn der Bot connected, wird die ID extrahiert und in einer
    dem Bot eigenen PVar gespeichert. Diese wird dann außerdem an den Timer übergeben, in dem alle 2 Sekunden überprüft wird, ob der Bot an der bestimmten Stelle ist UND der Spieler drin sitzt usw.


    Dabei ist aber erstmal meine Frage, ob es überhaupt möglich ist, mehrere NPC's dem gleichen Recording zuzuweisen und sie dieses gleichzeitig abspielen können (falls sich mehrere Leute gleichzeitig registrieren).
    Die entsprechende Funktion (StartRecordingPlayback) beinhaltet ja nur den Recording Type und Recording Name, nicht die ID des jeweiligen Bots.


    Ich hoffe ihr könnt mir ein wenig unter die Arme greifen.


    Mit freundl. Grüßen
    Padarom

    Hallo,
    ich möchte mein aktuelles Script so erweitern, dass im Passwort der User mindestens eine Zahl vorkommen muss. Die Funktion IsNumeric überprüft ja nur, ob der ganze String eine Zahl ist, was ich aber nicht will.
    Ich habe es bereits wie folgt versucht, allerdings kommt dann immer "Keine Zahl" raus.
    new inputtext[16] = "Hallo1.", bool:found=false;
    for(new i=0; i<sizeof(inputtext); i++)
    {
    if(IsNumeric(inputtext[i]))
    {
    found = true;
    break;
    }
    }
    if(!found) print("Keine Zahl");
    else print("Eine Zahl.");


    Ich hoffe ihr könnt mir einen Lösungsansatz geben, bzw. meinen Versuch fixen.


    Mit freundl. Grüßen
    Padarom

    public IsPlayerName(playerid, name[])
    {
    new pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
    if(!strcmp(pName,name,false)) return 1;
    else return 0;
    }
    Schnell mal geschrieben, so sollte das eigentlich als Funktion klappen.


    Mit freundl. Grüßen
    Padarom

    ocmd:rankup(playerid,params[])
    {
    new pID,rang;
    if(GetPVarInt(pID,"Fraktion")==0 && IsPlayerConnected(pID)) // Hier war der Fehler
    {
    if(GetPVarInt(playerid,"Frakrang")==5)
    {
    if(GetPVarInt(playerid,"Fraktion")==GetPVarInt(pID,"Fraktion"))
    {
    GetPVarInt(pID,"Frakrang");
    SetPVarInt(pID,"Frakrang",rang);
    if(sscanf(params,"ud",pID,rang))return SendClientMessage(playerid,Orange,"Benutze: /rankup [playerid] [rang]");
    SendClientMessage(playerid,Gelb,"Du hast ihn erfolgreich Befördert.");
    SendClientMessage(pID,Gelb,"Du wurdest Befördert.");
    }
    else
    {
    SendClientMessage(playerid,Rot,"Der ausgewählte Spieler ist nicht in deiner Fraktion.");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Frak leader.");
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Der angegebene Spieler ist bereits in einer Fraktion oder nicht Online");
    }
    return 1;
    }
    So sollte es stimmen.


    Mit freundl. Grüßen
    Padarom