Jump to content

Banditul

Membru
  • Content Count

    778
  • Joined

  • Last visited

  • Days Won

    52

Banditul last won the day on November 17

Banditul had the most liked content!

Community Reputation

144 Popular

About Banditul

  • Rank
    Le communist bork
  • Birthday 01/03/1997

Profile Information

  • Sex
    Masculin
  • Name in game
    Banditul
  • Level of knowledge
    Mediu

Contact Methods

  • Discord
    Banditul#1549

Recent Profile Visitors

2,026 profile views
  1. Partea cea mai grea din a invata e sa incepi. Ca sfat as zice sa iei functii de aici samp wiki ( scripting basics si scripting functions ) sa citesti ce fac si dupa sa le testezi si intr-un gm sa vezi cu ochii tai ca fac ce se spune, dupa sa incerci sa vi cu idei bazate pe acele functii si sa crezi mici sisteme cu ele.
  2. Astea sunt cunostiintele pe care am reusit sa le adun in mare parte in 2 luni ( desigur am lucrat si inainte cu C# dar din cauza facultati nu prea am putut dar acum sunt mai liber ). Din pacate, sunt doar la inceput si multe lucruri din gamemode inca pot fi modificate sa fie si mai bune dar inca nu am invatat cum, adica ce se afla in gamemode nu e tocmai inca in stadiul in care sa ofere un exemplu bun de "asa trebuie facut"
  3. Din cate observ, exista un container care contine playeri, masini etc si nu observ sa aibe legatura cu samp deci cred ca e posibil sa ai loop pe alt thread dar nu sunt 100%, undeva la 98%.
  4. ^^ Cheama pawn prin intermediul sampgdk. De fapt, codul pur C# e rulat separat de serverul de samp prin runtime-ul de la .NET ( din ce am inteles de la ikkentim ) cea ce contribuie la performanta, doar functiile native folosesc pawn ( de aceea nu poti folosi functiile in alt thread ), pe scurt pluginul de S# e intermediarul dintre runtime si pawn. De asemenea un alt beneficiu e async/await cu care poti chema C# fara a bloca thread-ul principal, modalitate foarte folositoare pentru query catre baza de date pentru care nu e necesar ca rezultatul sa fie procesat acum( ca mysql_query/mysql_tquery dar mai rapid ). Sunt foarte multe benificii in a folosi C# chiar si C++ fata de pawn. Pana acum e mult mai rapid decat pawn dar nu pot spune exact pana gm nu e complet pentru a avea o mai buna comparatie. As fi vrut ca totul sa ruleze in C# doar ca na, samp nu e scris nativ in C# si nici nu e open-source pentru a face asta
  5. Din cate stiu poti scrie servere in FiveM cu Lua, C# sau JavaScript. Daca as fi avut un pc mai bun sau GTA 5 as fi incercat de mult sa fac un server cu C# dar na gta 5 cota ceva ( mai aels cand nu ai deloc bani )
  6. Nota: Daca nu ai cunostinte minime in C# acest proiect nu este pentru tine. Am revenit cun alt gamemode de sa-mp scris in C# si de data aceasta. Acest gamemode nu mai este doar ceva basic ca cel postat anterior ( Click ). ( Exact un an de la postarea aceluia wow) Acest gamemode este o incercare de rescrie originalul gamemode PPC Trucking ( Click ) intr-un limbaj modern cu o mai buna performanta si o mult mai usoara organizare decat anticul pawn. Gamemode-ul se foloseste de .NET Core 3 ( care a adus o mai buna performanta decat .NET Framework ), SampSharp si de Dapper ( pentru partea de contact cu baza de date ). Am renuntat la Entity Framework ( ce e folosit de gamemode-ul basic pentru ca Dapper ofera o performanta uriasa fata de EF ) Ce contine acest gamemode? Momentan nu prea multe sisteme/lucruri. Am inceput sa lucrez la el acum 27 zile ( cat am putut ). Lista de modicari se poate gasi aici Click Ideea initala era de a copia 1:1 PPC Trucking dar cu cat dezvolt mai mult proiectul si cu cat invat si mai mult despre C#, proiectul in timp va fi complet diferit cu noi ideei si visuri. Motivul pentru care doresc si vreau sa folosesc C# se gaseste in topicul postat anterior care contine gamemode-ul basic. Edit: Un alt mare avantaj pentru C# este abilitatea de a folosi un debugger cu care e foarte usor sa prinzi erori si sa stii exact ce contine fiecare variabila in parte Link-ul proiectului: GitHub Asa cum spune si titul topicului, proiectul este "Work in progress" ceea ce inseamna ca nu e/nu va fi pentru o periodata complet si gata de a fi folosit. orice sugestie sau sfat e bine venit. Si asa cum am mentionat si in topicul anterior, un gm RPG sau RP ( vedem ) va fi conceput tot cu C# ( desigur daca altcineva nu decide sa faca unu inainte ). C#
  7. CMD:comanda(playerid, params[]) { inline InlineCallback() { new date[40], id, ip[16], text[144], dialogMessage[144], rows = cache_num_rows(); if(rows) { for(new row = 0; row < rows; row++) { cache_get_value_name_int(row, "id", id); cache_get_value_name(row, "date", date); cache_get_value_name(row, "ip", ip); cache_get_value_name(row, "text", text); format(dialogMessage, sizeof(dialogMessage), "%s%i(%s). %s (%s)\n", dialogMessage, id, ip, text, date); } ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Log ", dialogMessage, button1[], button2[]); } } new ret = mysql_tquery_inline(g_Mysql, "SELECT * FROM Logs", using inline InlineCallback); if(!ret) printf("some error happened, check the MySQL log!"); } Asta ar fi idea mea generala, evident acum editezi tu cum vrei, doar am incercat sa dau un exemplu mediocru (a fost destul de dificil de scris dupa ce nu mai ai atins pawn de luni) PS: https://github.com/maddinat0r/samp-mysql-yinline-include (nu e nevoie sa foloseti asta desigur ce am dat mai sus dar mie unu imi place codul care poate fi executat inline) CMD:comanda(playerid, params[]) { new Cache:cache = mysql_query(g_Mysql, "SELECT * FROM Logs"); new date[40], id, ip[16], text[144], dialogMessage[144], rows = cache_num_rows(); if(rows) { for(new row = 0; row < rows; row++) { cache_get_value_name_int(row, "id", id); cache_get_value_name(row, "date", date); cache_get_value_name(row, "ip", ip); cache_get_value_name(row, "text", text); format(dialogMessage, sizeof(dialogMessage), "%s%i(%s). %s (%s)\n", dialogMessage, id, ip, text, date); } ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Log ", dialogMessage, button1[], button2[]); } cache_delete(cache); } Aici ^^ implementarea clasica PS1: Asta e MySQL r40+, daca folosesti alta versiune va trebui sa modifici ce e nevoie
  8. Asta a zis, ca scoate tot bagat de Y_Less, daca nu o sa vina cu ceva inlocuitor 0.3.9 va fi degeaba pentru multi dintre noi depindem de textdraw, settimerex si cel mai important zcmd sau alte procesoare de comenzi care folosesc functionalitatea respectiva
  9. https://www.burgershot.gg/showthread.php?tid=845 Cum Y_Less a confirmat, meniurile nu sunt singurele lucruri care pot fi scoase din 0.3.9
  10. @[El.Capo] sa inteleg ca inseamna ca nu e definit i pe undeva? Pentru ca din explicatia ta toate warniguriel care contin referinta la variabila i inseamna ca acel i nu e definit desi exista o singura eroare acolo care face referinta la faptul ca nu e definit To OP: Inseamna ca undeva in codul tau exista o posibilitate sa ai un astfel de cod: for(new i; i < x; i++) { //ceva cod aici //si mai mult cod for(new i; i < y; i++) { } } (in loc de for poate deasemenea sa fie foreach iar x si y sunt valori precum MAX_PLAYERS) De preferat ar fi sa arati si ceva cod care sa faca referinta la cel putin un warning si/sau eroare Si cum a spus si El.Capo acele constante referitoate la crates le definesti folosind #define (daca ma mai serveste memoria despre cum functioneaza rpg): #define pRespectx nr
  11. Nu poti compara un string cu un numar in felul acesta si in nici un caz nu poti stoca un string intr-o variabila de tip numeric si inputtext nu are playerid, e string are doar index de la 0 la 144(parca) nu stiu exact care e maximum pe care un player il poate scrie intr-un dialog if(IsNumeric(inputtext)) { new bani = strval(inputtext); if(bani <= PlayerInfo[playerid][pBani]) { PlayerInfo[playerid][pBani] -= bani; PlayerInfo[playerid][pBaniBanca] += bani; new string[128]; format(string, sizeof(string), "Ai depozitat %s", bani); SCM(playerid, galben, string); GivePlayerMoney(playerid, bani); } else { SCM(playerid, rosu, "EROARE: Nu ai suficienti bani!"); } } else { SCM(playerid, rosu, "EROARE: Trebuie sa introduci doar cifre!"); } Si nu pui punct si virgula la un if, niciodata
  12. Daca vrei performanta SAMP GDK C++ Sau SampSharp (recomand).NET Core chiar a adus o enorma performanta un ultimul timp mai ales la capitolul Garbage Collector
  13. https://forum.sa-mp.com/showthread.php?t=261581 AddStaticVehicle poate fi folosit doar la OnGamemodeInit sau OnFilterscriptInit si rezolvarea ta e nula
  14. Gresit. Gm de trucking are acest job de train driver si merge foarte bine. Singura chestie e ca nu poti spawna trenurile dinamic, trebuie spawnate cu AddStaticVehicle la OnGamemodeInit
  15. Foarte bune raspunsurile pacat ca va scapa ceva foarte important Loading plugin: streamer Failed. Loading plugin: crashdetect Failed. Loading plugin: sscanf Failed. Care sunt sursa erori
×
×
  • Create New...

Important Information

This site uses cookies. By continuing browsing, you agree to the use of this information. For more details, see Terms of Use and Privacy Policy.