GTA Közösség - A magyar GTA fórum
San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: dexi - 2011. december 20. - 18:58:45
-
[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.
-
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.
-
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.