Beiträge von xyShadowyx

    Dein Beitrag besteht aus einem Zitat und du gibst keine genauen Anhaltspunkte zu dem Projekt. Das einzige Sinnvolle in dem Beitrag ist eine Googlemail Adresse, an die man sich "blind" Bewerben soll? Zudem frage ich mich, wie du behaupten kannst, ein "recht guter Programmierer" zu sein, wenn du an einem einfachen MySQL Insert Query scheiterst. Ebenfalls verstehe ich nicht, warum diese E-Mail Masche? Wieso kannst du keine Fragen in diesem Thread beantworten, damit gleiche Fragestellungen ausgeschlossen werden? Möchtest du etwas verheimlichen? Wieso gibst du keine Details zu dem Projekt an?


    Beantworte mir meine Fragen und ich werde mich Melden.



    xyShadowyx

    Ich habe mir das "User Control Panel" angesehen und nach kurzer Zeit einige Fehler entdeckt. Einer davon ist eine mögliche MySQL Injection, welche in ein Kostenpflichtiges UCP nicht hinein gehört und ich weitere MySQL-Injection Möglichkeiten nicht ausschließen.


    Mängel:

    • Weiterleitungen
      Als erstes sind mir die Redirects aufgefallen, welche die wahren Links mit den GET Parametern verstecken. Die GET Parameter werden wahrscheinlich zwischengespeichert und anschließend nach der Weiterleitung wieder abgerufen. Diese erlauben jedoch keine Direktlinks auf Parameter basierten Content z.B. auf eine bestimmte Beschwerde. (Vor- / Nachteil)



    • MySQL Injection
      Die von mir als versteckt bezeichneten Links, welche die "wahren" GET Parametern beinhalten werden nicht gefiltert. Dies führt dazu, dass MySQL Injection in einem gewissen maß möglich ist.



    • Javascript Error
      Es gibt einen Javascript Fehler, dass "$" nicht definiert sei. Da frage ich mich dann, ist diese defekte Funktion nötig?




    Trotz der Mängel hat das UCP sehr umfangreiche Funktionen und Features!
    Ein Sicherheitsupdate würde dem UCP mehr vertrauen verleihen.



    xyShadowyx

    Da es mit "include" nicht funktioniert, würde ich dir vorschlagen mit der HTTP Funktion deine Objekte abzurufen und diese anschließend zu erstellen. Der Vorteil, wenn man eine Funktion wie "LoadObjectsFromHTTP(const link[])" hat, ist, dass die Dateien in Maps gegliedert werden können.



    xyShadowyx

    Du vergisst, dass der Virenscan jede einzelne Datei ausliest und nicht nur den Namen abfragt, wie hier in diesem Fall.
    In C# gibt es diese Funktion:
    public static string[] GetFiles(
    string path,
    string searchPattern,
    SearchOption searchOption
    )


    Damit sollte dann etwas in der Art möglich sein:

    using System.IO;


    ...


    static void Main(string[] args)
    {
    string[] files = Directory.GetFiles(@"c:", "samp.*", SearchOption.AllDirectories);
    Console.WriteLine("Gefundene Dateien:");
    foreach(string file in files)
    {
    Console.WriteLine(file);
    }
    }

    Das ist ein nützlicher Beitrag, Anfängerfreundlich erklärt und überschaubar.


    Aber das Passwort wird ohne eindeutige Identifikation des Spielers geändert, somit kann jeder das Passwort eines Spielers ändern lassen. Dieses Problem wird in Foren oder anderen Portalen umgangen, indem zwei E-Mails versendet werden. In der ersten E-Mail befindet sich ein generierter Link, welcher die Änderung des Passworts übernimmt und eine weitere E-Mail mit dem Passwort an den Spieler sendet. Dadurch, dass der Link nur dem Kontoinhaber bekannt ist, ist auch die Identität des Spielers eindeutig.

    Dafür, dass du vor kurzem erst angefangen hast, sind dies hervorragende Werke.
    Ich wünsche dir noch viel Erfolg damit.


    MfG
    xyShadowyx

    Guten Tag,
    dies ist ein Tutorial was man am besten machen sollte, wenn man keine Lösung auf eine Script frage findet.


    Du hast seid Stunden eine Frage?
    Es antwortet keiner auf deine Themen oder schreibt dir eine funktionierende Lösung?


    Seid einigen Tagen wurde die Seite Cold-Tech.de entwickelt. Sie hilft dir genau bei diesen Problemen.


    Hier ist das Tutorial, wie man Cold-Tech.de benutzt.


    [tabmenu]


    [tab=Schritt 1 Account erstellen:]
    Gehe auf Cold-Tech.de und klick, oben in der Navigation, auf "Anmelden".
    Dann kann man zwischen "Anmelden" und "Registrieren" auswählen.
    Um einen Account zu erstellen musst du deine richtige Daten in das Registerformular eingeben.
    Siehe hier:


    Anschließend auf "Registrieren" klicken.
    [/tabmenu]


    [tabmenu]


    [tab=Schritt 2 Account aktivieren:]
    Du hast eine E-Mail erhalten mit deinen Aktivierungsdaten.
    Klicke auf den Link in der E-Mail und aktiviere deinen Account.


    Die erfolgreiche Aktivierung sieht wie folgend aus



    [/tabmenu]


    [tabmenu]


    [tab=Schritt 3 Einloggen und Auftrag erstellen:]
    Einloggen kannst du dich ebenfalls unter Anmelden.
    Einfach die Felder in dem Anmeldeformular ausfüllen und "Anmelden" drücken.


    Ein Auftrag ist einfach zu erstellen.
    Du klickst auf "Neuer Auftrag".
    Dort kannst du dann die Scriptsprache und die Art des Auftrags auswählen.
    Wenn alles erfolgreich ausgewählt wurde klickst du auf Weiter.


    hier ist ein Beispiel:
    Ausgewählt wurde:
    Scriptsprache: PAWN
    Art des Auftrags: Script Teil


    Thema:

    Code
    Ein Fahrzeug erstellen an X Y Z


    Nachricht:

    Code
    Ich möchte ein Fahrzeug unter OnPlayerSpawn erstellt haben. 
    Es soll an den Koordinaten x[playerid] y[playerid] z[playerid] spawnen.


    Code:

    Code
    public OnPlayerSpawn(playerid)
    {
        if(vehicle[playerid] == 0)
        {
            //hier soll das Fahrzeug erstellt werden.
        }
        return 1;
    }


    Variablen:

    Code
    new x[MAX_PLAYERS];
    new y[MAX_PLAYERS];
    new z[MAX_PLAYERS];


    und dann "Absenden" drücken.


    Anschließend ist der Auftrag abgesendet und kann unter "Meine Aufträge" eingesehen werden.
    [/tabmenu]


    [tabmenu]


    [tab=Schritt 4 Erhalten einer Antwort:]
    Wenn der Auftrag angenommen wurde, kann zwischen dem Auftraggeber und dem Auftragnehmer durch ein Nachrichten System kommuniziert werden.
    Dieser Schritt ist simpel und der Auftragnehmer kann Fragen an den Auftraggeber stellen damit der Auftraggeber eine zufriedene Lösung erhält.
    Wenn du (Auftraggeber) eine passende Antwort erhalten hast kannst du dem Auftragnehmer bescheid sagen damit er es als erledigt Markieren kann.
    [/tabmenu]


    Cold-Tech.de ist komplett kostenlos und sicher. Es ist jedem gestattet fragen zu stellen und es kann so gut wie zu keinen peinlichen Situationen führen.
    Teste es und mach deine Erfahrung.





    Begründung warum ich dies in diesem Bereich gepostet habe:
    Meiner Meinung nach ist dies hier im richtigen Bereich, weil es einfach eine Anleitung ist wie man schnell eine Antwort auf seine Script frage erhalten kann. Zwar kann man es als Homepage Werbung ansehen, jedoch
    ist es eine Anleitung wie man sich auf der Homepage zurecht findet. Somit gehört es einfach hier her.
    Wenn dies von euch anders gesehen wird bitte ich es in den richtigen Bereich zu verschieben.


    Weitere Informationen über Cold-Tech.de hier:
    http://forum.sa-mp.de/off-topi…echnology-software-hilfe/



    Mit freundlichen Grüßen
    )(Shadow)(


    PS: Ich bitte darum Rechtschreibfehler zu melden, welche auf Cold-Tech.de oder hier im Thread sind.


    Edit (der alte):
    xD
    hatte beim ersten mal bei der Überschrift enter gedrückt -.-
    naja passiert.


    new Float: playerpos[3];
    GetPlayerPos(playerid, playerpos[0], playerpos[1], playerpos[2]);
    for(new i = 0; i < MAX_PLAYERS; i++)
    {// 5.0 = Radius
    if(IsPlayerInRangeOfPoint(i, 5.0, playerpos[0], playerpos[1], playerpos[2]))
    {
    if(i != playerid)
    {
    new nearname[MAX_PLAYER_NAME], str[128];
    GetPlayerName(i, nearname, sizeof(nearname));
    format(str, sizeof(str), "%s ist in der Nähe.", nearname);
    SendClientMessage(playerid, 0xFFFFFFFF, str);
    }
    }
    }


    Achtung ungetestet könnten errors drin sein ^^
    Edit: sich nicht selber finden.

    hmm gf.. naja okay


    unter new pInfo fügst du hinzu:
    Float: SpawnX,
    Float: SpawnY,
    Float: SpawnZ,
    Float: SpawnR,
    SInterior,
    SVirtualWorld,



    du suchst OnPlayerLogin:
    dort setzt du 6 sachen hinzu:


    if( strcmp( key , "SpawnX" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][SpawnX] = floatstr( val ); }
    if( strcmp( key , "SpawnY" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][SpawnY] = floatstr( val ); }
    if( strcmp( key , "SpawnZ" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][SpawnZ] = floatstr( val ); }
    if( strcmp( key , "SpawnR" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][SpawnR] = floatstr( val ); }
    if( strcmp( key , "SInterior" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][SInterior] = strval( val ); }
    if( strcmp( key , "SVirtualWorld" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][SVirtualWorld] = strval( val ); }


    du suchst OnPlayerRegister:
    dort setzt du 6 sachen hinzu:



    format(var, 32, "SpawnX=%.1f\n",0.0);fwrite(hFile, var);
    format(var, 32, "SpawnY=%.1f\n",0.0);fwrite(hFile, var);
    format(var, 32, "SpawnZ=%.1f\n",0.0);fwrite(hFile, var);
    format(var, 32, "SpawnR=%.1f\n",0.0);fwrite(hFile, var);
    format(var, 32, "SInterior=%d\n",0);fwrite(hFile, var);
    format(var, 32, "SVirtualWorld=%d\n",0);fwrite(hFile, var);


    du suchst OnPlayerUpdateEx // je nach GF unterschiedlich:
    dort setzt du 6 sachen hinzu:



    new Float: p[4];
    GetPlayerPos(playerid, p[0], p[1], p[2]);
    GetPlayerFacingAngle(playerid, p[3]);
    format(var, 32, "SpawnX=%.1f\n", p[0]);fwrite(hFile, var);
    format(var, 32, "SpawnY=%.1f\n", p[1]);fwrite(hFile, var);
    format(var, 32, "SpawnZ=%.1f\n", p[2]);fwrite(hFile, var);
    format(var, 32, "SpawnR=%.1f\n", p[3]);fwrite(hFile, var);
    format(var, 32, "SInterior=%d\n",GetPlayerInterior(playerid));fwrite(hFile, var);
    format(var, 32, "SVirtualWorld=%d\n",GetPlayerVirtualWorld(playerid));fwrite(hFile, var);


    und unter OnPlayerSpawn, da wo es dir passt:


    SetPlayerPos(playerid, PlayerInfo[playerid][SpawnX], PlayerInfo[playerid][SpawnY], PlayerInfo[playerid][SpawnZ]);
    SetPlayerFacingAngle(playerid, PlayerInfo[playerid][SpawnR]);
    SetPlayerInterior(playerid, PlayerInfo[playerid][SInterior]);
    SetPlayerVirtualWorld(playerid, PlayerInfo[playerid][SVirtualWorld]);


    Ich hoffe es haben sich keine Fahler eingeschlichen.

    Ich vermute, dass dieses Thema hier garnicht gestattet ist, aufgrund dessen, dass M0d S0beit ein Hackprogramm ist welches die Hex von GTA bearbeitet, nimm jedoch einfach die etwas ältere version.

    new FraktionSkins[3] = {
    {265},
    {266},
    {267}
    };


    OnGameModeInit()
    {
    for(new i=0; i < sizeof(FraktionsSkins); i++) AddPlayerClass(0, -1313.4124, -310.0840, 37.9846, 269.15,3, 1000, 24, 1000, 29,1000);
    }


    OnPlayerRequestClass(playerid, classid)
    {
    SetPlayerSkin(playerid, FraktionSkins[classid]);
    SetPlayerPos(playerid, -1313.4124, -310.0840, 37.9846);
    SetPlayerFacingAngle(playerid, 269.15);
    SetPlayerCameraLookAt(playerid,-1737.1488,-580.0195,25.0168);
    SetPlayerCameraPos(playerid,-1746.5472,-579.8239,27.0168);
    }


    so könnte man es machen, jedoch habe ich es nicht getestet.

    hmm ich fühl mich schon ganz kribbelig ich glaube es fängt langsam aber sicher an !!!!!!!!


    PHP
    Testament
    So, alle meine Scripts, gehen an alle Premium User, wenn sie überleben.
    Und meinen Laptop sollen sich die nicht Premium User teilen.
    Zudem darf Jeder überlebende einen Schluck meiner Wertvollen Cola trinken.
    
    
    Mit letzten Grüßen
    xyShadowyx