BGT de la Blastbay Studios, un scripting accesibil si facil
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Da, problema era la ultimele doua if-uri, unde nu se specifica clar cand sa spuna ca e mai mare si cand sa spuna ca e mai mic.
Daca vrei sa faci jocuri in limba romana si sa folosesti obiectul "tts_voice", poti instala gratuit vocea Sapi5 ESpeach.
Vocea poate fi luata de aici. Pentru realizat jocul e suficient, apoi daca e cazul se poate cumpara Carmen sau ce stiu ce mai exista Sapi5 in romana.
Daca vrei sa faci jocuri in limba romana si sa folosesti obiectul "tts_voice", poti instala gratuit vocea Sapi5 ESpeach.
Vocea poate fi luata de aici. Pentru realizat jocul e suficient, apoi daca e cazul se poate cumpara Carmen sau ce stiu ce mai exista Sapi5 in romana.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
-
- Capitan
- Mesaje: 503
- Membru din: 12 Sep 2009, 21:00
- Localitate: Bucuresti
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
ESpeak este in romana si cu voce masculina si cu voce feminina. In momentul instalarii, daca ai avea setarile bine facute la calculator, adica cele de Regiune si Limba, ar si aparea direct in editurile alea de la instalare sa puna si varianta RO.
Cu ocazia asta, recomand setarea de catre oricine vorbitor de limba romana din Romania in Regional and Language Settings sa fie locatia Romania si Standardele si formatele pe romana. Asta conteaza de multe ori la afisarea unor site-uri, instalarea unor programe etc. Practic in procesul de programare se poate prevedea ca un site sa se incarce intr-o anume limba, un program sa se instaleze si sa afiseze anumite lucruri pe stilul unei tari/limbi etc.
Cu ocazia asta, recomand setarea de catre oricine vorbitor de limba romana din Romania in Regional and Language Settings sa fie locatia Romania si Standardele si formatele pe romana. Asta conteaza de multe ori la afisarea unor site-uri, instalarea unor programe etc. Practic in procesul de programare se poate prevedea ca un site sa se incarce intr-o anume limba, un program sa se instaleze si sa afiseze anumite lucruri pe stilul unei tari/limbi etc.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
-
- Capitan
- Mesaje: 503
- Membru din: 12 Sep 2009, 21:00
- Localitate: Bucuresti
am incercat sa fac si eu un meniu de joc si nu mi-a iesit.
imi da urmatoarea eroare.
File: C:\Documents and Settings\Stefan\My Documents\joc\game.bgt
Line: 36 (1)
Error: Unexpected end of file
si am sa dau si paste la script.
#include "dynamic_menu.bgt"
void main()
{
show_game_window("magic wold menu");
wait(5);
tts_voice speech;
sound mainmenu;
mainmenu.stream("mainmenu.ogg");
mainmenu.play_looped()
mainmenu.vvolume=-13;
dynamic_menu meniul;
int menu_result;
meniul.allow_escape=true;
meniul.wrab=true;
meniul.add_item_tts("start new adventure");
meniul.add_item_tts("test speakers");
meniul.add_item_tts("options");
meniul.add_item_tts("quit");
menu_result=meniul.run("welcome to magic wold. a game creat by stefan ilioaica", true);
if(menu_result==-1)
{
speech.speak_wait("An error has occured.")
exit();
}
if(menu_result==0)
{
speech.speak_wait("exiting game");
exit()
}
if(result_menu==1)
{
speech.speak_wait(" game started");
// aici incepe meniul start game.
mainmenu.close();
imi da urmatoarea eroare.
File: C:\Documents and Settings\Stefan\My Documents\joc\game.bgt
Line: 36 (1)
Error: Unexpected end of file
si am sa dau si paste la script.
#include "dynamic_menu.bgt"
void main()
{
show_game_window("magic wold menu");
wait(5);
tts_voice speech;
sound mainmenu;
mainmenu.stream("mainmenu.ogg");
mainmenu.play_looped()
mainmenu.vvolume=-13;
dynamic_menu meniul;
int menu_result;
meniul.allow_escape=true;
meniul.wrab=true;
meniul.add_item_tts("start new adventure");
meniul.add_item_tts("test speakers");
meniul.add_item_tts("options");
meniul.add_item_tts("quit");
menu_result=meniul.run("welcome to magic wold. a game creat by stefan ilioaica", true);
if(menu_result==-1)
{
speech.speak_wait("An error has occured.")
exit();
}
if(menu_result==0)
{
speech.speak_wait("exiting game");
exit()
}
if(result_menu==1)
{
speech.speak_wait(" game started");
// aici incepe meniul start game.
mainmenu.close();
Stefan
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Nu este complet, lipseste intr-adevar sfarsitul de fisier, ba chiar si de If.
Daca mai pui doua acolade inchise la sfarsitul codului si punct si virgula dupa doua randuri unde lipsesc, poate merge cu un singur item in meniu.
Lipseste punct si virgula de la finalul urmatoarelor doua randuri:
mainmenu.play_looped()
speech.speak_wait("An error has occured.")
Eu sugerez sa reiei cumva treptat manualul sa intelegi exact cum stau lucrurile cu functiile, expresiile, blocurile de cod, deci intr-un cuvant sintaxa, mai simplu spus modul de redactare.
Nu stiu daca e usor de inteles prin imitarea unor coduri facute anterior, ai sarit direct la utilizarea unei clase cum este "dynamic_menu".
Cel mai bine ar fi sa incerci diverse adunari, mesaje create in functie de tot felul de factori simpli etc.
Eventual o sa incep eu treptat cu cate un exemplu simplu aici pe forum si explicarea fiecarui rand, astfel ar fi un mic ajutor pentru start.
Repet insa, a invata limbajul este destul de simplu, a il folosi este partea mai complicata, este ca si cum ai sti sa vorbesti, dar nu sa scrii romane. Oricum, mici schite tot se vor putea face.
Daca mai pui doua acolade inchise la sfarsitul codului si punct si virgula dupa doua randuri unde lipsesc, poate merge cu un singur item in meniu.
Lipseste punct si virgula de la finalul urmatoarelor doua randuri:
mainmenu.play_looped()
speech.speak_wait("An error has occured.")
Eu sugerez sa reiei cumva treptat manualul sa intelegi exact cum stau lucrurile cu functiile, expresiile, blocurile de cod, deci intr-un cuvant sintaxa, mai simplu spus modul de redactare.
Nu stiu daca e usor de inteles prin imitarea unor coduri facute anterior, ai sarit direct la utilizarea unei clase cum este "dynamic_menu".
Cel mai bine ar fi sa incerci diverse adunari, mesaje create in functie de tot felul de factori simpli etc.
Eventual o sa incep eu treptat cu cate un exemplu simplu aici pe forum si explicarea fiecarui rand, astfel ar fi un mic ajutor pentru start.
Repet insa, a invata limbajul este destul de simplu, a il folosi este partea mai complicata, este ca si cum ai sti sa vorbesti, dar nu sa scrii romane. Oricum, mici schite tot se vor putea face.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Cineva m-a rugat in seara asta sa fac un mic script care sa faca un beep din 10 in 10 secunde.
M-am gandit sa pun sursa si aici, astfel mai poate fi un exemplu.
Eu cel putin ma bucuram cand gaseam pe ici pe colo cate un exemplu explicat din care sa invat si sa ma prind de lucruri noi.
asadar, pun codul, iar unde cred de cuvinta, voi explica cate un rand, precedand comentariul de doua slashuri ca sa se poata da copy paste la tot codul, fara sa fie incurcat interpretorul de textul in plus.
M-am gandit sa pun sursa si aici, astfel mai poate fi un exemplu.
Eu cel putin ma bucuram cand gaseam pe ici pe colo cate un exemplu explicat din care sa invat si sa ma prind de lucruri noi.
asadar, pun codul, iar unde cred de cuvinta, voi explica cate un rand, precedand comentariul de doua slashuri ca sa se poata da copy paste la tot codul, fara sa fie incurcat interpretorul de textul in plus.
Cod: Selectaţi tot
timer c;
//se instantiaza un obiect de tip cronometru cu numele "c".
sound s;
//se instantiaza un obiect de tip sunet cu numele "s".
int cron=0;
//o variabila integer pentru a prelua intruna proprietatea "elapsed" a cronometrului.
void main()
{
show_game_window("Beep la 10 secunde");
wait(5);
s.load("beep.wav");
//incarcam sunetul "beep.wav" aflat in acelasi folder cu fisierul bgt.
c.restart();
//restartam sa inceapa de la 0 timer-ul "c".
while(true)
{
cron=c.elapsed;
//se atribuie intruna pe parcursul rularii lui cron, valoarea in milisecunde a timer/ului care merge tot mai departe.
if(cron%10000<20)
{
/* Se calculeaza in if daca restul impartirii lui cron la 10000 este mai mic de 20. Asta pentru ca 10000 de milisecunde reprezinta 10 secunde. Am pus mai mic de 20 sa fie sigur ca se nimereste sa dea un rezultat, daca era ==0, era riscant sa se sara des. */
s.play();
//Se apeleaza metoda play, adica se face beep-ul daca se indeplineste conditia.
}
if(key_pressed(KEY_ESCAPE))
{
//Un alt if care verifica daca se apasa tasta escape pentru a face exit().
exit();
}
wait(5);
}
}
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
-
- Capitan
- Mesaje: 503
- Membru din: 12 Sep 2009, 21:00
- Localitate: Bucuresti
salut.
am incercat sa fac un mic scriptulet in care daca dai enter pe el sa inceapa sa cante o muzica, doar ca nu merge.
cred ca nu am facut ceva bine, ori am omis ceva.
eroare nu da dar cand dau enter imi iese din fisier.
iata script-ul.
v-as ruga sa imi spuneti unde este problema.
multumesc.
am incercat sa fac un mic scriptulet in care daca dai enter pe el sa inceapa sa cante o muzica, doar ca nu merge.
cred ca nu am facut ceva bine, ori am omis ceva.
eroare nu da dar cand dau enter imi iese din fisier.
iata script-ul.
Cod: Selectaţi tot
void main()
{
show_game_window("joc");
sound fundalmenu;
fundalmenu.stream("fundalmenu.wav");
fundalmenu.play_looped();
fundalmenu.volume=-13;
}
multumesc.
Stefan
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Nu ar fi ceva gresit in esenta, doar ca nu exista nimic care sa spuna ca sunetul de fundal, "muzica", ar trebui sa continue.
Practic, in forma scrisa de tine se intampla urmatoarele:
In primul rand ai creat o fereastra numita "joc" prin expresia care contine functia specifica:
show_window_game("Joc");
Aceasta fereastra ar trebui sa ramana activa "in timp ce" se desfasoara ceva, adica "while" in engleza inseamna in timp ce, dar revin imediat in legatura cu acest lucru.
Ai creat obiectul de tip sunet numit "fundalmenu":
sound fundalmenu;
Ai trecut apoi la metodele obiectului creat:
fundalmenu.stream("fundalmenu.wav"); //se incarca in mod stream fisierul numit "fundalmenu.wav".
fundalmenu.play_looped(); //se porneste sunetul in mod looped, adica repetare la nesfarsit atata timp cat nu este intrerupt prin metoda "stop" sau prin functia exit(), in timp ce se desfasoara scritpul.
fundalmenu.volume=-13; //ai setat proprietatea volum la minus 13, 0 fiind volumul normal al fisierului.
Dupa toate acestea a fost incheiat tot scriptul, fara nici o continuitate.
Mai jos este o varianta pentru a auzi sunetul de fundal pana la apasarea tastei "s". De mentionat ca e neaparat ca un fisier numit "fundalmenu.wav" sa existe in acelasi folder cu fisierul care are extensia ".bgt".
Dupa cod dau mai multe explicatii.
Pana la randul "while(true)" nu este ceva diferit fata de ce ai facut tu, doar ca am pus proprietatea volum inainte de instructiunea "play_looped()", astfel incat pe cand incepe, volumul sa fie deja setat. Altfel, porneste sunetul, iar pentru o fractiune de secunda apuca sa fie la volumul standard, "0", apoi se da brusc la "minus 13".
while(true)
Zice ca atata vreme cat e adevarat, adica atata vreme cat fereastra "Joc" este activa, am putea spune, sa se intample ceva.
Se deschide cu acolada blocul de instructiuni din "while".
Aici este in primul rand un
wait(5);
adica asteapta 5 milisecunde repetitiv atata vreme cat "while(true)".
Fara aceasta asteptare, procesorul ar fi utilizat la maxim, iar sunetul ar putea sacada la unele calculatoare.
Tot in blocul "while" este o conditie if.
Acest if spune ca:
Daca se apasa tasta "s", sa se intample ceva.
if(key_pressed(KEY_S))
Deci, functia "key_pressed()" are intre parantezele rotunde parametrul tasta. Denumirile tuturor tastelor pot fi gasite in Helpul BGT, in Appendix A, Keyboard Constants. Pentru tasta "s" numele este "KEY_S", cu litere mari.
Se deschide apoi iar acolada pentru a spune ce sa se intample daca se apasa "s".
Aici apare:
exit();
aceasta functie scoate din ram tot ce tine de script, in cazul de fata distruge fereastra "Joc" si obiectul "fundalmenu".
Se inchid apoi trei acolade:
una de la "if",
alta de la "while",
ultima de la "void main()".
Incearca sa urmaresti rand cu rand, caracter cu caracter codul si pe baza lui mai fa ceva modificari astfel incat sa intelegi cum stau lucrurile.
Asa te prinzi de limbajul asta, facand tot felul de incercari cu rabdare si chef.
Poti intreba exact despre un rand pe care nu il intelegi, despre o idee etc.
Succes!
Practic, in forma scrisa de tine se intampla urmatoarele:
In primul rand ai creat o fereastra numita "joc" prin expresia care contine functia specifica:
show_window_game("Joc");
Aceasta fereastra ar trebui sa ramana activa "in timp ce" se desfasoara ceva, adica "while" in engleza inseamna in timp ce, dar revin imediat in legatura cu acest lucru.
Ai creat obiectul de tip sunet numit "fundalmenu":
sound fundalmenu;
Ai trecut apoi la metodele obiectului creat:
fundalmenu.stream("fundalmenu.wav"); //se incarca in mod stream fisierul numit "fundalmenu.wav".
fundalmenu.play_looped(); //se porneste sunetul in mod looped, adica repetare la nesfarsit atata timp cat nu este intrerupt prin metoda "stop" sau prin functia exit(), in timp ce se desfasoara scritpul.
fundalmenu.volume=-13; //ai setat proprietatea volum la minus 13, 0 fiind volumul normal al fisierului.
Dupa toate acestea a fost incheiat tot scriptul, fara nici o continuitate.
Mai jos este o varianta pentru a auzi sunetul de fundal pana la apasarea tastei "s". De mentionat ca e neaparat ca un fisier numit "fundalmenu.wav" sa existe in acelasi folder cu fisierul care are extensia ".bgt".
Dupa cod dau mai multe explicatii.
Cod: Selectaţi tot
void main()
{
show_game_window("joc");
sound fundalmenu;
fundalmenu.stream("fundalmenu.wav");
fundalmenu.volume=-13;
fundalmenu.play_looped();
while (true)
{
wait(5);
if(key_pressed(KEY_S))
{
exit();
}
}
}
while(true)
Zice ca atata vreme cat e adevarat, adica atata vreme cat fereastra "Joc" este activa, am putea spune, sa se intample ceva.
Se deschide cu acolada blocul de instructiuni din "while".
Aici este in primul rand un
wait(5);
adica asteapta 5 milisecunde repetitiv atata vreme cat "while(true)".
Fara aceasta asteptare, procesorul ar fi utilizat la maxim, iar sunetul ar putea sacada la unele calculatoare.
Tot in blocul "while" este o conditie if.
Acest if spune ca:
Daca se apasa tasta "s", sa se intample ceva.
if(key_pressed(KEY_S))
Deci, functia "key_pressed()" are intre parantezele rotunde parametrul tasta. Denumirile tuturor tastelor pot fi gasite in Helpul BGT, in Appendix A, Keyboard Constants. Pentru tasta "s" numele este "KEY_S", cu litere mari.
Se deschide apoi iar acolada pentru a spune ce sa se intample daca se apasa "s".
Aici apare:
exit();
aceasta functie scoate din ram tot ce tine de script, in cazul de fata distruge fereastra "Joc" si obiectul "fundalmenu".
Se inchid apoi trei acolade:
una de la "if",
alta de la "while",
ultima de la "void main()".
Incearca sa urmaresti rand cu rand, caracter cu caracter codul si pe baza lui mai fa ceva modificari astfel incat sa intelegi cum stau lucrurile.
Asa te prinzi de limbajul asta, facand tot felul de incercari cu rabdare si chef.
Poti intreba exact despre un rand pe care nu il intelegi, despre o idee etc.
Succes!
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Limba in care se poate afisa un site nu depinde deloc de setarile regionale de pe computerul vizitatorilor ci doar de headerul HTTP Accept-Language care este setat (pentru Internet Explorer) din "Internet Options / Language settings".Manu scrie:Cu ocazia asta, recomand setarea de catre oricine vorbitor de limba
> romana din Romania in Regional and Language Settings sa fie locatia
> Romania si Standardele si formatele pe romana. Asta conteaza de
> multe ori la afisarea unor site-uri, instalarea unor programe etc. Practic
> in procesul de programare se poate prevedea ca un site sa se incarce
> intr-o anume limba.
Setarile regionale este bine sa fie facute in functie de programele pe care le foloseste fiecare pe computerul propriu. Daca se seteaza de exemplu pentru limba romana iar utilizatorul foloseste o sinteza in limba engleza cu JAWS, cititorul de ecran nu va citi prea usor inteligibil numerele lungi care vor fi separate cu mai multe puncte in loc sa fie separate cu virgule care nu sunt citite de JAWS. De asemenea pot aparea incompatibilitati cu unele programe care nu pot fi setate pentru limba romana. Daca utilizatorul nu este nevoit sa foloseasca astfel de programe, poate sa aleaga fara probleme toate setarile regionale pentru limba romana.
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Eu nu am setat in setarile Internet Explorer pe romana, dar mi se incarcaGoogle in romana. Deci si internet explorer se pune pe romana daca vede ca sistemul e pe romana, se merge pe principiul tranzitivitatii, cel putin asa cred. Pana la urma, tot mai bine este cred sa fie baza pe romania, urmand ca apoi sa fie mutate in limba engleza sau alta programele exceptie.
De setarea din Internet Explorer nu stiam, chiar as fi curios de functia in PHP care returneaza limba detectata, am vrut sa fac acest lucru la o pagina, daca e romana sa apara in romana, daca nu sa fie in engleza.
De setarea din Internet Explorer nu stiam, chiar as fi curios de functia in PHP care returneaza limba detectata, am vrut sa fac acest lucru la o pagina, daca e romana sa apara in romana, daca nu sa fie in engleza.
Ultima oară modificat 17 Noi 2010, 23:34 de către Manu, modificat de 3 ori în total.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
-
- Capitan
- Mesaje: 503
- Membru din: 12 Sep 2009, 21:00
- Localitate: Bucuresti
salut.
am reusit sa fac si eu codul doar urmandu-l pe cel dat, dar atunci cand incerc sa il fac singur nu reusesc.
O sa il pun maine asa cum il fac ca acum nu prea am rabdare.
si, ceva noutati domnu Manu?
veti mai scoate ceva?
parca zicea Andreea ca va scoate un joc, dar nu mai stiu exact despre ce era vorba.
am reusit sa fac si eu codul doar urmandu-l pe cel dat, dar atunci cand incerc sa il fac singur nu reusesc.
O sa il pun maine asa cum il fac ca acum nu prea am rabdare.
si, ceva noutati domnu Manu?
veti mai scoate ceva?
parca zicea Andreea ca va scoate un joc, dar nu mai stiu exact despre ce era vorba.
Stefan
- Manu
- General de divizie
- Mesaje: 4120
- Membru din: 02 Feb 2007, 01:15
- Localitate: Cluj-Napoca
- Contact:
Pana la urma m-am hotarat ca urmatorul joc complet pe care il voi face sa fie tablele. Varianta in JAWS scripting este limitata de imposibilitatea de a fi jucat pe internet, de aceea trec in C++ in BGT.
Aceeasi conceptie ca la Pontes Backgammon existent, doar ca se va putea online si se va definitiva ca restrictionari. Astept noua versiune de BGT in care eexista si suport HTTP, exista functii pentru a vorbi online cu partenerul de joc etc.
Aceeasi conceptie ca la Pontes Backgammon existent, doar ca se va putea online si se va definitiva ca restrictionari. Astept noua versiune de BGT in care eexista si suport HTTP, exista functii pentru a vorbi online cu partenerul de joc etc.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Din cate stiu eu, Google localizeaza direct adresa IP, folosind o baza de date.Manu scrie:Eu nu am setat in setarile Internet Explorer pe romana, dar mi se incarcaGoogle in romana. Deci si internet explorer se pune pe romana daca vede ca sistemul e pe romana, se merge pe principiul tranzitivitatii, cel putin asa cred...
Mi s-a intamplat ca, folosind proxy-uri din alte tari, sa-mi apara Google in limba respectivelor tari.
Vortex Website
Maximum de confort, cu minimum de efort.
Maximum de confort, cu minimum de efort.
As vrea sa stiu in ce stadiu se afla acest joc.Andreea Neagu scrie:La Anjo avem deja in dezvoltare un prim joc audio, bazat pe ideea unui turnir.
Jocul va fi in engleza, cu textele citite via SAPI5 iar daca lucrurile merg bine si voi gasi actori amatori care sa isi "doneze" vocea acestui proiect, probabil vom avea si self-voicing in romana.
-
- Colonel
- Mesaje: 1511
- Membru din: 16 Ian 2007, 23:15
- Localitate: Bucuresti
- Contact:
Se dezvolta incet-incet, insa din lipsa de timp probabil ca vom mai amana un pic lansarea demoului.
Andreea - Elena Neagu
Designer www.pontes.ro
Anjo.ro - Magazin virtual de produse pentru nevăzători
Şcoala pentru toţi - site dedicat elevilor nevăzători
Designer www.pontes.ro
Anjo.ro - Magazin virtual de produse pentru nevăzători
Şcoala pentru toţi - site dedicat elevilor nevăzători