Weihnachtsbäume!!

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • das kann man eigentlich schnell selber machen, das er die speichert ^^ oder du baust die im script ein :P

  • Hey Leute,
    ich werde wahrscheinlich keine Safe Funktion machen, da dies sehr einfach ist selbst zu machen und mir die Zeit dafür zu kostbar ist.
    Außerdem könnt Ihr eure Pos. inGame speichern und den Baum fest ins Script einbauen.


    Wenn das include einer weiter entwickeln möchte bitte kurze PN an mich.



    Liebe Grüße

  • Ich hab es schon auf MySQL Basis umgeschrieben, so das die Bäume gespeichert und geladen werden. Und natürlich auch löschbar, ob ich diese Release überleg ich mir noch. Da es derzeit für meinen kommenden Server gescriptet wurde.


    Dann release ich es wenn ich von Arbeit zuhause bin^^ ZONK ;P


    Verstehe nurnoch warum wegen ein paar Weihnachtsbäume so eine geschrei ausbricht xD , vorallem weils nur 1 Objekt ist welches erstellt bzw gelöscht wird...


    Bitte keine Script/Supportanfragen via PN!!!
    (Ausnahme: Scripten gegen Bezahlung!)

  • Die weihnachtsbäume sind sehr schön gestaltet...
    Sehr Gutes Include.


    8/10 Brotfischen.

  • so ich hab mich gerade hingesetzt und hab ein w_baum FS gemacht


    ich danke Prepear(mein Kumpel) für die Idee und für den Anfang



    ZUM FILTERSCRIPT
    -es würd gespeichert
    -mit /wbaum kann man ein baum erstellen
    -beim beenden würd jeder baum gelöscht bleibt aber noch in der datei drin
    -in scriptfiles muss ein ordner mit (w_baum) sein wo die bäume in je ne datei gespeichter würd
    nächtes update würd warscheinlich sein das man einzelde bäume löschen kann oder auch alle


    muss ich mal sehen ob ich das in meine freizeit noch schafe



    also viel spass damit


    hier downloadlink :::: http://www.megaupload.com/?d=OTNU9UY5


    und hier der Quellcode
    #include <a_samp>
    #include <dini>
    #include <ocmd>


    #define MAX_Baum 450
    enum haus_info
    {
    //AUSSEN
    Float:haus_x,
    Float:haus_y,
    Float:haus_z,
    haus_pickup,
    }
    new HausInfo[MAX_Baum][haus_info];
    public OnFilterScriptInit()
    {
    //CreateObject(19076,23,0,0,1000,99);
    for(new haus=1;haus<MAX_Baum;haus++)
    {
    LoadHaus(haus);
    }
    return 1;
    }


    public OnFilterScriptExit()
    {
    for(new haus=1;haus<MAX_Baum;haus++)
    {
    KillHaus(haus);
    }
    return 1;
    }



    ocmd:wbaum(playerid,params[])
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateHaus(x,y,z);
    SetPlayerPos(playerid,x+2,y+2,z);
    return 1;
    }
    stock LoadHaus(hausid)
    {
    new pfad[50];
    format(pfad,50,"/w_Baum/%d.txt",hausid);
    if(!fexist(pfad))return 0;
    HausInfo[hausid][haus_x] = dini_Float(pfad,"x");//
    HausInfo[hausid][haus_y] = dini_Float(pfad,"y");//
    HausInfo[hausid][haus_z] = dini_Float(pfad,"z");//
    HausInfo[hausid][haus_pickup] = CreateObject(19076,HausInfo[hausid][haus_x],HausInfo[hausid][haus_y],HausInfo[hausid][haus_z]-1,0,0,0); //erstellt ein Pickup an den Hauskoordinaten
    return 1;//CreateObject(19076, x, y - 0.7, z - 1, 0.0, 0.0, a - 90.0);
    }
    stock KillHaus(hausid)
    {
    return DestroyObject(HausInfo[hausid][haus_pickup]);
    }
    stock CreateHaus(Float:x,Float:y,Float:z) // die ersten 3 Werte sind die Koordinaten, der 4. der Preis und der 5. der Besitzer
    {
    new pfad[50];
    for(new haus=1;haus<MAX_Baum;haus++)
    {
    format(pfad,50,"/w_Baum/%d.txt",haus);
    if(!fexist(pfad))
    {
    dini_Create(pfad);
    dini_FloatSet(pfad,"x",x);
    dini_FloatSet(pfad,"y",y);
    dini_FloatSet(pfad,"z",z);
    return LoadHaus(haus);
    }
    }
    return 1;
    }
    stock sscanf(sstring[], format[], {Float,_}:...)
    {
    #if defined isnull
    if (isnull(sstring))
    #else
    if (sstring[0] == 0 || (sstring[0] == 1 && sstring[1] == 0))
    #endif
    {
    return format[0];
    }
    #pragma tabsize 4
    new
    formatPos = 0,
    sstringPos = 0,
    paramPos = 2,
    paramCount = numargs(),
    delim = ' ';
    while (sstring[sstringPos] && sstring[sstringPos] <= ' ')
    {
    sstringPos++;
    }
    while (paramPos < paramCount && sstring[sstringPos])
    {
    switch (format[formatPos++])
    {
    case '\0':
    {
    return 0;
    }
    case 'i', 'd':
    {
    new
    neg = 1,
    num = 0,
    ch = sstring[sstringPos];
    if (ch == '-')
    {
    neg = -1;
    ch = sstring[++sstringPos];
    }
    do
    {
    sstringPos++;
    if ('0' <= ch <= '9')
    {
    num = (num * 10) + (ch - '0');
    }
    else
    {
    return -1;
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num * neg);
    }
    case 'h', 'x':
    {
    new
    num = 0,
    ch = sstring[sstringPos];
    do
    {
    sstringPos++;
    switch (ch)
    {
    case 'x', 'X':
    {
    num = 0;
    continue;
    }
    case '0' .. '9':
    {
    num = (num << 4) | (ch - '0');
    }
    case 'a' .. 'f':
    {
    num = (num << 4) | (ch - ('a' - 10));
    }
    case 'A' .. 'F':
    {
    num = (num << 4) | (ch - ('A' - 10));
    }
    default:
    {
    return -1;
    }
    }
    }
    while ((ch = sstring[sstringPos]) > ' ' && ch != delim);
    setarg(paramPos, 0, num);
    }
    case 'c':
    {
    setarg(paramPos, 0, sstring[sstringPos++]);
    }
    case 'f':
    {


    new changestr[16], changepos = 0, strpos = sstringPos;
    while(changepos < 16 && sstring[strpos] && sstring[strpos] != delim)
    {
    changestr[changepos++] = sstring[strpos++];
    }
    changestr[changepos] = '\0';
    setarg(paramPos,0,_:floatstr(changestr));
    }
    case 'p':
    {
    delim = format[formatPos++];
    continue;
    }
    case '\'':
    {
    new
    end = formatPos - 1,
    ch;
    while ((ch = format[++end]) && ch != '\'') {}
    if (!ch)
    {
    return -1;
    }
    format[end] = '\0';
    if ((ch = strfind(sstring, format[formatPos], false, sstringPos)) == -1)
    {
    if (format[end + 1])
    {
    return -1;
    }
    return 0;
    }
    format[end] = '\'';
    sstringPos = ch + (end - formatPos);
    formatPos = end + 1;
    }
    case 'u':
    {
    new
    end = sstringPos - 1,
    id = 0,
    bool:num = true,
    ch;
    while ((ch = sstring[++end]) && ch != delim)
    {
    if (num)
    {
    if ('0' <= ch <= '9')
    {
    id = (id * 10) + (ch - '0');
    }
    else
    {
    num = false;
    }
    }
    }
    if (num && IsPlayerConnected(id))
    {
    setarg(paramPos, 0, id);
    }
    else
    {
    #if !defined foreach
    #define foreach(%1,%2) for (new %2 = 0; %2 < MAX_PLAYERS; %2++) if (IsPlayerConnected(%2))
    #define __SSCANF_FOREACH__
    #endif
    sstring[end] = '\0';
    num = false;
    new
    name[MAX_PLAYER_NAME];
    id = end - sstringPos;
    foreach (Player, playerid)
    {
    GetPlayerName(playerid, name, sizeof (name));
    if (!strcmp(name, sstring[sstringPos], true, id))
    {
    setarg(paramPos, 0, playerid);
    num = true;
    break;
    }
    }
    if (!num)
    {
    setarg(paramPos, 0, INVALID_PLAYER_ID);
    }
    sstring[end] = ch;
    #if defined __SSCANF_FOREACH__
    #undef foreach
    #undef __SSCANF_FOREACH__
    #endif
    }
    sstringPos = end;
    }
    case 's', 'z':
    {
    new
    i = 0,
    ch;
    if (format[formatPos])
    {
    while ((ch = sstring[sstringPos++]) && ch != delim)
    {
    setarg(paramPos, i++, ch);
    }
    if (!i)
    {
    return -1;
    }
    }
    else
    {
    while ((ch = sstring[sstringPos++]))
    {
    setarg(paramPos, i++, ch);
    }
    }
    sstringPos--;
    setarg(paramPos, i, '\0');
    }
    default:
    {
    continue;
    }
    }
    while (sstring[sstringPos] && sstring[sstringPos] != delim && sstring[sstringPos] > ' ')
    {
    sstringPos++;
    }
    while (sstring[sstringPos] && (sstring[sstringPos] == delim || sstring[sstringPos] <= ' '))
    {
    sstringPos++;
    }
    paramPos++;
    }
    do
    {
    if ((delim = format[formatPos++]) > ' ')
    {
    if (delim == '\'')
    {
    while ((delim = format[formatPos++]) && delim != '\'') {}
    }
    else if (delim != 'z')
    {
    return delim;
    }
    }
    }
    while (delim > ' ');
    return 0;
    }

    euer Diavolonew

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

  • kommt vieleicht im nächsten update mit der removefunktion zusammen


    hab aber diese woche nicht soviel zeit sonst hätte ich es auch geändert


    //Edit vom 25.11.2014
    Habe gerade gesehen, dass die Include noch sehr oft verwendet wird, daher kommt ein Großes Update
    Nun zur Frage, wollte ihr es per dini, mySQL oder SQL? oder mehrere zusammen?
    Ich würde mich Morgen bzw. Übermorgen ransetzen.

    Mit Freundlichen Grüßen
    Whitetiiger aka. Kaito-sensei
    P.s. Alle mit #IRONIE bestätigten Sätze von mir, sind als Ironie anzusehen.

    Einmal editiert, zuletzt von whitetiiger ()