[Tutorial] [TUT] Salvar String em Arquivos
#1


Salvar Dados Agora Ficou mais facнl

Eis eu aqui fazer um breve tuto simples de como salvar strings em arquivos

Vamos lб:
Primeiramente vamos construir meu comando independente do que queres, Aqui:
Exemplo de Comando:
Aqui o Comando sem Salvar

pawn Код:
if(strcmp("/sogay", cmd, true) == 0)
{
SendClientMessage(playerid,0xFFFF00AA ,"Parabens Vocк Admitiu ser gay");
ResetPlayerWeapons(playerid);
new name[MAX_PLAYER_NAME], string[128];//CORIGIDO
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s admitiu ser gay, parabens!.",name);
SendClientMessageToAll(0xFFFF00AA, string);
SetPlayerHealth(playerid,0)
GivePlayerMoney(playerid,-9999999);
return 1;
}
Sendo:
if(strcmp("/sogay", cmd, true) == 0) -> Comando
SendClientMessage -> Envia Mensagem ao player
ResetPlayerWeapons -> Tira Arma do Player
new name[MAX_PLAYER_NAME], string[128] -> Define "NAMES" E "STRINGS" que vamos usar posteriormente
GetPlayerName -> Pega o nome do Player
SetPlayerHealth -> Muda Vida do Player
GivePlayerMoney -> Muda Dinheiro do Player
format -> Formato de como envia a mensagem e salvarб no arquivo
SendClientMessageToAll -> Envia Mensagem a Todos
%s -> String que foi "pedida" antes (GetPlayerName)


Entгo Como Salvar?
Simples Adicione ao Final do GM:
pawn Код:
stock Gays(const ahahah[])
{
new File:HF = fopen("gaysdmitidos.txt",io_append);
fwrite(HF,ahahah);
fclose(HF);
}
Sendo:
Stock Gays -> Define o cуdigo "GAY" (Leia mais Aqui https://sampwiki.blast.hk/wiki/Stocks)
newFile -> Novo Arquivo
gaysdmitidos.txt -> Nome + Extenзгo do Arquivo
io_append -> Funзгo que Adiciona ao Arquivo
fclose(HF); -> Fecha/Salva Arquivo

Entгo para Salvar a String Fazemos a seguinte forma...
Adicionamos Isto ao Comando
Isto:
Gays(string); -> IRA USAR A STOCK DEFINIDA ANTERIORMENTE, SALVANDO A STRING AO ARQUIVO


Ficando da Seguinte Forma:

pawn Код:
if(strcmp("/sogay", cmd, true) == 0)//COMANDO
{
SendClientMessage(playerid,0xFFFF00AA ,"Parabens Vocк Admitiu ser gay");//ENViA MSG APENAS AO PLAYER
ResetPlayerWeapons(playerid);//TIRA ARMA
new name[MAX_PLAYER_NAME], string[128];//DEFINE A STRING (CORRIGIDO)
GetPlayerName(playerid, name, sizeof(name));//PEGA NOME PARA COLOCAR NA STRING
format(string, sizeof(string), "%s admitiu ser gay, parabens!.",name);//STRING
SendClientMessageToAll(0xFFFF00AA, string);//ENVIA MSG IN GAME
Gays(string);//USA A STOCK PARA SALVAR STRING
SetPlayerHealth(playerid,0);//MATA PLAYER
GivePlayerMoney(playerid,-9999999);//TIRA DINHEIRO DELE
return 1;
}
Lembrando que se ja Estar com String Definida em seu GM
pawn Код:
new string
Deveras Substituir o CODE:
pawn Код:
new name[MAX_PLAYER_NAME], string[128];
por:
pawn Код:
new name[MAX_PLAYER_NAME];
Caso Queiram Pular linhas no Arquivo:

Abaixo de stock Gays(const ahahah[]):
pawn Код:
new string[128];
Antes da linha fwrite(HF, ahahah), coloque a linha abaixo:
pawn Код:
format(string, sizeof (string), "%s \r\n", ahahah);
Depois substitua a linha fwrite(HF,ahahah); por:
pawn Код:
fwrite(HF, string);
Assim, com o \r\n dentro do format, cada vez que for registrada mais uma informaзгo no arquivo, ele vai pular uma linha.
Caso utilize apenas o fwrite(HF, ahahah), ele vai escrever sempre um ao lado do outro.


Dica :By: SimS™

Como Ficou:


CLIQUE AQUI PARA MAIOR VISULIZAЗГO


Crйditos a DraKoN nгo permitido em outro blogs ou sites sem minha permissгo
Reply
#2

kkkkkkkkkkkkkkkkkkkkkkkkk Muito bom, bom mesmo! Parabйns!
Reply
#3

Quote:
Originally Posted by DraKoN
if(strcmp("/sogay", cmd, true) == 0)
{
SendClientMessage(playerid,0xFFFF00AA ,"Parabens Vocк Admitiu ser gay");
ResetPlayerWeapons(playerid);
new name[MAX_PLAYER_NAME], string[44];
GetPlayerName(playerid, name, sizeof(name));
format(string, sizeof(string), "%s admitiu ser gay, parabens!.",name);
SendClientMessageToAll(0xFFFF00AA, string);
SetPlayerHealth(playerid,0)
GivePlayerMoney(playerid,-9999999);
return 1;
}
Pelo que vi assim de repente estб bom para iniciantes aprenderem, nгo posso falar muito porque eu nunca usei as funзхes de ficheiros sem ser com Dini.

De qualquer maneira nгo pude deixar de reparar em duas coisas 'mal'.

Essa maneira de 'comeзar' o comando tens que postar tambйm o new cmd, cmd = bla bla bla, etc. Tu sabes.

Quanto а string, o valor 44 nгo й suficiente.

pawn Код:
%s admitiu ser gay, parabens!.
Tem 30 caracteres + 1 (null) dб 31 caracteres.

Depois subtrais - 2 de 31 que й de (%s) e ficas com 29.

Depois o (%s) serб substituнdo pelo nome do jogador que й o MAX_PLAYER_NAME que estб definido a 24 salvo erro, mas na realidade й 20.

Entгo 29 + 20 = 49 ou 29 + 24 = 53.

Nгo venhas dizer que й exemplo, bla bla bla, porque muita gente nгo sabe sem ser iniciantes, entгo para prevenir problemas...

P.S - Deixa de postar essas coisas gays sua bixa!
Reply
#4

Quote:
Originally Posted by russooooo
Eu Sou o Senhor MateMatica
Exemplo:
[mGo]DraKoN admitiu ser gay, parabens!
Aqui No Total Sгo 30 Caracteres
Sendo que meu Nick й Mais ou menos Maior Entгo pensa,
28 Sгo Totais de caracteres Sem Nick, isto Significa que Podemos Adicionar Mais 16 Caracteres para fechar 44
28 + 16 = 44
Lembrando que o maximo permitido й 16 Caracteres em um Nick do SA:MP se nгo me falha a memуria, por isso ali nгo tem erro...
Mesmo Assim Prevenindo
Faz
Assim
pawn Код:
new name[MAX_PLAYER_NAME], string[128];
Podendo Adicionar 128 Caracteres

Agora Esta Felizzzz ?


@EDIT:
Quote:
Originally Posted by russooooo
Vк o desperdнcio de cells... Para nгo falar que se fizeres sempre isso vai dar problemas.
Para Mim Ou Outros Nгo ha problemas em desperdicio, atй porque quem for querer ver esse TUTO concerteza irб adicionar mais uma frasisinha exemplo:
GAYSВO: %s Admitiu ser gay na frente de todo da zero para ele kkkkk.

P.S: kkkkkkk euri do
pawn Код:
#define playerid playerid
tб errado й assim
Tenta Colocar
pawn Код:
new playerid=playerid;
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Euri kkk
Reply
#5

Й como eu disse nгo й 128.

128 - 49 = 79

128 - 53 = 75

Vк o desperdнcio de cells... Para nгo falar que se fizeres sempre isso vai dar problemas.

Edit: DraKoN experimenta no topo do script: #define playerid playerid e depois compila.
Reply
#6

admitiu ser gay, parabens! = 26 carбcteres

como drakon disse, o numero mбximo de carбcteres de um nick й 16

entгo:

26 + 16 = 42

Nгo vejo nada de errado em sua colocaзгo.
Reply
#7

Quote:
Originally Posted by pawNO xD
drakon admitiu ser gay, parabens!
O.o Descobriu a America?


Quote:
Originally Posted by pawNO xD
Nгo vejo nada de errado em sua colocaзгo.
Tambйm nгo vejo nada demais mesmo assim coloca 128
Como Diz o Ditado
"Melhor Prevenir do que Remediar!"

P.S: o Certo Seria:
...16... + ...26... + 1
Nick + ..Msg.. + Null
Total 43 e o permitido 44
O.o

Reply
#8

Ochii! coloca 128 entгo!
Reply
#9

Falem quando testarem/souberem das coisas, ok?

Eu sei o que escrevi, nгo vou falar sem saber.

E vк bem o meu post DraKoN.

Quanto ao '#define playerid playerid' eu disse-te para experimentares isso no topo do script, nгo disse que estava certo ou errado. Testa e verбs o que eu queria que percebesses.

Quando usas MAX_PLAYER_NAME ele vai usar 24 e nгo 20 que й o limite, isto salvo erro. De qualquer maneira vк estas 3 prints:


Nick 20 caracteres:

http://i39.tinypic.com/ek1afc.png


Nick 21 caracteres e erro de caracteres mбximos:

http://i41.tinypic.com/4fxukj.png

http://i39.tinypic.com/iwrmg9.png

Reply
#10

Resposta ao que eu estav procurando, mas que sorte que eu tenho.

Parabйns o Tutorial estб mesmo muito bom
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)