Beiträge von heyhooo

    Ich hatte gestern so ein Ähnliches Thema, nur jetzt liegt ein fehler an MySQL:
    Wenn ich /createhouse eingeben kommt nichts zurück, auch beim Printen, wird es nur vor sscanf ausgegeben (in diesem Fall "Test 1")
    Gebe ich alles ein, so erstellt sich das Haus mit einer komischen Hausid, welche auch nicht in die Datenbank geschrieben wird...
    Hier mein Befehl:
    ocmd:createhouse(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 5)
    {
    print("Test 1");
    new preis,level,Float:i[3],Float:Pos[3],iID,wID, query[250];
    if(sscanf(params,"ddfffdd",preis,level,i[0],i[1],i[2],iID,wID))return SendInfo(playerid, "/createhouse [PREIS] [Level] [Interior:X] [Interior:Y] [Interior:Z] [INTERIORID] [VirtuelleWelt (Mindestens 1 sonst überlappt sich alles) ]");
    print("Test 2");
    GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    print("Test 3");
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    if(HausInfo[haus][erstellt]==true)continue;
    format(query, sizeof(query), "INSERT INTO `haus` (`hid`,`x`,`y`,`z`,`ix`,`iy`,`iz`,`miete`,`interior`,`w`,`preis`,`level`,`besitzer`) VALUES ('%d','%f','%f','%f','%f','%f','%f','0','%d','%d','%d','%d','Keiner')",haus,Pos[0],Pos[1],Pos[2],i[0],i[1],i[2],iID,wID,preis,level);
    mysql_query(query);


    HausInfo[haus][haus_x]=Pos[0];
    HausInfo[haus][haus_y]=Pos[1];
    HausInfo[haus][haus_z]=Pos[2];
    HausInfo[haus][haus_ix]=i[0];
    HausInfo[haus][haus_iy]=i[1];
    HausInfo[haus][haus_iz]=i[2];
    HausInfo[haus][haus_interior]=iID;
    HausInfo[haus][haus_w]=wID;
    HausInfo[haus][haus_preis]=preis;
    HausInfo[haus][haus_level]=level;
    HausInfo[haus][miete]=0;
    format(HausInfo[haus][haus_besitzer],MAX_PLAYER_NAME,"Niemand");
    HausInfo[haus][erstellt]=true;


    new hausstring[100];
    HausInfo[haus][haus_pickup] = CreatePickup(1273 ,23,HausInfo[haus][haus_x],HausInfo[haus][haus_y],HausInfo[haus][haus_z],0); //erstellt ein Pickup an den Hauskoordinaten
    HausInfo[haus][haus_pickup1] = CreatePickup(1239 ,23,HausInfo[haus][haus_ix],HausInfo[haus][haus_iy],HausInfo[haus][haus_iz],HausInfo[haus][haus_w]); //erstellt ein Pickup an den Hauskoordinaten
    format(hausstring,sizeof(hausstring),"== Haus %d zu verkaufen ==\nBesitzer: %s\nPreis: %d$\nLevel: %d",i,HausInfo[haus][haus_besitzer],HausInfo[haus][haus_preis],HausInfo[haus][haus_level]);
    HausInfo[haus][haus_label] = Create3DTextLabel(hausstring, COLOR_YELLOW, HausInfo[haus][haus_x], HausInfo[haus][haus_y], HausInfo[haus][haus_z], 12.0, 0, 0);
    return 1;
    }
    }
    else return SendFail(playerid, "Du bist nicht befugt!");
    return 1;
    }


    Hier ein Screen, wenn ich alles angeben....:


    Es kommt alles in der Datenbank an, bis auf die Hausid, hier der Log:


    Ich verzweifle :wacko: ?( :(
    Ich hoffe mir kann wer helfen
    L.G.
    heyho


    //edit: Code geändert, alles kommt jetzt an, nur wieso bekomm ich immer noch keine Message von sscanf?
    bzw: -> Wieso ist es NUR ingame so eine Komische nummer? =/

    Hast du jetzt meins genommen oder das von Music ? Weil, bei Music fehlte der Print von sccanf. Was passiert denn wenn du alle Paramenter in dem CMD angibst die er für das Haus braucht ? Erstellt er das dann oder passiert dort auch nichts ?

    Meine Befehl sieht jetzt so aus:
    ocmd:createhouse(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 5)
    {
    print("Test 1");
    //new preis,level,Float:i[3],Float:Pos[3],iID,wID;
    //if(sscanf(params,"ddfffdd",preis,level,i[0],i[1],i[2],iID,wID))return SendInfo(playerid, "/createhouse [PREIS] [Level] [Interior:X] [Interior:Y] [Interior:Z] [INTERIORID] [VirtuelleWelt (Mindestens 1 sonst überlappt sich alles) ]");
    print("Test 2");
    //GetPlayerPos(playerid,Pos[0],Pos[1],Pos[2]);
    print("Test 3");
    //CreateHaus(Pos[0],Pos[1],Pos[2],preis,level,"Keiner",i[0],i[1],i[2],iID,wID);
    CreateHaus(1.0, 1.0, 1.0, 2, 3, "Keiner", 2.0, 2.0, 2.0, 2, 3);
    }
    else return SendFail(playerid, "Du bist nicht befugt!");
    return 1;
    }


    Im Log: Test 1, Test 2, Test 3
    Passieren tut trotzdem nichts....
    Mein CreateHaus Befehl:
    stock CreateHaus(Float:x,Float:y,Float:z,preis,level,besitzer[32],Float:ix,Float:iy,Float:iz,interior,wID) // die ersten 3 Werte sind die Koordinaten, der 4. der Preis und der 5. der Besitzer
    {
    for(new i=1;i<MAX_HAUS;i++)
    {
    new query[100];
    format(query, sizeof(query), "SELECT * FROM `haus` WHERE `hid`='%d'", i);
    mysql_query(query);
    mysql_query(query);
    mysql_store_result();
    if(mysql_CheckHaus(i) == 0)
    {
    format(query, sizeof(query), "INSERT INTO `haus` (`x`,`y`,`z`,`ix`,`iy`,`iz`,`miete`,`interior`,`w`,`preis,`level`,`besitzer`) VALUES ('%f','%f','%f','%f','%f','%f','0','%d','%d','%d','%d','%s')",x,y,z,ix,iy,iz,interior,wID,preis,level,besitzer);
    mysql_query(query);
    LoadHaus(i);
    for(new haus=1;haus<MAX_HAUS;haus++)
    {
    HausInfo[haus][haus_lock] = 0;
    }
    }
    }
    return 1;
    }


    Mein mysql_CheckHaus stock:
    stock mysql_CheckHaus(hausid)
    {
    new Query[128],count;
    format(Query, sizeof(Query), "SELECT * FROM `haus` WHERE `hid` = '%d'", hausid);
    mysql_query(Query);
    mysql_store_result();
    count = mysql_num_rows();
    mysql_free_result();
    return count;
    }
    Wenn das irgendwie anders geht, zu fragen, obs existiert; wäre es gut, wenn ihr mir das schreiben könntet^^

    SendInfo^^ verwende ich überall...Geht auch aber hier:
    stock SendInfo(playerid, string[])
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new string1[300];
    format(string1, sizeof(string1), "{0078FF}[XXX Info]:{FFFFFF} %s", string);
    SendClientMessage(playerid, 0x0078FFFF, string1);
    }
    return 1;
    }

    ocmd:createhouse(playerid,params[])
    {
    if(PlayerInfo[playerid][pAdmin] >= 5)
    {
    new preis;
    new level;
    new Float:ix,Float:iy,Float:iz;
    new iID,wID;
    if(sscanf(params,"ddfffdd",preis,level,ix,iy,iz,iID,wID)) return SendInfo(playerid, "/createhouse [PREIS] [Level] [Interior:X] [Interior:Y] [Interior:Z] [INTERIORID] [VirtuelleWelt (Mindestens 1 sonst überlappt sich alles) ]");
    new Float:x,Float:y,Float:z;
    GetPlayerPos(playerid,x,y,z);
    CreateHaus(x,y,z,preis,level,"Keiner",ix,iy,iz,iID,wID);
    }
    else
    {
    SendFail(playerid, "Du bist nicht befugt!");
    return 1;
    }
    return 1;
    }


    Falls ich nicht den Adminrang habe, wird die Nachricht ausgegeben....Nur falls ich die Rechte habe kommt nichts, auch wenn ich irgendwas eingebe.


    L.G.
    heyho

    Wenn bei deiner GivePMoney Funktion der zweite Parameter (Money) negativ ist, dann rechnet er:
    pGeld + Money, da Money aber negativ ist sähe das imaginät so aus: pGeld + (-Money)
    Und wir wissen ja: +- = -


    Beispiel:
    pGeld = 5 Money = 3: 5 + 3 = 8
    pGeld = 5 Money = -3: 5 + (-3) = 2

    Dann noch zu meiner 1. Frage?

    Giveplayermoney(playerid,getplayermoney(playerid)-Money);


    //kommt von unterwegs


    Ich möchte aber, dass beides in einem ist....Wäre nett wenn du mir komplett alles aufschreiben könntest (kompletter stock)

    Hey, brauche nochmal hilfe; dieses mal 2 Fragen:
    1. Wie lösche ich genau 1 Record in einer Tabelle
    2. Wie kann ich es machen, dass ich mit meiner selbst geschriebenen Funktion auch Geld abziehen kann
    stock GivePMoney(playerid, Money)
    {
    PlayerInfo[playerid][pGeld] += Money;
    GivePlayerMoney(playerid, Money);
    }


    L.G.
    heyho

    Meinst du also so =P?:
    for(new i=1;i<MAX_HAUS;i++)
    {
    new query[40];
    format(query, sizeof(query), "SELECT * FROM `haus` WHERE `hid`='%d'", i);
    mysql_query(query);
    mysql_query(query);
    mysql_store_result();
    if(mysql_num_rows())
    {
    if(mysql_retrieve_row())
    {
    //wert existiert
    }
    else
    {
    //wert existiert nicht
    }
    }
    }


    L.G.
    heyho

    Hey Community,
    ich hätte da mal so eine kleine Frage:
    Wie frage ich ab, dass ein Wert und somit der Record schon existiert?
    Beispiel, wie ich das meine mit DINI:
    for(new i=1;i<MAX_HAUS;i++)
    {
    format(pfad1,50,"/haus/%d.txt",i);


    if(!fexist(pfad1))
    {
    //...
    }
    }


    L.G.
    heyho

    new pName[25];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(pName,sizeof(pName),"Willkommen zurück %s",pName);
    SendClientMessage(playerid,Weiß,pName);


    L.G.
    heyho