Beiträge von Kaliber

    Schreib es so:


    ocmd:cfb(playerid,params[])
    {
    if(!IstAdmin(playerid,2)) return ErrorA;
    new Float:pos[3],labelname[128],str[320];
    if(sInfo[playerid][pLogged]==false) return SendClientMessage(playerid,GRAU,"Du bist nicht eingeloggt!");
    if(sscanf(params,"s",labelname)) return SendClientMessage(playerid,GRAU,"Benutze: /cfb FraktionsName");
    format(str,sizeof(str),"{FFFFFF}Eingang '{FF0000}%s{FFFFFF}'\nBenutze ENTER",labelname);
    GetPlayerPos(playerid,pos[0],pos[1],pos[2]);
    Create3DTextLabel(str,0xFFFFFFFF,pos[0],pos[1],pos[2],5.0,0,0);
    CreatePickup(1559,23,pos[0],pos[1],pos[2],-1);
    mysql_SetString("FrakSet","Label",str,"Label",str);
    return 1;
    }


    mfg. :thumbup:

    Als ich ein selbst gemapptes Remake des SFPD Interiors, den ich dort als LSPD Interior verwendet habe, entfernt habe, kam dieses Problem nicht mehr vor. Der genaue Grund blieb mir jedoch ein Rätsel.


    Wahrscheinlich hast du einen Streamer verwendet und da lag das Problem ;) Wenn du die Objekte mit CreateObject erstellst, bleiben diese permanent da, dann würde das funktionieren.
    Aber bei einem Streamer sobald keiner in der Nähe dieser Objekte ist, verschwinden diese ja...->Die Autos aber nicht somit fallen diese, kommst du nun wieder in die Nähe dieser Objekte, stapeln sich wegen dem Respawn die Autos auf einem Punkt ;)


    mfg. :thumbup:

    Also, das liegt daran, dass warum auch immer die Objekte da langsam streamen (wenn man diesen Standard Interior verlässt), sprich sobald du aus dem Haus kommst, ist dieser Boden da noch nicht gestreamt, aber die Fahrzeuge, somit fallen diese da kein Boden vorhanden ist nach unten, ab einer gewissen tiefe, respawnen die Fahrzeuge wieder oben auf dem gestreamten Objekt -> leider alle aufeinander...


    So um diesen Bug zu beheben muss man nichts weiter tun, als abzufragen, ob der Spieler gerade aus diesem Interior kommt, wenn ja ruft man einen Timer auf der nach ~500ms einfach alle Groove Street Cars neu spawnen lässt bis auf die wo jemand drinnen sitzt ;)


    mfg. :thumbup:

    Zitat

    Metin2 ist mit mehreren Sprachen geschrieben, welche zusammen ein Programm ergeben.
    Metin2 wurde ursprünglich für Windows2000/XP entwickelt. Bisher sind keine Mac oder Linux Versionen erschienen.
    Die .exe-Datei welche das Programm an sich ist, wurde in C++ verfasst. Die Version ist noch unbekannt, aber es liegt auch noch kein offizieller Source der .exe vor und wird wahrscheinlich auch nicht publiziert werden.
    Die anderen Dateien die wir im 1. Unterpunkt entpackt haben und sich im Root-Archiv befanden sind in Python 2.2 geschrieben.
    Selbst die Fenster die man bei Metin2 sieht (Inventarfenster usw.) haben eine eigene Sprache. Beziehungsweise wurden sie so programmiert, dass sie zwar keine eigenständigen Programme hervorbingen können, aber vom Client interpretiert und angezeigt werden.
    Serverseitig wurde Metin2 für die Plattform FreeBSD entwickelt welche auf UNIX basiert.


    Quelle: http://www.elitepvpers.com/for…grammierung-teil-1-a.html


    mfg. :thumbup:

    also so?:


    Nein, so:


    //Oben ins Script
    new objID;


    //Dein CMD
    if(!strcmp("/sperre", cmdtext, true))
    {
    if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
    if(objID) return DestroyObject(objID),objID=0,SendClientMessage(playerid,DROT,"Du hast das Objekt erfolgreich entfernt!");
    new Float:Q[6];
    GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
    objID = CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
    return 1;
    }


    und dann nur noch die modelid eintragen und fertig ;)


    //Edit: hatte noch was vergessen ^^


    mfg. :thumbup:

    Jetzt muss nur noch das so gemacht werden, dass vor einem das Objekt steht, aber wie?


    Ich bin mal so freundlich und helfe dir ;)


    //Schreibe das oben in dein Script
    #define GetCamerFrontVector(%0,%1,%2,%3,%4,%5,%6,%7) \
    GetPlayerCameraPos(%0,%1,%2,%3),GetPlayerCameraFrontVector(%0,%4,%5,%6), \
    (%1)+=floatmul(%4,%7),(%2)+=floatmul(%5,%7),(%3)+=floatmul(%6,%7)


    //Und dann dein Command
    if(!strcmp("/sperre", cmdtext, true))
    {
    if(!IstSpielerInFraktion(playerid, 0)) return SendClientMessage(playerid,DROT,"Du darfst diesen Befehl nicht benutzen!");
    new Float:Q[6];
    GetCamerFrontVector(0,Q[0],Q[1],Q[2],Q[3],Q[4],Q[5],5.0); //5.0 ist die distanz wenn du sie erhöhst, ist das Objekt weiter entfernt!
    CreateObject([modelid des Objekts], Q[0], Q[1], Q[2], 0.0, 0.0, 0.0);
    return 1;
    }


    Ist aus dem Kopf geschrieben, sollte allerdings funktionieren ^^


    mfg. :thumbup:

    Die Funktion sollte so aussehen:


    stock GetPlayerID(const accname[]) {
    new sname[MAX_PLAYER_NAME],i;
    for(; i<MAX_PLAYERS; i++) {
    if(!IsPlayerConnected(i)) continue;
    GetPlayerName(i,sname,sizeof(sname));
    if(!strcmp(accname,sname)) return i;
    }
    return -1;
    }


    mfg. :thumbup:

    Das liegt daran, dass du eine Klammer weglöschst, einfach so löschen, dann geht es:


    Function CreateRoadblock(Object,Float:x,Float:y,Float:z,Float:Angle)
    {
    /*for(new i = 0; i < sizeof(Roadblocks); i++)
    {
    if(Roadblocks[i][sCreated] == 0)
    {
    Roadblocks[i][sCreated] = 1;
    Roadblocks[i][sX] = x;
    Roadblocks[i][sY] = y;
    Roadblocks[i][sZ] = z-0.7;
    Roadblocks[i][sObject] = CreateDynamicObject(Object, x, y, z-0.9, 0, 0, Angle);
    return 1;
    }
    } */
    return 0;
    }


    mfg. :thumbup: