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: BarnyBoy - 2014. július 15. - 21:02:16

Cím: Régi skin ideiglenes elmentése, majd visszaállítása
Írta: BarnyBoy - 2014. július 15. - 21:02:16
Üdv!
Egy ruhaboltrendszeren dolgozom,amely megmutatja a játékosnak a ruhát és csak azután tudja megvenni, viszont nem tudom hogy hogyan kellene visszaállítani neki az eredeti ruháját ha mégsem kéri a ruhát.
Cím: Régi skin ideiglenes elmentése, majd visszaállítása
Írta: Blowy - 2014. július 15. - 22:08:08
Mielõtt átállítod a skint kérd le egy változóba a régi skinjét.
pl:
[pawn]new skin =  GetPlayerSkin(playerid);[/pawn]
és a végén SetPlayerSkin(playerid,skin) ha mégse szeretné megvenni.
Cím: Régi skin ideiglenes elmentése, majd visszaállítása
Írta: KovaNovik - 2014. július 15. - 22:30:34
Globálisan kellene létrehozni egy minden játékosra kiterjedõ cellájú (magyarán 500 cellás) tömböt, amiben eltárolod a skinjét.
 
#include a_samp
#include zcmd
#include sscanf
 
new g_oldSkin[MAX_PLAYERS] = {-1, ...};
 
CMD:skin(playerid, params[]) {
new skinid;
if(sscanf(params, \"d\", skinid)) return SendClientMessage(playerid, 0xFF0000FF, \"SYNTAX: /skin [id]\");
if(GetPlayerSkin(playerid) == skinid) return SendClientMessage(playerid, 0xFF0000FF, \"Ugyanazt a ruhát nem veheted fel!\");
if(g_oldSkin[playerid] != -1) return SendClientMessage(playerid, 0xFF0000FF, \"Már van rajtad próbaruha!\");
g_oldSkin[playerid] = GetPlayerSkin(playerid);
SetPlayerSkin(playerid, skinid);
return SendClientMessage(playerid, -1, \"Felvetted az új ruhádat próbára. Ha vissza szeretnél öltözni, használd a \'sback\' parancsot.\");
}
CMD:sback(playerid) {
if(g_oldSkin[playerid] == -1) return SendClientMessage(playerid, 0xFF0000FF, \"Nincsen rajtad próbaruha!\");
SetPlayerSkin(playerid, g_oldSkin[playerid]);
g_oldSkin[playerid] = -1;
return SendClientMessage(playerid, -1, \"Sikeresen visszaöltöztél!\");
}
Cím: Régi skin ideiglenes elmentése, majd visszaállítása
Írta: Ryan_Adam - 2014. július 15. - 23:00:45
Globálisan kellene létrehozni egy minden játékosra kiterjedõ cellájú (magyarán 500 cellás) tömböt, amiben eltárolod a skinjét.[/quote]
Miért kellene Globálisan Tárolni?
 
Idézetet írta: Blowy date=1405454888\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"49466\" data-ipsquote-contentclass=\"forums_Topic
Mielõtt átállítod a skint kérd le egy változóba a régi skinjét.
pl:
 
new skin =  GetPlayerSkin(playerid);

 
és a végén SetPlayerSkin(playerid,skin) ha mégse szeretné megvenni.
 
Blowy jól írta, csak lekell kérni és megadni neki.
Így:
[pawn]#include a_samp
#include zcmd
#include sscanf
new g_oldSkin[MAX_PLAYERS];
new playerskin;
CMD:skinproba(playerid, params[]) {
new skinid;
playerskin = GetPlayerSkin(playerid);
if(sscanf(params, \"d\", skinid)) return SendClientMessage(playerid, 0xFF0000FF, \"SYNTAX: /skin [id]\");
if(GetPlayerSkin(playerid) == skinid) return SendClientMessage(playerid, 0xFF0000FF, \"Ugyanazt a ruhát nem veheted fel!\");
g_oldSkin[playerid] = GetPlayerSkin(playerid);
SetPlayerSkin(playerid, skinid);
return SendClientMessage(playerid, -1, \"Felvetted az új ruhádat próbára. Ha vissza szeretnél öltözni, használd a \'sback\' parancsot.\");
}
CMD:sback(playerid) {
if(g_oldSkin[playerid] == -1) return SendClientMessage(playerid, 0xFF0000FF, \"Nincsen rajtad próbaruha!\");
SetPlayerSkin(playerid, playerskin);
g_oldSkin[playerid] = -1;
return SendClientMessage(playerid, -1, \"Sikeresen visszaöltöztél!\");
}[/pawn]
Cím: Régi skin ideiglenes elmentése, majd visszaállítása
Írta: KovaNovik - 2014. július 16. - 07:34:00
Nem értem, hogy lehetne eltárolni 4 bájtban 500*4 bájtnyi skin id-t.
Cím: Régi skin ideiglenes elmentése, majd visszaállítása
Írta: BarnyBoy - 2014. július 16. - 11:16:43
Köszönöm a válaszokat, sikerült Ryan_Adam leírása alapján! :) mindenkinek adtam +-t.