Beiträge von Tion

    Ach, einen permanenten Scripter wollt ihr haben ?
    Dann sorry, missinterpretiert :D


    Zitat

    Mit dem Zollpass meine ich, dass man den vllt im supermarkt kaufen kann


    ... du weißt, dass man die Zoll-Gebühren nicht im Supermarkt bezahlt ?


    Lg,


    Tion

    Zitat

    würde ich sie zuerst 20-30 Tage bei uns testen lassen


    ... gucken, ob einem das Script gefällt, geht auch an einen Tag ;)


    Zitat

    wo man einen Zollpass kaufen kann und keine Genehmigung braucht


    ... ist ein Zollpass nicht eine Genehmigung, oder verstehe ich das falsch ? :D


    ... viel Glück bei der Suche ;)

    Hey Leute,


    ich habe mir aus Spaß mal in einer VM ein Debian eingerichtet, mit FTP, SSH und den ganzen Spielkram.
    Jetzt kam ich gerade auf die Idee, einfach mal mit den Berechtigungen rumzuspielen.


    Ich habe 2 Benutzer:


    ftpuser
    Dem gehört /home/ftpuser und jeder, der sich per FTP einloggt, ist "dieser Benutzer"


    otheruser
    Dem gehört /home/otheruser und der ist... eigentlich nichts besonderes :D


    Jetzt erstelle ich mit otheruser eine Datei "log.txt" in /home/ftpuser und setze die Zugriffsberechtigungen:


    Code
    cd /home/ftpuser
    echo "Log-File" > ./log.txt
    chmod u+rwx ./log.txt
    chmod go-rw ./log.txt


    Soweit, so gut. Mit "ftpuser" kann ich die Datei weder lesen noch schreiben. Aber löschen ? :D
    Wie nehme ich ftpuser die Berechtigung, die Datei löschen zu dürfen ? :D


    Mir geht es nur darum, dass diese Datei da unverändert drinne bleibt -.-


    Hoffe jemand von euch kann mir helfen :love:


    Tion

    So jemand hat selber schuld.
    Ich selber habe hier ein 24-Stelliges aus Zahlen, Sonderzeichen, a-z und A-Z. Auf Servern nutze ich immer andere :D


    Einige werden Socks aber z.B. brauchen, wenn sie in einem (Firmen-)Netzwerk sind, was den Zugriff hier drauf verbietet ...


    Btw., ich surfe auch oft über Proxy, VPN und SSH-Tunnel. Und selbst wenn alle gesperrt sind, gibt es noch die klassischen VicSocks :D

    Zitat

    Kannst du vllt ein Tutorial machen, wie mann das mit den Gruppen erstellt?


    Das wird ein bisschen kompliziert, weil ich die Gruppen „bei dem Benutzer“ speicherte.


    Also ich habe nicht eine Variable „GroupInfo“ sondern speichere das mit in PInfo und lese die beim Spawn mit aus.


    Ich habe vergessen, zu erwähnen, dass rechenlastige Operationen in Threads ausgeführt werden - So zum Beispiel das Parsen des „init.scrp“.


    Code: Beispiel init.scrp
    CreateCar CopCar01 0.5 5.6 2.3
    CarRotation CopCar01 45.0
    CarPermission CopCar01 enter frak.cop.drive

    [Awesome Banner here]


    Hey Leute,


    Vorab: Nix release, nur nachfrage, voll erlaubt.


    Ich wollte einmal mein Script, was noch in Entwicklung ist, vorstellen.
    Bis jetzt heißt es ScriptMaker, da ich was anderes geplant hatte, später heißt es ScriptEngine oder GameEngine oder ScriptGameEngine oder GameScriptEngine oder so :)


    [video]

    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]


    Das Script basiert auf Berechtigungen ( „Permissions“ ), die der Benutzter hat oder nicht hat. Diese Berechtigungen ersetzen das veraltete Ränge-System ( „Level 1“, „Level 4“, ... ) und schaffen eine solide Basis für erfolgreiche Administration.
    Fraktionen werden in diesem Script dank Gruppen unnötig, den Gruppen selber können Berechtigungen zugewiesen werden, damit sie z.B. nur bestimmte Fahrzeuge betreten können.
    Unter der Haube steckt ein SQLite 3er mit dcmd und sscanf, der bis jetzt nur über Dialoge, TextDraws und Tastenkombos gesteuert werden kann. Für die Klassiker existieren natürlich noch die alten Befehle mit endlosen Parametern :D
    Bis jetzt stecken in dem Script knapp 20 volle Arbeitsstunden ( war ein Bug mit dem Login drinne ) und, ich glaube 5k Zeilen ( mit Handy on, keine Lust zum PC zu gehen ;) ).
    Als Sahnehäubchen habe ich mir eine Very-very-very-low Scriptsprache mit dem Namen „scrp“ ausgedacht. Diese dient eher nur als Import-Sprache, um mal eben ein paar Autos per Hand hinzuzufügen.


    Gute Nacht,


    Tion


    (e: Der Grund für diesen Beitrag, ich möchte Feedback, Vorschläge und... Feedback )


    ... habt ihr, mit 15 Jahren, noch nicht "Bewerbungen schreiben" in der Schule gehabt 8|
    War das 8.te oder 9.te Klasse ? :D

    Wo ? In dem Controlpanel deines Hosters, per FTP, in diesem Controlpanel, in diesem Forum, in deinem Email-Postfach, bei deinem Windows, ... ?
    Warum nicht ? Weißer Bildschirm ? Bluescreen ?
    Was hast du vorher gemacht ? Was hast du eingegeben ? Wie hast du das CP eingestellt ?

    Das Tutorial hätte ich vor 3 Tagen gebraucht :D
    Jetzt habe ich mich durch die "einführung" selber durchgequält :)


    (e: Einmal nörgeln muss ich aber noch.
    Nach jeder "db_query" muss der Speicherplatz mit db_free_result freigegeben werden - laut der Wiki auch nach Insert und Update )

    Hey Leute,


    da es mich doch immer wieder wundert, wie... umfangreich einige Booleans ( true / false ) speichern, mache ich hier mal ein Tutorial, wie man in einer Variable speichert, welche von 5 ( oder mehr ) Scheinen man hat.
    Das geht natürlich bei allen anderen Anwendungsgebieten auch, ob ihr nun 85 Gegenstände habt und alle müssen gefunden werden, ihr habt aber keine Lust, 85 Einträge in der Benutzerdatei zu machen, ...


    Vorwissen:

    Spoiler anzeigen

    Ich erkläre euch "schnell und dreckig", wie binär gezählt wird.
    Sicherlich kennt ihr "Zahlen",, die z.B. so aussehen:

    Code
    000100100001001100111000

    Spoiler anzeigen
    und so weiter. Man kann sie in dezimal umrechnen, indem man von rechts nach links immer 2^(Stelle - 1) addiert, wenn der Wert der Stelle 1 ist.
    Als Beispiel:

    Code
    1. Reihe sind die Stellen2. die "Binäre Zahl"8765432100101100Von rechts nach links:Stelle 1 ist 0, nichts machen.Stelle 2 ist 0, nichts machen.Stelle 3 ist 1, 2^(3 - 1) = 4 ( 2 * 2 ). Zwischenstand: 4Stelle 4 ist 1, 2^(4 - 1) = 8 ( 2 * 2 * 2 ). Zwischenstand: 4 + 8 = 12Stelle 5 ist 0, nichts machen.Stelle 6 ist 1, 2^(6 - 1) = 32 ( 2 * 2 * 2 * 2 * 2 ). Zwischenstand: 12 + 32 = 44Stelle 7 ist 0, nichts machen.Stelle 8 ist 0, nichts machen.


    Haubtteil:

    Spoiler anzeigen

    Was ihr sicher nicht gemerkt habt, ist, dass ihr jetzt gerade 8 Werte gespeichert habt / speichern könnt.
    Jeder Stelle in der binären Zahl kann man 1 Wert zuweisen, so ist Wert 1 "false", Wert 2 "false", Wert 3 "true", Wert 4 "true", Wert 5 "false", Wert 6 "true", Wert 7 "false", Wert 8 "false" - das könnt ihr mit der Zahl 44 ausdrücken.
    So wird aus

    Code
    pCarLicense,  pBoatLicense,  pFishingLicense,  pTruckLicense,  pSchlagmichtodLicense,  pMotorbikeLicense,  pPlaneLicense,  pHelikopterLicense

    Spoiler anzeigen
    ein einfaches

    Code
    pLicenses

    Spoiler anzeigen
    Und es müssen keine 8 Zeilen in der Datei ( 8 Rows in der Datenbank ) stehen, sondern nur 1 :O
    Dasbeste daran: Man kann den Inhalt von pLicenses auch einfach in die Datei schreiben und wieder auslesen, man muss dabei nichts beachten - es bleibt in der Datei als einfache Zahl stehen.


    Der Code-Teil:

    Spoiler anzeigen

    Die Abfrage, ob eine Lizens vorhanden ist, eine zu vergeben oder eine wegzunehmen, ist einfach. Dafür brauchen wir nur "+" ( Plus ), "-" ( Minus ) und "&" ( Binäres und ).
    Die Lizensen definieren wir gan oben als Zahl, angefangen mit "1" - die nächste ist der Vorgänger-Wert mal 2 ( oder 2^(Stelle - 1) ).

    Code
    #define LICENSE_CAR         1#define LICENSE_BOAT        2#define LICENSE_PLANE       4#define LICENSE_BIKE        8#define LICENSE_HELI        16#define LICENSE_LKW         32#define LICENSE_FISCHING    64#define LICENSE_KEINEAHNUNG 128

    Spoiler anzeigen
    Wollen wir dem Spieler jetzt eine Lizenz geben, was ja nicht sooo unwarscheinlich ist, addieren wir die Lizens einfach zu seinen Lizensen dazu.

    Code
    PlayerLicenses[playerid] += LICENSE_CAR;PlayerLicenses[playerid] += LICENSE_LKW;

    Spoiler anzeigen
    Ist er jetzt 80 Km/h zu schnell geblitzt worden, ist der Führerscheinlappen erst einmal wieder weg :( 

    Code
    PlayerLicenses[playerid] -= LICENSE_CAR;

    Spoiler anzeigen
    Und wenn er dann noch mit dem LKW angehalten wurde, und seinen Schein vorzeigen soll, lässt sich das auch leicht prüfen:

    Code
    if(PlayerLicenses[playerid] & LICENSE_LKW)    SendClientMessage(playerid, 0xFF00FF, "Du hast eine LKW-Lizens :O");

    Spoiler anzeigen
    .
    Very Very Very important Notiz: Gebt einen Spieler nur dann eine Lizenz, wenn ihr genau wisst, dass er keine hat, und zieht ihm nur dann eine ab, wenn ihr wisst, dass er eine hat.
    Sonst überkreuzt sich das gesammte System ;)


    Voll-funktionierender Code ( mit nur 5 Lizensen, die gegeben, genommen und geprüft werden :(

    Code
    #include <a_samp>#define LICENSE_CAR         1#define LICENSE_BOAT        2#define LICENSE_PLANE       4#define LICENSE_BIKE        8#define LICENSE_HELI        16new licenses = 0;public OnFilterScriptInit(){	print("--- Teste Boolean as Bit ---");	licenses = 0;	// Geben von ein paar Lizensen	licenses += LICENSE_CAR;	licenses += LICENSE_BIKE;	printLicenses();	// Wegnehmen der Bike-Lizens	licenses -= LICENSE_BIKE;	printLicenses();	return 1;}public OnFilterScriptExit(){	return 1;}stock printLicenses(){	print("--- Lizensen ---");	if(licenses & LICENSE_CAR)	    print(" Auto: Vorhanden");	else	    print(" Auto: Nein");	if(licenses & LICENSE_BOAT)	    print(" Boot: Vorhanden");	else	    print(" Boot: Nein");	if(licenses & LICENSE_PLANE)	    print(" Flugzeug: Vorhanden");	else	    print(" Flugzeug: Nein");	if(licenses & LICENSE_BIKE)	    print(" Motorräder: Vorhanden");	else	    print(" Motorräder: Nein");	if(licenses & LICENSE_HELI)	    print(" Helikopter: Vorhanden");	else	    print(" Helikopter: Nein");	print(" ");}


    Tutorial Ende. Feedback, pls :)


    Anmerkung: Das ist kein Copy- und Paste-Tutorial und auch nur Beispieltext, wie ihr Zeilen sparen könnt ;)