Jump to content

Maichh

Membru
  • Posts

    25
  • Joined

  • Last visited

Everything posted by Maichh

  1. Adaugi la comanda /setadmin urmatoarea linie, SetPlayerSkin(id, 217);
  2. singura varianta cum spui tu cu boti, ar fi sa faci tu scriptul in sine, sa ti conectezi 1000 de boti, si sa le dai comenzi de spam, unul sa faca ceva, altul sa se miste, sa folosesti si onplayerupdate, ca are dreptate sanky, e vorba si de sync aici
  3. Inca n-a aparut ala de comenteaza la toti pe aici sa-ti dea hate? :)))
  4. UsePlayerPedAnims(); Adaugi la OnGameModeInit
  5. Esti singurul care s-a gandit la mai multe pagini in dialog pentru jucatori, pentru ca daca sunt mai multi jucatori pe server nu se pot afisa intr-un singur string in dialog, trebuie facute mai multe pagini. Nu i-ai facut tu treaba asta, dar i-ai dat indiciul ala din primul buton ">", poate isi da seama.
  6. cam imposibil, eu in 4 ani de scriptat pe samp inca mai am de invatat, si stiu sa fac orice sistem. Oricum daca inveti logica, scriptul e simplu dupa.
  7. inca nu s-a incheiat aroganta asta dintre sampisti? :))) Sunteti toti pamant de flori sincer
  8. Sampul in Romania e super boring, dupa parerea mea. Am incercat sa ma reapuc de samp, sa vad daca mai am nostalgia aia ca la inceput si nimic. De ce? Pentru ca pe ce server romanesc intri, vezi acelasi gameplay pe care toata lumea il cunoaste, intr-un cuvant, plictisitor. Nu mai este nimic nou, care sa te atraga, sa-ti faca pofta sa joci. Acelasi sistem de level, care te obliga sa faci ore jucate pentru a avansa in ceva, nici un sistem gandit care sa te ajute sa faci nivel jucandu-te, si facand activitati funny ca sa poti avansa. Lumea s-a plictisit sa lase pc-ul deschis pentru rp-uri si level, dar sa se plimbe cu o masina dintr-un colt in celalalt al mapei pentru ore.. Sa fim seriosi, cine ar mai juca asa ceva. Am spus-o si ma repet, in momentul in care se va deschide un server diferit, de la sistemul de login/register pana la final, atunci acel server va fi populat, si se vor juca jucatorii, cu un nou mod de joc, activitati, creatii, nu astea de le vezi peste tot unde intri. "La ora 20:00 bonus, alegem lideri, plm". EDIT: Am 23 de ani, sampul a fost jocul care mi-a marcat copilaria placut. Am un job super bun, am familie, ma intretin singur, dar sincer, daca ar fi sa se deschida un server nou, bine pus la punct, total schimbat, m-as juca de drag in necunoscut, nu ca nu as avea timp, sau chef. Parerea mea e ca sampul a scazut doar din cauza asta, bine, pot fi mai multi factori. Dar, realizati ca jucatorii sunt plicitisiti, pe samp faci aceleasi chestii plictisitoare din 2016 incoace...
  9. Activeaza optiunea "frame limiter" din setarile jocului, sau, mai este o varianta. Instaleaza de pe http://moduri.ro/sampaddon/ acest mod, instaleaza-l in folderul jocului, si in momentul instalarii bifeaza optiunea "limiteaza fps-urile / frame limit".
  10. nu ai cum sa faci treaba asta pe samp.
  11. CMD:camera(playerid, params[]) { //check if player is a cop new camera; if(sscanf(params, "d", camera)) return SCM(playerid, -1, "Use:{FFFFFF} /camera [camera id] (1-5)"); if(camera < 1 || camera > 5) return SCM(playerid, -1, "This camera id is invalid."); switch(camera) { case 1: { SetPlayerCameraPos(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); SetPlayerCameraLookAt(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); } case 2: { SetPlayerCameraPos(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); SetPlayerCameraLookAt(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); } case 3: { SetPlayerCameraPos(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); SetPlayerCameraLookAt(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); } case 4: { SetPlayerCameraPos(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); SetPlayerCameraLookAt(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); } case 5: { SetPlayerCameraPos(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); SetPlayerCameraLookAt(playerid, COORDONATA_X, COORDONATA_Y, COORDONATA_Z); } } TogglePlayerSpectating(playerid, true); TogglePlayerControllable(playerid, false); return 1; } Pentru coordonatele de la camera poti folosi filterscript-ul CamEditor. Poti updata tu scriptul, precum, ai putea adauga o verificare daca jucatorul se afla in modul spectate pentru ca verifica o camera, si sa faci o comanda noua /nextcam, sau poti adauga un textdraw pe ecran cu care poti schimba camera in momentul in care esti in procesul de verificare a camerei video.
  12. Nu ai schimbat locatia folderului cu include pentru gm-ul respectiv. Da mi mesaj pe discord si te ajut eu device#7633
  13. CMD:vehicles(playerid) return ShowPlayerVehicle(playerid); stock ShowPlayerVehicle(playerid) { new szTitle[180], szDialog[6900], szDialog2[6900], vstatus[1024]; if(GetVehicles(playerid) == 0) return SendClientMessage(playerid, COLOR_LGREEN, "Eroare: Nu ai un vehicul personal!"); format(szTitle, sizeof(szTitle), "Vehicles (%d/%d)", GetVehicles(playerid), TotalSlots(playerid)); for(new i = 0; i < 10; i++) { if(i < 5) { if(i < 3) { if(PlayerInfo[playerid][pCarKey][i] != 0) { new car = PlayerInfo[playerid][pCarKey][i]; if(IsVehicleOccupied(CarInfo[car][Spawned])) { format(vstatus, sizeof(vstatus), "{FFFF00}(Occupied){FFFFFF} %s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } switch(CarInfo[car][Spawned]) { case 0: { format(vstatus, sizeof(vstatus), "{FF0000}(Despawnat){FFFFFF} %s\t%s%s%s%s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } case 1: { format(vstatus, sizeof(vstatus), "{26B309}(Spawned){FFFFFF} %s\t%s%s%s%s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } } format(szDialog, sizeof(szDialog), "%s\tUpgrades\n", vstatus); strcat(szDialog2, szDialog); } else strcat(szDialog2, "{FFD857}<slot liber>\n"), sVehicle[i][playerid] = 0; } else { if(PlayerInfo[playerid][pCarKey][i] != 0) { new car = PlayerInfo[playerid][pCarKey][i]; if(IsVehicleOccupied(CarInfo[car][Spawned])) { format(vstatus, sizeof(vstatus), "{FFFF00}(Occupied){FFFFFF} %s\t%s%s%s%s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } switch(CarInfo[car][Spawned]) { case 0: { format(vstatus, sizeof(vstatus), "{FF0000}(Despawnat){FFFFFF} %s", aVehicleNames[CarInfo[car][cModel]-400]); } case 1: { format(vstatus, sizeof(vstatus), "{26B309}(Spawned){FFFFFF} %s\t%s%s%s%s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } } format(szDialog, sizeof(szDialog), "%s\tUpgrades\n", vstatus); strcat(szDialog2, szDialog); } else if(PlayerInfo[playerid][pPremiumAccount] == 1) strcat(szDialog2, "{FFD857}<slot liber>\n"), sVehicle[i][playerid] = 0; } } else { if(PlayerInfo[playerid][pCarKey][i] != 0) { new car = PlayerInfo[playerid][pCarKey][i]; if(IsVehicleOccupied(CarInfo[car][Spawned])) { format(vstatus, sizeof(vstatus), "{FFFF00}(Occupied){FFFFFF} %s\t%s%s%s%s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } switch(CarInfo[car][Spawned]) { case 0: { format(vstatus, sizeof(vstatus), "{FF0000}(Despawnat){FFFFFF} %s\t%s%s%s%s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } case 1: { format(vstatus, sizeof(vstatus), "{26B309}(Spawned){FFFFFF} %s\t%s%s%s%s", aVehicleNames[CarInfo[car][cModel]-400], TotalUp(car)); } } format(szDialog, sizeof(szDialog), "%s\tUpgrades\n", vstatus); strcat(szDialog2, szDialog); } else if(PlayerInfo[playerid][pSlot][i-5] == 1) strcat(szDialog2, "{FFD857}<slot liber>\n"), sVehicle[i][playerid] = 0; } } ShowPlayerDialog(playerid, DIALOG_GARAGE, DIALOG_STYLE_TABLIST_HEADERS, szTitle, szDialog2, "Ok", "Exit"); return 1; }
  14. stock GetName(playerid) { new playerName[MAX_PLAYER_NAME]; GetPlayerName(playerid, playerName, MAX_PLAYER_NAME); return playerName; } CMD:aduty(playerid) { if(PlayerInfo[playerid][pAdmin] < 1) return SendClientMessage(playerid, -1, "Nu esti autorizat sa folosesti aceasta comanda."); switch(PlayerInfo[playerid][pDutty]) { case 0: { PlayerInfo[playerid][pDutty] = 1; va_SendClientMessageToAll(-1, "%s este acum on duty. Pentru probleme folositi comanda /report.", GetName(playerid)); } case 1: { PlayerInfo[playerid][pDutty] = 0; va_SendClientMessageToAll(-1, "%s este acum off duty. ", GetName(playerid)); } } mysql_format(SQL, string, sizeof(string), "UPDATE users SET `Dutty`='%d' WHERE `name`='%s'", PlayerInfo[playerid][pDutty], GetName(playerid)); mysql_tquery(SQL,string,"",""); return 1; } acum pls opreste-te
  15. va rog eu banati-l odata... de cateva zile tot dispera pe aici, are dreptate @Sancky
  16. misto ideea, mai trebuie doar sa adaugi niste textdraw-uri dupa pozitia din care primesti damage
  17. ai dreptate, nu am testat Varianta corecta ar fi: if (angleDifference < -135.0 || angleDifference > 135.0) { SendClientMessage(playerid, -1, "ai fost lovit din fata"); } else if (angleDifference < -45.0 || angleDifference > 45.0) { if (angleDifference < -45.0) { SendClientMessage(playerid, -1, "ai fost lovit din partea dreapta"); } if (angleDifference > 45.0) { SendClientMessage(playerid, -1, "ai fost lovit din partea stanga"); } } else { SendClientMessage(playerid, -1, "ai fost lovit din spate"); }
  18. Simplu, compari unghiul tau cu unghiul de la player-ul care trimite damage. hook OnPlayerTakeDamage(playerid, issuerid, Float:amount, weaponid, bodypart) { new Float:playerAngle, Float:attackerAngle; //player GetPlayerFacingAngle(playerid, playerAngle); //attacker GetPlayerFacingAngle(issuerid, attackerAngle); new Float:angleDifference = playerAngle - attackerAngle; if (angleDifference < -180.0 || angleDifference > 180.0) { SendClientMessage(playerid, -1, "damage from behind"); } else if (angleDifference < -90.0 || angleDifference > 90.0) { SendClientMessage(playerid, -1, "damge from the side"); } else { SendClientMessage(playerid, -1, "front damage"); } return 1; } Eventual, poti sa mai adaugi si verificare de unde vine dmg-ul, sa iei numele zonei, coordonate, etc, si sa afisezi un mesaj ca te-a lovit un jucator din zona respectiva. Asta e varianta simpla.
  19. Poftim, ti-am rezolvat eu erorile, nu am compilat, daca mai primesti ceva, imi dai reply sa-ti rezolv. Aveai erori pentru ca nu ai declarat un string, lipseau niste ghilimele la undefined symbol "i", si la acel enum ai uitat sa inchizi cu ";". Edit: Aseaza-ti tu codul in coder, ca sa nu mai primesti warningul acela loose identation #include <a_samp> #include <a_mysql> new SQL = -1, gQuery[256], gString[256]; #define function%0(%1) forward %0(%1); public %0(%1) #define SCM SendClientMessage #define COLOR_DARKRED 0xd80003FF new incercariParola[MAX_PLAYERS] enum pInfo { pSQLID, pName[MAX_PLAYER_NAME], pPassword[32], pEmail[32], pGender }; new PlayerInfo[MAX_PLAYERS][pInfo]; enum { //Register DIALOG_REGISTER, DIALOG_EMAIL, DIALOG_GENDER, //Login DIALOG_LOGIN } main() { print("Gamemode-ul este in curs de procesare.."); } public OnGameModeInit() { SQL = mysql_connect("5.9.8.124", "u1715759_BXc9PBwXII", "s1715759_ringshield", "nN0wEys=sGic37abSLtj=Qj5"); // Don't use these lines if it's a filterscript SetGameModeText("RING RPG"); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); return 1; } public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1; } public OnPlayerConnect(playerid) { incercariParola[playerid] = 0; gQuery[0] = EOS; mysql_format(SQL, gQuery, sizeof(gQuery), "SELECT * FROM `users` WHERE `Name`='%s' LIMIT 1", GetName(playerid)); mysql_tquery(SQL, gQuery, "checkAccount", "i", playerid); return 1; } public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) { switch(dialogid) { case DIALOG_REGISTER: { if(!response) return Kick(playerid); if(strlen(inputtext) < 6 || strlen(inputtext) > 32) return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Scrie o parola pentru a te putea inregistra (minim 6 caractere maxim 32):", "Select", "Cancel"); new gQuery[0] = EOS; mysql_format(SQL, gQuery, sizeof(gQuery), "INSERT INTO `users` (`Name`, `Password`) VALUES ('%s', '%s')", GetName(playerid), inputtext); mysql_tquery(SQL, gQuery, "insertAccount", "i", playerid); gString[0] = EOS; format(gString, sizeof(gString), "Parola ta contine %d caractere", strlen(inputtext)); SCM(playerid, -1, gString); format(PlayerInfo[playerid][pPassword], 32, inputtext); ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Seteaza-ti adresa de email:", "Select", "Cancel"); } case DIALOG_EMAIL: { if(!response) return Kick(playerid); if(strlen(inputtext) < 6 || strlen(inputtext) > 32) return ShowPlayerDialog(playerid, DIALOG_EMAIL, DIALOG_STYLE_INPUT, "Email", "Seteaza-ti adresa de email:", "Select", "Cancel"); gQuery[0] = EOS; mysql_format(SQL, gQuery, sizeof(gQuery), "UPDATE `users` SET `Email`='%s' WHERE `ID`='%d'", inputtext, PlayerInfo[playerid][pSQLID]); mysql_tquery(SQL, gQuery, "", ""); gString[0] = EOS; format(gString, sizeof(gString), "Email setat: %s", inputtext); SCM(playerid, -1, gString); format(PlayerInfo[playerid][pEmail], 32, inputtext); ShowPlayerDialog(playerid, DIALOG_GENDER, DIALOG_STYLE_MSGBOX, "Gender", "Seteaza-ti sexul:", "Masculin", "Feminin"); } case DIALOG_GENDER: { switch(response) { case 0: { PlayerInfo[playerid][pGender] = 1; SCM(playerid, -1, "Sex setat: Feminin"); } case 1: { PlayerInfo[playerid][pGender] = 0; SCM(playerid, -1, "Sex setat: Masculin"); } } gQuery[0] = EOS; mysql_format(SQL, gQuery, sizeof(gQuery), "UPDATE `users` SET `Gender`='%d' WHERE `ID`='%d'", PlayerInfo[playerid][pGender], PlayerInfo[playerid][pSQLID]); mysql_tquery(SQL, gQuery, "", ""); SpawnPlayer(playerid); } case DIALOG_LOGIN: { if(!response) return Kick(playerid); mysql_format(SQL, gQuery, sizeof(gQuery), "SELECT * FROM `users` WHERE `Name`='%s' AND `Password`='%s' LIMIT 1", GetName(playerid), inputtext); mysql_tquery(SQL, gQuery, "onLogin", "i", playerid); } } return 1; } function onLogin(playerid) { switch(cache_num_rows()) { case 0: { incercariParola[playerid] ++; gString[0] = EOS; format(gString, sizeof(gString), "Parola incorecta! (%d/3 incercari ramase)", incercariParola[playerid]); SCM(playerid, COLOR_DARKRED, gString); if(incercariParola[playerid] == 3) Kick(playerid); else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Scrie o parola pentru a te putea loga:", "Select", "Cancel"); } case 1: { new result[64]; PlayerInfo[playerid][pSQLID]= cache_get_field_content_int(0, "ID"); PlayerInfo[playerid][pGender]= cache_get_field_content_int(0, "Gender"); cache_get_field_content(0, "Name", result); format(PlayerInfo[playerid][pName], MAX_PLAYER_NAME, result); cache_get_field_content(0, "Password", result); format(PlayerInfo[playerid][pPassword], 32, result); cache_get_field_content(0, "Email", result); format(PlayerInfo[playerid][pEmail], 32, result); printf("%s (user: %d) s-a logat. [Gender: %d, Name: %s, Password: %s, Email: %s]", GetName(playerid), PlayerInfo[playerid][pSQLID], PlayerInfo[playerid][pGender], PlayerInfo[playerid][pPassword], PlayerInfo[playerid][pEmail]); } } return 1; } function insertAccount(playerid) { PlayerInfo[playerid][pSQLID] = cache_insert_id(); printf("%s s-a inregistrat cu SQLID-ul #%d.", GetName(playerid), PlayerInfo[playerid][pSQLID]); return 1; } function checkAccount(playerid) { switch(cache_num_rows()) { case 0: ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Register", "Scrie o parola pentru a te putea inregistra (minim 6 caractere maxim 32):", "Select", "Cancel"); case 1: ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Scrie o parola pentru a te putea loga:", "Select", "Cancel"); } } stock GetName(playerid) { new playerName[MAX_PLAYER_NAME]; GetPlayerName(playerid, playerName, MAX_PLAYER_NAME); return playerName; }
  20. Nu e greu cam deloc de facut, doar ca sunt multi care nu stiu, mie unul imi place si iti apreciez munca, te sustin. Bravo! Ai usura treaba multora cu acest tool.
×
×
  • 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.