Beiträge von NeRoTeX

    Guten Abend,


    ich veröffentliche hier meine erste Include,
    die ich erstellt habe.


    Das ganze ist eine Include (Dini-Basis), mit der ihr Ingame
    Immobilien erstellen, löschen, editieren und mit diesen
    dann arbeiten könnt. Verbesserungsvorschläge und Kritik ist
    immer willkommen, da das ja, wie bereits gesagt, meine erste
    veröffentlichte Include ist.


    Defines:
    #define MAX_IMMOS 50 //Maximale Anzahl an Immobilien
    #define IMMO_RESELL 0.5 //Immobilienpreis * IMMO_RESELL = Verkaufspreis
    #define IMMO_ICON 1274 //Erklärt sich von selbst
    #define IMMO_DRAW_DIS 15.0 //Darstellungsdistanz des 3D-Labels
    #define IMMO_RANGE 2.0 //Maximale Distanz für GetPlayerImmo
    #define IMMO_MAX_NAME 32 //Maximale Länge des Names einer Immobilie
    #define IMMO_COLOR 0xFFD200FF //Farbe des 3DLabels
    #define IMMO_FILE "/IMMO_FILES/" //Speicherordner für Immobilien


    Die Funktionen:
    CreateImmo(id,Name[],Preis,Gewinn,Float:XPos,Float:YPos,Float:ZPos); //Die ID entweder manuell wählen, oder GetFreeImmoID() - Empfohlen
    DeleteImmo(id); //Die ID entweder manuell wählen, oder GetFreeImmoID() - Empfohlen
    LoadImmo(id, bool:reload=false); //Reload=true => Laden & Einstellungen neu von Datei laden
    SaveImmo(id, bool:unload=false); //Unload=true => Speichern & "Entladen" - nicht löschen
    LoadAllImmos(bool:reload=false); //Erklärt sich von selbst
    SaveAllImmos(bool:unload=false); //Erklärt sich von selbst
    UpdateImmo(id); //Erneuert das 3D-Label
    BuyImmo(id, playerid, bool:force=false); //Spieler kauf Immobilie - Geld wird abgezogen. Force => Auch wenn schon vergeben ist
    SellImmo(id, playerid=-1); //Verkauft Immobilie. Playerid => wenn angegeben, bekommt der Spieler den Verkaufspreis
    MoveImmo(id, Float:x, Float:y, Float:z); //Verschiebt Immobilie + 3D-Label
    IsImmoCreated(id); //Ob die Immobilie mit der ID erstellt wurde
    IsImmoFree(id); //Ob diese Immobilie schon verkauft ist
    GetFreeImmoID(); //Gibt die erste freie, nicht erstellte Immobilienid aus
    SetImmoGewinn(id, Gewinn); //Erklärt sich von selbst
    SetImmoPreis(id, Preis); //Erklärt sich von selbst
    SetImmoName(id, Name[]); //Erklärt sich von selbst
    SetImmoOwner(id, playerid); //Erklärt sich von selbst - Ohne Geldabzug
    GetImmoOwnerByName(id); //Gibt die Playerid des Owners der Immobilie an, wenn er online ist
    GetImmoPos(id, &Float:x, &Float:y, &Float:z); //Wie GetPlayerPos, nur für Immobilie
    GetImmoGewinn(id); //Erklärt sich von selbst - Für Paydays könnt ihr euch selbst etwas überlegen^^
    GetImmoPreis(id); //Erklärt sich von selbst
    GetImmoName(id); //Erklärt sich von selbst
    GetImmoOwner(id); //Erklärt sich von selbst
    GetPlayerImmo(playerid); //Gibt die ID der Immobilie an, an der er sich gerade befindet
    IsPlayerImmoOwner(id, playerid); //Erklärt sich von selbst
    GetPlayerImmoCount(playerid); //Wie viele Immobilien der Spieler gekauft hat


    So werden die Immobilien gespeichert:
    Die Immobilien werden in dem vorher definierten Ordner so abgelegt:
    IMMO-%d.ini => %d steht hier für die Immobilienid


    Download:
    Pastebin: http://pastebin.com/nQwLxfJW
    Solidfiles: http://www.solidfiles.com/d/902e462c04/



    Screenshot:





    Viel Spaß :D
    NeRoTeX

    Ein vergleichbares Problem hat(te) ein anderer Server.
    Dort war ein Timer schuld, der zu viele Abfrage innerhalb von 1 Sekunde ausführte.
    Somit ist der letzte Teil, der ausgeführt werden sollte, verlorengegangen, weil der Timer bereits ein weiteres mal ausgeführt wird (Überschlägt sich bzw. wird nicht fertig).


    Andere Frage, wo hast du dein Create drin? OnPlayerConnect?

    Steht doch da MYSQL








    Sry, überlesen D:








    stock CheckNumber(Nummer)


    {


    new Query[128],count=0;


    format(Query, sizeof(Query), "SELECT * FROM `DEINE_SPIELER_TABELLE` WHERE `DEINE_TELEFONNUMMERVAR` = '%d'", Nummer);


    mysql_query(Query);


    mysql_store_result();


    count = mysql_num_rows();


    mysql_free_result();


    return count;


    }




    if(CheckNummer(Nummer) == 0)
    {


    //Wenn Nummer nicht vorhanden ist


    }




    stock IsNumberOnline(Nummer)


    {


    new stop=0;


    for(new i; i < MAX_PLAYERS && stop==0; i++)


    {


    if(IsPlayerConnected(i) && !IsPlayerNPC(i))


    {


    if(DEINE_TELEFON_VAR == Nummer) //Ersetz das durch deine PVar oder Array


    stop=1,return i;


    }


    }


    return 0;


    }
    Edit: Zu langsam D:

    Ja, Meister, was hast du für ein Autosystem? D:








    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)


    {


    if(!IsPlayerInFrac(playerid,24))


    {


    new newcar=GetPlayerVehicle(playerid);


    for(new pv = 0; pv < sizeof(oAmtVehs); pv++)


    {


    if(newcar == oAmtVehs[pv])


    {


    SendClientMessage(playerid,COLOR_RED,"Du hast keine Schlüssel!");


    CreateBox(playerid,"INFO","Du besitzt keine Schlüssel!");


    new Float:x,Float:y,Float:z;


    GetPlayerPos(playerid,x,y,z);


    SetPlayerPos(playerid,x,y,z);


    }


    }


    }


    return 1;


    }




    oder




    public OnPlayerStateChange(playerid, newstate, oldstate)


    {


    if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)


    {


    if(!IsPlayerInFrac(playerid,24))


    {


    new newcar=GetPlayerVehicle(playerid);


    for(new pv = 0; pv < sizeof(oAmtVehs); pv++)


    {


    if(newcar == oAmtVehs[pv])


    {


    SendClientMessage(playerid,COLOR_RED,"Du hast keine Schlüssel!");


    CreateBox(playerid,"INFO","Du besitzt keine Schlüssel!");


    RemovePlayerFromVehicle(playerid);


    }


    }


    }


    }


    return 1;


    }

    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(IsACopCar(vehicleid) && !ispassenger)
    {
    if(!IsACop(playerid) && !IsPlayerInFrac(playerid,23))
    {
    CreateBox(playerid,"INFO","Du besitzt keine Schlüssel!");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    }
    }
    if(IsAFbiCar(vehicleid) && !ispassenger)
    {
    if(!IsACop(playerid) && !IsPlayerInFrac(playerid,2))
    {
    CreateBox(playerid,"INFO","Du besitzt keine Schlüssel!");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    }
    }
    if(IsAnAmbulance(vehicleid) && !ispassenger)
    {
    if(!IsPlayerInFrac(playerid,4) && !IsPlayerInFrac(playerid,1))
    {
    CreateBox(playerid,"INFO","Du besitzt keine Schlüssel!");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    }
    }
    if(IsASWATCar(vehicleid) && !ispassenger)
    {
    if(!IsACop(playerid) && !IsPlayerInFrac(playerid,22))
    {
    CreateBox(playerid,"INFO","Du besitzt keine Schlüssel!");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    }
    }
    return 1;
    }

    Versuch mal deine Abfrage so aufzubauen:




    public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
    {
    if(IsACopCar(vehicleid) && !ispassenger)
    {
    if(!IsACop(playerid) && !IsPlayerInFrac(playerid,23))
    {
    //SendClientMessage(playerid,COLOR_RED,"Du hast keine Schlüssel");
    CreateBox(playerid,"INFO","Du besitzt keine Schlüssel!");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    SetPlayerPos(playerid,x,y,z);
    }
    }
    return 1;
    }


    Wenn er kein Cop und nicht in der Fraktion 23, wird er nicht einsteigen, weil SetPlayerPos das verhindert.