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; }
loose indentation ist ein Warning, der bei fehlerhaftem Einrücken kommt. Rücke deine if-Abfrage auf die gleiche Höhe wie das return (mit der Tab-Taste), dann ist die Warnung weg.
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.
Anstatt dem Screenshot könntest du auch einen Link zu dieser Seite machen: http://www.minecraft.net/haspaid.jsp?user=NeMic73 Wenn da true steht, dann sieht man, dass der Account Minecraft gekauft hat.
Ist vll. einfacher, soweit ich weiß ist der Skinauswähl-Button auch bei Accounts, die Minecraft noch nicht gekauft haben.
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?
@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']
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 [/tabmenu]
Ich hoffe, dass euch meine Vorstellung zugesagt hat.
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.
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.
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
Code
dynamicReport v1.12 - 24.02.2012-19:45
+ Falls gewünscht, kann nun auch zwischen Gamemode und Filterscript kommuniziert werden, und das Adminlevel aus einer frei definierbaren PVar gelesen werden.
Damit kann eine Nachricht auch an Nicht-RCON-Admins gesendet werden.
+ Command /showtickets, /tickets, /checkreports hinzugefügt, mit dem alle Tickets ingame eingesehen werden können (und auch ingame löschbar sind).
+ Adminchat zwischen Beschwerdeschreiber und Admin eingefügt.
+ Bei der Ticketanzeige wird nun ebenfalls farbig hinterlegt, ob das Ticket bereits von einem Admin eingesehen wurde (dafür die neue MySQL-Anweisung beachten, Feld "read" hinzugefügt.)
# fwrite-Funktionen werden dynamischer erstellt. Keine Abhängigkeit von der Datei num.txt mehr.
dynamicReport v1.03 - 20.02.2012-11:45
+ MySQL-Tabelle wird (sofern MySQL ausgewählt ist) automatisch erstellt, wenn sie noch nicht existiert.
# Auswahl der Dateispeicherungsmethode geschieht jetzt über die Änderung einer Zahl (anstatt Ausklammern mehrerer #defines).
# Dialoge werden nun über ID's aufgerufen, anstatt über eine stellvertretende Bezeichnung.
- MySQL/dini-Include werden nicht mehr benötigt, wenn die fwrite-Funktion verwendet wird (aktuell nur Pastebin-Version).
VERWENDETE DIALOG-IDS: 100 bis einschließlich 107
@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.)
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.
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.
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.
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.
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.
Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen.Weitere InformationenSchließen