SetSpawnInfo com bugs - fear - 02/02/2025
boa tarde. eu to com um problema que quando eu morro o player vai para outro spawn ao invez do spawn do mundo que ele morreu no caso
tipo tu morre no mundo academy como policial ao invez de nascer novamente no spawn policial nasce no spawn drift.. e assim esta nos outros mundos..
codigo:
Código PHP: onPlayerSpawnEx(playerid) { TogglePlayerSpectating(playerid, 0); SetPlayerSkin(playerid, PlayerInfo[playerid][skin]); SendClientMessage(playerid, Vermelho, "| ZONE - INFO | {FFFFFF}Desative o chat global {FFFF00}/Chatoff {FFFFFF}e ative usando o mesmo comando!");
switch(PlayerInfo[playerid][modo]) { case 0: { SetSpawnInfo(playerid,0,PlayerInfo[playerid][skin],1550.8917,-1675.4390,15.6071,97.6708,0,0,0,0,0,0); //spawn policia SetPlayerVirtualWorld(playerid,1001); } case 1: { SetSpawnInfo(playerid, 0,PlayerInfo[playerid][skin],1158.3031,-2036.9834,69.0078,269.8741,0,0,0,0,0,0); //spawn bandido SetPlayerVirtualWorld(playerid,1001); } case 2: { SetSpawnInfo(playerid, 0,PlayerInfo[playerid][skin],357.7206,2019.4861,22.6406,125.4410,0,0,0,0,0,0); //Spawn PVP SetPlayerVirtualWorld(playerid,1002); } case 3: { SetSpawnInfo(playerid, 0,PlayerInfo[playerid][skin], -305.2488,1528.8973,75.3594,183.5718,0,0,0,0,0,0); //Spawn Drift SetPlayerVirtualWorld(playerid,1003); new interior = GetPlayerInterior(playerid); LinkVehicleToInterior(PegarCarro[playerid],interior); SetVehicleVirtualWorld(PegarCarro[playerid] ,GetPlayerVirtualWorld(playerid)); PutPlayerInVehicle(playerid,PegarCarro[playerid], 0); OptDrift(playerid); } case 4:SetSpawnInfo(playerid, 0,PlayerInfo[playerid][skin],384.5423,-2081.4946,7.8359, 6.1472,0,0,0,0,0,0); } }
Código PHP: if(dialogid == DIALOG_PMVSLADRAO) {
if(response) {
switch(listitem) {
case 0: {
onPlayerSpawnEx(playerid); switch(PlayerInfo[playerid][modo]) {
case 1:academy-=1; case 2:pvp-=1; case 3:drift-=1; case 4:fuga-=1; } fuga+=1; PlayerInfo[playerid][modo]=1; PlayerInfo[playerid][cargo]=1;
SendClientMessageToAll(0x9ACD32FF,"| MUNDOS | %s[%d] entrou no Mundo Academy! {FFFFFF}- ( /Mundos )",pName[playerid],playerid); SetPVarInt(playerid,"FloodModos",gettime()+15); SendClientMessage(playerid,0x9ACD32FF,"| MUNDOS | {FFFFFF}Agora voce faz parte da Equipe de {1E90FF}Policiais {FFFFFF}do servidor!");
TogglePlayerSpectating(playerid, 0); SetCameraBehindPlayer(playerid); SetPlayerPos(playerid,1550.8917,-1675.4390,15.6071); SetPlayerFacingAngle(playerid,97.6708); SetCameraBehindPlayer(playerid);
SetPlayerHealth(playerid, 100); SetPlayerArmour(playerid, 100);
RemovePlayerMapIcon(playerid, 55); RemovePlayerMapIcon(playerid, 55);
SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,1001); SetPlayerHealth(playerid, 100); PlayerInfo[playerid][Reparo] = false; for(new gt = 0; gt < 4; gt++)TextDrawHideForPlayer(playerid,TextPVP[gt]); PlayerTextDrawHide(playerid,PTextPVP[playerid][0]); PlayerTextDrawHide(playerid,PTextPVP[playerid][1]); TextDrawHideForPlayer(playerid,InfoDeath); ResetPlayerWeapons(playerid); TogglePlayerSpectating(playerid, 0); } case 1: {
onPlayerSpawnEx(playerid); switch(PlayerInfo[playerid][modo]) {
case 1:academy-=1; case 2:pvp-=1; case 3:drift-=1; case 4:fuga-=1; } fuga+=1; PlayerInfo[playerid][modo]=1; PlayerInfo[playerid][cargo]=2;
SendClientMessageToAll(0x9ACD32FF,"| MUNDOS | %s[%d] entrou no Mundo Academy! {FFFFFF}- ( /Mundos )",pName[playerid],playerid); SetPVarInt(playerid,"FloodModos",gettime()+15); PlayerInfo[playerid][Reparo] = false;
SendClientMessage(playerid,0x9ACD32FF,"| MUNDOS | {FFFFFF}Agora voce faz parte da Equipe de {FF0000}Bandidos(as) {FFFFFF}do servidor!"); SetPlayerPos(playerid,1158.3031,-2036.9834,69.0078); SetPlayerFacingAngle(playerid,269.8741); SetCameraBehindPlayer(playerid);
//SetPlayerMapIcon(playerid, 12, 1985.0173,-1896.1637,13.2094, 55, 0, MAPICON_GLOBAL); //SetPlayerMapIcon(playerid, 12, 2654.9780,-2117.1992,13.1094, 55, 0, MAPICON_GLOBAL); CreateDynamicMapIcon(1985.0173,-1896.1637,13.2094, 55, 0xFFFFFFAA, 1001, 0, playerid, -1, MAPICON_GLOBAL); CreateDynamicMapIcon(2654.9780,-2117.1992,13.1094, 55, 0xFFFFFFAA, 1001, 0, playerid, -1, MAPICON_GLOBAL);
SetPlayerHealth(playerid, 100); SetPlayerArmour(playerid, 100);
SetPlayerInterior(playerid, 0); SetPlayerVirtualWorld(playerid,1001); SetPlayerHealth(playerid, 100); PlayerInfo[playerid][Reparo] = false; for(new gt = 0; gt < 4; gt++)TextDrawHideForPlayer(playerid,TextPVP[gt]); PlayerTextDrawHide(playerid,PTextPVP[playerid][0]); PlayerTextDrawHide(playerid,PTextPVP[playerid][1]); TextDrawHideForPlayer(playerid,InfoDeath); ResetPlayerWeapons(playerid); TogglePlayerSpectating(playerid, 0); } } } }
Código PHP: if(response) {
switch(listitem) {
case 0: { ShowPlayerDialog(playerid,DIALOG_PMVSLADRAO,DIALOG_STYLE_LIST,"{FFF000}ESCOLHA A OPCAO DESEJADA:","Quero ser: {1E90FF}Policial\n{FFFFFF}Quero ser: {FF0000}Bandido\n","Selecionar","Voltar"); } case 1: {
//SendClientMessage(playerid,Vermelho,"| ZONE - MUNDOS | {FFFFFF}Modo em Desenvolvimento"); Opt(playerid); } case 2: {
//SendClientMessage(playerid,Vermelho,"| ZONE - MUNDOS | {FFFFFF}Modo em Desenvolvimento"); TogglePlayerSpectating(playerid, 0); OptDrift(playerid); } case 3: {
if(PlayerInfo[playerid][modo] == 4)return SendClientMessage(playerid,Vermelho, "[ ERRO ] Voce ja esta participando desse mundo!"); onPlayerSpawnEx(playerid);
switch(PlayerInfo[playerid][modo]) {
case 1:academy-=1; case 2:pvp-=1; case 3:drift-=1; case 4:fuga-=1; } livres+=1; PlayerInfo[playerid][modo]=4; PlayerInfo[playerid][cargo]=5; SendClientMessageToAll(0x9ACD32FF,"| MUNDOS | %s[%d] entrou no Mundo Fuga! {FFFFFF}- ( /Mundos )",pName[playerid],playerid); TextDrawHideForPlayer(playerid,InfoDeath);
new rrandom = random(sizeof(VehicleColoursTableRGBA)); SetPlayerColor(playerid, VehicleColoursTableRGBA[rrandom]); SetPlayerPos(playerid,2500.8027,-1666.5984,13.3546); SetPlayerFacingAngle(playerid, 88.5091); SetPlayerInterior(playerid,0); SetPlayerVirtualWorld(playerid,1004); SetPlayerHealth(playerid, 999999999); PlayerInfo[playerid][Reparo] = true; SetPVarInt(playerid,"FloodModos",gettime()+15);
RemovePlayerMapIcon(playerid, 55); RemovePlayerMapIcon(playerid, 55);
for(new gt = 0; gt < 4; gt++)TextDrawHideForPlayer(playerid,TextPVP[gt]); PlayerTextDrawHide(playerid,PTextPVP[playerid][0]); PlayerTextDrawHide(playerid,PTextPVP[playerid][1]); ResetPlayerWeapons(playerid); TogglePlayerSpectating(playerid, 0); } } } }
RE: SetSpawnInfo com bugs - fear - 02/02/2025
Alguem pode me ajudar nisso... ja tentei de tudo e nada funciona...
RE: SetSpawnInfo com bugs - BitSain - 02/02/2025
A função SetSpawnInfo pode estar sendo sobrescrita na hora da morte, fazendo com que o jogador renasça no lugar errado.
Mas, alguma função está sobre-escrevendo a função. Como o SetPlayerPos após o spawn do player..
Por isso, atente-se a ordem dos fatos e barre outras possibilidades que possam evitar o comportamento esperado, que é o SetSpawnInfo.
Sobre a função: O SetSpawnInfo não faz o jogador renascer imediatamente; em vez disso, ele define informações que serão aplicadas sempre que o jogador reaparecer. Isso inclui posição, skin, armas e munição, garantindo que ele receba esses atributos automaticamente ao spawnar.
Então, você precisa usar o SpawnPlayer alguma vez depois que usar o SetSpawnInfo para que a função anterior funcione (ou então o spawn automático: como a morte do player).
RE: SetSpawnInfo com bugs - fear - 02/02/2025
(02/02/2025 17:49)BitSain Escreveu: A função SetSpawnInfo pode estar sendo sobrescrita na hora da morte, fazendo com que o jogador renasça no lugar errado.
Mas, alguma função está sobre-escrevendo a função. Como o SetPlayerPos após o spawn do player..
Por isso, atente-se a ordem dos fatos e barre outras possibilidades que possam evitar o comportamento esperado, que é o SetSpawnInfo.
Sobre a função: O SetSpawnInfo não faz o jogador renascer imediatamente; em vez disso, ele define informações que serão aplicadas sempre que o jogador reaparecer. Isso inclui posição, skin, armas e munição, garantindo que ele receba esses atributos automaticamente ao spawnar.
Então, você precisa usar o SpawnPlayer alguma vez depois que usar o SetSpawnInfo para que a função anterior funcione (ou então o spawn automático: como a morte do player). Pior que ele estava spawnando mas consegui resolver. quando entrava no mundo e escolhia policial estava setado = 1 que e bandido e nao policial que e = 2 so coloquei na ordem certa que o setplayerinfo reconheceu qual era qual.. fiz um debug!
Obrigado pela explicacao.
|