LOGO
Username Icons
100$
Username Effects
150$
Username Change
300$
Profile Cover
250$
Userbar Hue
100$
Change Username Color
1000$
Spotify listening status
150$
Arcade access
400$
Reputation power
500$
Warn Remover ( -1 )
5000$
Customize your MyBB profile with our shop’s options! Choose from username changes, colors, and profile covers and more others to enhance your forum identity.
Go to shop
CSGO.WTFCS.COM
Connect
CS.WTFCS.COM
Connect
XMAS.WTFCS.COM
Connect
PB.WTFCS.COM
Connect
DR.WTFCS.COM
Connect
WAR.WTFCS.COM
Connect
WAR1.WTFCS.COM
Connect
www.Game-State.com
SAMP
Connect
www.Game-State.com
MINECRAFT
Connect
Hello There, Guest!
If you encounter issues with quick login, use the link below for direct access.
Open Log In ( Directly page )
×
Register
Show Serverlist
ChatBox
345
[TUTORIAL] Sistem Task-uri
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Salut! In acest tutorial o sa va arat un sistem de task-uri facut de mine, de la 0.

Sa-ncepem! 
Aveti nevoie de ZCMD pentru comenzi, trebuie scris la inceputul GM-ului #include <zcmd>. 
Inainte de toate, eu am definit si:

Code:
#define SCM SendClientMessage // pentru a-mi fi mai usor, sa nu mai stau sa scriu tot
#define COLOR_TASKS 0xCULOARE// culoare mesajelor specifice task-urilor, le puteti schimba. Puteti lua de pe colorpicker.com

1. Definim task-urile pentru baza de date, pe la inceputul gamemode-ului sau unde aveti voi definite si altele de genul:
Code:
#define pTasksx
2. Mergem la enum pInfo si definim task-urile pentru joc:
Code:
pTasks

3. Acum, trebuie sa facem sa se salveze in baza de date, cat si randul pentru task-uri in contul jucatorilor:


Code:
Intram in baza de date, ne ducem la users (sau accounts, cum aveti dvs.), la "Structura", apoi va duceti jos de tot si o sa va apara o optiune "Adauga coloane". Veti adauga una, apoi apasati pe "Executa". La "Nume", veti pune "Tasks", iar apoi salvati.

Apoi, definim si in baza de date pentru a se realiza conexiunea si sa se faca update-urile necesare la Task-uri: 
Mergem in GM, la public Update si scriem linia (depinde cum aveti voi in gm, eu am astfel):

Code:
case pTasksx: format(var, sizeof(var), "UPDATE `users` SET `Tasks`='%d' WHERE `ID`='%d'", PlayerInfo[playerid][pTasks],  PlayerInfo[playerid][pSQLID]);
// va actualiza numarul task-urilor de cate ori veti primi sau vi se va lua cate unul

4. Mergem la Payday, in GM, si adaugam liniile:
Code:
PlayerInfo[i][pTasks] +=1, Update(i, pTasksx); // La fiecare payday, jucatorul va primi cate un Task. Totodata se actualizeaza numarul si in baza de date
format(string, sizeof(string), "Ai primit un nou task! Foloseste /tasks!"); // Mesajul pe care jucatorul il primeste la payday
SCM(i, COLOR_TASKS, string); // Se trimite mesajul cu aceasta linie
Acum, fiecare jucator va primi cate un Task la fiecare payday. 

5. Acum, vom creea comanda care sa arate task-urile. Eu o s-o fac sub forma de dialog
Code:
CMD:tasks(playerid, params[]) {
    if(PlayerInfo[playerid][pTasks] < 1) return SCM(playerid, COLOR_TASKS, "Nu ai un task!");  // Daca jucatorul nu are un task, va primi acest mesaj si nu i se vor arata task-urile
    if(IsPlayerConnected(playerid)) ShowPlayerDialog(playerid, DIALOG_TASKS, DIALOG_STYLE_LIST, "Tasks", "Schimba numarul de inmatriculare (PREMIU: $1000)\nAlt Task", "Select", "Cancel"); // Acesta este dialogul care ii va aparea jucatorului cand va tasta comanda, si se va folosi de dialogul "DIALOG_TASKS"
return 1;
}
6. Vom creea dialogul "DIALOG_TASKS", care va trimite comenzi atunci cand jucatorul apasa pe o optiune din /tasks

Code:
if(dialogid == DIALOG_TASKS) { // verifica daca se foloseste de DIALOG_TASKS, in cazul nostru, /tasks
        if(!response) return 1;
        switch(listitem) { // aici o sa adaugam caracteristici la fiecare optiune
               case 0: // primul caz, adica primul task din /tasks
               {
                if(PlayerInfo[playerid][pTasks] < 1) return SCM(playerid, COLOR_ERROR, "Eroare: Nu ai un task!"); // daca nu are un task nu va primi mesajul si nu va face task-ul
                if(PlayerInfo[playerid][pTasks] >= 1) return SCM(playerid, COLOR_TASKS, "Schimba plate-ul de la masina prin /carplate"); // daca are unul sau mai multe task-uri, va primi acest mesaj cu instructiuni
               }

           }
       }
7. Dupa cum vedeti, task-ul meu este acela de a schimba numarul de inmatriculare, ce se face prin comanda /carplate. O sa ma duc la comanda (CMD:carplate) si o sa adaug (inainte de "return 1"):

Code:
if(PlayerInfo[playerid][pTasks] >= 1) { // verifica daca jucatorul are unul sau mai multe task-uri
        SendClientMessage(playerid, COLOR_TASKS, "Ai completat task-ul 'Schimba nr. de inmatriculare'!"); // trimite mesajul ca a realizat task-ul
        SendClientMessage(playerid, COLOR_TASKS, "+$1000"); // acesta este premiul, trimis intr-un mesaj
        GivePlayerCash(playerid, 2000); // trimite banii jucatorului
        PlayerInfo[playerid][pTasks] -= 1;  // ii va lua un task jucatorului
        Update(playerid, pTasksx);    // i se vor actualiza task-urile in baza de date jucatorului
            }

SI asa puteti adauga si dvs. task-uri. Sper ca v-am ajutat si ca am explicat cat de bine posibil ca sa intelegeti. Inca sunt foarte incepator in Pawn si nu stiu toate denumirile, dar sper ca ati inteles ceva.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)