Beiträge von The.Boonze

    Vielen dank :D


    Wenn ich nun eine neue Fraktion mit neuen Fraktionen einsetzte muss ich:


    new skinChangeTEXT[MAX_FACTIONS][MAX_SKINS*4 + 1] = {
    {"188 0"}, //ZiviSkins
    {"265 266 267 280 281 282 283 284 288"}, //CopSkins
    {"171 172 187 194 240"}, //FahrschulSkins
    {"272 273 292 298"} //LosZetasSkins
    };


    Bei der MAX_SKINS*4 das dann zu MAX_SKINS*5 schreiben oder läuft das alles dynamisch jetzt?


    Mfg The.Boonze


    PS: Gut geschrieben, musste es ein paar mal lesen und im wiki einige Befehle nachschauen bevor ich es verstanden habe :)

    Hey Jeffry,


    vielen lieben Dank schonmal.
    Ich werde mich jetzt dran setzten und es mal einsetzten und versuchen es zu verstehen.
    Ich melde mich dann nochmal wie weit ich gekommen bin.


    Mit freundlichen Grüßen,


    The.Boonze



    EDIT:


    Also alles eingebaut und getest, funktioniert einwandfrei mit einer kleinen Ausnahme jedoch.
    In jeder Skinauswahl taucht die SKIN ID 0 auf also der CJ Skin, obwohl er ja nur in der Zivi Fraktion eingebaut ist.


    public OnPlayerClickPlayerTextDraw(playerid,PlayerText:playertextid)
    {
    if(playertextid == SkinMenu[playerid][0]) //Links
    {
    new fID;
    fID=sInfo[playerid][fraktion];
    if(GetPVarInt(playerid,"pos")>=0)
    {
    SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")-1);
    }
    else
    {
    SetPVarInt(playerid,"pos",sizeSkinChange[fID]);
    }
    return 1;
    }



    if(playertextid == SkinMenu[playerid][1]) //Rechts
    {
    new fID;
    fID=sInfo[playerid][fraktion];
    if(GetPVarInt(playerid,"pos")<= sizeSkinChange[fID])
    {
    SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")+1);
    }
    else
    {
    SetPVarInt(playerid,"pos",0);
    }
    return 1;
    }
    }


    Meine anderen Fragen stell ich dann danach ;)

    Guten Morgen Jeffry,


    ich war gestern dann zu müde und bin schlafen gegangen. Kein Problem zwecks der ganzen Umstände war ja auch spät gestern.


    Dynamisch wäre meiner Meinung nach besser, weil ich ja sonst nach jedem Einfügen eines neuen Skins die anderen Zeilen auch anpassen müsste.. Und das wollte ich eigentlich verhindern :(


    Kannst du mir vielleicht zeigen wie mein Vorhaben mit einem dynamischen System lösbar wäre?


    Mit freundlichen Grüßen,


    The.Boonze

    new skinChange[][] = {
    {188,0}, //ZiviSkins
    {265,266,267,280,281,282,283,284,288}, //CopSkins
    {171,172,187,194,240}, //FahrschulSkins
    {272,273,292,298} //LosZetasSkins
    };


    public OnPlayerClickPlayerTextDraw(playerid,PlayerText:playertextid)
    {
    if(playertextid == SkinMenu[playerid][0]) //Links
    {
    new fID;
    fID=sInfo[playerid][fraktion];
    if(GetPVarInt(playerid,"pos")>=0)
    {
    SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")-1);
    }
    else
    {
    SetPVarInt(playerid,"pos",strlen(skinChange[fID])-1);
    }
    return 1;
    }



    if(playertextid == SkinMenu[playerid][1]) //Rechts
    {
    new fID;
    fID=sInfo[playerid][fraktion];
    if(GetPVarInt(playerid,"pos")<= strlen(skinChange[fID])-1)
    {
    SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")+1);
    }
    else
    {
    SetPVarInt(playerid,"pos",0);
    }
    return 1;
    }
    }


    Das haut leider so garnicht hin, er schmeißt jetzt egal welche Fraktion alle Skins immer rein. Und auch welche die eigentlich nicht dabei sind ?( ?(


    Mit freundlichen Grüßen,


    The.Boonze

    Super danke wird direkt mal probiert.


    Mit freundlichen Grüßen,


    The.Boonze


    EDIT: Da fällt mir aber ein wie sage ich ihm nun schaue in der Zeile 2 nach wieviel Spalten dort sind? Weil ich ja mit skinChange[fID][] arbeite.


    Wenn ich nur


    SetPVarInt(playerid,"pos",sizeof(skinChange[]));


    schreibe, kommt folgender Fehler,


    warning 224: indeterminate array size in "sizeof" expression (symbol "")


    Mit freundlichen Grüßen,


    The.Boonze

    Hallo Jeffry,


    korrigier mich bitte wenn ich falsch liege, wenn ich sizeof(skinChange[]) nehme, liest er mir dann nicht nur die zeilen aus? also in diesem fall 3?
    Ich möchte ja wissen wieviel in den einzelnen zeilen steht.. und sizeof(skinChange[fID][]) geht nicht..


    Mit freundlichen Grüßen,


    The.Boonze

    Einen wunderschönen guten Abend liebe Breadfish Communtiy,


    wir sind grad mal wieder an unserem Selfmade Projekt am werkeln und haben folgendes Problem.


    Wir lassen unsere Skinauswahl Ingame über eigene Textdraws laufen und wollen folgendes realisieren.


    In einem Array stehen verschiedene Skins für verschiedene Fraktionen:


    new skinChange[][] = {
    {188,0}, //ZiviSkins
    {265,266,267,280,281,282,283,284,288}, //CopSkins
    {171,172,187,194,240}, //FahrschulSkins
    {272,273,292,298} //LosZetasSkins
    };


    Jetzt suchen wir eine Möglichkeit abzufragen wieviele Skins denn in der jeweiligen Zeile stehen, um somit wenn er beim letzten Skin angekommen ist ihn wieder zum ersten zu schicken.
    Bis jetzt sind wir bis hier her gekommen:



    public OnPlayerClickPlayerTextDraw(playerid,PlayerText:playertextid)
    {
    if(playertextid == SkinMenu[playerid][0]) //Links
    {
    new fID;
    fID=sInfo[playerid][fraktion];
    if(GetPVarInt(playerid,"pos")>=0)
    {
    SetPlayerSkin(playerid,skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"SkinNew",skinChange[fID][GetPVarInt(playerid,"pos")]);
    SetPVarInt(playerid,"pos",GetPVarInt(playerid,"pos")-1);
    }
    else
    {


    SetPVarInt(playerid,"pos",sizeof(skinChange[fID][])); <---- Hier liegt unser Fehler
    }
    }
    return 1;
    }



    Wir möchten ihm also sagen wenn er am Ende des Arrays angekommen ist fange wieder von an.
    Hat da vielleicht jemand eine Idee?



    Mit freundlichen Grüßen,


    The.Boonze

    Aaaalso auf den ersten Blick bombastisch :) Also für die Fraktionsid 1 wurde das Geld perfekt angezeigt.
    Jedoch bei Fraktion 2 und 3 stehen 0 Dollar statt einem Wert. :(


    Wenn alles klappt kannst du vielleicht noch erklären warum du es so geschrieben hast? Das ich beim nächsten mal vielleicht selber drauf komme und es anwenden kann?!


    Mfg The.Boonze

    Okay also nehme ich das loadFrak(); einfach wieder daraus.
    Jetzt bin ich aber in der Fraktion LSPD, habe in der Datenbank Geld in die kasse geschrieben.
    Wenn ich nun jedoch das ocmd:fkasse ausführe zeigt er mir jedesmal 0 Dollar an. Obwohl ja laut Datenbank etwas drin ist.
    Habe ich da im Befehl fkasse etwas falsch gescriptet?


    Mit freundlichen Grüßen,


    The.Boonze

    Muss ich das public loadFrak(); nicht noch irgendwo aufrufen?


    //---------------------------------------MySQL Verbinden------------------------


    dbhandle = mysql_connect(db_host,db_user,db_db,db_pass);
    SetTimer("savePlayer",update_time,true);
    mysql_function_query(dbhandle,"SELECT * FROM fraktionen",true,"loadFrak","");


    Hier rufe ich das public auf:


    ocmd:fkasse(playerid,params[])
    {
    loadFrak();
    new string[128];
    switch(sInfo[playerid][fraktion])
    {
    case 0:
    {
    SendClientMessage(playerid,grau,"Du bist in keiner Fraktion.");
    }
    case 1:
    {
    format(string,sizeof(string),"Du hast %i$ in deiner Fraktionskasse.",fdbInfo[1][fdb_kasse]);
    SendClientMessage(playerid,hblau,string);
    }
    case 2:
    {
    format(string,sizeof(string),"Du hast %i$ in deiner Fraktionskasse.",fdbInfo[2][fdb_kasse]);
    SendClientMessage(playerid,hblau,string);
    }

    case 3:
    {
    format(string,sizeof(string),"Du hast %i$ in deiner Fraktionskasse.",fdbInfo[3][fdb_kasse]);
    SendClientMessage(playerid,hblau,string);
    }
    }
    return 1;
    }



    sInfo[playerid][fraktion] gibt dabei aus in welcher Fraktion er ist:


    sInfo[playerid][fraktion]=0 --> Zivi
    sInfo[playerid][fraktion]=1 --> LSPD


    etc.


    Mit freundlichen Grüßen,


    The.Boonze

    Danke erstmal für die schnelle Antwort.
    Habe deinen Code so eingefügt, beim compilen kommen keine Fehler.
    Wenn ich jedoch das public loadFrak(); aufrufe schmeißt die Datenbank wieder den selben Fehler:


    [WARNING] cache_get_data - no active cache



    Hier mal ein Auszug der Datenbank, nicht das ich da was vermasselt habe:


    Mit freundlichen Grüßen,


    The.Boonze

    Hey Leute,
    es bleibt mir nichts anderes als einfach mal hier zu fragen.
    Ich
    habe etwas ganz Simples vor, und zwar möchte ich Fraktionen per
    Hand/Manuell in der MySQL Datenbank anlegen und diese dann auslesen.
    Leider stehe ich auf dem Schlauch und komme nicht weiter.


    #define MAX_FRAKTION 20


    enum fraktionInfo{
    fdb_idf,
    fdb_id,
    fdb_name,
    fdb_kasse,
    fdb_bluem,
    fdb_meth,
    fdb_skasse
    }


    new fdbInfo[MAX_FRAKTION][fraktionInfo];
    forward loadFrak();


    public OnGameModeInit()
    {
    mysql_function_query(dbhandle,"SELECT * FROM fraktionen",true,"loadFrak()","");
    loadFrak();
    }


    loadFrak()
    {
    new num_rows,num_fields;
    cache_get_data(num_rows,num_fields,dbhandle);
    if(!num_rows) return 1;
    for(new i=0; i<num_rows; i++)
    {
    fdbInfo[i][fdb_kasse] = cache_get_field_content_int(0,"kasse",dbhandle);
    fdbInfo[i][fdb_bluem] = cache_get_field_content_int(0,"bluemagic",dbhandle);
    fdbInfo[i][fdb_meth] = cache_get_field_content_int(0,"meth",dbhandle);
    fdbInfo[i][fdb_id] = cache_get_field_content_int(0,"id",dbhandle);
    fdbInfo[i][fdb_skasse] = cache_get_field_content_int(0,"schwarzkasse",dbhandle);
    return 1;
    }
    return 1;
    }
    }


    Es scheint nicht zu funktionieren, da ich folgenden Fehler bekomme:


    [17:40:33] [WARNING] cache_get_data - no active cache


    Kann mir vielleicht jemand auf die Sprünge helfen?


    Mfg The.Boonze