Wetter System Buggt

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
  • Hallo com Mein wetter system buggt i-wie ein bissn rum ? aber why 8|
    also gestern abend war es dunkel wie es sein soll und jetze ist es hell wie es sein soll aber wenn ich /wetter LS 8 oder so eingebe kommt zwar die nachricht es passiert aber nichts



    //oben im script
    new WetterRandomLS[] = { 1,2,3,15 };
    new WetterRandomSF[] = { 5,6,16 };
    new WetterRandomLV[] = { 1,2,3,4,5,18 };
    new Weather[4],
    WetterTimer;


    forward SetWetter();


    //OnGameModeInit
    SetTimer("MinutenTimer",1000*60,true);
    WetterTimer = 45;


    ocmd:wetter(playerid,params[]){
    if(!isAdmin(playerid,3)) return SendClientMessage(playerid,ROT,"Info: Du bist dazu nicht befugt!");
    if(adminduty[playerid] == 0) return SendClientMessage(playerid,ROT,"Du bist nicht Aduty!");
    new wid,wo[3];
    if(sscanf(params,"si",wo,wid)) return SendClientMessage(playerid,-1,"Benutze: /wetter [LS/SF/LV] [WetterID]");
    if(strcmp(wo,"LS",true) == 0) Weather[0] = wid;
    if(strcmp(wo,"SF",true) == 0) Weather[1] = wid;
    if(strcmp(wo,"LV",true) == 0) Weather[2] = wid;
    SendClientMessage(playerid,-1,"Wetter erfolgreich geändert.");
    return 1;
    }


    public SetWetter(){
    new Float:xx, Float:yy, Float:zz;
    for(new i=0; i< GetMaxPlayers(); i++){
    if(IsPlayerConnected(i)){
    GetPlayerPos(i, xx, yy, zz);
    if((xx > -992.5172 && xx < 4000.0000) && (yy < 528.0000 && yy > -4000.0000)) SetPlayerWeather(i, Weather[0]);//LS
    if((xx > -4000.0000 && xx< -992.5172) && (yy < 4000.0000 && yy > -4000.0000)) SetPlayerWeather(i, Weather[1]);//SF
    if((xx > -992.5172 && xx< 4000.0000) && (yy < 4000.0000 && yy > 528.0000)) SetPlayerWeather(i, Weather[2]);//LV
    }
    }
    return 1;
    }


    public MinutenTimer(){
    new x[4],var = 0;
    gettime(x[1],x[2],x[3]);
    switch(x[1]){
    case 9..19:{
    var = 1;
    SetWorldTime(x[1]);
    }
    }
    if(var == 0) SetWorldTime(24);


    WetterTimer -= 1;
    if(WetterTimer == 0){
    Weather[0] = WetterRandomLS[random(sizeof(WetterRandomLS))];
    Weather[1] = WetterRandomSF[random(sizeof(WetterRandomSF))];
    Weather[2] = WetterRandomLV[random(sizeof(WetterRandomLV))];
    WetterTimer = 45;
    }
    }

  • Dann schreib es so:
    ocmd:wetter(playerid,params[]){
    if(!isAdmin(playerid,3)) return SendClientMessage(playerid,ROT,"Info: Du bist dazu nicht befugt!");
    if(adminduty[playerid] == 0) return SendClientMessage(playerid,ROT,"Du bist nicht Aduty!");
    new wid,wo[3];
    if(sscanf(params,"s[3]i",wo,wid)) return SendClientMessage(playerid,-1,"Benutze: /wetter [LS/SF/LV] [WetterID]");
    if(strcmp(wo,"LS",true) == 0) Weather[0] = wid;
    if(strcmp(wo,"SF",true) == 0) Weather[1] = wid;
    if(strcmp(wo,"LV",true) == 0) Weather[2] = wid;
    SendClientMessage(playerid,-1,"Wetter erfolgreich geändert.");
    return SetWetter();
    }

    3HZXdYd.png

    Einmal editiert, zuletzt von Jeffry ()

  • Debugge es bitte mal, zum sehen, ob es an sscanf liegt, oder an der SetWetter Funktion:
    ocmd:wetter(playerid,params[]){
    if(!isAdmin(playerid,3)) return SendClientMessage(playerid,ROT,"Info: Du bist dazu nicht befugt!");
    if(adminduty[playerid] == 0) return SendClientMessage(playerid,ROT,"Du bist nicht Aduty!");
    new wid,wo[3];
    if(sscanf(params,"s[3]i",wo,wid)) return SendClientMessage(playerid,-1,"Benutze: /wetter [LS/SF/LV] [WetterID]");
    if(strcmp(wo,"LS",true) == 0) Weather[0] = wid;
    if(strcmp(wo,"SF",true) == 0) Weather[1] = wid;
    if(strcmp(wo,"LV",true) == 0) Weather[2] = wid;
    printf("wo=%s | W0=%d | W1=%d | W2=%d", wo, Weather[0], Weather[1], Weather[2]);
    SendClientMessage(playerid,-1,"Wetter erfolgreich geändert.");
    return SetWetter();
    }


    Was wird geprintet?

  • Dann liegt es an deinem SetWetter. Debugge das mal so:
    public SetWetter(){
    new Float:xx, Float:yy, Float:zz;
    for(new i=0; i< GetMaxPlayers(); i++){
    if(IsPlayerConnected(i)){
    GetPlayerPos(i, xx, yy, zz);
    if((xx > -992.5172 && xx < 4000.0000) && (yy < 528.0000 && yy > -4000.0000)) SetPlayerWeather(i, Weather[0]), printf("Setze Wetter für %d zu %d in LS", i, Weather[0]);//LS
    if((xx > -4000.0000 && xx< -992.5172) && (yy < 4000.0000 && yy > -4000.0000)) SetPlayerWeather(i, Weather[1]), printf("Setze Wetter für %d zu %d in SF", i, Weather[1]);//SF
    if((xx > -992.5172 && xx< 4000.0000) && (yy < 4000.0000 && yy > 528.0000)) SetPlayerWeather(i, Weather[2]), printf("Setze Wetter für %d zu %d in LV", i, Weather[2]);//LV
    }
    }
    return 1;
    }


    Was wird geprintet?

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Jeffry:
    habe eingegeben
    /wetter LS 1
    /wetter SF 2
    /wetter LV 3


    [18:54:07] wo=LS | W0=1 | W1=0 | W2=0
    [18:54:07] Setze Wetter für 0 zu 0 in LV
    [18:54:12] wo=SF | W0=1 | W1=2 | W2=0
    [18:54:12] Setze Wetter für 0 zu 0 in LV
    [18:54:21] wo=LV | W0=1 | W1=2 | W2=3
    [18:54:21] Setze Wetter für 0 zu 3 in LV

  • /wetter LS 8



    /gotosf siehe pic gleiches wetter


    /wetter SF 2


    /gotols jetze das wetter 2 auch in LS



    [19:17:02] wo=LS | W0=8 | W1=2 | W2=1
    [19:17:02] Setze Wetter für 0 zu 8 in LS
    [19:17:13] Der Admin [RGR]xSnake hat sich nach SF teleportiert)
    [19:17:38] wo=SF | W0=8 | W1=2 | W2=1
    [19:17:38] Setze Wetter für 0 zu 2 in SF
    [19:17:45] Der Admin [RGR]xSnake hat sich nach LS teleportiert)

  • Das hat aber nichts mit dem /wetter Befehl zu tun.
    Du musst zu deinen /gotols /gotosf /gotolv Befehlen diesen Funktionsaufruf hinzufügen, sonst wird das Wetter nicht geändert.


    SetWetter();


    Oder du machst noch eine Funktion die das nur für den einen Spieler prüft, weil so machst du es ja immer für alle.