Beiträge von malE

    Wie funktionierte nochmal, dass man zwischen zwei MySQL-Anbindungen switchen kann.

    #if SwitchMySQL == 1
    /*#define MYSQL_HOST ""
    #define MYSQL_USER ""
    #define MYSQL_PASS ""
    #define MYSQL_DBSE ""
    #endif
    #if SwitchMySQL == 2
    #define MYSQL_HOST ""
    #define MYSQL_USER ""
    #define MYSQL_PASS ""
    #define MYSQL_DBSE ""
    #endif

    Wenn du dir ein Beispiel an meinem Beispiel nimmst, würdest du vielleicht selbst weiter kommen.
    Habs nicht getestet.


    z.B so!
    OnGameModeInit

    SetTimer("UpdateWeizen", 1000, true);



    forward UpdateWeizen();
    public UpdateWeizen()
    {
    for(new i=0; i < sizeof(Weizen); i++)
    {
    if(Weizen[i][w_Objekt] == -1)continue;
    Weizen[i][w_Zustand] +=5;
    if(Weizen[i][w_Zustand] 10){
    DestroyObject(Weizen[i][w_Objekt]), CreateObject(ID, Weizen[i][w_X], Weizen[i][w_Y], Weizen[i][w_Z]+0.15, 0.0, 0.0, 0.0); // So "wächst" die Pflanze
    }
    }
    }



    enum enum_Weizen
    {
    w_ID,
    w_Besitzer[MAX_PLAYER_NAME],
    w_Objekt, // Die Pflanze
    Float:w_X,
    Float:w_Y,
    Float:w_Z,
    w_Zustand // Dafür das die Pflanzen wachsen
    }
    new Weizen[100][enum_Weizen];

    Man läd auf einen Root etc, nie seine .pwn Datei hoch, nur seine .amx.
    Außerdem sollte man diesen Schnipsel im Script immer drin haben, der lässt nämlich einen deCompiler crashen.


    Es sieht eigentlich alles korrekt aus.

    ocmd:showrangnames(playerid)
    {
    new string[145];
    if(sInfo[playerid][fraktion] == 0)return SendClientMessage(playerid, -1, "Du bist in keiner Fraktion.");
    if(sInfo[playerid][rang] != 5)return SendClientMessage(playerid, -1, noaccess);
    new fID = sInfo[playerid][fraktion];
    format(string,sizeof(string),"%s\n%s\n%s\n%s\n%s\n%s", fInfo[fID][frang1], fInfo[fID][frang2], fInfo[fID][frang3], fInfo[fID][frang4], fInfo[fID][frang5], fInfo[fID][frang6]);
    ShowPlayerDialog(playerid, DIALOG_RANGNAMES, DIALOG_STYLE_LIST, "Fraktionsränge", string, "Ändern", "Schließen");
    return 1;
    }

    Versuchs mal so.


    public LoadFraktionRangs()
    {
    print("LoadFraktionRangs - wurde aufgerufen");
    new num_fields,num_rows;
    cache_get_data(num_rows,num_fields);
    if(!num_rows)return print("LoadFraktionRangs - num_rows = 0");
    for(new i = 0; i < num_rows; i++)
    {
    new result[92];
    cache_get_field_content(0, "rangname1", result);
    format(fInfo[i][frang1], 92, result);
    cache_get_field_content(0, "rangname2", result);
    format(fInfo[i][frang2], 92, result);
    cache_get_field_content(0, "rangname3", result);
    format(fInfo[i][frang3], 92, result);
    cache_get_field_content(0, "rangname4", result);
    format(fInfo[i][frang4], 92, result);
    cache_get_field_content(0, "rangname5", result);
    format(fInfo[i][frang5], 92, result);
    cache_get_field_content(0, "rangname6", result);
    format(fInfo[i][frang6], 92, result);

    printf("Step 1: LoadFraktionRangs - rangname1: %s",fInfo[i][frang1]);
    printf("Step 2: LoadFraktionRangs - rangname2: %s",fInfo[i][frang2]);
    printf("Step 3: LoadFraktionRangs - rangname3: %s",fInfo[i][frang3]);
    printf("Step 4: LoadFraktionRangs - rangname4: %s",fInfo[i][frang4]);
    printf("Step 5: LoadFraktionRangs - rangname5: %s",fInfo[i][frang5]);
    printf("Step 6: LoadFraktionRangs - rangname6: %s",fInfo[i][frang6]);
    }
    return print("LoadFraktionRangs - wurde geladen");
    }

    Versuchs mal so.

    Lädst du die Rangnamen nicht beim Laden der Fraktion in eine Variable?
    Dann könntest du nämlich einfach die Variable benutzen zum auslesen.

    @xCurry
    Ich weiß zwar nicht genau was du meinst, aber ich habe mal dir ein Code geschrieben.
    So habe ich dich verstanden ( siehe Code ).
    Am besten du testest es inGame einmal und sagst mir dann bescheid, wenn musst du es vielleicht noch ein wenig anpassen.
    Das Objekt, welches erstellt wird ist eine kleine grüne Pflanze.


    Es ist nur ein Beispiel Code, d.h es ist auf nichts angepasst.


    http://pastebin.com/ETXDP0Yr

    Du erstellst für jede Arena eine eigene Variable, die du hoch oder runterzählen lasst sobald ein Spieler diese Arena betritt oder verlässt.
    Die jeweiligen Variable kannst du dann im auslesen.

    Setze den Thread, anschließend bitte auf Erledigt.


    Füge das bitte noch ein, hatte es vergessen.

    public OnPlayerDisconnect(playerid)
    {
    if(PlayerInArena[playerid] == true){
    PlayerInArena[playerid] = false;
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, MAX_PLAYER_NAME);
    new str[145];
    format(str, sizeof(str), "Spieler %s hat die Deagle Arena verlassen.", name), SendClientMessageToAll(-1, str);
    }
    return 1;
    }

    Unter den Includes
    new OldSkin[MAX_PLAYERS];


    Da wo der "alte" Skin gespeichert werden soll
    OldSkin[playerid] = GetPlayerSkin(playerid);


    So kannst du dem Spieler sein "alten" Skin setzen.
    SetPlayerSkin(playerid, OldSkin[playerid]);


    OnPlayerDisconnect
    SetPlayerSkin(playerid, OldSkin[playerid]); // ggf. für die Speicherung, oder in die Variable umschreiben