[Ajuda] Bug no hospital
#1

Bom dia, seguinte quando o player morre e vai pro hospital hб uma pergunta se o mesmo deseja nascer na HQ ou no Hospital mesmo, porйm na maioria das vezes quando escolhe a HQ, apуs o tempo hospitalizado vocк realmente nasce na HQ, porйm volta pro hospital 1 segundo depois. Queria ou resolver isso, ou atй mesmo uma funзгo para impedir que volte. Segue abaixo o cуdigo do dialogo:
PHP код:
if(PlayerInfo[playerid][pHospital] == true)
        {
            
SetPlayerInterior(playerid10), SetPlayerVirtualWorld(playerid0);
            new 
camasrandom random(sizeof(CamasHospital));
            
SetPlayerPos(playeridCamasHospital[camasrandom][0], CamasHospital[camasrandom][1], CamasHospital[camasrandom][2]);
            
SetPlayerFacingAngle(playeridCamasHospital[camasrandom][3]), camaid[playerid] = camasrandom;
            
ApplyAnimation(playerid,"CRACK","crckidle2",4.1,0,1,1,1,0);
            
PlayerTextDrawSetString(playeridTextHospital[playerid], "---");
            
PlayerTextDrawShow(playeridTextHospital[playerid]);
            
ValorSairHosp[playerid] = customorte[playerid];
            if(
GetPlayerOrg(playerid) > 0)
            {
                new 
hstring[256];
                
format(hstringsizeof hstring"{FFFFFF}Deseja sua Alta no Hospital ou na sua HQ?\n   {2641FE}Custo Hospital : {FFFFFF}R${FF0000}-%d\n   {33AA33}Custo HQ : {FFFFFF}R${FF0000}-%d"ValorSairHosp[playerid], ValorSairHosp[playerid]*(10));
                
ShowPlayerDialog(playeriddialogidhospDIALOG_STYLE_MSGBOX"Alta"hstring"HQ""Hospital");
            }
            return 
true;
        } 
Reply
#2

De uma olhada em OnplayerDeath(...), deve ter um outro cуdigo la, para dar spawn novamente!
Reply
#3

Opa, entгo segue o cуdigo abaixo, sendo que ele nгo й sу isso, pois й gigante, mas se quiser eu posto inteiro:
Quote:

public OnPlayerDeath(playerid, killerid, reason)
{
totaldemortes[playerid]++;
if(totaldemortes[playerid] > 4)
{
new gstring[128];
format(gstring, sizeof gstring, "ANTI-CHEAT: %s[ID: %d] Foi Kickado por poder estar usando Flood Kill!", NomePlayer(playerid), playerid);
ABroadCast(COLOR_LIGHTRED,gstring, 1);
Kick(playerid);
return 1;
}
SetTimerEx("DesbugMorte", 1000, false, "i",playerid);
ColocarColete[playerid] = 0;
Cartola[playerid] = 0;
Natal[playerid] = 0;

if(pmorto[playerid])return true;

OnPlayerDeathEx(playerid, killerid, reason);

TextDrawShowForPlayer(playerid, textmorte[0]);
TextDrawShowForPlayer(playerid, textmorte[1]);

JoinedHay[playerid] = 0;

return 1;
}

stock OnPlayerDeathEx(playerid, killerid, reason)
{
SendDeathMessage(killerid,playerid,reason);

ColocarColete[playerid] = 0;
Cartola[playerid] = 0;
Natal[playerid] = 0;


if(GetPVarInt(playerid,"roped") == 1)
{
for(new destr2=0;destr2<=ropelength;destr2++)
{
DestroyDynamicObject(r0pes[playerid][destr2]);
}
SetPVarInt(playerid,"roped",0);
DisablePlayerCheckpoint(playerid);
}

new string[256];
if(MecanicMission[playerid])
{
EndMission(playerid);
}
if(PlayerPaintballing[playerid] != 0)
{
PlayerPaintballKills[killerid] ++;
if(PlayerPaintballKills[killerid] > PaintballWinnerKills)
{
PaintballWinner = killerid;
PaintballWinnerKills = PlayerPaintballKills[killerid];
foreach(Player, i)
{
if(PlayerPaintballing[i] != 0)
{
format(string, sizeof(string), "* %s estб em 1є com %d Kills.",PlayerName(killerid),PaintballWinnerKills) ;
SendClientMessage(i, COLOR_WHITE, string);
}
}
}
return 1;
}

SBizzInfo[12][sbTill] += 100;
ExtortionSBiz(12, 100);

new Float:pPosX, Float:pPosY, Float:pPosZ;
GetPlayerPos(playerid, pPosX, pPosY, pPosZ);
for(new i_slot = 0, gun, ammo; i_slot != 12; i_slot++)
{
GetPlayerWeaponData(playerid, i_slot, gun, ammo);
if(gun != 0 && ammo != 0)
{
if(TempDropArmasBody[playerid] >= 30)
{
CreateDroppedGun(gun, ammo, pPosX+random(3)-random(3), pPosY+random(3)-random(3), pPosZ);
}
}
}


if(WantedPoints[playerid] > 0)
{
new Wanted = WantedPoints[playerid];
new diecash = WantedPoints[playerid]*100;
format(string, sizeof(string), "Vocк perdeu R$%d por morrer com Nнvel De Procura: %d.", diecash, Wanted);
SendClientMessage(playerid, COLOR_YELLOW, string);
GiveDinheiro(playerid, - diecash);
}

if(GuerraMorro[gGuerra])
{
CheckPontosTr(playerid, killerid);
if(NaCamera[playerid] > 1)
{
TextDrawHideForPlayer(playerid, Hidealto2);
TextDrawHideForPlayer(playerid, Hidebaixo2);
NaCamera[playerid] = 0;
}
RemovePlayerAttachedObject(playerid,Slot_Escudo);
gPlayerSpawned[playerid] = 0;


if(!admtrampando[playerid] && !helpertrampando[playerid])
{
new dia, mes, ano, hora, minuto, segundo;
getdate(ano, mes, dia);
gettime(hora, minuto, segundo);
PlayerInfo[playerid][pHospital] = true;

if(IsPlayerInGuerra(playerid))
{
PlayerInfo[playerid][pTempoHospital] = 20;
}
else
{
PlayerInfo[playerid][pTempoHospital] = TempoHospital;
gCheckPontos(playerid, killerid);
}
if(GuerraNavio[nmGuerra])
{
nmCheckPontos(playerid, killerid);
}
}
PlayerInfo[playerid][pHAjustado] = false;
HospId[playerid] = 999;
customorte[playerid] = 1000;
SendClientMessage(playerid, TEAM_BALLAS_COLOR, "Vocк morreu e serб internado no hospital regional mais proximo de vocк.");
SendClientMessage(playerid, TEAM_BALLAS_COLOR, "Uma equipe mйdica ira cuidar de vocк atй que vocк se recupere totalmente.");
format(string, sizeof string, "Faltam %d segundos para vocк receber alta do hospital regional de Los Santos, custo: R$%d", PlayerInfo[playerid][pTempoHospital], customorte[playerid]);
SendClientMessage(playerid, TEAM_BALLAS_COLOR, string);
if(PlayerInfo[playerid][pJailed] >= 1)
{
SendClientMessage(playerid, COLOR_GREY, " Vocк morreu para um policial, com nнvel de procura, ao receber alta do hospital irб direto para prisгo!");
SpawnPlayer(playerid);
return 1;
}
}

PlayerInfo[playerid][pLocal] = 255;
GetPlayerName(playerid, sendername, sizeof(sendername));
new Float:px,Float:py,Float:pz;
GetPlayerPos(playerid, px, py, pz);
spawnado[playerid] = 0;
if(PlayerInfo[playerid][pLevel] >= 3 && !IsAMedicos(playerid))
{
foreach(Player, i)
{
if(IsAMedicos(i))
{
PlayerPlaySound(i, 1039, 0.0, 0.0, 0.0);
GameTextForPlayer(i, "~w~Pessoa ~r~Morta~n~Bonus~g~R$100", 5000, 1);
GiveDinheiro(i, 100);
}
}
}
if(Sequestrado[playerid] == 1)
{
format(string, sizeof(string), "[SEQUESTRO] Os sequestradores mataram o refйm %s. Fim do Sequestro!", NomePlayer(playerid));
SendClientMessageToAll(COLOR_DBLUE, string);
Sequestrado[playerid] = 0;
PlayerTied[playerid] = 0;
PlayerInfo[playerid][pMuted] = 0;
PLO += 100;
DepositarOrgGrana(7,100);
}

if (gPlayerTerminal[playerid] != 0)
{
BusrouteEnd(playerid);
}
if(killerid != INVALID_PLAYER_ID)
{
if(!IsPlayerInGuerra(killerid))
{
if(GetPlayerOrg(killerid) != 8 && GetPlayerOrg(killerid) != 22)
{
SetPlayerCriminal(killerid, 255, "Assassinato");
PlayerPlaySound(killerid, 1138, 0.0, 0.0, 0.0);
}
if(GoChase[killerid] == 999)
{
if(GetPlayerOrg(killerid) == 8 || GetPlayerOrg(killerid) == 22)
{
SetPlayerCriminal(killerid, 255, "Assassinato");
PlayerPlaySound(killerid, 1138, 0.0, 0.0, 0.0);
}
}
}
if(reason == 53) killerid = 999;
format(string, sizeof string, "* Vocк foi morto por {FFFFFF}%s[ID: %d] [ORG: %s] {33CCFF}com a arma: {FFFFFF}[%s]", NomePlayer(killerid),killerid, GetOrgName(GetPlayerOrg(killerid)), NomeArma(reason));
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);

format(string, sizeof string, "* Vocк matou {FFFFFF}%s[ID: %d] [ORG: %s] {33CCFF}com a arma: {FFFFFF}[%s]", NomePlayer(playerid),playerid, GetOrgName(GetPlayerOrg(playerid)), NomeArma(reason));
SendClientMessage(killerid, COLOR_LIGHTBLUE, string);
PlayerInfo[killerid][pKills] ++;
MataMorre(playerid,killerid);
CheckPontosTr(playerid,killerid);
}
if(TendoGuerra)
{
new orgid = GetPlayerOrg(playerid);
new orgid2 = GetPlayerOrg(killerid);
if((orgid==3||orgid==15||orgid==23) && (orgid2==3||orgid2==15||orgid2==23))
{
if(IsPlayerInGuerra(playerid) && IsPlayerInGuerra(killerid) && orgid != orgid2)
{
PSG[orgid2] += 1;
GranaGuerra += 825+random(500);
}
}
}

Reply
#4

Tem outro cуdigo de spawn como eu disse!
PHP код:
SendClientMessage(playeridCOLOR_GREY" Vocк morreu para um policial, com nнvel de procura, ao receber alta do hospital irб direto para prisгo!");
SpawnPlayer(playerid); 
Possivelmente nisso aqui tbm tem tem outro spawn!
PHP код:
OnPlayerDeathEx(playeridkilleridreason); 
Reply
#5

Mano te aconselho a estudar outra gm essa ai e toda bagunзada!
Reply
#6

Entгo razor sou meio leigo nessas coisas, mas por ter outro spawn ele volta automaticamente pro hospital? Atй mesmo se me ajudarem a desativar a pergunta de nascer na HQ ou no Hospital jб estб de bom tamanho se ficar complicado para eu arrumar.

Sim Jhow mas й uma GM realmente boa, quero apostar nela, aos pouquinhos estou arrumando as coisas.
Reply
#7

Acredito que o erro nгo seja necessariamente ai, e sim em algum timer de termino de hospitalizaзгo, tente fazer com que o timer seja morto, KillTimer quando a opзгo HQ for escolhida.
Reply
#8

Entгo claudio o cуdigo ficaria mais ou menos assim com o KillTimer?
PHP код:
if(dialogid == dialogidhosp)
      {
          if(
response)
          {
              if(
PlayerInfo[playerid][pTempoHospital] <= 20)
            {
                
format(stringsizeof string"{FFFFFF}Voce demorou a Escolher a Opзгo\ne irб nascer no Hospital!\n  {2641FE}Custo Hospital : {FFFF00}R${FF0000}-%d"customorte[playerid]);
                
ShowPlayerDialog(playerid0DIALOG_STYLE_MSGBOX"Nascimento Hospital"string"OK""");
                
LocalSairHosp[playerid] = false;
                return 
true;
            }
              if (
GetPlayerMoney(playerid) > customorte[playerid]*(10))
            {
                  
format(stringsizeof string"{FFFFFF}Voce irб Direto para sua HQ\n   {33AA33}Custo HQ : {FFFF00}R${FF0000}-%d"customorte[playerid]*(10));
                
ShowPlayerDialog(playerid0DIALOG_STYLE_MSGBOX"Nascimento HQ"string"OK""");
                
LocalSairHosp[playerid] = true;
                
ValorSairHosp[playerid] = 1000*(10);
                
KillTimer(pTempoHospital); //adicionando o killtimer aqui?
            

Reply
#9

O Killtimer seria adicionado na mesma call que o dialog do HQ estб, exemplo, se ele escolher HQ, ele vai ser teleportado pro seu HQ correto ?, pra isso em OnDialogResponse, tem a parte especifica desse Dialog, vocк coloca lб seu Killtimer
Reply
#10

Ah sim entгo segue abaixo o cуdigo primeiro como estб e segundo como ficaria:
PHP код:
if(LocalSairHosp[playerid] == false)
    {
        
format(stringsizeof string"|* Custo Total: -R$%d"ValorSairHosp[playerid]);
        
SendClientMessage(playeridCOLOR_GRAD1string);
        
GiveDinheiro(playerid, -ValorSairHosp[playerid]);
    }
    
SendClientMessage(playerid, -1"|______________________________________________|");
    
SendClientMessage(playeridCOLOR_YELLOW"Vocк saiu do hospital depois de um tempo internado.");
    if(
LocalSairHosp[playerid] == true)
    {
        
SendClientMessage(playeridCOLOR_DBLUE"Vocк saiu do hospital e Foi Levado Atй sua HQ.");
        
LocalSairHosp[playerid] = false;
        
PlayerInfo[playerid][pHospital] = false;
        
SetPlayerSpawn(playerid);
    }
    
ValorSairHosp[playerid] = 0;
    
Controle(playerid1);
    
HospId[playerid] = 999;
    
SetPVarInt(playerid"VarMSG"0); 
Ficaria assim:

PHP код:
if(LocalSairHosp[playerid] == false)
    {
        
format(stringsizeof string"|* Custo Total: -R$%d"ValorSairHosp[playerid]);
        
SendClientMessage(playeridCOLOR_GRAD1string);
        
GiveDinheiro(playerid, -ValorSairHosp[playerid]);
    }
    
SendClientMessage(playerid, -1"|______________________________________________|");
    
SendClientMessage(playeridCOLOR_YELLOW"Vocк saiu do hospital depois de um tempo internado.");
    if(
LocalSairHosp[playerid] == true)
    {
        
SendClientMessage(playeridCOLOR_DBLUE"Vocк saiu do hospital e Foi Levado Atй sua HQ.");
        
LocalSairHosp[playerid] = false;
        
PlayerInfo[playerid][pHospital] = false;
        
SetPlayerSpawn(playerid);
        
KillTimer(pTempoHospital); //aqui?
    
}
    
ValorSairHosp[playerid] = 0;
    
Controle(playerid1);
    
HospId[playerid] = 999;
    
SetPVarInt(playerid"VarMSG"0); 
Observando bem ali em
Quote:

SendClientMessage(playerid, COLOR_DBLUE, "Vocк saiu do hospital e Foi Levado Atй sua HQ.");
LocalSairHosp[playerid] = false;
PlayerInfo[playerid][pHospital] = false;

LocalSairHosp[playerid] = false; <- aqui n deveria ser true nгo?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)