Jump to content

Micu_Gamer

Membru
  • Posts

    11
  • Joined

  • Last visited

Everything posted by Micu_Gamer

  1. Salut, as vrea sa va intreb daca am facut ceva gresit la aceste comenzi de nu imi salveaza in baza de date ? QUITJOB: CMD:quitjob(playerid, params[]) { if(IsPlayerConnected(playerid)) { if(PlayerInfo[playerid][pJob] >= 1) { SendClientMessage(playerid, COLOR_GREY, "You have quit your job!"); PlayerInfo[playerid][pJob] = 0; DisablePlayerCheckpoint(playerid); new szQuery[128]; mysql_format(mysql, szQuery, sizeof(szQuery), "UPDATE `users` SET `Job`='0' WHERE `Username`='%s'", PlayerInfo[pJob], PlayerInfo[playerid][pUsername]); mysql_tquery(mysql, "szQuery"); } else return SendClientMessage(playerid, COLOR_WHITE, "You don't have a job."); } return 1; } GETJOB: CMD:getjob(playerid, params[]) { new szQuery[256]; if(IsPlayerConnected(playerid)) { new sendername[25],str[256]; GetPlayerName(playerid,sendername,sizeof(sendername)); if(PlayerInfo[playerid][pJob] == 0) { if (GetPlayerState(playerid) == 1 && PlayerToPoint(3.0, playerid,607.8375,-1438.1827,14.0654)) { SendClientMessage(playerid, COLOR_LIGHTBLUE, "Jobul tau este acum Detective."); PlayerInfo[playerid][pJob] = 1; mysql_format(mysql, szQuery, sizeof(szQuery), "UPDATE `users` SET `Job`='%d' WHERE `Username`='%s'", PlayerInfo[playerid][pJob], PlayerInfo[playerid][pID]); mysql_tquery(mysql, szQuery); } else if (GetPlayerState(playerid) == 1 && PlayerToPoint(3.0, playerid,359.3762,-2071.5310,10.6953)) { SendClientMessage(playerid, COLOR_LIGHTBLUE, "Jobul tau este acum Fisherman."); PlayerInfo[playerid][pJob] = 2; mysql_format(mysql, szQuery, sizeof(szQuery), "UPDATE `users` SET `Job`='%d' WHERE `Username`='%s'", PlayerInfo[playerid][pJob], PlayerInfo[playerid][pID]); mysql_tquery(mysql, szQuery); } } else { SendClientMessage(playerid, COLOR_WHITE, "{FFB870}Ai deja un job, foloseste comanda /quitjob pentru a parasi job ul."); } } return 1; } SETJOB: CMD:setjob(playerid, params[]) { new szQuery[256]; if(IsPlayerConnected(playerid)) { if (PlayerInfo[playerid][pAdmin] >= 6) { new id,jobid,string[256],giveplayer[30],sendername[30]; if(sscanf(params, "ui",id,jobid)) return SendClientMessage(playerid, 0xFFFFFFFF, "{0049FF}Syntax: {ffffff}/setjob <Name/Playerid> <Job ID>"); { if(IsPlayerConnected(id)) { if(id != INVALID_PLAYER_ID) { GetPlayerName(id, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); PlayerInfo[id][pJob] = jobid; format(string, sizeof(string), "Admin %s has changed you job to %d.", sendername,jobid); SCM(id,COLOR_LIGHTBLUE, string); new str[128]; mysql_format(mysql, szQuery, sizeof(szQuery),"UPDATE `users` SET `Job`='%d' WHERE `name`='%s'",PlayerInfo[id][pJob],PlayerInfo[id][pUsername]); mysql_tquery(mysql, szQuery); } } else { SendClientMessage(playerid,COLOR_WHITE, "{FFFFCC}Error: Player not connected."); } } } else { SendClientMessage(playerid, COLOR_RED, AdminOnly); } } return 1; } Mersi!
  2. Salut! astazi am incercat sa mi fac un gamemode de la zero si logic am inceput cu un system de register si login si intampin aceste probleme dar prima data acesta este tot codul meu current: #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"); 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; } Iar erorile cu tot cu warning uri sunt: C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(14) : error 001: expected token: ";", but found "enum" C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(69) : warning 217: loose indentation C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(72) : warning 217: loose indentation C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(74) : error 001: expected token: "-string end-", but found "-identifier-" C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(74) : error 017: undefined symbol "i" C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(74) : warning 215: expression has no effect C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(74) : warning 215: expression has no effect C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(74) : error 001: expected token: ";", but found ")" C:\Users\Fabian\Desktop\SAMP SV\gamemodes\ringshield.pwn(74) : fatal error 107: too many error messages on one line Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase 5 Errors. Va multumesc!
  3. Serban, am deja pawnc.dll in pawno dar tot nu merge
  4. Dupa ce mi-am reinstalat windows-ul am inceput sa intampin aceasta problema : Multumesc!
  5. Salutare! Am create un tutorial simplu pentru a implementa un sistem AFK/Back in serverul vostru de SA:MP. Acest sistem permite jucatorilor sa intre in modul AFK si sa se intoarca la joc atunci cand doresc. Voi explica pasii necesari pentru implementarea acestui sistem folosind limbajul de scripting Pawn. [Pasul 1: Declarare variabile] Inainte de a incepe implementarea, trebuie sa declaram urmatoarea variabila: new AFKMode[MAX_PLAYERS]; [Pasul 2: Comanda /afk Pentru a activa AFK, am creat comanda /afk. Aceasta comanda are urmatorul cod: CMD:afk(playerid, params[]) { if (AFKMode[playerid]) return SendClientMessage(playerid, COLOR_RED, "Esti deja AFK."); AFKMode[playerid] = 1; new string[256], pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(pname)); TogglePlayerControllable(playerid, 0); format(string, sizeof(string), "%s este acum AFK.", pname); SendClientMessageToAll(COLOR_YELLOW, string); return 1; } [Pasul 3: Comanda /back Pentru a reveni la joc din modul AFK, am creat comanda /back. Aceasta comanda are urmatorul cod: CMD:back(playerid, params[]) { if (!AFKMode[playerid]) return SendClientMessage(playerid, COLOR_RED, "Nu esti afk."); AFKMode[playerid] = 0; new string[256], pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, sizeof(string)); TogglePlayerControllable(playerid, 1); format(string, sizeof(string), "%s nu mai este acum AFK.", pname); SendClientMessageToAll(COLOR_YELLOW, string); return 1; } Aceasta a fost o scurta introducere despre cum puteti implementa un sistem AFK/Back in serverul vostru de SA:MP. Sper ca acest tutorial a fost util si ca va ajutat!
  6. Tutorial Random Spawns Deci este un tutorial foarte simplu. Pentru a crea Random Spawns, exista 2 metode la care te poti gandi. 1. Switch() statement 2. Multi-Dimensional Arrays Sunt foarte multi incepatori care nu reusesc sa inteleaga conceptul de Multi-Dimensional Arrays, asa ca in acest tutorial le voi arata cum sa creeze un sistem de Random Spawns si lucruri similar fara a utiliza Multi-Dimensional Arrays. Avand in privire ca Multi-Dimensional Arrays este explicat in wiki o sa o explic pe a doua. Uitati un cod care arata callback ul OnPlayerSpawn(), de exemplu, daca doriti sa generati jucatorul in una dintre cele 5 pozitii aleatorii, acest cod va functiona : public OnPlayerSpawn (playerid) { new selected_spawn = random (5); switch (selected_spawn) { case 0: { SetPlayerPos (playerid, 0.0, 0.0, 0.0); SetPlayerFacingAngle (playerid, 0.0); } case 1: { SetPlayerPos (playerid, 10.0, 10.0, 10.0); SetPlayerFacingAngle (playerid, 10.0); } case 2: { SetPlayerPos (playerid, 20.0, 20.0, 20.0); SetPlayerFacingAngle (playerid, 20.0); } case 3: { SetPlayerPos (playerid, 30.0, 30.0, 30.0); SetPlayerFacingAngle (playerid, 30.0); } case 4: { SetPlayerPos (playerid, 40.0, 40.0, 40.0); SetPlayerFacingAngle (playerid, 40.0); } } return 1; } Explicatie: 1. Code: new selected_spawn = random (5); Aici puteti vedea o noua variabila de tip integer fiind create urmata de un assignment operator si de o functie numita `random()`. Aceasta semantica a acestei linii de cod functioneaza astfel: -Se creeaza o variabila integer. -Apoi genereaza o valoare random intre 0 si 4 (5 este dimensiunea intervalului sau, deoarece in codificare numaratoarea incepe de la 0, deci 0, 1, 2, 3, 4 = 5) -Atribuie valoarea generata Random variabilei nou create. ------------------------------------------------------------------------------------------------ 2. Code: switch (selected_spawn) { } Aceasta se numeste switch statement, mai usor este o alternativa la if-statement cu cateva limitari, dar poate fi folosita cu grija in acest caz. Deci va executa o functie sau un set de functii in functie de valoarea variabilei "selected_spawn". Dupa cum puteti vedeam, i am oferit 2 functii de indeplinit in fiecare caz, de exemplu, daca valoarea lui "selected_spawn" se dovedeste a fi 1, acesta va indeplinii urmatoarele functii si, prin urmare, pozitia jucatorului va fi setata la coordonatele date. Code: switch (selected_spawn) { case 0: { SetPlayerPos (playerid, 0.0, 0.0, 0.0); SetPlayerFacingAngle (playerid, 0.0); } case 1: { SetPlayerPos (playerid, 10.0, 10.0, 10.0); SetPlayerFacingAngle (playerid, 10.0); } case 2: { SetPlayerPos (playerid, 20.0, 20.0, 20.0); SetPlayerFacingAngle (playerid, 20.0); } case 3: { SetPlayerPos (playerid, 30.0, 30.0, 30.0); SetPlayerFacingAngle (playerid, 30.0); } case 4: { SetPlayerPos (playerid, 40.0, 40.0, 40.0); SetPlayerFacingAngle (playerid, 40.0); } } Asta a fost tot, daca doriti sa mai adaugati un alt random spawn, puteti creste intervalul functiei random() si sa adaugati coordonatele acesteia in switch statement. De asemenea, puteti creea o functie din ea, asa ca daca doriti sa setati pozitii random de mai multe ori in cod, va fi util. Uite un exemplu de cod: Code: public OnPlayerSpawn (playerid) { SetRandomPosition (playerid); // You can use this multiple times in other parts of code too. return 1; } stock SetRandomPosition (playerid) { new selected_spawn = random (5); switch (selected_spawn) { case 0: { SetPlayerPos (playerid, 0.0, 0.0, 0.0); SetPlayerFacingAngle (playerid, 0.0); } case 1: { SetPlayerPos (playerid, 10.0, 10.0, 10.0); SetPlayerFacingAngle (playerid, 10.0); } case 2: { SetPlayerPos (playerid, 20.0, 20.0, 20.0); SetPlayerFacingAngle (playerid, 20.0); } case 3: { SetPlayerPos (playerid, 30.0, 30.0, 30.0); SetPlayerFacingAngle (playerid, 30.0); } case 4: { SetPlayerPos (playerid, 40.0, 40.0, 40.0); SetPlayerFacingAngle (playerid, 40.0); } } return 1; } Bafta!!
  7. De ce imi apare la mode: unknown am conectat gamemode u la baza de date adica in alta ordine de idei am facut tot
  8. Micu_Gamer

    Godmode

    Mergem la enum pInfo si punem urmatorul lucru: pGodMode Acum, o sa cream comanda propriu-zisa: CMD:godmode(playerid) { if(PlayerInfo[playerid][pAdmin] < 6) { SendClientMessage(playerid, 0xFF0000FF, "You do not have permission to use this command."); return 1; } if(PlayerInfo[playerid][pGodMode] == 0) { PlayerInfo[playerid][pGodMode] = 1; SetPlayerHealth(playerid, 100.0); SetPlayerArmour(playerid, 100.0); SendClientMessage(playerid, 0x00FF00FF, "God mode enabled."); } else { PlayerInfo[playerid][pGodMode] = 0; SendClientMessage(playerid, 0xFF0000FF, "God mode disabled."); } return 1; }
  9. Prima data mergem sub define uri si punem aceasta linie : new message[256]; Acum, mergem la enum pInfo si pune urmatorul lucru : pBonusTaken Acum, vom face urmatoarea comanda /firsttime folosind ZCMD : CMD:firsttime(playerid, params[]) { if(PlayerInfo[playerid][pAdmin] < 6) { if(PlayerInfo[playerid][pBonusTaken] == 1) { SendClientMessage(playerid, 0xFFFFFFFF, "Ati revendicat deja bonusul."); return 1; } new randMoney = random(1000000, 1900000); new randPoints = random(20, 50); new randMats = random(1000, 5000); new randDrugs = random(500, 1000); GivePlayerCash(playerid, randMoney); PlayerInfo[playerid][pPremiumPoints] += randPoints; PlayerInfo[playerid][pMats] += randMats; PlayerInfo[playerid][pDrugs] += randDrugs; PlayerInfo[playerid][pBonusTaken] = 1; format(message, sizeof(message), "Felicitari! Ai primit $%d, %d Premium Points, %d Mats, and %d Drugs.", randMoney, randPoints, randMats, randDrugs); SendClientMessage(playerid, 0xFFFFFFFF, message); } else { new randMoney = random(1000000, 1900000); new randPoints = random(20, 50); new randMats = random(1000, 5000); new randDrugs = random(500, 1000); GivePlayerCash(playerid, randMoney); PlayerInfo[playerid][pPremiumPoints] += randPoints; PlayerInfo[playerid][pMats] += randMats; PlayerInfo[playerid][pDrugs] += randDrugs; format(message, sizeof(message), "Felicitari! Ai primit $%d, %d Premium Points, %d Mats, and %d Drugs.", randMoney, randPoints, randMats, randDrugs); SendClientMessage(playerid, 0xFFFFFFFF, message); } return 1; } Sper că o să vă ajute!
×
×
  • 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.