[projeto] porta malas
5 participantes
Página 1 de 1
[projeto] porta malas
bem nao sei se to na area certa mas se n tiver pode tranca o topico ou mover pra area correta
este e um script de porta malas bem legal ele serve para guardar colete e armas no porta mala do seu carro eu testei e nao axei nenhum bug...pois bem ele tem um problema qualquer um pode chega no seu carro e retira as armas q estiveren nele
código
créditos:Denver
editado e traduzido(algumas partes) por min
aceito criticas
este e um script de porta malas bem legal ele serve para guardar colete e armas no porta mala do seu carro eu testei e nao axei nenhum bug...pois bem ele tem um problema qualquer um pode chega no seu carro e retira as armas q estiveren nele
código
- Spoiler:
- #include
#if defined MAX_VEHICLES
#undef MAX_VEHICLES
#define MAX_VEHICLES 700 //troca pelo teu numero max. de carro
#endif
#if defined MAX_PLAYERS
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
#endif
#define GREY 0xAFAFAFAA
#define WHITE 0xFFFFFFAA
#define CHAT1 0xF9B7FFAA
#define LIGHTBLUE 0xA9C4E4FF
#define BLUE 0x63AFF00A
#define RED 0x9CDE7180
#define MAX_TRUNK_SLOTS 5
new vehTrunkCounter[MAX_VEHICLES] = 1;
new vehTrunk[MAX_VEHICLES][MAX_TRUNK_SLOTS];
new vehTrunkAmmo[MAX_VEHICLES][MAX_TRUNK_SLOTS];
new Float:vehTrunkArmour[MAX_VEHICLES];
new BigEar[MAX_PLAYERS];
new ScriptWeaponsUpdated[MAX_PLAYERS];
new ScriptWeapons[MAX_PLAYERS][13];
public OnPlayerCommandText(playerid, cmdtext[])
{
new cmd[128], idx, string[128];
cmd = strtok(cmdtext, idx);
if(!strcmp(cmd, "/portamalas", true))
{
new x_nr[64], pname[20];
x_nr = strtok(cmdtext, idx);
GetPlayerName(playerid, pname, sizeof(pname));
if(!strlen(x_nr))
{
SendClientMessage(playerid, WHITE, "DICA: /portamalas [Opção]");
SendClientMessage(playerid, WHITE, "Opções Disponíveis: info, colocararma, pegararma, colocarcolete, pegarcolete");
return 1;
}
if(strcmp(x_nr,"info",true) == 0)
{
new counter = 0;
new result;
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, RED, "Nenhum carro com o porta malas perto de você");
}
case 1:
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, RED, " Você não pode abrir o porta malas,enquanto você está dentro do carro");
return 1;
}
/*if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 440 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 456 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 498)
{
SendClientMessage(playerid, RED, "ente veiculo não tem porta-malas!");
return 1;
}*/
SendClientMessage(playerid, LIGHTBLUE, "|_______ Porta-Malas _______|");
for(new slot = 1; slot != MAX_TRUNK_SLOTS; slot++)
{
new gunname[100];
if(vehTrunk[result][slot] != 0)
{
GetWeaponName(vehTrunk[result][slot], gunname, sizeof(gunname));
format(string, sizeof(string), "| Slot %i: %s (Munição: %i)", slot, gunname, vehTrunkAmmo[result][slot]);
SendClientMessage(playerid, WHITE, string);
}
else
{
format(string, sizeof(string), "| Slot %i: Livre (Munição: N/A)", slot);
SendClientMessage(playerid, WHITE, string);
}
}
format(string, sizeof(string), "| Colete: %f%", vehTrunkArmour[result]);
SendClientMessage(playerid, GREY, string);
format(string, sizeof(string), "* %s abre o porta-malas e checa o que há dentro.", pname);
ProxDetector(30.0, playerid, string, CHAT1, CHAT1, CHAT1, CHAT1, CHAT1);
return 1;
}
default:
{
SendClientMessage(playerid, RED, "Foi encontrado mais de um carro nessa área.");
return 1;
}
}
return 1;
}
else if(!strcmp(x_nr,"colocararma",true))
{
new counter = 0;
new result;
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, RED, "Nenhum carro com o Porta-Malas perto de você");
}
case 1:
{
if(vehTrunkCounter[result] != (MAX_TRUNK_SLOTS-1))
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, RED, "Você não pode abrir o Porta-Malas, enquanto você está dentro do carro");
return 1;
}
/*if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 440 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 456 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 498)
{
SendClientMessage(playerid, RED, "este veiculo não tem porta-mala!");
return 1;
}*/
new buffer[512];
new gunname[100];
new gunID = GetPlayerWeapon(playerid);
new gunAmmo = GetPlayerAmmo(playerid);
if(gunID != 0 && gunAmmo != 0)
{
GetWeaponName(gunID, gunname, sizeof(gunname));
vehTrunkCounter[result]++;
vehTrunk[result][vehTrunkCounter[result]] = gunID;
vehTrunkAmmo[result][vehTrunkCounter[result]] = gunAmmo;
format(buffer, sizeof(buffer), "Você colocou um(a) %s (Munição: %i) no porta-malas do carro.", gunname, gunAmmo);
SendClientMessage(playerid, BLUE, buffer);
RemovePlayerWeapon(playerid, gunID);
format(string, sizeof(string), "* %s Abre o porta-mala do carro e coloca uma arma lá.", pname);
ProxDetector(30.0, playerid, string, CHAT1, CHAT1, CHAT1, CHAT1, CHAT1);
return 1;
}
}
else
{
SendClientMessage(playerid, RED, "porta-mala do carro está cheio");
return 1;
}
}
default:
{
SendClientMessage(playerid, RED, "Foi encontrado mais de um carro nessa área.");
return 1;
}
}
return 1;
}
else if(strcmp(x_nr,"pegararma",true) == 0)
{
new counter = 0;
new result;
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, RED, "Nenhum carro com porta-malas perto de você!");
return 1;
}
case 1:
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, RED, " Você não pode abrir o porta-malas enquanto estiver dentro do carro.");
return 1;
}
/*if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 440 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 456 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 498)
{
SendClientMessage(playerid, RED, "este veiculo não tem porta-mala!");
return 1;
}*/
if(vehTrunkCounter[result] != 0)
{
new buffer[512];
new gunName[100];
SafeGivePlayerWeapon(playerid, vehTrunk[result][vehTrunkCounter[result]], vehTrunkAmmo[result][vehTrunkCounter[result]]);
GetWeaponName(vehTrunk[result][vehTrunkCounter[result]], gunName, sizeof(gunName));
format(buffer, sizeof(buffer), "Voce retirou um(a) %s (Ammo: %i) do veículo.", gunName, vehTrunkAmmo[result][vehTrunkCounter[result]]);
SendClientMessage(playerid, BLUE, buffer);
vehTrunk[result][vehTrunkCounter[result]] = '\0';
vehTrunkAmmo[result][vehTrunkCounter[result]] = '\0';
vehTrunkCounter[result]--;
format(string, sizeof(string), "* %s Abre A mala do carro e Retirar uma arma.", pname);
ProxDetector(30.0, playerid, string, CHAT1, CHAT1, CHAT1, CHAT1, CHAT1);
return 1;
}
else
{
SendClientMessage(playerid, GREY, "O porta-mala está vazio! ");
return 1;
}
}
default:
{
SendClientMessage(playerid, RED, "Foi encontrado mais de um carro nessa área.");
return 1;
}
}
return 1;
}
else if(strcmp(x_nr,"colocarcolete",true) == 0)
{
new counter = 0;
new result;
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, RED, "Nenhum carro com o porta-malas perto de você");
return 1;
}
case 1:
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, RED, "Você não pode abrir o porta-malas, enquanto você estiver no carro");
return 1;
}
/*if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 440 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 456 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 498)
{
SendClientMessage(playerid, RED, "este veiculo não tem porta-mala!");
return 1;
}*/
new Float:plyArmour;
GetPlayerArmour(playerid, plyArmour);
if(plyArmour != 0)
{
SafeSetPlayerArmour(playerid, 0);
vehTrunkArmour[result] = plyArmour;
format(string, sizeof(string), "* %s Retira seu colete do corpo e coloca no porta-mala.", pname);
ProxDetector(30.0, playerid, string, CHAT1, CHAT1, CHAT1, CHAT1, CHAT1);
return 1;
}
else
{
SendClientMessage(playerid, RED, " Você não tem Colete à prova de bala");
return 1;
}
}
default:
{
SendClientMessage(playerid, RED, "Foi encontrado mais de um carro nessa área.");
return 1;
}
}
return 1;
}
else if(strcmp(x_nr,"pegarcolete",true) == 0)
{
new counter = 0;
new result;
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, RED, "Nenhum carro com o porta-malas perto de você");
return 1;
}
case 1:
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, RED, "Você não pode abrir o Porta-Malas, enquanto você está no carro");
return 1;
}
/*if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 440 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 456 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 498)
{
SendClientMessage(playerid, RED, "este veiculo não tem porta-malas!");
return 1;
}*/
if(vehTrunkArmour[result] != 0)
{
SafeSetPlayerArmour(playerid, vehTrunkArmour[result]);
vehTrunkArmour[result] = 0;
format(string, sizeof(string), "* %s Retira o Coletes à prova de bala do porta-malas.", pname);
ProxDetector(30.0, playerid, string, CHAT1, CHAT1, CHAT1, CHAT1, CHAT1);
return 1;
}
else
{
SendClientMessage(playerid, RED, "Não há Colete à prova de bala no porta-mala! ");
return 1;
}
}
default:
{
SendClientMessage(playerid, RED, "Foi encontrado mais de um carro nesse local.");
return 1;
}
}
return 1;
}
else if(strcmp(x_nr,"olhar",true) == 0)
{
if(IsPlayerAdmin(playerid))
{
new counter = 0;
new result;
for(new i; i != MAX_VEHICLES; i++)
{
new dist = CheckPlayerDistanceToVehicle(3.5, playerid, i);
if(dist)
{
result = i;
counter++;
}
}
switch(counter)
{
case 0:
{
SendClientMessage(playerid, RED, "Nenhum carro com o Porta-Malas perto de você");
}
case 1:
{
if(IsPlayerInAnyVehicle(playerid))
{
SendClientMessage(playerid, RED, "Você não pode abrir o porta-malas,enquanto você está no carro");
return 1;
}
/*if(GetVehicleModel(GetPlayerVehicleID(playerid)) != 440 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 456 || GetVehicleModel(GetPlayerVehicleID(playerid)) != 498)
{
SendClientMessage(playerid, RED, "este veiculo não tem porta-malas!");
return 1;
}*/
SendClientMessage(playerid, LIGHTBLUE, "|_______ Porta-Malas _______|");
for(new slot = 1; slot != MAX_TRUNK_SLOTS; slot++)
{
new gunname[100];
if(vehTrunk[result][slot] != 0)
{
GetWeaponName(vehTrunk[result][slot], gunname, sizeof(gunname));
format(string, sizeof(string), "| Slot %i: %s (Munição: %i)", slot, gunname, vehTrunkAmmo[result][slot]);
SendClientMessage(playerid, WHITE, string);
}
else
{
format(string, sizeof(string), "| Slot %i: Livre (Munição: N/A)", slot);
SendClientMessage(playerid, WHITE, string);
}
}
format(string, sizeof(string), "| Colete: %f%", vehTrunkArmour[result]);
SendClientMessage(playerid, WHITE, string);
format(string, sizeof(string), "* %s abre o porta-malas e checa o que há dentro.", pname);
ProxDetector(30.0, playerid, string, CHAT1, CHAT1, CHAT1, CHAT1, CHAT1);
return 1;
}
default:
{
SendClientMessage(playerid, RED, "Foi encontrado mais de um carro na área.");
return 1;
}
}
}
else
{
SendClientMessage(playerid, GREY, "Você não é um administrador!");
return 1;
}
return 1;
}
return 1;
}
return 0;
}
strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;
}
stock CheckPlayerDistanceToVehicle(Float:radi, playerid, vehicleid)
{
if(IsPlayerConnected(playerid))
{
new Float:PX,Float:PY,Float:PZ,Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,PX,PY,PZ);
GetVehiclePos(vehicleid, X,Y,Z);
new Float:Distance = (X-PX)*(X-PX)+(Y-PY)*(Y-PY)+(Z-PZ)*(Z-PZ);
if(Distance <= radi*radi)
{
return 1;
}
}
return 0;
}
forward ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5);
public ProxDetector(Float:radi, playerid, string[],col1,col2,col3,col4,col5)
{
if(IsPlayerConnected(playerid))
{
new Float:posx, Float:posy, Float:posz;
new Float:oldposx, Float:oldposy, Float:oldposz;
new Float:tempposx, Float:tempposy, Float:tempposz;
GetPlayerPos(playerid, oldposx, oldposy, oldposz);
//radi = 2.0; //Trigger Radius
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i) && (GetPlayerVirtualWorld(playerid) == GetPlayerVirtualWorld(i)))
{
if(!BigEar[i])
{
GetPlayerPos(i, posx, posy, posz);
tempposx = (oldposx -posx);
tempposy = (oldposy -posy);
tempposz = (oldposz -posz);
//printf("DEBUG: X:%f Y:%f Z:%f",posx,posy,posz);
if (((tempposx < radi/16) && (tempposx > -radi/16)) && ((tempposy < radi/16) && (tempposy > -radi/16)) && ((tempposz < radi/16) && (tempposz > -radi/16)))
{
SendClientMessage(i, col1, string);
}
else if (((tempposx < radi/ && (tempposx > -radi/) && ((tempposy < radi/ && (tempposy > -radi/) && ((tempposz < radi/ && (tempposz > -radi/))
{
SendClientMessage(i, col2, string);
}
else if (((tempposx < radi/4) && (tempposx > -radi/4)) && ((tempposy < radi/4) && (tempposy > -radi/4)) && ((tempposz < radi/4) && (tempposz > -radi/4)))
{
SendClientMessage(i, col3, string);
}
else if (((tempposx < radi/2) && (tempposx > -radi/2)) && ((tempposy < radi/2) && (tempposy > -radi/2)) && ((tempposz < radi/2) && (tempposz > -radi/2)))
{
SendClientMessage(i, col4, string);
}
else if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
{
SendClientMessage(i, col5, string);
}
}
else
{
SendClientMessage(i, col1, string);
}
}
}
}//not connected
return 1;
}
forward RemovePlayerWeapon(playerid, weaponid);
public RemovePlayerWeapon(playerid, weaponid)
{
new plyWeapons[12] = 0;
new plyAmmo[12] = 0;
for(new slot = 0; slot != 12; slot++)
{
new wep, ammo;
GetPlayerWeaponData(playerid, slot, wep, ammo);
if(wep != weaponid && ammo != 0)
{
GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
}
}
SafeResetPlayerWeapons(playerid);
for(new slot = 0; slot != 12; slot++)
{
if(plyAmmo[slot] != 0)
{
SafeGivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
}
}
return 1;
}
forward SafeGivePlayerWeapon(plyid, weaponid, ammo);
public SafeGivePlayerWeapon(plyid, weaponid, ammo)
{
new curHour, curMinute, curSecond;
gettime(curHour, curMinute, curSecond);
ScriptWeaponsUpdated[plyid] = 1;
GivePlayerWeapon(plyid, weaponid, ammo);
UpdateWeaponSlots(plyid);
return 1;
}
forward SafeSetPlayerArmour(playerid, Float:armour);
public SafeSetPlayerArmour(playerid, Float:armour)
{
SetPlayerArmour(playerid, armour);
return 1;
}
forward SafeResetPlayerWeapons(plyid);
public SafeResetPlayerWeapons(plyid)
{
new curHour, curMinute, curSecond;
gettime(curHour, curMinute, curSecond);
ScriptWeaponsUpdated[plyid] = 1;
ResetPlayerWeapons(plyid);
UpdateWeaponSlots(plyid);
return 1;
}
forward split(const strsrc[], strdest[][], delimiter);
public split(const strsrc[], strdest[][], delimiter)
{
new i, li;
new aNum;
new len;
while(i <= strlen(strsrc)){
if(strsrc[i]==delimiter || i==strlen(strsrc)){
len = strmid(strdest[aNum], strsrc, li, i, 128);
strdest[aNum][len] = 0;
li = i+1;
aNum++;
}
i++;
}
return 1;
}
forward UpdateWeaponSlots(plyid);
public UpdateWeaponSlots(plyid)
{
new weaponid, ammo;
for (new i=0; i<13; i++)
{
GetPlayerWeaponData(plyid, i, weaponid, ammo);
ScriptWeapons[plyid][i] = weaponid;
}
ScriptWeaponsUpdated[plyid] = 0;
return 1;
}
créditos:Denver
editado e traduzido(algumas partes) por min
aceito criticas
Última edição por Vinícius_tch em Sex Jul 29, 2011 3:34 am, editado 1 vez(es)
Convidad- Convidado
Re: [projeto] porta malas
Não entendo nada de codar e esse tipo de coisa , mas acho que Projeto seria com J
Altere o titulo para
[Projeto] Porta Malas
Altere o titulo para
[Projeto] Porta Malas
Convidad- Convidado
Resposta:
Eu também acho que deveria ter este sistema de por armas, colete, drogas, porque no server que eu jogava antigamente, dava pra fazer isso, só que se a policia pegue no carro, mesme que o carro não seja seu, você leva multa. Tente fazer assim: um comando /v trancarportamalas e /v abrirportamalas!
Até mais
Até mais
Última edição por Doomage em Sex Jul 29, 2011 9:43 am, editado 2 vez(es)
Convidad- Convidado
Re: [projeto] porta malas
@Vinicius.
Não é só postar o codigo assim não mano.
não é só copiar o código e por no GM :X
tem que ter um 'certo' estudo se é isso mesmo, se vai dar bug ou não.
e se fosse pra colocar aposto que dafe ja teria procurado esse codigo na net e editado
pq ja teve milhares de sugestões como essa !
Não é só postar o codigo assim não mano.
não é só copiar o código e por no GM :X
tem que ter um 'certo' estudo se é isso mesmo, se vai dar bug ou não.
e se fosse pra colocar aposto que dafe ja teria procurado esse codigo na net e editado
pq ja teve milhares de sugestões como essa !
Re: [projeto] porta malas
»ɯɛȶσɳ« escreveu:@Vinicius.
Não é só postar o codigo assim não mano.
não é só copiar o código e por no GM :X
tem que ter um 'certo' estudo se é isso mesmo, se vai dar bug ou não.
e se fosse pra colocar aposto que dafe ja teria procurado esse codigo na net e editado
pq ja teve milhares de sugestões como essa !
Ele mesmo já teria feito LOL
Matheus @Locotes13- Diego Mendez
- Premiação : : 9 : 0 : 0
Nick no BNL : Matheus Outlawz - BANIDO
Telefone no BNL : 10770
Nível : 25
Profissão :
Mensagens : 1043
Reputação : 27
Idade : 29
Tolerância :
Permanente :
Status :
Re: [projeto] porta malas
Mappers, legal este teu mapa ai, cade o tesouro?
Halex #[CFC]- Carl Johnson
- Premiação : : 0 : 1 : 0
Nick no BNL : Halex_Rohdden
Telefone no BNL : 1818
Nível : 24
Mensagens : 3556
Reputação : 52
Idade : 29
Tolerância :
Permanente :
Status :
Re: [projeto] porta malas
guardar colete nao seria legal , mais arma seria sim '-'
@off
xun vc ta usando batom nessa foto sua ? xD
@off
xun vc ta usando batom nessa foto sua ? xD
Re: [projeto] porta malas
Dafe e bruno ja colocaram e ja retiraram isso por alguns bugs que outras pessoas estavam aproveitando , sem chance.
Convidad- Convidado
Re: [projeto] porta malas
Bem,o codigo talvez possa dar errado no GM pois tem que alterar e pá. . . mais nao é assim facil,o cmd de porta malas é ridiculo de fazer,mais falta vontade, D: aposto que ajudaria e muito no sv,o dafe ja botou nas casas,agora falta nos carros e pá.
Pedro Aballus- Mike Toreno
- Premiação : : 2 : 3 : 0
Nick no BNL : DSTV -
Telefone no BNL : 0
Nível : 0
Profissão :
Mensagens : 1918
Reputação : 59
Tolerância :
Permanente :
Status :
Re: [projeto] porta malas
Dafe acho que vai bota nos carros, ele ja boto no porta-luva para dinheiro, nas casas para armas, agora ele deve bota no porta-malas para armas e drogas tbm.
Seria bom se tivese.
Seria bom se tivese.
Convidad- Convidado
Tópicos semelhantes
» [BUG] Porta Malas
» [Crítica] Porta-malas.
» [Projeto] Barzinho -rs
» Projeto - Condominio VIP LS
» [Projeto]HQ Piratas
» [Crítica] Porta-malas.
» [Projeto] Barzinho -rs
» Projeto - Condominio VIP LS
» [Projeto]HQ Piratas
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|