Írja módok nulla (mysql r39-2) - Tanulságok

I. fejezet A fájlok, programok szükségesek számunkra

Változott? De ez még nem minden, adjatok az egész szöveget:

plugins streamer mysql

- Ez plugins Majd később elmagyarázom
Van valami ehhez hasonló:

echo végrehajtása Server Config.
lanmode 0
rcon_password 12345
maxplayers 500
port 7777
hostname Új RP | Ügyfél. 0.3x
gamemode0 új 1
filterscripts
0 bejelenteni
lekérdezés 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;
plugins streamer mysql

Tehát, ha azt szeretné, hogy a mod működik megfelelően, akkor a következő plugins:

streamer
1. Streamer.inc, amely abban rejlik pawno / include mappában dob a pawno mappa / tartalmazza a szerver.
2. Streamer.dll, amely abban rejlik, plugins mappát dob ​​egy mappában plugins a szerveren. Megjegyzés: Ha a szerver Linux tengely, majd dob Streamer.so, a server.cfg összes beépülő modult kell írni, hosszabbító .so.
Például: Streamer.so
Rendben van. Csak azt kell a két fájlt.
MySQL R39-2 - fogjuk használni a plug-R39-2
1. a_mysql.inc dob a pawno mappa / tartalmazza a szerver.
2. mysql.dll dob plugins mappát a szerveren.
3. libmysql.dll biztos, hogy dobjon egy mappát a kiszolgálón
DENVER - És ami a legfontosabb, Denwer (Denwer biztosítja számunkra a MySQL PhpMyAdmin Base Data).
Állítsa Denwer. Azt hiszem, hogy telepítési problémák nem merülnek fel.

II. Az első lépések

És így hoztuk létre Denwer. dobta a kiegészítőket? Akkor menjünk.

A kezdéshez menjen a kiszolgáló mappa, azt látjuk, van egy másik mappa „pawno”, megy bele. Ezután lépjen a program maga pawno.exe Kezdjük írásban a mod. Rákattintok a nagyon „Új” ikonra először. Létrehoztunk egy új divat, ha tartani néven „új” a mappában „gamemodes” Start a szerver és megy neki (a bejegyzés, az IP: 127.0.0.1), kiderül, minden a megszokott néger CJ a Las Venturas, mint látjuk ez nem egészen szerepjáték mód, úgyhogy végül kezdeni ezzel! Pawno megyünk és elkezd dolgozni. Először is nézzük helyezni a inkluda így:
Miután a sor:

#include
#include

Kezdésként nézzük távolítsa el a nem kívánt sorok minket:

#if meghatározott filterscript

nyilvános OnFilterScriptExit ()
<
vissza 1;
>

main ()
if (mysql_errno ())
printf ( "Csatlakozás a database`% s` sikertelen" mysql_db.);
más
printf ( "Csatlakozás a database`% s` sikeresen" mysql_db.);
>

Mellesleg egy kicsit a main ().
Mint látható, a nyomtatási funkció indításakor egy divatbemutató nekünk a szöveget a konzol, amit kerülnek bevezetésre. Felveheti több mezőt, és írja be nekik semmit. Tehát a nyomtatási funkció, hogy keresse meg a hibákat a divat. Például, ha nem fut a funkciót, fokozatosan be a kódot nyomtatásban
Példa: (ha a tesztelés használatát javasoljuk print)

Stock Some_Function (playerid)
<
print ( „Ellenőrizze, hogy a lejátszó csatlakoztatva”);
if (IsPlayerConnected (playerid)) // Ha a játékos csatlakozik,
<
printr ( „átvilágítások, tedd az időjárás”);
SetPlayerWeather (playerid 10.); // megjeleníteni időjárás id 10
print ( "Public sikeresen lefut");
>
>

Egy kis történelem.
Az írás módba, különböző karakterek és a változók, elemzik azokat.

|| - ami azt jelenti, „vagy”. például PlayerInfo # 91; playerid # 93; # 91; védőügyvéd # 93; == 1 || PlayerInfo # 91; playerid # 93; # 91; pMember # 93; == 1 (Munka 1. frakció vagy 1-es frakció vezetője)
- ami azt jelenti, „és a”. például PlayerInfo # 91; playerid # 93; # 91; pMember # 93; == 1 PlayerInfo # 91; playerid # 93; # 91; csíny # 93; == 3 (Munka frakciók 1 és 3 volt grade)
. - ez azt jelenti, „nem”. Példa (! IsPlayerConnected) (a lejátszó nem csatlakozik)
ha - ez azt jelenti, „ha”. példa
if (! IsPlayerConnected)
<
ha PlayerInfo # 91; playerid # 93; # 91; pMember # 93; == 1 PlayerInfo # 91; playerid # 93; # 91; csíny # 93; == 3; és így tovább
mást - ez azt jelenti, „más”. is egy kifejezés a „else if” - ha másként

De térjünk vissza a divat, és így távolítsa el a sort:

Törölve? Ok, lépjen a bontás a divatból.

Nézzük először írja elő az adatokat az adatbázisba MySQL. Ennek visszavonulás egy sor után inkluda és írjuk be az alábbiakat:

#define mysql_host „localhost” // ha fut egy szerver számítógép, akkor hagyja
#define mysql_db "Samp" // adatbázis neve mysql
#define mysql_user "root" // felhasználó Mysql
#define mysql_pass "" // jelszót mysql

Ezután menjünk hátrébb még egy sort, és illessze be a következő sort:

Szintén vissza egy sorral lejjebb, és illessze be:

enum pInfo
<
kulcs # 91; 128 # 93;, // változó jelszó
Level // játékos szintje
>;
új PlayerInfo # 91; MAX_PLAYERS # 93; # 91; pInfo # 93 ;;

Akkor megy egy kicsit alacsonyabb a nyilvános OnGameModeInit (), és illessze be az alábbi:

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

Ennek eredményeképpen kapunk egy nyilvános (public):

nyilvános OnGameModeInit ()
mysql_variable = mysql_connect (mysql_host mysql_user mysql_db mysql_pass ...);
SetGameModeText ( "Register R39-2");
AddPlayerClass (0. 1958,3783 1343,1572 15,3746 269,1425 0. 0. 0. 0. 0. 0 ....);
vissza 1;
>

Ezután ugyanilyen módon a következő betét nyilvános OnGameModeExit ():

A nyilvános OnPlayerConnect (playerid):

statikus const
str # 91; # 93; = "SELECT` Elnevezés SZÁRMAZÓ` Számlák WHERE` Elnevezés = '% s'";

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

új
húr # 91; méret # 93 ;;

mysql_real_escape_string (Név (playerid), neve (playerid));
formátum (string sizeof (string), str neve (playerid) ..);
mysql_function_query (mysql_variable húr igazi "OnPlayerRegCheck" "d" playerid .....);

A nyilvános OnPlayerText (playerid, text []):

A nyilvános OnDialogResponse (playerid, dialogid, válasz, listitem, inputtext []):

A legvégén a kód:

Stock OnPlayerRegister (p. jelszó # 91; # 93;)
statikus const
str # 91; # 93; = "INSERT INTO` Számlák (` name`, `Key`) ÉRTÉKEK ( '% s', '% s')";

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

új
húr # 91; méret # 93 ;;

formátum (string sizeof (string), str neve (p), jelszó ..);
mysql_function_query (. mysql_variable húr false "RegisterCallback" "d" p ....);
vissza 1;
>

nyilvános RegisterCallback (playerid);
nyilvános RegisterCallback (playerid)
SendClientMessage (. Playerid - 1. "Sikeresen regisztrált!");
SetPVarInt (playerid "bejelentkezve" 1 ..);
SpawnPlayer (playerid);
vissza 1;
>

SavePlayer (p)
ha (GetPVarInt (o. "Naplózva")> 0)
statikus const
str0 # 91; # 93; = "UPDATE` Számlák SET` Key`, `Level` = ''",
str1 # 91; # 93; = "% S WHERE` Elnevezés = '% s'";

const
size0 = sizeof (str0) - 128 2 + - 2 + 16
méret1 = sizeof (str1) - 128 2 + - 2 + MAX_PLAYER_NAME;

#if size0> méret1
#define mérete size0
#else
#define mérete méret1
#endif
új
húr # 91; méret # 93 ;;

formátumban (string. sizeof (string), str0. PlayerInfo # 91; p # 93; # 91; kulcs # 93;, PlayerInfo # 91; p # 93; # 91; szint # 93;);
formátum (string string (p) sizeof (string), str1 ...);
mysql_query (mysql_variable húr hamis ..);
>
vissza 1;
>

Stock OnPlayerLogin (i. jelszó # 91; # 93;)
statikus const
str # 91; # 93; = "SELECT * FROM` Számlák WHERE` name` = '% s' AND` Key` = '% s'";

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

új
húr # 91; méret # 93 ;;

formátum (string sizeof (string), str neve (i), jelszó ..);
mysql_function_query (. mysql_variable húr igazi "LoginCallback" "ds" i jelszó .....);
vissza 1;
>

nyilvános LoginCallback (i. jelszó # 91; # 93;);
nyilvános LoginCallback (i. jelszó # 91; # 93;)
statikus const
str # 91; # 93; = "Meg, hogy helytelen jelszó (kísérlet:% i / 3)";

új
sorok,
mezők,
maximális # 91; 128 # 93;,
húr # 91; sizeof (str) - 2 + 1 # 93 ;;

cache_get_data (sorok mezők.);
if (! sorok)
ha (GetPVarInt (i. "wrongPass") == 2)
visszaút SendClientMessage (. i - 1. "rosszul adta meg a jelszót 3 alkalommal rúgott .."), Kick (i);

CREATE TABLE IF NEM létezik `Számlák
(
`Elnevezés varchar (24) COLLATE cp1251_bin NOT NULL.
`Key` varchar (30) karakterkészletet UTF8 NOT NULL.
`Level` int (3) NOT NULL
)
MOTOR = MyISA