Beiträge von #S.

    Hey Leuts,


    ich habe ein starkes Problem mit meinem Textdraw. Es verträgt sich mit meinem Server irgendwie nicht.
    Guckt es euch selber an. (Unten rechts.)



    Dieses Problem tritt jede Sekunde auf. (Es verschwindet und kommt danach wieder, jede Sekunde, wie im Timer eingestellt.)
    Das Problem daran: Der ganze Server laggt hart.


    Der Code, der dies verursacht:

    // Der Textdraw allgemein


    new string[256];
    format(string,sizeof(string),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %i ~n~Tode: %i ~n~Killstreak: %i",GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"),GetPVarInt(playerid,"Killstreak"));
    InfoBox[playerid] = TextDrawCreate(9.000000,280.000000,string);
    // ---------------------------------------------------------


    public InfoBoxA() // Damit aktualisiere ich jede Sekunde den Textdraw, und hier liegt auch das Problem.
    {
    for(new i = 0; i<MAX_PLAYERS; i++)
    {
    new string[128];
    format(string,sizeof(string),"Kills: %i ~n~Tode: %i ~n~Killstreak: %i",GetPVarInt(i,"Kills"),GetPVarInt(i,"Tode"),GetPVarInt(i,"Killstreak"));
    TextDrawSetString(InfoBox[i],string);
    }
    return 1;
    }

    Hoffentlich weiß jemand die Lösung.


    lg :thumbup:

    Clap bei mir nicht bekomme errors


    Guckst du hier.

    ShowPlayerDialog(playerid,DEINDIALOG,DIALOG_STYLE_LIST,"Deine Überschrift.","Dein Item\nDein 2tes Item","Button1","Button2"); // \n steht für "Nächste Zeile"
    //ONDIALOGRESPONSE
    if(dialogid == DEINEDIALOGID)
    {
    if(response == 1)
    {
    if(listitem == 0)
    {
    // WAS PASSIEREN SOLL,WENN ER AUF DAS ERSTGELISTETTE ITEM DRÜCKT
    }
    }
    }

    Wenn Error's kommen, posten.


    lg :thumbup:

    Kein Wunder wenn überall { und } fehlt.


    Nicht nötig. Bei mir sind alle Befehle ohne { & }. Also kein Problem. ;)
    Du hast über all die Formatierungen vergessen. %s oder andere kannst du nicht einfach per SendClientMessage ausgeben!

    ocmd:leadermachen(playerid,params[])
    {
    if(isPlayerAnAdmin(playerid,2))return SendClientMessage(playerid,ROT,"Dein Adminrang ist zu niedrig!");
    new pID,fID;
    if(sscanf(params,"ui",pID,fID))return SendClientMessage(playerid,TÜRKIS,"/leadermachen [ID/Teil des Namens] [Fraktion]");
    SetPVarInt(pID,"Fraktion",fID);
    new string[128];
    format(string,sizeof(string),"Du wurdest von %s als Fraktionsleader der Fraktion %i gemacht, behandel Sie gut!",Name(playerid),fID);
    SendClientMessage(playerid,TÜRKIS,string);
    return 1;
    }


    ocmd:adminmachen(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,5)) return SendClientMessage(playerid,ROT,"Dein Admin Rang ist nicht hoch genug.");
    new string[128],pID, rank;
    if(sscanf(params,"ui",pID,rank)) return SendClientMessage(playerid,ROT,"/adminmachen [ID/Teil des Namens] [Adminrang]");
    if(rank<1||rank>6) return SendClientMessage(playerid,ROT,"Gib einen gültigen Rang ein.");
    SendClientMessage(playerid,ROT,string);
    SetPVarInt(pID,"Adminlevel",rank);
    SpielerSpeichern(pID);
    new string[128];
    format(string,sizeof(string),"%s hat %s zum Admin gemacht.",Name(playerid),Name(pID));
    SendClientMessageToAll(BLAU,sting);
    return 1;
    }
    // Stock den du brauchst. Unten ins Script!
    stock Name(playerid)
    {
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    return name;
    }

    Jetzt. ;)


    lg :thumbup:

    Opposit of SetPlayerVirtualWorld?
    Right,

    new vehicleid = GetPlayerVehicleID(playerid);
    SetVehicleVirtualWorld(vehicleid,virtualworldnumber);


    2. Einfach direkt beim Teleportieren die Welt setzen oder schon vorher. (Sprich versetzt!)
    2.1 Oder einfach RandomSpawns platzieren.
    Like this:

    new Float:RandomSpawn[][1] =
    {
    {1378.9904,2128.7727,11.0156,181.4084}
    };


    lg :thumbup:

    Code? Sehe bisher nur, dass eine } fehlt.

    else if(PlayerInfo[targetid][pJob] == 2) { jtext = "Anwalt"; }
    else if(PlayerInfo[targetid][pJob] == 3) { jtext = "Busfahrer"; } /* <--- Hier^^ */


    lg :thumbup:

    @Travelga: Joa.

    ShowPlayerDialog(....,DIALOG_STLE_LIST,"....");
    //ONDIALOGRESPONSE
    if(dialogid == DEINEDIALOGID)
    {
    if(listitem == 0)
    {
    // WAS PASSIEREN SOLL,WENN ER AUF DAS ERSTGELISTETTE ITEM DRÜCKT
    }
    }

    Sry für Caps. xD


    lg :thumbup:

    Du.... ich auch nicht. ;)

    COMMAND:blitzer(playerid,params[])
    {
    new blitzerstr[64];
    if(IsPlayerAnAdmin(playerid,3))
    {
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp))
    {
    SendClientMessage(playerid,Grün,"Usage: /blitzer [ create / remove / removeall ](Ab Rang 3)]");
    }
    new blitzer;
    switch (blitzer)
    {
    case 0:
    {
    // Was soll passieren wenn er Create eingibt?
    }
    case 1:
    {
    // Was soll passieren wenn er Remove eingibt?
    }
    case 2:
    {
    // Was soll passieren wenn er Removeall eingibt?
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du darfst diesen Befehl nicht nutzen.");
    return 1;
    }
    return 1;
    }

    Soa.


    lg :thumbup:


    stock IsNoNitroCar(vehicleid)
    {
    new vehicleid = GetPlayerVehicleID(playerid);
    if(vehicleid == 581 || vehicleid == 523 || vehicleid == 462 || vehicleid == 521 ||
    vehicleid == 463 || vehicleid == 522 || vehicleid == 461 || vehicleid == 448 ||
    vehicleid == 468 || vehicleid == 586 || vehicleid == 509 || vehicleid == 481 ||
    vehicleid == 510 || vehicleid == 472 || vehicleid == 473 || vehicleid == 493 ||
    vehicleid == 595 || vehicleid == 484 || vehicleid == 430 || vehicleid == 453 ||
    vehicleid == 452 || vehicleid == 446 || vehicleid == 454 || vehicleid == 590 ||
    vehicleid == 569 || vehicleid == 537 || vehicleid == 538 || vehicleid == 570 ||
    vehicleid == 449 || vehicleid == 406)
    {
    return 1;
    }
    else return 0;
    }


    lg :thumbup:


    COMMAND:blitzer(playerid,params[])
    {
    new blitzerstr[64];
    if(IsPlayerAnAdmin(playerid,3))
    {
    if(sscanf(params,"s",blitzerstr))return SendClientMessage(playerid,COLOR_GREY,"Benutze: /blitzer [create / remove / removeall (Ab Rank 3)]");
    {
    if(strcmp(blitzerstr,"create",true)==0)
    {
    new geschw,bestrafung, Float:y,Float:x,Float:z;
    if(sscanf(params,"ii",geschw,bestrafung))return SendClientMessage(playerid,COLOR_GREY,"Benutze: /blitzer create [Geschwindigkeit] [Strafe($)]");
    CreateBlitzer(x,y,z,geschw,bestrafung);
    SendClientMessage(playerid,COLOR_GREY,"Blitzer aufgestellt!");
    return 1;
    }
    return 1;
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_GREY,"Du darfst diesen Befehl nicht nutzen.");
    return 1;
    }
    }


    stock CreateBlitzer(Float:x,Float:y,Float:z,speed,bestrafung)
    {
    // Hier alles rein was passieren soll.
    return 1;
    }

    Machs mal so.
    Die Function "CreateBlitzer" musst du nur noch füllen.


    lg :thumbup:

    Naja doch schon ein bisschen.
    Du kannst das Wasser ja "abdecken" mit Plattformen. Also das geht immerhin, so ist das nicht. o.o


    lg :thumbup:

    Hm, ich poste mal ALLES, was ich zu diesem Textdraw habe, vielleicht findet jemand was!

    Spoiler anzeigen


    new Text:InfoBox[MAX_PLAYERS];
    forward InfoBoxA(); // InfoBox aktualisieren
    // OnGameModeInit
    SetTimer("InfoBoxA",2500,true);
    // Funktion
    stock Test(playerid)
    {
    new string[256];
    format(string,sizeof(string),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %d ~n~Tode: %d ~n~Killstreaks: %d",GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"),GetPVarInt(playerid,"Killstreak"));
    InfoBox[playerid] = TextDrawCreate(9.000000,280.000000,string);
    TextDrawBackgroundColor(InfoBox[playerid], 255);
    TextDrawFont(InfoBox[playerid], 1);
    TextDrawLetterSize(InfoBox[playerid], 0.430000, 1.000000);
    TextDrawColor(InfoBox[playerid],-65281);
    TextDrawSetOutline(InfoBox[playerid], 0);
    TextDrawSetProportional(InfoBox[playerid], 1);
    TextDrawSetShadow(InfoBox[playerid], 1);
    TextDrawUseBox(InfoBox[playerid], 1);
    TextDrawBoxColor(InfoBox[playerid], 170);
    TextDrawTextSize(InfoBox[playerid],167.000000,284.000000);
    }
    // OnPlayerConnect
    Test(playerid);
    // Public zum aktualisieren
    public InfoBoxA()
    {
    for(new i; i<MAX_PLAYERS; i++)
    {
    new str2[128];
    format(str2,sizeof(str2),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %d ~n~Tode: %d ~n~Killstreaks: %d",GetPVarInt(i,"Kills"),GetPVarInt(i,"Tode"),GetPVarInt(i,"Killstreak"));
    TextDrawSetString(InfoBox[i],str2);
    TextDrawShowForPlayer(i,InfoBox[i]);
    }
    return 1;
    }


    lg :thumbup:


    #E: Entdeckung: Sobald ich den InfoBoxA aussklammere (/**/) laggt es zwar nicht mehr, aber der Textdraw wird nicht mehr angezeigt.

    und ehm, vielleicht irgendwelche Textdraws doppelt definiert?


    Nein dürfte nicht. Ich hab gestern mal Kaliber drüber gucken lassen, der hat mir eine Funktion gebaut:

    stock Test(playerid)
    {
    new string[256];
    format(string,sizeof(string),"Leben:~n~Forum: *zensored*~n~Teamspeak: Folgt~n~Kills: %d ~n~Tode: %d ~n~Killstreaks: %d",GetPVarInt(playerid,"Kills"),GetPVarInt(playerid,"Tode"),GetPVarInt(playerid,"Killstreak"));
    InfoBox[playerid] = TextDrawCreate(9.000000,280.000000,string);
    TextDrawBackgroundColor(InfoBox[playerid], 255);
    TextDrawFont(InfoBox[playerid], 1);
    // Und der rest halt
    // OnPlayerConnected
    Test(playerid);
    ShowProgressBarForPlayer(playerid,Bar:HPBar[playerid]);

    Also von doppelt definiert sehe ich im Script nirgendwo.


    lg :thumbup:

    Boah endlich... Habs hinbekommen.
    Lösungsweg:
    Alle Hochsetzungen mit PVar's gemacht.

    SetPVarInt(killerid,"Kills",GetPVarInt(playerid,"Kills") +1);
    SetPVarInt(killerid,"Killstreak",GetPVarInt(playerid,"Killstreak") +1);
    SetPVarInt(playerid,"Tode",GetPVarInt(playerid,"Tode") +1);
    SetPVarInt(playerid,"Killstreak",0);

    Und vielen Dank an dich, Farid dass du mir den Lösungsweg mit dem Aktualisieren gegeben hast!


    lg :thumbup:


    #E: Soviel zum Thema. ;(
    Mein Tacho verträgt sich nicht mit meinem Textdraw.
    Sobald ich in ein Fahrzeug einsteige, wird mein Tacho angezeigt und Links daneben mein Textdraw nur ohne Box. WTF?
    Ebenfalls laggt es total. Der Textdraw der zu den Zahlen zeigt, updatet sich nur sehr langsam, und ich lagge wie sau. (Textnachrichten kommen erst spät etc.)
    Wenn ich normale Laufe, läuft es perfekt. (Kein Laggen, guter Ping)
    Seht unten Rechts.
    Screen:

    Hoffe mir kann jemand helfen...

    Ich habe eine kleine Vermutung warum es nicht geht.
    Ich habe mal aus Spaß in meine User File geguckt (nach dem Tod!) und bei Tode= steht immer noch 0.
    Dabei habe ich doch bei OnPlayerDeath 1ns dazu gerechnet?

    public OnPlayerDeath(playerid, killerid, reason)
    {
    SpielerInf[killerid][Kills] ++;
    SpielerInf[killerid][Killstreak] ++;
    SpielerInf[playerid][Tode] ++;
    SpielerInf[playerid][Killstreak] = 0;
    SendDeathMessage(killerid,playerid,reason);


    lg :thumbup:

    Ops das mit dem Thema erledigt wollte ich nicht. xD
    Wo soll ich dein Beispiel hinpacken?
    Und zeig mir doch mal ein kleines Beispiel mit dem Timer. Und das mit dem gesaved wird: Nö xD
    Enum Struktur:

    enum SpielerInformationen
    {
    Adminlevel,
    Bann,
    Mute,
    Warns,
    Timeban,
    Premium,
    Score,
    Tode,
    Kills,
    Killstreak,
    Geld
    };


    lg :thumbup:


    // OT
    Danke. :P