Jump to content

WiDuAlK

V.I.P
  • Posts

    1.337
  • Joined

  • Last visited

  • Days Won

    95

Everything posted by WiDuAlK

  1. Uitati o conversatie care a inceput cu trimiterea unui link la un forum la toata lista. Mentionez ca persoana cu care sa inceput conversatia a trimis acel link, nu eu. Vad ca in Romania , cu putini oameni poti vorbi frumos. Eu am vorbit frumos cu respectivul , dar na , educatia isi spune cuvantul aici. Nu m-am coborat la nivelul lui inferior pentru ca ma respect mai intai pe mine, si dupa pe el. Aceasta este conversatia: The xHoT: http://excessrp.com/ claudiu_sharingen: ma, fara suparare, dar sti cantecul ala: "da nu ne pasa, da nu ne pasa!" cam asa e si cu forumul excessrp The xHoT: da, îmi bag pula curva de mă-ta The xHoT: claudiu_sharingen: da... trist The xHoT: pentru mine, nu claudiu_sharingen: ba pentru tine, ca visezi si nu am cu cine vorbi, eh pana la urma si tu faci parte din categoria romanilor fara viitor... The xHoT: să-mi bag pula în mă-ta de sclav The xHoT: mă-ta e fără viitor The xHoT: luați-aș toți morți-n pulă de la A-Z claudiu_sharingen: clar nu te-am injurat, dar vad ca nu am cu cine discuta, eu port un dialog normal , tu demonstrezi prostia si... ca esti doar un pustan, nu ma cobor la mintea ta, indiferent cine ai fi The xHoT: da îmi bag pula în mă-ta claudiu_sharingen: daca ai puteao macar, hai ca ma plictisesc cu persoane ca tine, dupa ce treci printr-o scoala, poti intra in conversatie cu mine civilizat, daca nu du-te citeste o carte Ascundere mesaje recente (F3) The xHoT: bă sclavule taci dq The xHoT: te crezi mai presus, din punctul tău de vedere dar în realitate ești un sclav, slăbănog ce stă și tastează la PC-ul lui de căcat The xHoT: că-mi bag pula în mă-ta The xHoT: una două claudiu_sharingen: ba tu de unde plm ma cunosti? probabil mi-ai adauugat de aici http://forum.sa-mp.ro/user/16750-widualksamp/ , dar proasta idee The xHoT: da iară îmi bag pula în mă-ta Nu va dau id de Y!M pentru ca as incalca regulamentul si chiar nu am chef ca aceasta persoana sa emane din prostia lui si la alti.
  2. Bine omule. Tu ai prostia asta de aici care iti incurca tot scriptul: if((PlayerData[playerid][pAdmin] >= 1) && (PlayerData[playerid][pAgent] >= 0)) { return 1; } Deci iti dau mai multe variante de comanda, tu o folosesti pe care ai nevoie, nu stiu exact ce vrei tu defapt, dar alegi din acestea. Uite comenzile facute de mine, la care ai nevoie de sscanf(include, plugin .dll si .so) 1)Daca vrei ca doar adminii sa dea aceasta comanda pune asta: if(strcmp(cmd, "/pm", true) == 0) { new targetid; if(sscanf(params,"u",targetid)) return SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); GetPlayerName(targetid, giveplayer, 20); GetPlayerName(playerid, sendername, 20); if((PlayerData[playerid][pAdmin] < 1) return SendClientMessage(playerid, COLOR_RED, "Nu poti folosi aceasta comanda!"); if(targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "Acest jucator nu este conectat!"); format(string, sizeof(string), "(( PM de la %s: %s ))", sendername, (result)); SendClientMessage(targetid, COLOR_YELLOW, string); format(string, sizeof(string), "(( PM catre %s: %s ))", giveplayer, (result)); SendClientMessage(playerid, COLOR_YELLOW, string); return 1; } 2)sau daca vrei si agenti si admini sa foloseasca aceasta comanda uite aici: if(strcmp(cmd, "/pm", true) == 0) { new targetid; if(sscanf(params,"u",targetid)) return SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); GetPlayerName(targetid, giveplayer, 20); GetPlayerName(playerid, sendername, 20); if(targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "Acest jucator nu este conectat!"); if(PlayerData[playerid][pAdmin] >= 1 || PlayerData[playerid][pAgent] >= 1) { format(string, sizeof(string), "(( PM de la %s: %s ))", sendername, (result)); SendClientMessage(targetid, COLOR_YELLOW, string); format(string, sizeof(string), "(( PM catre %s: %s ))", giveplayer, (result)); SendClientMessage(playerid, COLOR_YELLOW, string); } else return SendClientMessage(playerid, COLOR_RED, "Nu poti folosi aceasta comanda!"); return 1; } 3)Daca vrei si playerii sa foloseasca aceasta comanda uite-o pe asta: if(strcmp(cmd, "/pm", true) == 0) { new targetid; if(sscanf(params,"u",targetid)) return SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); GetPlayerName(targetid, giveplayer, 20); GetPlayerName(playerid, sendername, 20); if(targetid == INVALID_PLAYER_ID) return SendClientMessage(playerid, COLOR_RED, "Acest jucator nu este conectat!"); format(string, sizeof(string), "(( PM de la %s: %s ))", sendername, (result)); SendClientMessage(targetid, COLOR_YELLOW, string); format(string, sizeof(string), "(( PM catre %s: %s ))", giveplayer, (result)); SendClientMessage(playerid, COLOR_YELLOW, string); return 1; } Asta ca sa iti arat, ca nu e asa de greu sa creezi o comanda ca asta. Daca o vrei pe aia a ta poti folosi din urmatoarele: 1)Daca vrei pentru agenti si admini foloseste-o p-asta: if(strcmp(cmd, "/pm", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); return 1; } giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, 20); GetPlayerName(playerid, sendername, 20); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[128]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); return 1; } if(PlayerData[playerid][pAdmin] >= 1 || PlayerData[playerid][pAgent] >= 0) { format(string, sizeof(string), "(( PM de la %s: %s ))", sendername, (result)); SendClientMessage(giveplayerid, COLOR_YELLOW, string); format(string, sizeof(string), "(( PM catre %s: %s ))", giveplayer, (result)); SendClientMessage(playerid, COLOR_YELLOW, string); return 1; } else return 1; } } return 1; } 2)Daca vrei doar pentru admini foloseste-o p-asta: if(strcmp(cmd, "/pm", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); return 1; } giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, 20); GetPlayerName(playerid, sendername, 20); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[128]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); return 1; } if(PlayerData[playerid][pAdmin] >= 1) { format(string, sizeof(string), "(( PM de la %s: %s ))", sendername, (result)); SendClientMessage(giveplayerid, COLOR_YELLOW, string); format(string, sizeof(string), "(( PM catre %s: %s ))", giveplayer, (result)); SendClientMessage(playerid, COLOR_YELLOW, string); return 1; } else return 1; } } return 1; } 3)iar daca vrei pt toti playerii foloseste-o p-asta: if(strcmp(cmd, "/pm", true) == 0) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); return 1; } giveplayerid = ReturnUser(tmp); if(IsPlayerConnected(giveplayerid)) { if(giveplayerid != INVALID_PLAYER_ID) { GetPlayerName(giveplayerid, giveplayer, 20); GetPlayerName(playerid, sendername, 20); new length = strlen(cmdtext); while ((idx < length) && (cmdtext[idx] <= ' ')) { idx++; } new offset = idx; new result[128]; while ((idx < length) && ((idx - offset) < (sizeof(result) - 1))) { result[idx - offset] = cmdtext[idx]; idx++; } result[idx - offset] = EOS; if(!strlen(result)) { SendClientMessage(playerid, COLOR_GREY, "/pm <playerid/name> <text>"); return 1; } format(string, sizeof(string), "(( PM de la %s: %s ))", sendername, (result)); SendClientMessage(giveplayerid, COLOR_YELLOW, string); format(string, sizeof(string), "(( PM catre %s: %s ))", giveplayer, (result)); SendClientMessage(playerid, COLOR_YELLOW, string); return 1; } } return 1; } Sper ca tu sa inveti din ce ti-am dat. Nu am facut o demonstratie ca eu sunt "mare si tare/beton/number 1 etc.) ci doar ca sa iti arat ca e foarte simplu sa o faci sa mearga.
  3. Stai stai... tu vi cu comenzi din gm,dar nu cunosti ce e pe acolo... eu iti recomand sa iti creezi tu acele comenzi:) , nu sunt pe pc, dar cand intru cred ca am sa ti-o fac eu cu tot cu explicatie
  4. Si unde vrei sa se salveze datele, pe ini?
  5. Poftim una bucata tutorial: si te folosesti de cache_get_field_content sau cache_get_field_content_int, depinde ce vrei sa faci, te folosesti la callback-ul in care se extrage datele.
  6. dai +1 daca ti-a placut
  7. Ai una bucata cod aici: format(string,sizeof(string),"UPDATE users SET `ClanTag`='%s',`Clan`='2' WHERE `name`='%s'",tag,name2); mysql_query(SQL,string); asta iti face update la clanTag. Daca vrei sa scapi de ea sterge tot ce tine de ea.
  8. ia vezi in semnatura mea cele 3 tutoriale;)
  9. Salutare stimaţi utilizatori, am revenit cu partea a 3-a a tutorialului "Cum să creezi o nouă facţiune de la 0".În tutorialele precedente aţi învăţat cum să adăugaţi facţiunea, cum să faceţi spawn, culoare playerului şi celelalte functi. În acest tutorial vom face 2 lucruri. Primul lucru este că vom adaugă respectivei facţiuni maşini.Am văzut că se plânge lumea, au adăugat nişte maşini şi că i sau dat peste cap id lor. Ei în tutorialul acesta vom explică de ce se întâmplă această, şi cum să o evităm. Partea a 2-a a tutorialului va constă în adăugarea GATE-urilor(porţilor) cu restricţie dacă eşti liderul facţiunii x sau membrul facţiunii x. Ne vom folosi de MAP EDITOR pentru adăugarea mai rapidă a facţiunilor. Dacă nu ştiţi să folosiţi Map Editor, aveţi AICI un tutorial. Bun , dacă tot am vorbit despre ce o să facem, să îi dăm drumul şi practicii. Mergem în Map Editor şi plasăm 5 vehicule. Noi în momentul de faţă, nu avem nici un vehicul introdus.Că să vedeţi id vehiculelor mergeţi aici: Vehicule Adăugăm vehiculele la publicul OnGameModeInit. // acestea sunt vehiculele de la PD CreateVehicle(596, 1544.9691, -1650.9399, 5.4536, 90.0000, -1, -1, 100); CreateVehicle(596, 1544.9491, -1654.9799, 5.4536, 90.0000, -1, -1, 100); CreateVehicle(596, 1544.9491, -1658.9999, 5.4536, 90.0000, -1, -1, 100); CreateVehicle(596, 1544.9491, -1662.8599, 5.4536, 90.0000, -1, -1, 100); CreateVehicle(596, 1544.9491, -1667.7000, 5.4536, 90.0000, -1, -1, 100); Acum mergem la inceput şi facem un callback de restricţie a id-urilor vehiculelor. Mai întâi vedem în GM id vehiculelor introduse cu "/dl" şi le notăm pe o foaie. Noi am pus 5 vehicule deci id-urile lor sunt 1 , 2 ,3 ,4 , 5. ATENŢIE!!! Nu este necesar să trecem toate vehiculele pe o foaie. Putem trece doar primul vehicul şi ultimul vehicul, pentru că de ele ne vom folosi. Mergem în pawn şi facem următoarele: forward PoliceCar(carid);// Se creaza callback-ul de restrictie public PoliceCar(carid)// se face publicul de restrictie { if((carid >= 1) && (carid <=5))// daca id la vehicul este intre 1 si 5 { return 1;// ii returnam 1 } return 0;// daca nu se afla intre 1 si 5 nu se returneaza nimic. } Bun , aşa facem şi la celelalte facţiuni, chiar dacă au return 0 la primul callback nu au nici o problema. Acum că am pus verificarea la id vehiculelor punem şi restricţie. Trebuie să facem următoarele: Mergem la publicul OnPlayerStateChange şi punem aşa: public OnPlayerStateChange(playerid, newstate, oldstate) { new newcar = GetPlayerVehicleID(playerid);// definim newcar ca id masinii in care sa urcat playerul. if(PoliceCar(newcar))// daca playerul se afla in masina de politie si { if(P_DATA[playerid][pMember] == 1 || P_DATA[playerid][pLeader] == 1) // daca este membru 1 sau lider 1 {}// Nu se intampla nimic. else//altfel , daca nu este nici lider 1 si nici member 1 { RemovePlayerFromVehicle(playerid); // il scoate din masina SendClientMessage(playerid,-1,"Nu faci parte din Police Departament!");// si ii da acest mesaj. } } return 1; } Perfect, acum mergem şi şi verificăm. Vedem că merge totul perfect. Aşa faceţi şi la celelalte facţiuni. Dacă observaţi, când băgaţi un filescript pe server, filescriptul respectiv conţinând nişte maşini, o să va dea id vehiculelor peste cap. De ce? Pentru că serverul ia mai întâi ce e pe filescripturi(în ordinea în care aţi adăugat în server.cfg) şi pe urmă ce e în GM, deci cumva dacă aveţi 5 maşini într-un filescript, ele vor avea id 1 2 3 4 5 iar cele de la Police Departament vor avea id 6 7 8 9 10. Că să nu se întâmple această aveţi posibilitatea de a face 2 chesti. 1) Introduceţi tot filescriptul în GM, vehiculele din fs punându-le ultimele ori 2)Copiaţi maşinile din fs(filescript) , le puneţi ultimele, ştergeţi din fs vehiculele, compilaţi fs şi compilaţi GM. Aşa nu veţi mai întâmpina probleme. Acum că ştim să restricţionăm maşini , mai trebuie şi porţi(gate). Aceste porţi vom face să se deschidă şi să se închidă. Se va închide într-un număr de timp. Noi vom seta 5 secunde pentru a se închide, adică după 5 secunde ce să coborât se va urcă înapoi. Mergem în map editor şi vom face următoarea: Potitia initiala Pozitia de coborare Acum mergem în pawn şi definim poartă aşa. // la inceputul GM new GatePD1; //La OnGameModeInit: GatePD1 = CreateObject(980, 1586.81323, -1637.93604, 14.95745, 0.00000, 0.00000, 0.00000); Acum că am definit poartă şi am adăugat-o, luăm poziţia coborâtă, adică unde se va duce poartă, adică o coboram. Bine , acum am demonstrat că am coborât-o. Voi trebuie să o coborâti sub pământ deoarece nu trebuie să se vadă. Salvăm undeva ambele coordonate ale obiectului: -poziţia iniţială -poziţia coborâtă adică acestea: CreateObject(980, 1586.81323, -1637.93604, 14.95745, 0.00000, 0.00000, 0.00000);// pozitia initiala CreateObject(980, 1586.81323, -1637.93604, 9.52512, 0.00000, 0.00000, 0.00000);// pozitia coborata. Acum trebuie să facem că poartă să se deschidă. Putem face prin 2 metode: -metodă comenzii -metodă apăsării pe tasta Facem mai întâi metodă apăsării pe tasta, cred şi cea mai la îndemână şi elegantă, deoarece playerul nu mai trebuie să stea să scrie /deschidegate(exemplu), ci doar apasă o tasta. Tastele le luăm de aici: Tasta După cum am spus, la ambele metode trebuie să apelăm la un timer de move, adică poartă trebuie să coboare, dar şi să se ridice la loc(bine înţeles). Aşa că facem următoarele: Mergem la publicul OnPlayerKeyStateChange şi punem aşa: // alegem o tasta, eu amales tasta KEY_CROUCH deoarece apasa "H" cand e in masina si "C" cand nu este in masina. Voi alegeti orice tasta credeti ca vi s-ar potrivi. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if (newkeys & KEY_CROUCH )// daca apasa tasta KEY_CROUCH { if(P_DATA[playerid][pMember] == 1 || P_DATA[playerid][pLeader] == 1)// daca este lider sau member la factiunea cu nr 1(Police Departament) { if(IsPlayerInRangeOfPoint(playerid, 15, 1586.81323, -1637.93604, 14.95745))// daca este in raza portii //1586.81323, -1637.93604, 14.95745 - locatia portii //15 - distanta dintre poarta si player, adica daca este la max 15 metri de poarta { MoveObject(GatePD1, 1586.81323, -1637.93604, 9.52512, 5.0, 0.00000, 0.00000, 0.00000);// se muta obiectului // GatePD1 - dupa cum am definit obiectul, GatePD1 este poarta noastra // 586.81323, -1637.93604, 9.52512- pozitia lui de coborare // 5.0 viteza de deplasare in jos // 0.00000, 0.00000, 0.00000 - rotatiile acestuia, in cazul nostru nu se roteaza. Rotatiile sunt doar la alegere, dar e mai bine ca sa punem si aceasta pentru a nu intampina probleme SetTimer("MoveGatePd1",5000,0);// apelam la callback-ul MoveGatePd1 pentru a se inchide poarta, adica dupa 5 secunde sa se apeleze la callback SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!");// ii da acest mesaj } } } return 1; } // facem si callback-ul la care am apelat: forward MoveGatePd1();// cream callback-ul public MoveGatePd1()// cream publicul { MoveObject(GatePD,11586.81323, -1637.93604, 14.95745, 5.0, 0.00000, 0.00000, 0.00000);// mutam poarta // la fel ca in pasii de sus // GatePD1- obiectul nostru // 11586.81323, -1637.93604, 14.95745 - pozitia initiala // 5.0 - viteza de deplasare // 0.00000, 0.00000, 0.00000 - rotatiile obiectului, in momentul de fata nu se roteste deloc, deoarece a plecat de la aceasi rotatie si a ajuns la aceasi rotatie. return 1;// returnam 1. } -Metoda prin comanda Mergem la OnPlayerCommandText si punem asa: if (strcmp("/deschidepoarta", cmdtext, true, 10) == 0) { if(P_DATA[playerid][pMember] == 1 || P_DATA[playerid][pLeader] == 1)// daca este lider sau member la factiunea cu nr 1(Police Departament) { if(IsPlayerInRangeOfPoint(playerid, 15, 1586.81323, -1637.93604, 14.95745))// daca este in raza portii //1586.81323, -1637.93604, 14.95745 - locatia portii //15 - distanta dintre poarta si player, adica daca este la max 15 metri de poarta { MoveObject(GatePD1, 1586.81323, -1637.93604, 9.52512, 5.0, 0.00000, 0.00000, 0.00000);// se muta obiectului // GatePD1 - dupa cum am definit obiectul, GatePD1 este poarta noastra // 586.81323, -1637.93604, 9.52512- pozitia lui de coborare // 5.0 viteza de deplasare in jos // 0.00000, 0.00000, 0.00000 - rotatiile acestuia, in cazul nostru nu se roteaza. Rotatiile sunt doar la alegere, dar e mai bine ca sa punem si aceasta pentru a nu intampina probleme SetTimer("MoveGatePd1",5000,0);// apelam la callback-ul MoveGatePd1 pentru a se inchide poarta, adica dupa 5 secunde sa se apeleze la callback SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!");// ii da acest mesaj } } return 1; } ATENŢIE!!! Noi folosim CreateObject şi MoveObject. Dacă folosiţi STREAMER şi le creaţi cu CreateDynamicObject OBLIGATORIU mutaţi cu MoveDynamicObject, la fel şi invers. Nu va funcţiona nici odată altfel. Eu v-aş recomandă să folosiţi SREAMER-ul şi să creaţi obiectele cu el. De ce? Pentru că limita de obiecte în SĂ-MP este de 1000 de obiecte. De aceea, pentru a va lasă obiectele mai importante să le creaţi cu CreateObject. De ce e pusă această limita? Pentru binele clientului(când intraţi pe un server, voi sunteţi clientul adică jocul, nu serverul) deoarece mănâncă din RAM şi veţi avea lag dacă limita e mai mare sau infinită. NOTĂ! Ştiu că mulţi dintre voi începători , sau persoane puţin mai avansate citiţi aşa "răsfoind" sau mai deloc de am scris eu după "//" ,dar eu am explicat ce e cu fiecare funcţie şi cum se foloseşte, deoarece dacă nu ştiţi să creaţi aşa ceva , nu veţi putea dezvoltă un server , şi veţi veni la noi şi veţi spune "Nu , că nu ştiu, fă-mi tu.". Eu va explic, şi voi dacă citiţi şi încercaţi o dată, a două oară, a 3-a oară până va iese şi deprindeţi modul de gândire, veţi avansa, altfel nu aveţi cum. NOTĂ2!! Aveţi măcar bunul simt de a nu copia tutorialul şi a-l poştă în altă parte şi ai modifică creditele. Eu am muncit la aceste tutoriale, am adăugat si diacritice unde sa putut şi am încercat să explic pe cât posibil pe înţelesul tutuor. Această este marea mea rugăminte. Notă secundară! Dacă va plăcut acest tutorial, dacă va folosit acest tutorial sau dacă măcar îmi respectaţi muncă depusă, daţi + 1 la tutorialele postate de mine. Aşa văd că muncă mea e apreciată , şi voi poştă în continuare tutoriale. Cam atât a fost cu cele 3 părţi ale tutorialului, am încercat să va prezint cum se face o facţiune de la 0, nu că alte tutoriale pe care le-am văzut, şi care sunt cam pe lângă. Sper că va fost de folos , şi încercaţi să gândiţi când citiţi. Luaţi fiecare funcţie în parte şi o gândiţi, astfel veţi face performanţă.
  10. Bun equinox 5/10 pentru edit 9/10 pentru ce ai creat 0/10 pentru ca l-ai postat:| De ce naiba postezi GM frate pastreaza-l pentru tine ce mama naibii dai la alti care fac doar atat: Change Name, and i is creator.
  11. Update!!!
  12. asa-i, dar fiecare cu al sau stil
  13. Ba voi luati comenzile asa... fara sa ganditi? Nu stiti sa vi le creati invatati fratilor , cum doresti sa se teleporteze la un player daca nu i-ai definit acelui player coordonatele? uite aici , dar nu mai veniti cu chestii de genu /*============================================================================== Comanda: /goto ==============================================================================*/ CMD:goto(playerid,params[]) { if(IsPlayerConnected(playerid)) { if(gPlayerLogged[playerid] != 0) { new Float:PosX, Float:PosY, Float:PosZ, Float:PosIDX, Float:PosIDY, Float:PosIDZ, string[256], sendername[MAX_PLAYER_NAME], giveplayername[MAX_PLAYER_NAME], ID; if(sscanf(params, "u", ID)) return SendClientMessage(playerid, -1, ""PORTOCALIU"Scrie: "ALBASTRU2"/goto [Player ID]"); GetPlayerName(playerid, sendername, sizeof(sendername)); GetPlayerName(ID, giveplayername, sizeof(giveplayername)); SetPlayerPos(playerid, PosX, PosY , PosIDZ); SetPlayerPos(ID, PosIDX, PosIDY , PosIDZ); if(IsPlayerConnected(ID)) { if(ID != INVALID_PLAYER_ID) { if (PlayerInfo[playerid][pAdmin] >= 1 || PlayerInfo[playerid][pHelper] >= 1) { GetPlayerPos(ID, PosIDX, PosIDY, PosIDZ); if (GetPlayerState(playerid) == 2 || GetPlayerState(playerid) == 3) { new tmpcar = GetPlayerVehicleID(playerid); SetVehiclePos(tmpcar, PosIDX, PosIDY + 4, PosIDZ); TelePos[playerid][0] = 0.0; TelePos[playerid][1] = 0.0; LinkVehicleToInterior(tmpcar, GetPlayerInterior(ID)); SetVehicleVirtualWorld(tmpcar, GetPlayerVirtualWorld(ID)); SetPlayerInterior(playerid, GetPlayerInterior(ID)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(ID)); } else { SetPlayerPos(playerid, PosIDX, PosIDY + 2, PosIDZ); SetPlayerInterior(playerid, GetPlayerInterior(ID)); SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(ID)); } format(string, 256, ""GRI3"You have been teleported to: %s", giveplayername); SendClientMessage(playerid, -1, string); format(string, 256, ""PORTOCALIU"Admin Warning: "GALBEN"%s a folosit comanda "VERDE"/goto "GALBEN"si s-a teleportat la %s", sendername, giveplayername); AdminsMessage(-1, string); format(string, 256, ""PORTOCALIU"Helper Warning: "GALBEN"%s a folosit comanda "VERDE"/goto "GALBEN"si s-a teleportat la %s", sendername, giveplayername); HeadHelpersMessage(-1, string); GetPlayerPos(playerid, PosX, PosY, PosZ); GBPosX[playerid] = PosX; GBPosY[playerid] = PosY; GBPosZ[playerid] = PosZ; } else return SendClientMessage(playerid, -1, ""ALBASTRU2"Nu ai autorizatia sa folosesti aceasta comanda !"); } } else return SendClientMessage(playerid, -1, ""GRI3"Acest player nu este conectat"); } else return SendClientMessage(playerid, -1, ""ALBASTRU2"Nu esti conectat !"); } return 1; }
  14. Te rog sa explici mai bine , nu am inteles mai nimic , si nu stiu ce legatura are colors cu getdrugs....
  15. Ai dreptate, dar e mai bine asa, de ce? Pentru ca poate face update la altceva din factiune cu UpdateFaction, de pilda mats, drugs, money. De ce am prezentat aceasta metoda? Simplu. Findca una e sa folosesti bucata aia de cod pt update la fiecare comanda, callback si una e sa faci Update(playerid, ceva); si daca o faci bine de prima data bucata aia de cod nu vei avea probleme la update in baza de date folosind functia "Update" decat sa folosesti aceeasi bucata de cod, sa o scri de 100 de ori si din acelea 100 de ori de vro 40-50 de ori sa fie scris gresit ceva, la urma intrebandu-te "De ce mama naibii nu merge?". Prima data am vazut-o la tine si dupa la inca 3 gm-uri(cred ca erau edit-uri) si mi sa parut mai speciala prin simplitate.
  16. 1)Link Download: http://forum.sa-mp.com/showthread.php?t=570927 2) Platforma linux foloseste versiunea .so la plugin. platforma windows foloseste .dll.
  17. Versiunea mysql nu este cea actualiazata, adauga si sscanf la include, sscanf.dll si sscanf.so si revino
  18. Parerea mea: 1/10 De ce? Vezi in semnatura. De ce ti-am acordat 1 punct? Pentru ca ai incercat si cam atat...
  19. WiDuAlK

    * Conturi *

    Codul e scris corect, dar eu iti recomand urmatorul lucru. Urmareste tutorialul asta: nu e cine stie ce , dar te poti orienta dupa el. Sterge upload la onplayerdisconect si fa update la fiecare comanda ce e legata de baza de date, si vezi daca mai ai aceasta problema.
  20. posteaza putin server log, sa vad daca te pot ajuta
  21. Daca cauti in partea de jos , vei gasi
  22. foloseste cache_get_field_content_int in loc de cache_get_row_int
  23. Daca vei consulta wiki , nu are ce cauta M_Connect in scriptul tau. Inlocuieste cu: PlayerData[extraid][pPos][2] = cache_get_field_content_float(0, "PosZ"); PlayerData[extraid][pSkin] = cache_get_field_content_int(0, "Skin"); si cred ca se rezolva.
×
×
  • 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.