Jump to content

[SannyBuilder]Afisare text in 2 mesaje separate daca depaseste 20 de caractere.


Mihay.
 Share

Recommended Posts

Descriere problema:Salutare, incerc sa fac un script care citeste o intrebare dintr-un fisier extern .ini iar daca intrebarea depaseste 20 de caractere sa o afiseze in 2 mesaje, primele 20 pe un rand, restul pe al 2 lea rand iar daca nu depaseste 20 de caractere sa le afiseze intr-un singur rand dar iau crash ...

Poze / Video (optional): -

Cod (sursa pe baza caruia sa ajutam, daca e cazul):

{$CLEO}
{$USE INI}

0B34: samp register_client_command "ask" to_label @ask

while true
    wait 250
end

:ask
    alloc 1@ 256
    0AF4: 1@ = read_string_from_ini_file "cleo\ask.ini" section "intrebare1" key "text"
    0C17: 2@ = strlen 1@
    
    if 2@ > 20
    then
        alloc 3@ 256
        0C24: strncpy destination 3@ source 1@ size 20
        chatmsg "Nr 1:%s" -1 3@
        0062: 1@ -= 3@
        chatmsg "Nr 1:%s" -1 1@
    else
        chatmsg "Nr 1:%s" -1 1@
    end
    SAMP.CmdRet()
                        

Alte precizări: iau crash aici          0062: 1@ -= 3@
        chatmsg "Nr 1:%s" -1 1@ , daca nu folosesc liniile alea imi afiseaza primele 20 de caractere si atat.

Link to comment
Share on other sites

alloc 3@ 256
0C24: strncpy destination 3@ source 1@ size 20
chatmsg "Nr 1: %s..." -1 3@
1@ += 20
chatmsg "Nr 1: ...%s" -1 1@
free 3@

 

Link to comment
Share on other sites

2 hours ago, Tupi said:
alloc 3@ 256
0C24: strncpy destination 3@ source 1@ size 20
chatmsg "Nr 1: %s..." -1 3@
1@ += 20
chatmsg "Nr 1: ...%s" -1 1@
free 3@

 

Mersi de raspuns, foarte util raspuns am incercat si merge dar mi-am prins urechile incercand sa fac cv, daca ai timp sa ma ajuti as fi recunoscator

vreau asa, daca mesajul depaseste 60 de caractere adica are 61 de caractere sa dea eroare chatmsg "Ai depasit limita maxima de caractere pentru o singura intrebare, incearca sa o formulezi mai scurt.", daca mesajul are mai putin de 20 de caractere sa fie afisat intr-un singur rand, daca are mai mult de 20 de caractere da mai putin sau egal cu 40 caractere sa fie afisat pe 2 randuri iar daca are mai mult de  40 dar mai putin sau egal cu 60 de caractere sa fie afisat pe 3 randuri. crezi ca se poate?

 

EDIT:Am rezolvat, pentru altii care vor sa faca acelasi lucru si ii intereseaza, codul arata asa:

 

{$CLEO}
{$USE INI}

0B34: samp register_client_command "ask" to_label @ask

while true
    wait 250
end

:ask
    alloc 1@ 256
    0AF4: 1@ = read_string_from_ini_file "cleo\ask.ini" section "intrebare1" key "text"
    0C17: 2@ = strlen 1@
    if 2@ <= 20
        then
            chatmsg "Nr 1:%s" -1 1@
        else
    if 2@ <= 40
        then
        alloc 3@ 256
        0C24: strncpy destination 3@ source 1@ size 20
            chatmsg "Nr 1: %s..." -1 3@
        1@ += 20
            chatmsg "Nr 1: ...%s" -1 1@
        free 3@
        else
    if 2@ <= 60
        then
        alloc 3@ 256
        0C24: strncpy destination 3@ source 1@ size 20
            chatmsg "Nr 1: %s..." -1 3@
        free 3@
        alloc 3@ 256
        0C24: strncpy destination 3@ source 1@ size 40
        3@ += 20
            chatmsg "Nr 1: ...%s..." -1 3@
         free 3@ 
        1@ += 40
            chatmsg "Nr 1:...%s" -1 1@
        else
            chatmsg "Ai depasit limita maxima de caractere pentru o intrebare, incearca sa o formulezi mai scurt." -1
            free 2@
                end
            end
        end
SAMP.CmdRet()


                        

spacer.png

 

mesajul este acesta

[intrebare1]
text=aaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbcccccccccccccccccccc

 

 

nu dati va rog close topic inca pentru s-ar putea sa mai am nevoie de ajutor pe acelasi subiect pentru asta nu este varianta finala.

Edited by Mihay.
Link to comment
Share on other sites

6 hours ago, Tupi said:
alloc 3@ 256
0C24: strncpy destination 3@ source 1@ size 20
chatmsg "Nr 1: %s..." -1 3@
1@ += 20
chatmsg "Nr 1: ...%s" -1 1@
free 3@

 

o noua problema la comanda read_string_from_ini_file imi citeste doar primele 99 de caractere din text, chiar daca ele sunt mai multe, are cumva un buffer size de 99 de caractere ?

 

Link to comment
Share on other sites

7 hours ago, Mihay. said:

o noua problema la comanda read_string_from_ini_file imi citeste doar primele 99 de caractere din text, chiar daca ele sunt mai multe, are cumva un buffer size de 99 de caractere ?

 

Limita pentru a citi din fisier ini e de 99 de caractere, mai mult iti da jocul crash, exista si alte bypass-uri pentru asa ceva insa nu cred ca ai nevoie, o intrebare pe 2 randuri complete e mai mult decat suficient in joc, deja pe 3 randuri poate fi considerat spam pentru jucator. Ti-a reusit din cate vad sa detectezi cand e nevoie sa apara 1 rand si cand trebuie sa apara pe 2 randuri.

Link to comment
Share on other sites

5 hours ago, Tupi said:

Limita pentru a citi din fisier ini e de 99 de caractere, mai mult iti da jocul crash, exista si alte bypass-uri pentru asa ceva insa nu cred ca ai nevoie, o intrebare pe 2 randuri complete e mai mult decat suficient in joc, deja pe 3 randuri poate fi considerat spam pentru jucator. Ti-a reusit din cate vad sa detectezi cand e nevoie sa apara 1 rand si cand trebuie sa apara pe 2 randuri.

Ok, mersi mult de ajutor . Se poate da T/C.

Link to comment
Share on other sites

  • Tupi locked this topic
Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.