spawn escolhido por cidade - fear - 30/07/2022
boa noite. estou com um problema o dialog esta aparecendo para escolher a opção de Los Santos ou San Fierro.. porém quando escolho opção 1 ou 2 ele não seleciona a cidade e não spawna o player..
CODIGO:
Código PHP: } if (dialogid == LOGIN) {
if(response) {
if(!strlen(inputtext)) { new IP[128]; GetPlayerIp(playerid, IP, sizeof(IP)); format(String, sizeof(String), "{FFFFFF}Bem vindo novamente! \n\nNick: {90EE90}%s\n\n{FFFFFF}IP: {90EE90}%s\n\n{FFFFFF}Digite sua senha:", Nome(playerid), IP); ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "{6495ED}# {FFFFFF}Login", String, "Entrar", "Sair"); return 1; } else { CarregarVariaveis(playerid); ShowPlayerDialog(playerid, DIALOG_LOCALSPAWN, DIALOG_STYLE_INPUT, "{FFFFFF}Local Spawn", "{FFFFFF}[1] Los Santos\n[2] San Fierro", "Selecionar", "Sair"); } format(StringRegistro, sizeof(StringRegistro), "Contas/Contas/%s.ini", Nome(playerid)); if(strcmp(inputtext, DOF2_GetString(StringRegistro, "Senha"), true)) {
if(ErrouSenha[playerid] == 4) {
format(String, sizeof(String), "{E84F33}CONTA: {FFFFFF}O jogador %s foi kickado {FF0000}Motivo: [Errou a senha]", Nome(playerid)); MsgToAll(cortag, String); zPKick(playerid); return 1; } ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "{6495ED}# {FFFFFF}Errou a senha!", "{FFFFFF}Senha {FF0000}Errada!\n\n{FFFFFF}Digita sua senha:", "Login", "Sair"); ErrouSenha[playerid]++; return 1; } else {
new str[50]; format(str, 50, "Contas/ADM/%s.ini", Nome(playerid)); if(DOF2_FileExists(str)) {
if(DOF2_IsSet(str, "Level")) {
format(str, sizeof(str), "Contas/ADM/%s.ini", Nome(playerid)); ContaPlayer[playerid][Level] = DOF2_GetInt(str, "Level"); } } ContaPlayer[playerid][Dinheiro] = DOF2_GetInt(StringRegistro, "Dinheiro"); ContaPlayer[playerid][Skin] = DOF2_GetInt(StringRegistro, "Skin"); ContaPlayer[playerid][Score] = DOF2_GetInt(StringRegistro, "Score"); ContaPlayer[playerid][TempoOn] = DOF2_GetInt(StringRegistro, "TempoOn"); ContaPlayer[playerid][CanBeYoutuber] = DOF2_GetBool(StringRegistro, "AuthorizationYT"); GivePlayerMoney(playerid, ContaPlayer[playerid][Dinheiro]); SetPlayerScore(playerid, ContaPlayer[playerid][Score]); new StrIp[300]; GetPlayerIp(playerid, StrIp, 300); DOF2_SetString(StringRegistro, "IP", StrIp); DOF2_SaveFile(); ContaNova[playerid] = false; Msg(playerid, cortag, "{E84F33}CONTA: {FFFFFF}Logado com suceeso!"); SetTimerEx("SPP", 500, 0, "i", playerid); CarregarVariaveis(playerid); CarregarVip(playerid); TimerHora[playerid] = SetTimerEx("HoraP", 60000 * 10, 1, "i", playerid); // 60000 * 60 seria multiplicar 1 minuto x 60 minutos = 1 hora return 1; } } else {
format(String, sizeof(String), "{E84F33}CONTA: {FF0000}Player %s Kickado Motivo:[Cancelou o Login]", Nome(playerid)); MsgToAll(cortag, String); Kick(playerid); return 1; } } else if(dialogid == DIALOG_LOCALSPAWN) { if(!response) return Kick(playerid); if(response) { if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOCALSPAWN, DIALOG_STYLE_INPUT, "{FFFFFF}Local Spawn", "{FFFFFF}[1] Los Santos\n[2] San Fierro", "Selecionar", "Sair"); if(strval(inputtext) == 1) { SetPlayerPos(playerid,1533.0656,-2436.6377,13.5547); SetPlayerFacingAngle(playerid, 202.8760); SetPlayerInterior(playerid,0); SpawnPlayer(playerid); } if(strval(inputtext) == 2) { SetPlayerPos(playerid,-2258.3833,541.9443,34.8340); SetPlayerFacingAngle(playerid, 302.5973); SetPlayerInterior(playerid,0); SpawnPlayer(playerid); } } return 1; }
RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022
Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).
Código PHP: if(strval(inputtext) == 1) { SetPlayerPos(playerid, 1533.0656,-2436.6377,13.5547); SetPlayerFacingAngle(playerid, 202.8760); SetPlayerInterior(playerid,0); } if(strval(inputtext) == 2) { SetPlayerPos(playerid, -2258.3833,541.9443,34.8340); SetPlayerFacingAngle(playerid, 302.5973); SetPlayerInterior(playerid,0); }
Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem.
RE: spawn escolhido por cidade - fear - 30/07/2022
(30/07/2022 19:43)Carlos Victor Escreveu: Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).
Código PHP: if(strval(inputtext) == 1) { SetPlayerPos(playerid, 1533.0656,-2436.6377,13.5547); SetPlayerFacingAngle(playerid, 202.8760); SetPlayerInterior(playerid,0); } if(strval(inputtext) == 2) { SetPlayerPos(playerid, -2258.3833,541.9443,34.8340); SetPlayerFacingAngle(playerid, 302.5973); SetPlayerInterior(playerid,0); }
Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem. Estou usando um gm antigo mesmo pra aprender. mas do jeito que você falou ele não spawna na posição que usei no setplayerpos e sim nessa:
Código PHP: AddPlayerClass(293,2184.7532,-1784.6282,13.3661,4.2801,0,0,0,0,0,0);
RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022
(30/07/2022 19:49)fear Escreveu: (30/07/2022 19:43)Carlos Victor Escreveu: Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).
Código PHP: if(strval(inputtext) == 1) { SetPlayerPos(playerid, 1533.0656,-2436.6377,13.5547); SetPlayerFacingAngle(playerid, 202.8760); SetPlayerInterior(playerid,0); } if(strval(inputtext) == 2) { SetPlayerPos(playerid, -2258.3833,541.9443,34.8340); SetPlayerFacingAngle(playerid, 302.5973); SetPlayerInterior(playerid,0); }
Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem. Estou usando um gm antigo mesmo pra aprender. mas do jeito que você falou ele não spawna na posição que usei no setplayerpos e sim nessa:
Código PHP: AddPlayerClass(293,2184.7532,-1784.6282,13.3661,4.2801,0,0,0,0,0,0);
É porque justamente você está usando a função SpawnPlayer toda vez que ela é chamada re-spawna o jogador na posição que você define, provavelmente é na que você usa em AddPlayerClass.
RE: spawn escolhido por cidade - fear - 30/07/2022
(30/07/2022 21:03)Carlos Victor Escreveu: (30/07/2022 19:49)fear Escreveu: (30/07/2022 19:43)Carlos Victor Escreveu: Basicamente, você está dando spawn no jogador, isso faz com que ele sempre retorne no spawn definido na função SetSpawnInfo, então é só você remover a função SpawnPlayer do código e funcionará corretamente(eu testei).
Código PHP: if(strval(inputtext) == 1) { SetPlayerPos(playerid, 1533.0656,-2436.6377,13.5547); SetPlayerFacingAngle(playerid, 202.8760); SetPlayerInterior(playerid,0); } if(strval(inputtext) == 2) { SetPlayerPos(playerid, -2258.3833,541.9443,34.8340); SetPlayerFacingAngle(playerid, 302.5973); SetPlayerInterior(playerid,0); }
Recomendo também que procure maneiras de otimizar sua gamemode, use a função switch pra manipular as dialogs ou também listitem. Estou usando um gm antigo mesmo pra aprender. mas do jeito que você falou ele não spawna na posição que usei no setplayerpos e sim nessa:
Código PHP: AddPlayerClass(293,2184.7532,-1784.6282,13.3661,4.2801,0,0,0,0,0,0);
É porque justamente você está usando a função SpawnPlayer toda vez que ela é chamada re-spawna o jogador na posição que você define, provavelmente é na que você usa em AddPlayerClass. Mas eu fiz como tu disse acima mano e mesmo assim não funcionou corretamente. Lê oque escrevi dnv.
RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022
Oque provavelmente está acontecendo, é você pedindo pro jogador escolher o spawn antes de spawnar, ou dando spawn em um lugar padrão. Eu recomendo, vou colocar abaixo um exemplo de como você poderia fazer:
Código PHP: new spawnLocation[MAX_PLAYERS];
public OnGameModeInit() { AddPlayerClass(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return 1; }
public OnPlayerSpawn(playerid) { switch(spawnLocation[playerid]) { case 1: { //Los Santos } case 2: { //Las Venturas } case 3: { //San Fierro } } return 1; }
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_LOCALSPAWN: { if(!response) return Kick(playerid);
if(response) { if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOCALSPAWN, DIALOG_STYLE_INPUT, "{FFFFFF}Local Spawn", "{FFFFFF}[1] Los Santos\n[2] San Fierro", "Selecionar", "Sair");
if(strval(inputtext) == 1) { spawnLocation[playerid] = 1; SendClientMessage(playerid, -1, "* Você decidiu spawnar em Los Santos."); } else if(strval(inputtext) == 2) { spawnLocation[playerid] = 2; SendClientMessage(playerid, -1, "* Você decidiu spawnar em Las Venturas."); } else if(strval(inputtext) == 3) { spawnLocation[playerid] = 3; SendClientMessage(playerid, -1, "* Você decidiu spawnar em San Fierro."); } } } } return 1; }
RE: spawn escolhido por cidade - fear - 30/07/2022
(30/07/2022 22:03)Carlos Victor Escreveu: Oque provavelmente está acontecendo, é você pedindo pro jogador escolher o spawn antes de spawnar, ou dando spawn em um lugar padrão. Eu recomendo, vou colocar abaixo um exemplo de como você poderia fazer:
Código PHP: new spawnLocation[MAX_PLAYERS];
public OnGameModeInit() { AddPlayerClass(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); return 1; }
public OnPlayerSpawn(playerid) { switch(spawnLocation[playerid]) { case 1: { //Los Santos } case 2: { //Las Venturas } case 3: { //San Fierro } } return 1; }
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_LOCALSPAWN: { if(!response) return Kick(playerid);
if(response) { if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOCALSPAWN, DIALOG_STYLE_INPUT, "{FFFFFF}Local Spawn", "{FFFFFF}[1] Los Santos\n[2] San Fierro", "Selecionar", "Sair");
if(strval(inputtext) == 1) { spawnLocation[playerid] = 1; SendClientMessage(playerid, -1, "* Você decidiu spawnar em Los Santos."); } else if(strval(inputtext) == 2) { spawnLocation[playerid] = 2; SendClientMessage(playerid, -1, "* Você decidiu spawnar em Las Venturas."); } else if(strval(inputtext) == 3) { spawnLocation[playerid] = 3; SendClientMessage(playerid, -1, "* Você decidiu spawnar em San Fierro."); } } } } return 1; }
Fiz desse jeito que você recomendo fico assim:
ONGAMEMODEINIT:
Código PHP: AddPlayerClass(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
ONPLAYERSPAWN:
Código PHP: switch(spawnLocation[playerid]) { case 1: { SetPlayerPos(playerid,2500.5332,-1672.8907,13.0086); //Los Santos } case 2: { SetPlayerPos(playerid,1692.8406,1434.9109,10.3291); //Las Venturas } case 3: { SetPlayerPos(playerid,-2258.3833,541.9443,34.8340); //San Fierro } }
ONDIALOG:
Código PHP: switch(dialogid) { case DIALOG_LOCALSPAWN: { if(!response) return Kick(playerid);
if(response) { if(isnull(inputtext)) return ShowPlayerDialog(playerid, DIALOG_LOCALSPAWN, DIALOG_STYLE_INPUT, "{FFFFFF}Local Spawn", "{FFFFFF}[1] Los Santos\n[2] San Fierro", "Selecionar", "Sair");
if(strval(inputtext) == 1) { spawnLocation[playerid] = 1; SendClientMessage(playerid, -1, "* Você decidiu spawnar em Los Santos."); } else if(strval(inputtext) == 2) { spawnLocation[playerid] = 2; SendClientMessage(playerid, -1, "* Você decidiu spawnar em Las Venturas."); } else if(strval(inputtext) == 3) { spawnLocation[playerid] = 3; SendClientMessage(playerid, -1, "* Você decidiu spawnar em San Fierro."); } } } }
Porém depois que eu registro ou logo colocando a senha não aparece a dialog para escolher as três opção...
RE: spawn escolhido por cidade - Carlos Victor - 30/07/2022
Você precisa fazer com que o jogador escolha isso na hora do registro, pra quando ele der spawn, ser teleportado pra onde escolheu anteriormente.
Me chama no Discord, lá irei te respondar rapidamente.
Carlos Victor#6045
RE: spawn escolhido por cidade - xbruno1000x - 31/07/2022
Não vejo muito sentido em chamar uma dialog de inserir texto pro player digitar 1 ou 2. Por que não chamar uma dialog style list? O player vai selecionar na lista Los Santos ou San Fierro, sem complexidade.
RE: spawn escolhido por cidade - fear - 31/07/2022
(30/07/2022 23:35)Carlos Victor Escreveu: Você precisa fazer com que o jogador escolha isso na hora do registro, pra quando ele der spawn, ser teleportado pra onde escolheu anteriormente.
Me chama no Discord, lá irei te respondar rapidamente.
Carlos Victor#6045
te add no discord. agora consegui com que ele chama-se a dialog ele da a frase da cidade escolhida.. porém não spawna o player eu tenho que clicar em spawn ali embaixo ou usar shift pra spawnar na cidade.
|