Moderat Posted July 2, 2021 Share Posted July 2, 2021 (edited) 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 July 2, 2021 by Gugustiuc. Link to comment Share on other sites More sharing options...
Tupi Posted July 3, 2021 Share Posted July 3, 2021 @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. 1 Link to comment Share on other sites More sharing options...
Tupi Posted July 4, 2021 Share Posted July 4, 2021 @Gugustiuc. ai reușit să rezolvi problema? Link to comment Share on other sites More sharing options...
Moderat Posted July 4, 2021 Author Share Posted July 4, 2021 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 More sharing options...
Moderat Posted July 5, 2021 Author Share Posted July 5, 2021 (edited) 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 July 5, 2021 by Gugustiuc. Link to comment Share on other sites More sharing options...
Tupi Posted July 5, 2021 Share Posted July 5, 2021 @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 More sharing options...
Moderat Posted July 5, 2021 Author Share Posted July 5, 2021 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. 1 Link to comment Share on other sites More sharing options...
Tupi Posted July 5, 2021 Share Posted July 5, 2021 3 hours ago, Gugustiuc. said: Mersi pentru raspuns! Mai ai nevoie de ajutor ? Link to comment Share on other sites More sharing options...
Moderat Posted July 5, 2021 Author Share Posted July 5, 2021 1 minute ago, Tupi said: Mai ai nevoie de ajutor ? Momentan nu, mersi. Link to comment Share on other sites More sharing options...
Tupi Posted July 5, 2021 Share Posted July 5, 2021 Cu placere! Dacă mai ai nevoie de ajutor nu ezita să revii cu un topic nou. Link to comment Share on other sites More sharing options...
Recommended Posts