Jump to content

Tutorial GF House create[0.3c]


heatON

Recommended Posts

Aici am sa va explic cum sa faceti case si masini la case in modul GodFather

House in scriptfiles

x.x,y.y,z.z,xx.xx,yy.yy,zz.zz,0,0,0,0,0,0,numeproprietar,descriere,pret,health,armour,interior,lock,owned,rooms,rentbill,0,0,vehicle,vehiclecolor1,vehiclecolor2,date,level

Acum leganda:

x.x = Coordonata x de afara

y.y = Coordonata y de afara

z.z = Coordonata z de afara

xx.xx = Coordonata x din interior

yy.yy = Coordonata y din interior

zz.zz = Coordonata z din interior

numepropietar = Numele proprietarului (The state daca e de vanzare)

descriere = la Description gen 4 Room house

pret = pretul casei

health = upgradeul de viata (0=nu 1=da)

armour = upgradeul de armoura (0=nu 1=da)

interior = idul interiorului

lock = usa sa fie inchisa (0=deschis 1=inchis)

owned = daca are propietar (0=nu 1=da)

rooms = camere

rentbill = cat costa rentul (ex: 500)

vehicle = idul masinii casei

vehiclecolor1 = culoarea1 a masinii casei

vehiclecolor2 = culoarea2 a masinii casei

date = ?

level = levelul casei

Un exemplu de casa:

2457.287597,-1054.422119,59.742198,1.200000,-3.400000,999.400024,0,0,0,0,0,0,The State,Trailer,25000,0,0,2,1,0,0,1,1,182,418,-1,-1,13,3

Dupa ce ati terminat de facut linia casei mergeti in Folderul serverului -> scriptfiles si deschideti property.cfg cu wordpad

Acolo sub toate casele puneti aceasta pe care ati facut-o voi.

Acum ca sa mearga casa intrati in mod CTRL+F "houseinfo" ->

O sa va apara linia "[pawn]new HouseInfo[34][hInfo];[/pawn]", in loc de numarul 34 puneti 35 daca ati adaugat o casa doar sau adaugati cate case aveti in fisierul property.cfg

Acum urmati urmatorul tutorial pentru adaugarea masinii la o casa

HouseCar

Intrati in mod CTRL+F "HouseCarSpawns"

O sa va apara linia "[pawn]new Float:HouseCarSpawns[34][4] = {[/pawn]"

Sub aceasta linie apar masinile caselor.

Sub ele adaugati masina pentru casa nou adaugata

{x.x,y.y,z.z},

Adaugati coordonatele unde sa fie masina

Iar la prima linie in loc de 34 puneti numarul de masini care le aveti

Acum va va aparea o eroare la compilare de ce?

Urmati pasii acestia:

La inceput ianinte sa fi adaugat vreo masina la casa ultima masina nu avea virgula

Iar acum penultima nua re virgula si ultima are

Schimbati puneti al pentultima masina virgula si la ultima nu puneti nimic dupa }

Ex:

{-2529.4817,-142.6608,19.7107,4.2929},

{-2529.4817,-142.6608,19.7107,4.2929}

Acum compilati.

Sper ca va este de folos tutorialul

© Copyright goes to heatON! ©

Imi aduc aminte cand jucam pe versiunea 0.1.. ala era SA-MP adevarat.

Va salut cu respect (pe cei care merita).

Link to comment
Share on other sites

  • Replies 154
  • Created
  • Last Reply

Top Posters In This Topic

Tnx, dar cand intru pe server nu vad nici pickup-ul bagat de mine si nici discription level bla bla bla la nicio casa .. iar daca scot casa respectiva e totul in regula.Ceva help? :>

ai uitata sa adaugi masina la casa

Imi aduc aminte cand jucam pe versiunea 0.1.. ala era SA-MP adevarat.

Va salut cu respect (pe cei care merita).

Link to comment
Share on other sites

Well, mersi de ajutor dar a intervenit alta problema..deci, am casa aceasta bagata in property.cfg:

-2660.8057,877.6292,79.7738,83.2710,1324.7223,1083.8594,0,0,0,0,0,0,The State,4 Room,200000,1,1,9,1,0,9,500,418,1,1,-1,-1,13,10
Si linia la HouseInfo o am asa:
new HouseInfo[35][hInfo];
Iar masinile la casa sunt asa:
new Float:HouseCarSpawns[35][4] = {
{-2637.2544,165.0454,4.2919,179.9976},//House 0
{2064.4,-1694.4,13.1,271.1561},//House 1
{-2712.7625,870.3005,70.5348,89.1608},//House 2
{1109.8,-968.0,42.7,0.0},//house 3
{2497.6274,-2025.6306,13.2521,355.4281}, // House 4
{2645.0,-1990.8,13.1,180.0},//House - 5
{-2724.8965,914.8384,67.4253,110.1072},//house 6
{1910.5149,-1120.5304,25.4493,177.8350},//house 7
{828.8,-887.0,68.5,230.7095},//House 8
{2149.6,-1610.9,14.0,90.7904},//House 9
{760.1,-1687.8,4.3,180.6},//House 10
{645.5,-1616.1,14.9,0.0},//House 11
{-2635.2371,931.1931,71.5643,215.3709},//House 12
{-2665.9224,989.9724,64.6955,1.7814},//House 13
{959.5864,-901.0845,45.8584,177.3087},//House 14
{2445.8,-1326.8,23.6,18.4},//House 15
{2845.9,-1286.8,18.9,90.0},//house 16
{2159.8,-1803.9,13.3,271.4}, //House 17
{-2693.7847,132.3186,4.1676,89.5330},//House 18
{-2723.0105,977.7357,54.2926,359.9068},//House 19
{1514.0,-694.6,94.5,90.0},//House 20
{1246.7,-1107.6,25.5,266.4},//House 21
{831.7,-857.5,69.9,180.0},//House 22
{1007.9,-659.4,121.1,130.6194},//House 23
{1110.0,-726.4,100.1,90.0},//House 24
{259.7,-1221.0,74.7,202.0011},//House 25
{1463.7,-901.7,55.8,359.0},//house 26
{1440.1,-890.6,51.2,0.0},//house 27
{-2528.8298,2250.2998,4.8112,334.9590},//house 28
{-2554.7874,2270.5356,4.9064,333.9774}, //House 29
{-2371.1323,2438.4104,9.0698,159.2582},//House 30
{-2237.9492,893.7390,66.4872,89.7571},//House 31
{-2529.4817,-142.6608,19.7107,4.2929}, //House 32
{-2616.1897,-108.4479,4.1693,269.8246},//House 33
{-2680.8354,869.3683,76.5345}//House 34
};

Nu apuc sa intru bine in joc si imi da crash..o alta rezolvare?

EDIT:Rezolvat. :)

EDIT:New problem..nu pot adauga decat o casa in plus, la celalalte adaugate, de ex 35 dau /houseo 35 si ma da prin aer. :)

Link to comment
Share on other sites

O intrebare...Cum fac sa nu se incurce masinile dupa ce pun casa :( ?De exemplu la masina de politie spune ca nu sunt Fireman,la heli de politie spune ca nu sunt medic etc. Deci..?

Deci ai gresit subiectul. Posteaza aici.

logo.png

ATENTIE!!! Nu imi trimiteti mesaje private care au legatura cu scriptingul. NU mai scriptez.

Link to comment
Share on other sites

  • 2 months later...

UPPPPPPPPPPPPPP.Moro, ne ajuti? :)

Deci, sa va explic mai bine..Fac casa, totul ok merge perfect numai cand dau '/house 4', ma duce in casa cu ID-ul 4, iar dupa ce dau /exit ma duce la casa cu ID 34, ultima casa facuta.Ce pot face?

Deoarece ai folosit de 2 ori acelasi interior fara sa folosesti Virtual World, iar coordonatele iesirilor se suprapun.

Nu ma intreba cum sa folosesti Virtual Worldul. Trebuie sa rescriptezi tot sistemul de houses.

Imi aduc aminte cand jucam pe versiunea 0.1.. ala era SA-MP adevarat.

Va salut cu respect (pe cei care merita).

Link to comment
Share on other sites

Bine, de rescriptat dar da-ne o idee ceva, ne-om descurca noi, nu? :|

Nici eu nu stiu sigur cum se face? SI ce vrei sa-ti scuip totul in gura? Cum isi fac altii pentru ei dupa tutoriale dupa wiki asa poti si tu.

Imi aduc aminte cand jucam pe versiunea 0.1.. ala era SA-MP adevarat.

Va salut cu respect (pe cei care merita).

Link to comment
Share on other sites

Nici eu nu stiu sigur cum se face? SI ce vrei sa-ti scuip totul in gura? Cum isi fac altii pentru ei dupa tutoriale dupa wiki asa poti si tu.

Iach ! Nu vreau sa imi scuipi in gura , urat , mi s-a facut pielea de gaina ( glumeam )

Daca erai amabil ne spuneai macar unde sa ne iutam...in fine merci ca mi-ai zis sa ma iut pe wiki ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By Tefyuu
      Cum pot scoate quest ul din gamemode ul lui hpq123 ? am vazut ca nu e ca la celelante gamemodeuri e altcumva
    • By music prodaction
      salut, cum as putea sa pun un chat tag la admini si la helperi
      EX: 
      (A) alin: salut - admin
      (h) alin: salut - helper
    • By WiDuAlK
      Salutare, azi am sa va prezint cum sa faceti un tutorial register/login mysql R39.
      Mai intai o sa va trebuiasca pluginul si includeul mysql care ip puteti gasi AICI!
      Mai intai o sa punem la inceputul GM-ului include-ul mysql.
       
      #include <a_mysql>  
      Acum o sa definim datele de conectare
      #define mysql_host "localhost" // aici punem ip hostului. Daca folosim in PC GM lasam localhost #define mysql_db "bazadate"// aici punem numele bazei de date. #define mysql_user "root"// aici punem numele userului de la host. Daca folositi PC lasati root. #define mysql_pass ""//Aici puneti parola de la host(de la phpmyadmin al hostului). In caz de folositi PC lasati asa.  
      Vom crea 2 Enum-uri. Unul cu dialogurile de register/login si altul cu datele pe care le va avea playerul
      enum {     DIALOG_LOGIN, // dialogul de login     DIALOG_REGISTER// dialogul de register }; enum pInfo //numele enumului este pInfo. in el vom pune datele playerului gen Admin/Level/ Money/Experianta si altele. {     pParola,//cu pParola vom lua parola din baza de date a playerului     pID// cu pID vom lua ID-ul din baza de date a playerului }; new P_Data[MAX_PLAYERS][pInfo];// Aceasta variabila este array. cu ea vom verifica 2 lucruri. id playerului si datele lui gen P_Data[playerid][pID] == 1;  
      Vom crea acum un new care ne va ajuta sa conectam datele de conectarea cu baza de date
      new handle; // handle(mâner) este cea de care ne vom folosi sa facem lagatura intre baza de date si server Acum vom crea legatura intre baza de date si server.
       
      forward MySQLConnect();// se creaza un nou callback cu forward public MySQLConnect()// se face callback-ul {     handle = mysql_connect(mysql_host, mysql_user, mysql_db, mysql_pass);// definim handle(manerul) ca fiind conectarea mysql la host, baza de date, parola si user-ul     if(mysql_errno() != 0)// in caz ca aceasta va fi diferita de 0(0 inseamna ca e conectat, 1 inseamna ca nu e conectat , fiind un vector)     {         printf("Conexiunea la baza de date %s a esuat ---> Server Inchis ~~~", mysql_db);// va trimite un mesaj in consola         SendRconCommand("exit");// se inchide serverul     }     else// altfel daca este 0(daca se face legatura)     {         printf("Conexiunea la baza de date '%s' cu user-ul '%s' a reusit!!!", mysql_db, mysql_user);// ne va da acest mesaj in consola     }     return 1; }  
      Callback-ul MySQLConnect se va pune la OnGameModeInit pentru a fi finalizata conectarea la baza de date.
      public OnGameModeInit() {     MySQLConnect();     return 1; } Se va crea un stock simplu cu care vom selecta numele playerului
       
      stock GetName(playerid) { new Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, sizeof(Name)); return Name; }  
      Acum vom se va crea un nou callback , la care vom apela cand playerul se conecteaza. El va arata daca are cont sau nu.
       
      forward OnPlayerLogin(playerid);// se creaza callbac-ul public OnPlayerLogin(playerid)//Se creaza publicul {     new rows, fields;// definim rows(randurile)si fields(domeniile)     cache_get_data(rows, fields);//cache_get_data interogheaza date din baza de date. acele date sunt rows si fields     if(rows)// atunci cand playerul se inregistreaza i se va crea niste randuri. Daca i se gasesc atunci cand se va conecta ii va da:     {         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Logheaza-te!", "Te rog sa-ti introduci parola contuului mai jos!", "Logare", "Exit");// dialogul register     }     else// daca nu i se gasesc randuri, adica daca contul nu exista, atunci i se va da urmatorul dialog     {         ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_INPUT, "Inregistrare", "Trebuie sa iti creezi un cont ca sa joci pe server. nTasteaza mai jos o parola, pentru a te inregistra!", "Inregistreaza", "Exit");// dialogul register     }     return 1; }  
      Acum ca am creat dialogul care ne ajuta sa verificam daca playerul are cont sau nu , mergem la OnPlayerConnect si punem urmatoarele:
       
      public OnPlayerConnect(playerid) {     new query[100];// definim query(interogare)     mysql_format(handle, query, sizeof(query), "SELECT * FROM conturi WHERE Nume = '%s'", GetName(playerid));// mysql format face interogarile/setarile/obtiunile/updateurile la baza de date     //handle reprezinta conectarea la mysql, query si sizeof(queri) reprezinta interogarea     //"SELECT * FROM conturi WHERE Nume = '%s'"- Selecteaza de la tabelul cu conturi, unde numele este %s(de exemplu eu am numele Widualk pe sa-mp. Mi se va extrage numele si     mysql_tquery(handle, query, "OnPlayerLogin", "i", playerid);// se va interoga OnPlayerLogin. Adica mai pe scurt , cand se conecteaza se va verifica daca are cont sau nu acel player.     return 1; }  
      Acum ca am terminat cu callback-urile de la conectare, vom crea dialogurile.
       
      public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {     new query[128], ip[25];// se creaza interogarea si ip.     switch(dialogid)// se va folosi switch pentru a selecta dialogul     {         case DIALOG_REGISTER:// daca se va selecta dialogul register         {             if(!response)                     return Kick(playerid);// daca se va apasa pe butonul Exit ii va da kick             if(response)// daca se apasa pe Butonul inregistrare se vor face urmatoarele verificari             {                 if(!strlen(inputtext))// daca nu e scris nimic la parola                         return ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Introdu-ti o parola pentru a te inregistra pe server! n", "Inregistreaza", "Exit");// ii va da din nou dialogul register cu mesajul specific                 GetPlayerIp(playerid, ip, sizeof(ip));// definim ip-ul de mai sus                 mysql_format(handle, query, sizeof(query), "INSERT INTO conturi (Nume, Parola, IP) VALUES ('%s', '%e', '%s')", GetName(playerid), inputtext, ip);// se insereaza in tabelul cu conturi numele playerului, parola pe care a scris-o si ip pe care il are                 mysql_query(handle, query);// se va trimite setarile si se va interoga callback-ul OnRegistration                 SpawnPlayer(playerid); // ii da spawn             }             return 1;         }         case DIALOG_LOGIN:// daca se va selecta dialogul de login         {             if(!response) return Kick(playerid);// si se va apasa pe butonul exit ii va da kick             if(response)//daca se apasa pe butonul LOGARE se va face urmatoarele verificari             {                 if(!strlen(inputtext))// daca nu a scris nimic la parola                         return ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu login cu mesajul specific                 // daca se va trece peste aceasta verificare se vor face urmatoarele:                 mysql_format(handle, query, sizeof(query), "SELECT * FROM `conturi` WHERE `Nume`='%e' AND `Parola` = '%e'", GetName(playerid),inputtext);// va fi selectata parola de la tabelul cu conturi mysql_tquery(handle, query, "OnLogin", "i", playerid);// se va face apel la baza si se va interoga CallBackUl OnLogin (Tquery = take query sau ia interogare in romana)             }             return 1;         }     }     return 1; }  
      Acum , ca am facut dialogurile , vom crea calback-urile care se interogheaza la dialogurile de mai sus.
      Vom crea callback-ul pentrul dialogul de register.
       
      Acum , vom crea callback-ul la care apeleaza dialogul de login
       
      forward OnLogin(playerid);// definim callback ul public OnLogin(playerid)// facem publicul {     new rows, fields,temporar[200];// definim randurile si domeniile, iar temporar se va folosi la extragerea stringurilor     cache_get_data(rows, fields);// facem interogarea lor     if(rows)// daca playerul are randuri(adica daca are cont creat, odata cu contul se creeaza randurile)     {         //deci daca are randuri         cache_get_field_content(0, "Parola",temporar), format(P_Data[playerid][pParola], 25, temporar);// i se vaextrage parola si i se verifica daca coincide cu numele. Se foloseste new-ul temporar pentru extragerea parolei, ea retinandu-se temporar(pana cand se deconecteaza jucatorul)         P_Data[playerid][pID] = cache_get_field_content_int(0, "ID");// i se vaextrage ip-ul         //un exemplu ar fi , daca are Admin , va fi ceva de genu P_Data[playerid][pAdmin] = cache_get_field_content_int(0,"Admin)"; i se va extrage din baza de date levelul de admin si i se va returna pe server, mai precis, cand se conecteaza are levelul de admin , care i-a fost setat de owner         SpawnPlayer(playerid);// si se va da spawn     }     else// altfel , daca parola este gresita     {         ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Parola incorecta!", "Te rog sa iti introduci parola corecta, pentru a te loga pe server.", "Logare", "Exit");// ii va da dialogul cu mesajul specific.     }     return 1; } Iar la final punem la OnGameModeExit();
      public OnGameModeExit() {     mysql_close( handle ) ;// deconectam serverul de la baza de date, daca se inchide     return 1; } Acum , o sa recapitulam.
      Playerul are nevoie de ID, Nume, Parola si IP, deci 4 coloane in tabel.
      Tabelul se numeste "conturi", deoarece interogarea se face acolo "mysql_format(handle, query, sizeof(query), "SELECT * FROM conturi"-conturi este tabelul unde vor aparea ID ,Nume, Parola, IP
      Baza de date se numeste "bazadate" din: #define mysql_db "bazadate"
       
      O sa va arat acum cum se creaza tabelul.
      Pasul 1. Definim baza de date cu numele "basedate":

      Pasul 2: Se selecteaza noua baza:

      Pasul 3: Se creaza tabelul cu cele 4 coloane:

      Pasul 4: Se definesc coloanele , cu fiecare setare

      La tip    INT = intenger= numar de cifre.
                   Varchar = string = sir de caractere(litere)
      la Lungimea / setare se selecteaza cat spatiu se acorda, adica cate caractere incap maxim in acel tabel
       la id va fi maxim 9999999999(sun 10 cifre consecutive de "9", adica acel numar va fi maximul de playeri care pot avea cont)
       la nume, se va putea salva doar numele care contine doar 25 de caractere(adica daca numele depaseste 25 litere, doar primele 25 se vor salva)
      la interclasare la Varchar , mereu sa puneti latin1_sweadich_ci, de ce, asta nu pot spune nici eu , dar , stiu ca asa trebuie
      La ID tot timpul sa bifati casuta "A_I(auto Increment)" care va genera singur id-ul, altfel nu va merge tabelul conturi
       
      Asa ar trebui sa va arata , atunci cand va inregistrati:

       
      Atentie tutorial creat 100% de Widualk. Nerespectarea creditelor va duce la sanctiuni!
    • By Liviu Adrian
      Salut, as dori si eu un sistem de admin folosesc mysql r41-2. Si cand vreau sa folosesc comanda /setadmin sau /makeadmin sa o pot da pe server, deoarece din baza de date phpmyadmin nu imi arata bara sa pot edita userul care era irnegsitrat sa imi pot da admin din baza de date.
    • By R4zvyy
      As dorii un tutorial de reborn, vrg frumos. ca as vrea sa invat si eu scripting
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • 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.