PDA

View Full Version : [DUV] Quando morre, escolher skin de novo '-'


Xeretta
11/11/2009, 07:14 PM
Olá povo, meu GM é de RPG, não é GF, não sei qual suas origens, só sei que me deram ele, e eu editei.
É o seguinte, no 0.3, não é com todos os players que acontece isso, quando morre, aparece aquela tela para escolher o skin, o player fica congelado aonde ele está setado para nascer (em sua casa), e aparece lá pra clicar, (<< , >> ou SPAWN), alguém sabe porque dá isso ? Ainda não mexi com as funções do 0.3, então não tenho noção do que pode ser '-' OnPlayerRequestClass ? OnPlayerSpawn ? OnPlayerDeath ? Help ._.
O certo era nascer no hospital, mas não nasce '-'

Toribio
11/11/2009, 07:19 PM
Tenta algo como isso no OnPlayerDeath:

SetSpawnInfo(playerid, 0, GetPlayerSkin(playerid), x, y, z, a, 0, 0, 0, 0, 0, 0);

Onde "x", "y", "z" são as coordenadas do hospital, e "a" é o ângulo em que o jogador nasce, assim quando ele morrer, o próximo spawn dele é suposto a ser esse.

Xeretta
11/11/2009, 07:23 PM
Tem isso aí, mas estão assim

if(GetClosestHospital(playerid) == 0){
SetSpawnInfo(playerid, 1, udb_getSkin(PlayerName(playerid)), -2651.6501, 634.4510, 14.4531, 180.0000, 0, 0, 0, 0, 0, 0);
}
if(GetClosestHospital(playerid) == 1){
SetSpawnInfo(playerid,1,udb_getSkin(PlayerName(pla yerid)),1173.5842,-1324.5615,15.1953,278.4624,0,0,0,0,0,0);
}
if(GetClosestHospital(playerid) == 2){
SetSpawnInfo(playerid,1,udb_getSkin(PlayerName(pla yerid)),2031.9415,-1404.3578,17.2614,165.8180,0,0,0,0,0,0);
}
if(GetClosestHospital(playerid) == 3){
SetSpawnInfo(playerid,1,udb_getSkin(PlayerName(pla yerid)),1582.5615,1768.7921,10.8203,93.7454,0,0,0, 0,0,0);
}


Devo tirar esse if ?

[VGS]Protioso
11/11/2009, 07:29 PM
Manda o OnPlayerDeath inteiro, pode ter alguma coisa nele que impeça que chegue nesta função aí (talvez um return).

Xeretta
11/11/2009, 07:30 PM
Okay
Ele é todo bagunçado ._.

Look: http://pastebin.com/m57e83d05

Toribio
11/11/2009, 07:36 PM
Agora passa o seu GetClosestHospital, acho que ai, saberemos o erro.

Xeretta
11/11/2009, 07:39 PM
public GetClosestHospital(playerid)
{
if(!IsPlayerConnected(playerid)){
return -1;
}
new Float:prevdist = 100000.000;
new prevhosp;
for(new hospid = 0; hospid < 4; hospid++){
new Float:dist;
if(hospid == 0){
dist = GetPlayerDistanceToPoint(playerid,-2651.6501,634.1177);
}
else if(hospid == 1){
dist = GetPlayerDistanceToPoint(playerid,1173.5842,-1324.5615);
}
else if(hospid == 2){
dist = GetPlayerDistanceToPoint(playerid,2031.9415,-1404.3578);
}
else if(hospid == 3){
dist = GetPlayerDistanceToPoint(playerid,1582.5615,1768.7 921);
}
if((dist < prevdist)){
prevdist = dist;
prevhosp = hospid;
}
}
return prevhosp;
}

[VGS]Protioso
11/11/2009, 07:48 PM
Manda o OnPlayerSpawn e OnPlayerRequestClass (este último mais importante)...

Toribio
11/11/2009, 07:51 PM
Se não haver nada no OnPlaerSpawn que esteja interferindo o SetSpawnInfo, então o problema são as coordenadas, caso não seja, tenta isso:

new Float:hospital[4][2] =
{
{-2651.650, 634.1177},
{1173.5842, -1324.5615},
{2031.9415, -1404.3578},
{1582.5615, 1768.7921}
};

public GetClosestHospital(playerid)
{
if(!IsPlayerConnected(playerid))
{
return -1;
}
new Float:prevdist = 0x7F800000, prevhosp;
for(new hospid = 0; hospid < sizeof hospital; hospid++)
{
new Float:dist;
dist = GetPlayerDistanceToPoint(playerid, hospital[hospid][0], hospital[hospid][1]);
if(dist < prevdist)
{
prevdist = dist;
prevhosp = hospid;
}
}
return prevhosp;
}

Xeretta
11/11/2009, 07:52 PM
Ok, vou tentar, depois posto aqui o resultado, Thanks

[VGS]Protioso
11/11/2009, 08:12 PM
Tenho quase certeza que não seja isso, eu atualizei o post acima com outro public para você mandar, que eu acho que não estão funcionando como você quer.

Xeretta
11/11/2009, 08:15 PM
Do jeito que o Toribio disse, funcionou (:
Valeu :D

[VGS]Protioso
11/11/2009, 08:26 PM
Estranho um erro que te envia pra seleção de skins ser consertado com mudança nas posições.

Xeretta
11/11/2009, 08:41 PM
Deu certo o caramba '-'
Look:
http://pastebin.com/m377597f9
http://pastebin.com/m6005f859

[VGS]Protioso
11/11/2009, 08:45 PM
http://pastebin.com/m7e074bf0
OnPlayerSpawn não estava retornando a valor algum.

Xeretta
11/11/2009, 08:57 PM
Estranho, no 0.2X funcionava normal xD
Vou testar, vlw (:

Adriano499
19/07/2010, 12:45 AM
aperta f4 e /kill