Beiträge von Kaliber

    Habe sowas auch ab und zu im Spam Ordner ;)


    Folgendes lässt sich dazu sagen:


    Die Adressen, welche in der Kopfzeile der E-Mail (dem RFC822-Header) stehen und für den Endnutzer sichtbar sind, müssen nicht unbedingt mit den Adressen übereinstimmen, die von dem Versender für den Transport der E-Mail verwendet werden. Diese bleiben meist für den Endnutzer verborgen. Die eigentlichen Empfänger wurden unter BCC (Blind Carbon Copy) eingetragen. Diese Angaben sind für den Empfänger nicht sichtbar. Auf diese Weise ist eine ökonomische Verteilung von Mailinglisten möglich.


    Wenn man sich die E-Mails genauer ansieht, stellt man fest, dass die Absender- und Empfängeradressen im RFC822-Header in der Regel ungültig sind. In diesen Fällen handelt es sich oft um Missbrauch des E-Mail-Systems. Es wird viel Mühe darauf verwendet, den wahren Absender der Mail zu verschleiern, so dass dieser auf der Empfängerseite nicht zu ermitteln ist. Selbst unter Mitwirkung der Postmaster aller am Transport beteiligter Mailer ist die Rückverfolgung zum Teil nicht möglich, weil Sicherheitslücken in der Software bestimmter E-Mail Programme (z.B. ältere sendmail-Versionen) ausgenutzt werden.


    Der absendende Computer und sogar die ersten Server haben keinen Eintrag im Domain Name System ( DNS) der verteilten Datenbank der Computer im Internet. Der erste Server, der über das DNS greifbar ist, schreibt bei gefälschten Absenderadressen keinen Hinweis auf den tatsächlichen Absender in das Header-Log (die Kopfzeile). Damit verliert sich bei genau diesem Computer die Möglichkeit der Rückverfolgung.


    Der CC-Header (Auflistung der Kopieempfänger) steht im Header (Kopfzeile) der E-Mail - der BCC-Header (Auflistung der Blindempfänger) nicht. Sinn dieses Verfahrens ist es, dass der Originalempfänger nicht wissen soll, ob jemand, und wenn ja wer, mitliest.


    Quelle: http://forum.telekom.de/foren/read.php?313,11178056


    mfg. :thumbup:

    Da "Weiblich" nicht die Größe bzw Länge deines Arrays hat kommt dieser Fehler, schreib es einfach so:


    format(sStats[playerid][sGeschlecht],20,"Weiblich");


    mfg. :thumbup:

    TruckingTargets[Trucking1Tour][0] = 1703.3060; //Beispiel
    new Float:tX;
    /*Zeile:306*/tX = TruckingTargets[Trucking1Tour][0];


    Du kannst das nicht so direkt machen, sondern musst es so machen:


    TruckingTargets[Trucking1Tour][xPos] = 1703.3060; //Beispiel
    new Float:tX;
    /*Zeile:306*/tX = TruckingTargets[Trucking1Tour][xPos];


    //Edit:
    Du könntest das auch mit 0 direkt machen, dann braucht der Array aber auch den TAG vom enum, sprich so:


    TruckingTargets[Trucking1Tour][TourInfo:0] = 1703.3060; //Beispiel
    new Float:tX;
    /*Zeile:306*/tX = TruckingTargets[Trucking1Tour][TourInfo:0];


    mfg. :thumbup:

    Schreib den Command mal so:


    if(!strcmp("/startbonus", cmdtext, true)) {
    if (!GetPlayerScore(playerid)) return ShowPlayerDialog(playerid,DIALOG_STARTBONUS,DIALOG_STYLE_LIST,"STARTBONUS WÄHLEN","Level +2\n10.000$","Bestätigen","");
    return SendClientMessage(playerid,ROT,"Du hattest deinen Startbonus schon");
    }


    mfg. :thumbup:


    Naja, ich zeig dir mal eine Möglichkeit, die nur den Namen eines Spielers bannt mit einem schönen Dialog (das selbe wie Ban(playerid)) :)


    Also zuerst ersetze in deinem /ban Befehl das Ban(playerid); durch ein Ban_Player(playerid);


    //Die Funktionen:
    stock Ban_Player(playerid) {
    new buffer[13 + MAX_PLAYER_NAME], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME),format(buffer,sizeof buffer,"ban_%s.ini",name);
    new File:f=fopen(buffer,io_write);fwrite(f,"banned"),fclose(f);
    return Kick(playerid);
    }


    //Als letztes unter OnPlayerConnect
    new buffer[13 + MAX_PLAYER_NAME], bName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,bName,MAX_PLAYER_NAME),format(buffer,sizeof buffer,"ban_%s.ini",bName);
    if(fexist(buffer)) return ShowPlayerDialog(playerid,9999,DIALOG_STYLE_MSGBOX,"{FF0000}Banned","{FF0000}Sie wurden vom Server gebannt!","Bestätigen","");


    mfg. :thumbup:

    Guten Abend euch allen, mir war jetzt mal langweilig und ich habe mal ein bisschen umherprobiert und habe ein paar Funktionen entworfen.


    1. Die Funktionen

    Code
    SetObjectVirtualWorld(objectid, worldid);GetObjectVirtualWorld(objectid);SetObjectInterior(objectid, interiorid);GetObjectInterior(objectid);


    2. Wann sollte man das Include verwenden?

    • Wenn man keinen Streamer benutzen will, sprich es handelt sich um weniger als 1000 Objekte.

    • Wenn man allgemein nicht soviel mit Objekten macht (Bewegen...Materialien ändern...attachen)...andernfalls kann es zu Problemen kommen, siehe bei "Bugs".


    3. Bugs?
    Ja...es gibt ein paar Probleme:

    • Wenn man ein Objekt in einer anderen Welt mit MoveObject bewegen lässt und der Spieler dann in diese Welt wechselt, wo das Objekt bewegt wird, ist das Objekt schon an seiner Ziel Position.

    • Wenn man das Material von dem Objekt ändert oder das Objekt attached, in einer anderen Welt und man dann den Spieler in diese Welt setzt, passiert das nicht.


    -> Fazit: Man sollte diese Funktionen nur dann nutzen, wenn der Spieler in der Welt ist, wo auch das Objekt ist.


    4. Schlusswort & Zukunft:
    Also, erstmal will ich jetzt kein geflame haben, von wegen Incognito Streamer kann das schon alles...bla blub, das weiß ich selbst ^^ Aber es gibt halt Leute die keinen Streamer verwenden wollen und eine Funktion dafür haben wollen, dann kann man nämlich das per Schleifen machen die Objekte versetzten und muss nicht immer ein Attribut ändern.


    Wenn euch das bis jetzt gefällt, kann ich auch noch paar andere Features mit einbringen, z.B. das man Objekte nur sieht, wenn man in einem bestimmten Auto sitzt oder das Auto eine bestimmte modelid hat ^^ Oder ihr könnt auch noch selbst paar Vorschläge machen :)


    Würde mich über ein paar kleine Rückmeldungen freuen :)


    5. Download
    Source-Code: Pastebin
    Direkter-Download: Mediafire


    mfg. :thumbup:


    //Edit: Hatte was vergessen...
    //Edit²: Pastebin-Link
    //Edit³: Mediafire

    Der Query ist eigentlich noch nicht so lang, dass solltest du gut in eine Zeile bekommen ^^


    Mach einfach so:


    format(query,sizeof(query),"UPDATE user SET Admin='%i',Supporter='%i',Level='%i',Geld='%i',Skin='%i',Fahndungslevel='%i',Fraktion='%i',Leader='%i',Rang='%i',Job='%i',Drogen='%i',Zigaretten='%i',Materialen='%i',Autoschein='%i',Motorradschein='%i',Flugschein='%i',Bootschein='%i',Lkwschein='%i',Waffenschein='%i',Haftzeit='%i',Adminprison='%i',Timeban='%i',Gebannt='%i' WHERE dbID='%i'",//Hier ein Return hin...
    pInfo[playerid][pAdmin],pInfo[playerid][pSupporter],GetPlayerScore(playerid),GetPlayerMoney(playerid),GetPlayerSkin(playerid),GetPlayerWantedLevel(playerid),pInfo[playerid][pFraktion],pInfo[playerid][pLeader],pInfo[playerid][pRang],//Hier auch nochmal
    pInfo[playerid][pJob],pInfo[playerid][pDrogen],pInfo[playerid][pZigaretten],pInfo[playerid][pMaterialen],pInfo[playerid][pAutoschein],pInfo[playerid][pMotorradschein],pInfo[playerid][pFlugschein],pInfo[playerid][pBootschein],pInfo[playerid][pLkwschein],pInfo[playerid][pWaffenschein],pInfo[playerid][pJailTime],pInfo[playerid][pAdminPrison],pInfo[playerid][pTimeban],pInfo[playerid][pGebannt],pInfo[player
    Das return halt dahin, wo die pInfo Variablen anfangen ;)


    mfg. :thumbup:

    Wie kann ich abfragen ob ein Anhänger am LKW angekoppelt ist?


    So:


    if(IsTrailerAttachedToVehicle(GetPlayerVehicleID(playerid)) {
    //Hier ist ein Trailer dran
    } else {
    //Hier nicht
    }


    Und wie kann abfragen ob sich jemand im Fahrzeug befindet oder ob das Fahrzeug leer ist?


    Durch eine kleine Funktion:


    if(IsAnyPlayerInVehicle(vehicleid)) {
    //Hier ist jemand in diesem Auto
    } else {
    //Hier nicht
    }


    //Hier die Funktion mal eben geschrieben:


    stock IsAnyPlayerInVehicle(vehicleid) {
    for(new i; i<MAX_PLAYERS; i++) if(IsPlayerInVehicle(i, vehicleid)) return 1;
    return 0;
    }


    mfg. :thumbup: