-
Posts
1.337 -
Joined
-
Last visited
-
Days Won
95
Content Type
Profiles
Forums
News
Documentation
Everything posted by WiDuAlK
-
Salutare, astazi vin cu un nou tutorial in 3 pasi. Mi-am propus in cei 3 pasi sa va arat cum se creaza o factiune de la 0, pentru ca si voi sa va concepeti un GM de la 0 , si sa stiti cum se adauga factiunile. Atentie, inainte tin sa mentionez ca eu ma folosesc de registerul mysql din tutorialul acesta: . Parcurgeti acest tutorial doar daca v-ati creat sistemul de inregistrare dupa tutorial, deoarece eu aduc o contribuire lui. In partea 1 o sa creem variabilele de la factiune pe care le vom folosi si anume pLeader, pMember si pRank in baza de date , dar si in GM. Tot aici vom crea publicul Update, care ne va usura updateul la baza de date. Am vazut la unele GM-uri ca se foloseau de acest public(R33 Ideal pentru RPG by wopss, RedzMax parca asa se chema si alte GM-uri care nu imi mai aduc aminte denumirea lor ) si m-am gandit ca e foarte bine sa il folositi. Vom crea si un nou enum cu datele de update. Vom crea comenzile /invite , /makeleader(cu rconul) /giverank, /uninvite , /fpk(cu rcon). Acum ca am facut introducerea sa trecem si la treaba practica. Mergem la enum-ul "pInfo" si vom adauga cele 3 variabile in felul urmator: enum pInfo { pParola, pID, pLeader,// variabila playerului cand are lider pMember,// variabila playerului cand are membru pRank// variabila playerului cand are rank }; creem un enum cu cele 3 upload-uri enum { LeaderUpdate, MemberUpdate, RankUpdate }; si callback-ul forward Update(playerid, type);// creem callback-ul public Update(playerid, type) // facem publicul { if(IsPlayerConnected(playerid))// verificam daca playerul este conectat { new query[256];// se creaza o interogare in public pentru baza de date switch(type)// aplicam la swich pentru a face mai rapida apelarea la callback { switch(type) { case LeaderUpdate:// dupa cum am creat enum-ul , verificam cazul de update, adica lider { mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Leader`='%d' WHERE `Nume`='%e'", P_Data[playerid][pLeader], GetName(playerid));// facem update-ul la baza de date mysql_query(handle, query);// trimitem update-ul } case MemberUpdate:// cazul memnerului { mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Memner`='%d' WHERE `Nume`='%e'", P_Data[playerid][pMember], GetName(playerid));// facem update-ul la baza de date mysql_query(handle, query);// trimitem update-ul } case RankUpdate:// cazul rank-ului { mysql_format(handle, query, sizeof(query), "UPDATE `conturi` SET `Memner`='%d' WHERE `Nume`='%e'", P_Data[playerid][pMember], GetName(playerid));// facem update-ul la baza de date mysql_query(handle, query);// trimitem update-ul } } } } return 1; } Acum facem comenzile , dar mai intai aveti nevoie de urmatparele scripturi: ZCMD SSCANF CMD:makeleader(playerid,params[]) { if(IsPlayerConnected(playerid)) { new string[100], lider, factiuneid;// se creaza variabilele, lider = persoana pe care aplicam comanda, factiuneid = id factiunii la care va fi acea persoana if(!IsPlayerAdmin(playerid))// verificam daca playerul nu este conectat cu rcon-ul return SendClientMessage(playerid, -1, "Trebuie sa fi conectat cu Rcon-ul!"); if(sscanf(params,"ud",lider,factiuneid))// verificam daca playerul nu scrie comanda completa return SendClientMessage(playerid,-1,"Romania Reality: /makeleader [Nume_Player/ID] [FactiuneID]"); if(factiuneid > 11 && factiuneid < 1)//punem conditie la cate factiuni avem return SendClientMessage(playerid, -1, "Trebuie sa fie intre 1 si 11!"); if(!IsPlayerConnected(lider))// verificam daca playerul nu este conectat return SendClientMessage(playerid,-1,"Acest jucator nu este conectat"); P_Data[lider][pLeader] = factiuneid;// persoana pe care aplicam comanda va fi liderul factiunii pe care am scris-o P_Data[lider][pMember] = factiuneid;// persoana pe care aplicam comanda va fi membrul factiunii pe care am scris-o P_Data[lider][pRank] = 6; // ii va da rank 6 Update(lider, LeaderUpdate);// se va face update catre baza de date a liderului Update(lider, MemberUpdate);// se va face update catre baza de date a liderului ca este si membru in factiune Update(lider, RankUpdate);// se va face update la bazaz de date a liderului care are rank 6 format(string, sizeof(string), "Ai fost promovat ca lider de catre %s", GetName(playerid)); SendClientMessage(lider, -1, string);// ii da mesaj liderului de cine a fost promovat format(string, sizeof(string), "%s este noul lider al factiunii %d.", GetName(lider), factiuneid); SendClientMessage(playerid, -1, string);// ii da mesaj adminului pe cine a promovat SpawnPlayer(lider);// il spawneaza pe lider } return 1; } Facem comanda /fpk CMD:fpk(playerid,params[]) { if(IsPlayerConnected(playerid)) { new concediat, motiv[200], string[200];// se creaza noile variabile care vor fi folosite la verificarea comenzii in scriere if(sscanf(params,"us[199]", concediat, motiv))// verificam ca comanda sa se scrie corect return SendClientMessage(playerid,-1,"SERVER: /fpk [Nume_Player] [MOTIV]");// daca nu e scrisa corect , atunci sa ii dea mesajul cum sa se scrie if(!IsPlayerAdmin(playerid))// verificam daca playerul nu este conectat cu rcon-ul return SendClientMessage(playerid, -1, "Trebuie sa fi conectat cu Rcon-ul!"); if(!IsPlayerConnected(concediat))// verificam daca playerul nu este conectat return SendClientMessage(playerid,-1,"Acest jucator nu este conectat"); if(sscanf(params,"us[199]", concediat, motiv))// verificam ca comanda sa se scrie corect return SendClientMessage(playerid,-1,"SERVER: /fpk [Nume_Player] [MOTIV]"); P_Data[concediat][pLeader] = 0;// il facem lider 0 P_Data[concediat][pMember] = 0;// il facem membru 0 P_Data[concediat][pRank] = 0; // ii dam rank 0 Update(concediat, LeaderUpdate);// se va face update la bazaz de date a concediatului Update(concediat, MemberUpdate);// se va face update la bazaz de date a concediatului Update(concediat, RankUpdate);// se va face update la bazaz de date a concediatului format(string, sizeof(string), "Ai fost concediat de catre OWNERUL %s, pe motivul: %s", GetName(playerid), motiv); SendClientMessage(concediat, -1, string);// ii da mesaj concediatului de cine a fost concediat format(string, sizeof(string), "%s este concediat pe motivul: %s", GetName(concediat), motiv); SendClientMessage(playerid, -1, string);// ii da mesaj adminului pe cine a concediat SpawnPlayer(concediat);// il spawneaza pe lider } return 1; } Facem comanda /uninvite CMD:uninvite(playerid,params[]) { if(IsPlayerConnected(playerid)) { new concediat, motiv[200], string[200];// creem variabilele de care ne folosim in comanda if(P_Data[playerid][pLeader] < 0)// verificam daca playerul este lider(persoana care foloseste comanda) return SendClientMessage(playerid,-1,"SERVER: Nu esti lider"); if(sscanf(params,"us[199]", concediat, motiv))//verificam daca comanda e scrisa bine return SendClientMessage(playerid,-1,"SERVER: /uninvite [Nume_Player/ID] [MOTIV]"); if(P_Data[playerid][pLeader] != P_Data[concediat][pMember])// verificam daca liderul foloseste comanda pe ai sai prieteni return SendClientMessage(playerid,-1,"SERVER: Nu poti folosi comanda decat pe cei din factiune la tine!"); if(concediat == P_Data[concediat][pLeader])// verificam daca concediatul nu e lider return SendClientMessage(playerid,-1,"SERVER: Nu poti folosi comanda pe un lider!"); // daca este ii dam mesaj corespunzator P_Data[concediat][pMember] = 0;// il facem membru 0 P_Data[concediat][pRank] = 0; // ii dam rank 0 Update(concediat, MemberUpdate);// se va face update la bazaz de date a concediatului Update(concediat, RankUpdate);// se va face update la bazaz de date a concediatului format(string, sizeof(string), "Ai fost concediat de catre Liderul %s, pe motivul", GetName(playerid), motiv); SendClientMessage(concediat, -1, string);// ii da mesaj "victimei" de cine a fost concediat format(string, sizeof(string), "%s este concediat pe motivul: %s", GetName(concediat), motiv); SendClientMessage(playerid, -1, string);// ii da mesaj liderului pe cine a concediat SpawnPlayer(concediat);// il spawneaza pe lider } return 1; } Facem comanda /invite CMD:invite(playerid,params[]) { if(IsPlayerConnected(playerid)) { new membru, string[200];// se creaza variabilele folosite in comanda if(P_Data[playerid][pLeader] < 0)// verificam daca playerul este lider return SendClientMessage(playerid,-1,"SERVER: Nu esti lider"); if(sscanf(params,"u", membru))//verificam daca comanda e scrisa bine return SendClientMessage(playerid,-1,"SERVER: /uninvite [Nume_Player/ID]"); if(P_Data[membru][pLeader] > 1) return SendClientMessage(playerid,-1,"SERVER: Nu poti folosi comanda pe alti lideri!"); if(P_Data[membru][pMember] > 1) return SendClientMessage(playerid,-1,"SERVER: Nu poti folosi comanda pe alti membri!"); P_Data[membru][pMember] = P_Data[playerid][pLeader];// il facem membru la factiunea in care este si cel care invita P_Data[membru][pRank] = 0; // ii dam rank 0 Update(membru, MemberUpdate);// se va face update la bazaz de date a membrului Update(membru, RankUpdate);// se va face update la bazaz de date a membrului format(string, sizeof(string), "Ai fost promovat membru de catre Liderul %s, pe motivul", GetName(playerid)); SendClientMessage(membru, -1, string);// ii da mesaj membrului de cine a fost invitat format(string, sizeof(string), "%s este membru la tine in factiune", GetName(membru)); SendClientMessage(playerid, -1, string);// ii da mesaj liderului pe cine a invitat SpawnPlayer(membru);// il spawneaza pe lider } return 1; } Comanda /giverank CMD:giverank(playerid,params[]) { if(IsPlayerConnected(playerid)) { new membru, rank, string[200];// creem variabilele cu care vom face conditie in comanda if(P_Data[playerid][pLeader] < 1)// verificam daca playerul este lider return SendClientMessage(playerid,-1,"SERVER: Nu esti lider"); if(sscanf(params,"ud", membru, rank))//verificam daca comanda e scrisa bine(ne folosim de cele de mai sus) return SendClientMessage(playerid,-1,"SERVER: /uninvite [Nume_Player/ID] [NRRank]"); if(P_Data[membru][pLeader] == P_Data[playerid][pLeader]) return SendClientMessage(playerid,-1,"SERVER: Nu poti folosi comanda pe tine!"); if(P_Data[membru][pLeader] > 0) return SendClientMessage(playerid,-1,"SERVER: Nu poti folosi comanda pe alti lideri!"); if(P_Data[membru][pMember] != P_Data[playerid][pLeader])// verificam daca comanda se foloseste pe membri altei factiune return SendClientMessage(playerid,-1,"SERVER: Nu poti folosi comanda pe alti membri!"); if(P_Data[membru][pMember] != P_Data[playerid][pLeader]) P_Data[membru][pRank] = rank; // ii dam rank 0 Update(membru, RankUpdate);// se va face update la bazaz de date a membrului format(string, sizeof(string), "Ai fost promobat cu rank %d de catre liderul %s", rank, GetName(playerid)); SendClientMessage(membru, -1, string);// ii da mesaj membrului de cine a fost promovat in rank format(string, sizeof(string), "%s este membru la tine in factiune cu rank: %d", GetName(membru), rank); SendClientMessage(playerid, -1, string);// ii da mesaj liderului pe cine a promovat } return 1; } Acum un pas foarte important, mergem la callback-ul OnLogin si punem sub P_Data[playerid][pID] = cache_get_field_content_int(0, "ID"); urmatoarele: P_Data[playerid][pLeader] = cache_get_field_content_int(0, "Leader"); P_Data[playerid][pMember] = cache_get_field_content_int(0, "Member"); P_Data[playerid][pRank] = cache_get_field_content_int(0, "Rank"); Iar acum mergem la baza de date si parcurgem urmatorii pasi: Bun, aceasta a fost partea 1. Daca gasiti greseli pe la comenzi , asta e din cauza ca acuma, seara, l-am facut si sunt putin cam obosit(se vede si dupa data de postare a tutorialului). Sper ca ati inteles pana aici, voi reveni cu a 2-a parte maine. Tutorial 100% scris de WIDUALK. Postarea acestui tutorial fara acordul meu va fi reclamata! Pana data viitoare(maine) PACE!
- 9 replies
-
- 12
-
-
#Completat si editat!
-
fa un public showstats de genu: forward ShowStats(playerid); public ShowStats(playerid) { new param1[32],param2[32],param3[32],param100[32]; new nxtlevel = playerVariables[playerid][pLevel]; new expamount = nxtlevel*levelexp; switch(playerVariables[playerid][pGender]) { case 1: param2 = "Male"; case 2: param2 = "Female"; default: param2 = "Unknown"; } new param20[182]; if(playerVariables[playerid][pPhoneNumber] != -1) { format(param20,sizeof(param20),"%d",playerVariables[playerid][pPhoneNumber]); } else { param20 = "None"; } if(playerVariables[playerid][pJob] == 0) { param1 = "Unemployed"; } else { strcpy(param1, jobVariables[playerVariables[playerid][pJob]][jJobName], sizeof(param1)); } SendClientMessage(playerid, COLOR_TEAL, "--------------------------------------------------------------------------------------------------------------------------------"); format(szMessage, sizeof(szMessage), "%s | Respect Points: %d/%d | Level: %d | Playing hours: %d | Phone number: %s | Job: %s",playerVariables[playerid][pNormalName],playerVariables[playerid][pRPoints], expamount, playerVariables[playerid][pLevel], playerVariables[playerid][pPlayingHours],param20,param1); SendClientMessage(playerid, COLOR_WHITE, szMessage); if(playerVariables[playerid][pGroup] < 1) { param1 = "None"; param2 = "None"; } else { format(param1, sizeof(param1), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupName]); switch(playerVariables[playerid][pGroupRank]) { case 1: format(param2, sizeof(param2), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupRankName1]); case 2: format(param2, sizeof(param2), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupRankName2]); case 3: format(param2, sizeof(param2), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupRankName3]); case 4: format(param2, sizeof(param2), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupRankName4]); case 5: format(param2, sizeof(param2), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupRankName5]); case 6: format(param2, sizeof(param2), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupRankName6]); case 7: format(param2, sizeof(param2), "%s", groupVariables[playerVariables[playerid][pGroup]][gGroupRankName7]); } } if(playerVariables[playerid][pWalkieTalkie] == -1) param3 = "None"; else if(playerVariables[playerid][pWalkieTalkie] == 0) param3 = "Disabled"; else format(param3, sizeof(param3), "#%d khz", playerVariables[playerid][pWalkieTalkie]); new donator[256]; if(playerVariables[playerid][pDonate] == 0) donator = "No"; else format(donator, sizeof(donator), "Yes"); format(szMessage, sizeof(szMessage), "Group: %s | Rank: %s (%d) | Bank: $%s | Cash: $%s | Materials: %d | Radio: %s", param1, param2, playerVariables[playerid][pGroupRank], NumberFormat(playerVariables[playerid][pBankMoney]), NumberFormat(playerVariables[playerid][pMoney]), playerVariables[playerid][pMaterials], param3); SendClientMessage(playerid, COLOR_WHITE, szMessage); if(playerVariables[playerid][pGroup] == 1 || playerVariables[playerid][pGroup] == 2 || playerVariables[playerid][pGroup] == 3 || playerVariables[playerid][pGroup] == 5) { format(szMessage, sizeof(szMessage), "Credit: $%d | Warns: %d/3 | Lawer Points: %d/3 | Premium: %s (%d points) | FW: %d/3 | FP: %d/20", playerVariables[playerid][pPhoneCredit],playerVariables[playerid][pWarns],playerVariables[playerid][pRobPoints],donator,playerVariables[playerid][pPremiumPoints],playerVariables[playerid][pFWarns],playerVariables[playerid][pFPunish]); SendClientMessage(playerid, COLOR_WHITE, szMessage); } else { if(playerVariables[playerid][pDonate] == 1) { format(szMessage, sizeof(szMessage), "Credit: $%d | Warns: %d/3 | Rob Points: %d/8 | Premium: %s (%d points) | FW: %d/3 | FP: %d/20", playerVariables[playerid][pPhoneCredit],playerVariables[playerid][pWarns],playerVariables[playerid][pRobPoints],donator,playerVariables[playerid][pPremiumPoints],playerVariables[playerid][pFWarns],playerVariables[playerid][pFPunish]); SendClientMessage(playerid, COLOR_WHITE, szMessage); } else { format(szMessage, sizeof(szMessage), "Credit: $%d | Warns: %d/3 | Rob Points: %d/10 | Premium: %s (%d points) | FW: %d/3 | FP: %d/20", playerVariables[playerid][pPhoneCredit],playerVariables[playerid][pWarns],playerVariables[playerid][pRobPoints],donator,playerVariables[playerid][pPremiumPoints],playerVariables[playerid][pFWarns],playerVariables[playerid][pFPunish]); SendClientMessage(playerid, COLOR_WHITE, szMessage); } } if(playerVariables[playerid][pClan] < 1) { param1 = "None"; param100 = "None"; } else { format(param1, sizeof(param1), "%s", clanVariables[playerVariables[playerid][pClan]][cClanName]); switch(playerVariables[playerid][pClanRank]) { case 1: format(param100, sizeof(param100), "%s", clanVariables[playerVariables[playerid][pClan]][cClanRankName1]); case 2: format(param100, sizeof(param100), "%s", clanVariables[playerVariables[playerid][pClan]][cClanRankName2]); case 3: format(param100, sizeof(param100), "%s", clanVariables[playerVariables[playerid][pClan]][cClanRankName3]); case 4: format(param100, sizeof(param100), "%s", clanVariables[playerVariables[playerid][pClan]][cClanRankName4]); case 5: format(param100, sizeof(param100), "%s", clanVariables[playerVariables[playerid][pClan]][cClanRankName5]); case 6: format(param100, sizeof(param100), "%s", clanVariables[playerVariables[playerid][pClan]][cClanRankName6]); case 7: format(param100, sizeof(param100), "%s", clanVariables[playerVariables[playerid][pClan]][cClanRankName7]); } } format(szMessage, sizeof(szMessage), "House: %d | Business: %d | Drugs: %dg | Clan: %s | Rank: %s (%d)",getPlayerHouseID(playerid), getPlayerBusinessID(playerid),playerVariables[playerid][pDrugs], param1, param100,playerVariables[playerid][pClanRank]); SendClientMessage(playerid, COLOR_WHITE, szMessage); new Float:HAFloats[2]; GetPlayerHealth(playerid,HAFloats[0]); GetPlayerArmour(playerid,HAFloats[1]); if(playerVariables[playerid][pAdminLevel] >= 1) { switch(playerVariables[playerid][pPrisonID]) { case 0: format(szMessage, sizeof(szMessage), "IP: %s | Health: %.1f | Armour: %.1f", playerVariables[playerid][pConnectionIP],HAFloats[0], HAFloats[1]); case 1: format(szMessage, sizeof(szMessage), "IP: %s | Health: %.1f | Armour: %.1f | Admin Prison Time: %d", playerVariables[playerid][pConnectionIP], HAFloats[0], HAFloats[1], playerVariables[playerid][pPrisonTime]); case 2: format(szMessage, sizeof(szMessage), "IP: %s | Health: %.1f | Armour: %.1f | Admin Jail Time: %d", playerVariables[playerid][pConnectionIP], HAFloats[0], HAFloats[1], playerVariables[playerid][pPrisonTime]); case 3: format(szMessage, sizeof(szMessage), "IP: %s | Health: %.1f | Armour: %.1f | Jail Time: %d", playerVariables[playerid][pConnectionIP], HAFloats[0], HAFloats[1], playerVariables[playerid][pPrisonTime]); } SendClientMessage(playerid, COLOR_ASKQ, szMessage); } SCM(playerid, COLOR_TEAL, "--------------------------------------------------------------------------------------------------------------------------------"); return 1; } si comenzile: CMD:stats(playerid, params[]) { if(gLogged[playerid] == 1) { ShowStats(playerid); } return 1; } CMD:check(playerid, params[]) { new targetid; if(sscanf(params,"u",targetid)) return SendClientMessage(playerid,culoare,"Server: /check [Nume_Player/ID]"); if(gLogged[targetid] == 1) { ShowStats(targetid); } return 1; }
-
cum vrei sa adaugi daca nu sti mysql? Nu iti stiu GM sa iti explic, dar mai important lucreaza mai intai pe ini si in acelasi timp intereseaza-te la informatiile mysql samp si cand vei sti mai mult, atunci apuca-te...
-
CMD:setcar(playerid, params[]) { if(gPlayerLogged[playerid] == 0) return SendClientMessage(playerid, COLOR_LIGHTRED, "Trebuie sa te loghezi mai intai."); if(IsPlayerConnected(playerid)) { new model = 0, test = 0, string[64], car[30], tableid = MySQLCheckCar(car); if(PlayerInfo[playerid][pAdmin] < 5) return SCM(playerid,COLOR_DS,AdminOnly); if(sscanf(params, "d[10]is[30]",model,test,car)) return SendClientMessage(playerid, 0xFFFFFFFF, "{B8DBFF}Syntax: /setcar <Stock/Price> <Ammount> <Car Name>"); if(tableid == 0) return SCM(playerid,COLOR_DS,"{37B9C8}Invalid car name."); mysql_format(handle, query, sizeof(query), "INSERT INTO stock (Model, Pret, Nume) VALUES ('%e', '%d', '%e')", model, test, car); mysql_tquery(handle, query, "OnRegistration", "i", playerid); } return 1; } ai un model, te descurci de aici
-
punele la urma, pentru a nu fi restrictionate...
-
=)) ) =)) hai ca mi-ai facut ziua mai frumoasa =)) ia de aici CMD:giveallcoins( playerid, params[ ] ) { if ( !IsPlayerAdmin( playerid ) ) return SendError( playerid, "You need to be logged as RCON admin before use this command!" ); new sCoins, Player; if ( sscanf( params, "i", sCoins ) ) return SendClientMessage( playerid, COLOR_ULTRARED, "USAGE: {33CCFF}/giveallcoins [Coins]" ); if ( sCoins < 0 ) return SendError( playerid, "Invalid Amount!" ); if ( PlayerInfo[ Player ][ Level ] > PlayerInfo[ playerid ][ Level ] ) return SendError( playerid, "You cannot use this command on this admin" ); for(new i=0; i < MAX_PLAYERS; i++) { PlayerInfo[ i ][ pCoins ] += 1; format( gsString, sizeof( gsString ), "[RCON] %s has give %d coins to all players.", PlayerName( playerid ), sCoins ); Log_( "log_coins" , "Text" , gsString ) ; FormatMSG( playerid, COLOR_ABLUE, "You have sent to all players %d coins", sCoins ); format( gsString, sizeof( gsString ), "Administrator %s has give all players %d coins", PlayerName( playerid ), sCoins ); SendClientMessageToAll( COLOR_ABLUE, gsString ); } return ( 1 ); }
-
1/10 pe motiv semnat
-
Cerere Tutorial Adaugare Email in inregistrare
WiDuAlK replied to GenOxigen's topic in Cereri Tutoriale
uite aici: if(dialogid == DIALOG_EMAIL) { if(response) { new string[256]; if(strlen(inputtext) < 4 || strlen(inputtext) > 151) { SCM(playerid, COLOR_ERROR, "Emailul trebuie sa fie intre 5 si 100 caractere!"); ShowPlayerDialog(playerid,702,DIALOG_STYLE_INPUT,"Email","Te rog sa iti introduci adresa de email mai jos:","Urmatorul",""); return 1; } else { strmid(P_DATA[playerid][pEmail], inputtext, 0, strlen(inputtext), 999); format(string, sizeof(string), "OK, emailul tau este %s.", inputtext); } } if(!response) { SShowPlayerDialog(playerid,702,DIALOG_STYLE_INPUT,"Email","Te rog sa iti introduci adresa de email mai jos:","Urmatorul",""); } } na de aici -
Nu stiu cum te faci, numa tu cu persoane din astea... pe wopss / artist / mafia / equinox sau eu si lista continua nu prea au treaba cu teparii pentru ca nu cauta noi prietenii...
-
Cerere Tutorial Adaugare Email in inregistrare
WiDuAlK replied to GenOxigen's topic in Cereri Tutoriale
cum ai definit emailul ? pEmail sau cum? -
Idea e unica, si e dragut ce ai facut tu, imi place
-
pai alea sunt coordonatele CreateDynamicObject(ID,PosX,PosY,PosZ,RotX,RotY,RotZ,(mai erau niste parametri, dar cei precizati sunt folositi in general)); si normal ca au si 0 pe acolo , pentru ca obiectul sa fie plasat cat mai exact in locul dorit.
-
Cerere Tutorial Adaugare Email in inregistrare
WiDuAlK replied to GenOxigen's topic in Cereri Tutoriale
pe ce ai sistemul de inregistrare? -
posteaza ce ai facut la ajutor scripting
-
ia de la un pici si invata https://www.youtube.com/watch?v=GiusU8gm9bU , daca nu intelegi de la mafia
-
Na ma tutorial , sper ca ai inteles.
-
Buna ziua, buna seara pentru mine , la cererea lui Jirk am sa fac acest tutorial. Pentru inceput aveti nevoie de urmatoarele: - MAP EDITOR - STREAMER - Multa atentie , si executati pasii pe care ii parcurg si eu in tutorial. Pentru inceput mergem si plasam obiectul. Eu voi plasa o poarta cu ID = 980. Voi plasati ce obiect vreti. Am introdus obiectul si il pozitionam in locul dorit. Acum avem nevoie de coordonatele lui: Acum mergem si o sa creem codul in pawn: new poarta; public OnGameModeInit() { poarta = CreateDynamicObject(980,1587.8665, -1637.9141, 14.8116, 0.0000, 0.0000, 0.0000); // si ce mai aveti voi return 1; } Acum sa explicam: Am creat o noua variabila numita "poarta" care am definito ca fiind obiect(Acel createdynamicobject). 980- reprezinta id obiectului 1587.8665, -1637.9141, 14.8116- reprezinta pozitia lui pe harta San Andreas 0.0000, 0.0000, 0.0000- reprezinta rotatiile lui. Acum mergem si coboram obiectul ( il miscam ). Acum voi crea sub 2 forma. Prima forma este cea care, folosesti o tasta , iar a 2-a este cea in care folosesti o comanda. Vom crea un nou callback la care vom apela cu un timer pentru a se inchide poarta. Daca nu se creaza acest timer, atunci aceasta poarta va ramane pozitionata jos, nu se va ridica la pozitia initiala. forward MoveInitialPoarta(); public MoveInitialPoarta() { MoveDynamicObject(poarta,1587.8665, -1637.9141, 14.8116, 5.0, 0.0000, 0.0000, 0.0000); return 1; } MoveDynamicObject- functia cu care mutam obiectul poarta- cum am definit mai sus, este obiectul pe care il miscam 1587.8665, -1637.9141, 14.8116- coordonatele initiale 5.0- viteza cu care deplasam obiectul 0.0000, 0.0000, 0.0000 - rotatia. Nu este necesar, dar este recomandat sa se puna si rotatia pentru a nu avea probleme. Prima metoda: mergem la publicul OnPlayerKeyStateChange, alegem o tasta de AICI si vom crea codurile: public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if (newkeys & KEY_CROUCH ) { if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116)) { MoveDynamicObject(poarta,1587.8665, -1637.9141, 9.7766, 5.0, 0.0000, 0.0000, 0.0000); SetTimer("MoveInitialPoarta",5000,0); SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!"); } } // liniile voastre return 1; } if (newkeys & KEY_CROUCH )- este tasta H(cand esti in masina) si C (cand esti pe jos, de pe site-ul de mai sus) if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116)) - verificam ca, atunci este langa poarta( 15- reprezinta distanta, 1587.8665, -1637.9141, 14.8116- reprezinta coordonatele, adica cand playerul este la 15 m cel mult de poarta) MoveDynamicObject- reprezinta functia cu care miscam obiectul 1587.8665, -1637.9141, 9.7766- coordonatele cand obiectul este plasat in partea de jos, din imaginea 3 5.0 - viteza cu care miscam obiectul 0.0000, 0.0000, 0.0000- rotatiile unde plasam obiectul SetTimer("MoveInitialPoarta",5000,0); - apelam la acest timer ca dupa 5 secunde(5000) parta sa se mute la pozitia initiala SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!"); - Dam un mesaj corespunzator celui care coboara poarta. Metoda comenzii. Vom crea comanda , dar folosim aceleasi functii ca si la metoda 1. if (strcmp("/deschidegate", cmdtext, true, 10) == 0) { if(IsPlayerConnected(playerid)) { if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116)) { MoveDynamicObject(poarta,1587.8665, -1637.9141, 9.7766, 5.0, 0.0000, 0.0000, 0.0000); SetTimer("MoveInitialPoarta",5000,0); SendClientMessage(playerid,-1,"Ai deschis poarta 5 secunde!"); } else return SendClientMessage(playerid,-1,"Nu esti langa poarta!"); } return 1; } else return SendClientMessage(playerid,-1,"Nu esti langa poarta!"); - atunci cand playerul tasteaza comanda, si nu este in jurul portii la distanta de cel mult 15 m, sa ii spuna ca nu este langa poarta. La comanda, mai putem adauga GivePlayerMoney(playerid,-1000); daca vrem sa punem o vama, si sa plateasca cand o trece si va fi cam asa: if (strcmp("/deschidegate", cmdtext, true, 10) == 0) { if(IsPlayerConnected(playerid)) { if(IsPlayerInRangeOfPoint(playerid,15, 1587.8665, -1637.9141, 14.8116)) { MoveDynamicObject(poarta,1587.8665, -1637.9141, 9.7766, 5.0, 0.0000, 0.0000, 0.0000); SetTimer("MoveInitialPoarta",5000,0); GivePlayerMoney(playerid,-1000); SendClientMessage(playerid,-1,"Ai trecut vama, si ai platit suma de 1000$!"); } else return SendClientMessage(playerid,-1,"Nu esti langa poarta!"); } return 1; } Voi il puteti infrumuseta cum vreti voi. Sper ca acestu tutorial sa prinda bine si altora. Tutorialul este scris si facut de mine, nu il gasiti in alta parte!
-
Sa traiesti batrane!
-
Dami add pe mass. I-ami din profil adresa
-
Editul nu are valoare
-
Pfai... ce realizare... am facut comanda in graba, nici nu am compilat sa vad ce zice, am facut-o din cap, iar oxigen trb sa interpreteze
-
Tu ai niste definiri pe acolo. Ai copiat dintr-o parte in alta niste lucruri care depind de niste functii. Cauta prin alte GM-uri functiile respective
-
pune ce ti-am dat, si pune-ti si sscanf, deoarece comanda foloseste sscanf
-
stock GetName(playerid) { new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, sizeof(Name)); return Name; } if(strcmp(cmd, "/requestevent", true) == 0) { if(IsPlayerConnected(playerid)) { new detalii[200], premiu = 0, string[200], prize; if (PlayerInfo[playerid][pLevel] < 3) return SendClientMessage(playerid,COLOR_GREY," Nu poti folosi aceasta comanda deoarece nu ai admin necesar !"); if(WantedLevel[playerid] >= 1) return SendClientMessage(playerid,COLOR_GREY," Nu poti folosi aceasta comanda deoarece ai wanted !"); if(PlayerTied[playerid] > 0) return SendClientMessage(playerid, COLOR_GREY, " you can`t use this command because you are tied!"); if(PlayerInfo[playerid][pMuted] == 1) return SendClientMessage(playerid, TEAM_CYAN_COLOR, " Nu poti vorbi, ai mute ! !"); if(sscanf(param,"ds",premiu,detalii)) return SendClientMessage(playerid, COLOR_GRAD2, "{00A1FF}USAGE{FFFFFF}: /requestevent [premiu][detalii]"); if(GetPlayerMoney(playerid) < premiu) return SendClientMessage(playerid, COLOR_GRAD2, "Nu ai suficienti bani pentru a incepe eventul!"); if(Event7[playerid] == 0) { GetPlayerName(playerid, sendername, sizeof(sendername)); SetPlayerColor(playerid, COLOR_ORANGE); SendClientMessageToAll(0xFFD700AA,"{FFFF00}===================[Event]==================="); format(string, sizeof(string), "{FFFF00}Organizator: %s [ID:%d]", GetName(playerid),playerid); SendClientMessageToAll(0xFFD700AA, string); format(string, sizeof(string), "{FFFF00}Premiu:%s", premiu); SendClientMessageToAll(0xFFD700AA, string); format(string, sizeof(string), "{FFFF00}Descriere:%s", detalii); SendClientMessageToAll(0xFFD700AA, string); SendClientMessageToAll(0xFFD700AA,"{CCCCCC}==================={FFFF00}[{FFFF00}Event{FFFF00}]{FFFF00}==================="); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Scrie /stopevent pentru a oprii eventul"); SendClientMessage(playerid, COLOR_LIGHTBLUE, "Scrie /e pentru anumite mesaje"); SetPlayerArmour(playerid, 999999999); SetPlayerHealth(playerid, 999999999); Event7[playerid] = 1; EventChat[playerid] = 3; } } return 1; } incearca asa, iti trebuie sscanf. Am sa fac si un totorial despre cum sa faci o poarta cu timer.
