Beiträge von [DT]Sniper

    public speedcheck()
    {
    new Float:v[4];
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(IsPlayerInAnyVehicle(i)) GetVehicleVelocity(GetPlayerVehicleID(i), v[0], v[1], v[2]);
    else GetPlayerVelocity(i, v[0], v[1], v[2]);
    if(v[2] < 0) v[2] = 0.0;
    v[3] = floatsqroot(floatpower(v[0], 2) + floatpower(v[1], 2) + floatpower(v[2], 2))*200*1.4;
    if(v[3] >= 360 && GetPlayerSurfingVehicleID(playerid) == INVALID_VEHICLE_ID)
    {
    new sendername[MAX_PLAYER_NAME], string2[128];
    GetPlayerName(i, sendername, sizeof(sendername));
    format(string2, sizeof(string2), "ServerSecurity: %s wurde vom System gebannt, Grund: Speedhack", sendername);
    SendClientMessageToAll(COLOR_RED, string2);
    Ban(i);
    BanLog(string2);
    }
    }
    return 1;
    }


    probier es mal so.

    Als aller erstes musst du wissen wie die autos nacher da sein sollen entweder: nur wenn der user online ist und sie gehen wieder weg wenn der user (Besitzer offline geht) oder die Autos sollen immer da sein.
    Diese Frage ist wichtig damit du weisst ob du cfg oder inis benutzen solltest, inis für die erste Variante cfg für die 2.


    Dann musst du dich aller erstes daan begeben das Autohaus mit allen Postionen die du haben willst zu machen, wenn du kein icon autohaus haben willst sondern eins mit einsteigen so musst du die verkaufsautos mit Position und preis etc. festhalten.


    Dann die buy funktion erstellen dabei direkt mit der speicher funktion der autos anfangen.


    Wenn du dies fertig hast die Lade funktion und dannach die sell funktion. Dann speicherung für tuning etc einbauen und die zusätzlichen commands und du hast es fertig.


    edit:
    Anmerkung: mein 1000. Beitrag Juhu.

    new PlayerTimer[MAX_PLAYERS];
    new Text:anzeige[MAX_PLAYERS];


    public FlyHigh(playerid)
    {
    if(IsPlayerConnected(playerid))
    {
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    new string[256];
    format(string, sizeof(string),"High: %0.2f", z);
    TextDrawDestroy(anzeige[playerid]);
    anzeige[playerid] = TextDrawCreate(450.0, 420.0, string);
    TextDrawLetterSize(anzeige[playerid], 0.5, 2.5);
    TextDrawShowForPlayer(playerid,anzeige[playerid]);
    }
    return 1;
    }


    if(strcmp("/high",cmdtext,true) == 0)
    {
    if(GetPVarInt(playerid,"highmeter")== 0)
    {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Server: You have switched the High Meter to ON");
    PlayerTimer[playerid] = SetTimerEx("FlyHigh",1000,1,"d",playerid);
    SetPVarInt(playeridm,"highmeter",1);
    } else {
    SendClientMessage(playerid,COLOR_LIGHTRED,"Server: You have switched the High Meter to OFF");
    KillTimer(PlayerTimer[playerid]);
    SetPVarInt(playeridm,"highmeter",0);
    }
    return 1;
    }

    naja es ist kein fehler der speed ist nur nur anders da du 1.81 benutzt statt 1.61



    GetPlayerName(playerid,pn3,sizeof(pn3));
    for(new c = 0; c <MaxVehPerPlayer;c++)
    {
    if(Dtdc_Player[playerid][Car][code=c] == MaxVehicle +1)
    {
    carslot = c;
    break;
    }
    }
    if(carslot == MaxVehicle +1)
    {
    GetPlayerName(playerid,pn3,sizeof(pn3));
    SendClientMessage(playerid,COLOR_GREY," Du kannst keine weiteren Autos kaufen!");
    format(string,sizeof(string)," Der Spieler %s hat dein Verkaufs-Angebot abgelehnt!",pn3);
    SendClientMessage(Dtdc_Player[playerid][Seller],COLOR_GREY,string);
    return 1;
    }
    if(GetPlayerMoney(playerid)>Dtdc_Player[playerid][SellerMoney])
    {
    GetPlayerName(playerid,pn3,sizeof(pn3));
    format(string,sizeof(string)," Du hast nicht genug Geld! (Preis:%d$)",Dtdc_Player[playerid][SellerMoney]);
    SendClientMessage(playerid,COLOR_GREY,string);
    format(string,sizeof(string)," Der Spieler %s hat dein Verkaufs-Angebot abgelehnt!",pn3);
    SendClientMessage(Dtdc_Player[playerid][Seller],COLOR_GREY,string);
    return 1;
    }
    GetPlayerName(playerid,pn3,sizeof(pn3));
    format(string,sizeof(string)," Der Spieler %s hat dein Verkaufs-Angebot (%d$) angenommen! Die Fahrzeugpapiere sind nun auf seinem Namen umgeschrieben!",pn3,Dtdc_Player[playerid][SellerMoney]);
    SendClientMessage(Dtdc_Player[playerid][Seller],COLOR_YELLOW,string);
    GetPlayerName(Dtdc_Player[playerid][Seller],pn3,sizeof(pn3));
    format(string,sizeof(string)," Du hast das Verkaufs-Angebot (%d$) von %s angenommen! Die Fahrzeugpapiere vom %s sind nun auf seinem Namen umgeschrieben!",Dtdc_Player[playerid][SellerMoney],pn3,Dtdc_CarName[Dtdc_Car[carid][cModel]-400]);
    SendClientMessage(playerid,COLOR_YELLOW,string);


    Dtdc_PlayerToPlayerSell(playerid,Dtdc_Player[playerid][Seller],carslot,carid,Dtdc_Player[playerid][SellerMoney]);


    return 1;


    alles definierd etc. nur ein logic fehler

    der timer wird zu oft ausgeführt also jedes mal wenn einer stirbt wird der timer erneut aufgerufen. führt zu haufen resourcenverbrauch und möglicherweise zu laags und absturz.


    stock VehToPoint(vehid,Float:Range,Float:pX,Float:pY,Float:pZ)
    {
    new Float:minX,Float:maxX,Float:minY,Float:maxY,Float:minZ,Float:maxZ;
    minX = pX-Range; minY = pY-Range; minZ = pZ-Range;
    maxX = pX+Range; maxY = pY+Range; maxZ = pZ+Range;

    new Float:vX,Float:vY,Float:vZ;
    GetVehiclePos(vehid,vX,vY,vZ);
    if((vX <= minX && vX >= maxX) && (vY <= minY && vY >= maxY) && (vZ <= minZ && vZ >= maxZ)) { return 1; }
    return 0;
    }

    du kannst leider nicht sizeof bei einem multiarray machen nur immer vom ersten array:
    sizeof(PlayerInfo[playerid][pInidirection])
    geht nicht
    sizeof(PlayerInfo]
    geht und gibt 500 aus
    also musst du anstatt sizeof(PlayerInfo[playerid][pInidirection]) die richtige zahl eintragen so nerfig das ist.

    da ich mla denke das du ein gf besitz muss ich sagen dass es nicht als filterscript geht ohne dass du publics im gamemode hast mit dennen du das adminlevel herausfinden kannst.

    also bei meinen und bei den meisten scripten die sich als autohäuser ausgeben wird das auto gekauft und bleibt solange bis man es verkauft, also bleibt es auch nach restart, reconnect etc.