Jump to content

MAC1

Membru
  • Posts

    66
  • Joined

  • Last visited

    Never

Everything posted by MAC1

  1. Sigur! Da-mi un PM cu o adresa de YM la care te pot contacta!
  2. Multumesc tuturor! Sa aveti parte si voi de tot ce va doriti! S-a dus si asta...sunt mai batran cu 1 an.
  3. Logic ca apare...daca ai pus functia care trimite mesajul (BroadCast in cazul de fata) intr-un for. Si nu apare de 20 de ori, apare in functie de numarul de playeri de pe server. Daca ai 400 de jucatori, apare de 400 de ori. Scoate functia din for si pune-o mai jos putin.
  4. De ce spui ca astepti pareri rele sau bune daca pe cele rele nu le accepti? Macar modifica si baga la cap daca ti-am aratat ceva!
  5. Tu vrei sistem de inregistrare pe site, corect? Asta se rezuma la un limbaj de programare web, nu are nici cea mai mica legatura cu SA:MP-ul. De ce vrei sa construiesti lucruri complexe cand tu nu ai macar baza?
  6. Start -> run -> cmd -> ipconfig Teoretic o sa-ti arate acelasi ip care ti-l arata si pe site-urile alea. Sau roaga pe cineva care are server samp sa faca repede o functie getIP, apoi cand te loghezi pe serverul lui o sa-i apara lui IP-ul tau, dupa care ti-l spune tie. later edit: Stai, tu nu iti gasesti IP-ul sau nu iti arata serverul pe IP-ul respectiv?
  7. MAC1

    ajutor cu timpul

    Nu ai nevoie de timer pentru o chestie de genul... Declari o variabila care sa retina un UTS (Unix TimeStamp) Cand jucatorul intra in primul checkpoint, se salveaza UTS-ul curent in variabila. Cand jucatorul intra in urmatorul checkpoint faci: UTS-ul curent - UTS-ul din variabila (de la primul checkpoint) si il decodezi. Astfel, lucrezi mai eficient si dpdv al memoriei si al timpului de executie (la nivel mic, ma rog...).
  8. MAC1

    Ajutor pawno

    http://www.sa-mp.ro/forum/index.php?topic=401.0
  9. De ce te apuci sa scrii un tutorial daca nu ai cunostintele necesare?! Le dai altora informatii gresite... Nu am stat sa citesc tot tutorialul pentru ca a fost de-ajuns sa vad a doua bucata de cod pusa de tine acolo... Fa o diferenta intre ce ai scris tu si ce scriu eu: enum pInfo { AdminLevel, Level, Cash, Password }; new PlayerInfo[MAX_PLAYERS][pInfo]; Imi pare rau, dar nu poti sa te apuci de scris tutoriale cand tu nu stii sa faci nici macar pentru tine!
  10. Nu am mai verificat sa-mp.com de ceva vreme, asa ca nu am avut ocazia sa vad ce s-a mai scos pe-acolo. Eficienta unui program / plugin nu consta doar in timpul lui de executie... Fac 19 pe 19, luna asta. Varsta e irelevanta in programare. O sa mai lucrez ceva pe el, ii mai adaug cateva functii, dar e un plugin mai mult demonstrativ, pentru ca nu ma pot compara cu "granzii" sa-mp-ului si nu ar avea rost sa mai dezvolt si eu un plugin MySQL performant din moment ce exista 2 bune. Am de gand sa scot pe viitor un plugin cu permisiuni pentru grupuri / fiecare jucator in parte. Ceva in genul permisiunilor TeamSpeak, daca stii, doar ca pentru sa:mp; adica ceva foarte bun pentru administrarea serverelor. Mai am de gand sa fac un soft pentru serverele sa:mp prin care un jucator sa poata avea acces la statisticile lui fara sa intre in sa:mp, dar asta dupa ce termin cu admiterea la facultate (care e chiar pe 19)... Cum am spus, varsta e irelevanta in programare. Nu-s pe urmele lui Dan, nici nu intentionez sa fiu, chiar daca el e un programator mult mai bun ca mine.
  11. Ai uitat sa pui ; dupa declararea variabilei si a antetului functiei: new tutorial1; //-------------- forward IsATutorialCar(carid); Apoi, codul asta public IsATutorialCar(carid) { if((carid == tutorial1)) { return 1; } return 0; } poate fi scris asa: public IsATutorialCar(carid) { if(carid == tutorial1) return 1; return 0; }
  12. @burnfire In for nu se pune virgula, ci punct si virgula. Modifica si in postul initial. for(new g=0,g<100,g++) for(new g = 0; g < 100; g++) E o diferenta intre astea doua. Aia careia ii setezi tu valoarea se numeste variabila. Functia poate cel mult sa returneze o valoare sau sa o primeasca drept parametru.
  13. E acelasi lucru cu ce a spus DarkyTheAngel... Daca-i dai include-ul lui X, el poate edita chestia asta fara probleme. Daca nu-i dai include-ul, nu o sa poata compila gm-ul. Deci nu reprezinta o metoda sigura "anti-stergere credite". In plus, cel ce a facut topicul vrea sa stie cum sa faci ca atunci cand modifici creditele sa primeasca ala eroare, nu tot timpul. later edit: Rock, y_lock face acelasi lucru pe care il face si un plugin "protectie", doar ca y_lock e mai usor (oarecum).
  14. Atata timp cat o sa aiba acces la fisiere, o sa modifice si daca s-a apucat de 5 minute de programare (o sa intrebe pe sa-mp.ro/com si tot o sa scoata directivele alea). Cum am spus, singura varianta 100% functionabila e un plugin, dar te complici aiurea.
  15. Your argument is invalid. Daca cineva pune mana pe script, crezi ca i-ar fi greu sa stearga bucata asta de cod? Din moment ce are acces la toate fisierele pwn / inc, cum sterge creditele, asa poate sterge si "protectia" asta.
  16. Doar din pwn / inc nu ai cum. Poti face un plugin care sa afiseze mereu creditele pe server si de care sa depinda acel server (sa aiba anumite functii indispensabile gm-ului)
  17. Aveam aseara destul de mult de invatat pentru admiterea la facultate si am zis ca cel mai bine e, cand ai de invatat, sa nu inveti. Asa ca m-am apucat de un plugin MySQL (nu ca nu ar mai exista deja vreo 4, 2 dintre ele chiar foarte bune). Nu va asteptati la un super plugin, ca am lucrat doar vreo 3-4 ore pe el, deci nici nu se pune problema de multi-threading, sau cine stie ce alte smecherii. E doar un plugin super-simplu, cu cateva functii in el. (sper sa ii fac niste upgrade-uri pe parcurs). Momentan am facut doar versiunea pentru windows deoarece Sfantul Ubunutu nu mai vrea sa coopereze, deci trebuie sa-l instalez iar. Functii: native mysql_connect(hostname[], username[], password[], database[]); native mysql_debug(mode); native mysql_close(); native mysql_ping(); native mysql_query(query[]); native mysql_free_result(); native mysql_store_result(); native mysql_num_rows(); native mysql_real_escape_string(source[], dest[]); native mysql_fetch_row(result[]); //la asta inca lucrez, crasheaza sv Download binary + source: http://www.fileshare.ro/e29710754 PS: Nu aveti niciun motiv sa folositi plugin-ul asta pe un server oficial (ma rog, nici nu prea puteti, ca-i doar versiune win momentan); folositi plugin-ul lui Dan, e cel mai bun in domeniu. Daca aveti nelamuriri / intrebari / ceva de adaugat, sunteti liber sa postati.
  18. Sa zicem ce-i in regula, dar metoda nu e noua deloc. In plus, e cam ineficient, ca masina trebuie pusa mereu din script.
  19. Depinde pentru ce folosesti PC-ul. Daca nu-i pentru jocuri -> Ubuntu sau CentOS. Daca-i pentru jocuri -> windows 7.
  20. MAC1

    Range

    Am trecut si eu prin asta...in clasa a XI-a cand am dat de analiza matematica. La algebra aveam 8-9, pe cand la analiza numai 5 si 6 (ma rog, am luat si un 2). Insa in clasa a XII-a a inceput sa imi placa mult analiza si am avut numai 10 pe linie, dar m-a stricat algebra cu vreo 2 note de 8 si mi-a iesit media 9 (si pe primul si pe al doilea semestru). //later edit: Am deviat de la subiect pentru ca omul m-a intrebat ceva si era urat sa nu-i raspund.
  21. MAC1

    Range

    Nu au ce sa caute la tutoriale, pentru ca nu-s tutoriale...sunt doar niste explicatii. Nu-s menite sa ajute utilizatorii de pe forumul asta in scripting. Si daca stii geometrie tridimensionala, si daca nu stii, la nivelul la care se programeaza in PAWN, nu ai nevoie de informatii asa "complexe" (ma rog, ele nu-s complexe deloc, sunt destul de simple). In fine, ideea principala la tot ce am scris mai sus e ca functia IsPlayerInRangeOfPoint(params) verifica daca raza sferei formata din coordonate si "range" e mai mare decat distanta de la jucator, la centrul sferei. PS: Am terminat liceul, sunt in proportie de 80% deja student la info.
  22. MAC1

    Range

    Asa...am zis ca daca tot e sarbatoare azi, sa mai iau putin o pauza de la activitatile mele si sa-ti explic cum sta treaba cu functia asta. Explicatia e asemanatoare cu cea de la GetPlayerSpeed (vezi topicul cereri tutoriale), pentru ca pe asta se bazeaza cam toata geometria tridimensionala. Bun. Avem urmatoarea situatie generala: Ca sa intelegi cat de cat, trebuie sa fixam cateva lucruri: - chestia aia nu e un cerc, ci o sfera cu centrul O in originiea sistemului. - liniile punctate sunt puse acolo sa arate faptul ca sfera aia nu e cerc, si ca are volum. - linia portocalie (notata cu R) e raza sferei, adica segmentul care pleaca din originie si ajunge pana la marginea sferei, iar in joc, ea reprezinta distanta (range). Originea (O) a sistemului xOy reprezinta coordonata tridimensionala in care vrem sa verificam daca se afla jucatorul. Cum R este distanta pentru care vrem sa facem verificarea, se creeaza automat acolo o sfera de raza R si centru O. (imagineaza-ti ca din punctul O, adica de la coordonatele alea x,y,z din functie, duci segmente de lungime R in toate directiile, adica duci un numar infinit de segme...asa se creeaza o sfera). In functia noastra, avem data raza (range), deci tot ce trebuie sa facem este sa vedem cum este distanta de la jucator la centru sferei fata de raza (daca e mai mare, inseamna ca jucatorul nu e in sfera, iar daca e mai mica, jucatorul se afla in sfera). Toate bune si frumoase, noi stim lungimea razei (adica distanta de la origine (O) la un punct oarecare de pe sfera) (pentru ca e parametru in functie), insa nu stim distanta la care se afla jucatorul fata de origine (adica distanta de la O la A, lungimea segmentului OA). Pentru a calcula distanta la care se afla jucatorul fata de origine (O), trebuie sa "descompunem" segmentul OA in functie de segmentele aflate pe cele 3 axe (ox,oy si oz). Asta-i partea de geometrie de clasa a 7-a, o sa trec mai repede pe-aici pentru ca am mai explicat-o in topicul cu GetPlayerSpeed. ___________ B proiectia lui A in planul DBC => triunghi OBA dreptunghic => OA^2 = OB^2 + BA^2 => OA^2 = OB^2 + OE^2. D proiectia lui B in planul EOD => triunghi ODB dreptunghic => OB^2 = OD^2 + DB^2 = OD^2 + OC^2 Din cele de mai sus => OA^2 = OC^2 + OD^2 + OE^2. Acum ca am "descompus" OA-ul pe cele 3 coordonate, trebuie sa obtinem coordonatele in punctul A. (se afla cu functie -> GetPlayerPos(params)). Sa presupunem ca le-am salvat in punctul P(x,y,z) = P(C,D,E) -> adica proiectiile punctului A pe toate cele 3 axe. Originea, cum am spus la inceput, are si ea 3 coordonate x0,y0,z0, adica o scriem ca O(x0,y0,z0) -> x0,y0,z0 sunt parametrii din functie. Analitic, aflam distanta OA care este egala cu OA = (C-x0)^2 + (D-y0)^2 + (E-z0)^2 = o sa ne dea un numar. Si de aici, pur si simplu comparam cele doua segmente: OA si R, daca OA e mai mare decat R => jucatorul nu e in sfera, altfel => e in sfera. Acum, ideea e ca eu am simplificat putin treaba, ca sa fie mai usor de inteles, pentru ca sfera aia trebuia sa fie pusa si ea intr-un alt sistem de axe xOy, dar nu schimba prea mult problema, ca s-ar fi identificat niste versori din ambele sisteme, insa daca s-ar uita un profesor de mate peste chestia asta mi-ar reprosa lucrul asta. _____ Daca nu ai inteles anumite lucruri lasa un reply sau da-mi PM si-ti raspund cand am timp.
  23. MAC1

    Range

    Teoretic, nu e nici in cerc, nici in patrat, e in sfera, pentru ca e vorba de un sistem de referinta tridimensional. Daca vrei, o sa fac o "analiza" amanuntita a functiei si o s-o postez pe-aici. Dar nu stiu sigur cand o sa am ceva timp liber, ca-s destul de ocupat in perioada asta.
  24. Descarca plugin-urile sscanf si YSF si pune-le in folderul plugins.
×
×
  • 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. For more details you can also review our Terms of Use and Privacy Policy.