Jump to content

DiBlaine

Users
  • Content Count

    105
  • Donations

    0.00 EUR 
  • Joined

  • Last visited

  • Days Won

    4
  • Points

    0 [ Donate ]
  • Time Online

    2h 37m 24s

DiBlaine last won the day on May 14

DiBlaine had the most liked content!

1 Follower

About DiBlaine

  • Rank
    Legend

Recent Profile Visitors

246 profile views
  1. Scuze ca dau off topic, dar el zicea ca vrea sa foloseasca id-ul ala altundeva in gamemode. Si da, nu e cea mai buna idee ceea ce am i am zis eu, ca ajungand la 10k linii deja array-ul e prea mare pentru a stoca doar un id si e cam inutil si prost conceput iti dau dreptate, dar nu avem de unde sa stim ce vrea el sa faca cu acel id. Ceea ce i-am zis eu, a fost doar o idee pentru ca pur si simplu baiatu nu s-a gandit cum ar putea face ... si m am gandit direct la variabila de tip array, pt ca variabila statica nu l ajuta deloc aici. E o comunitate de scripting aici, si nu o zic din rautate asta dar toti pana la urma am venit aici pe comunitatea asta sa invatam oamenii care nu stiu cat stim noi si sa invatam de la cei mai buni ca noi. Pentru unii din noi e usor in a rezolva problemele daca sunt cunostinte si ani de experienta in spate. Acum da-i si tu o idee la baiat daca ceea ce am zis eu a fost prost gandit, arata-i cum ar putea face, degeaba ii spui ca trebuie sa stocheze id-ul intr-o variabila care nu e de tip array si apoi trebuie sa gandeasca cum sa faca sa nu piarda acel id ca, 100% nu are de unde stii cum sa faca asta. Ar trebuii sa se mai adauge la modelul de postare o intrebare pentru care cei care au probleme sa explice ce sistem doreste sa faca, ca sa putem sa ii invatam cat mai corect. Si serios, n-am zis-o asta din rautate, nu-ti dau hate, nu te cunosc, nu te judec, nu ma dau mare scripter, am venit aici ca sa incerc sa il ajut pentru ca toti am fost odata si odata in situatia celor care dau de probleme si vor sa invete sa le rezolve.
  2. // VARIABILA GLOBALA new WarSQLID[99+1]; // MODIFICI 99 IN FUNCTIE DE CATE LOGURI CREZI CA VEI AVEA(poti avea 100, poti avea 1000, poti avea si 10000, depinde cat de populat este serverul si in functie de cate war-uri se dau pe server) DACA VEI AVEA MAI MULT DE 99 DE WAR-URI IN BAZA DE DATE, ORICE WARSQLID DE LA 99 IN SUS VA AVEA VALOAREA 0, ADICA WarSQLID[100] = 0 / WarSQLID[101] = 0; ETC // AICI STOCHEZI ID-UL DE LA WAR IN VARIABILA GLOBALA new sqlid = cache_insert_id(); WarSQLID[sqlid] = sqlid; Daca nu te descurci, lasa partea in care inserezi war-ul in baza de date.
  3. Pai, pentru prima data trebuie sa creezi in baza de date 7/8 tabele, ID - Text - PosX - PosY - PosZ - Interior - VirtualWorld - Type(type e optional, in caz ca vrei si alte tipuri de pickupuri, inafara de clasicele pickup-uri in forma de i, acele galbene). Tabelele PosX - PosY - PosZ trebuie sa le creezi de tip FLOAT si Name trebuie sa il creezi de tip VARCHAR, la lungime pui 50(modifici in functie de cat de lungi vor fi textele pe care le vei avea la pickup-uri), iar in rest celelalte le creezi de tip INT, iar la ID sa nu uiti sa selectezi A_I(Auto Increment). Apoi trebuie sa le definiesti variabilele de ex: #define MAX_PICKUPS 50 // aici modifici in functie de cate pickup-uri vrei sa ai pe server enum pickups { pickupID, pickupText[50], // string-ul il maresti in functie de cat de lungi vor fi textele pe care le vei avea la pickup-uri FLOAT:pickupPosX, FLOAT:pickupPosY, FLOAT:pickupPosZ, pickupInt, pickupVW, pickupPickup, Text3D:pickupLabel // daca lasi optionalul sterge linia asta /* //OPTIONAL Text3D:pickupLabel, pickupType */ //OPTIONAL // STERGE ULTIMELE 3 LINII DACA NU VREI OPTIONALUL }; new PickupsInfo[MAX_PICKUPS][pickups], serverPickups = 0; Apoi trebuie sa le incarci din baza de date de ex: function LoadPickups() { new Cache: db = mysql_query(SQL, "SELECT * FROM `pickups` ORDER BY `pickups`.`ID` ASC"); new x, result[50], string[50]; for(new i, j = cache_get_row_count (); i != j; ++i) { serverPickups ++; cache_get_field_content(i, "ID", result); x = strval(result); PickupsInfo[x][pickupID] = x; cache_get_field_content(i, "Text", result); format(PickupsInfo[x][pickupText], 50, result); cache_get_field_content(i, "PosX", result); PickupsInfo[x][pickupPosX] = strval(result); cache_get_field_content(i, "PosY", result); PickupsInfo[x][pickupPosY] = strval(result); cache_get_field_content(i, "PosZ", result); PickupsInfo[x][pickupPosZ] = floatstr(result); cache_get_field_content(i, "Interior", result); PickupsInfo[x][pickupInt] = strval(result); cache_get_field_content(i, "VirtualWorld", result); PickupsInfo[x][pickupVW] = strval(result); // OPTIONAL // cache_get_field_content(i, "Type", result); PickupsInfo[x][pickupType] = strval(result); // OPTIONAL // PickupsInfo[x][pickupPickup] = CreateDynamicPickup(PickupsInfo[x][pickupType], 23, PickupsInfo[x][pickupPosX], PickupsInfo[x][pickupPosY], PickupsInfo[x][pickupPosZ], PickupsInfo[x][pickupVW], PickupsInfo[x][pickupInt], -1, 30.0); PickupsInfo[x][pickupPickup] = CreateDynamicPickup(1239, 23, PickupsInfo[x][pickupPosX], PickupsInfo[x][pickupPosY], PickupsInfo[x][pickupPosZ], PickupsInfo[x][pickupVW], PickupsInfo[x][pickupInt], -1, 30.0); format(string, sizeof(string), "SQL Pickup ID: %d\n%s", PickupsInfo[x][pickupID], PickupsInfo[x][pickupText]); PickupsInfo[x][pickupLabel] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, PickupsInfo[x][pickupPosX], PickupsInfo[x][pickupPosY], PickupsInfo[x][pickupPosZ], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, PickupsInfo[x][pickupVW], PickupsInfo[x][pickupInt], -1, 10.0); } printf("Pickups: %d", serverPickups); cache_delete(db); return 1; } Ti-am facut toata partea de incarcare si definire a pickup-urilor din baza de date, acum comanda de creeare a pickup-urilor din joc: YCMD:createpickup(playerid, params[], help) { if(serverPickups == 50) return SCM(playerid, -1, "Ai deja 50 de pickp-uri create pe server!"); // OPTIONAL // new int, vw, type, ptext[50], inputtext[50], query[256], string[128]; // OPTIONAL // if(sscanf(params, "s[50]iii", inputtext, int, vw, type)) return SCM(playerid, COLOR_GREY, "USAGE: {FFFFFF}/createpickup <text> <interior> <virtualworld> <type>"); new int, vw, ptext[50], inputtext[50], query[256], string[128]; if(sscanf(params, "s[50]ii", inputtext, int, vw)) return SCM(playerid, COLOR_GREY, "USAGE: {FFFFFF}/createpickup <text> <interior> <virtualworld>"); if(strlen(inputtext) == 0 || strlen(inputtext) > 49) return SCM(playerid, -1, "Introdu un text intre 0 si 49 caractere!"); new Float: x, Float: y, Float: z; GetPlayerPos(playerid, x, y, z); format(ptext, 50, inputtext); // OPTIONAL // mysql_format(SQL, query, sizeof(query),"INSERT INTO `pickups` (`Text`, `PosX`, `PosY`, `PosZ`, `Interior`, `VirtualWorld`, `Type`) VALUES ('%s', '%f', '%f', '%f', '%d', '%d', '%d')", ptext, x, y, z, int, vw, type); mysql_format(SQL, query, sizeof(query),"INSERT INTO `pickups` (`Text`, `PosX`, `PosY`, `PosZ`, `Interior`, `VirtualWorld`) VALUES ('%s', '%f', '%f', '%f', '%d', '%d')", ptext, x, y, z, int, vw); new Cache: result = mysql_query(SQL, query); new pid = cache_insert_id(); serverPickups++; cache_delete(result); // OPTIONAL // PickupsInfo[pid][pickupID] = pid; PickupsInfo[pid][pickupPosX] = x; PickupsInfo[pid][pickupPosY] = y; PickupsInfo[pid][pickupPosZ] = z; PickupsInfo[pid][pickupInt] = int; PickupsInfo[pid][pickupVW] = vw; PickupsInfo[pid][pickupType] = type; format(PickupsInfo[pid][pickupText], 50, inputtext); PickupsInfo[pid][pickupID] = pid; PickupsInfo[pid][pickupPosX] = x; PickupsInfo[pid][pickupPosY] = y; PickupsInfo[pid][pickupPosZ] = z; PickupsInfo[pid][pickupInt] = int; PickupsInfo[pid][pickupVW] = vw; format(PickupsInfo[pid][pickupText], 50, inputtext); format(string, sizeof(string), "Pickup-ul cu SQL id-ul %d a fost creeat pe server(total pickup-uri create: %d).", pid, serverPickups); SCM(playerid, COLOR_WHITE, string); // OPTIONAL // PickupsInfo[pid][pickupPickup] = CreateDynamicPickup(PickupsInfo[pid][pickupType], 23, PickupsInfo[pid][pickupPosX], PickupsInfo[pid][pickupPosY], PickupsInfo[pid][pickupPosZ], PickupsInfo[pid][pickupVW], PickupsInfo[pid][pickupInt], -1, 30.0); PickupsInfo[pid][pickupPickup] = CreateDynamicPickup(1239, 23, PickupsInfo[pid][pickupPosX], PickupsInfo[pid][pickupPosY], PickupsInfo[pid][pickupPosZ], PickupsInfo[pid][pickupVW], PickupsInfo[pid][pickupInt], -1, 30.0); format(string, sizeof(string), "SQL Pickup ID: %d\n%s", PickupsInfo[pid][pickupID], PickupsInfo[pid][pickupText]); PickupsInfo[pid][pickupLabel] = CreateDynamic3DTextLabel(string, 0xFFFFFFFF, PickupsInfo[pid][pickupPosX], PickupsInfo[pid][pickupPosY], PickupsInfo[pid][pickupPosZ], 100, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, PickupsInfo[pid][pickupVW], PickupsInfo[pid][pickupInt], -1, 10.0); return 1; } Acum tu o sa trebuiasca sa iti faci o comanda cu care sa poti muta pozitia pickup-ului sau sa modifici textul / type-ul(in caz ca il pui).
  4. Da-ne si noua codul sursa, acela cand playerul isi seteaza adresa de email.
  5. Incearca: https://pastebin.com/ttJCzz7r
  6. Arata-ne si noua codul unde folosesti functia PutVehicleInPNS.
  7. Ai incercat sa faci un debug la 'Stage'? Sa vezi daca valoarea din baza de date corespunde cu cea de pe server(dupa restart)?
  8. Te-ai asigurat ca incarci 'Stage-ul' din baza de date?
  9. Cele mai folosite limbaje de programare in ziua de azi sunt: C++, JavaScript, HTML, PHP. Eu ti-as recomanda sa incepi usor cu C++, este destul de usor si in plus C++ este folosit si in limbajul de programare PAWN care este folosit la randul lui la editarea/crearea unor scripturi pentru developmentul unui server de SA:MP.
  10. if(InWar[factionid] != 0) CheckIfPlayerIsOnTurf(playerid); // asta o adaugi intr-un timer de 1 secunda function CheckIfPlayerIsOnTurf(playerid) { if(IsPlayerInTurf(playerid, InWarTurf[PlayerInfo[playerid][pMember]]) && GetPVarInt(playerid, "PlayerOnTurf") == 0) { SendClientMessage(playerid, -1, "Ai intrat pe turf si ai fost transferat in alt VW."); SetPlayerVirtualWorld(playerid, worldid); SetPVarInt(playerid, "PlayerOnTurf", InWarTurf[PlayerInfo[playerid][pMember]]); }else if(!IsPlayerInTurf(playerid, InWarTurf[PlayerInfo[playerid][pMember]]) && GetPVarInt(playerid, "PlayerOnTurf") != 0) { SendClientMessage(playerid, -1, "Ai iesit de pe turf si ai fost transferat in VW 0."); SetPlayerVirtualWorld(playerid, 0); DeletePVar(playerid, "PlayerOnTurf"); }return 1; } // InWar - variabila in care stocam id-ul factiunii care are un war activ // IsPlayerInTurf - functia cu care verificam daca playerul este pe turful pe care este desfasurat war-ul // InWarTurf - variabila in care stocam id-ul turfului pe care este desfasurat war-ul
×
×
  • Create New...