Beiträge von Fernando_Jizuya

In 10 Minuten startet der nächtliche Backupvorgang! Es kann währenddessen (ca. 10 Minuten) zu Einschränkungen bei der Nutzung des Forums kommen
Weitere Infos findet ihr im Thema Backup des Forums

    #define MAX_WEAPONS 50
    new PlayerWeapons[MAX_PLAYERS][MAX_WEAPONS];
    new Spawned[MAX_PLAYERS];


    Dann unter OnPlayerSpawn in der letzten Zeile:
    Spawned[playerid] = 1;


    Unter OnPlayerConnect:
    Spawned[playerid] = -1;


    Am besten unten im Script:
    stock GivePlayerWeapons(playerid, weaponid, ammo)
    {
    PlayerWeapons[playerid][weaponid] = weaponid;
    GivePlayerWeapon(playerid, weaponid, ammo);
    }


    Waffen gibst du dann mit GivePlayerWeapons, statt mit GivePlayerWeapon.


    In einem Sekundentimer am besten:
    if(GetPlayerWeapon(i) >= 1 && 47)
    {
    new weaponid = GetPlayerWeapon(i);
    if(PlayerWeapons[i][weaponid] == 0 && weaponid != 46 && !IsPlayerNPC(i))
    {
    if(Spawned[i] == 1)
    {
    SendClientMessage(i,-1,"Waffenhack erkannt.");
    }
    }
    }

    Mach es so:


    SetTimer("PayDay", 60000, true);


    public PayDay()
    {
    for(new playerid = 0; playerid < MAX_PLAYERS; playerid++)
    {
    if(IsPlayerConnected(playerid))
    {
    sInfo[playerid][payday]++;
    if(sInfo[playerid][payday] == 60)
    {
    new paytext[300],paytext1[299];
    PlayerPlaySound(playerid,1083,0,0,0);
    SendClientMessage(playerid,COLOR_YELLOW,"_______________|Payday|_______________");
    giveplayermoney(playerid,GetPlayerScore(playerid)*460);
    format(paytext,sizeof(paytext),"Gehalt: {37FF00}+%i$ {FFFFFF}+| Steuern: {FF0005}-%i$ {FFFFFF}| Krankenversicherung: {FF0005}-%i$",GetPlayerScore(playerid)*400,GetPlayerScore(playerid)*50,GetPlayerScore(playerid)*30);
    SendClientMessage(playerid,C_Weiß,paytext);
    GivePlayerMoney(playerid,-GetPlayerScore(playerid)*50);
    GivePlayerMoney(playerid,-GetPlayerScore(playerid)*30);
    if(GetPlayerScore(playerid) >= 4)
    {
    format(paytext1,sizeof(paytext1),"KFZ-Versicherung: {FF0005}-%i$ {FFFFFF}| Wasser & Strom: {FF0005}-%i$ {FFFFFF}| Müllentsorgung: {FF0005}-%i$",GetPlayerScore(playerid)*22,GetPlayerScore(playerid)*8,GetPlayerScore(playerid)*4);
    SendClientMessage(playerid,C_Weiß,paytext1);
    GivePlayerMoney(playerid,-GetPlayerScore(playerid)*22);
    GivePlayerMoney(playerid,-GetPlayerScore(playerid)*8);
    GivePlayerMoney(playerid,-GetPlayerScore(playerid)*4);
    }
    new string[256],respektlevel;
    sInfo[playerid][respekt]++;
    respektlevel=GetPlayerScore(playerid)*3;
    if(sInfo[playerid][respekt]>=respektlevel)
    {
    format(string,sizeof(string),"Du hast genug Respektpunkte für einen Levelaufstieg. Tippe: /buylevel",sInfo[playerid][respekt],respektlevel);
    }
    else
    {
    format(string,sizeof(string),"Respektpunkte: [%i / %i]",sInfo[playerid][respekt],respektlevel);
    }
    SendClientMessage(playerid,COLOR_YELLOW,string);
    sInfo[playerid][payday]=0;
    }
    }
    return 1;
    }
    }

    Sag das doch gleich:


    ocmd:createhaus(playerid,params[])
    {
    new preis,interior,Float:ixc,Float:iyc,Float:izc;
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
    if(sscanf(params,"iifff",preis,interior,ixc,iyc,izc))return SendClientMessage(playerid,ROT,"Befehl: /createhaus [PREIS][INTERIOR][INT-X][INT-Y][INT-Z]");
    new Float:xc, Float: yc, Float:zc;
    GetPlayerPos(playerid,xc,yc,zc);
    for(new i=1; i<sizeof(hInfo); i++)
    {
    if(hInfo[i][h_Erstellt] == 0)
    {
    hInfo[i][h_Erstellt] =1;
    hInfo[i][h_x]=xc;
    hInfo[i][h_y]=yc;
    hInfo[i][h_z]=zc;
    hInfo[i][h_ix]=Float:ixc;
    hInfo[i][h_iy]=Float:iyc;
    hInfo[i][h_iz]=Float:izc;
    hInfo[i][h_interior]=interior;
    hInfo[i][h_preis]=preis;
    strmid(hInfo[i][h_besitzer],"",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updateHaus(i);
    new query[256];
    format(query,sizeof(query),"INSERT INTO house (h_id,h_Erstellt,h_x,h_y,h_z,h_ix,h_iy,h_iz,h_interior,preis) VALUES ('%i','%i','%f','%f','%f','%f','%f','%f','%i','%i')",i,hInfo[i][h_Erstellt],xc,yc,zc,hInfo[i][h_ix],hInfo[i][h_iy],hInfo[i][h_iz],hInfo[i][h_interior],hInfo[i][h_preis]);
    mysql_function_query(dbverbindung, query, false,"","");
    return 1;
    }
    }
    return 1;
    }

    Schau mal:


    Es existieren 0 Häuser.
    Du gibst den Befehl ein und die Schleife geht durch ALLE Häuser, da ja keins existiert fängt das ganze bei ID 1 an.
    Erstellst du nun z.B 9 weitere Häuser, sind wir bei ID 10.
    Nun willst du ein 11 Haus erstellen, die Schleife geht durch (Beispiel: #define MAX_HAUS 300) also durch 300 und sieht das 10 Häuser bereits bestehen, also kommt ID 11 da die Variable h_Erstellt == 0 bei der ID 11 ist, da diese ID ja Frei ist, erstellt er das Haus mit der ID 11.


    Falls du das mit MAX_HAUS machen möchtest:


    #define MAX_HAUS 300
    for(new i=1; i<sizeof(MAX_HAUS); i++)


    Beachte das du damit nur 300 Häuser erstellen kannst.

    ocmd:createhaus(playerid,params[])
    {
    new preis,interior,Float:ixc,Float:iyc,Float:izc;
    if(!IsPlayerAnAdmin(playerid,3))return SendClientMessage(playerid, ROT, "Du bist kein Admin oder dein Rang ist zu niedrig!");
    if(sscanf(params,"iifff",preis,interior,ixc,iyc,izc))return SendClientMessage(playerid,ROT,"Befehl: /createhaus [PREIS][INTERIOR][INT-X][INT-Y][INT-Z]");
    new Float:xc, Float: yc, Float:zc;
    GetPlayerPos(playerid,xc,yc,zc);
    for(new i=1; i<sizeof(hInfo); i++)
    {
    if(hInfo[i][h_Erstellt] == 0)
    {
    hInfo[i][h_Erstellt] =1;
    hInfo[i][h_x]=xc;
    hInfo[i][h_y]=yc;
    hInfo[i][h_z]=zc;
    hInfo[i][h_ix]=Float:ixc;
    hInfo[i][h_iy]=Float:iyc;
    hInfo[i][h_iz]=Float:izc;
    hInfo[i][h_interior]=interior;
    hInfo[i][h_preis]=preis;
    strmid(hInfo[i][h_besitzer],"",0,MAX_PLAYER_NAME,MAX_PLAYER_NAME);
    updateHaus(i);
    new query[256];
    format(query,sizeof(query),"INSERT INTO house (h_id,h_Erstellt,h_x,h_y,h_z,h_ix,h_iy,h_iz,h_interior,preis) VALUES ('%i','%i','%f','%f','%f','%f','%f','%f','%i','%i')",i,hInfo[i][h_Erstellt],xc,yc,zc,hInfo[i][h_ix],hInfo[i][h_iy],hInfo[i][h_iz],hInfo[i][h_interior],hInfo[i][h_preis]);
    mysql_function_query(dbverbindung, query, false,"","");
    }
    }
    return 1;
    }


    Ersetz alle Haus Schleifen durch:
    for(new i=1; i<sizeof(hInfo); i++)


    Und erstell noch eine Variable für die Häuser mit dem Namen: h_Erstellt.