[Pedido] Sistema de 5 Skins para cada player
#1

E aн pessoal,tinha postado isso como projeto,me deram uma base mas nгo consegui fechб-la.O que eu quero й: Cada player pode comprar atй 5 skins.E pode dar /minhasskins para ver o seguinte(em dialog,se possнvel)Skin 1 = tal ID,Skin 2 = tal Id e assim por diante.E pudesse dar /vestirskin [1-5].Meu gamemode й RPG/RP e acho que ficaria muito bom se os players pudessem ter uma roupa para trabalho,outra casual,outra de praia,outra para dormir e uma de gala.Entгo,se pudessem me explicar passo a passo como fazer isso ou me dar o script pronto eu seria eternamente grato,garanto que os crйditos serгo completamente de quem ajudar,e essa pessoa terб seu nome fixado em meu Gamemode.Agradeзo desde jб.

Att: ChapterFour
Reply
#2

Tem skype? Fica mais fбcil te ajudar..
Reply
#3

Nгo poderia sу postar aqui?Tipo,um mini tutorial?Exemplo: crie a seguinte array no topo do GM... e etc.Porque eu sei que tem mais gente que quer fazer esse sistema
Reply
#4

Variaveis + SetPlayerSkin
Reply
#5

Topo do GM:

pawn Code:
#include <a_samp>
#include <DOF2>
#include <ZCMD>
#include <sscanf2>

#define MAX_SKIN 5

new Skin[ MAX_SKIN ][ MAX_PLAYERS ];
Funзхes para salvar e carregar as skins, coloque o conteudo delas onde vocк carrega e salva as contas:
pawn Code:
stock CarregarSkin(p){
    new file[45],n[25],arq[10];
    GetPlayerName(p,n,sizeof n);
    format(file,sizeof file,"Acc/%s.ini",n);
    for(new _x = 0; _x < MAX_SKIN; _x ++){
        format(arq,sizeof arq,"Skin%d",_x);
        Skin[ _x ][ p ] = DOF2_GetInt(file,arq);
    }
}
stock SalvarSkin(p){
    new file[45],n[25],arq[10];
    GetPlayerName(p,n,sizeof n);
    format(file,sizeof file,"Acc/%s.ini",n);
    for(new _x = 0; _x < MAX_SKIN; _x ++){
        format(arq,sizeof arq,"Skin%d",_x);
        DOF2_SetInt(file,arq,Skin[ _x ][ p ]);
    }
    DOF2_SaveFile();
}
Coloque isto onde hб a criaзгo da conta:
pawn Code:
new file[56],n[25],arq[20];
    GetPlayerName(playerid,n,sizeof n);
    format(file,sizeof file,"Acc/%s.ini",n);

    if(!DOF2_FileExists(file)){
        DOF2_CreateFile(file);
        for(new _x = 0; _x < MAX_SKIN; _x ++){
            format(arq,sizeof arq,"Skin%d",_x);
            DOF2_SetInt(file,arq,-1);
        }
        DOF2_SaveFile();
    }
pawn Code:
public OnPlayerConnect(playerid)
{
    CarregarSkin(playerid);
    return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    SalvarSkin(playerid);
    return 1;
}
Comandos:
pawn Code:
CMD:comprarskin(p,params[]){
    new skin,slot;
    if(sscanf(params,"dd",slot,skin)) return SendClientMessage(p,-1,"[ERRO] Use: /comprarskin <slot(0 а 4)> <Nє da skin (0 а 298)>");
    else if(skin < 0 || skin > 298) return SendClientMessage(p,-1,"[ERRO] Skin invбlida");
    Skin[ slot ][ p ] = skin;
    SetPlayerSkin(p,skin);
    SendClientMessage(p,-1,"Vocк comprou uma roupa.");
    return true;
}
CMD:mudarskin(p,params[]){
    new slot;
    if(sscanf(params,"d",slot)) return SendClientMessage(p,-1,"[ERRO] USe: /mudarskin <slot(0 а 4)>");
    if(Skin[ slot ][ p ] < 0 || Skin[ slot ][ p ] > 298) return SendClientMessage(p,-1,"[ERRO] Skin invбlida");
    SetPlayerSkin(p,Skin[ slot ][ p ]);
    SendClientMessage(p,-1,"Vocк mudou de roupa.");
    return true;
}
CMD:verskins(p){

    new str[ MAX_SKIN ][ 60 ],string[300];
    for(new _x = 0; _x < MAX_SKIN; _x ++){
        format(str [ _x ],60,"{FFFFFF}- Slot {FFFF00}[%d]{FFFFFF}:   Skin Nє {FFFF00}%d\n",_x,Skin[ _x ][ p ]);
        strcat(string,str[ _x ]);
    }
    ShowPlayerDialog(p,999,0,"Suas Roupas",string,"Confirma","");
    return true;
}

Tem que melhorar a relaзгo das skin invбlidas, nгo testei os cуdigos mas creio que funcione, sу tem que saber adequar a seu gamemode
Reply
#6

Quote:

Topo do GM:

pawn Code:
#include <a_samp>
#include <DOF2>
#include <ZCMD>
#include <sscanf2>

#define MAX_SKIN 5

new Skin[ MAX_SKIN ][ MAX_PLAYERS ];

Funзхes para salvar e carregar as skins, coloque o conteudo delas onde vocк carrega e salva as contas:
pawn Code:
stock CarregarSkin(p){
new file[45],n[25],arq[10];
GetPlayerName(p,n,sizeof n);
format(file,sizeof file,"Acc/%s.ini",n);
for(new _x = 0; _x < MAX_SKIN; _x ++){
format(arq,sizeof arq,"Skin%d",_x);
Skin[ _x ][ p ] = DOF2_GetInt(file,arq);
}
}
stock SalvarSkin(p){
new file[45],n[25],arq[10];
GetPlayerName(p,n,sizeof n);
format(file,sizeof file,"Acc/%s.ini",n);
for(new _x = 0; _x < MAX_SKIN; _x ++){
format(arq,sizeof arq,"Skin%d",_x);
DOF2_SetInt(file,arq,Skin[ _x ][ p ]);
}
DOF2_SaveFile();
}

Coloque isto onde hб a criaзгo da conta:
pawn Code:
new file[56],n[25],arq[20];
GetPlayerName(playerid,n,sizeof n);
format(file,sizeof file,"Acc/%s.ini",n);

if(!DOF2_FileExists(file)){
DOF2_CreateFile(file);
for(new _x = 0; _x < MAX_SKIN; _x ++){
format(arq,sizeof arq,"Skin%d",_x);
DOF2_SetInt(file,arq,-1);
}
DOF2_SaveFile();
}

pawn Code:
public OnPlayerConnect(playerid)
{
CarregarSkin(playerid);
return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
SalvarSkin(playerid);
return 1;
}
Comandos:
pawn Code:
CMD:comprarskin(p,params[]){
new skin,slot;
if(sscanf(params,"dd",slot,skin)) return SendClientMessage(p,-1,"[ERRO] Use: /comprarskin <slot(0 а 4)> <Nє da skin (0 а 29>");
else if(skin < 0 || skin > 29 return SendClientMessage(p,-1,"[ERRO] Skin invбlida");
Skin[ slot ][ p ] = skin;
SetPlayerSkin(p,skin);
SendClientMessage(p,-1,"Vocк comprou uma roupa.");
return true;
}
CMD:mudarskin(p,params[]){
new slot;
if(sscanf(params,"d",slot)) return SendClientMessage(p,-1,"[ERRO] USe: /mudarskin <slot(0 а 4)>");
if(Skin[ slot ][ p ] < 0 || Skin[ slot ][ p ] > 29 return SendClientMessage(p,-1,"[ERRO] Skin invбlida");
SetPlayerSkin(p,Skin[ slot ][ p ]);
SendClientMessage(p,-1,"Vocк mudou de roupa.");
return true;
}
CMD:verskins(p){

new str[ MAX_SKIN ][ 60 ],string[300];
for(new _x = 0; _x < MAX_SKIN; _x ++){
format(str [ _x ],60,"{FFFFFF}- Slot {FFFF00}[%d]{FFFFFF}: Skin Nє {FFFF00}%d\n",_x,Skin[ _x ][ p ]);
strcat(string,str[ _x ]);
}
ShowPlayerDialog(p,999,0,"Suas Roupas",string,"Confirma","");
return true;
}

Nem testei,mas +rep pra vocк
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)