Jump to content
Hostul a fost schimbat. Daca vedeti serverul offline readaugati rpg.b-zone.ro sau 141.95.124.78:7777 in clientul de sa-mp ×

[CLEO] Ajutor script


Moderat
 Share

Recommended Posts

Salut,

 

Revin cu o noua solicitare de ajutor :)

 

Incerc sa fac un script prin care sa poti da texte pe /news sau pe /l (live) la News Reporters.

 

Cu ce ajuta scriptul, este ca verifica numarul de caractere al textului introdus, iar daca se depaseste o anumita valoare, textul nu mai este trimis, evitand astfel trimiterea unui text care dupa aceea va aparea incomplet in chat, ori pe doua randuri. Acest lucru functioneaza, insa ma gandeam sa mai pun o functie, ce te ajuta sa setezi de dinainte randul 1 si randul 2 al unui mesaj ce va fi pe doua randuri, si sa ai posibilitatea de a vedea cum arata mesajele introduse inainte de a fi trimise, iar apoi dai o comanda si se trimit ambele.

 

Ce nu functioneaza este comanda de a afisa mesajele deja introduse in script. Am pus un "chatmsg" si un "say" la fiecare introducere de mesaj prin "/nwone" sau "/lvone" ori prin "/nwtwo" sau "/lvtwo" (pentru confirmare ca functioneaza/debug), si mesajul apare, insa cand dau "/nwview" sau "/lvview", mesajul nu mai este afisat. Tot ce apare este "[]" (in mod normal este [%s], unde %s este mesajul 1 sau mesajul 2, introduse prin comenzile respective).

 

Sper ca am exprimat destul de clar problema, iar daca este nevoie de detalii aditionale, va rog sa imi spuneti.

 

Script: https://pastebin.com/zhYa1DJK

Edited by Gugustiuc.
Link to comment
Share on other sites

@Gugustiuc. problema este foarte simplă.

 

Învață când vrei să salvezi o înformație dintr-o parte a modului pe care să o folosesti ulterior într-o alte parta a modului să folosesti următoarele opcode-uri în funcție de ceea ce trebuie să salvezi.

 

SAVE:

0AF1: write_int 16 to_ini_file "cleo\config.ini" section "SectionName" key "intKey"
0AF3: write_float 0.0 to_ini_file "cleo\config.ini" section "SectionName" key "floatKey"
0AF5: write_string "new string value" to_ini_file "cleo\config.ini" section "SectionName" key "stringKey"

GET:

0AF0: 0@ = get_int_from_ini_file "cleo\config.ini" section "SectionName" key "intKey"
0AF2: 0@ = get_float_from_ini_file "cleo\config.ini" section "SectionName" key "floatKey"
0AF4: 0@ = read_string_from_ini_file "cleo\config.ini" section "SectionName" key "stringKey"

[!] cand citești un string trebuie să aloci niste memorie variabilei pentru a putea salva textul în ea.

Aceste opcode-uri iți vor crea un fișier .ini în folderul cleo cu numele dat de tine, în care vei găsi o secțiune și o cheie care salveză informația dorită.

 

Revenind la problema ta, ce trebuie să faci:

:news_fm
SAMP.IsCommandTyped(10@)
chatmsg "Text: [%s]" -1 10@
0AB1: @strlen 1 string 10@ _returned:  size 3@
chatmsg "Text size: %d characters." -1 3@
if
    3@ > 24
then
    if
        3@ <= 109
    then
        15@ = 1
        chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} Text #1 salvat (%d caractere)." -1 3@
        0AF5: write_string 10@ to_ini_file "cleo\nrHelper.ini" section "News" key "One"
        say "%s" 10@
    else
        chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} Textul are prea multe caractere (%d/109)." -1 3@
    end
else
    chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} Textul trebuie sa aiba minim 25 de caractere (%d)." -1 3@
end 
samp.CmdRet()

Tot așa adaugi pentru fiecare parte de salvare doar schimbi variabila care tine textul, secțiunea dacă faci pentru live și cheia petru ca nu pot exista 2 chei cu același nume în aceiasi secțiune.

 

Pentru a citi informația salvată în fișier vei folosi:

:news_two_view
if and
    15@ == 1
    16@ == 1
then
    chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} Vizualizare texte introduse:" -1
    alloc 10@ 600
    alloc 15@ 600
    0AF4: 10@ = read_string_from_ini_file "cleo\nrHelper.ini" section "News" key "One"
    0AF4: 15@ = read_string_from_ini_file "cleo\nrHelper.ini" section "News" key "Two"
    chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} 1: [%s]" -1 10@
    chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} 2: [%s]" -1 15@
    free 10@
    free 15@
else
    if and
        not 15@ == 1
        not 16@ == 1
    then
        chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} Introdu intai mesajele folosind [/nwone] si [/nwtwo]." -1
    else
        if
            not 15@ == 1
        then
            chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} Primul mesaj nu a fost introdus folosind comanda [/nwone]." -1
        else
            chatmsg "{C2A2DA}[NR Help]{FFA500} [NEWS]{FFFFFF} Al doilea mesaj nu a fost introdus folosind comanda [/nwtwo]." -1
        end
    end
end
samp.CmdRet()

La fel ca mai sus adaugi tu pe la fiecare comandă unde este necesar citirea textului din fișier.

 

Link to comment
Share on other sites

Just now, Tupi said:

@Gugustiuc. ai reușit să rezolvi problema?

 

Nu am avut timp inca, sper ca astazi.

 

Stiam de faza cu .ini, insa nu mi-a trecut prin minte la momentul respectiv.

 

Mersi mult, voi scrie aici de indata ce voi rezolva!

Link to comment
Share on other sites

On 7/4/2021 at 1:51 PM, Tupi said:

@Gugustiuc. ai reușit să rezolvi problema?

 

Tocmai am pus in aplicare.

 

Am testat faza cu fisierul .INI, si functioneaza.

 

Ce patesc acum este ca nu inteleg de ce iau crash cand folosesc comanda [/nw1] si se depaseste un numar de caractere, de ex. 104. Cu numere mai mici de caractere functioneaza ok. Am pus "//" la acel chatmsg de dupa salvarea string-ului in .INI, insa tot iau crash, deci nu e ceva de la chatmsg.

 

De asemenea, daca verific in folderul CLEO, pot vedea ca mesajul a fost salvat in fisierul .INI respectiv, iar daca nu am "//" la chatmsg de la [/nw1], pot vedea si in chatlog.txt mesajul introdus.

 

https://pastebin.com/Wivx8SkD

 

 

 

Edit: Intre timp, o intrebare - "-1" de la chatmsg face culoarea timestamp-ului/textului sa fie alba, din cate am inteles. Cum pot folosi acest lucru sa schimb culoarea? Adica nu stiu cum sa pun in loc de "-1" ca sa am o culoare dorita.

Edited by Gugustiuc.
Link to comment
Share on other sites

@Gugustiuc. ideea e în felul următor, poti salva maxim circa 100 de caractere intr-o cheie dintr-un fisier .ini, lucru valabil si pentru chatmsg la trimiterea mesajelor, daca se depaseste aceasta limita vei primi crash.

Sa iti mai zic si altceva, este o munca de chinez sa faci un script care sa detecteze daca s-a ajuns la limita de 100 de caractere de pe un rand si sa treaca automat pe urmatorul. Singura solutie este sa verifici care este exact limita maxima de caractere permisa de samp (eu stiam ca este undeva la 100 +-) si sa te incadreze cu anuntul pe respectivul rand in acea limita, iar pentru al doilea rand sa ai alta comanda pentru ca dintr-o singura comanda este mult prea complicat.

Link to comment
Share on other sites

38 minutes ago, Tupi said:

@Gugustiuc. ideea e în felul următor, poti salva maxim circa 100 de caractere intr-o cheie dintr-un fisier .ini, lucru valabil si pentru chatmsg la trimiterea mesajelor, daca se depaseste aceasta limita vei primi crash.

Sa iti mai zic si altceva, este o munca de chinez sa faci un script care sa detecteze daca s-a ajuns la limita de 100 de caractere de pe un rand si sa treaca automat pe urmatorul. Singura solutie este sa verifici care este exact limita maxima de caractere permisa de samp (eu stiam ca este undeva la 100 +-) si sa te incadreze cu anuntul pe respectivul rand in acea limita, iar pentru al doilea rand sa ai alta comanda pentru ca dintr-o singura comanda este mult prea complicat.

 

Mersi pentru raspuns!

 

Nu incerc sa fac ca dintr-o comanda sa imparta textul in doua. Ce incerc este ca sa poti salva de dinainte doua texte separate (cu doua comenzi separate), iar apoi cu o a treia comanda sa poti trimite ambele texte.

 

O sa pun niste chestii de debug ca sa testez limitele mentionate de tine.

Link to comment
Share on other sites

3 hours ago, Gugustiuc. said:

Mersi pentru raspuns!

Mai ai nevoie de ajutor ?

Link to comment
Share on other sites

Cu placere! Dacă mai ai nevoie de ajutor nu ezita să revii cu un topic nou.

 

:topic_closed:

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.