Beiträge von Jeffry

    format(query, sizeof(query), "INSERT INTO `haeuser` (`hid`, `preis`,`level`,`hx`,`hy`, `hz`,`besitzer`) VALUES ('%i', '%i', '%i','%f','%f','%f','Niemand')", Haeuser+1 , preis,level,hx,hy,hz);


    Du hast dich mit den Anführungszeichen vertan.

    Nein.
    So:


    ocmd:kick(playerid,params[])
    {
    if(!isPlayerAnAdmin(playerid,1))return SendClientMessage(playerid,ROT,"Rang zu Niedrig.");
    new pID, reason[128],string[144];
    if(sscanf(params,"us",pID,reason))return SendClientMessage(playerid,GELB,"/kick [id] [grund]");
    format(string,sizeof(string),"Du wurdest von %s gekickt.Grund: %s",Name(playerid),reason);
    KickExWithMessage(pID, ROT, string);
    SetPVarInt(pID,"Kick1",GetPVarInt(pID,"Kick1")+1);
    return 1;
    }


    stock KickExWithMessage(playerid, color, message[])
    {
    SendClientMessage(playerid, color, message);
    SetTimerEx("KickExPublic", 1000, false, "d", playerid);
    }


    public KickExPublic(playerid)
    {
    Kick(playerid);
    }



    EDIT:
    Übrigens ist hier noch ein Fehler:
    SetTimerEx("BanExPublic", 1000, false, "d", playerid, reason);
    das muss so sein:
    SetTimerEx("BanExPublic", 1000, false, "ds", playerid, reason);

    new Float:pos[3];
    new dots, tmp[16], count;
    for(new i=1, j=strlen(inputtext); i<j; i++)
    {
    if(inputtext[i] == ',' || inputtext[i] == ')')
    {
    pos[count] = floatstr(tmp);
    count++;
    tmp = "";
    dots = 0;
    }
    else if(inputtext[i] >= '0' && inputtext[i] <= '9')
    {
    format(tmp, sizeof(tmp), "%s%c", tmp, inputtext[i]);
    }
    else if(inputtext[i] == '-')
    {
    if(!strlen(tmp)) format(tmp, sizeof(tmp), "%s%c", tmp, inputtext[i]);
    else return SendClientMessage(playerid, ROT, "Fehler"); //Minus nicht am Anfang (was will es denn mittendrin??!)
    }
    else if(inputtext[i] == '.')
    {
    dots++;
    format(tmp, sizeof(tmp), "%s%c", tmp, inputtext[i]);
    if(dots > 1) return SendClientMessage(playerid, ROT, "Fehler"); //Mehr als 1 Punkt
    }
    else return SendClientMessage(playerid, ROT, "Fehler"); //Kein - oder ) oder , oder . oder 0 1 2 3 4 5 6 7 8 9.
    }
    printf("%f %f %f", pos[0], pos[1], pos[2]);


    Eingabe:

    Zitat

    (1345.34314,-2019.43414,14.0983)


    Ausgabe:

    Zitat

    1345.343139 -2019.434082 14.098299


    Geht sicher effizienter, aber du macht ja keine 10000 Eingaben auf einmal, von daher geht die Anschaulichkeit vor.

    Nicht nur normalerweise, sondern man macht es gar nicht.


    Warum?
    Ganz einfach. Du führst die Include ja nicht aus, sondern baust sie in einen Gamemode oder einen Filterscript ein, und den kompilierst du dann. Eine .amx von einer Include hat keinen Sinn.


    Wieso die Errors?
    a_samp.inc ist nicht in der Include inkludiert. Warum das nicht? => Sonst wäre es doppelt inkludiert, wenn du die Include in einem GM/FS hast, der auch a_samp.inc als Include nutzt.


    Wenn du eine Include auf Syntax-Fehler prüfen willst, dann musst du den .pwn Code kompilieren, in dem die Include inkludiert ist.

    ocmd:buyhaus(playerid,params[])
    {
    if(hatPlayerHaus(playerid))return SendClientMessage(playerid,rot,"Du hast berreits ein Haus!");
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,2,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))
    {
    if(GetPlayerMoney(playerid)<hInfo[i][h_preis])return SendClientMessage(playerid,rot,"Du hast nicht genug Geld!");
    GivePlayerMoney(playerid,-hInfo[i][h_preis]);
    strmid(hInfo[i][h_besitzer], getPlayerName(playerid),0, MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updatehaus(i);
    SaveHaus(i);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Dieses Haus steht nicht zum Verkauf!");
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    }


    ocmd:sellhaus(playerid,params[])
    {
    for(new i=0; i<sizeof(hInfo); i++)
    {
    if(!hInfo[i][h_id])continue;
    if(IsPlayerInRangeOfPoint(playerid,5,hInfo[i][h_x],hInfo[i][h_y],hInfo[i][h_z]))
    {
    if(!strlen(hInfo[i][h_besitzer]))continue;
    if(!strcmp(hInfo[i][h_besitzer],getPlayerName(playerid),true))
    {
    GivePlayerMoney(playerid,hInfo[i][h_preis]/2);
    strmid(hInfo[i][h_besitzer], "",0, 0,0);
    updatehaus(i);
    SaveHaus(i);
    new string[164];
    format(string,sizeof(string),"Haus Verkauft! Du hast die Hälfte des Kaufpreises wieder beckommen (%i$)",hInfo[i][h_preis]/2);
    SendClientMessage(playerid,gelb,string);
    return 1;
    }
    else
    {
    SendClientMessage(playerid,rot,"Das Haus gehört nicht dir!");
    return 1;
    }
    }
    }
    return SendClientMessage(playerid,rot,"Du bist nicht in der nähe eines Hauses!");
    }


    Das lag an der Schleife, weil du dort nach dem ersten Haus gleich ein return drinnen hattest.

    Ok. Du musst die Größe von "string" erhöhen.


    So wie bei dem hier:
    new whostats[48];
    steht irgndwo vor ^dem sowas:


    new string[HIER_EINE_ZAHL];


    Das HIER_EINE_ZAHL ist bei dir irgendeine Zahl, die musst du erhöhen, am besten so:
    new string[1024];


    Dann solltest du alles sehen.

    stock RemoveObjectsAtConnect(playerid)
    {
    for(new i=0;i<MAX_MAPS;i++)
    {
    for(new r = 0; r < MAX_REMOVE_CODES; r++)
    {
    RemoveBuildingForPlayer(playerid,ServerMaps[i][removeModel][r],ServerMaps[i][removeX][r],ServerMaps[i][removeY][r],ServerMaps[i][removeZ][r],ServerMaps[i][removeRadius][r]);
    }
    }
    return 1;
    }


    So.

    Das schreiben wir lieber so, sieht schöner aus und ist besser lesbar.
    if(strcmp(cmd, "/stats", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(gPlayerLogged[playerid] != 0) ShowStats(playerid,playerid);
    else SendClientMessage(playerid, GREY, " You are not Logged in.");
    }
    return 1;
    }
    if(strcmp(cmd, "/stealth", true) == 0)
    {
    if(IsPlayerConnected(playerid))
    {
    if(PlayerInfo[playerid][pAdmin] >= 3)
    {
    if(PlayerInfo[playerid][pStealthed] == 0)
    {
    PlayerInfo[playerid][pStealthed] = 1;
    return SendClientMessage(playerid, GREY, " You are now hidden.");
    }
    if(PlayerInfo[playerid][pStealthed] == 1)
    {
    PlayerInfo[playerid][pStealthed] = 0;
    return SendClientMessage(playerid, GREY, " You are no longer hidden.");
    }
    }
    }
    }

    Ansonsten sollte es passen.