Blitzer macht nix

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
  • //EDIT: So, das Problem mitm Blitzer ist gelöst, hatte vergessen ne cmdlänge anzugeben... mein Kopf -> Wand
    Jetzt müsste nur noch die Frage mit den Timern beantwortet werden, die findet ihr beim 3ten Post
    Hallo, ich habe hier mal ein kleines Problem, und zwar bei dem Code:

    Spoiler anzeigen
    if(strcmp(params,"aufbauen",true)==0) {
    if(alleblitzer<9) {
    if(!strlen(strget(params,1))) return SendClientMessage(playerid,rot,"/blitzer aufbauen Maximalgeschwindigkeit");
    new geschw=strval(strget(params,1));
    if(geschw>=81) {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i=0; i<9; i++) {
    if(bli[i][aufgestellt]==0) {
    bli[i][blitzerx]=x;
    bli[i][blitzery]=y;
    bli[i][blitzerz]=z;
    bli[i][aufgestellt]=playerid+2;
    bli[i][blitzgeschw]=geschw;
    pi[playerid][bautblitzerauf]=1;
    i=9; }}
    SendClientMessage(playerid,blau,"Stelle dich nun an die Stelle, wo der Blitzer blitzen soll und nutze /blitzer fertig");
    }
    else { SendClientMessage(playerid,rot,"Maximalgeschwindigkeit muss mindestens bei 81 liegen"); }}
    else { SendClientMessage(playerid,rot,"Es stehen bereits alle 10 Blitzer, du musst erst einen abbauen"); }
    }

    So, ich bekomme keine Errors oder so, wenn ich Ingame /blitzer machen, dann kommt da halt ne Nachricht "/blitzer 'aufbauen' oder...", ist ja auch soweit richtig, wenn ich jetzt "/blitzer aufbauen" eingebe, komm die Nachricht "/blitzer aufbauen Maximalgeschwindigkeit", das ist auch noch richtig, aber wenn ich bei Maximalgeschwindigkeit nun etwas eintragen, egal, was es ist, kommt gar nichts mehr. Auch wenn ich dort -5645646 eingebe
    Kann da zufällig wer den Fehler finden?

  • ich würde für blitzer erstellen ne neue funktion schreiben und ne funktion die das ganze abcheckt das du beim cmd nru noch createn musst und der rest von selber geht

  • Sorry, aber, wie meinst du das jetzt? Ist doch nen cmd. Und wie abchecken? Das muss dann ja ein Timer sein, der hier eigendlich überhaupt nix bringen würde
    //EDIT: Hab dann auch nochmal ne andere Frage, undzwar:
    Was ist eigentlich resourcenschonender? Ein Timer, der jede Sekunde eine for-player-schleife macht, oder 200 andere Timer, davon macht aber keiner eine for-player-schleife. In den publics steht jeweils das gleiche drinne, außer die Schleife
    //EDIT2: So, das Problem mitm Blitzer ist gelöst, hatte vergessen ne cmdlänge anzugeben... mein Kopf -> Wand
    Jetzt müsste nur noch die Frage mit den Timern beantwortet werden

  • if(strcmp(params,"aufbauen",true)==0) {
    if(alleblitzer<9) {
    if(!strlen(strget(params,1))) return SendClientMessage(playerid,rot,"/blitzer aufbauen Maximalgeschwindigkeit");
    new geschw=strval(strget(params,1));
    if(geschw>=81) {
    new Float:x, Float:y, Float:z;
    GetPlayerPos(playerid,x,y,z);
    for(new i=0; i<9; i++) {
    if(bli[i][aufgestellt]==0) {
    bli[i][blitzerx]=x;
    bli[i][blitzery]=y;
    bli[i][blitzerz]=z;
    bli[i][aufgestellt]=playerid+2;
    bli[i][blitzgeschw]=geschw;
    pi[playerid][bautblitzerauf]=1;
    i=9; }}
    SendClientMessage(playerid,blau,"Stelle dich nun an die Stelle, wo der Blitzer blitzen soll und nutze /blitzer fertig");
    }
    else { SendClientMessage(playerid,rot,"Maximalgeschwindigkeit muss mindestens bei 81 liegen"); }}
    else { SendClientMessage(playerid,rot,"Es stehen bereits alle 10 Blitzer, du musst erst einen abbauen"); }
    }


    Wieso definierst du die Geschwindikeit mit ?


    new geschw=strval(strget(params,1));


    Nimm doch float^


    new Float:OldX[MAX_PLAYERS];
    new Float:OldY[MAX_PLAYERS];
    new Float:OldZ[MAX_PLAYERS];
    //======================================
    new Float:X, Float:Y, Float:Z, Float:Distance;
    GetPlayerPos(i, X, Y, Z);
    distance = floatsqroot(floatpower(floatabs(floatsub(x,PCarPos[i][PCarX])),2)+floatpower(floatabs(floatsub(y,PCarPos[i][PCarY])),2)+floatpower(floatabs(floatsub(z,PCarPos[i][PCarZ])),2));


    Also...


    new geschw=strval(distance);

    [align=center]
    Mta Script Editor - Work in Progress

  • Ne, die "geschw" ist die nötige Geschwindigkeit, die benötigt wird, damit der Blitzer überhaupt auslöst, das ist individuell einstellbar, wenn man den Blitzer aufstellt ;)
    Das Problem hab ich jetzt aber schon selbst gelöst
    Kann mir noch i-wer sagen, was davon resourcenschonender ist?
    - Ein Timer, der jede Sekunde bis 200 zählt
    - 200 Timer, die überhaupt nicht zählen