Beiträge von Goldkiller

    Dann gibt es nur 2 Mäglichkeiten.


    1. Du lernst mappen
    2. Du lernst die Suche zu nutzen.Denn du bist sicherlich nicht der erste,der einen Weihnachtsbaum sucht.


    Ich hab vor kurzem dazu eine Funktion gefunden, weiss leider nicht mehr von wem diese ist:
    stock CreateChristmasTree(Float:X, Float:Y, Float:Z)
    {
    CreateDynamicObjectEX(3472,X+0.28564453,Y+0.23718262,Z+27.00000000,0.00000000,0.00000000,230.48021);
    CreateDynamicObjectEX(664,X+0.20312500,Y+0.01171875,Z+-3.00000000,0.00000000,0.00000000,0.00000000);
    CreateDynamicObjectEX(3472,X+0.45312500,Y+0.51562500,Z+4.00000000,0.00000000,0.00000000,69.7851562);
    CreateDynamicObjectEX(3472,X+0.65136719,Y+1.84570312,Z+17.00000000,0.00000000,0.00000000,41.863403);
    CreateDynamicObjectEX(7666,X+0.34130859,Y+0.16845703,Z+45.00000000,0.00000000,0.00000000,298.12524);
    CreateDynamicObjectEX(7666,X+0.34082031,Y+0.16796875,Z+45.00000000,0.00000000,0.00000000,27.850342);
    CreateDynamicObjectEX(3472,X+0.45312500,Y+0.51562500,Z+12.00000000,0.00000000,0.00000000,350.02441);
    CreateDynamicObjectEX(3472,X+0.45312500,Y+0.51562500,Z+7.00000000,0.00000000,0.00000000,30.0805664);
    CreateDynamicObjectEX(3472,X+0.45312500,Y+0.51562500,Z+22.00000000,0.00000000,0.00000000,230.47119);
    CreateDynamicObjectEX(1262,X+0.15039062,Y+0.57128906,Z+29.45285416,0.00000000,0.00000000,162.90527);
    }

    Ist ja auch logisch,dass du niemals ein Wanted über Level1 bekommst.
    Denn die ganze Struktur bei dir ist sehr unvorteilhaft.


    Du fragst zuerst ab ober das Wanted über / gleich 0 ist.Falls ja,beendest du am ende die Funktion.
    Dann fragst du ab ob das Wanted über / gleich 1 ist.Das wird aber nie abgefragt. Denn wenn der Wanted
    Level lediglich 0 oder größer ist,beendest du mit return 1; bereits. Dadurch ist es völlig egal
    was danach folgt.
    Ist das Level zum Beispiel 5. Dann wird es bereits den Block aufrufen für Level 0.( Es ist zwar nicht möglich da
    du überall return 1; hast, es würde aber dann auch den Block für Level 1 - 4 aufrufen [ Wenn du dort kein return 1; hättest ] )
    Du hättest es wenn dann überhaupt rückwärts aufbauen müssen.


    Zuerst fragen ob Level6,dann 5,4,3 usw.


    Ich hab dir das aber mal neu strukturiert.
    public OnPlayerDeath(playerid, killerid, reason)
    {
    new
    name[MAX_PLAYER_NAME];
    GetPlayerName(killerid, name, sizeof(name));
    Delete3DTextLabel(label[playerid]);
    TextDrawHideForPlayer(playerid,Textdraw0);
    TextDrawHideForPlayer(playerid,Textdraw1);
    SetPlayerWantedLevel(playerid, 0);


    if(killerid != INVALID_PLAYER_ID) {
    {


    new
    level,
    string[128];
    Wanted[killerid]++;
    if(Wanted[killerid] > 6) {
    level = 6;
    }
    else {
    level = Wanted[killerid];
    }
    GivePlayerMoney(killerid, ( level * 1000 ) );
    format(string, sizeof(string), "Player: %s have now %i $.",name, GetPlayerMoney(killerid));
    SendClientMessageToAll(COLOR_YELLOW, string);
    SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);
    SetPlayerWantedLevel(killerid, level);
    // return 1; sicher,dass du danach nicht noch etwas machen willst?
    }
    return 1;
    }


    //Edit: Blubb geändert.Benutzt es lieber so.

    Für die WorldBounds würde Ich immer folgendes nutzen.

    #define INFINITY (Float:0x7F800000)
    SetPlayerWorldBounds(playerid,INFINITY,-INFINITY,INFINITY,-INFINITY);


    Ich glaube aber eher,dass die Position deines Spielers falsch gesetzt wird.Du nutzt ja die neue Version von SA:MP, möglich dass einige Plugins nicht 100%-ig funktionieren ( MYSQL ) . Hat es denn bei SA:MP 0.3b fehlerfrei funktioniert? Das solltest du vielleicht mal ausprobieren.


    //Edit:
    Gib am besten mal die Position auf die du den Spieler setzten willst vorher aus.
    printf("X -> %.2f",X);
    printf("Y -> %.2f",Y);
    printf("Z -> %.2f",Z);


    Nun weiß ich nicht, wie ich die Grundlinie, und die anderen Geraden herausbekommen soll.
    Die Winkel habe ich mit Hilfe von "Benutzer: Steam" schon herausgefunden.


    Hmpf, überlesen.
    Kannst ja trotzdem mal die Winkel posten.


    Hups.Überlesen dass es ZCMD ist.
    COMMAND:a(playerid,params[])
    {
    new string[128],playername[20];
    if(isnull(params))return SendClientMessage(playerid,ROT,"Verwendung: /a [text]");
    {
    if(SpielerInfo[playerid][Adminlevel]>=1)
    {
    GetPlayerName(playerid,playername,sizeof(playername));
    format(string,sizeof(string),"%s Adminlevel %i: %s.",playername,SpielerInfo[playerid][Adminlevel],params);
    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel]>=1)
    {
    SendClientMessage(i,GELB,string);
    }
    }
    }
    else return SendClientMessage(playerid, GRAU, "Du hast nicht das benötigte Adminlevel.");
    }
    return 1;
    }
    Man brauch isnull() für diese Methode.Du müsstest in der ZCMD Include eigentlich die isnull() Funktion haben.



    http://forum.sa-mp.de/wbb/san-…/35274-pawn-einstieg-2-0/
    http://wiki.sa-mp.com/wiki/Scripting_Basics
    http://forum.sa-mp.de/wbb/san-…player/board39-tutorials/

    BUeber(playerid,giveid,10000);
    Würde 10000 von playerid abziehen und giveid geben. giveid ist dabei ein Integer.


    Aber Ich muss mich wieder wiederholen.Du kannst die Grundlagen nicht.


    stock BUeber(playerid, takeid, money) {
    SpielerInfo[takeid][BEuro]+=money;
    SpielerInfo[playerid][BEuro]-=money;
    return 1;
    }
    playerid,takeid und money sind in der Funktion lokale Variablen.Sie existieren außerhalb nicht.

    Ich glaube auch eher,dass es eine Ausrede von kye ist.Kann mir gut vorstellen dass er es eben nicht coden kann, dass alles automatisch abgewickelt wird.


    Zitat

    Es war einfach angekündigt, dass die Serverbesitzer den Spielern neue Models anbieten kann,
    wie das gehen wird, wurde nie richtig erklärt.


    Kann er ja auch.Das hat ja BloodyEric im Post jetzt auch geschrieben,wie es funktionieren soll .Jedem ist es dann aber selbst überlassen, ob er die Datein installiert oder nicht.

    Schau dir endlich die Grundlagen an.
    Wieso kommt als erstes in deinem Befehl der Loop? Macht doch gar keinen Sinn.Es ist auch schwierig dir zu helfen wenn du nicht die Grundlagen beherrscht.
    COMMAND:a(playerid,params[])
    {
    new
    string[128],
    playername[MAX_PLAYER_NAME];
    //if(sscanf(params,"s",text)) return SendClientMessage(playerid,ROT,"Verwendung: /a [text]");
    if(!params[0]) return SendClientMessage(playerid,ROT,"Verwendung: /a [text]");
    // Die Abfrage ob der Spieler Admin ist müsste hier hin
    //
    //
    GetPlayerName(playerid,playername,sizeof(playername));
    //format(string,sizeof(string),"%s Adminlevel %i: %s.",playername,SpielerInfo[playerid][Adminlevel],text);
    format(string,sizeof(string),"%s Adminlevel %i: %s.",playername,SpielerInfo[playerid][Adminlevel],params);


    for(new i;i<MAX_PLAYERS;i++)
    {
    if(SpielerInfo[i][Adminlevel] >= 1)
    {
    SendClientMessage(i,GELB,string);
    }
    }
    return 1;
    }

    Mods funzen schon,
    aber es ist für Serverbetreiber nicht möglich (wie so großartig angekündigt),
    den Nutzern automatisch Models anbieten zu können-.--


    Quatsch.Das war nie angekündigt.Es wurde von Anfang gesagt, dass es nicht automatisch ablaufen wird.
    Denn Kye ist der Meinung,so könnte man schädliche Software über den Client an den Mann bringen.

    Ne,eher so.

    public OnPlayerDeath(playerid, killerid, reason)
    {
    GivePlayerMoney(playerid, -5000);
    if(killerid == INVALID_PLAYER_ID) {
    SendClientMessage(playerid, COLOR_BLUE, "Du hast Selbstmord begangen!");
    }
    else {
    new
    pName[MAX_PLAYER_NAME],
    string[15 + MAX_PLAYER_NAME 9 + 1];
    GivePlayerMoney(killerid, 5000);


    GetPlayerName(killerid, pName, sizeof(pName) );
    format(string,sizeof(string),"Du wurdest von %s getötet!",pName);
    SendClientMessage(playerid, COLOR_RED, string);


    GetPlayerName(playerid, pName, sizeof(pName) );
    format(string,sizeof(string),"Du hast %s getötet !",pName);
    SendClientMessage(killerid, COLOR_BLUE, string);
    }
    return 1;
    }
    pName & string braucht man nicht zu erstellen,falls Selbstmord begannen wurde ( killerid == INVALID_PLAYER_ID ).
    Hab ich auch noch nie erlebt, dass die playerid Gleichzeitig die killerid ist.
    Du brauchst auch kein Array von pName bzw string.
    Da die Nachrichten sowieso Nacheinander versendet werden, brauch Ich dafür keine zwei Strings.Ich nutze einfach einen.
    GivePlayerMoney für die killerid ist auch ein unnötiger Aufruf, falls der Spieler Selbstmord begannen hat.
    Das Gleiche gilt auch für GetPlayerName.


    Man könnte natürlich noch auf pName verzichten, halte Ich aber für überflüssig.


    Konnte ziemlich viel verbessern, meinst du nicht :p ?