Arrays, Strings e Dialogs -
Minerva - 27.04.2018
Opa raphese e girls tambйm
Bom, estou desenvolvendo um sistema de concessionaria para meu servidor e estou com um problema:
O que eu quero fazer й:
Pegar uma array com o nome de alguns carros fazer um loop fazendo com que todos sejam imprimidos em um dialog, eu fiz um codigo simples e que atй funcionou... porйm isso foi no console do servidor(teste)
@Log do servidor
Код:
[01:05:20]
[01:05:20] Filterscripts
[01:05:20] ---------------
[01:05:20] Loading filterscript 'Conce.amx'...
[01:05:20] Bravura
[01:05:20] Sentinel
[01:05:20] Manana
[01:05:20] Premier
[01:05:20] Tamba
[01:05:20] Loaded 1 filterscripts.
porйm quando eu entro na dialog aparece somente o ultimo carro no caso o Tamba 50.000$
@array
Код:
new CarrosNomesSedan[][] =
{
"Bravura", "Sentinel", "Manana", "Premier", "Tamba"
};
@funзгo
Код:
stock GetCarroModelSedan()
{
static Modelo[60];
for(new i = 0; i < sizeof(CarrosNomesSedan); i++)
{
format(Modelo, 60, "%s", CarrosNomesSedan[i]);
printf("%s", Modelo);
}
return Modelo;
}
@dialog
Код:
stock ShowDialogCategorias(playerid, DialogID)
{
new StringMSG[500];
switch(DialogID)
{
case DIALOG_CARROS_SEDAN:
{
format(StringMSG, sizeof(StringMSG), "%s\t 50.000$", GetCarroModelSedan());
ShowPlayerDialog(playerid, DIALOG_CARROS_SEDAN, DIALOG_STYLE_TABLIST, "Sedans", StringMSG, "Comprar", "Sair");
}
}
}
Re: Arrays, Strings e Dialogs -
arakuta - 27.04.2018
Vocк precisa usar STRCAT.
https://sampwiki.blast.hk/wiki/Strcat
E entгo a cada iteraзгo do loop, usar strcat. Nгo se esqueзa de usar \n no final do nome de cada veнculo para criar um novo listitem na dialog.
PHP код:
stock Juntar()
{
static giant[800];
strcat(giant,"Lansdstalker\n",800);
strcat(giant,"Infernus\n",800);
strcat(giant,"Bravura\n",800);
print(giant);
}
Espero ter ajudado
Re: Arrays, Strings e Dialogs -
Minerva - 27.04.2018
Entendi @arakuta
porйm surge um novo problema...
@serverlog
Код:
[10:56:56] Bravura 50.000$
[10:56:56] Bravura 50.000$
Sentinel 50.000$
[10:56:56] Bravura 50.000$
Sentinel 50.000$
Manana 50.000$
[10:56:56] Bravura 50.000$
Sentinel 50.000$
Manana 50.000$
Premier 50.000$
repetiзгo! na dialog ele faz o loop repetir... ficando:
Код:
Bravura 50.000$
Sentinel 50.000$
Manana 50.000$
Premier 50.000$
Bravura 50.000$
Sentinel 50.000$
Manana 50.000$
Premier 50.000$
Penso que o motivo disso й porque o loop faz:
array[0]
array[0]
array[1]
...
atй a array[4]
Код:
stock GetCarroModelSedan()
{
static Giant[800];
for(new i = 0; i < sizeof(CarrosNomesSedan); i++)
{
strcat(Giant, CarrosNomesSedan[i], 800);
printf("%s", Giant);
}
return Giant;
}
Como resolvo isso?
Re: Arrays, Strings e Dialogs -
arakuta - 27.04.2018
Por que static nгo й destruнdo no final da execuзгo do bloco de cуdigo, mantendo seu valor na memуria para a proxima execuзгo.
Vocк precisa limpar a string antes.
PHP код:
Giant = "";
// e entгo faзa o loop etc
Outra dica que dou й que caso essa string nгo seja dinвmica, seja sempre a mesma, vocк pode economizar um pouquinho do processador utilizando memуria, deixando a string global e formatando ela ao iniciar o servidor
PHP код:
new Giant[800]; // global
// em ongamemodeinit faзa o mesmo que aquele loop
// e entгo sempre que precisar da lista, ela jб estб pronta.
print(Giant);
Espero ter ajudado
Leia:
https://sampforum.blast.hk/showthread.php?tid=235924
Re: Arrays, Strings e Dialogs -
Minerva - 27.04.2018
@arakuta resolvido!
Re: Arrays, Strings e Dialogs -
[BOPE]Seu._.Madruga - 28.04.2018
Eu tinha comentado porйm sai de casa e sу voltei hoje, dai reparei que nгo tinha enviado pois eu havia comentado um post bem recente mas oque vale й a intenзгo tmj kkkk.
PHP код:
stock GetCarroModelSedan()
{
new Giant[800];
for(new i = 0; i < sizeof(CarrosNomesSedan); i++) strcat(Giant, CarrosNomesSedan[i]);
return Giant;
}
Re: Arrays, Strings e Dialogs -
Minerva - 28.04.2018
Todo aprendizado й importante XD