Scrieți moduri cu zero (MySQL r39-2) - Lecții

Capitolul I. Fișierele, programele necesare pentru a ne

Schimbată? Dar asta nu e tot, îi atribuie întregul șir:

Plugin-uri streamer MySQL

- Acest plugin-uri se va explica mai târziu
Avem ceva de genul:






echo Executare Server Config.
lanmode 0
rcon_password 12345
maxplayers 500
Port 7777
Nume de gazdă nou RP | Client. 0.3x
gamemode0 nou 1
filterscripts
0 anunța
interogare 1
chatlogging 0
weburl www.
onfoot_rate 40
incar_rate 40
weapon_rate 40
stream_distance 300.0
stream_rate 1000
maxnpc 0
logtimeformat # 91;% H:% M:% S # 93;
Plugin-uri streamer MySQL

Deci, dacă doriți dvs. mod să funcționeze corect, atunci următoarele pluginuri:

flamură
1. Streamer.inc, care se află în pawno / include dosar aruncă în dosarul său pawno / include server.
2. Streamer.dll, care se află în folderul plugin-uri aruncă într-un pliant plugin-uri de pe server. Notă: Dacă serverul este Linux-axa, apoi aruncă Streamer.so, în server.cfg toate plugin-urile trebuie să fie scrise cu extensia .so.
De exemplu: Streamer.so
Bine. Avem nevoie doar de aceste două fișiere.
MySQL R39-2 - Vom folosi plug-R39-2
1. a_mysql.inc aruncă în dosarul lui pawno / include server.
2. mysql.dll aruncă în folderul plugin-uri de pe server.
3. libmysql.dll sigur pentru a arunca într-un dosar la server
DENVER - Și cel mai important, Denwer (Denwer ne furniza MySQL PhpMyAdmin Baza de date).
Set Denwer. Cred că problemele sale de instalare nu apar.

Capitolul al II-lea. Noțiuni de bază

Și așa, ne-am stabilit Denwer. au aruncat plugin-uri? Atunci să mergem.

Pentru a începe, du-te la dosarul de server, vom vedea există un alt dosar „pawno“, du-te în ea. Apoi, du-te la programul în sine pawno.exe Să începem scrierea mod nostru. Fac clic pe pictograma foarte „Nou“ mai întâi. Am creat o nouă modă, dacă o ținem sub numele de „nou“ în dosarul „gamemodes“ Start server și du-te la el (pentru intrare, utilizați IP: 127.0.0.1), putem vedea toate familiar Negro CJ în Las Venturas, după cum vom vedea nu este moduri de joc de rol destul, așa că hai în cele din urmă au începe să faci! Pawno vom merge și începe să lucreze. În primul rând, să ne înscriem inkluda astfel:
După linia:

#include
#include

Pentru a începe, să eliminați rândurile nedorite noi:

#if definite FILTERSCRIPT

OnFilterScriptExit publice ()
<
întoarce 1;
>

main ()
if (mysql_errno ())
printf ( "Conectarea la database`% nu este de succes s`" mysql_db.);
altfel
printf ( "Conectarea la database` procentul% cu succes s`" mysql_db.);
>

Prin modul în care un pic despre principalele ().
După cum puteți vedea funcția de imprimare, atunci când începe un mod ne arată textul din consola care ne sunt introduse. Puteți adăuga mai multe câmpuri și scrie în ele nimic. Deci, este funcția de imprimare pentru a localiza bug-uri în vogă. De exemplu, nu se execută funcția, introduceți treptat codul de imprimare
Exemplu: (când testarea recomandă utilizarea de imprimare)

Some_Function stoc (playerid)
<
imprimare ( „Verificați dacă player-ul este conectat“);
în cazul în care (IsPlayerConnected (playerid)) // Dacă player-ul este conectat,
<
( „controale printr fond, a pus vremea“);
SetPlayerWeather (playerid 10.); // Afișează-l meteo id 10
Print ( "Public executat cu succes");
>
>

Un pic de istorie.
În modul, diferite caractere și variabile de scris, analiza acestora.

|| - ceea ce înseamnă „sau“. de exemplu, jucator # 91; playerid # 93; # 91; avocat # 93; == 1 || Informatii jucator # 91; playerid # 93; # 91; pMember # 93; == 1 (Fracția de lucru 1 sau Fracțiunea 1 lider)






- ceea ce înseamnă „și“. de exemplu, jucator # 91; playerid # 93; # 91; pMember # 93; == 1 Informatii jucator # 91; playerid # 93; # 91; festă # 93; == 3 (lucru fracțiile 1 și 3 au avut grad)
. - înseamnă „nu“. Exemplul (! IsPlayerConnected) (player-ul nu este conectat)
în cazul în care - aceasta înseamnă „dacă“. exemplu
if (! IsPlayerConnected)
<
dacă jucator # 91; playerid # 93; # 91; pMember # 93; == 1 Informatii jucator # 91; playerid # 93; # 91; festă # 93; == 3; etc.
altceva - aceasta înseamnă „diferit“. De asemenea, este o expresie a „else if“ - în cazul în care în caz contrar

Dar să revenim la modă și așa mai departe, eliminați linia:

Șters? Ok, trece la dezmembrarea modei.

Să prescrie mai întâi datele în baza de date MySQL. pentru aceasta retragere o linie după inkluda și scrie următoarele:

#define mysql_host „localhost“ // dacă rulați un server de pe computer, apoi lăsați
#define mysql_db "samp" // numele de bază de date MySQL
mysql_user #define "root" // utilizator Mysql
mysql_pass #define "" // parola pentru MySQL

În continuare, să pas înapoi încă o linie și lipiți următoarea linie:

De asemenea, înapoi în jos o linie și lipiți-l:

enum pInfo
<
cheie # 91; 128 # 93;, // parola variabilă
Nivelul de jucător //
>;
noul jucator # 91; MAX_PLAYERS # 93; # 91; pInfo # 93 ;;

Apoi, du-te un pic mai mic în OnGameModeInit publică () și inserați-l la următoarele:

mysql_variable = mysql_connect (mysql_host mysql_user mysql_db mysql_pass ...);
SetGameModeText ( "Înregistrare R39-2");

Ca rezultat, vom obține un public (public):

OnGameModeInit publice ()
mysql_variable = mysql_connect (mysql_host mysql_user mysql_db mysql_pass ...);
SetGameModeText ( "Înregistrare R39-2");
AddPlayerClass (0. 1958.3783 1343.1572 15.3746 269.1425 0. 0. 0. 0. 0. 0 ....);
întoarce 1;
>

În continuare, în aceeași manieră în OnGameModeExit publică următoarea inserție ():

OnPlayerConnect publică (playerid):

const static
str # 91; # 93; = "SELECT` Name` DIN` Accounts` WHERE` Name` = '% s'";

const
size = sizeof (str) - 2 + MAX_PLAYER_NAME;

nou
șir # 91; dimensiune # 93 ;;

mysql_real_escape_string (Nume (playerid), Nume (playerid));
Format (sizeof string (string), str Nume (playerid) ..);
mysql_function_query (string mysql_variable true "OnPlayerRegCheck" "d" playerid .....);

In public OnPlayerText (playerid, textul []):

În OnDialogResponse publice (playerid, dialogid, ca răspuns, listitem, inputtext []):

La sfârșitul a codului:

stoc OnPlayerRegister (p. parola # 91; # 93;)
const static
str # 91; # 93; = "INSERT INTO` Accounts` (` Name`, `Key`) VALUES ( '% s', '% s')";

const
size = sizeof (str) - 2 + MAX_PLAYER_NAME - 128 + 2;

nou
șir # 91; dimensiune # 93 ;;

Format (sizeof string (string), str Nume (p), parola ..);
mysql_function_query (. string mysql_variable false "RegisterCallback" "d" p ....);
întoarce 1;
>

RegisterCallback publice (playerid);
publice RegisterCallback (playerid)
SendClientMessage (. Playerid - 1. "Ați înregistrat cu succes!");
SetPVarInt (playerid "Logged" 1 ..);
SpawnPlayer (playerid);
întoarce 1;
>

SavePlayer (p)
if (GetPVarInt (pag. "Logged")> 0)
const static
str0 # 91; # 93; = "UPDATE` Accounts` SET` Key`, `Level` = ''",
str1 # 91; # 93; = "% S WHERE` Name` = '% s'";

const
size0 = sizeof (str0) - 128 2 + - 2 + 16
SIZE1 = sizeof (str1) - 128 2 + - 2 + MAX_PLAYER_NAME;

#if size0> SIZE1
size0 dimensiune #define
#else
SIZE1 dimensiune #define
# endif
nou
șir # 91; dimensiune # 93 ;;

Format (string. sizeof (string), str0. jucator # 91; p # 93; # 91; cheie # 93;, jucator # 91; p # 93; # 91; nivel # 93);
Format (string string Name (p) sizeof (string), str1 ...);
mysql_query (string mysql_variable fals ..);
>
întoarce 1;
>

stoc OnPlayerLogin (i. parola # 91; # 93;)
const static
str # 91; # 93; = "SELECT * din` Accounts` UNDE` Name` = '% s' AND` Key` = '% s'";

const
size = sizeof (str) - 2 + MAX_PLAYER_NAME - 128 + 2;

nou
șir # 91; dimensiune # 93 ;;

Format (sizeof string (string), str Nume (i), parola ..);
mysql_function_query (. mysql_variable string true "LoginCallback" "DS" i parola .....);
întoarce 1;
>

LoginCallback publice (i. Parola # 91; # 93;);
LoginCallback publice (i. Parola # 91; # 93;)
const static
str # 91; # 93; = "Ați introdus o parolă greșită (încercări:% i / 3)";

nou
rânduri,
câmpuri,
maxim # 91; 128 # 93;,
șir # 91; sizeof (str) - 2 + 1 # 93 ;;

cache_get_data (câmpuri rânduri.);
if (! rânduri)
if (GetPVarInt (i. "wrongPass") == 2)
întoarce SendClientMessage -, Lovitura (i) (i 1. "Ați introdus parola greșit de 3 ori te-a dat ..".);

CREATE TABLE DACĂ NU EXISTĂ `Accounts`
(
`Varchar Name` (24) COLLATE cp1251_bin NOT NULL.
`Key` varchar (30) NOT SET CARACTERE UTF8 NULL.
`Level` int (3) NOT NULL
)
MOTOARE = ​​MyISA