Szerző Téma: XP adása a playernek. Egy kis gond  (Megtekintve 519 alkalommal)

dexi

  • Vendég
XP adása a playernek. Egy kis gond
« Dátum: 2011. december 20. - 18:58:45 »
0 Show voters
[pawn]/////////////////////////////////////[Xpad]///////////////////////////////////////
         CMD:xpad(playerid,params[])
         {
         new id;
         new XP;
         new asd;
         new   namee[MAX_PLAYER_NAME]; // Név tárolása.
         asd = dini_Int(fajl, \"Experience | Tap pont\");
         format(fajl,   sizeof (fajl),   \"/Registration/%s.ini\", nev); // fajl megformálása.
         if(sscanf(params,\"ii\", id,XP))return SendClientMessage(playerid,COLOR_RED,\"HIBA: /xpad [iD] [EXP]\");
         exp = PlayerInfo[id][experience]; // \"Tapasztalati pont lekérése\".
         GetPlayerName (id, namee, sizeof ( namee ) ); // Név lekérése.
            {
            if(PlayerInfo[playerid][adminlevel] > 2)
                {
               PlayerInfo[id][experience] = asd + XP;
               SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen beállítottad a tapasztalati pontjait.\");
               SendClientMessage(id, COLOR_GREEN, \"Egy admin beállította a tapasztalati pontjaid!\");
               dini_IntSet(fajl, \"Experience | Tap pont\", exp);
               }
               else SendClientMessage(playerid, COLOR_RED, \"HIBA: Nem elég magas az adminszinted!\");
            }
            return 1;
         }[/pawn]
Nem mûködik rendesen,  adok valakinek XP-t akkor nemadja rögtön hanem ha megint adok akkor az elõzõt adja oda neki.

XP adása a playernek. Egy kis gond
« Válasz #1 Dátum: 2011. december 20. - 20:28:59 »
+1 Show voters
Nem tudtam tesztelni.
A logikai menet ez lenne igazából.
A tapasztalati pontot már a játékos bejelentkezésekor (login)már be kell tölteni az arra kijelölt változóra. (PlayerInfo[playerid][experience])
Ezután nem kell lekérni az adatot újból csak menteni de ezt se muszáj feltétlenül a parancsban.
Na mindegy, ha sokat foglalkozol majd ezzel a ***** akkor idõvel logikusabb megoldásokat próbálsz írni.
[pawn]/////////////////////////////////////[Xpad]///////////////////////////////////////
CMD:xpad(playerid,params[])
{
if(PlayerInfo[playerid][adminlevel] > 2)
{
   new
      addplayerid,
      EXP;
   if(sscanf(params, \"ui\", addplayerid, EXP)) SendClientMessage(playerid, COLOR_RED, \"HIBA: /xpad [iD] [EXP]\");
   else if(addplayerid == INVALID_PLAYER_ID) SendClientMessage(playerid, -1, \"A megadott id-n nincs online játékos.\");
   else
   {
      new
         tmp[256],
         getname[MAX_PLAYER_NAME];
      GetPlayerName(addplayerid, getname, sizeof(getnamee)); // Név lekérése.
      format(tmp, sizeof(tmp), \"/Registration/%s.ini\", getname); // Regisztrációs fájl elérési útjának meghatározása
      PlayerInfo[addplayerid][experience] += EXP; // Tapasztalati pont növelése a játékosnak (addplayerid)
      dini_IntSet(tmp, \"Experience | Tap pont\", PlayerInfo[addplayerid][experience]); // Adat mentése a regisztrációs fájlba
      SendClientMessage(playerid, COLOR_GREEN, \"Sikeresen beállítottad a tapasztalati pontjait.\"); // Üzenet a parancsot használó adminnak
      SendClientMessage(addplayerid, COLOR_GREEN, \"Egy admin beállította a tapasztalati pontjaid!\"); // Üzenet annak akinek növelve lett a tapasztalati pontja
   }
} else SendClientMessage(playerid, COLOR_RED, \"HIBA: Nem elég magas az adminszinted!\");
return 1;
}[/pawn]
Ismétlem, nem teszteltem, nem hoztam létre minden körülményt hogy tesztelni tudjam nem használok dini-t.

dexi

  • Vendég
XP adása a playernek. Egy kis gond
« Válasz #2 Dátum: 2011. december 20. - 20:37:39 »
0 Show voters
Köszönöm szépen megy.  Egy dolgot nem értek, tegnap este sikerült megcsinálnom úgy hogy mûködött ma meg már rossz volt.. Ugyanez van a regrendszeremmel is... egyiknap csak a jót fogadja el másnap már a rossz jelszót is. Na de nem térek el a témától, ment a + és zárok.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal