Beiträge von [COE]CodeX

    Wenn das wirklich so funktionieren würde wie du sagst sollte man finde ich beim kompilieren seines Scripts einstellen können ob es wieder umwandelbar sein soll oder nicht, denn wenn ich aus welchen Grund auch immer nur ne AMX Datei rausgebe sollte es bestimmt auch nur eine AMX Datei bleiben...
    Das ist jedenfalls meine Meinung....vorrausgesetzt ich hab überhaupt richtig verstanden was ein AMX Disassembler ist^^


    Naja ich wollte halt mal probieren diese Vigenere Methode umzusetzen, weil wir das in der Schule mal etwas ausführlicher hatten aber davon mal abgesehen begreif ich schon das Schnippselchen von dir nicht :S
    Wozu die Abfrage if(j>i)j = 0; ?! j bleibt doch immer 0 und verändert sich nicht oder?

    Ahhhh! okay jetzt hab ich das mit dem ASCII verstanden...ich wusste die funktionsweise der ASCII Codes schon...nur nicht, dass man das so direkt abfragen kann^^


    Aber irgendwie hilft mir das ganze nicht in meinem sog. Polyalphabet. Ich kann nun zwar viel einfacher an die Buchstaben des PWs und des Schlüssels kommen aber hab leider keine Ahnung wie ich an den neuen Buchstaben aus dem Array komme....


    Gegen einen Timer ist nichts einzuwenden, der ist im Gegensatz zu deiner Variante sogar besser. Warum?


    Folgendes Szenario:

    • Cheater kommt in den Server, bekommt meinetwegen 100€ Startgeld, ok. Funktion wird aufgerufen, passt alles.
    • Cheater cheated sich 100.000€
    • Nichts passiert, die Funktion wurde ja noch nicht aufgerufen.
    • Cheater verlässt den Server, sein Geld wird nun gespeichert (100.100€), kein Ban, die Funktion wurde noch nicht wieder aufgerufen.
    • Cheater kommt wieder in den Server und erhält nun völlig legal die 100.100€ vom Server.


    Daher: Timer, und zwar einen der alle paar Sekunden abfragt, so wird die Chance minimiert, dass bei einem Server-Absturz oder Neustart ein Cheater sich durchmogelt. Und bei OnPlayerDisconnect unbedingt auch überprüfen.


    Das stimmt aber nicht ganz...du hast zwar Recht, dass wenn die Funktion nicht mehr aufgerufen wird der Cheater auch nciht direkt gebannt wird aber durch diese Variante mit der Geldvariable wird ja beim ausloggen auch die Variable gespeichert und nicht per GetplayerMoney(so würde ich es zumindest machen) und damit nicht sein ercheatetes Geld

    ich danke für die Hilfe...leider nunja hat es mir nicht geholfen :D
    zu 1.
    Das ich diesen extrem umfrangreichen Array gemacht habe liegt in der Natur der Vigenere Verschlüsselung. Man "erschafft" mehrere Alphabete" und greift auf diese zu...ich weiß nicht wie ich genau im geschriebenen erklären soll wie es funktioniert aber jedenfalls bräuchte man...zumindest laut meiner Denkweise einen 2Dimensionalen Array


    zu 2.
    Wie meinst du das mit dem Abfragen des Charcodes?!

    Der folgende Code sollte funktionieren, ist aber ungetestet
    ocmd:fmember(playerid,params[])
    {
    new string[128],bool:online;
    //if(isPlayerInFrakt(playerid,1) || isPlayerInFrakt(playerid,2) || isPlayerInFrakt(playerid,3))return SendClientMessage(playerid,ORANGE,"Du bist in keiner Fraktion");
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(IsPlayerNPC(i))continue;
    if(GetPVarInt(i,"Fraktion") == GetPVarInt(playerid,"Fraktion") && GetPvarInt(playerid,"Fraktion") != 0)
    {
    if(online == false)
    {
    SendClientMessage(playerid,0x00B71EFF,"Fraktions mitglieder online:");
    SendClientMessage(playerid,WEIS,"");
    format(string,sizeof(string),"%s | Rank: %i",SpielerName(i),GetPVarInt(i,"Rank"));
    SendClientMessage(playerid,ORANGE,string);
    online = true;
    }
    else
    {
    format(string,sizeof(string),"%s | Rank: %i",SpielerName(i),GetPVarInt(i,"Rank"));
    SendClientMessage(playerid,ORANGE,string);
    }
    }
    }
    if(online == false)
    {
    SendClientMessage(playerid,DUNKELROT,"Derzeit ist kein Fraktionsmitglied Online");
    }
    return 1;
    }


    Der Befehl ist nun "individuell" für den ausführenden d.h wenn der auführende in Frak 5 ist werden alle aus Frak 5 angezeigt und wenn er aus Frak 2 ist werden alle aus Frak 2 angezeigt. Außerdem hab ich noch eingefügt, dass es nicht für Zivilisten gild(ich bin mal davon ausgegangen, dass diese in Frak 0 sind) das müsstest du eventuelle anpassen

    Also ich habe erst begonnen einen kleinen Verschlüsselungsalgorithmus zu coden.
    Dieser Algorithmus soll nach dem Prinzip der Vigenere Verschlüsselung funktionieren.
    Für den Anfang habe ich den Algorithmus ziemlich nunja statisch gehalten der schluessel ist immer der selbe und das "Passwort" auch(zur Kontrolle),
    aber leider funktioniert der Algorithmus noch nicht so wie ich das haben wollte...
    Hier erstmal der Code
    new buchstaben[][] = {
    {" ","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"},
    {"A","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"},
    {"B","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A"},
    {"C","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B"},
    {"D","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C"},
    {"E","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D"},
    {"F","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E"},
    {"G","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F"},
    {"H","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G"},
    {"I","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H"},
    {"J","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I"},
    {"K","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J"},
    {"L","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K"},
    {"M","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L"},
    {"N","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M"},
    {"O","O","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N"},
    {"P","P","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O"},
    {"Q","Q","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P"},
    {"R","R","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q"},
    {"S","S","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R"},
    {"T","T","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S"},
    {"U","U","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T"},
    {"V","V","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U"},
    {"W","W","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V"},
    {"X","X","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W"},
    {"Y","Y","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X"},
    {"Z","Z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y"}
    };
    stock GetChar(string[],stelle)
    {
    new test[2];
    test[0] = string[stelle];
    return test;
    }


    stock verschl(pw[])
    {
    new schluessel[6]="CDEAB";
    while(i<27)
    {
    if(strcmp(GetChar(pw,0),buchstaben[0][i],false)==0)
    {
    while(j<27)
    {
    if(strcmp(GetChar(schluessel,0),buchstaben[j][0],false)==0)
    {
    return printf("%c blub %c blub %s",GetChar(schluessel,0),GetChar(pw,0),buchstaben[j][i]);
    }
    j ++;
    }
    }
    i ++;
    }
    return print("Nichts");
    }
    Wie man sehen kann soll beim erfolgreichen durchführen das 1. Zeichen des Schlüssel, das 1. Zeichen des Passwortes und die Verschlüsselung des 1. Zeichen des Passwortes geprinted werden....das funktioniert auch fast wunderbar nur leider wird der verschlüsselte Buchstabe nicht geprinted aber der Rest schon :huh:
    Die Verwendung des ganzen sieht wie folgt aus

    verschl("HALLO"); // HALLO ist das pw


    Hoffentlich kann mir jmd. sagen wieso der verschlüsselte Buchstabe nicht geprinted wird.
    Ich hoffe ihr habt mein Problem verstanden und, dass mir jmd. helfen kann.


    PS: Ja es ist resourccenfressend aber ich bin Anfänger^^ und das ist Quasi die 0.0000000000000001 Alpha^^

    Warum funktioniert der folgende Code nicht?
    new zeichen[26][] = {"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};
    new i;
    stock randomword(len)
    {
    new rand[len];//FEHLERZEILE 44
    for(i=0;i<len;i++)
    {
    //strcat(rand,zeichen[random(25)],len);
    strins(rand,zeichen[random(26)],i,len);
    }
    return rand;
    }
    Ich bekomme 4 Errors
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 008: must be a constant expression; assumed zero
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 009: invalid array size (negative, zero or out of bounds)
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : error 036: empty statement
    C:\Users\ALEX_DSL\Desktop\Spiele\GTA SA\SAMP Server\gamemodes\Testverschl.pwn(44) : fatal error 107: too many error messages on one line


    Kann ich in Pawn einem String entwa keine "dynamische Länge" zuweisen?
    /edit: Hab ne Lösung gefunden....ich weis dem String eine Länge von 20 zu und nutze eben nur soviel wie groß eben "len" istAber ich hätte trotzdem gerne eine Antwort^^

    Das folgende ist wirklich nur ne Vermutung, weil ich nicht weiß die der Server damit umgeht aber schau mal
    format(inhalt,sizeof(inhalt),"Kosten:$%i~n~Bestätigen: ~gShift");
    Du gibts ein Platzhalter an (%i) aber keine variable welches "diesen Platz einnimmt" (Parameter)

    Ich geb dir mal ein Vorschlag in der Theorie(habs selbst noch nie ausprobiert war aber mal ein Gedanke von mir^^)


    - Du legst eine Datei mit allen Telefonnummern der Spieler an
    - Jedesmal wenn sich ein User registriert lässt du eine zufällige Nummer generieren und in sein ACcount und diese Datei speichern
    -->Du gehst natürlich die ganze Datei per z.B while Schleife durch und falls die Nummer schgon existiert genrierst du eine neue
    Nun hast du in dieser Datei alle Nummern die du per While Schleife durch gehen kannst


    Skypolee: Und wie soll er das machen? Die ganzen Accounts heißen ja nicht 1.txt, 2.txt sondern User.txt, Fritz.txt aber du kannst ja mal zeigen wie so ne Schleife aussehen soll :sleeping:


    /edit: Die Idee von Gredsoft ist effektiver als meine^^

    So wie Jeffrey es geposted hat sollte es funktionieren aber du hast meinen Code von Gestern anscheinend nicht richtig verstanden sonst hättest du gleich bemerkt, dass es den bool:online ja nur einmal aus true setzt und die "if(online==false) Abfrage nur einmal zutrifft wenn Admins online sind.... :sleeping:

    ich hab gerade mal nachgeschaut...sobal ich über den Internetbrowser auf die Seite von Steam gehe und das Angebot anklicke(egal ob normal Steam oder dein "AT Link") komm ich immer auf eine Kaufseite wo der Hinweis, dass dies die geschnittene fassung ist fehlt...aber wenn man über die Steamanwenung drauf geht kommt der Hinweis und auch die Angabe mit den DLS's fehlt....tja ich musste ja es unbedingt über die Anwenung kaufen....

    Mein Clantag ist kein Clantag sondern langeweile^^ Ich bin in keinem Clan und es steht auch für nichts...wobei ich meine schonmal ein User mit so einem Clantag gesehen zu haben^^

    Also 1. Adde mich auf steam ich suchte das game zurzeit: thisisneonreflexe22
    2. klick mich hart (musst dich halt nur registrieren)


    Ja auf der Seite bin ich registriert(seit ner Sunde^^) und auch schon am runterladen des Patches aber
    1. blöde Hoster...Rapidshare und so..die sind lahm und das ist 7GB groß
    2. hab ich halt gelesen, dass wegen solchen Patches der Steamaccount gesperrt werden kann und ich will wissen ob das stimmt..


    /edit: Hat sich eigentlich erledigt....ich hab mich auf der Seite mit dem Uncut Patch bisschen umgehört und die meinten, dass sie bisher von niemandem gehört haben der wegen solcher Uncut Patches gebannt wurde...höchstens wenn man damit den Support anschreibt^^

    Du meinst ich hätte das Spiel nur über diesen Link kaufen müssen und hätte es zum selben Preis Uncut in meinem Account gehabt?^^....
    ...Verdammt :D
    Aber ich kenn mich mit Steam halt nicht so aus da ich es bis vor kurzen nur so wenig wie möglich benutzt hab (Skyrim)
    Erst seit dem Summer Sale hab ich da mehrere Spiele drauf


    /edit:
    @firestormZ: Ich weiß nicht ob das so vorteilhaft ist wenn ich die einfach mal anschreibe: "Hey ich wohne ja in Deutschland und kann leider nur die Cut Version haben also weollt ich nen Patch installieren der das Spiel gegen euren Willen "uncutet"..Darf ich?" ^^

    Hey Leute


    Ich wollte mal fragen, ob ihr Erfahrung mit Uncut Patches bei dt. Spielen auf Steam habt.
    Wegen des Steam Wochenendangebotes hab ich mir vorhin Sleeping Dogs gekauft.
    Das ist ja die geschnittene Version die nicht soo toll sein soll weshalb ich mir da nen Uncut Patch ziehen wollte....
    ...allerdings hab ich auf manchen Seiten gelesen, dass Steam das mitbekommen könnte und mein Account sperren könnte(suboptimal^^)
    Hat damit (egal bei welchen games) schonmal jmd. Erfahrung machen müssen oder stimmt das gar nicht?


    Kann man bedenkenlos Uncut Patches installieren oder nicht?

    So das folgende ist denke ich die beste Lösung für dein Problem(Resourcenverbrauch und so)
    new Float:Pos[3][MAX_PLAYERS];
    GetPlayerPos(playerid,Pos[0][playerid],Pos[1][palyerid],Pos[2][playerid]);


    Jetzt hast du für die playerid die Werte Pos[0][playerid],Pos[1][playerid] und Pos[2][playerid] individuell


    Bei deinem Code war bestimmt das Problem, dass du deine Variablen nicht als Float deklariert hast ;)

    Der folgende Code sollte (hoffentlich) komplett funktionieren


    ocmd:admins(playerid,params[])
    {
    new string[56],bool:online;
    for(new i=0; i<GetMaxPlayers(); i++)
    {
    if(!IsPlayerConnected(i))continue;
    if(GetPVarInt(i,"Adminlevel") >= 1) && if(!IsPlayerNPC(i))
    {
    if(online == false)
    {
    SendClientMessage(playerid,GELB,"Admins Online:");
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    online = true;
    }
    else
    {
    format(string,sizeof(string),"Admin %s",SpielerName(i));
    SendClientMessage(playerid,WEIS,string);
    }
    }
    }
    if(online == false)
    {
    SendClientMessage(playerid,weiß,"Es ist momentan kein Admin online.");
    }
    return 1;
    }


    @[SoA]TheBester: hast du deinen Code auch schonmal mit mehreren Leuten ausprobiert?...Ein return beendet eine Schleife wie z.B ein "break;" sobald es ausgeführt wird


    /edit: hab den Code noch etwas optimiert