Foreach samp? -
FabioGTP - 12.04.2020
Olб pessoal, eu vim do php e uso foreach quando salvo algo no bd para carregar as informaзхes, no caso do sa:mp se eu salvar informaзхes com dof2 й possнvel trazer da forma de um foreach? exemplo, tenho um lugar de uma facзгo ai o lнder da facзгo pode alterar o lugar de nascimento, sem mudar diretamente no cуdigo, mudando apenas no gamemode, qual a possibilidadE?
Re: Foreach samp? -
Khivory - 12.04.2020
Pode dar um exemplo de cуdigo para passarmos para a sintaxe do pawn?
Re: Foreach samp? -
FabioGTP - 12.04.2020
Quote:
Originally Posted by Khivory
Pode dar um exemplo de cуdigo para passarmos para a sintaxe do pawn?
|
Claro vamos lб, vou usar uma lуgica do gta, ok? Um exemplo no meu banco eu salvei vбrios registros e gostaria de traze-los, eu usaria:
PHP Code:
$minhavariavel = $bd->query('SELECT * FROM teste');
<?php foreach ($minhavariavel as $item): ?>
<p>Minha vбriavel й: <?=$item['variavel']?></p>
<?php endforeach; ?>
Re: Foreach samp? -
Khivory - 12.04.2020
Pelo que eu entendi vocк quer editar apenas variбveis com informaзхes das facзхes, sem necessariamente modificar o seu arquivo.
Vocк nгo precisa utilizar especificamente o foreach ou qualquer outro tipo de loop se vocк quer editar obter informaзхes de apenas um arquivo.
PHP Code:
new MyVariable;
if(DOF2_FileExists("/Orgs/MyOrg.ini")) {
MyVariable = DOF2_GetInt("/Orgs/MyOrg.ini", "MyInt");
}
printf("A dobro do meu inteiro й %d", MyVariable * 2);
Se nгo й isso que quer, poderia explicar melhor?
Re: Foreach samp? -
PT - 12.04.2020
algo que te vai ajudar
https://sampforum.blast.hk/showthread.php?tid=625227
https://sampforum.blast.hk/showthread.php?tid=570937
Re: Foreach samp? -
RiqueP - 13.04.2020
Quote:
Originally Posted by FabioGTP
Claro vamos lб, vou usar uma lуgica do gta, ok? Um exemplo no meu banco eu salvei vбrios registros e gostaria de traze-los, eu usaria:
PHP Code:
$minhavariavel = $bd->query('SELECT * FROM teste');
<?php foreach ($minhavariavel as $item): ?>
<p>Minha vбriavel й: <?=$item['variavel']?></p>
<?php endforeach; ?>
|
O pawn nгo vem com um foreach nativo. Existe uma bibilioteca (citada pelo PT), mas ela nгo й bem usada dessa forma que vocк espera.
Nesse caso da query, quero deixar claro que DOF2 nгo trabalha bem com algo assim. DOF2, dini, y_ini nгo trabalham com querys o que complica muito com alguns comandos simples. Por exemplo, algo como:
PHP Code:
SELECT * FROM users;
Nгo seria possнvel com um sistema assim.
O ideal (e que pouquнssimas pessoas seguem essa recomendaзгo) й usar um SGBD, ainda mais que vocк jб estб familiarizado com esse tipo de sistema. O samp nativamente suporta SQLite que й um bem mais leve e simples que o MySQL. Mas se quer criar algo mais complexo e que exige os recursos de um SGBD mais robusto, pode usar um plugin do MySQL feito pelo BlueG (
https://github.com/pBlueG/SA-MP-MySQL/releases).
Um tutorial sobre o SQLite:
https://sampforum.blast.hk/showthread.php?tid=595841. Caso tenha mais dъvidas pode me mandar um MP ou criar um tуpico caso nгo tenha achado uma resposta pelo fуrum (oque nгo й tгo fбcil acontecer).
Re: Foreach samp? -
FabioGTP - 20.04.2020
Quote:
Originally Posted by RiqueP
O pawn nгo vem com um foreach nativo. Existe uma bibilioteca (citada pelo PT), mas ela nгo й bem usada dessa forma que vocк espera.
Nesse caso da query, quero deixar claro que DOF2 nгo trabalha bem com algo assim. DOF2, dini, y_ini nгo trabalham com querys o que complica muito com alguns comandos simples. Por exemplo, algo como:
PHP Code:
SELECT * FROM users;
Nгo seria possнvel com um sistema assim.
O ideal (e que pouquнssimas pessoas seguem essa recomendaзгo) й usar um SGBD, ainda mais que vocк jб estб familiarizado com esse tipo de sistema. O samp nativamente suporta SQLite que й um bem mais leve e simples que o MySQL. Mas se quer criar algo mais complexo e que exige os recursos de um SGBD mais robusto, pode usar um plugin do MySQL feito pelo BlueG ( https://github.com/pBlueG/SA-MP-MySQL/releases).
Um tutorial sobre o SQLite: https://sampforum.blast.hk/showthread.php?tid=595841. Caso tenha mais dъvidas pode me mandar um MP ou criar um tуpico caso nгo tenha achado uma resposta pelo fуrum (oque nгo й tгo fбcil acontecer).
|
Entendi, entгo no caso se eu usar um sistema DOF2 que eu vi aqui, porйm eu quero salvar um dado, um exemplo
Deixe sua Mensagem e usar um dialog, a pessoa digitou a mensagem e eu quero que essa mensagem salve e retorne em um sendclientmessage, como seria feito?
Re: Foreach samp? -
RiqueP - 20.04.2020
Em DOF2 você deve usar a função DOF2_GetString para pegar um texto que esta salvo em um arquivo.
Mas tome cuidado! Funções como essas, tem todo um processo de: abrir o arquivo, mapear as chaves e valores e te retornar o resultado. Isso é muito mais lento se comparado a um valor que esteja na memoria (em variável). Então, sempre que possível (oq é a maioria das vezes), faça um "pre-load" dos dados para variáveis.
Um bom exemplo disso, é no sistema de contas. Quando o Player se conectar, use as funções de Load para carregar as variáveis do jogador.
PHP Code:
// Crie uma estrutura que descreva o player:
enum E_PLAYER_DATA {
PlayerName[MAX_PLAYER_NAME],
PlayerPassword[20],
PlayerIp[16],
PlayerDinheiro,
PlayerLevel
}
new Player[MAX_PLAYERS][E_PLAYER_DATA];
// Quando ele logar, carregue os dados do arquivo dele para as variáveis:
public OnPlayerConnect(playerid) {
if(DOF2_FileExists(AccountFile(playerid))) {
format(Player[playerid][PlayerName], MAX_PLAYER_NAME, DOF2_GetString(AccountFile(playerid), "Usuario"));
format(Player[playerid][PlayerPassword], 20, DOF2_GetString(AccountFile(playerid), "Senha"));
format(Player[playerid][PlayerIp], 16, DOF2_GetString(AccountFile(playerid), "IP"));
Player[playerid][PlayerDinheiro] = DOF2_GetInt(AccountFile(playerid), "Dinheiro");
Player[playerid][PlayerLeve] = DOF2_GetInt(AccountFile(playerid), "Level");
}
return 1;
}
// Quando ele deslogar, salve os dados das variaveis nos arquivos do jogador:
public OnPlayerDisconnect(playerid, reason) {
SavePlayer(playerid);
return 1;
}
// Função para salvar os dados do jogador. Use quando ele
// desconectar e mais algumas vezes caso tenha alguma queda do servidor, não ter perda dos dados.
SavePlayer(playerid) {
DOF2_SetString(AccountFile(playerid), "Usuario"), Player[playerid][PlayerName]);
DOF2_SetString(AccountFile(playerid), "Senha"), Player[playerid][PlayerPassword]);
DOF2_SetString(AccountFile(playerid), "IP"), Player[playerid][PlayerIp]);
DOF2_SetInt(AccountFile(playerid), "Dinheiro", Player[playerid][PlayerDinheiro]);
DOF2_SetInt(AccountFile(playerid), "Level", Player[playerid][PlayerLeve]);
return 1;
}
AccountFile(playerid) {
new file[40];
format(file, sizeof(file), "Contas/%s.ini");
return file;
}
Vai ter contextos que você deverá usar funções como DOF2_GetString diretamente em algum format ou algo assim; Mas, sempre que possível, evite isso. Dependendo, pode ter uma queda de desempenho muito grande. Um exemplo dessa queda de desempenho:
https://sampforum.blast.hk/showthread.php?tid=294999. Apesar de ser dini, serve também.