/*
A scriptet készítette: Pelle \'whadez\' Richard.
www.facebook.com/whadezye
g_SQL = SQL Handle ID
- Az az ID ami alapján rácsatlakozik az adatbázisra a mysql.
Példa: (OnGameModeInit alatt) g_SQL = mysql_connect(\"IP\", \"Felhasználó\",\"Adatbázis\", \"Felhasználó jelszó\");
*/
Képek:
[hs width=420 height=200]
http://kepfeltoltes.hu/160515/sa-mp-081_www.kepfeltoltes.hu_.png[/hs][hs width=420 height=200]
http://kepfeltoltes.hu/160515/sa-mp-082_www.kepfeltoltes.hu_.png[/hs]
Az első rendszer ami közzéteszek a nyilvánosság felé. A rendszer pár hónapja készült el, a fegyvert dobhatjuk el a földre, és vehetjük fel a földről.
Az include működéséhez szükséges: sscanf, mysql, streamer.
A rendszer tesztelt, működik, akinek hibája van vele, az vessen magára, mert ő rontott el valamit.
Azért mert a rendszer közzé lett téve, nem nyújtok hozzá ingyenes supportot.
A script felhasználásakor kérlek ne töröld ki a készítőt (az én nevemet), nem zavar az ott senkit sem.
Megértéseteket köszönöm.
Használat:
/* A mysql, sscanf, streamer után. */
#include <dropped_weapons>
/* Parancshasználat */
#if defined WDROP_BETOLTVE
CMD:felveszfegyver(p) {
if(IsPlayerInRangeOfDroppedWeapon(p) == -1) return SendClientMessage(p, -1, \"Nincs fegyver a közeledben!\");
return true;
}
CMD:eldobfegyver(p) {
if(!GetPlayerWeapon(p)) return SendClientMessage(p, -1, \"A kezedben nincs fegyver, amit el tudnál dobni!\");
createDroppedWeapon(p, GetPlayerWeapon(p), GetPlayerAmmo(p));
return true;
}
#endif
A fegyverek betöltése szerver indításkor:
public OnGameModeInit() {
#if defined WDROP_BETOLTVE
mysql_tquery(g_SQL, \"SELECT * FROM `eldobott_fegyverek`\", \"LoadDroppedWeapons\", \"\");
#endif
return 1;
}
MYSQL Adatbázis:
CREATE TABLE IF NOT EXISTS `eldobott_fegyverek` (
`ID` int(11) NOT NULL,
`droppedWeapon` int(11) NOT NULL DEFAULT \'0\',
`droppedAmmo` int(11) NOT NULL DEFAULT \'0\',
`dVW` int(11) NOT NULL DEFAULT \'0\',
`dInt` int(11) NOT NULL DEFAULT \'0\',
`dPos` varchar(32) NOT NULL DEFAULT \'0.000,0.000,0.000\'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `eldobott_fegyverek`
MODIFY `ID` int(11) NOT NULL AUTO_INCREMENT;
Az include maga:
/*
A scriptet készítette: Pelle \'whadez\' Richard.
www.facebook.com/whadezye
Fejlesztéseket vállalok, valós, kézben fogható pénzért.
-- SAMPFÓRUM --
g_SQL = SQL Handle ID
- Az az ID ami alapján rácsatlakozik az adatbázisra a mysql.
*/
#define WDROP_BETOLTVE
#if !defined FegyverObjectek
new FegyverObjectek[47] =
{
1575, 331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326, 342, 343, 344, -1, -1 , -1 ,
346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367,
368, 369, 1575
};
#endif
#if !defined szoveg
new szoveg[128];
#endif
#if !defined MAX_DROPPED_WEAPONS
#define MAX_DROPPED_WEAPONS 5000
#endif
#if !defined Pos
new Float:Pos[3];
#endif
#if !defined uzenet
new uzenet[1024];
#endif
#if !defined g_SQL
new g_SQL = -1;
#endif
new DropWeaponObject[MAX_DROPPED_WEAPONS] = {INVALID_OBJECT_ID, ...};
stock getFreeDroppedWeaponId() {
new i = 0;
for(;++i < MAX_DROPPED_WEAPONS;) {
if(DropWeaponObject == INVALID_OBJECT_ID)
return i;
}
return -1;
}
forward createDroppedWeapon(p, weaponid, ammo);
public createDroppedWeapon(p, weaponid, ammo)
{
new droppedId = getFreeDroppedWeaponId();
if(droppedId == -1) return printf(\"A \'MAX_DROPPED_WEAPONS\' érték a végéhez ért!\");
GetPlayerPos(p, Pos[0], Pos[1], Pos[2]);
Pos[2] -= 1.02;
DropWeaponObject[droppedId] = CreateDynamicObject(FegyverObjectek[weaponid], Pos[0], Pos[1], Pos[2], 90.0, 0.0,0.0,
GetPlayerVirtualWorld(p), GetPlayerInterior(p));
format(szoveg,sizeof(szoveg),\"%f,%f,%f\", Pos[0], Pos[1], Pos[2]);
mysql_format(g_SQL, uzenet, sizeof(uzenet),\"INSERT INTO `eldobott_fegyverek` (ID,droppedWeapon,droppedAmmo,dVW,dInt,dPos) VALUES(\'%d\',\'%d\',\'%d\',\'%d\',\'%d\',\'%s\')\",droppedId, weaponid, ammo, GetPlayerVirtualWorld(p), GetPlayerInterior(p), szoveg);
mysql_tquery(g_SQL, uzenet);
return true;
}
forward LoadDroppedWeapons();
public LoadDroppedWeapons()
{
new nums,fields;
cache_get_data(nums, fields);
if(nums)
{
new i = -1, getWeaponPos[32];
for(;++i < nums;) {
cache_get_field_content(i, \"dPos\", getWeaponPos, g_SQL, 32);
sscanf(getWeaponPos, \"p<,>a<f>[3]\",Pos);
DropWeaponObject[cache_get_field_content_int(i, \"ID\")] = CreateDynamicObject(FegyverObjectek[ cache_get_field_content_int(i, \"droppedWeapon\") ], Pos[0], Pos[1], Pos[2], 90.0, 0.0,0.0,
cache_get_field_content_int(i, \"dVW\"), cache_get_field_content_int(i, \"dInt\"));
}
}
if(nums) printf(\"%d darab eldobott fegyver betöltve.\",nums);
else printf(\"Nem lett betöltve eldobott fegyver.\");
return true;
}
stock IsPlayerInRangeOfDroppedWeapon(p) {
GetPlayerPos(p, Pos[0], Pos[1], Pos[2]);
mysql_query(g_SQL, \"SELECT dPos,ID FROM `eldobott_fegyverek`\");
if(cache_num_rows())
{
new i = -1, tempStr[32];
for(;++i < cache_num_rows()
{
cache_get_field_content(i, \"dPos\", tempStr, g_SQL, 32);
sscanf(tempStr, \"p<,>a<f>[3]\", Pos);
if(IsPlayerInRangeOfPoint(p, 2.0, Pos[0], Pos[1], Pos[2])) {
pickupWeaponFromFloor(p, cache_get_field_content_int(i, \"ID\"));
return i;
}
}
}
return -1;
}
stock pickupWeaponFromFloor(p, sqlid) {
format(szoveg,sizeof(szoveg),\"SELECT * FROM `eldobott_fegyverek` WHERE `ID` = \'%i\'\", sqlid);
mysql_query(g_SQL, szoveg);
GivePlayerWeapon(p, cache_get_field_content_int(0, \"droppedWeapon\"), cache_get_field_content_int(0, \"droppedAmmo\"));
if(IsValidDynamicObject(DropWeaponObject[cache_get_field_content_int(0, \"ID\")]))
DestroyDynamicObject(DropWeaponObject[cache_get_field_content_int(0, \"ID\")]);
format(szoveg,sizeof(szoveg),\"DELETE FROM `eldobott_fegyverek` WHERE `ID` = \'%i\'\", sqlid);
mysql_query(g_SQL, szoveg);
return true;
}