PDA

View Full Version : [PEDIDO] Ajuda com comando / pickup


Xeretta
02/12/2009, 08:21 PM
Olá galera (:
Tenho um server de RPG, aquele que depende de ADM pra tudo, certo.
Tem a função para setar o player na casa e criar um pickup onde ele foi setado, esses pickups salvam, desse jeito:
2632.969482, 2350.982421, 10.812772, //[BKs]Xeretta[VL]
Aqui são as coordenadas E aqui o nick
Queria saber e queria que me ajudassem a fazer junto com o pickup, aparecer um texto com o nome do dono da casa/dono do pickup, texto 3D, com a nova função do 0.3, igual aquele FilterScript de propriedades do game mode "grandlarc":

http://img7.imageshack.us/img7/5856/imagemdl.png

Sei que é chato pedir tudo feito, mas não tenho ideia de como começar.
Meu comando é assim:
if(strcmp(cmd, "/vendercasa", true) == 0) {
if(Profissao[playerid] == AJUDANTE || RconLogged2[playerid] == 1){
new plid;
new tmp[256];
new nome[MAX_PLAYER_NAME];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_RED, "/vendercasa [id]");
return 1;
}
plid = strval(tmp);
GetPlayerName(plid,nome,MAX_PLAYER_NAME);
if (udb_Exists(nome)) {
new Float:X, Float:Y, Float:Z;
new File:temp;
new string[256];
GetPlayerPos(playerid, X, Y, Z);
udb_setPosition(nome, X, Y, Z);
udb_setAng(nome, 0);
SendClientMessage(playerid, COLOR_GREEN, "Casa vendida");
printf("%s acaba de vender um imóvel para %s",PlayerName(playerid),nome);
format(string, sizeof(string), "%f, %f, %f, //%s\r\n", X, Y, Z, nome);
temp = fopen("pickups.rpg", io_append);
fwrite(temp, string);
fclose(temp);
AddStaticPickup(1273,1,X,Y,Z);
LogarPlayer(plid);
return 1;
} else {
SendClientMessage(playerid,COLOR_RED,"ERRO: ID inválido, ou jogador não cadastrado.");
return 1;
}
}
else{
SendClientMessage(playerid, COLOR_RED, "Você não tem permissão!");
return 1;
}
}

OnGameModeInit
LoadPickups("pickups.rpg");


stock LoadPickups(pattern[])
{
new tmp[256],File:temp,Float:X,Float:Y,Float:Z;
if(!fexist(pattern)){
dini_Create(pattern);
return 1;
}
new string[256],index;
temp = fopen(pattern, io_readwrite);
while(fread(temp, tmp, sizeof(tmp), false)) {
index = 0;
X = Float:floatstr(strtok(tmp, index));
Y = Float:floatstr(strtok(tmp, index));
Z = Float:floatstr(strtok(tmp, index));
format(string, sizeof(string), "%f, %f, %f", X, Y, Z);
AddStaticPickup(1273, 1, Float:X, Float:Y, Float:Z);
}
fclose(temp);
return 1;
}

Alguém tem a boa vontade de tentar me ajudar ? .__________.

[VGS]Protioso
02/12/2009, 10:09 PM
Substitua as funções, não esqueça de alterar o valor de 'COR', que será a cor do texto da pickup.

Criando...

if(strcmp(cmd, "/vendercasa", true) == 0) {
if(Profissao[playerid] == AJUDANTE || RconLogged2[playerid] == 1){
new plid;
new tmp[256];
new nome[MAX_PLAYER_NAME];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) {
SendClientMessage(playerid, COLOR_RED, "/vendercasa [id]");
return 1;
}
plid = strval(tmp);
GetPlayerName(plid,nome,MAX_PLAYER_NAME);
if (udb_Exists(nome)) {
new Float:X, Float:Y, Float:Z;
new File:temp;
new string[256];
GetPlayerPos(playerid, X, Y, Z);
udb_setPosition(nome, X, Y, Z);
udb_setAng(nome, 0);
SendClientMessage(playerid, COLOR_GREEN, "Casa vendida");
printf("%s acaba de vender um imóvel para %s",PlayerName(playerid),nome);
format(string, sizeof(string), "%f, %f, %f, //%s\r\n", X, Y, Z, nome);
temp = fopen("pickups.rpg", io_append);
fwrite(temp, string);
fclose(temp);
AddStaticPickup(1273,1,X,Y,Z);
format(string, sizeof(string), "Casa de %s", PlayerName(plid));
Create3DTextLabel(string, COR, X, Y, Z+0.50, 25.0, 0);
LogarPlayer(plid);
return 1;
} else {
SendClientMessage(playerid,COLOR_RED,"ERRO: ID inválido, ou jogador não cadastrado.");
return 1;
}
}
else{
SendClientMessage(playerid, COLOR_RED, "Você não tem permissão!");
return 1;
}
}


Carregando...

stock LoadPickups(pattern[])
{
new tmp[256],File:temp,Float:X,Float:Y,Float:Z;
if(!fexist(pattern))
{
dini_Create(pattern);
return 1;
}
new string[256], index, dono[256], cpos; //função psf_SubstituirChar retorna 256
temp = fopen(pattern, io_readwrite);
while(fread(temp, tmp, sizeof(tmp), false))
{
index = 0;
X = Float:floatstr(psf_strtok(tmp, index));
Y = Float:floatstr(psf_strtok(tmp, index));
Z = Float:floatstr(psf_strtok(tmp, index));
cpos = psf_PosChar(tmp, "//", 1);
psf_CopiarStrL(dono, tmp, cpos+2, strlen(tmp));
dono = psf_SubstituirChar(dono, "\n", "");
dono = psf_SubstituirChar(dono, "\r", "");
AddStaticPickup(1273, 1, Float:X, Float:Y, Float:Z);
print(string);
Create3DTextLabel(string, COLOR_RED, X, Y, Z+0.50, 25.0, 0);
}
fclose(temp);
return 1;
}
// função correta...


Precisa do include PSF (http://forum.sa-mp.com/index.php?topic=132830.0).

Xeretta
02/12/2009, 10:49 PM
Nossa, valeu, vou testar *--*

Sem erros na compilação, pegou corretamente, seta o player, aparece ele como dono no texto em cima do pickup, mas depois que reinicia o servidor, aparece as coordenadas ao invés do nick, assim:
http://img189.imageshack.us/img189/7650/imagemftu.png

[VGS]Protioso
02/12/2009, 11:21 PM
Eu me distraí e coloquei outra função no lugar... Mas sussa, esse aqui deve funcionar:


stock LoadPickups(pattern[])
{
new tmp[256],File:temp,Float:X,Float:Y,Float:Z;
if(!fexist(pattern))
{
dini_Create(pattern);
return 1;
}
new string[256], index, dono[256], cpos; //função psf_SubstituirChar retorna 256
temp = fopen(pattern, io_readwrite);
while(fread(temp, tmp, sizeof(tmp), false))
{
index = 0;
X = Float:floatstr(psf_strtok(tmp, index));
Y = Float:floatstr(psf_strtok(tmp, index));
Z = Float:floatstr(psf_strtok(tmp, index));
cpos = psf_PosChar(tmp, "//", 1);
psf_CopiarStrL(dono, tmp, cpos+2, strlen(tmp));
dono = psf_SubstituirChar(dono, "\n", "");
dono = psf_SubstituirChar(dono, "\r", "");
AddStaticPickup(1273, 1, Float:X, Float:Y, Float:Z);
format(string, sizeof(string), "Casa de %s", dono);
Create3DTextLabel(string, COLOR_RED, X, Y, Z+0.50, 25.0, 0);
}
fclose(temp);
return 1;
}

Editei a bagaça...

Xeretta
02/12/2009, 11:26 PM
Agora não aparece o texto :x

[VGS]Protioso
02/12/2009, 11:29 PM
Aparece sim velho, copiou direito a função? Tenta de novo...

Xeretta
03/12/2009, 01:19 AM
Agora apareceu, devo ter feito alguma merda, valeu cara, valeu mesmo ._.

william de cezaro
02/02/2011, 05:53 AM
Muito bom mas eu tambem preciso de uma ajuda
eu queria que ficase com o id da casa
ex: casa ID 0 eu fiz quando eu crio a casa aparece o 3DTextLabel normal
mas quando eu relogo o servidor some o 3DTextLabel so fica o Pickup da casa
alguem pode me ajudar???
obrigado

[MTks]MaTheuS_
06/03/2011, 04:54 AM
Muito bom, mas eu tambem queria por interior, tipo:
Fica o pickup, o 3DTextLabel..
só que quando o player passa no pickup apareça uma mensagem para ele,
Para entrar na casa digite "xxx"
tipo : /vendercasa [ID] [INT]
Alguem ajuda eol? .-.

Strong_ADM
06/03/2011, 10:22 AM
OnPlayerPickUpPickup