Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Skin selection by Flávio Toribio
- * http://www.orkut.com.br/Main#Community.aspx?cmm=38308205
- **/
- #include <a_samp>
- #include <dini>
- // <config>
- #define SKIN_FREE false //false = tem que pagar; true = não precisa pagar
- #define MALE_SKIN_PRICE 1000000 //preço da skin masculina
- #define FEMALE_SKIN_PRICE 2000000 //preço da skin feminina
- // </config>
- #if MALE_SKIN_PRICE < 0
- #undef MALE_SKIN_PRICE
- #define MALE_SKIN_PRICE 0
- #endif
- #if FEMALE_SKIN_PRICE < 0
- #undef FEMALE_SKIN_PRICE
- #define FEMALE_SKIN_PRICE 0
- #endif
- #define ZerarSkinSelection(%1); \
- inskin[%1] = 0; \
- cuskin[%1] = 0; \
- ltskin[%1] = 0; \
- skindt[%1][p_s_x] = 0.0; \
- skindt[%1][p_s_y] = 0.0; \
- skindt[%1][p_s_z] = 0.0; \
- skindt[%1][p_s_a] = 0.0; \
- skindt[%1][p_s_interior] = 0; \
- skindt[%1][p_s_skin] = 0;
- forward bool:IsSkinFemale(skinid);
- forward bool:IsInvalidSkin(skinid);
- new inskin[MAX_PLAYERS];
- new cuskin[MAX_PLAYERS];
- new ltskin[MAX_PLAYERS];
- enum p_s_data
- {
- Float:p_s_x,
- Float:p_s_y,
- Float:p_s_z,
- Float:p_s_a,
- p_s_interior,
- p_s_world,
- p_s_skin
- }
- new skindt[MAX_PLAYERS][p_s_data];
- public OnFilterScriptInit()
- {
- if(!dini_Exists("skins.ini"))
- dini_Create("skins.ini");
- printf("Filterscript de selecao de skins by Flavio Toribio carregado.");
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- if(!strcmp(cmdtext, "/skin", true))
- {
- if(!inskin[playerid])
- {
- GetPlayerPos(playerid, skindt[playerid][p_s_x], skindt[playerid][p_s_y], skindt[playerid][p_s_z]);
- GetPlayerFacingAngle(playerid, skindt[playerid][p_s_a]);
- skindt[playerid][p_s_interior] = GetPlayerInterior(playerid);
- skindt[playerid][p_s_world] = GetPlayerVirtualWorld(playerid);
- skindt[playerid][p_s_skin] = GetPlayerSkin(playerid);
- cuskin[playerid] = GetPlayerSkin(playerid);
- SetPlayerInterior(playerid, 14);
- SetPlayerPos(playerid, 258.5, -41.4, 1002.0);
- SetPlayerFacingAngle(playerid, -270.0);
- SetPlayerCameraPos(playerid, 256.1, -43.0, 1004.0);
- SetPlayerCameraLookAt(playerid, 258.5, -41.4, 1002.0);
- TogglePlayerControllable(playerid, 0);
- SetPlayerVirtualWorld(playerid, playerid + 56);
- inskin[playerid] = 1;
- SendClientMessage(playerid, 0xFFF000AA, "Escolha de skin:");
- #if SKIN_FREE == true
- SendClientMessage(playerid, 0xFFFFFFAA, "Pressione as setas para alternar entre as skins. Use SHIFT (Tecla Pular) para obter a skin");
- SendClientMessage(playerid, 0xFFFFFFAA, "Ou ENTER (Etrar Veículo) para sair.");
- #else
- SendClientMessage(playerid, 0xFFFFFFAA, "Pressione as setas para alternar entre as skins. Use SHIFT (Tecla Pular) para comprar a skin");
- SendClientMessage(playerid, 0xFFFFFFAA, "Ou ENTER (Etrar Veículo) para sair. Skins masculinas: $" #MALE_SKIN_PRICE ", femininas: $" #FEMALE_SKIN_PRICE);
- #endif
- SendClientMessage(playerid, 0xFFFFFFAA, "Caso você queira voltar a nascer com a skin normal, use /skinnormal");
- } else {
- SendClientMessage(playerid, 0xFF0000AA, "Calma, você já está na seleção de skins.");
- }
- return 1;
- }
- if(!strcmp(cmdtext, "/skinnormal", true))
- {
- new pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pname, sizeof pname);
- if(dini_Isset("skins.ini", pname))
- {
- dini_Unset("skins.ini", pname);
- SendClientMessage(playerid, 0xFFF000AA, "Skin voltada ao normal.");
- SpawnPlayer(playerid);
- } else {
- SendClientMessage(playerid, 0xFF0000AA, "Você já está com a skin normal.");
- }
- }
- return 0;
- }
- public OnPlayerUpdate(playerid)
- {
- if(inskin[playerid])
- {
- new keys, updown, leftright, string[128];
- GetPlayerKeys(playerid, keys, updown, leftright);
- if(leftright == KEY_RIGHT)
- {
- cuskin[playerid] = cuskin[playerid] == 299 ? 0 : cuskin[playerid] + 1;
- while(IsInvalidSkin(cuskin[playerid])) cuskin[playerid]++;
- }
- if(leftright == KEY_LEFT)
- {
- cuskin[playerid] = cuskin[playerid] == 0 ? 299 : cuskin[playerid] - 1;
- while(IsInvalidSkin(cuskin[playerid])) cuskin[playerid]--;
- }
- if(ltskin[playerid] != cuskin[playerid]) SetPlayerSkin(playerid, cuskin[playerid]);
- format(string, sizeof string, "~n~~n~~n~~n~~n~~n~~n~~w~Skin: %3d", cuskin[playerid]);
- GameTextForPlayer(playerid, string, 2000, 3);
- ltskin[playerid] = cuskin[playerid];
- if(keys == KEY_JUMP)
- {
- #if SKIN_FREE == false
- if((IsSkinFemale(cuskin[playerid]) && GetPlayerMoney(playerid) < FEMALE_SKIN_PRICE) ||
- (!IsSkinFemale(cuskin[playerid]) && GetPlayerMoney(playerid) < MALE_SKIN_PRICE))
- {
- SendClientMessage(playerid, 0xFF0000AA, "Você não tem dinheiro suficiente! Skin masculino: $" #MALE_SKIN_PRICE ", feminina: $" #FEMALE_SKIN_PRICE);
- SendClientMessage(playerid, 0xFFF000AA, "Pressione ENTER para sair da escolha de skin.");
- return 1;
- }
- GivePlayerMoney(playerid, ((IsSkinFemale(cuskin[playerid])) ? (-FEMALE_SKIN_PRICE) : (-MALE_SKIN_PRICE)));
- #endif
- TogglePlayerControllable(playerid, 1);
- SetCameraBehindPlayer(playerid);
- SetPlayerInterior(playerid, 0);
- SetPlayerVirtualWorld(playerid, skindt[playerid][p_s_world]);
- new pname[MAX_PLAYER_NAME];
- GetPlayerName(playerid, pname, sizeof pname);
- dini_IntSet("skins.ini", pname, cuskin[playerid]);
- SpawnPlayer(playerid);
- #if SKIN_FREE == true
- SendClientMessage(playerid, 0x000FFFAA, "Skin selecionada. Agora você sempre nascerá com ela.");
- #else
- format(string, sizeof string, "Você comprou sua skin por $%d, agora você sempre nascerá com ela.", IsSkinFemale(cuskin[playerid]) ? FEMALE_SKIN_PRICE : MALE_SKIN_PRICE);
- SendClientMessage(playerid, 0x000FFFAA, string);
- #endif
- inskin[playerid] = 0;
- }
- else if(keys == KEY_SECONDARY_ATTACK)
- {
- SetPlayerPos(playerid, skindt[playerid][p_s_x], skindt[playerid][p_s_y], skindt[playerid][p_s_z]);
- SetPlayerFacingAngle(playerid, skindt[playerid][p_s_a]);
- SetPlayerInterior(playerid, skindt[playerid][p_s_interior]);
- SetPlayerVirtualWorld(playerid, skindt[playerid][p_s_world]);
- SetPlayerSkin(playerid, skindt[playerid][p_s_skin]);
- TogglePlayerControllable(playerid, 1);
- SetCameraBehindPlayer(playerid);
- ZerarSkinSelection(playerid);
- SendClientMessage(playerid, 0xFFF000AA, "Escolha de skin cancelada.");
- }
- }
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- new pname[MAX_PLAYER_NAME];
- ZerarSkinSelection(playerid);
- GetPlayerName(playerid, pname, sizeof pname);
- if(dini_Isset("skins.ini", pname))
- SetPlayerSkin(playerid, dini_Int("skins.ini", pname));
- return 1;
- }
- public OnPlayerDisconnect(playerid, reason)
- {
- ZerarSkinSelection(playerid);
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason)
- {
- ZerarSkinSelection(playerid);
- return 1;
- }
- stock bool:IsSkinFemale(skinid)
- {
- static skins[] = {
- 9, 10, 11, 12, 13, 31, 39, 40, 41, 54,
- 55, 56, 63, 64, 69, 75, 76, 77, 85, 86,
- 87, 88, 89, 90, 92, 93, 129, 130, 131,
- 138, 140, 141, 145, 148, 150, 151, 152,
- 157, 169, 172, 178, 190, 191, 192, 193,
- 194, 195, 196, 197, 198, 199, 201, 205,
- 207, 211, 214, 215, 216, 218, 219, 224,
- 225, 226, 231, 232, 233, 237, 238, 243,
- 244, 245, 246, 251, 256, 257, 263, 298
- };
- for(new i = 0; i < sizeof skins; i++)
- if(skinid == skins[i])
- return true;
- return false;
- }
- stock bool:IsInvalidSkin(skinid)
- {
- static skins[] = {
- 3, 4, 5, 6, 8, 42, 65, 74,
- 86, 119, 149, 208, 273, 289
- };
- for(new i = 0; i < sizeof skins; i++)
- if(skinid == skins[i])
- return true;
- return false;
- }
Add Comment
Please, Sign In to add comment