Waffen auslesen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Guten Tag,


    ich möchte mal wissen wie ich die Waffen auslese kann die der Spieler alle hat und diese als eine PlayerInfo definieren kann. Sprich nicht nur die Waffe in der Hand sondern auch die Waffen die man grade nicht in der Tasche hat. Dies soll dann bei OnPlayerDisconect abgefragt werden damit sie beim Login geladen werden können.

  • erstmal ein enum


    enum Waffen_Info
    {
    wslot,wslot1,wslot2,wslot3,wslot4,wslot5,wslot6,wslot7,wslot8,wslot9,wslot10,wslot11,
    aslot,aslot1,aslot2,aslot3,aslot4,aslot5,aslot6,aslot7,aslot8,aslot9,aslot10,aslot11
    };
    new wInfo[MAX_PLAYERS][Waffen_Info];


    Der stock zum Laden


    stock WaffenLaden(playerid)
    {
    new save[40],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"/Waffen/%s.ini",name);
    //____________________________________Waffen Laden____________________________________
    wInfo[playerid][wslot] =dini_Int(save,"waslot");
    wInfo[playerid][wslot1] =dini_Int(save,"waslot1");
    wInfo[playerid][wslot2] =dini_Int(save,"waslot2");
    wInfo[playerid][wslot3] =dini_Int(save,"waslot3");
    wInfo[playerid][wslot4] =dini_Int(save,"waslot4");
    wInfo[playerid][wslot5] =dini_Int(save,"waslot5");
    wInfo[playerid][wslot6] =dini_Int(save,"waslot6");
    wInfo[playerid][wslot7] =dini_Int(save,"waslot7");
    wInfo[playerid][wslot8] =dini_Int(save,"waslot8");
    wInfo[playerid][wslot9] =dini_Int(save,"waslot9");
    wInfo[playerid][wslot10] =dini_Int(save,"waslot10");
    wInfo[playerid][wslot11] =dini_Int(save,"waslot11");
    wInfo[playerid][aslot] =dini_Int(save,"amslot");
    wInfo[playerid][aslot1] =dini_Int(save,"amslot1");
    wInfo[playerid][aslot2] =dini_Int(save,"amslot2");
    wInfo[playerid][aslot3] =dini_Int(save,"amslot3");
    wInfo[playerid][aslot4] =dini_Int(save,"amslot4");
    wInfo[playerid][aslot5] =dini_Int(save,"amslot5");
    wInfo[playerid][aslot6] =dini_Int(save,"amslot6");
    wInfo[playerid][aslot7] =dini_Int(save,"amslot7");
    wInfo[playerid][aslot8] =dini_Int(save,"amslot8");
    wInfo[playerid][aslot9] =dini_Int(save,"amslot9");
    wInfo[playerid][aslot10] =dini_Int(save,"amslot10");
    wInfo[playerid][aslot11] =dini_Int(save,"amslot11");
    GivePlayerWeapon(playerid,wInfo[playerid][wslot],wInfo[playerid][aslot]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot1],wInfo[playerid][aslot1]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot2],wInfo[playerid][aslot2]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot3],wInfo[playerid][aslot3]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot4],wInfo[playerid][aslot4]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot5],wInfo[playerid][aslot5]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot6],wInfo[playerid][aslot6]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot7],wInfo[playerid][aslot7]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot8],wInfo[playerid][aslot8]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot9],wInfo[playerid][aslot9]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot10],wInfo[playerid][aslot10]);
    GivePlayerWeapon(playerid,wInfo[playerid][wslot11],wInfo[playerid][aslot11]);
    return 1;
    }


    Der stock zum speichern


    stock WaffenSpeichern(playerid)
    {
    new waffe,ammo,save[40],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(save,sizeof(save),"/Waffen/%s.ini",name);
    dini_Create(save);
    //____________________________________Waffen Speichern____________________________________
    GetPlayerWeaponData(playerid,0,waffe,ammo);
    dini_IntSet(save,"waslot",waffe);
    dini_IntSet(save,"amslot",ammo);
    GetPlayerWeaponData(playerid,1,waffe,ammo);
    dini_IntSet(save,"waslot1",waffe);
    dini_IntSet(save,"amslot1",ammo);
    GetPlayerWeaponData(playerid,2,waffe,ammo);
    dini_IntSet(save,"waslot2",waffe);
    dini_IntSet(save,"amslot2",ammo);
    GetPlayerWeaponData(playerid,3,waffe,ammo);
    dini_IntSet(save,"waslot3",waffe);
    dini_IntSet(save,"amslot3",ammo);
    GetPlayerWeaponData(playerid,4,waffe,ammo);
    dini_IntSet(save,"waslot4",waffe);
    dini_IntSet(save,"amslot4",ammo);
    GetPlayerWeaponData(playerid,5,waffe,ammo);
    dini_IntSet(save,"waslot5",waffe);
    dini_IntSet(save,"amslot5",ammo);
    GetPlayerWeaponData(playerid,6,waffe,ammo);
    dini_IntSet(save,"waslot6",waffe);
    dini_IntSet(save,"amslot6",ammo);
    GetPlayerWeaponData(playerid,7,waffe,ammo);
    dini_IntSet(save,"waslot7",waffe);
    dini_IntSet(save,"amslot7",ammo);
    GetPlayerWeaponData(playerid,8,waffe,ammo);
    dini_IntSet(save,"waslot8",waffe);
    dini_IntSet(save,"amslot8",ammo);
    GetPlayerWeaponData(playerid,9,waffe,ammo);
    dini_IntSet(save,"waslot9",waffe);
    dini_IntSet(save,"amslot9",ammo);
    GetPlayerWeaponData(playerid,10,waffe,ammo);
    dini_IntSet(save,"waslot10",waffe);
    dini_IntSet(save,"amslot10",ammo);
    GetPlayerWeaponData(playerid,11,waffe,ammo);
    dini_IntSet(save,"waslot11",waffe);
    dini_IntSet(save,"amslot11",ammo);
    return 1;
    }


    Und jenachdem zum Laden immer


    WaffenLaden(playerid);


    und zum saven


    WaffenSpeichern(playerid);

  • Damit kannst du die Waffen und ihre Munition die er hat in einem text dokument speichern lassen für jeden spieler wird ein eigenes Textdokument erstellt und aus dem wird dann immer die Waffe geladen und gespeichert wenn man die jeweiligen funktionen benutzt ist doch eigentlich selbsterklärend

  • _Flex_:


    Noch mehr Code für sowas, ging nicht oder? ^^


    Man kann dies auch vereinfachen und einfach so schreiben:


    //Als erstes man braucht kein enum!
    stock WaffenLaden(playerid) {
    new save[13 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME],waffe[13],ammu[13],buffer[10];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(save,sizeof(save),"/Waffen/%s.ini",name);
    for(new i; i<13; i++) format(buffer,10,"waslot%d",i),waffe[i] = dini_Int(save,buffer);
    for(new i; i<13; i++) format(buffer,10,"amslot%d",i),ammu[i] = dini_Int(save,buffer);
    for(new i; i<13; i++) GivePlayerWeapon(playerid,waffe[i],ammu[i]);
    return 1;
    }


    stock WaffenSpeichern(playerid) {
    new waffe,ammo,save[13 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME],buffer[10];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(save,sizeof(save),"/Waffen/%s.ini",name),dini_Create(save);
    for (new i; i < 13; i++) {
    GetPlayerWeaponData(playerid,i,waffe,ammo);
    format(buffer,10,"waslot%d",i),dini_IntSet(save,buffer,waffe);
    format(buffer,10,"amslot%d",i),dini_IntSet(save,buffer,ammo);
    }
    return 1;
    }


    PS: Du fragst unten nur 12 Waffenslots ab, es gibt 13 ;) nämlich 0 - 12 und nicht nur 0 - 11 ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • _Flex_ ich habe es so eingebaut doch leider ist Waffen_Info in diesen Fall undifiniert trotz enum.


    Ich habe es schon verstanden aber ganz gut wenn da immer eine Erklärung dabei ist, nur weil man selbst es versteht ist es nicht zwangsweise das es jeder versteht.


    Kaliber
    Danke dir hat alles geklappt.