Beiträge von [KoSoVa]

    wies werde ich immer beim 0 Punkt gespawnt? Dieser Code soll abfragen, ob ein Zimmer noch frei ist, aber wenn ich beim Dialog die Taste ganz schnell mehrmals drücke, dann werde ich kurz sehr kurz gespawnt, und wieder zum null punkt gespawnt?


    for(new i = 0; i<MaxHaus; i++)
    {
    if(Haus[i][hZimmerA] < Haus[i][hZimmerM])continue;
    {
    SetPlayerPos(playerid,Haus[i][hX],Haus[i][hY],Haus[i][hZ]);
    }
    }

    Moin, ich habe mir grad einen 3 Npc erstelt, jedoch will er nicht die Animation machen die ich will. Also er bleibt einfach nur grade stumpf stehen.
    if(!strcmp(botname, "Dealer", true))
    {
    SetPlayerSkin(playerid,29);
    SetPlayerInterior(playerid,-1);
    SetPlayerSpecialAction(playerid, SPECIAL_ACTION_SMOKE_CIGGY);
    }

    Die Variable "Haus" wird bei dir ja auf ein enum zu greifen.
    Könntest du dieses mal bitte hier schicken?
    MfG


    enum Hauser
    {
    Float:hX, //Haus-X Koordinate
    Float:hY, //Haus-Y Koordinate
    Float:hZ, //Haus-Z Koordinate
    Float:iX, //Int-X Koordinate
    Float:iY, //Int-Y Koordinate
    Float:iZ, //Int-Z Koordinate
    hBesitzer[MAX_PLAYER_NAME], //Besitzer
    hBeschreibung[MaxHausBeschreibung], //Beschreibung
    hLevel, //Hauslevel
    hZimmerA, //Aktuelle Zimmer
    hZimmerM, //Maximale Zimmer
    hInteriorID,//InteriorID
    hPreis, //Hauspreis
    hID, //HausID
    hPickup, //HausPickup
    hMapIcon,//Map Icon
    hMietbar,//Mietbar
    hMietpreis,//Mietpreis
    Text3D:hText //Haus3D-Text*/
    };
    new Haus[MaxHaus][Hauser];



    Jeffry

    Bei mir geht etwas nicht, also ich hab ein Spawnsystem der beim ausloggen die letzte Posi speichert, dann wenn der Spieler sich wieder eingeloggt an der alten Posi einloggt.


    Und jz habe ich es gemacht,wenn der Spieler sich in einem Interior(Haus) ausloggt, soll er wieder im Interior spawnen, jedoch wird er an der posi gespawnt aber es wird nicht die InteriorID gelegt? Wieso?



    new Float:LastX,Float:LastY,Float:LastZ;
    LastX = SpielerInfo[playerid][pLastX], LastY = SpielerInfo[playerid][pLastY],LastZ = SpielerInfo[playerid][pLastZ];
    SetPlayerPos(playerid, LastX, LastY, LastZ);
    TogglePlayerControllable(playerid, 0);
    SetTimerEx("UnfreezeTime", 5000, false, "d", playerid);
    if(SpielerInfo[playerid][pWarSpielerImInterior] == 1)
    {
    printf("1");
    new HausID = GetNearInteriorPos(playerid);
    printf("2");
    SetPlayerInterior(playerid,Haus[HausID][hInteriorID]); //Geht nicht + Wird ab hier nicht mehr weitegezählt
    printf("3");
    printf("ID: %i",Haus[HausID][hInteriorID]);
    }


    stock GetNearInteriorPos(playerid)
    {
    for(new hWhich; hWhich != MaxHaus; hWhich++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, Haus[hWhich][iX], Haus[hWhich][iY], Haus[hWhich][iZ])) return hWhich;
    }
    return -1;
    }

    Wie lange lädt es denn eigentlich?
    -> habe bei mir oben ein #define MAX_HAUS 3 (Solange dauert es dann.. so Pro haus 2,5 sek)


    EDIT:


    Es nun, aber warum bleibt bei mir in der Tablle unter ID , immer 0? Es soll immer 1,2,3,4 usw?

    Alles klar, hier einmal der code:


    public OnGameModeInit()
    {
    Connect_To_Database();
    mysql_debug(1);
    for(new Var; Var < MaxHaus; Var++)
    {
    LoadHouse(Var);
    }
    return 1;
    }
    public OnGameModeExit()
    {
    //Haussystem
    for(new Var; Var < MaxHaus; Var++)
    {
    DestroyHouse(Var);
    }
    return 1;
    }


    ocmd:hauserstellen(playerid,params[])
    {
    if(SpielerInfo[playerid][pAlevel] >= 5)
    {
    new Preis,Level,AZimmer = 0, MZimmer,Beschreibung[MaxHausBeschreibung];
    if(sscanf(params,"iiis[100]",Preis, Level, MZimmer, Beschreibung))return SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Benutze: /Hauserstellen [Preis] [Level] [M.Zimmeranzahl] [Beschreibung]");
    if(strlen(Beschreibung) < MinHausBeschreibung || strlen(Beschreibung) > MaxHausBeschreibung)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Beschreibung ist zu kurz oder zu lang!(Mind. 4 Zeichen || Max. 12 Zeichen)");
    if(Preis < MinHausPreis || Preis > MaxHausPreis)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Preis ist zu hoch oder zu tief!(Mind. 1$ || Max. 1000000$)");
    if(MZimmer < MinHausZimmer || MZimmer > MaxHausZimmer)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Zimmer sind zu wenig oder zu viel!(Mind. 1 Zimmer || Max. 100 Zimmer)");
    if(Level < MinHausLevel || Level > MaxHausLevel)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Level ist zu hoch oder zu niedrig!(Mind. Level 1 || Max. Level 99)");
    {
    new Float:x,Float:y,Float:z,SQL[300];
    GetPlayerPos(playerid, x, y, z); //Die Hauspostion/Spielerpostion wird geholt.
    format(SQL, sizeof(SQL), "INSERT INTO hauser (Beschreibung, Preis, AZimmer, MZimmer , Level, HausPosX, HausPosY, HausPosZ) VALUES ('%s', '%d', '%d', '%d', '%d', '%f', '%f', '%f')",Beschreibung, Preis, AZimmer, MZimmer, Level, x, y, z);
    mysql_query(SQL);
    SendClientMessage(playerid, 0xFF0000FF, "[H-INFO] {FFFFFF}Das Haus wurde erfolgreich erstellt!");
    printf("[H-INFO]Es wurde ein Haus erstellt!");
    for(new Var; Var < MaxHaus; Var++)
    {
    DestroyHouse(Var);
    }
    LoadHouses();
    }

    }
    return 1;
    }


    //Haussystem


    stock GetNearHausID(playerid)
    {
    for(new hWhich; hWhich != MaxHaus; hWhich++)
    {
    if(IsPlayerInRangeOfPoint(playerid, 3.0, Haus[hWhich][hX], Haus[hWhich][hY], Haus[hWhich][hZ])) return hWhich;
    }
    return -1;
    }
    stock LoadHouse(ID)
    {
    new String[24],Text[150];
    format(String, sizeof(String), "%d", ID);
    Haus[ID][hID] = mysql_GetInt("hauser", "ID", "ID", String);
    format(Haus[ID][hBesitzer], MAX_PLAYER_NAME, mysql_GetString("hauser", "Besitzer", "ID", String));
    format(Haus[ID][hBeschreibung], MaxHausBeschreibung, mysql_GetString("hauser", "Beschreibung", "ID", String));
    Haus[ID][hPreis] = mysql_GetInt("hauser", "Preis", "ID", String);
    Haus[ID][hZimmerA] = mysql_GetInt("hauser", "AZimmer", "ID", String);
    Haus[ID][hZimmerM] = mysql_GetInt("hauser", "MZimmer", "ID", String);
    Haus[ID][hLevel] = mysql_GetInt("hauser", "Level", "ID", String);
    Haus[ID][hX] = mysql_GetFloat("hauser", "HausPosX", "ID", String);
    Haus[ID][hY] = mysql_GetFloat("hauser", "HausPosY", "ID", String);
    Haus[ID][hZ] = mysql_GetFloat("hauser", "HausPosZ", "ID", String);
    if(strlen(Haus[ID][hBesitzer]) < 2)
    {
    format(Text, sizeof(Text), "Haus '%s' zu verkaufen!\nPreis: $%d\nLevel: %d\nZimmer: %d/%d", Haus[ID][hBeschreibung], Haus[ID][hPreis], Haus[ID][hLevel], Haus[ID][hZimmerA], Haus[ID][hZimmerM]);
    }
    else
    {
    format(Text, sizeof(Text), "Haus '%s'\nBesitzer: %s\nZimmer %d/%d", Haus[ID][hBeschreibung], Haus[ID][hBesitzer], Haus[ID][hZimmerA], Haus[ID][hZimmerM]);
    }
    Update3DTextLabelText(Haus[ID][hText], 0x00FFAAFF, Text); //ändere/update den TextLabel mit dem formatieren String
    return 1;
    }


    stock LoadHouses()
    {
    new Schleife = 1,String[5],Text[150];
    while(Schleife < MaxHaus)
    {
    format(String, sizeof(String), "%d", Schleife);
    Haus[Schleife][hID] = mysql_GetInt("hauser", "ID", "ID", String);
    format(Haus[Schleife][hBesitzer], MAX_PLAYER_NAME, mysql_GetString("hauser", "Besitzer", "ID", String));
    format(Haus[Schleife][hBeschreibung], MaxHausBeschreibung, mysql_GetString("hauser", "Beschreibung", "ID", String));
    Haus[Schleife][hPreis] = mysql_GetInt("hauser", "Preis", "ID", String);
    Haus[Schleife][hZimmerA] = mysql_GetInt("hauser", "AZimmer", "ID", String);
    Haus[Schleife][hZimmerM] = mysql_GetInt("hauser", "MZimmer", "ID", String);
    Haus[Schleife][hLevel] = mysql_GetInt("hauser", "Level", "ID", String);
    Haus[Schleife][hX] = mysql_GetFloat("hauser", "HausPosX", "ID", String);
    Haus[Schleife][hY] = mysql_GetFloat("hauser", "HausPosY", "ID", String);
    Haus[Schleife][hZ] = mysql_GetFloat("hauser", "HausPosZ", "ID", String);
    HAUSSYSTEM FERTIG MACHEN!
    if(strlen(Haus[Schleife][hBesitzer]) < 2)
    {
    format(Text, sizeof(Text), "Haus '%s' zu verkaufen!\nPreis: $%d\nLevel: %d\nZimmer: %d/%d", Haus[Schleife][hBeschreibung], Haus[Schleife][hPreis], Haus[Schleife][hLevel], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
    }
    else
    {
    format(Text, sizeof(Text), "Haus '%s'\nBesitzer: %s\nZimmer %d/%d", Haus[Schleife][hBeschreibung], Haus[Schleife][hBesitzer], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
    }
    Haus[Schleife][hText] = Create3DTextLabel(Text, 0x00FFAAFF, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], MaxHausTextSehbar, 0);
    Haus[Schleife][hPickup] = CreatePickup(HausPickupModel, 23, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], -1);
    Update3DTextLabelText(Haus[Schleife][hText], 0x00FFAAFF, Text);
    Schleife++;
    }
    return 1;
    }


    stock DestroyHouse(ID)
    {
    DestroyPickup(Haus[ID][hPickup]);
    Delete3DTextLabel(Haus[ID][hText]);
    return 1;
    }


    stock SaveHouse()
    {
    for(new Haeuser; Haeuser < MaxHaus; Haeuser++)
    {
    mysql_SetInt("hauser", "Zimmer", Haus[Haeuser][hZimmerA], "ID", Haus[Haeuser][hID]);
    mysql_SetString("hauser", "Besitzer", Haus[Haeuser][hBesitzer], "ID", Haus[Haeuser][hID]);
    }
    return 1;
    }


    Und jetzt nochmal ein Bild von der Datenbank:



    Jeffry
    Kaliber

    Hay,


    wenn ich immer Ingame "/Hauserstellen" eingebe und dazu die Daten, passiert nicht viel... es wird zwar was in der Tabelle erstellt, aber es wird nicht ein PickUp erstellt, geschweige noch 3D-Text



    ocmd:hauserstellen(playerid,params[]) if(SpielerInfo[playerid][pAlevel] >= 5)[/size][size=10] {[/size][size=10] new Preis,Level,AZimmer = 0, MZimmer,Beschreibung[MaxHausBeschreibung];[/size][size=10] if(sscanf(params,"iiis[100]",Preis, Level, MZimmer, Beschreibung))return SendClientMessage(playerid,0xFF0000FF,"[FEHLER]{FFFFFF} Benutze: /Hauserstellen [Preis] [Level] [M.Zimmeranzahl] [Beschreibung]");[/size][size=10] if(strlen(Beschreibung) < MinHausBeschreibung || strlen(Beschreibung) > MaxHausBeschreibung)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Beschreibung ist zu kurz oder zu lang!(Mind. 4 Zeichen || Max. 12 Zeichen)");[/size][size=10] if(Preis < MinHausPreis || Preis > MaxHausPreis)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Preis ist zu hoch oder zu tief!(Mind. 1$ || Max. 1000000$)");[/size][size=10] if(MZimmer < MinHausZimmer || MZimmer > MaxHausZimmer)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Die Zimmer sind zu wenig oder zu viel!(Mind. 1 Zimmer || Max. 100 Zimmer)");[/size][size=10] if(Level < MinHausLevel || Level > MaxHausLevel)return SendClientMessage(playerid, 0xFF0000FF, "[FEHLER]{FFFFFF}Der Level ist zu hoch oder zu niedrig!(Mind. Level 1 || Max. Level 99)");[/size][size=10] {[/size][size=10] new Float:x,Float:y,Float:z,SQL[300];[/size][size=10] GetPlayerPos(playerid, x, y, z); //Die Hauspostion/Spielerpostion wird geholt.[/size][size=10] format(SQL, sizeof(SQL), "INSERT INTO hauser (Beschreibung, Preis, AZimmer, MZimmer , Level, HausPosX, HausPosY, HausPosZ) VALUES ('%s', '%i', '%i', '%i', '%i', '%f', '%f', '%f')",Beschreibung, Preis, AZimmer, MZimmer, Level, x, y, z);[/size][size=10] mysql_query(SQL);[/size][size=10] SendClientMessage(playerid, 0xFF0000FF, "[H-INFO] {FFFFFF}Das Haus wurde erfolgreich erstellt!");[/size][size=10] printf("Es wurde ein Haus erstellt!");[/size][size=10] for(new Var; Var < MaxHaus; Var++)[/size][size=10] { [/size][size=10] DestroyHouse(Var); [/size][size=10] }[/size][size=10] LoadHouses();[/size][size=10] }[/size][size=10] [/size][size=10] }[/size][size=10] return 1;[/size][size=10]}[/size]
    [size=10]
    stock LoadHouses()
    {
    new Schleife = 1,String[5],Text[150];
    while(Schleife < MaxHaus)
    {
    format(String, sizeof(String), "%d", Schleife);
    Haus[Schleife][hID] = mysql_GetInt("hauser", "hID", "ID", String);
    format(Haus[Schleife][hBesitzer], MAX_PLAYER_NAME, mysql_GetString("hauser", "Besitzer", "ID", String));
    format(Haus[Schleife][hBeschreibung], MaxHausBeschreibung, mysql_GetString("hauser", "Beschreibung", "ID", String));
    Haus[Schleife][hPreis] = mysql_GetInt("hauser", "Preis", "ID", String);
    Haus[Schleife][hZimmerA] = mysql_GetInt("hauser", "AZimmer", "ID", String);
    Haus[Schleife][hZimmerM] = mysql_GetInt("hauser", "MZimmer", "ID", String);
    Haus[Schleife][hLevel] = mysql_GetInt("hauser", "Level", "ID", String);
    Haus[Schleife][hX] = mysql_GetFloat("hauser", "HausPosX", "ID", String);
    Haus[Schleife][hY] = mysql_GetFloat("hauser", "HausPosY", "ID", String);
    Haus[Schleife][hZ] = mysql_GetFloat("hauser", "HausPosZ", "ID", String);
    if(strlen(Haus[Schleife][hBesitzer]) < 2 )
    {
    format(Text, sizeof(Text), "%s zu verkaufen!\nPreis: $%i\nLevel: %i\nZimmer: %i/%i", Haus[Schleife][hBeschreibung], Haus[Schleife][hPreis], Haus[Schleife][hLevel], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
    }
    else
    {
    format(Text, sizeof(Text), "%s\nBesitzer: %s\nZimmer %i/%i", Haus[Schleife][hBeschreibung], Haus[Schleife][hBesitzer], Haus[Schleife][hZimmerA], Haus[Schleife][hZimmerM]);
    }
    Haus[Schleife][hText] = Create3DTextLabel(Text, -1, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], MaxHausTextSehbar, 0);
    Haus[Schleife][hPickup] = CreatePickup(HausPickupModel, 23, Haus[Schleife][hX], Haus[Schleife][hY], Haus[Schleife][hZ], 0);
    Update3DTextLabelText(Haus[Schleife][hText], 0xFF0000FF, Text);
    Schleife++;
    }
    return 1;
    }


    stock DestroyHouse(ID)
    {
    DestroyPickup(Haus[ID][hPickup]);
    Delete3DTextLabel(Haus[ID][hText]);
    return 1;
    }


    Und wie würdet ihr das schreiben? Denn deswegen laggt der start immer.


    public OnGameModeInit()
    {
    //MQSL
    Connect_To_Database();
    //Haussystem
    new Hausx;
    mysql_debug(1);
    while(Hausx < MaxHaus)
    {
    LoadHouse(Hausx);
    Hausx++;
    }
    return 1;
    }


    public OnGameModeExit()
    {
    //Haussystem
    new Hausy;
    while(Hausy < MaxHaus)
    {
    DestroyHouse(Hausy);
    Hausy++;
    }
    return 1;
    }


    Jeffry

    Hay,


    ich möchte in mein Register/Login System eine Alterabfrage reinhauen. Aber wie mache ich das, dass in denn Inputttext nur Zahlen eingegeben werden darf? Und warum kriege ich diesen Error:


    //error 006: must be assigned to an array
    SpielerInfo[playerid][pAlter] = inputtext;