| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- #include <YSI_Coding\y_hooks>
- static WeaponModel[MAX_PLAYERS][13];
- static WeaponAmmo[MAX_PLAYERS][13];
- hook OnPlayerConnect(playerid)
- {
- for(new i; i < 13; i++)
- {
- WeaponModel[playerid][i] = 0;
- WeaponAmmo[playerid][i] = 0;
- }
- }
- hook OnCharacterSaved(playerid)
- {
- new query[128];
- for(new i = 0; i < 13; i++)
- {
- if(WeaponModel[playerid][i] != 0)
- {
- mysql_format(MySQL_GetHandle(), query, sizeof(query), "UPDATE character_weapons SET ammo = %d WHERE owner_id = %d AND weaponid = %d", WeaponAmmo[playerid][i], Character_GetSQLID(playerid), WeaponModel[playerid][i]);
- mysql_tquery(MySQL_GetHandle(), query);
- }
- }
- }
- hook OnPlayerFirstSpawn(playerid)
- {
- inline const OnWeaponsLoaded()
- {
- new rows = cache_num_rows();
- new slot;
- new weaponid;
- new ammo;
- for(new i; i < rows; i++)
- {
- cache_get_value_name_int(i, "weaponid", weaponid);
- cache_get_value_name_int(i, "ammo", ammo);
- slot = GetWeaponSlot(weaponid);
- WeaponModel[playerid][slot] = weaponid;
- WeaponAmmo[playerid][slot] = ammo;
- GivePlayerWeapon(playerid, WeaponModel[playerid][slot], WeaponAmmo[playerid][slot]);
- }
- SetPlayerArmedWeapon(playerid, 0);
- }
- MySQL_TQueryInline(MySQL_GetHandle(), using inline OnWeaponsLoaded, "SELECT weaponid, ammo FROM character_weapons WHERE owner_id = %d LIMIT 13", Character_GetSQLID(playerid));
- }
- hook OnPlayerSpawnToHospital(playerid)
- {
- ResetPlayerWeapons(playerid);
- for(new i = 0; i < 13; i ++)
- {
- WeaponModel[playerid][i] = 0;
- WeaponAmmo[playerid][i] = 0;
- }
- new query[98];
- mysql_format(MySQL_GetHandle(), query, sizeof(query), "DELETE FROM character_weapons WHERE owner_id = %d", Character_GetSQLID(playerid));
- mysql_tquery(MySQL_GetHandle(), query);
- }
- hook OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
- {
- new slot = GetWeaponSlot(weaponid);
- if(WeaponModel[playerid][slot] > 0 && WeaponAmmo[playerid][slot] > 0)
- {
- WeaponAmmo[playerid][slot] --;
- }
- if(WeaponAmmo[playerid][slot] == 0)
- {
- Player_RemoveWeapon(playerid, weaponid);
- }
- return 1;
- }
- Player_GiveWeapon(playerid, weaponid, ammo)
- {
- new slot = GetWeaponSlot(weaponid);
- if(WeaponModel[playerid][slot] == 0)
- {
- new query[144];
- mysql_format(MySQL_GetHandle(), query, sizeof(query), "INSERT INTO character_weapons (owner_id, weaponid, ammo) VALUES (%d, %d, %d)", Character_GetSQLID(playerid), weaponid, ammo);
- mysql_tquery(MySQL_GetHandle(), query);
- }
- WeaponModel[playerid][slot] = weaponid;
- WeaponAmmo[playerid][slot] += ammo;
- GivePlayerWeapon(playerid, weaponid, ammo);
- }
- Player_RemoveWeapon(playerid, weaponid)
- {
- ResetPlayerWeapons(playerid);
- for(new i = 0; i < 13; i ++)
- {
- if(WeaponModel[playerid][i] != weaponid) GivePlayerWeapon(playerid, WeaponModel[playerid][i], WeaponAmmo[playerid][i]);
- else
- {
- WeaponModel[playerid][i] = 0;
- WeaponAmmo[playerid][i] = 0;
- break;
- }
- }
- SetPlayerArmedWeapon(playerid, 0);
- new query[128];
- mysql_format(MySQL_GetHandle(), query, sizeof(query), "DELETE FROM character_weapons WHERE owner_id = %d AND weaponid = %d", Character_GetSQLID(playerid), weaponid);
- mysql_tquery(MySQL_GetHandle(), query);
- }
- CMD:giveweapon(playerid, params[])
- {
- new targetid;
- if(sscanf(params, "u", targetid)) return SendSyntaxMessage(playerid, "/giveweapon (playerid)");
- if(!IsPlayerConnected(targetid)) return SendErrorMessage(playerid, "You specified an invalid player.");
- if(!IsPlayerNearPlayer(playerid, targetid, 2.0)) return SendErrorMessage(playerid, "You're too far from that player.");
- new weaponid = GetPlayerWeapon(playerid);
- new slot = GetWeaponSlot(weaponid);
- if(weaponid == 0) return SendErrorMessage(playerid, "You're not holding any weapons.");
- if(WeaponModel[playerid][slot] == 0 || WeaponAmmo[playerid][slot] == 0) return Kick(playerid);
- Player_GiveWeapon(targetid, WeaponModel[playerid][slot], WeaponAmmo[playerid][slot]);
- Player_RemoveWeapon(playerid, weaponid);
- new weaponName[24];
- GetWeaponName(weaponid, weaponName, sizeof(weaponName));
- SendInfoMessageF(playerid, "You gave %s a %s with %d bullets.", ReturnPlayerRPName(targetid), weaponName, WeaponAmmo[playerid][slot]);
- SendInfoMessageF(targetid, "%s gave you a %s with %d bullets.", ReturnPlayerRPName(playerid), weaponName, WeaponAmmo[playerid][slot]);
- return 1;
- }
- CMD:dropweapon(playerid, params[])
- {
- new weaponid = GetPlayerWeapon(playerid);
- new slot = GetWeaponSlot(weaponid);
- if(weaponid == 0) return SendErrorMessage(playerid, "You're not holding any weapons.");
- new weaponName[24];
- GetWeaponName(weaponid, weaponName, sizeof(weaponName));
- Player_RemoveWeapon(playerid, weaponid);
- SendInfoMessageF(playerid, "You dropped a %s with %d bullets.", weaponName, WeaponAmmo[playerid][slot]);
- return 1;
- }
- stock bool:IsPlayerOwningWeapon(playerid, weaponid)
- {
- new slot = GetWeaponSlot(weaponid);
- if(WeaponModel[playerid][slot] != 0)
- {
- return true;
- }
- return false;
- }
- stock bool:IsPlayerWeaponSlotUsed(playerid, slot)
- {
- if(WeaponModel[playerid][slot] != 0)
- {
- return true;
- }
- return false;
- }
- stock GetPlayerWeaponFromSlot(playerid, slot)
- {
- return WeaponModel[playerid][slot];
- }
- stock GetPlayerWeaponAmmo(playerid, weaponid)
- {
- return WeaponAmmo[playerid][GetWeaponSlot(weaponid)];
- }
|