Beiträge von DisturbedNoobTV

    Ich habe Klassen erstellt, aber derzeit das Problem diese korrekt aufzurufen und wenn ein Spieler den Server verlässt den "new Player" zu zerstören

    zudem möchte ich jederzeit auf das Object zugreifen können


    PS: Alles was ich bisher weiß, habe ich mir selbst eingelesen oder beigebracht trotz teilweise extrem schlechter Quellen

    Hi zusammen


    ich sinniere derzeit, wie ich folgende Enums in C# hinbekommen

    Ich möchte dies für ein Fraktions-/ Organisationssystem nutzen, leider bekomme ich dies nicht hin


    Hat wer nen brandheißen Tipp für mich?

    So habe ich das bisher:



    #define DIALOG_GENDER 1



    enum playerInfo{
    ...
    gender,
    skin,
    ...
    }
    new pInfo[MAX_PLAYERS][playerInfo];



    new male[22];
    new female[22];




    public OnPlayerClassRequest(playerid)
    {
    SetPlayerPos(playerid, 870.0127,-25.0943,63.9828);
    SetPlayerCameraPos(playerid, 867.3280,-33.1046,63.1953);
    SetPlayerCameraLookAt(playerid, 870.0127,-25.0943,63.9828);
    SetPlayerFacingAngle(playerid,162.4662);
    if(pInfo[playerid][gender] == 1)
    {
    female[1] = AddPlayerClass(12, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[2] = AddPlayerClass(13, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[3] = AddPlayerClass(40, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[4] = AddPlayerClass(56, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[5] = AddPlayerClass(65, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[6] = AddPlayerClass(69, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[7] = AddPlayerClass(93, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[8] = AddPlayerClass(131, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[9] = AddPlayerClass(91, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[10] = AddPlayerClass(216, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[11] = AddPlayerClass(215, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[12] = AddPlayerClass(193, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[13] = AddPlayerClass(190, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[14] = AddPlayerClass(169, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[15] = AddPlayerClass(192, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[16] = AddPlayerClass(195, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[17] = AddPlayerClass(211, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[18] = AddPlayerClass(41, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[19] = AddPlayerClass(226, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[20] = AddPlayerClass(233, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    female[21] = AddPlayerClass(298, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    }
    else
    {

    male[1] = AddPlayerClass(303, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[2] = AddPlayerClass(2, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[3] = AddPlayerClass(6, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[4] = AddPlayerClass(7, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[5] = AddPlayerClass(229, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[6] = AddPlayerClass(20, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[7] = AddPlayerClass(21, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[8] = AddPlayerClass(22, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[9] = AddPlayerClass(23, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[10] = AddPlayerClass(24, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[11] = AddPlayerClass(25, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[12] = AddPlayerClass(28, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[13] = AddPlayerClass(29, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[14] = AddPlayerClass(33, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[15] = AddPlayerClass(37, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[16] = AddPlayerClass(46, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[17] = AddPlayerClass(59, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[18] = AddPlayerClass(304, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[19] = AddPlayerClass(305, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[20] = AddPlayerClass(299, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    male[21] = AddPlayerClass(250, 1208.4956,-1749.1785,13.5934,51.8557, 0, 0, 0, 0, 0, 0);
    }
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_GENDER)
    {
    if(response)
    {
    if(listitem==0)
    {
    pInfo[playerid][gender] = 0;
    SendClientMessage(playerid,COLOR_GREEN,"((Registrierung)) Du bist also ein Mann");
    SendClientMessage(playerid,COLOR_GREEN,"((Registrierung)) Schritt 4 von 4 - Skinauswahl");
    SavePlayerGender(playerid);
    OnPlayerClassRequest(playerid);




    }
    if(listitem==1)
    {
    pInfo[playerid][gender] = 1;
    SendClientMessage(playerid,COLOR_GREEN,"((Registrierung)) Du bist also eine Frau");
    SendClientMessage(playerid,COLOR_GREEN,"((Registrierung)) Schritt 4 von 4 - Skinauswahl");
    SavePlayerGender(playerid);
    OnPlayerClassRequest(playerid);




    }
    }
    return 1;
    }
    return 1;
    }


    Problem ist nur das der erste Skin immer falsch ist, das heißt man wählt weiblich und angezeigt wird als erstes ein Skin für männlich. Um Fehler zu vermeiden, dass die Skins erst gar nicht angezeigt werden, sind alle Skins auch unter OnGameModeInit angegeben! Hatte auch schon über eine eigene ClassRequest es versucht!


    PS: habe einige Dinge nicht drin, da diese nichts hiermit zu tun haben, wie zum Beispiel die Funktion SavePlayerGender. Gespeichert werden alle Spielerdaten per MySQL!

    Hallo ihr lieben Brotfische


    wie der Titel bereits sagt, möchte ich gerne dei der Registrierung eines neuen Spielers, bei der auch nach dem Geschlacht gefragt wird, auch eine Skinauswahl anzeigen lassen. Diese sollte wenn man zum Beispiel als Geschlecht vorher "weiblich" angegeben hat, nur weibliche Skins zeigen. Ich proboere bereits seit Monaten eine Möglichkeit dazu zu scripüten, was bisher nicht den gewünschten Erfolg hatte!


    Ich wende mich nun an euch, da vielleicht einer von euch bereits die Lösung hat und diese gerne mit mir teilen würde


    MfG Addra

    @Douq: Danke das war mein Fehler! Warum denkt man so selten an die Null? :D


    So klappts jetzt:



    for(new i=0; i<MAX_VEHICLES; i++)
    {
    new mID = GetVehicleModel(i);
    if(mID == 0)continue; // Wenn Null, dann überspringen und Schleife zu Ende bringen! Nicht gerade ressourcenschonend, aber in der Zeit der heutigen CPUs ist das eher egal
    cartank[i] = cInfo[mID-400][tank];
    }


    @BreadScript: Was du vorgeschlagen hattest, ist ja eigentlich bereits im Script drin, aber danke dir


    Ich danke auch euch allen anderen, die geholfen haben! Ich werde das System vllt. veröffentlichen, wenn es komplett fertig ist.


    Gruß Addra

    Es ist immer noch derselbe Fehler.


    [00:24:38] [debug] Run time error 4: "Array index out of bounds"[00:24:38] [debug] Accessing element at index 212 past array upper bound 211[00:24:38] [debug] AMX backtrace:[00:24:38] [debug] #0 00006cc8 in public SSCANF_OnGameModeInit () from server.amx[00:24:38] [debug] #1 00000a34 in public OnGameModeInit () from server.amx


    Was soll das Ding können?
    Alle Auto durch-"schleifen", die Model-ID rausfinden und den Tank zuweisen


    BTW:
    new Float:cartank[MAX_VEHICLES];
    ist bereits deklariert.



    GetVehicleModel sollte wegen der Sache mit den verschiedenen Tankgrößen eigentlich drin sein! Wie bereits gesagt:



    Nicht jedes Modell hat die selbe Tankgröße!



    Nochmals der Code für die Sache:
    enum CarInfo{
    model[32],
    Float:tank //Tankgröße die abgefragt werden, je nach Modell
    }
    new cInfo[][CarInfo] ={
    {"Landstalker",38.0},
    {"Bravura",42.0},
    {"Buffalo",40.0},...// Gekürzt wegen Platz
    {"Boxville",60.0},
    {"Tiller",62.0},
    {"Utility Trailer",45.0}
    };


    new Float:cartank[MAX_VEHICLES];


    public OnGameModeInit()
    {


    for(new i=0; i<sizeof(cartank); i++) //Beim Serverstart sollen alle Fahrzeuge ihren Tank mit den Daten aus der cInfo[id in der Liste -400][tank] gefüllt bekommen -> Und genau hier liegt das Problem!
    {
    new vID = GetVehicleModel(i); //<- Wird wegen der Model-ID gebraucht!
    cartank[i] = cInfo[vID-400][tank]; //Warum -400? Weil die VehicleIDs nicht mit 1 beginnen wie wir alle wissen
    }
    return 1;
    }

    Es muss auch das Model abgefragt werden, damit auch die Tankanzeige stimmt! In meinem Script hat jedes Fahrzeugmodel unterschiedlich Tankgrößen


    Beispiel:
    Der Buffalo fasst 40.0 l während der Bravura bei vollem Tank 42.0 l fasst.


    Dieses System wollte ich beibehalten.


    Wenn ich das bei OnGameModeInit() eintrage


    for(new i=0; i<sizeof(cartank); i++)
    {
    cartank[i] = cInfo[i][tank];
    }


    erhalte ich trotzdem folgende Fehlermeldung , wenn ich den Server starte

    [18:38:22] [debug] Run time error 4: "Array index out of bounds"
    [18:38:22] [debug] Accessing element at index 212 past array upper bound 211