Beiträge von Kaliber

    Und die PlayerCamera wird wieder so gesetzt, wie im Bild von meinem Beitrag zuvor.

    Du könntest es berechnen lassen:



    new Float:x=Kamera[i][k_X], Float:y=Kamera[i][k_Y],Float:z=Kamera[i][k_Z],Float:a=Kamera[i][k_RotZ];
    x += 5.0 * floatsin(-a, degrees);
    y += 5.0 * floatcos(-a,degrees);
    SetPlayerCameraLookAt(playerid,x,y,z-1.0);

    Kann mir jemand erklären wie ich diese Funktion benutzen kann, siehe

    Die Funktion heißt: http://wiki.sa-mp.com/wiki/EditObject


    @Retect
    Du solltest normalerweise...Fehler beim compilen bekommen...du nutzt die Funktionen falsch...


    Beim speichern lösche das:



    GetPlayerScore(playerid,dini_Int(Spieler,"Level"));
    GetPlayerMoney(playerid,dini_Int(Spieler,"Geld"));


    und beim laden schreib es so:



    SetPlayerScore(playerid,dini_Int(Spieler,"Level"));
    ResetPlayerMoney(playerid);
    GivePlayerMoney(playerid,dini_Int(Spieler,"Geld"));


    mfg. :thumbup:

    Hast du zufällig nen Beispiel zur Hand ?

    Hier wäre ein Beispiel:


    Das splittet automatisch den Text in 128 Zeichen Blöcke auf, kannst max_size beliebig verändern :) (logischerweise sollte es > 0 sein xD)

    Nur um das kurz anzumerken, dein Post ist in der falschen Sektion.


    Extra:


    Und als Extra wollte ich noch fragen ob man vllt so was wie eine Flagge an Fahrzeugen machen kann. Weil ein User von meiner Server ist Russenmafia Leader und möchte Russenland Flaggen an die Fahrzeuge. Deshalb wollte ich fragen ob man das irgendwie ein scripten kann, wenn nicht dann sage ich ihm das es so was nicht gibt.

    Ja das ist mit ein bisschen tricksen möglich.


    Hier mal ein Beispiel:


    C
    stock CreateRussianFlag(x,y,z)
    {
        SetObjectMaterialText(CreateObject(19560,x,y,z+0.16,90,0,0),!" ",0,OBJECT_MATERIAL_SIZE_256x128,!"Arial",4,1,-1,-1,1);
        SetObjectMaterialText(CreateObject(19560,x,y,z,90,0,0),!" ",0,OBJECT_MATERIAL_SIZE_256x128,!"Arial",4,1,-1,0xFF0000FF,1);
        SetObjectMaterialText(CreateObject(19560,x,y,z-0.16,90,0,0),!" ",0,OBJECT_MATERIAL_SIZE_256x128,!"Arial",4,1,-1,0xFFFF0000,1);
        return 1;
    }

    Im Anhang ist ein Bild.


    Zum attachen logischerweise die Objekte einzeln erstellen und dann per AttachObject untereinander dranhängen ;)

    alles valide EMail Adressen

    Lässt nur 1 von denen zu...


    Wobei man halt wirklich regex oder php für eine 100%ige Validation nutzen sollte...


    Hier mein Code nochmal bissl abgeändert...


    C
    stock IsValidMailAddr(const string[])
    {
        new l = strlen(string),p_s;
        if(l < 5 || strfind(string,",") != -1) return 0;
        p_s = strfind(string,"@");
        if(p_s == -1) return 0;
        if(strfind(string,"@",false,p_s+1) != -1) return 0;
        if(strfind(string,".",false,p_s) == -1 || string[p_s+1] == '.' || string[p_s-1] == '.') return 0;
        return (('A' <= string[l-1] <= 'Z' || 'a' <= string[l-1] <= 'z') && ('A' <= string[0] <= 'Z' || 'a' <= string[0] <= 'z'));
    }

    Hmmm anstatt das Plugin zu nutzen könnte man auch einen HTTP Request machen und mit PHP prüfen...


    Wenn man es zu 100% validiert haben will....


    Aber fürs erste sollte das reichen:


    stock IsValidMailAddr(const string[])
    {
    new l = strlen(string),p_s;
    if(l < 5 || strfind(string,",") != -1) return 0;
    p_s = strfind(string,"@");
    if(p_s == -1) return 0;
    if(strfind(string,"@",false,p_s+1) != -1) return 0;
    if(strfind(string,".",false,p_s) == -1 || string[p_s+1] == '.' || string[p_s-1] == '.') return 0;
    return (('A' <= string[l-1] <= 'Z' || 'a' <= string[l-1] <= 'z'));
    }

    Hier hab mal eine kleine Funktion geschrieben...sollte klappen :)



    Ja, aber das ist ja auch nicht richtig, da jeder Materialindex für etwas anderes steht.


    z.B. ist 8 die Mauer und 11 das Häuschen auf dem Objekt.


    Wenn du jetzt aber z.B. die 0 nimmst, ist das der Weg zwischen den beiden, der dann auch eine andere Textur bekommt, was aber nicht gewollt ist.


    Aus diesem Grund sollte er einfach das schritt für schritt machen. (Dies ist auch wesentlich performanter als eine Schleife) :)

    Schreib den Befehl mal so:



    ocmd:buysnack(playerid)
    {
    if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT)return SendClientMessage(playerid,C_Error,"Du bist nicht zu Fuß!");
    if(!IsPlayerNearSnack(playerid))return SendClientMessage(playerid,C_Error,"Du bist nicht in der Nähe eines Snackautomats.");
    if(sInfo[playerid][canbuysnack] == 0) return SendClientMessage(playerid,COLOR_GRAY,"* Du kannst nur alle 10 Sekunden einen Snack kaufen!");
    new snackid = GetPlayerSnackID(playerid),Float:PlayerHealth;
    if(snackid == -1) return SendClientMessage(playerid,COLOR_GRAY,"Ungültige snackid!");
    GetPlayerHealth(playerid,PlayerHealth);
    if(getplayermoney(playerid)<=Food[snackid][fprice])return SendClientMessage(playerid,COLOR_GRAY,"Du hast nicht genug Geld dabei!");
    if(PlayerHealth >= 80) return SendClientMessage(playerid,COLOR_GRAY,"* Du hast keinen Hunger!");
    if(Food[snackid][fvalue] == 0) return SendClientMessage(playerid,COLOR_GRAY,"* Der Automat ist leer!");
    TogglePlayerControllable(playerid,false);
    TogglePlayerControllable(playerid,true);
    ApplyAnimation(playerid,"VENDING","VEND_Use",4.1,0,1,1,0,2000,1);
    Food[snackid][fvalue]--;
    UpdateSnackLabel(GetPlayerSnackID(playerid));
    SetTimerEx("ClearAnimations", 2000, false, "d", playerid);
    SetTimerEx("AllowSnackBuy", 10000, false, "d", playerid);
    sInfo[playerid][canbuysnack] = 0;
    SetPlayerHealth(playerid,PlayerHealth + 20);
    return 1;
    }

    ...so musst du es machen:


    new id=CreateObject(3975, 1469.2183, -1643.1805, 12.9006, 0.0000, 0.0000, 180.0000);
    SetObjectMaterial(id, 11, 8399, "vgs_shops", "vgsclubwall05_128", 0xFFFFFFFF);
    SetObjectMaterial(id, 8, 4010, "lanblokb2", "sl_lavicdtwall1", 0xFFFFFFFF);


    @German_ScripterHD
    Das ist Schwachsinn, da so 10 Objekte erstellt werden...und jedes mit einer anderen Textur..das ist so gar nicht das, was er will :D

    Der Fehler den du machst ist, du erstellst 2 Objekte...dabei musst du die ID von dem einen Objekt nur anpassen...


    Sprich du musst es so schreiben:


    new obj = CreateObject(8650, 1492.8816, -1597.7205, 12.1815, 0.0000, 0.0000, 90.0000);
    SetObjectMaterial(obj, 0, 9239, "stuff2_sfn", "hedge1", 0xFFFFFFFF);
    SetObjectMaterial(obj, 1, 9239, "stuff2_sfn", "hedge1", 0xFFFFFFFF);


    mfg. :thumbup: