Skip to content

Instantly share code, notes, and snippets.

@George480
Last active April 3, 2020 13:23
Show Gist options
  • Save George480/87f9e2660a4f00a6d213c7aea4fa44b8 to your computer and use it in GitHub Desktop.
Save George480/87f9e2660a4f00a6d213c7aea4fa44b8 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
/*
Super RolePlay
adri1
Version MySQL
AGraber
*/
#include <a_mysql>
#include <a_samp>
#include <a_http>
#include <streamer>
#include <sscanf2>
#include <Pawn.CMD>
#include <Pawn.Regex>
#pragma dynamic 15000
#define SERVER_VERSION "1.08"
#define VERSION_DATE "2/12/2017"
#define BUILD_VERSION "08"
#define BUILD_DATE "03/12/2017 04:50"
//MODIFICAR SEGUN SLOTS DEL SERVIDOR
#undef MAX_PLAYERS
#define MAX_PLAYERS 100
/* Config */
#define SERVER_NAME "Super RolePlay"
#define SERVER_SHORT_NAME "Super"
#define SERVER_HOSTNAME "     « Super RolePlay "SERVER_VERSION" (Español - 0.3.7) »"
#define SERVER_GAMEMODE "Super RolePlay "SERVER_VERSION" en español"
#define SERVER_LANGUAGE "Español / Spanish"
#define SERVER_WEBSITE "www.super-roleplay.net"
#define SERVER_COIN "Coins"
#define MAX_BAD_LOGIN_ATTEMPS 3 // maximos intentos de contraseñas erroneas
#define REP_MULTIPLIER 12 //12 rep * nivel para subir, si es nivel 1 necesita 12 rep para subir a nivel 2
#define TIME_FOR_REP 1500000 // 25 minutos para obtener reputacion
#define REP_FOR_PAYDAY 3 // payday cada 3 reputaciones
#define CMD_LOGGIN 1 // log de comandos
#define MYSQL_USER "" //usuario mysql
#define MYSQL_PASSWORD "" //contraseña mysql
#define MYSQL_DATABASE "" //base de datos mysql
#define MYSQL_HOST "" //host mysql
/* LIMITES JUGADOR */
// Normal User
#define MAX_NU_VEHICLES 2
#define MAX_NU_PROPERTIES 1
#define MAX_NU_WORKS 1
#define MAX_NU_TOYS 1
#define MAX_NU_VOBJECTS 1
// VIP
#define MAX_SU_VEHICLES 6
#define MAX_SU_PROPERTIES 4
#define MAX_SU_WORKS 3
#define MAX_SU_VOBJECTS 10
new /* Valores por defecto si no se puede cargar de ECO.txt */
Float:MULTIPLIER_PROPERITES = 1.00,
Float:MULTIPLIER_VEHICLES = 1.00,
Float:MULTIPLIER_TOYS = 1.00,
Float:MULTIPLIER_SKINS = 1.00,
Float:MULTIPLIER_WEAPONS = 1.00,
SU_SD_PRICE = 18,
SU_WORK_EXTRA_PAY = 300;
new
Float:New_User_Pos[4] = {1773.307250, -1896.441040, 13.551166, 270.0},
SERVER_TIME[2], SERVER_WEATHER = 1,
Mechanic_Area,
Lumberjack_Area,
Farmer_Area,
Harvest_Area,
Jail_Areas[3];
new MySQL:SMF_DATABASE;
#define PRESSED(%0) (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
#define RELEASED(%0) (((newkeys & (%0)) != (%0)) && ((oldkeys & (%0)) == (%0)))
/* Colores */
#define COLOR_FADE1 0xE6E6E6E6
#define COLOR_FADE2 0xC8C8C8C8
#define COLOR_FADE3 0xAAAAAAAA
#define COLOR_FADE4 0x8C8C8C8C
#define COLOR_FADE5 0x6E6E6E6E
#define PLAYER_COLOR 0xCCCCCC00
#if !defined SPECIAL_ACTION_PISSING
#define SPECIAL_ACTION_PISSING 68
#endif
main()
{
print("--- > "SERVER_NAME" < --- ");
}
enum
{
CHEAT_WEAPON,
CHEAT_AMMO,
CHEAT_CAR_MOD,
CHEAT_VEHICLE_SPEED_HACK,
CHEAT_POS,
CHEAT_TEXT_SPAMMER,
CHEAT_COMMAND_SPAMMER,
CHEAT_DEATH_SPAMMER,
CHEAT_STATE_SPAMMER,
CHEAT_VEHICLE_ENTER_SPAMMER,
CHEAT_JETPACK,
CHEAT_PLAYER_SPEED,
CHEAT_PLAYER_HEALTH,
CHEAT_PLAYER_ARMOUR,
CHEAT_VEHICLE_HEALTH,
CHEAT_PLAYER_VEHICLE_WORK, //Entra a un vehiculo que no es de su trabajo
CHEAT_PLAYER_VEHICLE_DOORS,
CHEAT_VEHICLE_NOFUEL,
CHEAT_SPECTATE,
CHEAT_UNDETECTED_WEAPON,
CHEAT_DRIVE_BY,
CHEAT_UNOCCUPIED_VEHICLE_TP,
CHEAT_HIGH_POS,
CHEAT_CAR_JACKING,
CHEAT_FAKE_TRAILER_SYNC
};
enum e_ac_Info
{
ac_Name[24],
bool:ac_Enabled,
bool:ac_Kick, // 1 = kickea, 0 = avisa a admins
ac_Detections, //enviar aviso cuando llege a este num en los seg de abajo
ac_Interval
};
new ac_Info[][e_ac_Info] = /* Valores por defecto si no se carga de AC.txt */
{
{"armas", true, true, 1, 0},
{"municion", true, true, 1, 0},
{"mod car", true, true, 1, 0},
{"vehicle speed", true, true, 1, 0},
{"pos", true, false, 3, 10},
{"text spammer", true, true, 10, 5},
{"command spammer", true, true, 5, 5},
{"death spammer", true, false, 1, 0},
{"state change spammer", true, false, 1, 0},
{"vehicle enter spammer", true, false, 1, 0},
{"jetpack", true, true, 1, 0},
{"player speed", true, true, 1, 0},
{"player health", true, true, 1, 0},
{"player armour", true, true, 1, 0},
{"vehicle health", true, true, 1, 0},
{"pwork != vwork", true, true, 1, 0},
{"enter closed vehicle", true, false, 1, 0},
{"vehicle nofuel cs", true, false, 50, 10},
{"player spectate", true, false, 1, 0},
{"pweapon != sweapon", true, false, 1, 0},
{"drive by", true, false, 1, 0},
{"unoccupied veh tp", true, true, 1, 0},
{"high pos", true, true, 1, 0},
{"car jacking", true, true, 1, 0},
{"fake trailer sync", true, true, 1, 0}
};
enum e_PLAYER_AC_INFO
{
p_ac_info_DETECTIONS,
p_ac_info_LAST_DETECTION,
p_ac_info_IMMUNITY //gettime + seconds
};
new PLAYER_AC_INFO[MAX_PLAYERS][sizeof(ac_Info)][e_PLAYER_AC_INFO];
enum
{
TYPE_LEGAL,
TYPE_ILLEGAL
};
enum
{
DIALOG_REGISTER,
DIALOG_REGISTER_EMAIL,
DIALOG_LOGIN,
DIALOG_INFO,
DIALOG_FOOD_PIZZA,
DIALOG_FOOD_CLUCKIN,
DIALOG_FOOD_BURGER,
DIALOG_PLAYER_TOYS,
DIALOG_PLAYER_TOY_MENU,
DIALOG_PLAYER_TOY_EDIT_NAME,
DIALOG_PLAYER_TOY_CONFIRMDELETE,
DIALOG_PLAYER_TOY_EDIT_BONE,
DIALOG_PLAYER_TOY_SELECT_BONE,
DIALOG_PLAYER_TOY_COLOR_1,
DIALOG_PLAYER_TOY_COLOR_2,
DIALOG_PLAYER_TOY_DELETE_ALL,
DIALOG_BANK,
DIALOG_BANK_WITHDRAW,
DIALOG_BANK_DEPOSIT,
DIALOG_BANK_TRANSFER,
DIALOG_BANK_TRANSFER_SEND,
DIALOG_BANK_TRANSACTIONS,
DIALOG_CREATE_BANK_ACCOUNT,
DIALOG_247_LIST,
DIALOG_PLAYER_POCKET,
DIALOG_PLAYER_POCKET_OPTIONS,
DIALOG_PLAYER_POCKET_DELETE_ALL,
DIALOG_PHONE,
DIALOG_PHONE_BOOK,
DIALOG_PHONE_BOOK_ADD_NUMBER,
DIALOG_PHONE_BOOK_ADD_NAME,
DIALOG_PHONE_BOOK_OPTIONS,
DIALOG_PHONE_BOOK_CHANGE_NAME,
DIALOG_PHONE_BOOK_CONFIRM_DELET,
DIALOG_PHONE_BOOK_DELETE_ALL,
DIALOG_PHONE_CALL_NUMBER,
DIALOG_PHONE_SMS_NUMBER,
DIALOG_PHONE_SMS_MESSAGE,
DIALOG_PHONE_BOOK_SEND_MESSAGE,
DIALOG_PHONE_SENT_MESSAGES,
DIALOG_PHONE_RECEIVED_MESSAGES,
DIALOG_CONFIRM_BUY_PROPERTY,
DIALOG_PLAYER_GPS,
DIALOG_PLAYER_GPS_PLAYER,
DIALOG_PLAYER_GPS_PLAYER_ADD,
DIALOG_PLAYER_GPS_PLAYER_OPTION,
DIALOG_PLAYER_GPS_CHANGE_NAME,
DIALOG_PLAYER_GPS_CONFIRM_DELET,
DIALOG_PLAYER_GPS_SITES,
DIALOG_PLAYER_GPS_WORKS,
DIALOG_PLAYER_GPS_DELETE_ALL,
DIALOG_PLAYER_GPS_SITE_0,
DIALOG_PLAYER_GPS_SITE_1,
DIALOG_PLAYER_GPS_SITE_2,
DIALOG_PLAYER_GPS_SITE_3,
DIALOG_PLAYER_GPS_SITE_4,
DIALOG_PLAYER_GPS_SITE_5,
DIALOG_PLAYER_GPS_SITE_6,
DIALOG_PLAYER_GPS_SITE_7,
DIALOG_PLAYER_GPS_SITE_8,
DIALOG_PLAYER_GPS_PROPERTIES,
DIALOG_PLAYER_GPS_VEHICLES,
DIALOG_PROPERTY_OPTIONS,
DIALOG_PROPERTY_NAME,
DIALOG_PROPERTY_BANK_SELL,
DIALOG_PLAYER_MP3,
DIALOG_PLAYER_MP3_RESULTS,
DIALOG_BUY_VEHICLE,
DIALOG_NOTARY,
DIALOG_NOTARY_SELECT_PROPERTY,
DIALOG_PROPERTY_SELL_PRICE,
DIALOG_PROPERTY_SELL_TO_PLAYER,
DIALOG_SELL_CONFIRM_PROPERTY,
DIALOG_NOTARY_SELECT_VEHICLE,
DIALOG_VEHICLE_BANK_SELL,
DIALOG_VEHICLE_SELL_PRICE,
DIALOG_VEHICLE_SELL_TO_PLAYER,
DIALOG_SELL_CONFIRM_VEHICLE,
DIALOG_SELECT_TRUCK_TYPE,
DIALOG_TUNING_MENU_PART,
DIALOG_TUNING_MENU_COMPONENT,
DIALOG_MECHANIC_MENU,
DIALOG_MECHANIC_REPAIR_PRICE,
DIALOG_MECHANIC_COLOR_PRICE,
DIALOG_MECHANIC_TUNING_PRICE,
DIALOG_MECHANIC_PAINTJOB_PRICE,
DIALOG_MECHANIC_ACCEPT,
DIALOG_MECHANIC_SELECT_COL_SLOT,
DIALOG_MECHANIC_SELECT_COLOR,
DIALOG_MECHANIC_REMOVE_COMPONEN,
DIALOG_TUNING_PAINTJOB,
DIALOG_SEED_LIST,
DIALOG_SEED_BUY,
DIALOG_PLANT_PLANTS,
DIALOG_BLACK_MARKET,
DIALOG_BLACK_MARKET_WEAPONS,
DIALOG_BLACK_MARKET_SELECT_WEA,
DIALOG_BLACK_MARKET_AMMO,
DIALOG_PLAYER_WEAPONS,
DIALOG_PLAYER_WEAPONS_DELETE_A,
DIALOG_PLAYER_WEAPONS_DELETE,
DIALOG_ANIMS,
DIALOG_TRICKS_FOOD,
DIALOG_TRICKS_MEDICINE,
DIALOG_TRICKS_CANNABIS,
DIALOG_TRICKS_CRACK,
DIALOG_TRICKS_SU,
DIALOG_TRICKS_WEAPON,
DIALOG_VEHICLE_BOOT,
DIALOG_VEHICLE_BOOT_DELETE_ALL,
DIALOG_VEHICLE_BOOT_OPTIONS,
DIALOG_VEHICLE_BOOT_DELETE,
DIALOG_SELECT_POLICE_SKIN,
DIALOG_POLICE_RADIOS,
DIALOG_POLICE_LIST,
DIALOG_POLICE_MODIFY,
DIALOG_POLICE_SHOP,
DIALOG_POLICE_SELECT_WEAPON,
DIALOG_POLICE_AMMO,
DIALOG_POLICE_ARMOUR,
DIALOG_POLICE_WEAPONS,
DIALOG_HELP,
DIALOG_HELP_GENERAL,
DIALOG_HELP_CHARACTER,
DIALOG_HELP_PROPERTIES,
DIALOG_HELP_REPORT,
DIALOG_HELP_VEHICLES,
DIALOG_HELP_WORKS,
DIALOG_HELP_CREWS,
DIALOG_HELP_SU,
DIALOG_ADMIN_LIST,
DIALOG_ADMIN_MODIFY,
DIALOG_CHANGE_PASSWORD,
DIALOG_CHANGE_PASSWORD_PASS,
DIALOG_ANTI_CHEAT,
DIALOG_ANTI_CHEAT_MODIFY,
DIALOG_ANTI_CHEAT_MODIFY_DETECT,
DIALOG_SHOP_ARTICLE_MODIFY,
DIALOG_SHOP_ARTICLE_REMOVE,
DIALOG_SHOP_ADD,
DIALOG_SHOP_ADD_TEXT,
DIALOG_SHOP_ADD_PRICE,
DIALOG_CRANE_SELECT_VEHICLE,
DIALOG_CREATE_CREW,
DIALOG_CREATE_CREW_NAME,
DIALOG_CREATE_CREW_COLOR,
DIALOG_CREATE_CREW_CONFIRM,
DIALOG_CREW_MENU,
DIALOG_CREW_MEMBER_LIST,
DIALOG_CREW_CHANGE_NAME,
DIALOG_CREW_MEMBER_LIST_DELETE,
DIALOG_CREW_CAST_MEMBER_CONFIRM,
DIALOG_CREW_INVITE_RANK,
DIALOG_CREW_INVITE_ACCEPT,
DIALOG_CREW_RANKS,
DIALOG_CREW_RANK_MODIFY,
DIALOG_CREW_RANK_MODIFY_NAME,
DIALOG_CREW_RANK_MODIFY_PERMISS,
DIALOG_CREW_RANK_DELETE,
DIALOG_CREW_RANK_DELETE_CONFIRM,
DIALOG_CREW_RANK_CREATE,
DIALOG_CREW_MODIFY_COLOR,
DIALOG_CREW_DELETE,
DIALOG_CREW_LEAVE,
DIALOG_CREW_MODIFY_MEMBERS,
DIALOG_CREW_MODIFY_MEMBER,
DIALOG_CREW_PROPERTY_CONFIRM,
DIALOG_CREW_LEAVE_TERRITORY,
DIALOG_CREW_LEAVE_PROPERTY,
DIALOG_POLICE_PENALTY,
DIALOG_SERVER_ECO,
DIALOG_SERVER_ECO_MODIFY,
DIALOG_SU_BUY,
DIALOG_SU,
DIALOG_VOBJECT_MENU,
DIALOG_VOBJECT_OBJECTS,
DIALOG_VOBJECT_OBJECT,
DIALOG_VOBJECT_OBJECT_CNAME,
DIALOG_VOBJECT_OBJECT_COLORS,
DIALOG_VOBJECT_OBJECT_COLOR,
DIALOG_VOBJECT_OBJECT_COLOR_HEX,
DIALOG_VOBJECT_OBJECT_CDELETE,
DIALOG_VOBJECT_DELETE_ALL,
DIALOG_VOBJECT_TEXT_MENU,
DIALOG_VOBJECT_TEXT_TEXT,
DIALOG_VOBJECT_TEXT_FONT,
DIALOG_VOBJECT_TEXT_FONT_SIZE,
DIALOG_VOBJECT_TEXT_FONT_COLOR,
DIALOG_VOBJECT_COUNTRY,
DIALOG_PLAYER_CONFIG,
DIALOG_TRABAJOS_TELEPORTS,
DIALOG_POLICE_BYC,
DIALOG_POLICE_BYC_LAST_ALL,
DIALOG_POLICE_BYC_NAME_FIND,
DIALOG_POLICE_DELETE_BYC,
DIALOG_POLICE_BYC_LAST_PLAYER
};
enum
{
ROLEPLAY_STATE_NORMAL,
ROLEPLAY_STATE_HOSPITAL,
ROLEPLAY_STATE_INTERIOR,
ROLEPLAY_STATE_OWN_PROPERTY,
ROLEPLAY_STATE_GUEST_PROPERTY,
ROLEPLAY_STATE_ARRESTED,
ROLEPLAY_STATE_JAIL,
ROLEPLAY_STATE_CRACK
};
enum
{
GAME_STATE_NONE,
GAME_STATE_CONNECTED,
GAME_STATE_OCCUPIED,
GAME_STATE_DEAD, // Pantalla de la muerte solo (wasted)
GAME_STATE_NORMAL
};
#define MAX_TIMERS_PER_PLAYER 20
/* Timers
0 = Kick
1 = Gangzone daño Rojo
2 = Añadir reputacion
3 = un/freeze player
4 = recuperar vida
5 = restart hambre sed
6 = esperando llamada
7 = esperar arrancar veh
8 = speedo
9 = cargando camion
10 = reciclando
11 = talando
12 = plantando
13 = gps mapa
14 = esposar
15 = jail time
16 = health down
17 = msg td
18 = intro
19 = anti cj
*/
/* TUNING SYSTEM */
#define TOTAL_TUNING_PARTS 14
#define MAX_TUNING_PARTS_COMPONENTS 20
enum PLAYER_TUNING_MENU_Info
{
tuning_menu_NAME[24], // o part
tuning_menu_ID,
tuning_menu_PIECES
};
new PLAYER_TUNING_MENU[MAX_PLAYERS][MAX_TUNING_PARTS_COMPONENTS][PLAYER_TUNING_MENU_Info];
/* GLOBAL_VEHICLES */
#define MAX_VEHICLE_COMPONENTS 14
#define MIN_VEHICLE_HEALTH 350.0
forward Float:GetDistanceBetweenPoints3D(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2);
forward Float:GetVehicleSpeed(vehicleid);
forward Float:frandom(Float:max, Float:min, dp);
new VEHICLE_COLORS[256] = //SA-MP Wiki
{
// The existing colours from San Andreas
0x000000FF, 0xF5F5F5FF, 0x2A77A1FF, 0x840410FF, 0x263739FF, 0x86446EFF, 0xD78E10FF, 0x4C75B7FF, 0xBDBEC6FF, 0x5E7072FF,
0x46597AFF, 0x656A79FF, 0x5D7E8DFF, 0x58595AFF, 0xD6DAD6FF, 0x9CA1A3FF, 0x335F3FFF, 0x730E1AFF, 0x7B0A2AFF, 0x9F9D94FF,
0x3B4E78FF, 0x732E3EFF, 0x691E3BFF, 0x96918CFF, 0x515459FF, 0x3F3E45FF, 0xA5A9A7FF, 0x635C5AFF, 0x3D4A68FF, 0x979592FF,
0x421F21FF, 0x5F272BFF, 0x8494ABFF, 0x767B7CFF, 0x646464FF, 0x5A5752FF, 0x252527FF, 0x2D3A35FF, 0x93A396FF, 0x6D7A88FF,
0x221918FF, 0x6F675FFF, 0x7C1C2AFF, 0x5F0A15FF, 0x193826FF, 0x5D1B20FF, 0x9D9872FF, 0x7A7560FF, 0x989586FF, 0xADB0B0FF,
0x848988FF, 0x304F45FF, 0x4D6268FF, 0x162248FF, 0x272F4BFF, 0x7D6256FF, 0x9EA4ABFF, 0x9C8D71FF, 0x6D1822FF, 0x4E6881FF,
0x9C9C98FF, 0x917347FF, 0x661C26FF, 0x949D9FFF, 0xA4A7A5FF, 0x8E8C46FF, 0x341A1EFF, 0x6A7A8CFF, 0xAAAD8EFF, 0xAB988FFF,
0x851F2EFF, 0x6F8297FF, 0x585853FF, 0x9AA790FF, 0x601A23FF, 0x20202CFF, 0xA4A096FF, 0xAA9D84FF, 0x78222BFF, 0x0E316DFF,
0x722A3FFF, 0x7B715EFF, 0x741D28FF, 0x1E2E32FF, 0x4D322FFF, 0x7C1B44FF, 0x2E5B20FF, 0x395A83FF, 0x6D2837FF, 0xA7A28FFF,
0xAFB1B1FF, 0x364155FF, 0x6D6C6EFF, 0x0F6A89FF, 0x204B6BFF, 0x2B3E57FF, 0x9B9F9DFF, 0x6C8495FF, 0x4D8495FF, 0xAE9B7FFF,
0x406C8FFF, 0x1F253BFF, 0xAB9276FF, 0x134573FF, 0x96816CFF, 0x64686AFF, 0x105082FF, 0xA19983FF, 0x385694FF, 0x525661FF,
0x7F6956FF, 0x8C929AFF, 0x596E87FF, 0x473532FF, 0x44624FFF, 0x730A27FF, 0x223457FF, 0x640D1BFF, 0xA3ADC6FF, 0x695853FF,
0x9B8B80FF, 0x620B1CFF, 0x5B5D5EFF, 0x624428FF, 0x731827FF, 0x1B376DFF, 0xEC6AAEFF, 0x000000FF,
// SA-MP extended colours (0.3x)
0x177517FF, 0x210606FF, 0x125478FF, 0x452A0DFF, 0x571E1EFF, 0x010701FF, 0x25225AFF, 0x2C89AAFF, 0x8A4DBDFF, 0x35963AFF,
0xB7B7B7FF, 0x464C8DFF, 0x84888CFF, 0x817867FF, 0x817A26FF, 0x6A506FFF, 0x583E6FFF, 0x8CB972FF, 0x824F78FF, 0x6D276AFF,
0x1E1D13FF, 0x1E1306FF, 0x1F2518FF, 0x2C4531FF, 0x1E4C99FF, 0x2E5F43FF, 0x1E9948FF, 0x1E9999FF, 0x999976FF, 0x7C8499FF,
0x992E1EFF, 0x2C1E08FF, 0x142407FF, 0x993E4DFF, 0x1E4C99FF, 0x198181FF, 0x1A292AFF, 0x16616FFF, 0x1B6687FF, 0x6C3F99FF,
0x481A0EFF, 0x7A7399FF, 0x746D99FF, 0x53387EFF, 0x222407FF, 0x3E190CFF, 0x46210EFF, 0x991E1EFF, 0x8D4C8DFF, 0x805B80FF,
0x7B3E7EFF, 0x3C1737FF, 0x733517FF, 0x781818FF, 0x83341AFF, 0x8E2F1CFF, 0x7E3E53FF, 0x7C6D7CFF, 0x020C02FF, 0x072407FF,
0x163012FF, 0x16301BFF, 0x642B4FFF, 0x368452FF, 0x999590FF, 0x818D96FF, 0x99991EFF, 0x7F994CFF, 0x839292FF, 0x788222FF,
0x2B3C99FF, 0x3A3A0BFF, 0x8A794EFF, 0x0E1F49FF, 0x15371CFF, 0x15273AFF, 0x375775FF, 0x060820FF, 0x071326FF, 0x20394BFF,
0x2C5089FF, 0x15426CFF, 0x103250FF, 0x241663FF, 0x692015FF, 0x8C8D94FF, 0x516013FF, 0x090F02FF, 0x8C573AFF, 0x52888EFF,
0x995C52FF, 0x99581EFF, 0x993A63FF, 0x998F4EFF, 0x99311EFF, 0x0D1842FF, 0x521E1EFF, 0x42420DFF, 0x4C991EFF, 0x082A1DFF,
0x96821DFF, 0x197F19FF, 0x3B141FFF, 0x745217FF, 0x893F8DFF, 0x7E1A6CFF, 0x0B370BFF, 0x27450DFF, 0x071F24FF, 0x784573FF,
0x8A653AFF, 0x732617FF, 0x319490FF, 0x56941DFF, 0x59163DFF, 0x1B8A2FFF, 0x38160BFF, 0x041804FF, 0x355D8EFF, 0x2E3F5BFF,
0x561A28FF, 0x4E0E27FF, 0x706C67FF, 0x3B3E42FF, 0x2E2D33FF, 0x7B7E7DFF, 0x4A4442FF, 0x28344EFF
};
new Float:HARVEST_CHECKPOINTS[][] =
{
{-328.332305, -1546.391357, 16.15409},
{-250.803207, -1553.425415, 4.534295},
{-224.260910, -1485.022827, 8.041003},
{-308.437896, -1476.776977, 11.40934},
{-283.487731, -1553.320068, 7.445997},
{-258.756164, -1426.692993, 9.493670},
{-178.887649, -1406.682250, 3.996473},
{-177.676818, -1322.970581, 6.885325},
{-305.899322, -1318.196533, 10.12089},
{-325.471008, -1412.821777, 15.12606},
{-191.962982, -1384.020019, 6.075732},
{-214.637603, -1321.270507, 10.79362},
{-263.975738, -1375.987426, 11.41642},
{-308.705474, -1424.302001, 15.52844},
{-287.710388, -1497.158325, 8.503927},
{-387.908111, -1532.118774, 23.47214}
};
enum
{
VEHICLE_TYPE_NONE,
VEHICLE_TYPE_TEST,
VEHICLE_TYPE_SELL,
VEHICLE_TYPE_PERSONAL,
VEHICLE_TYPE_WORK
};
enum
{
VEHICLE_STATE_NORMAL,
VEHICLE_STATE_DAMAGED
};
enum Global_Vehicles_Info
{
bool:gb_vehicle_VALID,
bool:gb_vehicle_OCCUPIED,
gb_vehicle_TYPE,
gb_vehicle_MODELID,
gb_vehicle_NUMBER_PLATE[32],
Float:gb_vehicle_POS[3],
Float:gb_vehicle_SPAWN_X,
Float:gb_vehicle_SPAWN_Y,
Float:gb_vehicle_SPAWN_Z,
Float:gb_vehicle_SPAWN_ANGLE,
Float:gb_vehicle_HEALTH,
gb_vehicle_DAMAGE_PANELS,
gb_vehicle_DAMAGE_DOORS,
gb_vehicle_DAMAGE_LIGHTS,
gb_vehicle_DAMAGE_TIRES,
gb_vehicle_COLOR_1,
gb_vehicle_COLOR_2,
gb_vehicle_PAINTJOB,
Float:gb_vehicle_GAS,
Float:gb_vehicle_MAX_GAS,
gb_vehicle_COMPONENTS[MAX_VEHICLE_COMPONENTS],
gb_vehicle_STATE,
gb_vehicle_INTERIOR,
gb_vehicle_WORLD,
gb_vehicle_PARAMS_ENGINE,
gb_vehicle_PARAMS_LIGHTS,
gb_vehicle_PARAMS_ALARM,
gb_vehicle_PARAMS_DOORS,
gb_vehicle_PARAMS_BONNET,
gb_vehicle_PARAMS_BOOT,
gb_vehicle_PARAMS_OBJECTIVE,
gb_vehicle_DRIVER,
gb_vehicle_LAST_DRIVER,
gb_vehicle_LAST_CLOSED_TIME,
gb_vehicle_LAST_REPAIR_TIME,
bool:gb_vehicle_SPAWNED,
gb_vehicle_TP_IMMUNITY,
gp_vehicle_vip,
gb_vehicle_ATTACHED_TO,
Text3D:gb_vehicle_LABEL
};
new GLOBAL_VEHICLES[MAX_VEHICLES][Global_Vehicles_Info];
enum Player_Vehicles_Info
{
bool:player_vehicle_VALID,
player_vehicle_ID,
player_vehicle_OWNER_ID,
bool:player_vehicle_ACCESSIBLE
};
new PLAYER_VEHICLES[MAX_VEHICLES][Player_Vehicles_Info];
#define MAX_VEHICLE_OBJECTS_INDEXS 5
enum
{
VOBJECT_TYPE_OBJECT,
VOBJECT_TYPE_TEXT,
VOBJECT_TYPE_COUNTRY_FLAG,
VOBJECT_TYPE_COUNTRY_PANEL
};
enum e_VEHICLE_OBJECTS
{
bool:vobject_VALID,
vobject_TYPE,
vobject_NAME[32],
vobject_ID,
vobject_OBJECT_ID,
vobject_MODELID,
Float:vobject_OFFSET[3],
Float:vobject_ROT[3],
vobject_ATTACHED,
vobject_COLORS[MAX_VEHICLE_OBJECTS_INDEXS],
vobject_text_TEXT[32],
vobject_text_FONT[24],
vobject_text_FONT_SIZE,
vobject_text_BOLD,
vobject_text_FONT_COLOR
};
new VEHICLE_OBJECTS[MAX_VEHICLES][MAX_SU_VOBJECTS][e_VEHICLE_OBJECTS];
new male_medic_skins[] = {274, 275, 276};
enum
{
WORK_TYPE_NONE,
WORK_TYPE_NORMAL,
WORK_TYPE_FAMILY
};
enum
{
WORK_NONE,
WORK_TAXI,
WORK_TRUCK,
WORK_MECHANIC,
WORK_HARVESTER,
WORK_TRASH,
WORK_LUMBERJACK,
WORK_FARMER,
WORK_POLICE,
WORK_PIZZA,
WORK_MEDIC
};
enum work_info_info
{
work_info_TYPE,
work_info_LEVEL,
work_info_NAME[24],
bool:work_info_NEED_DUTY, //si este trabajo es normal y tiene vehiculos indica si es necesario que el jugador este de servicio para subirse
work_info_EXTRA_PAY, //dejar en 0 para no paga extra.......Paga extra de 'work_info_EXTRA_PAY' cada 'work_info_EXTRA_PAY_EXP' con un limite de 'work_info_EXTRA_PAY_LIMIT'
work_info_EXTRA_PAY_EXP,
work_info_EXTRA_PAY_LIMIT // dejar en 0 para sin limites
};
new work_info[][work_info_info] =
{
{WORK_TYPE_NONE, 0, "ninguno", false, 0, 0, 0},
{WORK_TYPE_NORMAL, 1, "taxista", false, 0, 0, 0},
{WORK_TYPE_NORMAL, 1, "camionero", false, 0, 50, 1300},
{WORK_TYPE_NORMAL, 3, "mecánico", true, 0, 0, 0},
{WORK_TYPE_NORMAL, 1, "cosechador", false, 20, 30, 800},
{WORK_TYPE_NORMAL, 1, "basurero", true, 60, 50, 2000},
{WORK_TYPE_NORMAL, 1, "leñador", false, 0, 30, 800},
{WORK_TYPE_NORMAL, 5, "agricultor", false, 0, 0, 0},
{WORK_TYPE_FAMILY, 0, "policía", true, 1000, 1, 0},
{WORK_TYPE_NORMAL, 1, "pizzero", true, 60, 20, 800},
{WORK_TYPE_NORMAL, 5, "médico", true, 60, 50, 2000}
};
new PLAYER_WORKS[MAX_PLAYERS][sizeof(work_info)];
new PLAYER_SKILLS[MAX_PLAYERS][sizeof(work_info)];
/* Tuning Object System */
enum e_Tuning_Shop_Objects
{
tuning_object_MODELID,
tuning_object_NAME[24],
tuning_object_PRICE
};
new Tuning_Shop_Objects[][e_Tuning_Shop_Objects] =
{
{1000, "spl_b_mar_m", 3000},
{1001, "spl_b_bab_m", 3000},
{1002, "spl_b_bar_m", 3000},
{1003, "spl_b_mab_m", 3000},
{1004, "bnt_b_sc_m", 9000},
{1005, "bnt_b_sc_l", 3000},
{1007, "wg_l_b_ssk", 2000},
{1018, "exh_b_ts", 3500},
{1019, "exh_b_t", 3500},
{1021, "exh_b_m", 3500},
{1024, "lgt_b_sspt", 2000},
{1029, "exh_c_s", 3000},
{1043, "exh_lr_br2", 3500},
{1044, "exh_lr_br1", 3000},
{1047, "wg_l_a_f", 2500},
{1048, "wg_l_c_f", 2500},
{1049, "spl_a_f_r", 3000},
{1050, "spl_c_f_r", 3000},
{1056, "wg_l_a_st", 2500},
{1090, "wg_l_a_u", 2500},
{19078, "TheParrot1", 8000},
{19917, "CutsceneEngine1", 10500},
{19893, "LaptopSAMP1", 6000},
{2768, "CJ_CB_BURG", 1000},
{19838, "CoffeeCup1", 1000},
{11736, "MedicCase1", 3000},
{1247, "bribe", 8000},
{19147, "PinSpotLight5", 5000},
{19148, "PinSpotLight6", 5000},
{19149, "PinSpotLight7", 5000},
{19151, "PinSpotLight9", 5000},
{19153, "PinSpotLight11", 5000},
{19580, "Pizza1", 1000},
{2690, "CJ_FIRE_EXT", 5000},
{19308, "taxi01", 3000},
{1550, "CJ_MONEY_BAG", 4000},
{19306, "kmb_goflag2", 5000},
{19307, "kmb_goflag3", 5000},
{18647, "RedNeonTube1", 6000},
{18648, "BlueNeonTube1", 6000},
{18649, "GreenNeonTube1", 6000},
{18650, "YellowNeonTube1", 6000},
{18651, "PinkNeonTube1", 6000},
{18652, "WhiteNeonTube1", 6000},
{18749, "SAMPLogoSmall", 5000},
{19054, "XmasBox1", 3000},
{19133, "ArrowType4", 5000},
{19471, "forsale02", 3000},
{19878, "Skateboard1", 2000},
{19314, "bullhorns01", 5000},
{2404, "CJ_SURF_BOARD", 3000},
{2405, "CJ_SURF_BOARD2", 3000},
{2406, "CJ_SURF_BOARD3", 3000},
{19317, "bassguitar01", 2000},
{19318, "flyingv01", 2000},
{2232, "MED_SPEAKER_4", 3000},
{1840, "speaker_2", 2000},
{2229, "SWANK_SPEAKER", 4000},
{1025, "wheel_or1", 2500},
{1073, "wheel_sr6", 2500},
{1074, "wheel_sr3", 2500},
{1075, "wheel_sr2", 2500},
{1076, "wheel_lr4", 2500},
{1077, "wheel_lr1", 2500},
{1078, "wheel_lr3", 2500},
{1079, "wheel_sr1", 2500},
{1080, "wheel_sr5", 2500},
{1081, "wheel_sr4", 2500},
{1082, "wheel_gn1", 2500},
{1083, "wheel_lr2", 2500},
{1084, "wheel_lr5", 2500},
{1085, "wheel_gn2", 2500},
{1096, "wheel_gn3", 2500},
{1097, "wheel_gn4", 2500},
{1098, "wheel_gn5", 2500},
{19894, "laptop", 4500},
{19873, "toiletpaperroll1", 200},
{19874, "soapbar1", 200},
{19624, "case1", 600},
{19621, "obj1", 1500},
{19620, "police", 10500}
};
//ZONAS
enum
{
AREA_TYPE_NONE,
AREA_TYPE_GANGZONE
};
#define MAX_TERRITORIES 100
enum enum_TERRITORIES
{
bool:territory_VALID,
territory_ID,
territory_NAME[32],
bool:territory_OCCUPIED,
territory_CREW_ID,
territory_CREW_INDEX,
territory_COLOR,
Float:territory_MIN_X,
Float:territory_MIN_Y,
Float:territory_MIN_Z,
Float:territory_MAX_X,
Float:territory_MAX_Y,
Float:territory_MAX_Z,
territory_AREA,
territory_GANG_ZONE,
bool:territory_WAR,
territory_ATTACKER_CREW_INDEX,
territory_WAR_TIME_LEFT,
Text:territory_TEXTDRAW,
territory_TIMER,
territory_LAST_ATTACK
};
new TERRITORIES[MAX_TERRITORIES][enum_TERRITORIES];
// Crews
#define MAX_CREWS 50
#define MAX_CREW_RANKS 10
enum enum_CREW_INFO
{
bool:crew_VALID,
crew_ID,
crew_NAME[32],
crew_COLOR,
bool:crew_FIGHTING,
crew_LAST_ATTACK,
crew_MEMBERS,
crew_ONLINE_MEMBERS
};
new CREW_INFO[MAX_CREWS][enum_CREW_INFO];
new RandomColors[] =
{
0xFFFFFFFF,
0x000000FF,
0x99CC00FF,
0xFF9900FF,
0x6699CCFF,
0x0099FFFF,
0xCCCC99FF,
0xFF8C13FF, 0xC715FFFF, 0x20B2AAFF, 0xDC143CFF, 0x6495EDFF, 0xf0e68cFF, 0x778899FF, 0xFF1493FF, 0xF4A460FF,
0xEE82EEFF, 0xFFD720FF, 0x8b4513FF, 0x4949A0FF, 0x148b8bFF, 0x14ff7fFF, 0x556b2fFF, 0x0FD9FAFF, 0x10DC29FF,
0x534081FF, 0x0495CDFF, 0xEF6CE8FF, 0xBD34DAFF, 0x247C1BFF, 0x0C8E5DFF, 0x635B03FF, 0xCB7ED3FF, 0x65ADEBFF,
0x5C1ACCFF, 0xF2F853FF, 0x11F891FF, 0x7B39AAFF, 0x53EB10FF, 0x54137DFF, 0x275222FF, 0xF09F5BFF, 0x3D0A4FFF,
0x22F767FF, 0xD63034FF, 0x9A6980FF, 0xDFB935FF, 0x3793FAFF, 0x90239DFF, 0xE9AB2FFF, 0xAF2FF3FF, 0x057F94FF,
0xB98519FF, 0x388EEAFF, 0x028151FF, 0xA55043FF, 0x0DE018FF, 0x93AB1CFF, 0x95BAF0FF, 0x369976FF, 0x18F71FFF,
0x4B8987FF, 0x491B9EFF, 0x829DC7FF, 0xBCE635FF, 0xCEA6DFFF, 0x20D4ADFF, 0x2D74FDFF, 0x3C1C0DFF, 0x12D6D4FF,
0x48C000FF, 0x2A51E2FF, 0xE3AC12FF, 0xFC42A8FF, 0x2FC827FF, 0x1A30BFFF, 0xB740C2FF, 0x42ACF5FF, 0x2FD9DEFF,
0xFAFB71FF, 0x05D1CDFF, 0xC471BDFF, 0x94436EFF, 0xC1F7ECFF, 0xCE79EEFF, 0xBD1EF2FF, 0x93B7E4FF, 0x3214AAFF,
0x184D3BFF, 0xAE4B99FF, 0x7E49D7FF, 0x4C436EFF, 0xFA24CCFF, 0xCE76BEFF, 0xA04E0AFF, 0x9F945CFF, 0xDCDE3DFF,
0x10C9C5FF, 0x70524DFF, 0x0BE472FF, 0x8A2CD7FF, 0x6152C2FF, 0xCF72A9FF, 0xE59338FF, 0xEEDC2DFF, 0xD8C762FF,
0xD8C762FF, 0xFF8C13FF, 0xC715FFFF, 0x20B2AAFF, 0xDC143CFF, 0x6495EDFF, 0xf0e68cFF, 0x778899FF, 0xFF1493FF,
0xF4A460FF, 0xEE82EEFF, 0xFFD720FF, 0x8b4513FF, 0x4949A0FF, 0x148b8bFF, 0x14ff7fFF, 0x556b2fFF, 0x0FD9FAFF,
0x10DC29FF, 0x534081FF, 0x0495CDFF, 0xEF6CE8FF, 0xBD34DAFF, 0x247C1BFF, 0x0C8E5DFF, 0x635B03FF, 0xCB7ED3FF,
0x65ADEBFF, 0x5C1ACCFF, 0xF2F853FF, 0x11F891FF, 0x7B39AAFF, 0x53EB10FF, 0x54137DFF, 0x275222FF, 0xF09F5BFF,
0x3D0A4FFF, 0x22F767FF, 0xD63034FF, 0x9A6980FF, 0xDFB935FF, 0x3793FAFF, 0x90239DFF, 0xE9AB2FFF, 0xAF2FF3FF,
0x057F94FF, 0xB98519FF, 0x388EEAFF, 0x028151FF, 0xA55043FF, 0x0DE018FF, 0x93AB1CFF, 0x95BAF0FF, 0x369976FF,
0x18F71FFF, 0x4B8987FF, 0x491B9EFF, 0x829DC7FF, 0xBCE635FF, 0xCEA6DFFF, 0x20D4ADFF, 0x2D74FDFF, 0x3C1C0DFF,
0x12D6D4FF, 0x48C000FF, 0x2A51E2FF, 0xE3AC12FF, 0xFC42A8FF, 0x2FC827FF, 0x1A30BFFF, 0xB740C2FF, 0x42ACF5FF,
0x2FD9DEFF, 0xFAFB71FF, 0x05D1CDFF, 0xC471BDFF, 0x94436EFF, 0xC1F7ECFF, 0xCE79EEFF, 0xBD1EF2FF, 0x93B7E4FF,
0x3214AAFF, 0x184D3BFF, 0xAE4B99FF, 0x7E49D7FF, 0x4C436EFF, 0xFA24CCFF, 0xCE76BEFF, 0xA04E0AFF, 0x9F945CFF,
0xDCDE3DFF, 0x10C9C5FF, 0x70524DFF, 0x0BE472FF, 0x8A2CD7FF, 0x6152C2FF, 0xCF72A9FF, 0xE59338FF, 0xEEDC2DFF,
0xD8C762FF, 0xD8C762FF
};
/*
Permisos de rangos
0 - cambiar nombre
1 - invitar
2 - echar
3 - cambiar rango de miembros
4 - crear rangos y modificar rangos
5 - poner casas personales a casas de banda
6 - vender casas de banda
7 - cambiar color de la banda
8 - abandonar territorio
9 - destruir cbanda
*/
//permisos
enum
{
CREW_RANK_CHANGE_NAME,
CREW_RANK_INVITE,
CREW_RANK_CAST_MEMBERS,
CREW_RANK_MODIFY_MEMBERS,
CREW_RANK_MODIFY_RANKS,
CREW_RANK_ADD_PROPERTIES,
CREW_RANK_DELETE_PROPERTIES,
CREW_RANK_CHANGE_COLOR,
CREW_RANK_LEAVE_TERRITORY,
CREW_RANK_DELETE,
CREW_RANK_SIZE // dejar siempre el ultimo
};
new CREW_RANKS_PERMISSIONS[][] =
{
"cambiar nombre de la banda",
"invitar jugadores",
"echar miembros",
"cambiar rangos de miembros",
"crear rangos o modificarlos",
"poner propiedades de banda",
"liberar propiedades de banda",
"cambiar color de la banda",
"abandonar territorios",
"eliminar banda"
};
enum enum_CREW_RANK_INFO
{
bool:crew_rank_VALID,
crew_rank_ID,
crew_rank_NAME[32],
crew_rank_PERMISSION[CREW_RANK_SIZE]
};
new CREW_RANK_INFO[MAX_CREWS][MAX_CREW_RANKS][enum_CREW_RANK_INFO];
enum enum_PLAYER_CREW
{
bool:player_crew_VALID,
player_crew_ID,
player_crew_RANK,
player_crew_INDEX
};
new PLAYER_CREW[MAX_PLAYERS][enum_PLAYER_CREW];
enum
{
MISC_MECHANIC_PIECES,
MISC_FUEL_DRUM,
MISC_SEED_MEDICINE,
MISC_SEED_CANNABIS,
MISC_SEED_CRACK,
MISC_MEDICINE,
MISC_CANNABIS,
MISC_CRACK,
MISC_CONFIG_SOUNDS,
MISC_CONFIG_AUDIO,
MISC_CONFIG_TIME,
MISC_CONFIG_HUD,
MISC_CONFIG_ADMIN,
MISC_MUTE,
MISC_PLACA_PD,
MISC_SIZE //Dejar siempre este al final
};
new PLAYER_MISC[MAX_PLAYERS][MISC_SIZE];
enum obtain_work_coords_info
{
Float:obtain_work_X,
Float:obtain_work_Y,
Float:obtain_work_Z,
obtain_work_INTERIOR,
bool:obtain_work_MAP_ICON,
obtain_work_MAP_ICON_ID,
Float:obtain_work_MAP_ICON_X,
Float:obtain_work_MAP_ICON_Y,
Float:obtain_work_MAP_ICON_Z,
};
new Float:obtain_work_coords[][obtain_work_coords_info] =
{
{0.0, 0.0, 0.0, 0, false, 0, 0.0, 0.0, 0.0},
{1490.285766, 1305.699340, 1093.296386, 3, true, 61, 1752.603881, -1894.155883, 13.557376},
{1297.107543, -65.027748, 1002.498046, 18, true, 61, -510.699890, -539.409118, 25.523437},
{-86.235771, -1183.517822, 2.940625, 0, true, 27, -86.235771, -1183.517822, 2.940625},
{-372.126922, -1435.706298, 25.726562, 0, true, 61, -372.126922, -1435.706298, 25.726562}, //Cosechador
{-1884.997314, -1636.733642, 21.750000, 0, true, 61, -1884.997314, -1636.733642, 21.750000}, //Basurero
{-532.029846, -97.514228, 63.296875, 0, true, 61, -532.029846, -97.514228, 63.296875},
{1564.864257, 23.255302, 24.164062, 0, true, 61, 1564.864257, 23.255302, 24.164062},
{-510.972015, 324.242736, 2004.585937, 20, false, 0, 1480.966918, -1772.065673, 18.795755}, // policia
{377.902313, -119.416114, 1001.492187, 5, false, 0, 2105.485107, -1806.400878, 13.554687},
{-2033.237304, -117.411125, 1035.171875, 3, false, 0, 0.0, 0.0, 0.0}
};
enum Work_Vehicles_Info
{
bool:work_vehicle_VALID,
work_vehicle_WORK,
work_vehicle_EXP,
bool:work_vehicle_NEED_DUTY
};
new WORK_VEHICLES[MAX_VEHICLES][Work_Vehicles_Info];
new valid_work_vehicle_colors[] = {84, 63, 91, 63, 102, 65, 105, 72, 110, 93, 121, 93, 12, 95, 23, 1};
enum San_Andreas_Vehicles_Info
{
san_andreas_vehicle_TYPE,
san_andreas_vehicle_TYPE_IN,
san_andreas_vehicle_TYPE_IN_EXP,
san_andreas_vehicle_MODELID,
Float:san_andreas_vehicle_SPAWN_X,
Float:san_andreas_vehicle_SPAWN_Y,
Float:san_andreas_vehicle_SPAWN_Z,
Float:san_andreas_vehicle_SPAWN_ANGLE,
san_andreas_vehicle_COLOR_1,
san_andreas_vehicle_COLOR_2,
san_andreas_vehicle_vip
};
new San_Andreas_Vehicles[][San_Andreas_Vehicles_Info] =
{
//taxi ls
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1792.5676, -1868.2953, 13.2887, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1807.7679, -1868.5153, 13.2887, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1805.2649, -1901.7776, 13.1195, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1805.2053, -1932.5355, 13.0518, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1775.7917, -1932.4465, 13.0518, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1783.2333, -1932.4965, 13.0518, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1798.8303, -1932.5427, 13.0518, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1791.2925, -1932.4644, 13.0518, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, 1775.7085, -1916.0463, 13.2772, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1805.3810, -1917.4658, 13.1195, 0.0000, 6, 1, 0},
// taxi sf
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, -1986.7380, 106.9412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, -1986.7380, 114.9412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, -1986.7380, 125.9412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, -1986.7380, 138.4412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, -1986.7380, 145.4412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, -1986.7380, 155.9412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, -1986.7380, 171.4412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, -1986.7380, 178.4412, 27.2298, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, -1986.7380, 185.4412, 27.2298, 0.0000, 6, 1, 0},
// taxi lv
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, 1687.2935, 1297.4829, 10.5616, 180.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1695.2935, 1297.4829, 10.5616, 180.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1695.7935, 1305.9829, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1691.7935, 1305.9829, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, 1688.2935, 1305.9829, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1681.7935, 1305.9829, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1688.3271, 1287.1450, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1693.8271, 1287.1450, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, 1699.3271, 1287.1450, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1703.3271, 1287.1450, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1706.8271, 1287.1450, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1711.8271, 1287.1450, 10.5616, 0.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, 1709.3271, 1316.1450, 10.5616, 180.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1703.3271, 1316.1450, 10.5616, 180.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, 1698.3271, 1316.1450, 10.5616, 180.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 420, 1694.8271, 1316.1450, 10.5616, 180.0000, 6, 1, 0},
{VEHICLE_TYPE_WORK, WORK_TAXI, 0, 438, 1691.3271, 1316.1450, 10.5616, 180.0000, 6, 1, 0},
//Camionero
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -494.4160, -472.8649, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -499.3518, -473.3605, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -504.5551, -473.4075, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -510.0538, -473.4275, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -529.0538, -473.4275, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -544.5538, -473.4275, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -559.5538, -473.4275, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -572.5538, -473.4275, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -589.0538, -473.4275, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -514.8518, -473.3605, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -533.8518, -473.3605, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -564.8518, -473.3605, 25.5408, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -577.3518, -473.3605, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -583.3518, -473.3605, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -519.4160, -472.8649, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -550.4160, -472.8649, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -489.3518, -473.3605, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -483.3518, -473.3605, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -478.4160, -472.8649, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -473.4160, -472.8649, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -469.7829, -488.2091, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -489.7829, -488.2091, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -540.2829, -488.2091, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -564.7829, -488.2091, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 414, -589.2829, -488.2091, 25.5098, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -579.6942, -488.2058, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -549.6942, -488.2058, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 456, -510.6942, -488.2058, 25.5404, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -500.5240, -488.8626, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -556.0240, -488.8626, 25.4323, 180.0000, -1, -1, 0},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -615.4958, -480.0750, 25.5963, 269.0000, 0, 0, 1},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -615.3096, -490.5564, 25.5963, 269.0000, 0, 0, 1},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -615.4363, -500.5580, 25.5963, 269.0000, 0, 0, 1},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -615.4330, -527.0305, 25.5963, 269.0000, 0, 0, 1},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -615.8846, -537.6530, 25.5963, 269.0000, 0, 0, 1},
{VEHICLE_TYPE_WORK, WORK_TRUCK, 0, 498, -616.0970, -547.9350, 25.5963, 269.0000, 0, 0, 1},
//Mecanico
{VEHICLE_TYPE_WORK, WORK_MECHANIC, 0, 525, -64.1689, -1160.0291, 3.0971, 150.8192, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_MECHANIC, 0, 525, -70.7204, -1156.8854, 2.7596, 150.8192, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_MECHANIC, 0, 525, -76.7969, -1153.1581, 2.6658, 150.8192, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_MECHANIC, 0, 525, -82.2357, -1150.2081, 2.8056, 150.8192, 1, 1, 0},
//Cosechador
{VEHICLE_TYPE_WORK, WORK_HARVESTER, 0, 532, -390.604370, -1476.015747, 26.704042, 259.474060, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_HARVESTER, 0, 532, -385.473022, -1464.722900, 26.711814, 227.251434, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_HARVESTER, 0, 532, -372.544342, -1462.451293, 26.736181, 224.972244, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_HARVESTER, 0, 532, -375.785583, -1473.692260, 26.720621, 224.966537, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_HARVESTER, 0, 532, -379.832061, -1484.033203, 26.696950, 223.968917, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_HARVESTER, 0, 532, -389.124328, -1491.877197, 26.187450, 314.527038, 1, 1, 0},
{VEHICLE_TYPE_WORK, WORK_HARVESTER, 0, 532, -382.092529, -1499.563842, 25.449359, 314.704895, 1, 1, 0},
//Basurero
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1913.5554, -1702.3322, 22.5969, 270.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1913.5554, -1707.8322, 22.5969, 270.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1914.0554, -1713.8322, 22.5969, 270.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1913.5554, -1719.8322, 22.5969, 270.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1913.5554, -1726.3322, 22.5969, 270.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1913.5554, -1732.8322, 22.5969, 270.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1901.7543, -1702.9012, 22.5969, 180.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1896.7543, -1702.9012, 22.5969, 180.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1892.2543, -1702.9012, 22.5969, 180.0000, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1879.0313, -1739.9550, 22.5969, 33.7282, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1884.2616, -1743.0443, 22.5969, 33.7282, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1889.2466, -1746.0833, 22.5969, 33.7282, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1894.2480, -1748.9353, 22.5969, 33.7282, 26, 26, 0},
{VEHICLE_TYPE_WORK, WORK_TRASH, 0, 408, -1898.6696, -1751.6755, 22.5969, 33.7282, 26, 26, 0},
//policia ls
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1601.9473, -1696.1240, 5.6107, 89.0810, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1602.1748, -1691.9042, 5.6110, 88.4362, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1602.0411, -1700.2920, 5.6110, 88.6648, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1601.8983, -1704.0681, 5.6115, 89.3552, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1587.3389, -1710.4362, 5.6118, 1.0410, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1583.4728, -1710.5020, 5.6120, 359.4709, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 402, 1545.2308, -1680.1783, 5.7223, 89.2245, 0, 0, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 411, 1544.4467, -1676.0834, 5.6177, 89.6164, 0, 0, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 1, 599, 1570.1743, -1710.9041, 6.0789, 0.5127, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 1, 599, 1574.3672, -1710.9801, 6.0787, 0.3933, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 5, 523, 1583.7402, -1668.5023, 5.4657, 88.7599, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 5, 523, 1583.7308, -1671.5286, 5.4637, 87.6115, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 5, 523, 1583.8281, -1674.2369, 5.4653, 89.9781, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 427, 1538.5195, -1645.3208, 6.0224, 178.7787, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 427, 1534.8190, -1645.2932, 6.0222, 178.9228, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 601, 1526.7194, -1644.9723, 5.6494, 179.5714, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1601.9880, -1687.8237, 5.6110, 89.6723, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1602.2769, -1684.0154, 5.6119, 89.6658, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1591.4995, -1710.3190, 5.6105, 359.6988, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 596, 1595.5188, -1710.3881, 5.6109, 358.7049, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 528, 1546.5891, -1654.8442, 5.9344, 90.4177, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 528, 1546.4629, -1650.9556, 5.9348, 90.2691, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 601, 1530.5052, -1644.9598, 5.6494, 179.5481, 0, 1, 0},
//policia sf
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1588.1722, 749.2943, -5.5779, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1592.2081, 749.1027, -5.5779, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1596.2935, 749.4324, -5.5779, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1600.3527, 749.0949, -5.5779, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1604.2867, 749.3167, -5.5779, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1575.0361, 742.6935, -5.5779, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1574.9946, 738.4707, -5.5779, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1575.1072, 735.0409, -5.5779, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1575.0322, 730.9659, -5.5779, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1575.1212, 722.3821, -5.5779, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1575.0864, 718.5404, -5.5779, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 599, -1574.7537, 714.1426, -5.1303, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 599, -1574.6227, 710.4202, -5.1303, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 599, -1574.6934, 706.5904, -5.1303, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1599.5576, 693.3072, -5.5779, 180.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1608.8636, 693.0085, -5.5779, 180.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 597, -1612.5468, 692.6500, -5.5779, 180.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 411, -1639.4524, 662.1886, -5.5417, -90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 415, -1639.3489, 666.1519, -5.5417, -90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 413, -1639.1108, 669.9014, -5.2635, -90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 601, -1638.7815, 678.3526, -5.4683, -90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 601, -1638.8115, 682.3326, -5.4683, -90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 427, -1628.3209, 691.4453, -5.0293, 180.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 427, -1624.6458, 691.1703, -5.0293, 180.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 427, -1621.0149, 691.4860, -5.0293, 180.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 426, -1639.1274, 658.2158, -5.5682, -90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 523, -1617.3679, 731.1095, -5.6017, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 523, -1615.6661, 731.2083, -5.6017, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 523, -1613.6464, 731.1612, -5.6017, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 523, -1611.4475, 731.4107, -5.6017, 0.0000, 0, 1, 0},
//Policia lvpd
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2314.1758, 2475.5225, 3.0620, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2313.4473, 2480.4548, 3.0620, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2313.9863, 2470.4392, 3.0620, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2313.3777, 2466.1509, 3.0620, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2313.2185, 2460.8066, 3.0620, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2285.6572, 2474.5803, 3.0066, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2281.5867, 2475.2078, 3.0066, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2277.3740, 2475.5874, 3.0066, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2272.8518, 2475.8105, 3.0066, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2307.3750, 2431.3274, 2.9947, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 598, 2298.9263, 2431.8225, 2.9947, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 599, 2272.4565, 2431.9678, 3.3194, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 599, 2267.9832, 2431.6877, 3.3194, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 2, 599, 2263.6194, 2431.6626, 3.3194, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 11, 601, 2246.5898, 2431.7930, 3.0092, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 427, 2250.7744, 2431.9976, 3.2946, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 427, 2258.8242, 2431.7910, 3.2946, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 427, 2254.3489, 2432.4753, 3.2946, 0.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 415, 2297.8123, 2451.5508, 3.0484, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 9, 415, 2298.2183, 2455.7683, 3.0484, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 523, 2299.6643, 2459.1206, 2.8170, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 523, 2299.8755, 2460.9136, 2.8170, 90.0000, 0, 1, 0},
{VEHICLE_TYPE_WORK, WORK_POLICE, 6, 523, 2299.8306, 2463.0632, 2.8170, 90.0000, 0, 1, 0},
//pizzero
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2094.2339, -1813.4716, 12.9325, 90.0000, 3, 6, 0},
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2094.2139, -1814.9722, 12.9325, 90.0000, 3, 6, 0},
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2094.2139, -1816.4722, 12.9325, 90.0000, 3, 6, 0},
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2094.2139, -1817.9722, 12.9325, 90.0000, 3, 6, 0},
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2094.2139, -1819.4722, 12.9325, 90.0000, 3, 6, 0},
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2094.2139, -1820.9722, 12.9325, 90.0000, 3, 6, 0},
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2098.2712, -1812.8209, 12.9325, 0.0000, 3, 6, 0},
{VEHICLE_TYPE_WORK, WORK_PIZZA, 0, 448, 2096.7712, -1812.8209, 12.9325, 0.0000, 3, 6, 0},
//ambulancias
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 2036.2555, -1429.4966, 17.0571, 180.00, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 2036.4742, -1439.7246, 17.0571, 180.00, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 2016.8370, -1411.2896, 17.0571, 90.000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 2017.1022, -1416.2045, 17.0571, 90.000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1180.2153, -1308.2330, 13.8244, -90.00, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1180.4480, -1338.4403, 13.8244, -90.00, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1226.9530, 302.3792, 19.7678, 66.10860, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -2202.2329, -2294.7314, 30.7048, 320.0, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -2544.5457, 610.1262, 14.4484, 90.0000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -2544.9500, 604.4023, 14.4484, 90.0000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -2545.0088, 598.3672, 14.4484, 90.0000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -2544.8770, 593.1545, 14.4484, 90.0000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -2545.2927, 587.3546, 14.4484, 90.0000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -330.0057, 1062.9534, 19.7507, -90.000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -1508.8683, 2526.5510, 55.9118, 0.0000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, -1504.4027, 2526.4734, 55.9118, 0.0000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1617.1790, 1841.2314, 10.6855, 0.00000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1612.3330, 1841.6625, 10.6855, 0.00000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1607.3164, 1841.8850, 10.6855, 0.00000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1602.5084, 1841.9370, 10.6855, 0.00000, 1, 3, 0},
{VEHICLE_TYPE_WORK, WORK_MEDIC, 0, 416, 1597.7699, 1841.7919, 10.6855, 0.00000, 1, 3, 0},
//renta.
{VEHICLE_TYPE_NONE, WORK_NONE, 0, 509, 1769.0483, -1905.9906, 13.0658, 0.00000, -1, -1, 0},
{VEHICLE_TYPE_NONE, WORK_NONE, 0, 509, 1766.8649, -1906.0200, 13.0658, 0.00000, -1, -1, 0},
{VEHICLE_TYPE_NONE, WORK_NONE, 0, 509, 1756.9684, -1905.9261, 13.0658, 0.00000, -1, -1, 0},
{VEHICLE_TYPE_NONE, WORK_NONE, 0, 509, 1764.8287, -1905.9766, 13.0658, 0.00000, -1, -1, 0},
{VEHICLE_TYPE_NONE, WORK_NONE, 0, 509, 1762.6488, -1905.9103, 13.0658, 0.00000, -1, -1, 0},
{VEHICLE_TYPE_NONE, WORK_NONE, 0, 509, 1760.6249, -1905.9413, 13.0658, 0.00000, -1, -1, 0},
{VEHICLE_TYPE_NONE, WORK_NONE, 0, 509, 1758.7451, -1905.8674, 13.0658, 0.00000, -1, -1, 0}
};
enum San_Andreas_Barriers_Info
{
barrier_VEHICLE_TYPE,
barrier_VEHICLE_TYPE_IN,
Float:barrier_X,
Float:barrier_Y,
Float:barrier_Z,
Float:barrier_ROTATION,
barrier_INTERIOR,
barrier_WORLD,
barrier_OBJECT_ID,
barrier_TIMER,
bool:barrier_CLOSING
};
new San_Andreas_Barriers[][San_Andreas_Barriers_Info] = // usar VEHICLE_TYPE_NONE para que puedan pasar todos
{
{VEHICLE_TYPE_WORK, WORK_TAXI, 1811.32373, -1886.26331, 12.36843, 90.00000, 0, 0, INVALID_STREAMER_ID, -1, false}, // barrera taxi ls
{VEHICLE_TYPE_WORK, WORK_TAXI, 1717.0457, 1308.0387, 9.7157, 90.0, 0, 0, INVALID_STREAMER_ID, -1, false}, // barrera taxi lv
{VEHICLE_TYPE_WORK, WORK_TRUCK, -495.0410, -562.1307, 24.4932, 180.0, 0, 0, INVALID_STREAMER_ID, -1, false}, // barrera camioneros
{VEHICLE_TYPE_WORK, WORK_POLICE, 1544.69629, -1630.79651, 12.31840, -90.0, 0, 0, INVALID_STREAMER_ID, -1, false}, // barrera POLICIA LS
{VEHICLE_TYPE_WORK, WORK_POLICE, 2238.19897, 2450.41797, 9.80680, -90.0, 0, 0, INVALID_STREAMER_ID, -1, false}, // barrera POLICIA LV
{VEHICLE_TYPE_WORK, WORK_POLICE, -1572.20313, 658.83588, 6.07810, -90.0, 0, 0, INVALID_STREAMER_ID, -1, false}, // barrera POLICIA SF 1
{VEHICLE_TYPE_WORK, WORK_POLICE, -1701.42969, 687.59381, 23.88280, 90.0, 0, 0, INVALID_STREAMER_ID, -1, false}, // barrera POLICIA SF 2
{VEHICLE_TYPE_NONE, WORK_NONE, -1526.39063, 481.38281, 6.17970, 0.0, 0, 0, INVALID_STREAMER_ID, -1, false}, // ejercito??
{VEHICLE_TYPE_NONE, WORK_NONE, -82.1645, -1123.0260, 0.0373, 67.1102, 0, 0, INVALID_STREAMER_ID, -1, false} // grua
};
enum VEHICLE_INFO_enum
{
bool:vehicle_info_VALID,
vehicle_info_NAME[24],
Float:vehicle_info_MAX_GAS, // Por defecto
Float:vehicle_info_MAX_VEL,
vehicle_info_PRICE,
vehicle_info_LEVEL,
vehicle_info_EXTRA,
vehicle_info_BOOT_SLOTS,
vehicle_info_SEATS,
bool:vehicle_info_ENGINE,
bool:vehicle_info_DRIVER_DOOR,
bool:vehicle_info_PASSENGER_DOOR,
vehicle_info_VIP_LEVEL,
vehicle_info_COINS,
bool:vehicle_info_MECHANIC_TRAILER
};
new VEHICLE_INFO[][VEHICLE_INFO_enum] =
{// Valid
{true, "Landstalker", 80.0, 159.00, 50000, 6, 0, 10 , 4 , true, true, true, 0, 0, true},
{true, "Bravura", 45.0, 148.00, 25000, 4, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Buffalo", 50.0, 188.00, 150000, 8, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Linerunner", 150.0, 110.00, 40000, 30, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Perrenial", 50.0, 134.00, 5000, 2, 0, 10 , 4 , true, true, true, 0, 0, true},
{true, "Sentinel", 45.0, 165.00, 12000, 2, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Dumper", 20.0, 111.00, 700000, 30, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Firetruck", 120.0, 149.00, 500000, 30, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Trashmaster", 80.0, 101.00, 300000, 30, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Stretch", 80.0, 159.00, 800000, 15, 0, 12 , 4 , true, true, true, 0, 0, true},
{true, "Manana", 40.0, 131.00, 8000, 2, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Infernus", 80.0, 223.00, 350000, 15, 0, 6 , 2 , true, true, true, 1, 20, true},
{true, "Voodoo", 45.0, 170.00, 25000, 6, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Pony", 60.0, 111.00, 30000, 6, 0, 12 , 4 , true, true, true, 0, 0, false},
{true, "Mule", 60.0, 106.00, 30000, 8, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Cheetah", 65.0, 194.00, 20000, 15, 0, 4 , 2 , true, true, true, 1, 15, true},
{true, "Ambulance", 120.0, 155.00, 600000, 30, 0, 0 , 4 , true, true, true, 0, 0, false},
{false, "Leviathan", 1.0, 1.00, 1500000, 30, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Moonbeam", 60.0, 116.00, 16000, 2, 0, 12 , 4 , true, true, true, 0, 0, false},
{true, "Esperanto", 40.0, 150.00, 20000, 3, 0, 5 , 2 , true, true, true, 0, 0, true},
{true, "Taxi", 60.0, 146.00, 80000, 8, 0, 8 , 4 , true, true, true, 0, 0, true}, // >>>> No.
{true, "Washington", 50.0, 155.00, 15000, 2, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Bobcat", 70.0, 141.00, 20000, 6, 0, 8 , 2 , true, true, true, 0, 0, true},
{true, "MrWhoopee", 60.0, 99.00, 30000, 15, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "BFInjection", 30.0, 136.00, 20000, 12, 0, 4 , 2 , true, true, false, 1, 20, true},
{false, "Hunter", 1.0, 1.00, 3000000, 30, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Premier", 70.0, 175.00, 21000, 3, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Enforcer", 120.0, 167.00, 200000, 16, 0, 0 , 4 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Securicar", 80.0, 158.00, 150000, 15, 0, 12 , 4 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Banshee", 65.0, 203.00, 20000, 15, 0, 4 , 2 , true, true, true, 1, 15, true},
{false, "Predator", 1.0, 1.00, 80000, 10, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Bus", 180.0, 131.00, 500000, 20, 0, 20 , 500 , true, true, true, 0, 0, false},
{true, "Rhino", 200.0, 95.00, 10000000, 100, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Barracks", 150.0, 111.00, 600000, 80, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Hotknife", 50.0, 168.00, 300000, 15, 0, 4 , 2 , true, true, true, 0, 0, true}, // >>>> No.
{false, "Trailer1", 1.0, 1.00, 50000, 5, 0, 0 , 0 , false, false, false, 0, 0, false}, // >>>> No.
{true, "Previon", 40.0, 150.00, 8000, 2, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Coach", 150.0, 159.00, 450000, 30, 0, 20 , 500 , true, true, true, 0, 0, false},
{true, "Cabbie", 80.0, 144.00, 54000, 5, 0, 6 , 4 , true, true, true, 0, 0, true}, // >>>> No.
{true, "Stallion", 60.0, 170.00, 15000, 2, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Rumpo", 60.0, 137.00, 20000, 5, 0, 12 , 4 , true, true, true, 0, 0, false},
{false, "RCBandit", 1.0, 1.00, 500, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Romero", 60.0, 140.00, 80000, 10, 0, 0 , 2 , true, true, true, 0, 0, true},
{true, "Packer", 150.0, 127.00, 500000, 15, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Monster", 80.0, 111.00, 20000, 20, 0, 20 , 2 , true, true, true, 2, 50, false},
{true, "Admiral", 65.0, 165.00, 5000, 1, 0, 4 , 4 , true, true, true, 0, 0, true},
{false, "Squalo", 1.0, 1.00, 20000, 12, 0, 0 , 1 , true, true, true, 2, 35, false},
{false, "Seasparrow", 1.0, 1.00, 500000, 16, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Pizzaboy", 20.0, 116.00, 1600, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Tram", 1.0, 1.00, 0, 0, 0, 0 , 0 , false, false, false, 0, 0, false}, // >>>> No.
{false, "Trailer2", 1.0, 1.00, 0, 0, 0, 0 , 0 , false, false, false, 0, 0, false}, // >>>> No.
{true, "Turismo", 80.0, 195.00, 20000, 15, 0, 6 , 2 , true, true, true, 1, 20, true},
{false, "Speeder", 1.0, 1.00, 1500000, 15, 0, 0 , 1 , true, true, true, 0, 0, false},
{false, "Reefer", 1.0, 1.00, 800000, 10, 0, 0 , 1 , true, true, true, 0, 0, false},
{false, "Tropic", 1.0, 1.00, 1600000, 15, 0, 0 , 1 , true, true, true, 2, 35, false},
{true, "Flatbed", 120.0, 159.00, 50000, 10, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Yankee", 50.0, 107.00, 80000, 8, 0, 15 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Caddy", 10.0, 96.00, 20000, 1, 0, 0 , 2 , true, true, false, 1, 30, false}, // >>>> No.
{true, "Solair", 80.0, 158.00, 20000, 3, 0, 8 , 4 , true, true, true, 0, 0, true},
{true, "BerkleyRCVan", 60.0, 137.00, 50000, 5, 0, 12 , 4 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Skimmer", 1.0, 1.00, 160000, 15, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "PCJ-600", 45.0, 167.00, 40000, 5, 0, 0 , 2 , true, true, false, 0, 0, false},
{true, "Faggio", 20.0, 107.00, 1500, 1, 0, 0 , 2 , true, true, false, 0, 0, false},
{true, "Freeway", 60.0, 142.00, 30000, 6, 0, 0 , 2 , true, true, false, 0, 0, false},
{false, "RCBaron", 1.0, 1.00, 500, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{false, "RCRaider", 1.0, 1.00, 500, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Glendale", 50.0, 148.00, 2000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Oceanic", 50.0, 141.00, 16000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Sanchez", 40.0, 143.00, 50000, 2, 0, 0 , 2 , true, true, false, 0, 0, false},
{false, "Sparrow", 1.0, 1.00, 500000, 30, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Patriot", 120.0, 158.00, 20000, 15, 0, 8 , 4 , true, true, true, 1, 30, true},
{true, "Quad", 25.0, 111.00, 20000, 1, 0, 0 , 2 , true, true, false, 1, 10, false},
{false, "Coastguard", 1.0, 1.00, 150000, 5, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Dinghy", 1.0, 1.00, 10000, 5, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Hermes", 80.0, 150.00, 9000, 2, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Sabre", 45.0, 174.00, 12000, 2, 0, 6 , 2 , true, true, true, 0, 0, true},
{false, "Rustler", 1.0, 1.00, 30000, 15, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "ZR-350", 60.0, 188.00, 120000, 3, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Walton", 50.0, 118.00, 3500, 1, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Regina", 80.0, 141.00, 10000, 5, 0, 10 , 4 , true, true, true, 0, 0, true},
{true, "Comet", 45.0, 186.00, 130000, 6, 0, 4 , 2 , true, true, true, 0, 0, true},
{false, "BMX", 1.0, 1.00, 150, 1, 0, 0 , 1 , false, true, true, 0, 0, false},
{true, "Burrito", 60.0, 158.00, 40000, 6, 0, 12 , 4 , true, true, true, 0, 0, false},
{true, "Camper", 50.0, 124.00, 60000, 9, 0, 10 , 3 , true, true, true, 0, 0, false},
{false, "Marquis", 1.0, 1.00, 6000000, 20, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Baggage", 20.0, 100.00, 1000, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Dozer", 25.0, 65.00, 50000, 5, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Maverick", 1.0, 1.00, 20000, 20, 0, 0 , 4 , true, true, true, 1, 60, false}, // >>>> No.
{false, "NewsChopper", 1.0, 1.00, 500000, 20, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Rancher", 90.0, 140.00, 60000, 6, 0, 10 , 2 , true, true, true, 0, 0, true},
{true, "FBIRancher", 90.0, 158.00, 80000, 8, 0, 12 , 4 , true, true, true, 0, 0, true}, // >>>> No.
{true, "Virgo", 45.0, 150.00, 6000, 1, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Greenwood", 45.0, 141.00, 12000, 2, 0, 4 , 4 , true, true, true, 0, 0, true},
{false, "Jetmax", 1.0, 1.00, 5000000, 20, 0, 0 , 1 , true, true, true, 1, 35, false},
{true, "Hotring", 80.0, 216.00, 20000, 15, 0, 0 , 2 , true, true, true, 1, 35, true},
{true, "Sandking", 60.0, 178.00, 20000, 15, 0, 0 , 2 , true, true, true, 1, 35, true},
{true, "Blista Compact", 60.0, 164.00, 6500, 1, 0, 4 , 2 , true, true, true, 0, 0, true},
{false, "Police Maverick", 1.0, 1.00, 600000, 20, 0, 0 , 4 , true, true, true, 0, 0, false},
{true, "Boxville", 60.0, 109.00, 80000, 12, 0, 12 , 4 , true, true, true, 0, 0, false},
{true, "Benson", 70.0, 124.00, 80000, 12, 0, 12 , 2 , true, true, true, 0, 0, false},
{true, "Mesa", 60.0, 141.00, 30000, 5, 0, 2 , 2 , true, true, true, 0, 0, true},
{false, "RCGoblin", 1.0, 1.00, 500, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "HotringRacer A", 80.0, 216.00, 20000, 20, 0, 0 , 2 , true, true, true, 1, 35, true},
{true, "HotringRacer B", 80.0, 216.00, 20000, 20, 0, 0 , 2 , true, true, true, 1, 35, true},
{true, "BloodringBanger", 40.0, 174.00, 80000, 15, 0, 0 , 2 , true, true, true, 1, 20, true},
{true, "Rancher", 80.0, 140.00, 60000, 6, 0, 10 , 2 , true, true, true, 0, 0, true},
{true, "SuperGT", 60.0, 180.00, 250000, 15, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Elegant", 65.0, 167.00, 5000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Journey", 90.0, 108.00, 40000, 4, 0, 12 , 2 , true, true, true, 0, 0, false},
{false, "Bike", 1.0, 1.00, 500, 1, 0, 0 , 1 , false, true, true, 0, 0, false}, // >>>> No.
{false, "MountainBike", 1.0, 1.00, 500, 1, 0, 0 , 1 , false, true, true, 0, 0, false}, // >>>> No.
{false, "Beagle", 1.0, 1.00, 6000000, 16, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Cropdust", 1.0, 1.00, 1200000, 12, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Stunt", 1.0, 1.00, 1200000, 12, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Tanker", 130.0, 121.00, 500000, 20, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Roadtrain", 150.0, 143.00, 500000, 20, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Nebula", 60.0, 158.00, 4000, 1, 0, 4 , 4 , true, true, true, 0, 0, true},
{true, "Majestic", 45.0, 158.00, 4000, 1, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Buccaneer", 50.0, 165.00, 4500, 1, 0, 4 , 2 , true, true, true, 0, 0, true},
{false, "Shamal", 1.0, 1.00, 20000000, 30, 0, 0 , 1 , true, true, true, 0, 0, false},
{false, "Hydra", 1.0, 1.00 , 50000000, 100, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "FCR-900", 50.0, 169.00, 60000, 6, 0, 0 , 2 , true, true, false, 1, 25, false},
{true, "NRG-500", 40.0, 190.00, 80000, 8, 0, 0 , 2 , true, true, false, 1, 30, false},
{true, "HPV1000", 60.0, 168.00, 50000, 8, 0, 0 , 2 , true, true, false, 0, 0, false}, // >>>> No.
{true, "CementTruck", 30.0, 131.00, 80000, 8, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "TowTruck", 60.0, 162.00, 30000, 3, 0, 4 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Fortune", 40.0, 159.00, 10000, 2, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Cadrona", 45.0, 150.00, 10000, 2, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "FBITruck", 80.0, 178.00, 150000, 15, 0, 12 , 2 , true, true, true, 0, 0, true}, // >>>> No.
{true, "Willard", 55.0, 150.00, 5000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Forklift", 10.0, 61.00, 1500, 1, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Tractor", 30.0, 71.00, 2000, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Combine", 20.0, 111.00, 10000, 2, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Feltzer", 50.0, 168.00, 13000, 3, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Remington", 60.0, 170.00, 15000, 3, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Slamvan", 60.0, 159.00, 20000, 8, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Blade", 62.0, 174.00, 30000, 4, 0, 6 , 2 , true, true, true, 0, 0, true},
{false, "Freight", 1.0, 1.00, 1000000, 100, 0, 0 , 500 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Streak", 1.0, 1.00, 1000000, 100, 0, 0 , 500 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Vortex", 20.0, 100.00, 2000, 20, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Vincent", 40.0, 150.00, 5000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Bullet", 60.0, 204.00, 20000, 15, 0, 4 , 2 , true, true, true, 1, 30, true},
{true, "Clover", 45.0, 165.00, 6000, 1, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Sadler", 60.0, 152.00, 5000, 1, 0, 8 , 2 , true, true, true, 0, 0, true},
{true, "FiretruckLA", 120.0, 149.00, 2000000, 20, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Hustler", 80.0, 148.00, 60000, 25, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "Intruder", 60.0, 150.00, 15000, 3, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Primo", 55.0, 144.00, 3000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{false, "Cargobob", 1.0, 1.00, 3000000, 20, 0, 0 , 2 , true, true, true, 0, 0, false},
{true, "Tampa", 60.0, 154.00, 12000, 2, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Sunrise", 60.0, 146.00, 9000, 2, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Merit", 55.0, 158.00, 8000, 2, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Utility", 60.0, 122.00, 30000, 3, 0, 6 , 2 , true, true, true, 0, 0, true}, // >>>> No.
{false, "Nevada", 1.0, 1.00, 2000000, 30, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Yosemite", 60.0, 145.00, 25000, 3, 0, 8 , 2 , true, true, true, 0, 0, true},
{true, "Windsor", 45.0, 159.00, 13500, 3, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "MonsterA", 45.0, 111.00, 20000, 20, 0, 20 , 2 , true, true, true, 1, 50, false},
{true, "MonsterB", 60.0, 111.00, 20000, 20, 0, 20 , 2 , true, true, true, 1, 50, false},
{true, "Uranus", 80.0, 157.00, 15000, 3, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Jester", 60.0, 179.00, 25000, 5, 0, 4 , 2 , true, true, true, 1, 15, true},
{true, "Sultan", 60.0, 170.00, 80000, 5, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Stratum", 60.0, 155.00, 29000, 4, 0, 8 , 4 , true, true, true, 0, 0, true},
{true, "Elegy", 60.0, 179.00, 20000, 6, 0, 6 , 2 , true, true, true, 1, 15, true},
{false, "Raindance", 1.0, 1.00, 500000, 15, 0, 0 , 2 , true, true, true, 0, 0, false},
{false, "RC Tiger", 1.0, 1.00, 500, 1, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Flash", 60.0, 166.00, 60000, 6, 0, 8 , 2 , true, true, true, 0, 0, true},
{true, "Tahoma", 40.0, 161.00, 15000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Savanna", 50.0, 174.00, 30000, 5, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Bandito", 30.0, 147.00, 30000, 5, 0, 0 , 1 , true, true, true, 0, 0, true},
{false, "FreightFlat", 1.0, 1.00, 5000000, 50, 0, 0 , 0 , true, true, true, 0, 0, false},
{false, "StreakCarriage", 1.0, 1.00, 5000000, 50, 0, 0 , 0 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Kart", 10.0, 94.00, 20000, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Mower", 15.0, 61.00, 1200, 1, 0, 0 , 1 , true, true, true, 0, 0, false},
{true, "Duneride", 80.0, 111.00, 1000000, 20, 0, 20 , 2 , true, true, true, 2, 50, false},
{true, "Sweeper", 20.0, 61.00, 4000, 1, 0, 2 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Broadway", 45.0, 159.00, 20000, 6, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Tornado", 40.0, 159.00, 6000, 1, 0, 4 , 2 , true, true, true, 0, 0, true},
{false, "AT-400", 1.0, 1.00, 10000000, 50, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "DFT-30", 80.0, 131.00, 100000, 10, 0, 4 , 2 , true, true, true, 0, 0, false},
{true, "Huntley", 80.0, 159.00, 60000, 6, 0, 8 , 4 , true, true, true, 0, 0, true},
{true, "Stafford", 60.0, 154.00, 90000, 2, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "BF-400", 35.0, 168.00, 13000, 2, 0, 0 , 2 , true, true, false, 0, 0, false},
{true, "Newsvan", 60.0, 137.00, 30000, 3, 0, 10 , 4 , false, false, false, 0, 0, false},
{true, "Tug", 15.0, 86.00, 2000, 1, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Trailer 3", 1.0, 1.00, 160000, 15, 0, 0 , 0 , true, true, true, 0, 0, false},
{true, "Emperor", 60.0, 154.00, 6000, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Wayfarer", 50.0, 158.00, 8000, 2, 0, 0 , 2 , true, true, false, 0, 0, false},
{true, "Euros", 50.0, 166.00, 20000, 3, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Hotdog", 60.0, 109.00, 30000, 5, 0, 12 , 2 , true, true, true, 0, 0, false},
{true, "Club", 65.0, 164.00, 20000, 10, 0, 6 , 2 , true, true, true, 0, 0, true},
{false, "FreightCarriage", 1.0, 1.00, 1000000, 100, 0, 0 , 0 , false, false, false, 0, 0, false}, // >>>> No.
{false, "Trailer3", 1.0, 1.00, 1000000, 100, 0, 0 , 0 , false, false, false, 0, 0, false}, // >>>> No.
{false, "Andromada", 1.0, 1.00, 1000000, 100, 0, 0 , 500 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Dodo", 1.0, 1.00, 750000, 12, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{false, "RCCam", 1.0, 1.00, 500, 1, 0, 0 , 2 , true, true, true, 0, 0, false}, // >>>> No.
{false, "Launch", 1.0, 1.00, 800000, 8, 0, 0 , 1 , true, true, true, 0, 0, false}, // >>>> No.
{true, "LSPD", 60.0, 177.00, 50000, 10, 0, 8 , 4 , true, true, true, 0, 0, true}, // >>>> No.
{true, "SFPD", 60.0, 177.00, 50000, 10, 0, 8 , 4 , true, true, true, 0, 0, true}, // >>>> No.
{true, "LVPD", 60.0, 177.00, 50000, 10, 0, 8 , 4 , true, true, true, 0, 0, true},
{true, "PoliceRanger", 90.0, 159.00, 70000, 10, 0, 12 , 2 , true, true, true, 0, 0, true}, // // >>>> No. >>>> No.
{true, "Picador", 40.0, 152.00, 4500, 1, 0, 6 , 2 , true, true, true, 0, 0, true},
{true, "S.W.A.T.Van", 30.0, 111.00, 4000000, 50, 0, 0 , 2 , true, true, true, 0, 0, true}, // >>>> No.
{true, "Alpha", 60.0, 170.00, 50000, 8, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Phoenix", 60.0, 172.00, 35000, 10, 0, 4 , 2 , true, true, true, 0, 0, true},
{true, "Glendale", 30.0, 148.00, 1500, 1, 0, 6 , 4 , true, true, true, 0, 0, true},
{true, "Sadler", 40.0, 152.00, 1600, 1, 0, 6 , 2 , true, true, true, 0, 0, true},
{false, "LuggageTrailerA", 1.0, 1.00, 500, 1, 0, 0 , 0 , true, true, true, 0, 0, false},
{false, "LuggageTrailerB", 1.0, 1.00, 500, 1, 0, 0 , 0 , true, true, true, 0, 0, false}, // >>>> No.
{false, "StairTrailer", 1.0, 1.00, 500, 1, 0, 0 , 0 , true, true, true, 0, 0, false}, // >>>> No.
{true, "Boxville", 90.0, 108.00, 60000, 6, 0, 15 , 4 , true, true, true, 0, 0, false}, // >>>> No.
{false, "FarmPlow", 1.0, 1.00, 3000, 1, 0, 0 , 0 , true, true, true, 0, 0, false}, // >>>> No.
{false, "UtilityTrailer", 1.0, 1.00, 1000, 1, 0, 0 , 0 , true, true, true, 0, 0, false} // >>>> No.
};
#define MAX_BOOT_SLOTS 20
enum
{
BOOT_TYPE_WEAPON
};
enum enum_VEHICLE_BOOT
{
bool:vehicle_boot_VALID,
vehicle_boot_OBJECT_ID,
vehicle_boot_TYPE,
vehicle_boot_INT,
vehicle_boot_INT_EXTRA
};
new VEHICLE_BOOT[MAX_VEHICLES][MAX_BOOT_SLOTS][enum_VEHICLE_BOOT];
enum SELL_INFO_VEHICLES_Enum
{
sel_info_vehicle_MODELID,
Float:sell_info_SPAWN_X,
Float:sell_info_SPAWN_Y,
Float:sell_info_SPAWN_Z,
Float:sell_info_SPAWN_ANGLE,
sell_info_COLOR_1,
sell_info_COLOR_2,
sell_info_SHOP
};
new SELL_INFO_VEHICLES[][SELL_INFO_VEHICLES_Enum] =
{
{400, -1971.730834, 305.717071, 35.281467, 112.761856, -1, -1, 0}, //conce0
{489, -1972.303588, 299.899291, 35.315319, 113.739143, -1, -1, 0}, //conce0
{500, -1989.106811, 267.932830, 35.276290, 267.933868, -1, -1, 0}, //conce0
{516, -1988.849243, 262.505828, 35.014682, 273.633972, -1, -1, 0}, //conce0
{517, -1989.152587, 257.527374, 35.020854, 278.511993, -1, -1, 0}, //0
{518, -1990.650756, 252.367614, 34.853424, 260.343750, -1, -1, 0}, //0
{526, -1991.783203, 247.102294, 34.938541, 263.152526, -1, -1, 0}, //0
{529, -1992.195556, 241.864547, 34.804782, 265.900787, -1, -1, 0}, //0
{533, -1970.909790, 271.824432, 34.874591, 92.208198, -1, -1, 0}, //0
{534, -1971.686889, 266.768585, 34.897808, 90.052833, -1, -1, 0}, //0
{535, -1972.078857, 261.530334, 34.940402, 91.687599, -1, -1, 0}, //0
{536, -1971.535644, 255.783843, 34.909259, 90.030273, -1, -1, 0}, //0
{540, -1985.110107, 303.989593, 35.031871, 247.498382, -1, -1, 0}, //0
{543, -1959.895751, 272.834747, 35.330417, 315.005645, -1, -1, 0}, //0
{546, -1947.004760, 265.553222, 35.208316, 44.999832, -1, -1, 0}, //0
{547, -1957.724731, 261.617736, 35.244117, 134.999298, -1, -1, 0}, //0
{549, -1950.561035, 258.919067, 35.165855, 23.361270, -1, -1, 0}, //0
{551, -1961.752929, 284.531127, 35.270526, 0.696665, -1, -1, 0}, //0
{554, -1946.718139, 257.937591, 41.083919, 45.030506, -1, -1, 0}, //0
{555, -1955.544677, 257.741241, 40.755210, 315.004882, -1, -1, 0}, //0
{558, -1945.867919, 273.318969, 40.666416, 135.659255, -1, -1, 0}, //0
{559, -1946.407836, 264.562194, 40.705158, 70.021125, -1, -1, 0}, //0
{560, -1953.854003, 295.461822, 40.762950, 141.442657, -1, -1, 0}, //0
{561, -1954.960693, 302.385498, 40.873092, 45.000858, -1, -1, 0}, //0
{562, -1955.735351, 274.163513, 40.699062, 224.775680, -1, -1, 0}, //0
{565, 561.566101, -1290.956542, 16.871730, 13.598201, -1, -1, 1}, //1
{566, 555.651794, -1290.101562, 17.030550, 12.250467, -1, -1, 1}, //1
{567, 548.681701, -1288.398803, 17.121070, 2.627753, -1, -1, 1}, //1
{575, 543.408569, -1290.018676, 16.844970, 12.805674, -1, -1, 1}, //1
{576, 537.712585, -1289.785278, 16.853311, 8.072924, -1, -1, 1}, //1
{579, 531.610229, -1289.627563, 17.179222, 0.727972, -1, -1, 1}, //1
{580, 524.575805, -1290.402587, 17.038362, 347.873016, -1, -1, 1}, //1
{585, 519.242980, -1287.057373, 16.828090, 306.424560, -1, -1, 1}, //1
{587, 527.172241, -1282.828613, 16.988870, 225.000015, -1, -1, 1}, //1
{589, 531.867553, -1279.575195, 16.918565, 225.000091, -1, -1, 1}, //1
{600, 536.016235, -1276.898681, 16.963094, 225.002395, -1, -1, 1}, //1
{602, 539.315979, -1273.561767, 17.073772, 224.999908, -1, -1, 1}, //1
{603, 543.021911, -1270.594482, 17.126434, 224.998825, -1, -1, 1}, //1
{402, 547.388854, -1268.065185, 17.089252, 225.000061, -1, -1, 1}, //1
{405, 550.830261, -1264.989990, 17.167030, 225.000000, -1, -1, 1}, //1
{604, 2123.362304, -1144.851196, 24.472566, 314.818267, -1, -1, 2}, //2
{605, 2120.166748, -1141.430053, 24.722545, 314.695739, -1, -1, 2}, //2
{542, 2120.096923, -1136.088378, 24.996570, 314.858062, -1, -1, 2}, //2
{462, 2126.857177, -1147.089843, 24.115188, 314.773010, -1, -1, 2}, //2
{543, 2132.541748, -1142.541259, 24.895196, 44.777957, -1, -1, 2}, //2
{529, 2135.447509, -1140.396362, 24.948331, 45.030994, -1, -1, 2}, //2
{401, 1730.930053, 1887.108520, 10.599695, 134.999694, -1, -1, 3}, //
{404, 1731.381225, 1892.453125, 10.569231, 134.707473, -1, -1, 3}, //
{405, 1731.109252, 1898.369384, 10.702906, 135.000000, -1, -1, 3}, //
{410, 1731.451293, 1903.748901, 10.504331, 135.005813, -1, -1, 3}, //
{412, 1730.241699, 1908.477050, 10.707293, 134.881576, -1, -1, 3}, //
{413, 1730.819458, 1914.079833, 10.902223, 134.658706, -1, -1, 3}, //
{418, 1730.897949, 1919.471923, 10.925701, 135.000335, -1, -1, 3}, //
{419, 1730.598510, 1924.523437, 10.644100, 135.000000, -1, -1, 3}, //
{421, 1730.842407, 1929.510375, 10.778207, 134.998794, -1, -1, 3}, //
{422, 1731.021850, 1934.202270, 10.808994, 135.312362, -1, -1, 3}, //
{426, 1731.136352, 1938.637451, 10.596670, 134.887939, -1, -1, 3}, //
{426, 1730.754760, 1943.268554, 10.570414, 134.479446, -1, -1, 3}, //
{439, 1731.084106, 1948.810180, 10.755937, 134.970794, -1, -1, 3}, //
{445, 1730.763916, 1954.217285, 10.718680, 134.999984, -1, -1, 3}, //
{458, 1731.066528, 1959.513549, 10.657438, 136.287368, -1, -1, 3}, //
{459, 1731.444946, 1964.863403, 10.899006, 134.975570, -1, -1, 3}, //
{466, 1730.831176, 1969.622192, 10.593549, 134.999984, -1, -1, 3}, //
{467, 1730.754882, 1975.104492, 10.608223, 134.999969, -1, -1, 3}, //
{474, 1730.852539, 1980.575927, 10.568473, 135.129379, -1, -1, 3}, //
{475, 1730.986572, 1986.015014, 10.660503, 134.965286, -1, -1, 3}, //
{477, 1731.019409, 1990.834350, 10.559190, 134.795349, -1, -1, 3}, //
{478, 1731.501220, 1996.037841, 10.857707, 134.984298, -1, -1, 3}, //
{479, 1731.119262, 2000.719360, 10.598874, 134.999588, -1, -1, 3}, //
{480, 1731.495361, 2005.884155, 10.634652, 134.999740, -1, -1, 3}, //
{482, 1731.285766, 2010.759765, 10.950078, 135.215301, -1, -1, 3}, //
{483, 1730.935058, 2014.496948, 10.826995, 135.018432, -1, -1, 3}, //
{489, 1731.131103, 2019.822509, 10.965262, 134.999526, -1, -1, 3}, //
{491, 1742.855224, 1886.187866, 10.607666, 224.881958, -1, -1, 3}, //
{492, 1742.420410, 1891.042602, 10.625684, 225.000015, -1, -1, 3}, //
{496, 1741.725830, 1895.996459, 10.518464, 224.999679, -1, -1, 3}, //
{500, 1741.789916, 1901.220703, 10.979518, 224.999908, -1, -1, 3}, //
{507, 1742.658081, 1905.751464, 10.650567, 224.999938, -1, -1, 3}, //
{461, 1745.890258, 1853.801513, 10.397463, 44.999942, -1, -1, 3}, //
{462, 1741.982177, 1853.458618, 10.424824, 45.022659, -1, -1, 3}, //
{463, 1738.716674, 1853.531250, 10.366888, 45.000011, -1, -1, 3}, //
{468, 1735.504272, 1853.494750, 10.499835, 44.996749, -1, -1, 3}, //
{471, 1732.698120, 1853.572998, 10.344942, 44.999938, -1, -1, 3}, //
{521, 1729.782714, 1853.793823, 10.406937, 44.999969, -1, -1, 3}, //
{522, 1727.729858, 1853.685791, 10.398012, 44.997669, -1, -1, 3}, //
{581, 1725.653930, 1853.688842, 10.425397, 45.000293, -1, -1, 3}, //
{586, 1722.802734, 1853.941406, 10.325091, 45.006359, -1, -1, 3}, //
{470, 1742.820800, 1913.142211, 10.816078, 229.028472, -1, -1, 3},
{444, 1742.383178, 1877.171997, 11.191605, 207.159729, -1, -1, 3},
{556, 1730.099609, 1877.612792, 11.195281, 145.682418, -1, -1, 3},
{568, 1741.999877, 1919.793823, 10.684306, 230.327041, -1, -1, 3},
{571, 1748.815063, 1854.531616, 10.108824, 43.566219 , -1, -1, 3},
{531, 1742.570190, 1923.476196, 10.785881, 234.443817, -1, -1, 3},
{409, 1736.970092, 2030.637451, 10.619542, 359.768463, -1, -1, 3},
{573, 1736.567016, 1873.478393, 11.484094, 181.366882, -1, -1, 3},
{402, -1660.500610, 1214.428955, 7.081802, 245.781250, -1, -1, 4}, //
{411, -1659.630004, 1216.934814, 13.398953, 332.907165, -1, -1, 4}, //
{415, -1653.029663, 1210.681518, 13.444266, 253.155578, -1, -1, 4}, //
{429, -1669.283081, 1206.197265, 13.351553, 294.647796, -1, -1, 4}, //
{434, -1665.829223, 1222.459350, 13.684193, 224.999526, -1, -1, 4}, //
{451, -1666.966186, 1205.829345, 20.861524, 324.716613, -1, -1, 4}, //
{506, -1658.944458, 1206.433837, 20.860774, 17.348609, -1, -1, 4}, //
{541, -1649.423461, 1206.491821, 20.775476, 133.478042, -1, -1, 4}, //
{545, -1656.527587, 1216.405029, 21.003622, 44.999988, -1, -1, 4}, //
{446, -2231.2676, 2451.4797, 0.0119, 228.6364, -1, -1, 5},
{452, -2241.1306, 2440.2146, 0.0119, 226.4393, -1, -1, 5},
{453, -2250.6514, 2428.3452, 0.0119, 226.4393, -1, -1, 5},
{454, -2262.2539, 2419.0127, 0.0119, 226.4393, -1, -1, 5},
{454, -2202.1697, 2421.1807, 0.0119, 45.7924, -1, -1, 5},
{472, -2234.6467, 2394.7185, 0.2970, 42.8398, -1, -1, 5},
{484, -2213.1201, 2411.4111, 0.0119, 46.0592, -1, -1, 5},
{473, -2237.2305, 2390.8669, 0.2970, 42.8398, -1, -1, 5},
{493, -2223.5603, 2400.2893, -0.0596, 46.0592, -1, -1, 5},
{595, -2245.3577, 2433.8679, 0.5854, 226.4393, -1, -1, 5}
};
new Float:SELL_VEHICLES_SHOPS_SPAWN[][] =
{
{-1920.1965, 302.7697, 40.5643, -90.0000},
{563.774475, -1273.510986, 16.867170, 12.636687},
{2133.863037, -1129.836791, 25.270145, 71.406616},
{1677.705078, 1790.098144, 10.445111, 89.955596},
{-1645.245361, 1217.047973, 6.732273, 224.517120},
{-2258.0054, 2477.0315, 0.2512, 313.4971} //barcos
};
enum SELL_VEHICLES_Enum
{
bool:sell_vehicle_VALID,
sell_vehicle_SHOP,
sell_vehicle_PRICE,
sell_vehicle_LEVEL,
sell_vehicle_EXTRA,
sell_vehicle_VIP_LEVEL,
Text3D:sell_vehicle_LABEL_ID
};
new SELL_VEHICLES[MAX_VEHICLES][SELL_VEHICLES_Enum];
/* RESULT_YOUTUBE */
#define MAX_RESULTS 10
enum yt_result
{
videoID[11 + 1],
yt_title[100 + 1]
};
new RESULT_YOUTUBE[MAX_RESULTS][yt_result],
PLAYER_DIALOG_MP3_RESULT[MAX_PLAYERS][MAX_RESULTS][yt_result];
// AGRICULTOR
enum
{
PLANT_TYPE_MEDICINE, // VIDA
PLANT_TYPE_CANNABIS, // YOKSETIOXD
PLANT_TYPE_CRACK //CHALECO
}
enum seed_info_enum
{
seed_info_TYPE,
seed_info_PLANT_TYPE,
seed_info_EXP,
seed_info_NAME[24],
seed_info_PRICE
};
new seed_info[][seed_info_enum] =
{
{TYPE_LEGAL, PLANT_TYPE_MEDICINE, 0, "Poliskap", 50},
{TYPE_ILLEGAL, PLANT_TYPE_CANNABIS, 100, "Marihuana", 150},
{TYPE_ILLEGAL, PLANT_TYPE_CRACK, 200, "Coca", 300}
};
enum plant_info_enum
{
plant_info_SEEDS,
plant_info_NAME[24]
};
new plant_info[][plant_info_enum] =
{
{2, "Medicamento"},
{4, "Marihuana"},
{10, "Crack"}
};
#define MAX_PLANTS 500
enum PLANTS_ENUM
{
bool:plant_VALID,
bool:plant_GROWING,
bool:plant_INVISIBLE,
Float:plant_GROWING_PROGRESS,
plant_TYPE,
plant_PLANTED_BY_ACCOUNT_ID,
plant_PLANTED_BY_NAME[24],
plant_OBJECT_ID,
Text3D:plant_LABEL_ID,
plant_EXPIRE_TIME,
plant_TIMER
};
new PLANTS[MAX_PLANTS][PLANTS_ENUM];
enum
{
OBJECT_TYPE_NONE,
OBJECT_TYPE_PLANT
};
/* SYSTEM - GPS */
enum
{
CHECKPOINT_TYPE_NONE,
CHECKPOINT_TYPE_GPS,
CHECKPOINT_TYPE_UNLOAD_TRUCK,
CHECKPOINT_TYPE_FINISH_TRUCK,
CHECKPOINT_TYPE_HARVEST,
CHECKPOINT_TYPE_TRASH,
CHECKPOINT_TYPE_FINISH_TRASH,
CHECKPOINT_TYPE_LUMBERJACK,
CHECKPOINT_TYPE_PIZZA_DEL,
CHECKPOINT_TYPE_PIZZA_FINISH
};
#define MAX_PLAYER_GPS_SAVES 10
#define MAX_LISTITEMS 35
enum Player_GPS_Enum
{
player_gps_VALID,
player_gps_ID,
player_gps_NAME[24],
Float:player_gps_X,
Float:player_gps_Y,
Float:player_gps_Z,
player_gps_WORLD,
player_gps_INTERIOR
};
new PLAYER_GPS[MAX_PLAYERS][MAX_PLAYER_GPS_SAVES][Player_GPS_Enum];
/* SYSTEM - PLAYER OBJECTS */
enum Player_Objects_Enum
{
po_GPS,
po_MP3,
po_PHONE_RESOLVER
};
new PLAYER_OBJECT[MAX_PLAYERS][Player_Objects_Enum];
/* SYSTEM - PHONE */
enum
{
CALL_GAME_STATE_NONE,
CALL_STATE_WAITING_RESPONSE,
CALL_STATE_INCOMING_CALL,
CALL_STATE_ESTABLISHED
};
enum
{
PHONE_STATE_ON,
PHONE_STATE_OFF
};
enum Phone_Info_Enum
{
player_phone_VALID,
player_phone_NUMBER,
player_phone_STATE,
player_phone_VISIBLE_NUMBER // para elegir si quieres aparecer en la guia o no
};
new PLAYER_PHONE[MAX_PLAYERS][Phone_Info_Enum]; //PPI (PlayerPhoneInfo)
#define MAX_PHONE_CONTACTS 20
enum Phone_Book_Enum
{
phone_book_contact_VALID,
phone_book_contact_ID,
phone_book_contact_NAME[24],
phone_book_contact_PHONE_NUMBER
};
new PLAYER_PHONE_BOOK[MAX_PLAYERS][MAX_PHONE_CONTACTS][Phone_Book_Enum]; //PB = PhoneBook
enum
{
SEX_MALE,
SEX_FEMALE
};
enum e_ZONEINFO
{
z_Name[45],
Float:z_MinX,
Float:z_MinY,
Float:z_MinZ,
Float:z_MaxX,
Float:z_MaxY,
Float:z_MaxZ
};
new g_Zones[][e_ZONEINFO] =
{
// Indoor zones
{"Caligula's Palace", 2087.30, 1543.20, 900.00, 2437.30, 1703.20, 1200.90},
{"The Four Dragons Casino", 1817.30, 863.20, 900.00, 2027.30, 1083.20, 1200.90},
// Outdoor Zones list by mabako, from gta client files
{"The Big Ear", -410.00, 1403.30, -3.00, -137.90, 1681.20, 200.00},
{"Aldea Malvada", -1372.10, 2498.50, 0.00, -1277.50, 2615.30, 200.00},
{"Angel Pine", -2324.90, -2584.20, -6.10, -1964.20, -2212.10, 200.00},
{"Arco del Oeste", -901.10, 2221.80, 0.00, -592.00, 2571.90, 200.00},
{"Avispa Country Club", -2646.40, -355.40, 0.00, -2270.00, -222.50, 200.00},
{"Avispa Country Club", -2831.80, -430.20, -6.10, -2646.40, -222.50, 200.00},
{"Avispa Country Club", -2361.50, -417.10, 0.00, -2270.00, -355.40, 200.00},
{"Avispa Country Club", -2667.80, -302.10, -28.80, -2646.40, -262.30, 71.10},
{"Avispa Country Club", -2470.00, -355.40, 0.00, -2270.00, -318.40, 46.10},
{"Avispa Country Club", -2550.00, -355.40, 0.00, -2470.00, -318.40, 39.70},
{"Back o Beyond", -1166.90, -2641.10, 0.00, -321.70, -1856.00, 200.00},
{"Battery Point", -2741.00, 1268.40, -4.50, -2533.00, 1490.40, 200.00},
{"Bayside", -2741.00, 2175.10, 0.00, -2353.10, 2722.70, 200.00},
{"Bayside Marina", -2353.10, 2275.70, 0.00, -2153.10, 2475.70, 200.00},
{"Beacon Hill", -399.60, -1075.50, -1.40, -319.00, -977.50, 198.50},
{"Blackfield", 964.30, 1203.20, -89.00, 1197.30, 1403.20, 110.90},
{"Blackfield", 964.30, 1403.20, -89.00, 1197.30, 1726.20, 110.90},
{"Blackfield Chapel", 1375.60, 596.30, -89.00, 1558.00, 823.20, 110.90},
{"Blackfield Chapel", 1325.60, 596.30, -89.00, 1375.60, 795.00, 110.90},
{"Blackfield Intersection", 1197.30, 1044.60, -89.00, 1277.00, 1163.30, 110.90},
{"Blackfield Intersection", 1166.50, 795.00, -89.00, 1375.60, 1044.60, 110.90},
{"Blackfield Intersection", 1277.00, 1044.60, -89.00, 1315.30, 1087.60, 110.90},
{"Blackfield Intersection", 1375.60, 823.20, -89.00, 1457.30, 919.40, 110.90},
{"Blueberry", 104.50, -220.10, 2.30, 349.60, 152.20, 200.00},
{"Blueberry", 19.60, -404.10, 3.80, 349.60, -220.10, 200.00},
{"Blueberry Acres", -319.60, -220.10, 0.00, 104.50, 293.30, 200.00},
{"Caligula's Palace", 2087.30, 1543.20, -89.00, 2437.30, 1703.20, 110.90},
{"Caligula's Palace", 2137.40, 1703.20, -89.00, 2437.30, 1783.20, 110.90},
{"Calton Heights", -2274.10, 744.10, -6.10, -1982.30, 1358.90, 200.00},
{"Chinatown", -2274.10, 578.30, -7.60, -2078.60, 744.10, 200.00},
{"City Hall", -2867.80, 277.40, -9.10, -2593.40, 458.40, 200.00},
{"Come-A-Lot", 2087.30, 943.20, -89.00, 2623.10, 1203.20, 110.90},
{"Commerce", 1323.90, -1842.20, -89.00, 1701.90, -1722.20, 110.90},
{"Commerce", 1323.90, -1722.20, -89.00, 1440.90, -1577.50, 110.90},
{"Commerce", 1370.80, -1577.50, -89.00, 1463.90, -1384.90, 110.90},
{"Commerce", 1463.90, -1577.50, -89.00, 1667.90, -1430.80, 110.90},
{"Commerce", 1583.50, -1722.20, -89.00, 1758.90, -1577.50, 110.90},
{"Commerce", 1667.90, -1577.50, -89.00, 1812.60, -1430.80, 110.90},
{"Conference Center", 1046.10, -1804.20, -89.00, 1323.90, -1722.20, 110.90},
{"Conference Center", 1073.20, -1842.20, -89.00, 1323.90, -1804.20, 110.90},
{"Cranberry Station", -2007.80, 56.30, 0.00, -1922.00, 224.70, 100.00},
{"Creek", 2749.90, 1937.20, -89.00, 2921.60, 2669.70, 110.90},
{"Dillimore", 580.70, -674.80, -9.50, 861.00, -404.70, 200.00},
{"Doherty", -2270.00, -324.10, -0.00, -1794.90, -222.50, 200.00},
{"Doherty", -2173.00, -222.50, -0.00, -1794.90, 265.20, 200.00},
{"Downtown", -1982.30, 744.10, -6.10, -1871.70, 1274.20, 200.00},
{"Downtown", -1871.70, 1176.40, -4.50, -1620.30, 1274.20, 200.00},
{"Downtown", -1700.00, 744.20, -6.10, -1580.00, 1176.50, 200.00},
{"Downtown", -1580.00, 744.20, -6.10, -1499.80, 1025.90, 200.00},
{"Downtown", -2078.60, 578.30, -7.60, -1499.80, 744.20, 200.00},
{"Downtown", -1993.20, 265.20, -9.10, -1794.90, 578.30, 200.00},
{"Downtown Los Santos", 1463.90, -1430.80, -89.00, 1724.70, -1290.80, 110.90},
{"Downtown Los Santos", 1724.70, -1430.80, -89.00, 1812.60, -1250.90, 110.90},
{"Downtown Los Santos", 1463.90, -1290.80, -89.00, 1724.70, -1150.80, 110.90},
{"Downtown Los Santos", 1370.80, -1384.90, -89.00, 1463.90, -1170.80, 110.90},
{"Downtown Los Santos", 1724.70, -1250.90, -89.00, 1812.60, -1150.80, 110.90},
{"Downtown Los Santos", 1370.80, -1170.80, -89.00, 1463.90, -1130.80, 110.90},
{"Downtown Los Santos", 1378.30, -1130.80, -89.00, 1463.90, -1026.30, 110.90},
{"Downtown Los Santos", 1391.00, -1026.30, -89.00, 1463.90, -926.90, 110.90},
{"Downtown Los Santos", 1507.50, -1385.20, 110.90, 1582.50, -1325.30, 335.90},
{"East Beach", 2632.80, -1852.80, -89.00, 2959.30, -1668.10, 110.90},
{"East Beach", 2632.80, -1668.10, -89.00, 2747.70, -1393.40, 110.90},
{"East Beach", 2747.70, -1668.10, -89.00, 2959.30, -1498.60, 110.90},
{"East Beach", 2747.70, -1498.60, -89.00, 2959.30, -1120.00, 110.90},
{"East Los Santos", 2421.00, -1628.50, -89.00, 2632.80, -1454.30, 110.90},
{"East Los Santos", 2222.50, -1628.50, -89.00, 2421.00, -1494.00, 110.90},
{"East Los Santos", 2266.20, -1494.00, -89.00, 2381.60, -1372.00, 110.90},
{"East Los Santos", 2381.60, -1494.00, -89.00, 2421.00, -1454.30, 110.90},
{"East Los Santos", 2281.40, -1372.00, -89.00, 2381.60, -1135.00, 110.90},
{"East Los Santos", 2381.60, -1454.30, -89.00, 2462.10, -1135.00, 110.90},
{"East Los Santos", 2462.10, -1454.30, -89.00, 2581.70, -1135.00, 110.90},
{"Easter Basin", -1794.90, 249.90, -9.10, -1242.90, 578.30, 200.00},
{"Easter Basin", -1794.90, -50.00, -0.00, -1499.80, 249.90, 200.00},
{"Easter Bay Airport", -1499.80, -50.00, -0.00, -1242.90, 249.90, 200.00},
{"Easter Bay Airport", -1794.90, -730.10, -3.00, -1213.90, -50.00, 200.00},
{"Easter Bay Airport", -1213.90, -730.10, 0.00, -1132.80, -50.00, 200.00},
{"Easter Bay Airport", -1242.90, -50.00, 0.00, -1213.90, 578.30, 200.00},
{"Easter Bay Airport", -1213.90, -50.00, -4.50, -947.90, 578.30, 200.00},
{"Easter Bay Airport", -1315.40, -405.30, 15.40, -1264.40, -209.50, 25.40},
{"Easter Bay Airport", -1354.30, -287.30, 15.40, -1315.40, -209.50, 25.40},
{"Easter Bay Airport", -1490.30, -209.50, 15.40, -1264.40, -148.30, 25.40},
{"Easter Bay Chemicals", -1132.80, -768.00, 0.00, -956.40, -578.10, 200.00},
{"Easter Bay Chemicals", -1132.80, -787.30, 0.00, -956.40, -768.00, 200.00},
{"El Castillo del Diablo", -464.50, 2217.60, 0.00, -208.50, 2580.30, 200.00},
{"El Castillo del Diablo", -208.50, 2123.00, -7.60, 114.00, 2337.10, 200.00},
{"El Castillo del Diablo", -208.50, 2337.10, 0.00, 8.40, 2487.10, 200.00},
{"El Corona", 1812.60, -2179.20, -89.00, 1970.60, -1852.80, 110.90},
{"El Corona", 1692.60, -2179.20, -89.00, 1812.60, -1842.20, 110.90},
{"El Quebrados", -1645.20, 2498.50, 0.00, -1372.10, 2777.80, 200.00},
{"Esplanade East", -1620.30, 1176.50, -4.50, -1580.00, 1274.20, 200.00},
{"Esplanade East", -1580.00, 1025.90, -6.10, -1499.80, 1274.20, 200.00},
{"Esplanade East", -1499.80, 578.30, -79.60, -1339.80, 1274.20, 20.30},
{"Esplanade North", -2533.00, 1358.90, -4.50, -1996.60, 1501.20, 200.00},
{"Esplanade North", -1996.60, 1358.90, -4.50, -1524.20, 1592.50, 200.00},
{"Esplanade North", -1982.30, 1274.20, -4.50, -1524.20, 1358.90, 200.00},
{"Fallen Tree", -792.20, -698.50, -5.30, -452.40, -380.00, 200.00},
{"Fallow Bridge", 434.30, 366.50, 0.00, 603.00, 555.60, 200.00},
{"Fern Ridge", 508.10, -139.20, 0.00, 1306.60, 119.50, 200.00},
{"Financial", -1871.70, 744.10, -6.10, -1701.30, 1176.40, 300.00},
{"Fisher's Lagoon", 1916.90, -233.30, -100.00, 2131.70, 13.80, 200.00},
{"Flint Intersection", -187.70, -1596.70, -89.00, 17.00, -1276.60, 110.90},
{"Flint Range", -594.10, -1648.50, 0.00, -187.70, -1276.60, 200.00},
{"Fort Carson", -376.20, 826.30, -3.00, 123.70, 1220.40, 200.00},
{"Foster Valley", -2270.00, -430.20, -0.00, -2178.60, -324.10, 200.00},
{"Foster Valley", -2178.60, -599.80, -0.00, -1794.90, -324.10, 200.00},
{"Foster Valley", -2178.60, -1115.50, 0.00, -1794.90, -599.80, 200.00},
{"Foster Valley", -2178.60, -1250.90, 0.00, -1794.90, -1115.50, 200.00},
{"Frederick Bridge", 2759.20, 296.50, 0.00, 2774.20, 594.70, 200.00},
{"Gant Bridge", -2741.40, 1659.60, -6.10, -2616.40, 2175.10, 200.00},
{"Gant Bridge", -2741.00, 1490.40, -6.10, -2616.40, 1659.60, 200.00},
{"Ganton", 2222.50, -1852.80, -89.00, 2632.80, -1722.30, 110.90},
{"Ganton", 2222.50, -1722.30, -89.00, 2632.80, -1628.50, 110.90},
{"Garcia", -2411.20, -222.50, -0.00, -2173.00, 265.20, 200.00},
{"Garcia", -2395.10, -222.50, -5.30, -2354.00, -204.70, 200.00},
{"Garver Bridge", -1339.80, 828.10, -89.00, -1213.90, 1057.00, 110.90},
{"Garver Bridge", -1213.90, 950.00, -89.00, -1087.90, 1178.90, 110.90},
{"Garver Bridge", -1499.80, 696.40, -179.60, -1339.80, 925.30, 20.30},
{"Glen Park", 1812.60, -1449.60, -89.00, 1996.90, -1350.70, 110.90},
{"Glen Park", 1812.60, -1100.80, -89.00, 1994.30, -973.30, 110.90},
{"Glen Park", 1812.60, -1350.70, -89.00, 2056.80, -1100.80, 110.90},
{"Green Palms", 176.50, 1305.40, -3.00, 338.60, 1520.70, 200.00},
{"Greenglass College", 964.30, 1044.60, -89.00, 1197.30, 1203.20, 110.90},
{"Greenglass College", 964.30, 930.80, -89.00, 1166.50, 1044.60, 110.90},
{"Hampton Barns", 603.00, 264.30, 0.00, 761.90, 366.50, 200.00},
{"Hankypanky Point", 2576.90, 62.10, 0.00, 2759.20, 385.50, 200.00},
{"Harry Gold Parkway", 1777.30, 863.20, -89.00, 1817.30, 2342.80, 110.90},
{"Hashbury", -2593.40, -222.50, -0.00, -2411.20, 54.70, 200.00},
{"Hilltop Farm", 967.30, -450.30, -3.00, 1176.70, -217.90, 200.00},
{"Hunter Quarry", 337.20, 710.80, -115.20, 860.50, 1031.70, 203.70},
{"Idlewood", 1812.60, -1852.80, -89.00, 1971.60, -1742.30, 110.90},
{"Idlewood", 1812.60, -1742.30, -89.00, 1951.60, -1602.30, 110.90},
{"Idlewood", 1951.60, -1742.30, -89.00, 2124.60, -1602.30, 110.90},
{"Idlewood", 1812.60, -1602.30, -89.00, 2124.60, -1449.60, 110.90},
{"Idlewood", 2124.60, -1742.30, -89.00, 2222.50, -1494.00, 110.90},
{"Idlewood", 1971.60, -1852.80, -89.00, 2222.50, -1742.30, 110.90},
{"Jefferson", 1996.90, -1449.60, -89.00, 2056.80, -1350.70, 110.90},
{"Jefferson", 2124.60, -1494.00, -89.00, 2266.20, -1449.60, 110.90},
{"Jefferson", 2056.80, -1372.00, -89.00, 2281.40, -1210.70, 110.90},
{"Jefferson", 2056.80, -1210.70, -89.00, 2185.30, -1126.30, 110.90},
{"Jefferson", 2185.30, -1210.70, -89.00, 2281.40, -1154.50, 110.90},
{"Jefferson", 2056.80, -1449.60, -89.00, 2266.20, -1372.00, 110.90},
{"Julius Thruway East", 2623.10, 943.20, -89.00, 2749.90, 1055.90, 110.90},
{"Julius Thruway East", 2685.10, 1055.90, -89.00, 2749.90, 2626.50, 110.90},
{"Julius Thruway East", 2536.40, 2442.50, -89.00, 2685.10, 2542.50, 110.90},
{"Julius Thruway East", 2625.10, 2202.70, -89.00, 2685.10, 2442.50, 110.90},
{"Julius Thruway North", 2498.20, 2542.50, -89.00, 2685.10, 2626.50, 110.90},
{"Julius Thruway North", 2237.40, 2542.50, -89.00, 2498.20, 2663.10, 110.90},
{"Julius Thruway North", 2121.40, 2508.20, -89.00, 2237.40, 2663.10, 110.90},
{"Julius Thruway North", 1938.80, 2508.20, -89.00, 2121.40, 2624.20, 110.90},
{"Julius Thruway North", 1534.50, 2433.20, -89.00, 1848.40, 2583.20, 110.90},
{"Julius Thruway North", 1848.40, 2478.40, -89.00, 1938.80, 2553.40, 110.90},
{"Julius Thruway North", 1704.50, 2342.80, -89.00, 1848.40, 2433.20, 110.90},
{"Julius Thruway North", 1377.30, 2433.20, -89.00, 1534.50, 2507.20, 110.90},
{"Julius Thruway South", 1457.30, 823.20, -89.00, 2377.30, 863.20, 110.90},
{"Julius Thruway South", 2377.30, 788.80, -89.00, 2537.30, 897.90, 110.90},
{"Julius Thruway West", 1197.30, 1163.30, -89.00, 1236.60, 2243.20, 110.90},
{"Julius Thruway West", 1236.60, 2142.80, -89.00, 1297.40, 2243.20, 110.90},
{"Juniper Hill", -2533.00, 578.30, -7.60, -2274.10, 968.30, 200.00},
{"Juniper Hollow", -2533.00, 968.30, -6.10, -2274.10, 1358.90, 200.00},
{"K.A.C.C. Military Fuels", 2498.20, 2626.50, -89.00, 2749.90, 2861.50, 110.90},
{"Kincaid Bridge", -1339.80, 599.20, -89.00, -1213.90, 828.10, 110.90},
{"Kincaid Bridge", -1213.90, 721.10, -89.00, -1087.90, 950.00, 110.90},
{"Kincaid Bridge", -1087.90, 855.30, -89.00, -961.90, 986.20, 110.90},
{"King's", -2329.30, 458.40, -7.60, -1993.20, 578.30, 200.00},
{"King's", -2411.20, 265.20, -9.10, -1993.20, 373.50, 200.00},
{"King's", -2253.50, 373.50, -9.10, -1993.20, 458.40, 200.00},
{"LVA Freight Depot", 1457.30, 863.20, -89.00, 1777.40, 1143.20, 110.90},
{"LVA Freight Depot", 1375.60, 919.40, -89.00, 1457.30, 1203.20, 110.90},
{"LVA Freight Depot", 1277.00, 1087.60, -89.00, 1375.60, 1203.20, 110.90},
{"LVA Freight Depot", 1315.30, 1044.60, -89.00, 1375.60, 1087.60, 110.90},
{"LVA Freight Depot", 1236.60, 1163.40, -89.00, 1277.00, 1203.20, 110.90},
{"Las Barrancas", -926.10, 1398.70, -3.00, -719.20, 1634.60, 200.00},
{"Las Brujas", -365.10, 2123.00, -3.00, -208.50, 2217.60, 200.00},
{"Las Colinas", 1994.30, -1100.80, -89.00, 2056.80, -920.80, 110.90},
{"Las Colinas", 2056.80, -1126.30, -89.00, 2126.80, -920.80, 110.90},
{"Las Colinas", 2185.30, -1154.50, -89.00, 2281.40, -934.40, 110.90},
{"Las Colinas", 2126.80, -1126.30, -89.00, 2185.30, -934.40, 110.90},
{"Las Colinas", 2747.70, -1120.00, -89.00, 2959.30, -945.00, 110.90},
{"Las Colinas", 2632.70, -1135.00, -89.00, 2747.70, -945.00, 110.90},
{"Las Colinas", 2281.40, -1135.00, -89.00, 2632.70, -945.00, 110.90},
{"Las Payasadas", -354.30, 2580.30, 2.00, -133.60, 2816.80, 200.00},
{"Las Venturas Airport", 1236.60, 1203.20, -89.00, 1457.30, 1883.10, 110.90},
{"Las Venturas Airport", 1457.30, 1203.20, -89.00, 1777.30, 1883.10, 110.90},
{"Las Venturas Airport", 1457.30, 1143.20, -89.00, 1777.40, 1203.20, 110.90},
{"Las Venturas Airport", 1515.80, 1586.40, -12.50, 1729.90, 1714.50, 87.50},
{"Last Dime Motel", 1823.00, 596.30, -89.00, 1997.20, 823.20, 110.90},
{"Leafy Hollow", -1166.90, -1856.00, 0.00, -815.60, -1602.00, 200.00},
{"Lil' Probe Inn", -90.20, 1286.80, -3.00, 153.80, 1554.10, 200.00},
{"Linden Side", 2749.90, 943.20, -89.00, 2923.30, 1198.90, 110.90},
{"Linden Station", 2749.90, 1198.90, -89.00, 2923.30, 1548.90, 110.90},
{"Linden Station", 2811.20, 1229.50, -39.50, 2861.20, 1407.50, 60.40},
{"Little Mexico", 1701.90, -1842.20, -89.00, 1812.60, -1722.20, 110.90},
{"Little Mexico", 1758.90, -1722.20, -89.00, 1812.60, -1577.50, 110.90},
{"Los Flores", 2581.70, -1454.30, -89.00, 2632.80, -1393.40, 110.90},
{"Los Flores", 2581.70, -1393.40, -89.00, 2747.70, -1135.00, 110.90},
{"Los Santos International", 1249.60, -2394.30, -89.00, 1852.00, -2179.20, 110.90},
{"Los Santos International", 1852.00, -2394.30, -89.00, 2089.00, -2179.20, 110.90},
{"Los Santos International", 1382.70, -2730.80, -89.00, 2201.80, -2394.30, 110.90},
{"Los Santos International", 1974.60, -2394.30, -39.00, 2089.00, -2256.50, 60.90},
{"Los Santos International", 1400.90, -2669.20, -39.00, 2189.80, -2597.20, 60.90},
{"Los Santos International", 2051.60, -2597.20, -39.00, 2152.40, -2394.30, 60.90},
{"Marina", 647.70, -1804.20, -89.00, 851.40, -1577.50, 110.90},
{"Marina", 647.70, -1577.50, -89.00, 807.90, -1416.20, 110.90},
{"Marina", 807.90, -1577.50, -89.00, 926.90, -1416.20, 110.90},
{"Market", 787.40, -1416.20, -89.00, 1072.60, -1310.20, 110.90},
{"Market", 952.60, -1310.20, -89.00, 1072.60, -1130.80, 110.90},
{"Market", 1072.60, -1416.20, -89.00, 1370.80, -1130.80, 110.90},
{"Market", 926.90, -1577.50, -89.00, 1370.80, -1416.20, 110.90},
{"Market Station", 787.40, -1410.90, -34.10, 866.00, -1310.20, 65.80},
{"Martin Bridge", -222.10, 293.30, 0.00, -122.10, 476.40, 200.00},
{"Missionary Hill", -2994.40, -811.20, 0.00, -2178.60, -430.20, 200.00},
{"Montgomery", 1119.50, 119.50, -3.00, 1451.40, 493.30, 200.00},
{"Montgomery", 1451.40, 347.40, -6.10, 1582.40, 420.80, 200.00},
{"Montgomery Intersection", 1546.60, 208.10, 0.00, 1745.80, 347.40, 200.00},
{"Montgomery Intersection", 1582.40, 347.40, 0.00, 1664.60, 401.70, 200.00},
{"Mulholland", 1414.00, -768.00, -89.00, 1667.60, -452.40, 110.90},
{"Mulholland", 1281.10, -452.40, -89.00, 1641.10, -290.90, 110.90},
{"Mulholland", 1269.10, -768.00, -89.00, 1414.00, -452.40, 110.90},
{"Mulholland", 1357.00, -926.90, -89.00, 1463.90, -768.00, 110.90},
{"Mulholland", 1318.10, -910.10, -89.00, 1357.00, -768.00, 110.90},
{"Mulholland", 1169.10, -910.10, -89.00, 1318.10, -768.00, 110.90},
{"Mulholland", 768.60, -954.60, -89.00, 952.60, -860.60, 110.90},
{"Mulholland", 687.80, -860.60, -89.00, 911.80, -768.00, 110.90},
{"Mulholland", 737.50, -768.00, -89.00, 1142.20, -674.80, 110.90},
{"Mulholland", 1096.40, -910.10, -89.00, 1169.10, -768.00, 110.90},
{"Mulholland", 952.60, -937.10, -89.00, 1096.40, -860.60, 110.90},
{"Mulholland", 911.80, -860.60, -89.00, 1096.40, -768.00, 110.90},
{"Mulholland", 861.00, -674.80, -89.00, 1156.50, -600.80, 110.90},
{"Mulholland Intersection", 1463.90, -1150.80, -89.00, 1812.60, -768.00, 110.90},
{"North Rock", 2285.30, -768.00, 0.00, 2770.50, -269.70, 200.00},
{"Ocean Docks", 2373.70, -2697.00, -89.00, 2809.20, -2330.40, 110.90},
{"Ocean Docks", 2201.80, -2418.30, -89.00, 2324.00, -2095.00, 110.90},
{"Ocean Docks", 2324.00, -2302.30, -89.00, 2703.50, -2145.10, 110.90},
{"Ocean Docks", 2089.00, -2394.30, -89.00, 2201.80, -2235.80, 110.90},
{"Ocean Docks", 2201.80, -2730.80, -89.00, 2324.00, -2418.30, 110.90},
{"Ocean Docks", 2703.50, -2302.30, -89.00, 2959.30, -2126.90, 110.90},
{"Ocean Docks", 2324.00, -2145.10, -89.00, 2703.50, -2059.20, 110.90},
{"Ocean Flats", -2994.40, 277.40, -9.10, -2867.80, 458.40, 200.00},
{"Ocean Flats", -2994.40, -222.50, -0.00, -2593.40, 277.40, 200.00},
{"Ocean Flats", -2994.40, -430.20, -0.00, -2831.80, -222.50, 200.00},
{"Octane Springs", 338.60, 1228.50, 0.00, 664.30, 1655.00, 200.00},
{"Old Venturas Strip", 2162.30, 2012.10, -89.00, 2685.10, 2202.70, 110.90},
{"Palisades", -2994.40, 458.40, -6.10, -2741.00, 1339.60, 200.00},
{"Palomino Creek", 2160.20, -149.00, 0.00, 2576.90, 228.30, 200.00},
{"Paradiso", -2741.00, 793.40, -6.10, -2533.00, 1268.40, 200.00},
{"Pershing Square", 1440.90, -1722.20, -89.00, 1583.50, -1577.50, 110.90},
{"Pilgrim", 2437.30, 1383.20, -89.00, 2624.40, 1783.20, 110.90},
{"Pilgrim", 2624.40, 1383.20, -89.00, 2685.10, 1783.20, 110.90},
{"Pilson Intersection", 1098.30, 2243.20, -89.00, 1377.30, 2507.20, 110.90},
{"Pirates in Men's Pants", 1817.30, 1469.20, -89.00, 2027.40, 1703.20, 110.90},
{"Playa del Seville", 2703.50, -2126.90, -89.00, 2959.30, -1852.80, 110.90},
{"Prickle Pine", 1534.50, 2583.20, -89.00, 1848.40, 2863.20, 110.90},
{"Prickle Pine", 1117.40, 2507.20, -89.00, 1534.50, 2723.20, 110.90},
{"Prickle Pine", 1848.40, 2553.40, -89.00, 1938.80, 2863.20, 110.90},
{"Prickle Pine", 1938.80, 2624.20, -89.00, 2121.40, 2861.50, 110.90},
{"Queens", -2533.00, 458.40, 0.00, -2329.30, 578.30, 200.00},
{"Queens", -2593.40, 54.70, 0.00, -2411.20, 458.40, 200.00},
{"Queens", -2411.20, 373.50, 0.00, -2253.50, 458.40, 200.00},
{"Randolph Industrial Estate", 1558.00, 596.30, -89.00, 1823.00, 823.20, 110.90},
{"Redsands East", 1817.30, 2011.80, -89.00, 2106.70, 2202.70, 110.90},
{"Redsands East", 1817.30, 2202.70, -89.00, 2011.90, 2342.80, 110.90},
{"Redsands East", 1848.40, 2342.80, -89.00, 2011.90, 2478.40, 110.90},
{"Redsands West", 1236.60, 1883.10, -89.00, 1777.30, 2142.80, 110.90},
{"Redsands West", 1297.40, 2142.80, -89.00, 1777.30, 2243.20, 110.90},
{"Redsands West", 1377.30, 2243.20, -89.00, 1704.50, 2433.20, 110.90},
{"Redsands West", 1704.50, 2243.20, -89.00, 1777.30, 2342.80, 110.90},
{"Regular Tom", -405.70, 1712.80, -3.00, -276.70, 1892.70, 200.00},
{"Richman", 647.50, -1118.20, -89.00, 787.40, -954.60, 110.90},
{"Richman", 647.50, -954.60, -89.00, 768.60, -860.60, 110.90},
{"Richman", 225.10, -1369.60, -89.00, 334.50, -1292.00, 110.90},
{"Richman", 225.10, -1292.00, -89.00, 466.20, -1235.00, 110.90},
{"Richman", 72.60, -1404.90, -89.00, 225.10, -1235.00, 110.90},
{"Richman", 72.60, -1235.00, -89.00, 321.30, -1008.10, 110.90},
{"Richman", 321.30, -1235.00, -89.00, 647.50, -1044.00, 110.90},
{"Richman", 321.30, -1044.00, -89.00, 647.50, -860.60, 110.90},
{"Richman", 321.30, -860.60, -89.00, 687.80, -768.00, 110.90},
{"Richman", 321.30, -768.00, -89.00, 700.70, -674.80, 110.90},
{"Robada Intersection", -1119.00, 1178.90, -89.00, -862.00, 1351.40, 110.90},
{"Roca Escalante", 2237.40, 2202.70, -89.00, 2536.40, 2542.50, 110.90},
{"Roca Escalante", 2536.40, 2202.70, -89.00, 2625.10, 2442.50, 110.90},
{"Rockshore East", 2537.30, 676.50, -89.00, 2902.30, 943.20, 110.90},
{"Rockshore West", 1997.20, 596.30, -89.00, 2377.30, 823.20, 110.90},
{"Rockshore West", 2377.30, 596.30, -89.00, 2537.30, 788.80, 110.90},
{"Rodeo", 72.60, -1684.60, -89.00, 225.10, -1544.10, 110.90},
{"Rodeo", 72.60, -1544.10, -89.00, 225.10, -1404.90, 110.90},
{"Rodeo", 225.10, -1684.60, -89.00, 312.80, -1501.90, 110.90},
{"Rodeo", 225.10, -1501.90, -89.00, 334.50, -1369.60, 110.90},
{"Rodeo", 334.50, -1501.90, -89.00, 422.60, -1406.00, 110.90},
{"Rodeo", 312.80, -1684.60, -89.00, 422.60, -1501.90, 110.90},
{"Rodeo", 422.60, -1684.60, -89.00, 558.00, -1570.20, 110.90},
{"Rodeo", 558.00, -1684.60, -89.00, 647.50, -1384.90, 110.90},
{"Rodeo", 466.20, -1570.20, -89.00, 558.00, -1385.00, 110.90},
{"Rodeo", 422.60, -1570.20, -89.00, 466.20, -1406.00, 110.90},
{"Rodeo", 466.20, -1385.00, -89.00, 647.50, -1235.00, 110.90},
{"Rodeo", 334.50, -1406.00, -89.00, 466.20, -1292.00, 110.90},
{"Royal Casino", 2087.30, 1383.20, -89.00, 2437.30, 1543.20, 110.90},
{"San Andreas Sound", 2450.30, 385.50, -100.00, 2759.20, 562.30, 200.00},
{"Santa Flora", -2741.00, 458.40, -7.60, -2533.00, 793.40, 200.00},
{"Santa Maria Beach", 342.60, -2173.20, -89.00, 647.70, -1684.60, 110.90},
{"Santa Maria Beach", 72.60, -2173.20, -89.00, 342.60, -1684.60, 110.90},
{"Shady Cabin", -1632.80, -2263.40, -3.00, -1601.30, -2231.70, 200.00},
{"Shady Creeks", -1820.60, -2643.60, -8.00, -1226.70, -1771.60, 200.00},
{"Shady Creeks", -2030.10, -2174.80, -6.10, -1820.60, -1771.60, 200.00},
{"Sobell Rail Yards", 2749.90, 1548.90, -89.00, 2923.30, 1937.20, 110.90},
{"Spinybed", 2121.40, 2663.10, -89.00, 2498.20, 2861.50, 110.90},
{"Starfish Casino", 2437.30, 1783.20, -89.00, 2685.10, 2012.10, 110.90},
{"Starfish Casino", 2437.30, 1858.10, -39.00, 2495.00, 1970.80, 60.90},
{"Starfish Casino", 2162.30, 1883.20, -89.00, 2437.30, 2012.10, 110.90},
{"Temple", 1252.30, -1130.80, -89.00, 1378.30, -1026.30, 110.90},
{"Temple", 1252.30, -1026.30, -89.00, 1391.00, -926.90, 110.90},
{"Temple", 1252.30, -926.90, -89.00, 1357.00, -910.10, 110.90},
{"Temple", 952.60, -1130.80, -89.00, 1096.40, -937.10, 110.90},
{"Temple", 1096.40, -1130.80, -89.00, 1252.30, -1026.30, 110.90},
{"Temple", 1096.40, -1026.30, -89.00, 1252.30, -910.10, 110.90},
{"The Camel's Toe", 2087.30, 1203.20, -89.00, 2640.40, 1383.20, 110.90},
{"The Clown's Pocket", 2162.30, 1783.20, -89.00, 2437.30, 1883.20, 110.90},
{"The Emerald Isle", 2011.90, 2202.70, -89.00, 2237.40, 2508.20, 110.90},
{"The Farm", -1209.60, -1317.10, 114.90, -908.10, -787.30, 251.90},
{"The Four Dragons Casino", 1817.30, 863.20, -89.00, 2027.30, 1083.20, 110.90},
{"The High Roller", 1817.30, 1283.20, -89.00, 2027.30, 1469.20, 110.90},
{"The Mako Span", 1664.60, 401.70, 0.00, 1785.10, 567.20, 200.00},
{"The Panopticon", -947.90, -304.30, -1.10, -319.60, 327.00, 200.00},
{"The Pink Swan", 1817.30, 1083.20, -89.00, 2027.30, 1283.20, 110.90},
{"The Sherman Dam", -968.70, 1929.40, -3.00, -481.10, 2155.20, 200.00},
{"The Strip", 2027.40, 863.20, -89.00, 2087.30, 1703.20, 110.90},
{"The Strip", 2106.70, 1863.20, -89.00, 2162.30, 2202.70, 110.90},
{"The Strip", 2027.40, 1783.20, -89.00, 2162.30, 1863.20, 110.90},
{"The Strip", 2027.40, 1703.20, -89.00, 2137.40, 1783.20, 110.90},
{"The Visage", 1817.30, 1863.20, -89.00, 2106.70, 2011.80, 110.90},
{"The Visage", 1817.30, 1703.20, -89.00, 2027.40, 1863.20, 110.90},
{"Unity Station", 1692.60, -1971.80, -20.40, 1812.60, -1932.80, 79.50},
{"Valle Ocultado", -936.60, 2611.40, 2.00, -715.90, 2847.90, 200.00},
{"Verdant Bluffs", 930.20, -2488.40, -89.00, 1249.60, -2006.70, 110.90},
{"Verdant Bluffs", 1073.20, -2006.70, -89.00, 1249.60, -1842.20, 110.90},
{"Verdant Bluffs", 1249.60, -2179.20, -89.00, 1692.60, -1842.20, 110.90},
{"Verdant Meadows", 37.00, 2337.10, -3.00, 435.90, 2677.90, 200.00},
{"Verona Beach", 647.70, -2173.20, -89.00, 930.20, -1804.20, 110.90},
{"Verona Beach", 930.20, -2006.70, -89.00, 1073.20, -1804.20, 110.90},
{"Verona Beach", 851.40, -1804.20, -89.00, 1046.10, -1577.50, 110.90},
{"Verona Beach", 1161.50, -1722.20, -89.00, 1323.90, -1577.50, 110.90},
{"Verona Beach", 1046.10, -1722.20, -89.00, 1161.50, -1577.50, 110.90},
{"Vinewood", 787.40, -1310.20, -89.00, 952.60, -1130.80, 110.90},
{"Vinewood", 787.40, -1130.80, -89.00, 952.60, -954.60, 110.90},
{"Vinewood", 647.50, -1227.20, -89.00, 787.40, -1118.20, 110.90},
{"Vinewood", 647.70, -1416.20, -89.00, 787.40, -1227.20, 110.90},
{"Whitewood Estates", 883.30, 1726.20, -89.00, 1098.30, 2507.20, 110.90},
{"Whitewood Estates", 1098.30, 1726.20, -89.00, 1197.30, 2243.20, 110.90},
{"Willowfield", 1970.60, -2179.20, -89.00, 2089.00, -1852.80, 110.90},
{"Willowfield", 2089.00, -2235.80, -89.00, 2201.80, -1989.90, 110.90},
{"Willowfield", 2089.00, -1989.90, -89.00, 2324.00, -1852.80, 110.90},
{"Willowfield", 2201.80, -2095.00, -89.00, 2324.00, -1989.90, 110.90},
{"Willowfield", 2541.70, -1941.40, -89.00, 2703.50, -1852.80, 110.90},
{"Willowfield", 2324.00, -2059.20, -89.00, 2541.70, -1852.80, 110.90},
{"Willowfield", 2541.70, -2059.20, -89.00, 2703.50, -1941.40, 110.90},
{"Yellow Bell Station", 1377.40, 2600.40, -21.90, 1492.40, 2687.30, 78.00}
};
new g_Cities[][e_ZONEINFO] =
{
// Main Zones
{"Los Santos", 44.60, -2892.90, -242.90, 2997.00, -768.00, 900.00},
{"Las Venturas", 869.40, 596.30, -242.90, 2997.00, 2993.80, 900.00},
{"Bone County", -480.50, 596.30, -242.90, 869.40, 2993.80, 900.00},
{"Tierra Robada", -2997.40, 1659.60, -242.90, -480.50, 2993.80, 900.00},
{"Tierra Robada", -1213.90, 596.30, -242.90, -480.50, 1659.60, 900.00},
{"San Fierro", -2997.40, -1115.50, -242.90, -1213.90, 1659.60, 900.00},
{"Red County", -1213.90, -768.00, -242.90, 2997.00, 596.30, 900.00},
{"Flint County", -1213.90, -2892.90, -242.90, 44.60, -768.00, 900.00},
{"Whetstone", -2997.40, -2892.90, -242.90, -1213.90, -1115.50, 900.00}
};
enum enum_SAFE_ZONES
{
safe_zone_AREA_ID,
Float:safe_zone_MIN_X,
Float:safe_zone_MIN_Y,
Float:safe_zone_MAX_X,
Float:safe_zone_MAX_Y,
safe_zone_INTERIOR,
safe_zone_WORLD
};
new SAFE_ZONES[][enum_SAFE_ZONES] =
{
{INVALID_STREAMER_ID, 1996.91, -1449.67, 2056.86, -1350.719, 0, 0},
{INVALID_STREAMER_ID, 1323.9, -1842.27, 1701.9, -1722.26, 0, 0},
{INVALID_STREAMER_ID, 1440.9, -1722.26, 1583.5, -1577.589, 0, 0},
{INVALID_STREAMER_ID, 1249.619, -2394.33, 1852.0, -2179.25, 0, 0},
{INVALID_STREAMER_ID, 1382.729, -2730.879, 2201.82, -2394.33, 0, 0},
{INVALID_STREAMER_ID, -2078.669, 578.395, -1499.89, 744.267, 0, 0},
{INVALID_STREAMER_ID, -2741.07, 458.411, -2533.04, 793.411, 0, 0},
{INVALID_STREAMER_ID, -1794.92, -730.117, -1213.91, -50.096, 0, 0},
{INVALID_STREAMER_ID, -792.254, -698.554, -452.403, -380.042, 0, 0},
{INVALID_STREAMER_ID, -594.19, -1648.55, -187.699, -1276.599, 0, 0},
{INVALID_STREAMER_ID, 2237.399, 2202.76, 2536.429, 2542.55, 0, 0},
{INVALID_STREAMER_ID, 1236.63, 1203.28, 1457.369, 1883.109, 0, 0},
{INVALID_STREAMER_ID, 1457.369, 1203.28, 1777.39, 1883.109, 0, 0},
{INVALID_STREAMER_ID, -91.585, 1655.05, 421.234, 2123.01, 0, 0},
{INVALID_STREAMER_ID, -613.953796, -209.777252, -381.961181, -6.355076, 0, 0},
{INVALID_STREAMER_ID, -115.255050, -1211.812377, -54.539089, -1179.635253, 0, 0}
};
/* Rangos Policias */
enum enum_POLICE_SHOP_WEAPONS
{
police_shop_RANK,
police_shop_WEAPON_ID,
police_shop_WEAPON_PRICE
};
new POLICE_SHOP_WEAPONS[][enum_POLICE_SHOP_WEAPONS] =
{
{1, 41, 50},
{1, 3, 50},
{1, 22, 300},
{2, 17, 50},
{2, 24, 600},
{2, 25, 800},
{2, 27, 1400},
{2, 28, 1250},
{2, 29, 1750},
{2, 30, 1800},
{2, 31, 1900},
{2, 33, 900},
{3, 34, 3500}
};
enum enum_POLICE_SKINS
{
police_skin_TYPE,
police_skin_SKIN,
police_skin_RANK
};
new POLICE_SKINS[][enum_POLICE_SKINS] =
{
{SEX_MALE, 71, 1},
{SEX_MALE, 280, 2},
{SEX_MALE, 284, 4},
{SEX_MALE, 281, 6},
{SEX_MALE, 285, 9},
{SEX_MALE, 288, 12},
{SEX_FEMALE, 306, 1},
{SEX_FEMALE, 307, 1}
};
new POLICE_RANKS[][] =
{
/* 0 */ "Civil",
/* 1 */ "Cadete",
/* 2 */ "Oficial I",
/* 3 */ "Oficial II",
/* 4 */ "Oficial III",
/* 5 */ "Oficial III+",
/* 6 */ "Detective I",
/* 7 */ "Detective II",
/* 8 */ "Detective III",
/* 9 */ "Sargento I",
/* 10 */ "Sargento II",
/* 11 */ "Capitán I",
/* 12 */ "Jefe Policía"
};
#define MAX_POLICE_OBJECTS 300
enum enum_POLICE_OBJECTS
{
bool:police_object_VALID,
police_object_USER[24],
police_object_OBJECT_ID
};
new POLICE_OBJECTS[MAX_POLICE_OBJECTS][enum_POLICE_OBJECTS];
enum enum_POLICE_GARAGE_DOORS
{
police_gdoor_MODELID,
Float:police_gdoor_CLOSED_X,
Float:police_gdoor_CLOSED_Y,
Float:police_gdoor_CLOSED_Z,
Float:police_gdoor_CLOSED_RX,
Float:police_gdoor_CLOSED_RY,
Float:police_gdoor_CLOSED_RZ,
Float:police_gdoor_OPENED_X,
Float:police_gdoor_OPENED_Y,
Float:police_gdoor_OPENED_Z,
Float:police_gdoor_OPENED_RX,
Float:police_gdoor_OPENED_RY,
Float:police_gdoor_OPENED_RZ,
Float:police_gdoor_MOVE_SPEED,
bool:police_gdoor_CLOSING,
police_gdoor_OBJECT_ID,
police_gdoor_TIMER
};
new POLICE_GARAGE_DOORS[][enum_POLICE_GARAGE_DOORS] =
{
{3055, 1588.48853, -1637.85852, 14.57500, 0.0, 0.0, 0.0, 1588.48853, -1637.85852, 16.45880, 90.0, 0.0, 0.0, 1.3, false, INVALID_STREAMER_ID, -1},
{3055, 2294.04102, 2498.81396, 4.47113, 0.00000, 0.00000, 90.00000, 2294.0410, 2498.8140, 9.0059, 0.0, 0.0, 90.0, 1.6, false, INVALID_STREAMER_ID, -1},
{3055, 2335.13086, 2443.66895, 6.97370, 0.00000, 0.00000, 60.00000, 2335.1309, 2443.6689, 11.6876, 0.0, 0.0, 60.0, 1.6, false, INVALID_STREAMER_ID, -1},
{10184, -1631.69556, 688.56641, 8.70960, 0.00000, 0.00000, 90.00000, -1631.6956, 688.5664, 13.2064, 0.0, 0.0, 90.0, 1.6, false, INVALID_STREAMER_ID, -1}
};
enum enum_POLICE_DOORS
{
police_door_MODELID,
Float:police_door_X,
Float:police_door_Y,
Float:police_door_Z,
Float:police_door_RZ,
police_door_INTERIOR,
police_door_WORLD,
bool:police_door_CLOSED,
police_door_OBJECT_ID,
police_door_TIMER
};
new POLICE_DOORS[][enum_POLICE_DOORS] =
{
{1495, 1582.6055, -1638.0713, 12.3384, 0.0, 0, 0, true, INVALID_STREAMER_ID, -1},//lspd
{1495, 245.62910, 72.53300, 1002.54999, 0.0, 6, 0, true, INVALID_STREAMER_ID, -1},//lspd
{1495, 250.65849, 62.58540, 1002.54999, 90.0, 6, 0, true, INVALID_STREAMER_ID, -1},//lspd
{1495, 226.16409, 71.01760, 1003.95050, 90.0, 6, 0, true, INVALID_STREAMER_ID, -1},//lspd
{1497, 222.14630, 70.52970, 1003.95050, -90.0, 6, 0, true, INVALID_STREAMER_ID, -1},//lspd
{1495, -1619.70764, 688.41058, 6.17220, 180.00000, 0, 0, true, INVALID_STREAMER_ID, -1},//sfpd
{1495, 239.58211, 116.84430, 1002.20319, 90.00000, 10, 0, true, INVALID_STREAMER_ID, -1},//sfpd
{1495, 253.19209, 108.35700, 1002.20319, 90.00000, 10, 0, true, INVALID_STREAMER_ID, -1},//sfpd
{1497, 266.59210, 112.56570, 1003.60992, 180.0, 10, 0, true, INVALID_STREAMER_ID, -1},//sfpd
{1495, 228.27240, 150.46510, 1002.01813, 90.0, 3, 0, true, INVALID_STREAMER_ID, -1},//lvpd
{1495, 228.27240, 160.45010, 1002.01813, 90.0, 3, 0, true, INVALID_STREAMER_ID, -1},//lvpd
{1495, 232.21030, 169.83350, 1002.01813, 180.0, 3, 0, true, INVALID_STREAMER_ID, -1},//lvpd
{1495, 2294.03516, 2492.91528, 2.26740, 90.0, 0, 0, true, INVALID_STREAMER_ID, -1},//lvpd
{1497, 221.95570, 181.21680, 1002.02142, 0.0, 3, 0, true, INVALID_STREAMER_ID, -1}//lvpd
};
/* SYSTEM - PROPERTIES */
#define MAX_PROPERTIES 2000
enum Property_Info_Enum
{
property_VALID,
property_ID,
Float:property_EXT_X,
Float:property_EXT_Y,
Float:property_EXT_Z,
Float:property_EXT_ANGLE,
property_EXT_INTERIOR,
property_EXT_FREEZE,
property_ID_INTERIOR,
bool:property_SOLD,
bool:property_CREW,
property_OWNER_ID,
property_CREW_ID,
property_NAME[24],
property_PRICE,
property_LEVEL,
property_EXTRA,
property_VIP_LEVEL,
Text3D:property_EXT_LABEL_ID,
Text3D:property_INT_LABEL_ID,
property_EXT_PICKUP_ID,
property_INT_PICKUP_ID,
property_PRICE_BASE
};
new PROPERTY_INFO[MAX_PROPERTIES][Property_Info_Enum];
/* PROPERTY CONSTRUCTOR */
new TOTAL_PROPERTIES_LOADED;
enum PROPERTY_INTERIOR_ENUM
{
property_creator_LEVEL,
property_creator_PRICE,
Float:property_INT_X,
Float:property_INT_Y,
Float:property_INT_Z,
Float:property_INT_ANGLE,
property_INT_INTERIOR,
bool:property_INT_FREEZE
};
new PROPERTY_INTERIORS[][PROPERTY_INTERIOR_ENUM] =
{
{6, 180000, 140.249008, 1366.197509, 1083.859375, 0.0, 5, false},
{6, 160000, 2324.530029, -1149.540039, 1050.710083, 0.0, 12, false},
{6, 270000, 225.679992, 1021.450012, 1084.017700, 0.0, 7, false},
{6, 190000, 234.190002, 1063.729980, 1084.212280, 0.0, 6, false},
{6, 120000, 226.300003, 1114.239990, 1080.992919, 270.0, 5, false},
{6, 180000, 2317.889892, -1026.760009, 1050.217773, 0.0, 9, false},
{6, 120000, 2495.979980, -1692.079956, 1014.742187, 180.0, 3, false},
{6, 90000, 2196.626464, -1204.321411, 1049.023437, 90.0, 6, false},
{6, 105000, 2270.143554, -1210.490600, 1047.562500, 90.0, 10, false},
{4, 90000, 2365.199951, -1135.595825, 1050.882568, 0.0, 8, false},
{3, 75000, 2237.590087, -1081.640014, 1049.023437, 0.0, 2, false},
{4, 65000, 2468.840087, -1698.239990, 1013.507812, 90.0, 2, false},
{3, 45000, 2282.928955, -1140.004516, 1050.898437, 0.0, 11, false},
{4, 50000, 2308.775878, -1212.731689, 1049.023437, 0.0, 6, false},
{6, 135000, 2233.681396, -1114.973510, 1050.882812, 0.0, 5, false},
{6, 230000, 2218.162597, -1076.148315, 1050.484375, 90.0, 1, false},
{6, 220000, 266.654327, 304.961791, 999.148437, 270.0, 2, false},
{6, 30000, 243.720001, 304.910003, 999.148437, 270.0, 1, false},
{6, 65000, 2259.440673, -1135.905883, 1050.640258, 270.0, 10, false},
{12, 3000000, 1260.910034, -785.320068, 1091.906250, 280.0, 5, false}
};
enum PLAYER_PROPERTY_CONSTRUCTOR_ENU
{
bool:player_property_creator_ENABLED,
player_property_creator_INTERIO,
Float:player_property_creator_EXT_X,
Float:player_property_creator_EXT_Y,
Float:player_property_creator_EXT_Z,
Float:player_property_creator_EXT_ANG,
player_property_creator_EXT_INT
};
new PLAYER_PROPERTY_CONSTRUCTOR[MAX_PLAYERS][PLAYER_PROPERTY_CONSTRUCTOR_ENU];
//Taxis
enum TAXI_METER_VEHICLE_Info
{
bool:veh_taxi_meter_ENABLED,
veh_taxi_meter_PRICE,
veh_taxi_meter_PAYMENT,
Float:veh_taxi_meter_OLD_X,
Float:veh_taxi_meter_OLD_Y,
Float:veh_taxi_meter_OLD_Z,
Float:veh_taxi_meter_DISTANCE,
veh_taxi_meter_TIMER
};
new TAXI_METER_VEHICLE[MAX_VEHICLES][TAXI_METER_VEHICLE_Info];
// Grua
new Float:CRANE_POINTS[][] =
{
{-28.8145, -1124.5767, 0.6990, 157.4051},
{-34.1703, -1122.5664, 0.6990, 157.4051},
{-39.7803, -1119.8870, 0.6990, 157.4051},
{-45.1235, -1117.3114, 0.6990, 157.4051},
{-49.8637, -1115.2751, 0.6990, 157.4051},
{-42.4484, -1154.7849, 0.6990, 333.7967},
{-46.8119, -1152.4274, 0.6990, 333.7967},
{-50.6488, -1150.6056, 0.6990, 333.7967},
{-54.1760, -1149.1364, 0.6990, 333.7967},
{-57.8852, -1147.4999, 0.6990, 333.7967},
{-62.2619, -1145.2260, 0.6990, 333.7967},
{-66.4254, -1143.2191, 0.6990, 333.7967},
{-70.7787, -1140.9065, 0.6990, 333.7967},
{-75.1332, -1138.9713, 0.6990, 333.7967},
{-79.8642, -1136.7786, 0.6990, 333.7967},
{-33.8437, -1135.5642, 0.6990, 333.7967},
{-36.8147, -1141.7927, 0.6990, 157.4051},
{-40.9361, -1140.1613, 0.6990, 157.4051},
{-45.5692, -1138.2747, 0.6990, 157.4051},
{-50.3522, -1136.1228, 0.6990, 157.4051},
{-54.4753, -1134.3014, 0.6990, 157.4051},
{-38.0563, -1133.7695, 0.6990, 333.7967},
{-42.4517, -1132.0298, 0.6990, 333.7967},
{-47.2834, -1129.8915, 0.6990, 333.7967},
{-51.6219, -1127.9185, 0.6990, 333.7967}
};
//Pizzero
new Float:PIZZA_DELIVERY_POINT[][] =
{
{2232.147460, -1785.597656, 13.560449, 82.756179 },
{2290.242675, -1796.022583, 13.546875, 267.344024 },
{1739.314575, -1582.890747, 14.158246, 174.783370 },
{1694.923339, -1583.478881, 13.546875, 179.829818 },
{1241.816406, -2032.996093, 60.041099, 263.972076 },
{1187.268798, -1666.487915, 13.634441, 172.332916 },
{998.998962, -1868.162231, 12.820312, 333.677734 },
{891.677551, -1695.211669, 13.546875, 182.046417 },
{507.502838, -1606.101684, 16.247840, 359.563903 },
{305.462341, -1748.736816, 4.546875, 356.093139 },
{159.034683, -1906.259521, 3.773437, 0.044234 },
{387.668762, -2083.981689, 7.835937, 11.638330 },
{902.655456, -930.055786, 42.601562, 185.516662 },
{1809.700439, -1166.832885, 24.226562, 168.451568 },
{2007.953857, -985.501953, 33.888450, 203.231872 },
{2580.753906, -969.438110, 81.363517, 50.412715 },
{2796.151855, -1088.867187, 30.719810, 234.631011 },
{2819.019287, -1614.678588, 11.079871, 245.630599 },
{2756.354492, -1979.312011, 13.547579, 270.360687 },
{931.654541, -1231.159545, 16.928218, 262.568939 },
{952.439208, -913.921447, 45.729900, 180.787841 },
{824.417663, -2031.578857, 12.867187, 331.166229 },
{1714.394531, -1629.683593, 20.203384, 332.709594 }
};
enum PIZZA_VEHICLE_Info
{
bool:pizza_vehicle_STARTED,
pizza_vehicle_DRIVER_AID,
pizza_vehicle_PIZZAS,
pizza_vehicle_PIZZA_POINT,
bool:pizza_vehicle_PIZZA_POINT_DELI
};
new PIZZA_VEHICLE[MAX_VEHICLES][PIZZA_VEHICLE_Info];
//Camioneros
new Float:LoadTrucksPoints[][] =
{
{-520.48822, -502.04059, 25.26037, 0.0},
{-529.98822, -502.04059, 25.26040, 0.0},
{-557.48822, -502.04059, 25.26040, 0.0}
};
enum TRUCK_VEHICLE_Info
{
bool:truck_vehicle_LOADED,
bool:truck_vehicle_LOADING,
bool:truck_vehicle_UNLOADING,
bool:truck_vehicle_DELIVERED,
truck_vehicle_DRIVER_USER_ID,
truck_vehicle_POINT,
};
new TRUCK_VEHICLE[MAX_VEHICLES][TRUCK_VEHICLE_Info];
enum Truck_Content_Info
{
truck_content_EXP,
truck_content_NAME[24],
truck_content_MONEY,
Float:truck_content_X,
Float:truck_content_Y,
Float:truck_content_Z
};
new Truck_Contents[][Truck_Content_Info] =
{
{0, "Partes de Vehículos", 180, -72.730911, -1176.907714, 2.940625},
{0, "Productos Agrícolas", 950, -185.473693, -280.008880, 1.603357},
{0, "Productos Industriales", 1250, 2168.514404, -2275.264892, 13.128628},
{0, "Madera y Leña", 1700, -2096.593017, -2243.229492, 30.352083},
{0, "Ropa y Complementos", 1975, 2834.454833, 958.061462, 10.479191},
{25, "Productos de Limpieza", 2250, 2524.153076, 2816.919189, 10.547390},
{50, "Productos de Pesca", 2760, -1789.979858, 1421.842895, 6.914581},
{50, "Productos Químicos", 3560, -1862.919433, -202.232727, 18.125516},
{80, "Productos Tecnológicos", 3850, 1039.057983, 2132.961425, 10.547390}
};
/* Leñador */
enum
{
LUMBER_TREE_STATE_NORMAL,
LUMBER_TREE_STATE_CUTTING,
LUMBER_TREE_STATE_CUTTED
}
enum LUMBER_TREES_Info
{
lumber_tree_MODELID,
Float:lumber_tree_X,
Float:lumber_tree_Y,
Float:lumber_tree_Z,
Float:lumber_tree_RX,
Float:lumber_tree_RY,
Float:lumber_tree_RZ,
lumber_tree_OBJECT_ID,
Text3D:lumber_tree_LABEL,
lumber_tree_STATE,
lumber_tree_GROW_TIMER,
lumber_tree_GROW_COUNTER
};
new LUMBER_TREES[][LUMBER_TREES_Info] =
{
{657, -467.31256, -47.68515, 59.00023, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -480.88443, -53.57695, 59.39736, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -491.79199, -45.14817, 59.24156, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -493.84619, -54.35930, 59.48059, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -473.43958, -40.64830, 59.00023, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -468.32245, -61.54378, 58.98302, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -458.69937, -75.32365, 58.80302, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -453.17416, -65.31260, 58.98302, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -444.92609, -78.80465, 57.97836, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -465.78470, -85.49714, 58.96302, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -454.24377, -86.58199, 58.46635, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -440.20041, -92.70150, 57.60720, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -484.98972, -65.79082, 59.82284, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -460.57928, -95.55928, 59.25615, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -521.20569, -44.74903, 60.62712, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -534.94348, -50.98387, 61.66861, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -533.45081, -41.45306, 61.64992, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -495.74197, -64.77782, 59.94119, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -519.74005, -72.02750, 61.19377, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1},
{657, -518.47144, -57.24505, 60.76774, 0.00000, 0.00000, 0.00000, INVALID_STREAMER_ID, Text3D:INVALID_3DTEXT_ID, LUMBER_TREE_STATE_NORMAL, -1, -1}
};
/* Basurero */
#define MAX_ROUTES 5
#define MAX_OBJECTS_PER_ROUTE 20
enum Trash_Object_Info
{
bool:trash_route_VALID,
trash_route_OBJECTS,
Float:trash_route_DISTANCE,
trash_route_MONEY,
trash_object_MODELID[MAX_OBJECTS_PER_ROUTE],
Float:trash_object_X[MAX_OBJECTS_PER_ROUTE],
Float:trash_object_Y[MAX_OBJECTS_PER_ROUTE],
Float:trash_object_Z[MAX_OBJECTS_PER_ROUTE],
Float:trash_object_RX[MAX_OBJECTS_PER_ROUTE],
Float:trash_object_RY[MAX_OBJECTS_PER_ROUTE],
Float:trash_object_RZ[MAX_OBJECTS_PER_ROUTE]
};
new TRASH_OBJECTS[MAX_ROUTES][Trash_Object_Info];
new TRASH_PLAYER_OBJECTS[MAX_PLAYERS][MAX_OBJECTS_PER_ROUTE];
enum TRASH_VEHICLES_INFO
{
bool:trash_vehicle_JOB_STARTED,
trash_vehicle_ROUTE,
trash_vehicle_CP,
trash_vehicle_DRIVER_ID,
trash_vehicle_PASSENGER_ID
};
new TRASH_VEHICLES[MAX_VEHICLES][TRASH_VEHICLES_INFO];
/* SYSTEM - PLAYERTEMP */
enum
{
PED_STOPPED,
PED_WALKING,
PED_RUNNING,
PED_SPRINTING,
PED_BYCICLING
};
enum Temp_Enum
{
pt_GAME_STATE,
pt_NAME[24],
pt_IP[16],
bool:pt_USER_EXIT, // Esta registrado?
bool:pt_USER_LOGGED, // 1 = ha cargado todos los datos del user
pt_TIME_PLAYING, // tiempo jugando en segundos sesion actual
pt_ANTIFLOOD_COMMANDS,
pt_ANTIFLOOD_TALK,
pt_TIMERS[MAX_TIMERS_PER_PLAYER],
bool:pt_USER_VALID_NAME,
pt_RP_NAME[24],
pt_BAD_LOGIN_ATTEMP,
pt_DOUBT_CHANNEL_TIME,
pt_LAST_PICKUP_ID,
pt_HOSPITAL,
Float:pt_HOSPITAL_LIFE,
pt_TIME_PASSED_LAST_REP,
pt_INTERIOR_INDEX,
pt_CLOTHING_SHOP,
pt_CLOTHING_SHOP_SELECTED_SKIN,
bool:pt_SELECT_TEXTDRAW,
bool:pt_HUD_TEXTDRAWS, // Barra de hambre y sed
bool:pt_REGISTER_SELECTING_SKIN,
pt_REGISTER_SELECTED_SKIN,
bool:pt_REGISTER_SELECTING_STYLE,
pt_REGISTER_SELECTED_STYLE,
pt_REGISTER_ACTOR,
bool:pt_THIRST_MESSAGE,
bool:pt_HUNGRY_MESSAGE,
bool:pt_TOYS_SHOP,
pt_TOYS_SHOP_TOY_SELECTED,
pt_SELECTED_TOY_SLOT,
pt_SELECT_BANK_TRANSFER_ACCOUNT,
bool:pt_PLAYER_IN_ATM,
pt_POCKET_SLOT_SELECTED,
bool:pt_PHONE_COMMANDS_MESSAGE,
bool:pt_PLAYER_IN_CALL,
pt_PLAYER_PHONE_CALL_STATE,
pt_PLAYER_PHONE_CALL_PLAYERID,
pt_PLAYER_LISTITEM[MAX_LISTITEMS],
pt_PLAYER_PHONE_BOOK_ADD_NUMBER,
pt_PLAYER_PHONE_BOOK_SELECTED,
pt_PLAYER_PHONE_NUMBER_SELECTED,
pt_BUY_HOUSE_INDEX,
bool:pt_PLAYER_FINISH_HOSPITAL,
pt_ANTIFLOOD_KNOCK_PROPERTY,
pt_KNOCK_PLAYER_ID,
pt_GPS_CHECKPOINT,
pt_GPS_PLAYER_SELECTED,
pt_PLAYER_GPS_SELECTED_PROPERTY[MAX_SU_PROPERTIES],
pt_PLAYER_PROPERTY_SELECTED,
bool:pt_PLAYER_WAITING_MP3_HTTP,
bool:pt_MUSIC_FOR_PROPERTY,
bool:pt_MUSIC_FOR_VEHICLE,
pt_FUEL_DOWN_TIME,
pt_SELECTED_BUY_VEHICLE_ID,
pt_LAST_VEHICLE_ID,
pt_NOTARY_OPTION, //0 al banco, 1 a persona
pt_NOTARY_PRICE,
pt_NOTARY_TO_PLAYER,
pt_PLAYER_VEHICLE_SELECTED,
bool:pt_TAXI_METER_ENABLED,
bool:pt_WANT_TAXI,
Float:pt_TRUCK_LOADING_VALUE,
pt_TRUCK_CHECKPOINT,
pt_TUNING_SELECTED_PART[24],
pt_TUNING_SELECTED_COMPONENT[24],
pt_TUNING_SELECTED_COMPONENT_ID,
pt_TUNING_SELECTED_PIECES,
pt_PAINTJOB_SELECTED_ID,
pt_WORKING_IN,
pt_SELECTED_MECHANIC_VEHICLE_ID,
pt_MECHANIC_COLOR_SLOT,
bool:pt_WANT_MECHANIC,
pt_HARVERT_CHECKPOINT,
pt_HARVERT_PROCCESS,
pt_PIZZA_CHECKPOINT,
bool:pt_TRASH_DRIVER,
bool:pt_TRASH_PASSENGER,
pt_TRASH_VEHICLE_ID,
pt_TRASH_CHECKPOINT,
Float:pt_RECYCLE_BIN_VALUE,
bool:pt_PLAYER_CARRYING_TREE,
pt_PLAYER_LUMBERJACK_TREE,
Float:pt_PLAYER_LUMBERJACK_TREE_PROG,
pt_LUMBERJACK_CHECKPOINT,
pt_LAST_GOT_WORK_TIME,
pt_LAST_GIVE_MONEY_TIME,
pt_SELECTED_BUY_SEED_ID,
Float:pt_PLANTING_PROGRESS,
bool:pt_PLANTING,
pt_PLANTING_PLANT_SELECTED,
bool:pt_GPS_MAP,
pt_PROPERTY_INDEX,
bool:pt_KICKED,
pt_SELECTED_DIALOG_WEAPON_SLOT,
pt_TRICK_SELLER_PID,
pt_TRICK_SELLER_AID,
pt_TRICK_SELLER_EXTRA,
pt_TRICK_PRICE,
pt_TRICK_TIME,
pt_DIALOG_BOT_VEHICLE,
pt_DIALOG_BOT_VEHICLE_BOOT_SLOT,
pt_POLICE_RADIO,
bool:pt_CUFFING,
bool:pt_CUFFED,
pt_ENTER_JAIL_TIME,
pt_DIALOG_DB_LIMIT,
pt_DIALOG_DB_PAGE,
pt_SELECTED_DB_AC_ID,
bool:pt_POLICE_CALL_NAME,
bool:pt_POLICE_CALL_DESCRIPTION,
pt_POLICE_CALL_NAME_STR[24],
pt_SAVE_ACCOUNT_TIME,
pt_ANTIFLOOD_REPORT,
bool:pt_SEE_ACMD_LOG,
pt_LAST_CHEAT_DETECTED_TIME,
bool:pt_SEE_AC_LOG,
pt_ANTIFLOOD_DEATH,
pt_ANTIFLOOD_STATE,
pt_ANTIFLOOD_ENTER_VEHICLE,
pt_SELECTED_AC_LISTITEM,
pt_ADMIN_PM_PID,
pt_ADMIN_PM_AID,
pt_ADMIN_PM_TIME,
pt_MECHANIC_PID,
pt_MECHANIC_AID,
pt_MECHANIC_PRICE,
pt_MECHANIC_TEXT[64],
pt_MECHANIC_TYPE,
pt_MECHANIC_EXTRA,
pt_MECHANIC_VEHICLE_ID,
pt_MECHANIC_PIECES,
pt_MECHANIC_TIME,
pt_MECHANIC_SELECTED_COLOR,
bool:pt_SHOP,
pt_SHOP_STATE,
pt_SHOP_ARTICLE_ID[6],
pt_SHOP_SELECTED_ARTICLE_ID,
bool:pt_SHOP_COME_FROM_MY_ADS,
pt_ANTIFLOOD_SHOP,
pt_SHOP_ADD_TYPE,
pt_SHOP_ADD_TEXT[24],
pt_SHOP_ADD_MODELID,
pt_SHOP_ADD_VCOL1,
pt_SHOP_ADD_VCOL2,
pt_VIRTUAL_WORLD,
bool:pt_PLAYER_SPECTATE,
pt_LAST_BM_BUY,
pt_PIZZA_PROCCESS,
pt_DELIVERED_PIZZAS,
pt_PIZZA_ACTOR,
pt_LAST_PLANT_TIME,
Float:pt_INJURED_POS[4],
pt_CREATE_CREW_NAME[32],
pt_CREATE_CREW_COLOR,
pt_CREW_INVITE_PID,
pt_CREW_INVITE_AID,
pt_CREW_INVITE_INFO[4],
pt_CREW_SELECTED_RANK,
pt_CREW_SELECTED_NEW_RANK,
pt_LAST_TERRITORY,
pt_PLAYER_TERRITORY_PRO,
pt_PLAYER_COLOR,
pt_LAST_GOT_CREW,
pt_POLICE_PEN_PID,
pt_POLICE_PEN_AID,
pt_POLICE_PEN_IM,
pt_POLICE_PEN_TIME,
pt_DIALOG_ECO_SELECTED,
pt_LAST_SU_CHECK,
pt_PIVOT_OBJECT,
pt_SELECT_TUNING_OBJECT,
pt_TUNING_PICKUP,
bool:pt_IN_TUNING_GARAGE,
bool:pt_TUNING_GARAGE_SHOP,
pt_TUNING_GARAGE_VEHICLEID,
pt_TUNING_EDIT_SLOT,
Float:pt_OLD_EDIT_VOBJECT_POS[6],
pt_TUNING_EDIT_COLOR_SLOT,
pt_COUNTRY_TYPE,
pt_LAST_SHOT_TIME,
bool:pt_READING_GUIDE,
pt_GUIDE_STEP,
pt_PASSWD[24],
bool:pt_CONTROL,
bool:pt_NEW_USER,
pt_SELECTING_STYLE,
pt_SELECTED_STYLE,
pt_PROPERTY_CINFO[4],
pt_CJ_WARNINGS,
pt_FIRST_NAME[24],
pt_SUB_NAME[24],
Text3D:pt_POLICE_LABEL,
bool:pt_ADMIN_SERVICE,
Text3D:pt_ADMIN_LABEL,
Float:pt_OLD_HEALTH,
Float:pt_OLD_ARMOUR,
pt_LAST_SAFE_ZONE_WARNING,
pt_SELECTED_POLICE_OBJECT_INDEX,
pt_SELECTED_BYC_ID,
pt_SELECTED_BYC_USER_ID,
bool:pt_DIALOG_RESPONDED,
pt_DATA_LOADED
};
new PLAYER_TEMP[MAX_PLAYERS][Temp_Enum]; // PT (PlayerTemp), variables que no van a ser guardadas en base de datos.
#define MAX_ADS_PER_PLAYER 3
enum
{
PLAYER_SHOP_STATE_ALL,
PLAYER_SHOP_STATE_AD,
PLAYER_SHOP_STATE_MY_ADS
};
enum
{
SHOP_ARTICLE_TYPE_PROPERTY,
SHOP_ARTICLE_TYPE_VEHICLE,
SHOP_ARTICLE_TYPE_OTHER
};
enum
{
MECHANIC_OPTION_REPAIR,
MECHANIC_OPTION_COLOR_1,
MECHANIC_OPTION_COLOR_2,
MECHANIC_OPTION_TUNING,
MECHANIC_OPTION_PAINTJOB
};
//EnterExits
enum
{
INTERIOR_NO_INFO,
//INTERIOR_GENERAL_HOSPITAL,
INTERIOR_BINCO,
INTERIOR_SUBURBAN,
INTERIOR_PROLAPS,
INTERIOR_DIDIER_SACHS,
INTERIOR_VICTIM,
INTERIOR_ZIP,
INTERIOR_247,
INTERIOR_PIZZA,
INTERIOR_CLUCKIN_BELL,
INTERIOR_BURGER_SHOT,
INTERIOR_BANK_LS,
INTERIOR_BANK_SF,
INTERIOR_BANK_LV,
INTERIOR_CITY_HALL_LS,
INTERIOR_UNITY_STATION,
INTERIOR_TRUCK,
INTERIOR_POLICE_LS,
INTERIOR_POLICE_SF,
INTERIOR_POLICE_LV,
INTERIOR_ALHAMBRA,
INTERIOR_POLICE_GARAGE,
INTERIOR_HOSPITAL,
INTERIOR_CLUB
};
enum Enter_Exits
{
ee_ID,
ee_NAME[32],
ee_INTERIOR_TYPE,
ee_INT_MAPICON,
ee_INT_FREEZE,
ee_INT_WORLD,
ee_INT_INTERIOR,
Float:ee_INT_X,
Float:ee_INT_Y,
Float:ee_INT_Z,
Float:ee_INT_ANGLE,
ee_EXT_MAPICON,
ee_EXT_FREEZE,
ee_EXT_WORLD,
ee_EXT_INTERIOR,
Float:ee_EXT_X,
Float:ee_EXT_Y,
Float:ee_EXT_Z,
Float:ee_EXT_ANGLE,
ee_TIME_OPEN,
ee_TIME_CLOSE,
ee_INT_MAPICON_ID,
ee_EXT_MAPICON_ID,
Text3D:ee_INT_LABEL_ID,
Text3D:ee_EXT_LABEL_ID,
ee_INT_PICKUP_ID, /* No son pickups decorativos */
ee_EXT_PICKUP_ID /* Son pickups para identificar el id */
};
new ENTER_EXIT[][Enter_Exits] = // EE = EnterExits
{
//{-1, "Hospital General", INTERIOR_GENERAL_HOSPITAL, -1, true, 0, 10, 1976.126342, 1163.504028, -5.208700, 90.0, -1, false, 0, 0, 1172.832763, -1323.269531, 15.400051, 270.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Binco", INTERIOR_BINCO, -1, false, 0, 15, 207.744949, -111.073318, 1005.132812, 0.0, 45, false, 0, 0, 2244.484863, -1665.223510, 15.476562, 0.0, 9, 20, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Binco", INTERIOR_BINCO, -1, false, 1, 15, 207.744949, -111.073318, 1005.132812, 0.0, 45, false, 0, 0, -2374.125976, 910.103271, 45.433864, 90.0, 9, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Binco", INTERIOR_BINCO, -1, false, 2, 15, 207.744949, -111.073318, 1005.132812, 0.0, 45, false, 0, 0, 2101.902832, 2257.391845, 11.023437, 270.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Binco", INTERIOR_BINCO, -1, false, 3, 15, 207.744949, -111.073318, 1005.132812, 0.0, 45, false, 0, 0, 1656.993408, 1733.450195, 10.828111, 90.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "SubUrban", INTERIOR_SUBURBAN, -1, false, 0, 1, 203.906326, -50.494247, 1001.804687, 0.0, 45, false, 0, 0, 2112.835205, -1211.456665, 23.962865, 180.0, 9, 21, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "SubUrban", INTERIOR_SUBURBAN, -1, false, 1, 1, 203.906326, -50.494247, 1001.804687, 0.0, 45, false, 0, 0, -2490.140869, -29.123632, 25.617187, 90.0, 9, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "SubUrban", INTERIOR_SUBURBAN, -1, false, 2, 1, 203.906326, -50.494247, 1001.804687, 0.0, 45, false, 0, 0, 2779.590087, 2453.658203, 11.062500, 136.0, 9, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "ProLaps", INTERIOR_PROLAPS, -1, false, 0, 3, 206.995925, -140.021163, 1003.507812, 0.0, 45, false, 0, 0, 499.498168, -1360.616088, 16.368682, 340.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "ProLaps", INTERIOR_PROLAPS, -1, false, 1, 3, 206.995925, -140.021163, 1003.507812, 0.0, 45, false, 0, 0, 2825.891357, 2407.322265, 11.062500, 133.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Didier Sachs", INTERIOR_DIDIER_SACHS, -1, false, 0, 14, 204.348281, -168.678985, 1000.523437, 0.0, 45, false, 0, 0, 453.858032, -1478.098632, 30.813968, 111.110641, 8, 23, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Didier Sachs", INTERIOR_DIDIER_SACHS, -1, false, 1, 14, 204.348281, -168.678985, 1000.523437, 0.0, 45, false, 0, 0, 1642.838012, -2284.760742, -1.195312, 270.0, 8, 23, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Victim", INTERIOR_VICTIM, -1, false, 0, 5, 227.350250, -8.188652, 1002.210937, 90.0, 45, false, 0, 0, 461.541320, -1500.892333, 31.049194, 98.0, 8, 21, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Victim", INTERIOR_VICTIM, -1, false, 1, 5, 227.350250, -8.188652, 1002.210937, 90.0, 45, false, 0, 0, -1694.747558, 951.613464, 24.890625, 135.0, 8, 21, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Victim", INTERIOR_VICTIM, -1, false, 2, 5, 227.350250, -8.188652, 1002.210937, 90.0, 45, false, 0, 0, 2802.926269, 2430.682861, 11.062500, 130.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "ZIP", INTERIOR_ZIP, -1, false, 0, 18, 161.401184, -96.887367, 1001.804687, 0.0, 45, false, 0, 0, 1456.611816, -1137.818969, 23.961400, 215.0, 9, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "ZIP", INTERIOR_ZIP, -1, false, 1, 18, 161.401184, -96.887367, 1001.804687, 0.0, 45, false, 0, 0, -1882.421997, 866.394836, 35.171875, 138.0, 9, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "ZIP", INTERIOR_ZIP, -1, false, 2, 18, 161.401184, -96.887367, 1001.804687, 0.0, 45, false, 0, 0, 2090.534667, 2224.481933, 11.023437, 180.0, 9, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "ZIP", INTERIOR_ZIP, -1, false, 3, 18, 161.401184, -96.887367, 1001.804687, 0.0, 45, false, 0, 0, 2572.074218, 1904.711181, 11.023437, 180.0, 9, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 0, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 2194.734130, 1991.022216, 12.296875, 90.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 1, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, -180.966003, 1034.823242, 19.742187, 90.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 2, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 1352.314941, -1758.961425, 13.507812, 0.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 3, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 1833.540771, -1842.542724, 13.578125, 90.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 4, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 2884.694335, 2453.865478, 11.068956, 225.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 5, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 2097.616210, 2224.081298, 11.023437, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 6, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 2247.650146, 2396.417236, 10.820312, 0.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 7, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 1315.453247, -897.967102, 39.578125, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 8, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 1000.317199, -919.933349, 42.328125, 105.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 9, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 2452.572021, 2064.924316, 10.820312, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 10, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 2546.502929, 1972.397338, 10.820312, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 11, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, 1937.592773, 2307.269042, 10.820312, 90.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 12, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, -1562.437744, -2733.189941, 48.743457, 234.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "24/7", INTERIOR_247, -1, false, 13, 18, -30.958774, -91.807441, 1003.546875, 0.0, 17, false, 0, 0, -2442.718994, 755.316589, 35.171875, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 0, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, 2105.234619, -1806.479614, 13.554687, 90.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 1, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, -1721.211425, 1359.705932, 7.185316, 90.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 2, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, 2756.652099, 2477.132812, 11.062500, 135.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 3, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, 2083.380615, 2224.687988, 11.023437, 180.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 4, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, 2351.770996, 2533.328369, 10.820312, 180.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 5, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, 2638.568847, 1849.818481, 11.023437, 90.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 6, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, 372.310729, -133.246292, 1001.492187, 0.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Well Stacked Pizza", INTERIOR_PIZZA, -1, false, 7, 5, 372.310729, -133.246292, 1001.492187, 0.0, 29, false, 0, 0, 375.114501, -117.272621, 1001.492187, 180.0, 13, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 0, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 2419.926025, -1509.024780, 24.000000, 270.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 1, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 2397.772949, -1898.847778, 13.546875, 0.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 2, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 928.553466, -1352.848876, 13.343750, 90.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 3, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 2838.312011, 2407.552978, 11.068956, 225.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 4, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 2101.901367, 2228.776855, 11.023437, 270.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 5, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 2393.372070, 2041.856323, 10.820312, 0.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 6, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 2638.423828, 1671.904296, 11.023437, 90.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 7, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, -1816.567382, 618.417419, 35.171875, 180.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 8, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, -2671.401611, 257.927551, 4.632812, 0.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 9, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 364.914093, -11.778851, 1001.851562, 0.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Cluckin Bell", INTERIOR_CLUCKIN_BELL, -1, false, 10, 9, 364.914093, -11.778851, 1001.851562, 0.0, 14, false, 0, 0, 368.652679, -4.492218, 1001.851562, 180.0, 13, 2, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 0, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, 810.715270, -1616.163330, 13.546875, 270.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 1, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, 1199.272216, -918.372253, 43.121376, 180.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 2, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, 2366.805419, 2071.106201, 10.820312, 90.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 3, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, 2472.626464, 2034.173339, 11.062500, 90.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 4, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, 1872.485351, 2071.812255, 11.062500, 270.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 5, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, 2169.620117, 2795.799072, 10.820312, 270.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 6, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, 1157.925659, 2072.159912, 11.062500, 270.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 7, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, -2356.003173, 1008.051147, 50.898437, 90.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 8, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, -2336.861816, -166.945022, 35.554687, 270.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Burger Shot", INTERIOR_BURGER_SHOT, -1, false, 9, 10, 362.869354, -75.153747, 1001.507812, 315.0, 10, false, 0, 0, -1912.406860, 827.900634, 35.227863, 315.0, 9, 6, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Banco Los Santos", INTERIOR_BANK_LS, -1, true, 5, 5, 1412.077880, 1315.779907, 1501.087890, 90.0, 52, false, 0, 0, 1477.583740, -1010.425170, 26.843750, 180.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Banco San Fierro", INTERIOR_BANK_SF, -1, true, 10, 10, 1104.824462, 1515.503173, 1452.807128, 0.0, 52, false, 0, 0, -1961.384887, 441.804687, 35.171875, 90.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Banco Las Venturas", INTERIOR_BANK_LV, -1, true, 15, 15, 2673.430908, -610.844604, -71.658203, 270.0, 52, false, 0, 0, 2474.557861, 1024.154052, 10.820312, 180.0, 8, 22, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Gobierno San Andreas", INTERIOR_CITY_HALL_LS, -1, true, 20, 20, -501.181243, 286.212188, 2001.094970, 0.0, 3, false, 0, 0, 1480.966918, -1772.065673, 18.795755, 0.0, 8, 21, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Unity Station", INTERIOR_UNITY_STATION, -1, false, 0, 3, 1494.416015, 1303.681884, 1093.289062, 0.0, -1, false, 0, 0, 1752.603881, -1894.155883, 13.557376, 270.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Camioneros", INTERIOR_TRUCK, -1, true, 25, 18, 1297.457031, -61.437820, 1002.498046, 180.0, -1, false, 0, 0, -510.699890, -539.409118, 25.523437, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Policía Los Santos", INTERIOR_POLICE_LS, -1, false, 0, 6, 246.827011, 62.424068, 1003.640625, 0.0, 30, false, 0, 0, 1555.400390, -1675.611694, 16.195312, 90.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Policía San Fierro", INTERIOR_POLICE_SF, -1, false, 0, 10, 246.425857, 107.400123, 1003.218750, 0.0, 30, false, 0, 0, -1605.511840, 710.382507, 13.867187, 0.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Policía Las Venturas", INTERIOR_POLICE_LV, -1, false, 0, 3, 238.758178, 138.726867, 1003.023437, 0.0, 30, false, 0, 0, 2287.059082, 2432.260742, 10.820312, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Club Alhambra", INTERIOR_ALHAMBRA, -1, false, 0, 17, 493.487731, -24.662528, 1000.679687, 0.0, 48, false, 0, 0, 1836.876586, -1682.407104, 13.329626, 90.0, 22, 8, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Policía Los Santos", INTERIOR_POLICE_GARAGE, -1, false, 0, 6, 246.407897, 87.903236, 1003.640625, 180.0, -1, false, 0, 0, 1568.651977, -1690.080688, 6.218750, 180.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1}, // garaje lspd
{-1, "Policía San Fierro", INTERIOR_POLICE_GARAGE, -1, false, 0, 10, 278.369232, 117.561325, 1004.617187, 90.0, -1, false, 0, 0, -1594.110107, 716.163024, -4.906250, 270.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1}, // garaje lspd
{-1, "Policía Las Venturas", INTERIOR_POLICE_GARAGE, -1, false, 0, 3, 231.671142, 181.048477, 1003.031250, 90.0, -1, false, 0, 0, 2282.221923, 2423.218505, 3.476562, 0.0, 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1}, // garaje lspd
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 1, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, 2034.197875, -1403.040039, 17.294845, 180.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 2, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, 1172.832763, -1323.269531, 15.400051, 270.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 3, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, 1242.235595, 328.113281, 19.755510, 0.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 4, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, -2201.566162, -2307.610839, 30.625000, 320.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 5, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, -2655.108886, 639.278625, 14.453125, 180.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 6, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, -318.812774, 1050.359130, 20.340259, 0.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 7, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, -1514.855590, 2520.366699, 55.909828, 0.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Hospital", INTERIOR_HOSPITAL, -1, false, 8, 3, -2029.700683, -119.617759, 1035.171875, 0.0, 22, false, 0, 0, 1583.311401, 1768.952758, 10.820312, 90.0 , 0, 0, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1},
{-1, "Club", INTERIOR_CLUB, -1, false, 0, 3, 1212.160522, -26.097007, 1000.953125, 180.0, 21, false, 0, 0, 693.761047, 1967.498168, 5.539062, 180.0, 20, 8, -1, -1, Text3D:INVALID_3DTEXT_ID, Text3D:INVALID_3DTEXT_ID, -1, -1}
};
enum enum_JAIL_POSITIONS
{
jail_INT,
Float:jail_X,
Float:jail_Y,
Float:jail_Z,
Float:jail_ANGLE,
jail_INTERIOR
};
new JAIL_POSITIONS[][enum_JAIL_POSITIONS] =
{
{INTERIOR_POLICE_LS, 265.070129, 77.518280, 1001.039062, 270.0, 6}, //jaills
{INTERIOR_POLICE_SF, 215.681945, 110.177680, 999.015625, 0.0, 10}, //jailsf
{INTERIOR_POLICE_LV, 197.925323, 174.997573, 1003.023437, 0.0, 3} //jaillv
};
enum BUY_PROPERTIES_SITES_INFO
{
site_INTERIOR_TYPE,
Float:site_X,
Float:site_Y,
Float:site_Z,
site_WORLD,
site_INTERIOR
};
new BUY_PROPERTIES_SITES[][BUY_PROPERTIES_SITES_INFO] =
{
{INTERIOR_BANK_LS, 1396.613403, 1320.551635, 1501.090698, 5, 5},
{INTERIOR_BANK_SF, 1116.351684, 1540.468750, 1451.827148, 10, 10},
{INTERIOR_BANK_LV, 2681.990966, -615.470520, -71.658203, 15, 15}
};
enum
{
PRODUCT_TYPE_NONE,
PRODUCT_TYPE_FOOD,
PRODUCT_TYPE_PHONE,
PRODUCT_TYPE_GPS,
PRODUCT_TYPE_MP3,
PRODUCT_TYPE_PHONE_RESOLVER
};
enum Supermarket_Enum
{
product_TYPE,
product_NAME[24],
product_PRICE,
Float:product_HUNGRY,
Float:product_THIRST,
product_DRUNK
};
new Supermarket_Product_List[][Supermarket_Enum] =
{
{PRODUCT_TYPE_PHONE, "Teléfono", 350, 0.0, 0.0, 0},
{PRODUCT_TYPE_PHONE_RESOLVER, "Guía telefónica", 200, 0.0, 0.0, 0},
{PRODUCT_TYPE_GPS, "Localizador GPS", 300, 0.0, 0.0, 0},
{PRODUCT_TYPE_MP3, "Reproductor MP3", 200, 0.0, 0.0, 0},
{PRODUCT_TYPE_FOOD, "Botella de agua mineral", 80, 0.0, 25.0, 0},
{PRODUCT_TYPE_FOOD, "Lata de refresco Sprunk", 40, 0.0, 12.0, 0},
{PRODUCT_TYPE_FOOD, "Lata de refresco cola", 30, 0.0, 10.0, 0},
{PRODUCT_TYPE_FOOD, "Barrita energética", 80, 15.0, 0.0, 0},
{PRODUCT_TYPE_FOOD, "Porción de pizza", 60, 20.0, 0.0, 0},
{PRODUCT_TYPE_FOOD, "Ensalada", 50, 15.0, 2.0, 0},
{PRODUCT_TYPE_FOOD, "Sándwich", 45, 10.0, 2.0, 0},
{PRODUCT_TYPE_FOOD, "Lata de cerveza", 40, 0.0, 3.0, 1000},
{PRODUCT_TYPE_FOOD, "Vodka", 80, 0.0, 3.0, 2500},
{PRODUCT_TYPE_FOOD, "Whisky", 200, 0.0, 3.0, 3000}
};
enum Clothing_Shop_Info
{
clothing_shop_INTERIOR_TYPE,
clothing_shop_NAME[24],
Float:clothing_shop_X,
Float:clothing_shop_Y,
Float:clothing_shop_Z,
Float:clothing_shop_ANGLE,
clothing_shop_INTERIOR
};
new Clothing_Shop_Positions[][Clothing_Shop_Info] =
{
{INTERIOR_BINCO, "Binco", 207.733657, -100.633468, 1005.257812, 180.0, 15}, //Binco
{INTERIOR_SUBURBAN, "SubUrban", 203.905395, -43.450450, 1001.804687, 180.0, 1}, //SubUrban
{INTERIOR_PROLAPS, "ProLaps", 207.049148, -129.177581, 1003.507812, 180.0, 3}, //prolaps
{INTERIOR_DIDIER_SACHS, "Didier Sachs", 204.348281, -159.493728, 1000.523437, 180.0, 14}, //Didier
{INTERIOR_VICTIM, "Victim", 206.374328, -7.241514, 1001.210937, 270.0, 5}, //Victim
{INTERIOR_ZIP, "ZIP", 161.443634, -83.589271, 1001.804687, 180.0, 18} //Zip
};
enum Fast_Food_Info
{
fast_food_INTERIOR_TYPE,
fast_food_NAME[24],
Float:fast_food_X,
Float:fast_food_Y,
Float:fast_food_Z,
fast_food_INTERIOR
};
new Fast_Food_Positions[][Fast_Food_Info] =
{
{INTERIOR_BURGER_SHOT, "Burger Shot", 375.913238, -67.435272, 1001.507812, 10}, // BurgerShot
{INTERIOR_PIZZA, "Well Stacked Pizza", 375.254730, -118.804710, 1001.499511, 5}, //Pizza
{INTERIOR_CLUCKIN_BELL, "Cluckin Bell", 368.757904, -6.018908, 1001.851562, 9} //Cluckin Bell
};
enum atm_bank_info
{
atm_modelid,
Float:atm_X,
Float:atm_Y,
Float:atm_Z,
Float:atm_RX,
Float:atm_RY,
Float:atm_RZ,
atm_WORLD,
atm_INTERIOR
};
new ATM_BANK[][atm_bank_info] =
{
{2754, 2833.38672, 2402.91553, 10.93546, 0.00000, 0.00000, 131.44171},
{2754, 2088.78442, 1510.00574, 10.69234, 0.00000, 0.00000, 45.39682},
{2754, 1662.92346, 1723.03162, 10.53258, 0.00000, 0.00000, 90.27153},
{2754, -16.17070, 1219.33813, 19.17369, 0.00000, 0.00000, 179.53238},
{2754, -1505.91687, 2612.09058, 55.63910, 0.00000, 0.00000, 178.85609},
{2754, -2540.67188, 2340.96143, 4.79166, 0.00000, 0.00000, 90.97625},
{2754, -1690.23547, 1327.11902, 7.04427, 0.00000, 0.00000, 43.44909},
{2754, -1980.48608, 155.24883, 27.49554, 0.00000, 0.00000, 359.06995},
{2754, -2631.60693, -6.86652, 5.97444, 0.00000, 0.00000, 181.99303},
{2754, -2146.54395, -2332.90283, 30.43888, 0.00000, 0.00000, 232.48808},
{2754, 574.90155, -1419.96509, 14.22211, 0.00000, 0.00000, 283.89526},
{2754, 1227.24524, -1428.54846, 13.29063, 0.00000, 0.00000, 269.20294},
{2754, 1810.57153, -1873.97852, 13.38759, 0.00000, 0.00000, 180.44339},
{2754, 1493.07471, -1022.08618, 23.63997, 0.00000, 0.00000, 91.19178},
{2754, 2330.78149, 81.79469, 26.33336, 0.00000, 0.00000, 269.20883},
{2754, 711.71503, -542.69287, 16.04271, 0.00000, 0.00000, 180.17184},
{2754, 242.68755, -54.72442, 1.31352, 0.00000, 0.00000, 0.00000},
{2754, 1381.12219, 233.81693, 19.28907, 0.00000, 0.00000, 154.79193}
};
#define MAX_BANK_TRANSACTIONS_DIALOG 20
enum
{
BANK_TRANSACTION_WITHDRAW,
BANK_TRANSACTION_DEPOSIT,
BANK_TRANSACTION_TRANSFER_SENT,
BANK_TRANSACTION_TRANSFER_RECE,
BANK_TRANSACTION_CREATE_ACCOUNT,
BANK_TRANSACTION_BUY_PROPERTY,
BANK_TRANSACTION_SOLD_PROPERTY,
BANK_TRANSACTION_BUY_VEHICLE,
BANK_TRANSACTION_SOLD_VEHICLE
};
enum Bank_Interior_Info
{
bank_INTERIOR_TYPE,
Float:bank_X,
Float:bank_Y,
Float:bank_Z,
bank_WORLD,
bank_INTERIOR
};
new Bank_Interior_Positions[][Bank_Interior_Info] =
{
{INTERIOR_BANK_LS, 1407.356201, 1320.171142, 1501.083984, 5, 5},
{INTERIOR_BANK_SF, 1105.033935, 1529.565795, 1452.480957, 10, 10},
{INTERIOR_BANK_LV, 2690.869628, -610.943664, -71.658203, 15, 15}
};
enum Food_Info
{
food_NAME[24],
food_PRICE,
Float:food_HUNGRY,
Float:food_THIRST,
};
new PIZZA_FOOD[][Food_Info] =
{
{"Pizza de verduras", 25, 10.0, -0.1},
{"Pizza de jamón y queso", 60, 16.0, -0.1},
{"Pizza barbacoa", 40, 15.0, -0.1},
{"Pizza 4 quesos", 55, 14.0, -0.1},
{"Ensalada", 20, 10.0, 5.0},
{"Refresco de Sprunk", 30, 0.0, 12.0},
{"Refresco de Cola", 50, 0.0, 13.5},
{"Agua mineral", 30, 0.0, 19.0}
};
new BURGER_SHOT_FOOD[][Food_Info] =
{
{"Hamburguesa de ternera", 60, 16.0, -0.1},
{"Hamburguesa de pollo", 80, 10.0, -0.1},
{"Hamburguesa especial", 60, 12.0, -3.0},
{"Ensalada", 20, 10.0, 5.0},
{"Refresco de Sprunk", 30, 0.0, 12.0},
{"Refresco de Cola", 50, 0.0, 13.5},
{"Agua mineral", 30, 0.0, 19.0}
};
new CLUCKIN_BELL_FOOD[][Food_Info] =
{
{"Alitas de pollo", 60, 16.0, -0.1},
{"Plato especial", 80, 18.0, -2.0},
{"Ensalada", 20, 10.0, 5.0},
{"Refresco de Sprunk", 30, 0.0, 12.0},
{"Refresco de Cola", 50, 0.0, 13.5},
{"Agua mineral", 30, 0.0, 19.0}
};
enum Player_Toys_Info
{
player_toy_VALID,
player_toy_ID,
player_toy_NAME[24],
player_toy_ATTACHED,
player_toy_MODELID,
player_toy_BONE,
Float:player_toy_OFFSET_X,
Float:player_toy_OFFSET_Y,
Float:player_toy_OFFSET_Z,
Float:player_toy_ROT_X,
Float:player_toy_ROT_Y,
Float:player_toy_ROT_Z,
Float:player_toy_SCALE_X,
Float:player_toy_SCALE_Y,
Float:player_toy_SCALE_Z,
player_toy_COLOR_1,
player_toy_COLOR_2
};
new PLAYER_TOYS[MAX_PLAYERS][MAX_PLAYER_ATTACHED_OBJECTS][Player_Toys_Info]; //PTOYS = PlayerToys
new Toys_Bones[][24] =
{
{"Espalda"},
{"Cabeza"},
{"Brazo izquierdo"},
{"Brazo derecho"},
{"Mano izquierda"},
{"Mano derecha"},
{"Muslo izquierdo"},
{"Muslo derecho"},
{"Pie izquierdo"},
{"Pie derecho"},
{"Pantorrilla derecha"},
{"Pantorrilla izquierda"},
{"Antebrazo izquierdo"},
{"Antebrazo derecho"},
{"Hombro izquierdo"},
{"Hombro derecho"},
{"Cuello"},
{"Boca"}
};
enum Toys_Info
{
shop_toy_model[24],
shop_toy_modelid,
shop_toy_price_base,
shop_toy_price,
}
new Toys_Shop[][Toys_Info] =
{
{"motorcyclehelmet2", 18976, 2000, 0},
{"motorcyclehelmet3", 18977, 500, 0},
{"motorcyclehelmet4", 18978, 500, 0},
{"motorcyclehelmet5", 18979, 500, 0},
{"sillyhelmet2", 19114, 100, 0},
{"sillyhelmet3", 19115, 200, 0},
{"plainhelmet1", 19116, 75, 0},
{"plainhelmet2", 19117, 75, 0},
{"plainhelmet3", 19118, 75, 0},
{"plainhelmet4", 19119, 75, 0},
{"plainhelmet5", 19120, 75, 0},
{"glassestype1", 19006, 2000, 0},
{"glassestype2", 19007, 2000, 0},
{"glassestype3", 19008, 2000, 0},
{"glassestype4", 19009, 2000, 0},
{"glassestype5", 19010, 2000, 0},
{"glassestype6", 19011, 2000, 0},
{"glassestype7", 19012, 2000, 0},
{"glassestype8", 19013, 2000, 0},
{"glassestype9", 19014, 2000, 0},
{"glassestype10", 19015, 2000, 0},
{"glassestype11", 19016, 2000, 0},
{"glassestype12", 19017, 2000, 0},
{"glassestype13", 19018, 2000, 0},
{"glassestype14", 19019, 2000, 0},
{"glassestype15", 19020, 2000, 0},
{"glassestype16", 19021, 2000, 0},
{"glassestype17", 19022, 2000, 0},
{"glassestype18", 19023, 2000, 0},
{"glassestype19", 19024, 2000, 0},
{"glassestype20", 19025, 2000, 0},
{"glassestype21", 19026, 2000, 0},
{"glassestype22", 19027, 2000, 0},
{"glassestype23", 19028, 2000, 0},
{"glassestype24", 19029, 2000, 0},
{"glassestype25", 19030, 2000, 0},
{"glassestype26", 19031, 2000, 0},
{"glassestype27", 19032, 2000, 0},
{"glassestype28", 19033, 2000, 0},
{"glassestype29", 19034, 2000, 0},
{"glassestype30", 19035, 2000, 0},
{"policeglasses1", 19138, 2300, 0},
{"policeglasses2", 19139, 2300, 0},
{"policeglasses3", 19140, 2300, 0},
{"bandana1", 18891, 600, 0},
{"bandana2", 18892, 600, 0},
{"bandana3", 18893, 600, 0},
{"bandana4", 18894, 600, 0},
{"bandana5", 18895, 600, 0},
{"bandana6", 18896, 600, 0},
{"bandana7", 18897, 600, 0},
{"bandana8", 18898, 600, 0},
{"bandana9", 18899, 600, 0},
{"bandana10", 18900, 600, 0},
{"bandana11", 18901, 600, 0},
{"bandana12", 18902, 600, 0},
{"bandana13", 18903, 600, 0},
{"bandana14", 18904, 600, 0},
{"bandana15", 18905, 600, 0},
{"bandana16", 18906, 600, 0},
{"bandana17", 18907, 600, 0},
{"bandana18", 18908, 600, 0},
{"bandana19", 18909, 600, 0},
{"bandana20", 18910, 600, 0},
{"mask1", 18911, 500, 0},
{"mask2", 18912, 500, 0},
{"mask3", 18913, 500, 0},
{"mask4", 18914, 500, 0},
{"mask5", 18915, 500, 0},
{"mask6", 18916, 500, 0},
{"mask7", 18917, 500, 0},
{"mask8", 18918, 500, 0},
{"mask9", 18919, 500, 0},
{"mask10", 18920, 500, 0},
{"watchtype1", 19039, 3000, 0},
{"watchtype2", 19040, 3000, 0},
{"watchtype3", 19041, 3000, 0},
{"watchtype4", 19042, 3000, 0},
{"watchtype5", 19043, 3000, 0},
{"watchtype6", 19044, 3000, 0},
{"watchtype7", 19045, 3000, 0},
{"watchtype8", 19046, 3000, 0},
{"watchtype9", 19047, 3000, 0},
{"watchtype10", 19048, 3000, 0},
{"watchtype11", 19049, 3000, 0},
{"watchtype12", 19050, 3000, 0},
{"watchtype13", 19051, 3000, 0},
{"watchtype14", 19052, 3000, 0},
{"watchtype15", 19053, 3000, 0},
{"beret1", 18921, 1150, 0},
{"beret2", 18922, 1150, 0},
{"beret3", 18923, 1150, 0},
{"beret4", 18924, 1150, 0},
{"beret5", 18925, 1150, 0},
{"cj_tommy_hat", 2052, 200, 0},
{"cj_jerry_hat", 2053, 200, 0},
{"cj_capt_hat", 2054, 2000, 0},
{"hardhat1", 18638, 300, 0},
{"hardhat2", 19093, 450, 0},
{"hardhat3", 19160, 450, 0},
{"blackhat1", 18639, 600, 0},
{"hat1", 18926, 650, 0},
{"hat2", 18927, 650, 0},
{"hat3", 18928, 650, 0},
{"hat4", 18929, 650, 0},
{"hat5", 18930, 650, 0},
{"hat6", 18931, 650, 0},
{"hat7", 18932, 650, 0},
{"hat8", 18933, 650, 0},
{"hat9", 18934, 650, 0},
{"hat10", 18935, 650, 0},
{"hatboater1", 18944, 800, 0},
{"hatboater2", 18945, 800, 0},
{"hatboater3", 18946, 800, 0},
{"hatbowler1", 18947, 1200, 0},
{"hatbowler2", 18948, 1200, 0},
{"hatbowler3", 18949, 1200, 0},
{"hatbowler4", 18950, 1200, 0},
{"hatbowler5", 18951, 1200, 0},
{"hatbowler6", 19488, 1200, 0},
{"cowboyhat1", 19095, 1150, 0},
{"cowboyhat2", 18962, 1150, 0},
{"cowboyhat3", 19096, 1150, 0},
{"cowboyhat4", 19097, 1150, 0},
{"cowboyhat5", 19098, 1150, 0},
{"hatman1", 18967, 650, 0},
{"hatman2", 18968, 650, 0},
{"hatman3", 18969, 650, 0},
{"hatman3", 18969, 650, 0},
{"hattiger1", 18970, 1500, 0},
{"hatcool1", 18971, 1500, 0},
{"hatcool2", 18972, 1500, 0},
{"hatcool3", 18973, 1500, 0},
{"santahat1", 19064, 100, 0},
{"santahat2", 19065, 100, 0},
{"santahat3", 19066, 100, 0},
{"hoodyhat1", 19067, 500, 0},
{"hoodyhat2", 19068, 500, 0},
{"hoodyhat3", 19069, 500, 0},
{"policehat1", 19161, 2500, 0},
{"policehat2", 19162, 2500, 0},
{"tophat01", 19352, 700, 0},
{"tophat02", 19487, 700, 0},
{"pilothat01", 19520, 3000, 0},
{"policehat01", 19521, 3000, 0},
{"witcheshat1", 19528, 150, 0},
{"strawhat1", 19553, 450, 0},
{"pizzahat1", 19558, 100, 0},
{"hikerbackpack1", 19559, 600, 0},
{"hair1", 19517, 1000, 0},
{"hair2", 19516, 1000, 0},
{"hair3", 19077, 1000, 0},
{"hair4", 18975, 1000, 0},
{"cluckinbellhat", 19137, 2500, 0},
{"firehat01", 19330, 3000, 0},
{"firehat02", 19331, 3000, 0},
{"burgershothat1", 19094, 2000, 0},
{"captruker1", 18961, 1000, 0},
{"bassguitar01", 19317, 2100, 0},
{"bassguitar02", 19318, 2100, 0},
{"boxinghelmet01", 18952, 1500, 0},
{"hockeymas1", 19036, 1700, 0},
{"theparrot1", 19078, 7500, 0},
{"armour", 19515, 7000, 0},
{"bdupsmask1", 11704, 3500, 0},
{"glimpmask1", 19163, 2500, 0},
{"headphones02", 19422, 1500, 0},
{"parachute", 371, 2200, 0}
};
new
Binco_Shop_Male_Skins[][] =
{
/* BINCO - HOMBRE */
{4, 75 , 0},
{5, 75 , 0},
{6, 90 , 0},
{7, 80 , 0},
{21, 121 , 0},
{44, 65 , 0},
{47, 119 , 0},
{101, 149 , 0},
{127, 89 , 0},
{128, 25 , 0},
{134, 25 , 0},
{135, 25 , 0},
{137, 19 , 0},
{160, 55 , 0},
{161, 68 , 0},
{168, 39 , 0},
{176, 79 , 0},
{177, 65 , 0},
{179, 110 , 0},
{184, 150 , 0},
{188, 160 , 0},
{200, 15 , 0},
{212, 30 , 0},
{230, 10 , 0},
{258, 69 , 0},
{259, 69 , 0},
{262, 50 , 0},
{86, 70 , 0},
{102, 100 , 0},
{103, 100 , 0},
{104, 100 , 0},
{105, 100 , 0},
{106, 100 , 0},
{107, 100 , 0},
{108, 100 , 0},
{109, 100 , 0},
{110, 100 , 0},
{111, 100 , 0},
{112, 100 , 0},
{113, 100 , 0},
{114, 100 , 0},
{115, 100 , 0},
{116, 100 , 0},
{117, 100 , 0},
{118, 100 , 0},
{119, 100 , 0},
{120, 100 , 0},
{121, 100 , 0},
{122, 100 , 0},
{123, 100 , 0},
{124, 100 , 0},
{125, 100 , 0},
{126, 100 , 0}
},
Binco_Shop_Female_Skins[][] =
{
/* BINCO - MUJER */
{13, 120 , 0},
{41, 59 , 0},
{56, 190 , 0},
{65, 110 , 0},
{69, 100 , 0},
{75, 50 , 0},
{89, 69 , 0},
{151, 89 , 0},
{152, 3000 , 0},
{207, 500 , 0},
{226, 120 , 0},
{298, 900 , 0}
},
Suburban_Shop_Male_Skins[][] =
{
/* SUBURBAN - HOMBRE */
{2, 100 , 0},
{3, 140 , 0},
{20, 190 , 0},
{43, 180 , 0},
{48, 145 , 0},
{60, 250 , 0},
{100, 300 , 0},
{112, 200 , 0},
{119, 49 , 0},
{143, 199 , 0},
{180, 150 , 0},
{183, 100 , 0},
{184, 140 , 0},
{241, 200 , 0},
{242, 190 , 0},
{247, 450 , 0},
{248, 499 , 0},
{249, 650 , 0},
{264, 5 , 0}
},
Suburban_Shop_Female_Skins[][] =
{
/* SUBURBAN - MUJER */
{39, 109 , 0},
{56, 100 , 0},
{88, 140 , 0},
{131, 200 , 0},
{195, 199 , 0}
},
Prolaps_Shop_Male_Skins[][] =
{
/* PROLAPS - HOMBRE */
{29, 129 , 0},
{36, 140 , 0},
{37, 150 , 0},
{51, 160 , 0},
{52, 170 , 0},
{96, 200 , 0},
{99, 700 , 0},
{206, 499 , 0},
{154, 199 , 0}
},
Prolaps_Shop_Female_Skins[][] =
{
/* PROLAPS - MUJER */
{41, 199 , 0},
{90, 250 , 0},
{92, 860 , 0},
{138, 150, 0},
{139, 150, 0},
{140, 159, 0},
{190, 150, 0},
{192, 180, 0},
{193, 195, 0}
},
Didier_Shop_Male_Skins[][] =
{
/* DIDIER - HOMBRE */
{17, 1500 , 0},
{46, 1900 , 0},
{57, 1220 , 0},
{82, 3400 , 0},
{83, 3400 , 0},
{84, 3400 , 0},
{124, 3500 , 0},
{147, 6000 , 0},
{163, 3000 , 0},
{166, 3000 , 0},
{171, 4000 , 0},
{187, 4500 , 0},
{223, 3100 , 0},
{240, 1500 , 0},
{295, 3000 , 0}
},
Didier_Shop_Female_Skins[][] =
{
/* DIDIER - MUJER */
{11, 1500 , 0},
{12, 3000 , 0},
{40, 2500 , 0},
{91, 8000 , 0},
{141, 3500 , 0},
{169, 4000 , 0},
{172, 2100 , 0},
{194, 2000 , 0},
{214, 25000, 0},
{215, 3200 , 0},
{216, 10500, 0},
{219, 9500 , 0}
},
Victim_Shop_Male_Skins[][] =
{
/* VICTIM - HOMBRE */
{19, 400 , 0},
{46, 1200 , 0},
{59, 900 , 0},
{72, 599 , 0},
{73, 699 , 0},
{98, 339 , 0},
{121, 200 , 0},
{170, 500 , 0},
{185, 400 , 0},
{186, 900 , 0},
{188, 350 , 0},
{221, 700 , 0},
{223, 1200 , 0},
{250, 50000, 0},
{289, 699 , 0},
{299, 700 , 0},
{303, 500 , 0},
{304, 700 , 0}
},
Victim_Shop_Female_Skins[][] =
{
/* VICTIM - MUJER */
{12, 2900 , 0},
{40, 3000 , 0},
{55, 1010 , 0},
{56, 400 , 0},
{192, 3000 , 0},
{211, 3500 , 0},
{226, 600 , 0},
{233, 900 , 0}
},
Zip_Shop_Male_Skins[][] =
{
/* ZIP - HOMBRE */
{121, 190 , 0},
{170, 500 , 0},
{185, 400 , 0},
{186, 900 , 0},
{19, 400 , 0},
{46, 1200 , 0},
{59, 905 , 0},
{72, 400 , 0},
{73, 650 , 0},
{98, 320 , 0},
{250, 49999, 0},
{289, 622 , 0},
{299, 730 , 0},
{303, 550 , 0},
{188, 350 , 0},
{221, 700 , 0},
{223, 1200 , 0},
{304, 700 , 0}
},
Zip_Shop_Female_Skins[][] =
{
/* ZIP - MUJER */
{56, 405 , 0},
{192, 3010 , 0},
{211, 3520 , 0},
{226, 620 , 0},
{233, 950 , 0},
{12, 2904 , 0},
{40, 3002 , 0},
{55, 1011 , 0}
};
enum
{
PICKUP_TYPE_NONE,
PICKUP_TYPE_ENTER_EXIT,
PICKUP_TYPE_ATM,
PICKUP_TYPE_PROPERTY
};
new Intro_Skins[][] =
{
{ // HOMBRE
170,
158,
184,
220,
183,
73
},
{ // MUJER
192,
40,
226,
41,
13,
298,
}
};
new Intro_Music[][] =
{
"https://www.dropbox.com/s/u8mjyl5khi9sr1b/srp.mp3?dl=1",
"https://www.dropbox.com/s/m2hwiyq94ow8eff/kool.mp3?dl=1",
"https://www.dropbox.com/s/xyru1ik1e72r5qg/give.mp3?dl=1"
};
new Float:Fuel_Stations[][] =
{
{1942.679443, -1771.374511, 13.390598},
{654.678710, -570.627807, 16.335937},
{1384.011962, 457.825012, 19.995258},
{-1669.027221, 411.541076, 7.179687},
{-2409.644042, 976.147644, 45.307708},
{-1328.633666, 2675.913818, 50.062500},
{612.890563, 1692.938720, 6.992187},
{-1607.715820, -2717.499023, 48.539062},
{2146.831542, 2743.855224, 10.820312},
{2197.993408, 2475.015625, 10.820312},
{2115.124267, 926.094909, 10.960937},
{1595.974731, 2193.016845, 10.820312},
{-1477.559326, 1858.962524, 32.639846},
{-100.281738, -1178.148193, 2.940625}
};
new Float:Hospital_Spawn_Positions[][] =
{
{2034.197875, -1403.040039, 17.294845, 180.0},
{1172.832763, -1323.269531, 15.400051, 270.0},
{1242.235595, 328.113281, 19.755510, 0.0},
{-2201.566162, -2307.610839, 30.625000, 320.0},
{-2655.108886, 639.278625, 14.453125, 180.0},
{-318.812774, 1050.359130, 20.340259, 0.0},
{-1514.855590, 2520.366699, 55.909828, 0.0},
{1583.311401, 1768.952758, 10.820312, 90.0}
};
new Float:Hospital_Cameras_Positions[][] =
{
{2007.3301, -1442.3809, 26.7332, 2008.0043, -1441.6445, 26.4982},
{1209.2427, -1314.4705, 23.4945, 1208.5284, -1315.1681, 23.3195},
{1260.2025, 342.6251, 22.3913, 1259.4681, 341.9478, 22.2512},
{-2200.5859, -2316.3057, 31.7932, -2200.8340, -2315.3367, 31.6932},
{-2530.8450, 568.0942, 29.4603, -2531.6973, 568.6146, 29.4553},
{-305.5014, 1068.6696, 24.2657, -306.1943, 1067.9514, 24.0607},
{-1504.2892, 2553.1243, 61.1113, -1504.5568, 2552.1619, 60.8414},
{1624.5881, 1837.4691, 12.5740, 1623.9382, 1836.7124, 12.4690}
};
// CONCEPTOS
enum RuleInfo
{
Rule_Title[64],
Rule_Info[512],
Rule_Pages
};
new Server_Rules[][RuleInfo] =
{
{
"RolePlay_(RP)",
"Un_modo_de_juego_donde_vamos_a_crear_nuestro~n~\
propio_personaje,_y_hacernos_un_hueco_en_el~n~\
juego,_donde_serás_conocido_por_tus_acciones,~n~\
mentalidad,_forma_de_actuar_y_mucho_más.~n~\
~n~\
Teniendo_esto_en_cuenta,_vamos_a_explicarte~n~\
los_conceptos_básicos_de_"SERVER_NAME".", 7
},
{
"PowerGaming_(PG)",
"Se_conoce_como_realizar_acciones_que_son~n~\
imposibles_de_realizar_en_la_vida_real.~n~\
~n~\
Un_ejemplo_de_PowerGaming_podría_sería_empujar~n~\
un_camion_siendo_una_sola_persona.", 5
},
{
"DeathMatch_(DM)_y_FreeKill_(FK)",
"Consiste_en_realizar_daño_a_otro_jugador~n~\
sin_razones_que_justifiquen_la_agresión.~n~\
~n~\
Realizar_DM_a_un_gran_número_de_jugadores_se~n~\
conoce_como_FreeKill_(FK).~n~\
~n~\
"SERVER_NAME"_no_es_el_sitio_para_realizar~n~\
DM.", 8
},
{
"InCharacter(IC)_y_OutOfCharacter(OOC)",
"IC_es_la_información_o_charla_obtenida~n~\
por_el_personaje_dentro_del_juego.~n~\
~n~\
OOC_es_la_información_obtenida_fuera_del_juego~n~\
o_por_canales_OOC_del_servidor.~n~", 5
},
{
"MetaGaming(MG)",
"Éste_término_aplica_al_obtener_información_de~n~\
un_medio_Out_of_Channel_para_beneficiarse_de.~n~\
ella_de_manera_InCharacter.~n~\
~n~\
Además_se_considera_MG_gran_al_uso_de_información~n~\
obtenida_de_modo_Out_of_Channel.", 6
},
{
"CarJack(CJ)_e_InsultosOOC(IOOC)",
"CJ_hace_referencia_a_robar_vehículos_sin~n~\
rol_previo.~n~\
~n~\
IOOC_es_insultar_a_un_usuario_por_canales~n~\
OOC_del_servidor. Ésto_está_totalmente~n~\
prohíbido.", 6
},
{
"Spam_y_Flood",
"Spam_es_mencionar_una_comunidad_externa_a~n~\
"SERVER_NAME"_o_un_programa_que_de_ventajas_ante~n~\
otros_usuarios.~n~\
~n~\
Flood_hace_referencia_a_mandar_el_mismo_texto~n~\
repetidas_veces.", 6
},
{
""SERVER_NAME"",
"Para_más_conceptos_para_así_no_tener_problemas~n~\
en_un_futuro_te_recomendamos_visitar_en_nuestro~n~\
foro_(www.sa-mp.com)_la_sección_guías.~n~\
ahí_te_informas_todo_al_respecto_del_GM_y_las~n~\
reglas.", 5
}
};
/* TEXTDRAWS */
#define MAX_PLAYER_MAP_GPS_POINTS 20
enum Player_Textdraws_Enum
{
PlayerText:ptextdraw_GUIDE[5],
PlayerText:ptextdraw_HOSPITAL[3], //Barra recuperando vida despues de morir
PlayerText:ptextdraw_CLOTHING_SHOP[6], //Tiendas de ropas
PlayerText:ptextdraw_REGISTER_SKIN[10],
PlayerText:ptextdraw_TOYS_SHOP[10],
PlayerText:ptextdraw_PROPERTY_CONSTRUCTOR[6],
PlayerText:ptextdraw_SPEEDO_METER[2],
PlayerText:ptextdraw_TAXI_METER[2],
PlayerText:ptextdraw_TRUCK_LOAD[4],
PlayerText:ptextdraw_RECYCLE_TRASH[3],
PlayerText:ptextdraw_PLANT_PLANT[4],
PlayerText:ptextdraw_PLAYER_GPS_MAP[MAX_PLAYER_MAP_GPS_POINTS],
PlayerText:ptextdraw_SHOP_BUTTONS[5],
PlayerText:ptextdraw_SHOP_ARTICLES_PAGE,
PlayerText:ptextdraw_SHOP_ARTICLES_MODEL[6],
PlayerText:ptextdraw_SHOP_ARTICLES_PRICE[6],
PlayerText:ptextdraw_SHOP_ARTICLE_NUMBER,
PlayerText:ptextdraw_SHOP_ARTICLE_INFO,
PlayerText:ptextdraw_SHOP_ARTICLE_MODELID,
PlayerText:ptextdraw_TUNING_SHOP,
PlayerText:ptextdraw_MESSAGE,
PlayerText:ptextdraw_HUD[4]
};
new PlayerTextdraws[MAX_PLAYERS][Player_Textdraws_Enum];
#define map_td_X 3.0
#define map_td_Y 134.0
#define map_td_SIZE_X 175.0
#define map_td_SIZE_Y 190.0
enum Textdraws_Enum
{
Text:textdraw_PLAYER_REP_BACK[2],
Text:textdraw_LOAD_SCREEN[5],
Text:textdraw_SERVER_TIME,
Text:textdraw_GPS_MAP[3],
Text:textdraw_SHOP[5],
Text:textdraw_SHOP_ARTICLES_BOX[6],
Text:textdraw_SHOP_ARTICLE_BOX,
Text:textdraw_TERRITORY_BOX,
Text:textdraw_SHOP_TUNING[5],
Text:textdraw_HUD[5]
};
new Textdraws[Textdraws_Enum];
/*enum
{
ACCOUNT_STATE_NORMAL,
ACCOUNT_STATE_BANNED,
ACCOUNT_STATE_TEMPBAN
};*/
#define MIN_PASS_LENGTH 6
#define MAX_PASS_LENGTH 18
enum Account_Enum
{
ac_ID,
ac_IP[16],
ac_NAME[24],
ac_EMAIL[32],
ac_PASS[64 + 1],
ac_SALT[16],
ac_LAST_CONNECTION[24],
ac_TIME_PLAYING,
ac_LEVEL,
ac_REP,
ac_STATE,
reg_DATE[24], //Fecha de registro de la tabla REGISTRO
ac_DOUBT_CHANNEL,
ac_TIME_FOR_REP, // En MS
ac_ADMIN_LEVEL,
ac_PAYDAY_REP,
ac_SU,
ac_SU_EXPIRE_DATE[24],
ac_SD
};
new ACCOUNT_INFO[MAX_PLAYERS][Account_Enum]; // AI (AccountInfo)
enum Character_Enum
{
ch_SKIN,
ch_CASH,
Float:ch_POS[3],
Float:ch_ANGLE,
ch_STATE,
ch_INTERIOR,
ch_INTERIOR_EXTRA,
ch_FIGHT_STYLE,
Float:ch_HEALTH,
Float:ch_ARMOUR,
ch_SEX,
Float:ch_HUNGRY,
Float:ch_THIRST,
ch_BLACK_MARKET_LEVEL,
ch_POLICE_JAIL_TIME,
ch_POLICE_JAIL_ID //interior
};
new CHARACTER_INFO[MAX_PLAYERS][Character_Enum]; // CI (CharacterInfo)
enum Bank_Account_Enum
{
bank_account_ID,
bank_account_BALANCE
};
new BANK_ACCOUNT[MAX_PLAYERS][Bank_Account_Enum]; //BA (BankAccount)
#define MAX_PLAYER_POCKET_OBJECTS 10
enum Player_Pocket_Enum
{
bool:player_pocket_VALID,
player_pocket_object_ID,
player_pocket_object_NAME[24],
Float:player_pocket_object_HUNGRY,
Float:player_pocket_object_THIRST,
player_pocket_object_DRUNK
};
new PLAYER_POCKET[MAX_PLAYERS][MAX_PLAYER_POCKET_OBJECTS][Player_Pocket_Enum]; // PP (PlayerPocket)
new
DIALOG_FOOD_PIZZA_String[800],
DIALOG_FOOD_CLUCKIN_String[800],
DIALOG_FOOD_BURGER_String[800],
DIALOG_247_LIST_String[34 + 55 * sizeof Supermarket_Product_List],
DIALOG_ANIMS_String[1000],
DIALOG_PLAYER_GPS_SITE_0_String[90 * (sizeof(Hospital_Spawn_Positions) + 1)],
DIALOG_PLAYER_GPS_SITE_7_String[90 * (sizeof(SELL_VEHICLES_SHOPS_SPAWN) + 1)],
DIALOG_CREATE_CREW_COLOR_String[4200];
#define HidePlayerDialog(%1) ShowPlayerDialog(%1, -1, 0, " ", " ", " ", " ")
// PLAYER WEAPONS
#define NO_WEAPON 0
enum enum_WEAPON_INFO
{
bool:weapon_info_ANTI_CHEAT,
bool:weapon_info_AMMO,
weapon_info_TYPE,
weapon_info_NAME[32],
weapon_info_SLOT,
weapon_info_SHOT_TIME
};
new WEAPON_INFO[][enum_WEAPON_INFO] =
{
{false, false, NO_WEAPON, "Puño", 0, 250},
{true, false, WEAPON_BRASSKNUCKLE, "Manopla", 0, 250},
{true, false, WEAPON_GOLFCLUB, "Palo de golf", 1, 250},
{true, false, WEAPON_NITESTICK, "Porra", 1, 250},
{true, false, WEAPON_KNIFE, "Cuchillo", 1, 250},
{true, false, WEAPON_BAT, "Bate", 1, 250},
{true, false, WEAPON_SHOVEL, "Pala", 1, 250},
{true, false, WEAPON_POOLSTICK, "Taco", 1, 250},
{true, false, WEAPON_KATANA, "Katana", 1, 250},
{true, false, WEAPON_CHAINSAW, "Motosierra", 1, 30},
{true, false, WEAPON_DILDO, "Dildo morado", 10, 250},
{true, false, WEAPON_DILDO2, "Dildo", 10, 250},
{true, false, WEAPON_VIBRATOR, "Vibrador", 10, 250},
{true, false, WEAPON_VIBRATOR2, "Vibrador plateado", 10, 250},
{true, false, WEAPON_FLOWER, "Flores", 10, 250},
{true, false, WEAPON_CANE, "Bastón", 10, 250},
{true, true, WEAPON_GRENADE, "Granada", 8, 500},
{true, true, WEAPON_TEARGAS, "Gas lacrimógeno", 8, 500},
{true, true, WEAPON_MOLTOV, "Cocktail Molotov", 8, 500},
{false, false, NO_WEAPON, "", 0, 0},
{false, false, NO_WEAPON, "", 0, 0},
{false, false, NO_WEAPON, "", 0, 0},
{true, true, WEAPON_COLT45, "9mm", 2, 160},
{true, true, WEAPON_SILENCED, "9mm silenciada", 2, 120},
{true, true, WEAPON_DEAGLE, "Desert Eagle", 2, 950},
{true, true, WEAPON_SHOTGUN, "Escopeta", 3, 800},
{true, true, WEAPON_SAWEDOFF, "Escopeta recortada", 3, 120},
{true, true, WEAPON_SHOTGSPA, "Escopeta de combate", 3, 120},
{true, true, WEAPON_UZI, "Micro UZI", 4, 70},
{true, true, WEAPON_MP5, "MP5", 4, 70},
{true, true, WEAPON_AK47, "Ak-47", 5, 80},
{true, true, WEAPON_M4, "M4", 5, 80},
{true, true, WEAPON_TEC9, "TEC-9", 4, 70},
{true, true, WEAPON_RIFLE, "Rifle", 6, 1000},
{true, true, WEAPON_SNIPER, "Sniper", 6, 1000},
{true, true, WEAPON_ROCKETLAUNCHER, "Lanzacohetes RPG", 7, 1000},
{true, true, WEAPON_HEATSEEKER, "Lanzacohetes HS", 7, 1000},
{true, true, WEAPON_FLAMETHROWER, "Lanzallamas", 7, 500},
{true, true, WEAPON_MINIGUN, "Minigun", 7, 0},
{true, true, WEAPON_SATCHEL, "Bomba detonadora", 8, 500},
{false, false, WEAPON_BOMB, "Detonador", 12, 500},
{true, true, WEAPON_SPRAYCAN, "Bote de spray", 9, 10},
{true, true, WEAPON_FIREEXTINGUISHER, "Extintor", 9, 10},
{true, false, WEAPON_CAMERA, "Cámara", 9, 500},
{true, false, NO_WEAPON, "Gafas de visión nocturna", 11, 0},
{true, false, NO_WEAPON, "Gafas térmicas", 11, 0},
{false, false, WEAPON_PARACHUTE, "Paracaídas", 11, 0}
};
enum enum_BLACK_MARKT_WEAPONS
{
black_market_EXP,
black_market_WEAPON_ID,
black_market_WEAPON_PRICE_BASE,
black_market_WEAPON_PRICE
};
new BLACK_MARKT_WEAPONS[][enum_BLACK_MARKT_WEAPONS] =
{
{0, 4, 100, 0},
{0, 5, 100, 0},
{0, 10, 50, 0},
{0, 22, 600, 0},
{0, 23, 650, 0},
{100, 24, 1200, 0},
{100, 33, 1500, 0},
{100, 25, 1600, 0},
{200, 26, 2200, 0},
{200, 27, 2800, 0},
{200, 28, 2500, 0},
{200, 32, 2800, 0},
{250, 29, 3500, 0},
{250, 30, 3600, 0},
{250, 31, 3800, 0},
{300, 34, 6500, 0}
};
enum enum_PLAYER_WEAPONS
{
bool:player_weapon_VALID,
player_weapon_DB_ID,
player_weapon_ID,
player_weapon_AMMO
};
new PLAYER_WEAPONS[MAX_PLAYERS][13][enum_PLAYER_WEAPONS];
enum
{
TYPE_WARNING,
TYPE_KICK,
TYPE_BAN,
TYPE_TEMP_BAN
};
enum
{
CMD_USER,
CMD_HELPER,
CMD_MODERATOR,
CMD_SUPER_MODERATOR,
CMD_GAME_OPERATOR,
CMD_ADMIN
};
new ADMIN_LEVELS[][] =
{
"Ciudadano",
"Ayudante",
"Moderador",
"Super Moderador",
"Operador de Juego",
"Administrador"
};
public OnPlayerConnect(playerid)
{
PLAYER_TEMP[playerid][pt_GAME_STATE] = GAME_STATE_CONNECTED;
PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] = -1;
PLAYER_TEMP[playerid][pt_PROPERTY_INDEX] = -1;
PLAYER_TEMP[playerid][pt_CLOTHING_SHOP] = -1;
PLAYER_TEMP[playerid][pt_HUD_TEXTDRAWS] = false;
PLAYER_TEMP[playerid][pt_SEE_ACMD_LOG] = true;
PLAYER_TEMP[playerid][pt_SEE_AC_LOG] = true;
PLAYER_TEMP[playerid][pt_REGISTER_ACTOR] = INVALID_ACTOR_ID;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = INVALID_PLAYER_ID;
PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID] = INVALID_PLAYER_ID;
PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT] = INVALID_STREAMER_ID;
PLAYER_TEMP[playerid][pt_PIZZA_CHECKPOINT] = INVALID_STREAMER_ID;
PLAYER_TEMP[playerid][pt_LUMBERJACK_CHECKPOINT] = INVALID_STREAMER_ID;
PLAYER_TEMP[playerid][pt_HARVERT_CHECKPOINT] = INVALID_STREAMER_ID;
PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT] = INVALID_STREAMER_ID;
PLAYER_TEMP[playerid][pt_PIZZA_ACTOR] = INVALID_STREAMER_ID;
PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] = INVALID_PLAYER_ID;
PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] = INVALID_VEHICLE_ID;
PLAYER_TEMP[playerid][pt_LAST_VEHICLE_ID] = INVALID_VEHICLE_ID;
PLAYER_TEMP[playerid][pt_PIVOT_OBJECT] = INVALID_OBJECT_ID;
PLAYER_TEMP[playerid][pt_PLAYER_LUMBERJACK_TREE] = -1;
for(new i = 0; i != MAX_OBJECTS_PER_ROUTE; i ++) TRASH_PLAYER_OBJECTS[playerid][i] = INVALID_STREAMER_ID;
GetPlayerName(playerid, PLAYER_TEMP[playerid][pt_NAME], 24);
GetPlayerIp(playerid, PLAYER_TEMP[playerid][pt_IP], 16);
EnablePlayerCameraTarget(playerid, true);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
TogglePlayerControllableEx(playerid, true);
HidePlayerDialog(playerid);
ResetPlayerMoney(playerid);
CancelSelectTextDrawEx(playerid);
SetPlayerTime(playerid, 12, 0);
SetPlayerWeather(playerid, 0);
SetPlayerScore(playerid, 0);
ResetPlayerWeapons(playerid);
SetPlayerColorEx(playerid, PLAYER_COLOR);
CancelEdit(playerid);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][0]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][1]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][2]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][3]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][4]);
if(!IsValidRPName(PLAYER_TEMP[playerid][pt_NAME]))
{
PLAYER_TEMP[playerid][pt_USER_VALID_NAME] = false;
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "Aviso", "Bienvenido, has entrado a un servidor de rol.\n\nTu nombre no cumple con el formato necesario.\nPor favor utilice el formato: Nombre_Apellido.", "Entiendo", "");
KickEx(playerid, 500);
return 1;
}
new num_players_on_ip = GetNumberOfPlayersOnThisIP(PLAYER_TEMP[playerid][pt_IP]);
if(num_players_on_ip > 3)
{
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "Aviso", "Ha sido expulsado por exceder el máximo de conexiones desde una IP.", "Entiendo", "");
KickEx(playerid, 500);
return 1;
}
new DB_Query[550];
format(DB_Query, sizeof DB_Query, "SELECT NOW() AS `NOW`, `BANS`.*, `BAD_HISTORY`.* FROM `BANS`, `BAD_HISTORY` WHERE (`BANS`.`NAME` = '%q' OR `BANS`.`IP` = '%q') AND `BAD_HISTORY`.`ID` = `BANS`.`ID_HISTORY`;", PLAYER_TEMP[playerid][pt_NAME], PLAYER_TEMP[playerid][pt_IP]);
mysql_tquery(SMF_DATABASE, DB_Query, "BannedCheck", "i", playerid);
return 1;
}
forward BannedCheck(playerid);
public BannedCheck(playerid)
{
new DB_Query[550];
new count;
cache_get_row_count(count);
if(count > 0)
{
new now[24], name[24], expire_date[24], type, by, text[128], date[24];
cache_get_value_name(0, "NOW", now, 24);
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name(0, "EXPIRE_DATE", expire_date, 24);
cache_get_value_name_int(0, "TYPE", type);
cache_get_value_name_int(0, "BY2", by);
cache_get_value_name(0, "TEXT", text, 128);
cache_get_value_name(0, "DATE", date, 24);
if(type == TYPE_BAN)
{
new dialog[480];
format(dialog, sizeof dialog,
"\
Esta IP o cuenta está expulsada permanentemente, detalles:\n\
\n\
Tu nombre: %s\n\
\n\
Nombre: %s\n\
Expulsado por: %d\n\
Fecha expulsión: %s\n\
Razón: %s\n\
\n\
",
PLAYER_TEMP[playerid][pt_NAME],
name, by, date, text
);
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "Aviso", dialog, "Entiendo", "");
KickEx(playerid, 500);
}
else if(type == TYPE_TEMP_BAN)
{
format(DB_Query, sizeof DB_Query, "SELECT * FROM `BANS` WHERE (`NAME` = '%q' OR `IP` = '%q') AND UNIX_TIMESTAMP() >= `EXPIRE_DATE_INT`;", PLAYER_TEMP[playerid][pt_NAME], PLAYER_TEMP[playerid][pt_IP]);
mysql_tquery(SMF_DATABASE, DB_Query, "CheckTempBanned", "isissss", playerid, name, by, date, text, now, expire_date);
return 1;
}
}
if(PLAYER_TEMP[playerid][pt_KICKED]) return 1;
ContinueConnection(playerid);
return 1;
}
forward CheckTempBanned(playerid, name, by, date, text, now, expire_date);
public CheckTempBanned(playerid, name, by, date, text, now, expire_date)
{
new DB_Query[550];
new count;
cache_get_row_count(count);
if(count > 0)
{
format(DB_Query, sizeof DB_Query, "DELETE FROM `BANS` WHERE (`NAME` = '%q' OR `IP` = '%q');", PLAYER_TEMP[playerid][pt_NAME], PLAYER_TEMP[playerid][pt_IP]);
mysql_tquery(SMF_DATABASE, DB_Query);
}
else
{
new dialog[600];
format(dialog, sizeof dialog,
"\
Esta IP o cuenta está expulsada temporalmente, detalles:\n\
\n\
Tu nombre: %s\n\
Tu IP: %s\n\
\n\
Nombre: %s\n\
Expulsado por: %d\n\
Fecha expulsión: %s\n\
Razón: %s\n\
\n\
Fecha actual: %s\n\
Fecha readmisión: %s\n\
\n\
",
PLAYER_TEMP[playerid][pt_NAME], PLAYER_TEMP[playerid][pt_IP],
name, by, date, text, now, expire_date
);
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "Aviso", dialog, "Entiendo", "");
KickEx(playerid, 500);
}
if(PLAYER_TEMP[playerid][pt_KICKED]) return 1;
ContinueConnection(playerid);
return 1;
}
forward ContinueConnection(playerid);
public ContinueConnection(playerid)
{
new DB_Query[550];
PLAYER_TEMP[playerid][pt_USER_VALID_NAME] = true;
SetRolePlayNames(playerid);
format(DB_Query, sizeof(DB_Query),
"\
SELECT CUENTA.*, REGISTRO.DATE, PERSONAJE.INTERIOR, PERSONAJE.LOCAL_INTERIOR, PERSONAJE.POS_X, PERSONAJE.POS_Y, PERSONAJE.POS_Z, PERSONAJE.ANGLE, PERSONAJE.STATE AS PSTATE FROM `CUENTA`, `REGISTRO`, `PERSONAJE` WHERE CUENTA.`NAME` = '%q' AND REGISTRO.`ID_USER` = CUENTA.`ID` AND PERSONAJE.`ID_USER` = CUENTA.`ID`;\
UPDATE `CUENTA` SET `CONNECTED` = '1', `PLAYERID` = '%d' WHERE `NAME` = '%q';\
", PLAYER_TEMP[playerid][pt_NAME], playerid, PLAYER_TEMP[playerid][pt_NAME]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPlayerData", "i", playerid);
return 1;
}
forward LoadPlayerData(playerid);
public LoadPlayerData(playerid)
{
new count;
cache_get_row_count(count);
if(count > 0)
{
cache_get_value_name_int(0, "ID", ACCOUNT_INFO[playerid][ac_ID]);
cache_get_value_name(0, "IP", ACCOUNT_INFO[playerid][ac_IP], 16);
cache_get_value_name(0, "NAME", ACCOUNT_INFO[playerid][ac_NAME], 24);
cache_get_value_name(0, "EMAIL", ACCOUNT_INFO[playerid][ac_EMAIL], 32);
cache_get_value_name(0, "PASS", ACCOUNT_INFO[playerid][ac_PASS], 64 + 1);
cache_get_value_name(0, "SALT", ACCOUNT_INFO[playerid][ac_SALT], 16);
cache_get_value_name(0, "LAST_CONNECTION", ACCOUNT_INFO[playerid][ac_LAST_CONNECTION], 24);
cache_get_value_name_int(0, "TIME-PLAYING", ACCOUNT_INFO[playerid][ac_TIME_PLAYING]);
cache_get_value_name_int(0, "LEVEL", ACCOUNT_INFO[playerid][ac_LEVEL]);
cache_get_value_name_int(0, "REP", ACCOUNT_INFO[playerid][ac_REP]);
cache_get_value_name_int(0, "STATE", ACCOUNT_INFO[playerid][ac_STATE]);
cache_get_value_name(0, "DATE", ACCOUNT_INFO[playerid][reg_DATE], 24);
cache_get_value_name_int(0, "DOUBT_CHANNEL", ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL]);
cache_get_value_name_int(0, "TIME_FOR_REP", ACCOUNT_INFO[playerid][ac_TIME_FOR_REP]);
cache_get_value_name_int(0, "ADMIN_LEVEL", ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL]);
cache_get_value_name_int(0, "PAYDAY_REP", ACCOUNT_INFO[playerid][ac_PAYDAY_REP]);
cache_get_value_name_int(0, "SU", ACCOUNT_INFO[playerid][ac_SU]);
cache_get_value_name(0, "SU_EXPIRE_DATE", ACCOUNT_INFO[playerid][ac_SU_EXPIRE_DATE], 24);
cache_get_value_name_int(0, "SD", ACCOUNT_INFO[playerid][ac_SD]);
cache_get_value_name_int(0, "INTERIOR", CHARACTER_INFO[playerid][ch_INTERIOR]);
cache_get_value_name_int(0, "LOCAL_INTERIOR", CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA]);
cache_get_value_name_float(0, "POS_X", CHARACTER_INFO[playerid][ch_POS][0]);
cache_get_value_name_float(0, "POS_Y", CHARACTER_INFO[playerid][ch_POS][1]);
cache_get_value_name_float(0, "POS_Z", CHARACTER_INFO[playerid][ch_POS][2]);
cache_get_value_name_float(0, "ANGLE", CHARACTER_INFO[playerid][ch_ANGLE]);
cache_get_value_name_int(0, "PSTATE", CHARACTER_INFO[playerid][ch_STATE]);
switch(CHARACTER_INFO[playerid][ch_STATE])
{
case ROLEPLAY_STATE_INTERIOR:
{
new index = GetEnterExitIndexById(CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA]);
if(index == -1)
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = New_User_Pos[0];
CHARACTER_INFO[playerid][ch_POS][1] = New_User_Pos[1];
CHARACTER_INFO[playerid][ch_POS][2] = New_User_Pos[2];
CHARACTER_INFO[playerid][ch_ANGLE] = New_User_Pos[3];
CHARACTER_INFO[playerid][ch_INTERIOR] = 0;
}
else
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = ENTER_EXIT[index][ee_EXT_X];
CHARACTER_INFO[playerid][ch_POS][1] = ENTER_EXIT[index][ee_EXT_Y];
CHARACTER_INFO[playerid][ch_POS][2] = ENTER_EXIT[index][ee_EXT_Z];
CHARACTER_INFO[playerid][ch_ANGLE] = ENTER_EXIT[index][ee_EXT_ANGLE];
CHARACTER_INFO[playerid][ch_INTERIOR] = ENTER_EXIT[index][ee_EXT_INTERIOR];
}
}
case ROLEPLAY_STATE_OWN_PROPERTY:
{
new index = GetPropertyIndexByID(CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA]);
if(index == -1)
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = New_User_Pos[0];
CHARACTER_INFO[playerid][ch_POS][1] = New_User_Pos[1];
CHARACTER_INFO[playerid][ch_POS][2] = New_User_Pos[2];
CHARACTER_INFO[playerid][ch_ANGLE] = New_User_Pos[3];
CHARACTER_INFO[playerid][ch_INTERIOR] = 0;
}
else
{
if(PROPERTY_INFO[index][property_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
CHARACTER_INFO[playerid][ch_POS][0] = PROPERTY_INTERIORS[ PROPERTY_INFO[index][property_ID_INTERIOR] ][property_INT_X];
CHARACTER_INFO[playerid][ch_POS][1] = PROPERTY_INTERIORS[ PROPERTY_INFO[index][property_ID_INTERIOR] ][property_INT_Y];
CHARACTER_INFO[playerid][ch_POS][2] = PROPERTY_INTERIORS[ PROPERTY_INFO[index][property_ID_INTERIOR] ][property_INT_Z];
CHARACTER_INFO[playerid][ch_ANGLE] = PROPERTY_INTERIORS[ PROPERTY_INFO[index][property_ID_INTERIOR] ][property_INT_ANGLE];
CHARACTER_INFO[playerid][ch_INTERIOR] = PROPERTY_INTERIORS[ PROPERTY_INFO[index][property_ID_INTERIOR] ][property_INT_INTERIOR];
}
else
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = PROPERTY_INFO[index][property_EXT_X];
CHARACTER_INFO[playerid][ch_POS][1] = PROPERTY_INFO[index][property_EXT_Y];
CHARACTER_INFO[playerid][ch_POS][2] = PROPERTY_INFO[index][property_EXT_Z];
CHARACTER_INFO[playerid][ch_ANGLE] = PROPERTY_INFO[index][property_EXT_ANGLE];
CHARACTER_INFO[playerid][ch_INTERIOR] = PROPERTY_INFO[index][property_EXT_INTERIOR];
}
}
}
case ROLEPLAY_STATE_GUEST_PROPERTY:
{
new index = GetPropertyIndexByID(CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA]);
if(index == -1)
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = New_User_Pos[0];
CHARACTER_INFO[playerid][ch_POS][1] = New_User_Pos[1];
CHARACTER_INFO[playerid][ch_POS][2] = New_User_Pos[2];
CHARACTER_INFO[playerid][ch_ANGLE] = New_User_Pos[3];
CHARACTER_INFO[playerid][ch_INTERIOR] = 0;
}
else
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = PROPERTY_INFO[index][property_EXT_X];
CHARACTER_INFO[playerid][ch_POS][1] = PROPERTY_INFO[index][property_EXT_Y];
CHARACTER_INFO[playerid][ch_POS][2] = PROPERTY_INFO[index][property_EXT_Z];
CHARACTER_INFO[playerid][ch_ANGLE] = PROPERTY_INFO[index][property_EXT_ANGLE];
CHARACTER_INFO[playerid][ch_INTERIOR] = PROPERTY_INFO[index][property_EXT_INTERIOR];
}
}
}
PlayAudioStreamForPlayer(playerid, Intro_Music[random(sizeof(Intro_Music))]); // Música
PLAYER_TEMP[playerid][pt_USER_EXIT] = true;
}
else
{
PlayAudioStreamForPlayer(playerid, Intro_Music[0]); // Música
// Nuevo usuario
}
CreatePlayerTextDraws(playerid);
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
if(ACCOUNT_INFO[playerid][ac_ID] != 0)
{
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "UPDATE `CUENTA` SET `CONNECTED` = '0', PLAYERID = '-1' WHERE `ID` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
}
if(PLAYER_TEMP[playerid][pt_REGISTER_ACTOR] != INVALID_ACTOR_ID)
{
DestroyActor(PLAYER_TEMP[playerid][pt_REGISTER_ACTOR]);
PLAYER_TEMP[playerid][pt_REGISTER_ACTOR] = INVALID_ACTOR_ID;
}
if(PLAYER_TEMP[playerid][pt_USER_LOGGED]) // ha pasado la pantalla de registro/login y ha estado jugando
{
ACCOUNT_INFO[playerid][ac_TIME_PLAYING] += gettime() - PLAYER_TEMP[playerid][pt_TIME_PLAYING];
if(PLAYER_TEMP[playerid][pt_USER_EXIT])
{
if(PLAYER_CREW[playerid][player_crew_VALID]) CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ONLINE_MEMBERS] --;
if(PLAYER_TEMP[playerid][pt_LAST_VEHICLE_ID] != INVALID_VEHICLE_ID)
{
if(GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_LAST_VEHICLE_ID] ][gb_vehicle_LAST_DRIVER] == playerid) GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_LAST_VEHICLE_ID] ][gb_vehicle_LAST_DRIVER] = INVALID_PLAYER_ID;
}
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(vehicleid)
{
GLOBAL_VEHICLES[ vehicleid ][gb_vehicle_TP_IMMUNITY] = gettime() + 5;
GLOBAL_VEHICLES[ vehicleid ][gb_vehicle_DRIVER] = INVALID_PLAYER_ID;
GLOBAL_VEHICLES[ vehicleid ][gb_vehicle_LAST_DRIVER] = INVALID_PLAYER_ID;
GLOBAL_VEHICLES[ vehicleid ][gb_vehicle_OCCUPIED] = false;
}
}
if(PLAYER_TEMP[playerid][pt_PIVOT_OBJECT] != INVALID_OBJECT_ID) DestroyPlayerObject(playerid, PLAYER_TEMP[playerid][pt_PIVOT_OBJECT]);
EndPlayerJob(playerid, false);
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL) CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] -= gettime() - PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME];
GetPlayerPos(playerid, CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2]);
GetPlayerFacingAngle(playerid, CHARACTER_INFO[playerid][ch_ANGLE]);
CHARACTER_INFO[playerid][ch_INTERIOR] = GetPlayerInterior(playerid);
PLAYER_TEMP[playerid][pt_TIME_PASSED_LAST_REP] = gettime() * 1000 - PLAYER_TEMP[playerid][pt_TIME_PASSED_LAST_REP];
ACCOUNT_INFO[playerid][ac_TIME_FOR_REP] -= PLAYER_TEMP[playerid][pt_TIME_PASSED_LAST_REP];
if(CHARACTER_INFO[playerid][ch_HEALTH] <= 0.0) CHARACTER_INFO[playerid][ch_HEALTH] = 1.0;
if(CHARACTER_INFO[playerid][ch_HEALTH] > 100.0) CHARACTER_INFO[playerid][ch_HEALTH] = 100.0;
if(CHARACTER_INFO[playerid][ch_ARMOUR] > 100.0) CHARACTER_INFO[playerid][ch_ARMOUR] = 100.0;
SaveUserData(playerid);
SavePlayerToysData(playerid);
SavePlayerVehicles(playerid, true);
SavePlayerSkills(playerid);
SavePlayerWorks(playerid);
SavePlayerMisc(playerid);
SavePlayerWeaponsData(playerid);
new disconnect_message[128];
switch(reason)
{
case 0: format(disconnect_message, sizeof disconnect_message, "%s se ha desconectado por error (crash).", PLAYER_TEMP[playerid][pt_RP_NAME]);
case 1: format(disconnect_message, sizeof disconnect_message, "%s se ha desconectado.", PLAYER_TEMP[playerid][pt_RP_NAME]);
case 2: format(disconnect_message, sizeof disconnect_message, "%s se ha desconectado porque fue expulsado del servidor.", PLAYER_TEMP[playerid][pt_RP_NAME]);
}
NearbyMessage(CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2], CHARACTER_INFO[playerid][ch_INTERIOR], GetPlayerVirtualWorld(playerid), 15.0, 0x909D95FF, disconnect_message);
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) EndPhoneCall(playerid);
}
}
new pip[16];
format(pip, sizeof pip, "%s", ACCOUNT_INFO[playerid][ac_IP]);
DestroyPlayerCheckpoints(playerid);
DestroyPlayerTextDraws(playerid);
for(new i = 0; i != MAX_TIMERS_PER_PLAYER; i++) KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][i]);
ResetPlayerVariables(playerid);
BlockIpAddress(pip, 6000);
return 1;
}
ResetPlayerVariables(playerid)
{
new temp_PLAYER_TEMP[Temp_Enum]; PLAYER_TEMP[playerid] = temp_PLAYER_TEMP;
new temp_ACCOUNT_INFO[Account_Enum]; ACCOUNT_INFO[playerid] = temp_ACCOUNT_INFO;
new temp_CHARACTER_INFO[Character_Enum]; CHARACTER_INFO[playerid] = temp_CHARACTER_INFO;
new temp_BANK_ACCOUNT[Bank_Account_Enum]; BANK_ACCOUNT[playerid] = temp_BANK_ACCOUNT;
new temp_PLAYER_TOYS[Player_Toys_Info];
for(new i = 0; i != MAX_PLAYER_ATTACHED_OBJECTS; i ++) PLAYER_TOYS[playerid][i] = temp_PLAYER_TOYS;
new temp_PLAYER_POCKET[Player_Pocket_Enum];
for(new i = 0; i != MAX_PLAYER_POCKET_OBJECTS; i ++) PLAYER_POCKET[playerid][i] = temp_PLAYER_POCKET;
new temp_PLAYER_PHONE[Phone_Info_Enum]; PLAYER_PHONE[playerid] = temp_PLAYER_PHONE;
new temp_PLAYER_PHONE_BOOK[Phone_Book_Enum];
for(new i = 0; i != MAX_PHONE_CONTACTS; i ++) PLAYER_PHONE_BOOK[playerid][i] = temp_PLAYER_PHONE_BOOK;
new temp_PLAYER_GPS[Player_GPS_Enum];
for(new i = 0; i != MAX_PLAYER_GPS_SAVES; i ++) PLAYER_GPS[playerid][i] = temp_PLAYER_GPS;
new temp_PLAYER_OBJECT[Player_Objects_Enum]; PLAYER_OBJECT[playerid] = temp_PLAYER_OBJECT;
for(new i = 0; i != sizeof(PLAYER_SKILLS[]); i ++) PLAYER_SKILLS[playerid][i] = 0;
for(new i = 0; i != sizeof(PLAYER_WORKS[]); i ++) PLAYER_WORKS[playerid][i] = 0;
for(new i = 0; i != sizeof(PLAYER_MISC[]); i ++) PLAYER_MISC[playerid][i] = 0;
new temp_PLAYER_PROPERTY_CONSTRUCTO[PLAYER_PROPERTY_CONSTRUCTOR_ENU]; PLAYER_PROPERTY_CONSTRUCTOR[playerid] = temp_PLAYER_PROPERTY_CONSTRUCTO;
PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] = INVALID_PLAYER_ID;
PLAYER_TEMP[playerid][pt_ADMIN_SERVICE] = false;
new tmp_PLAYER_WEAPONS[enum_PLAYER_WEAPONS];
for(new i = 0; i != 13; i ++) PLAYER_WEAPONS[playerid][i] = tmp_PLAYER_WEAPONS;
new tmp_PLAYER_AC_INFO[e_PLAYER_AC_INFO];
for(new i = 0; i != sizeof(ac_Info); i ++) PLAYER_AC_INFO[playerid][i] = tmp_PLAYER_AC_INFO;
new tmp_PLAYER_CREW[enum_PLAYER_CREW]; PLAYER_CREW[playerid] = tmp_PLAYER_CREW;
return 1;
}
DestroyPlayerCheckpoints(playerid)
{
if(IsValidDynamic3DTextLabel(PLAYER_TEMP[playerid][pt_POLICE_LABEL]))
{
DestroyDynamic3DTextLabel(PLAYER_TEMP[playerid][pt_POLICE_LABEL]);
PLAYER_TEMP[playerid][pt_POLICE_LABEL] = Text3D:INVALID_STREAMER_ID;
}
if(IsValidDynamic3DTextLabel(PLAYER_TEMP[playerid][pt_ADMIN_LABEL]))
{
DestroyDynamic3DTextLabel(PLAYER_TEMP[playerid][pt_ADMIN_LABEL]);
PLAYER_TEMP[playerid][pt_ADMIN_LABEL] = Text3D:INVALID_STREAMER_ID;
}
if(IsValidDynamicCP(PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT] = INVALID_STREAMER_ID;
}
if(IsValidDynamicCP(PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT] = INVALID_STREAMER_ID;
}
if(IsValidDynamicCP(PLAYER_TEMP[playerid][pt_TRASH_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_TRASH_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_TRASH_CHECKPOINT] = INVALID_STREAMER_ID;
}
if(IsValidDynamicRaceCP(PLAYER_TEMP[playerid][pt_HARVERT_CHECKPOINT]))
{
DestroyDynamicRaceCP(PLAYER_TEMP[playerid][pt_HARVERT_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_HARVERT_CHECKPOINT] = INVALID_STREAMER_ID;
}
if(IsValidDynamicCP(PLAYER_TEMP[playerid][pt_LUMBERJACK_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_LUMBERJACK_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_LUMBERJACK_CHECKPOINT] = INVALID_STREAMER_ID;
}
if(IsValidDynamicCP(PLAYER_TEMP[playerid][pt_PIZZA_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_PIZZA_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_PIZZA_CHECKPOINT] = INVALID_STREAMER_ID;
}
if(IsValidDynamicActor(PLAYER_TEMP[playerid][pt_PIZZA_ACTOR]))
{
DestroyDynamicActor(PLAYER_TEMP[playerid][pt_PIZZA_ACTOR]);
PLAYER_TEMP[playerid][pt_PIZZA_ACTOR] = INVALID_STREAMER_ID;
}
return 1;
}
GetEnterExitIndexById(id)
{
for(new i = 0; i != sizeof ENTER_EXIT; i ++)
{
if(ENTER_EXIT[i][ee_ID] == 0) continue;
if(ENTER_EXIT[i][ee_ID] == id) return i;
}
return -1;
}
public OnRconLoginAttempt(ip[], password[], success)
{
if(!success) BlockIpAddress(ip, 12000);
return 1;
}
public OnPlayerSpawn(playerid)
{
if(PLAYER_TEMP[playerid][pt_GAME_STATE] == GAME_STATE_OCCUPIED) // Primer spawn
{
PLAYER_TEMP[playerid][pt_TIME_PLAYING] = gettime();
PLAYER_TEMP[playerid][pt_USER_LOGGED] = true;
if(PLAYER_CREW[playerid][player_crew_VALID]) SetPlayerGangZones(playerid);
SetPlayerSkillLevels(playerid);
ApplyAnimation(playerid,"SWAT","null",0.0,0,0,0,0,0);
ApplyAnimation(playerid,"MEDIC","null",0.0,0,0,0,0,0);
switch(CHARACTER_INFO[playerid][ch_STATE])
{
case ROLEPLAY_STATE_NORMAL:
{
SetPlayerHud(playerid);
SetCameraBehindPlayer(playerid);
TogglePlayerControllableEx(playerid, false);
if(!PLAYER_TEMP[playerid][pt_NEW_USER])
{
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
PLAYER_TEMP[playerid][pt_TIMERS][3] = SetTimerEx("TogglePlayerControl", 2000, false, "ib", playerid, true);
}
else SetPlayerVirtualWorld(playerid, playerid);
}
case ROLEPLAY_STATE_JAIL:
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_JAIL;
if(CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] < 5) CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] = 5;
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][15]);
PLAYER_TEMP[playerid][pt_TIMERS][15] = SetTimerEx("UnjailPlayer", CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] * 1000, false, "i", playerid);
PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME] = gettime();
SetPlayerPosEx(playerid, JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_X], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Y], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Z], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_ANGLE], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_INTERIOR], 0, true);
new time = CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] - (gettime() - PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te quedan %s minutos de condena.", TimeConvert(time));
SetPlayerHud(playerid);
SetCameraBehindPlayer(playerid);
TogglePlayerControllableEx(playerid, false);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
PLAYER_TEMP[playerid][pt_TIMERS][3] = SetTimerEx("TogglePlayerControl", 2000, false, "ib", playerid, true);
}
case ROLEPLAY_STATE_ARRESTED:
{
CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] = 300;
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_JAIL;
if(CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] < 5) CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] = 5;
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][15]);
PLAYER_TEMP[playerid][pt_TIMERS][15] = SetTimerEx("UnjailPlayer", CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] * 1000, false, "i", playerid);
PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME] = gettime();
SetPlayerPosEx(playerid, JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_X], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Y], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Z], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_ANGLE], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_INTERIOR], 0, true);
new time = CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] - (gettime() - PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te quedan %s minutos de condena.", TimeConvert(time));
SetPlayerHud(playerid);
SetCameraBehindPlayer(playerid);
TogglePlayerControllableEx(playerid, false);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
PLAYER_TEMP[playerid][pt_TIMERS][3] = SetTimerEx("TogglePlayerControl", 2000, false, "ib", playerid, true);
}
case ROLEPLAY_STATE_OWN_PROPERTY:
{
new index = GetPropertyIndexByID(CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA]);
if(index == -1)
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = New_User_Pos[0];
CHARACTER_INFO[playerid][ch_POS][1] = New_User_Pos[1];
CHARACTER_INFO[playerid][ch_POS][2] = New_User_Pos[2];
CHARACTER_INFO[playerid][ch_ANGLE] = New_User_Pos[3];
CHARACTER_INFO[playerid][ch_INTERIOR] = 0;
SetPlayerPosEx(playerid, CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2], CHARACTER_INFO[playerid][ch_ANGLE], CHARACTER_INFO[playerid][ch_INTERIOR], 0);
}
else
{
if(PROPERTY_INFO[index][property_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
SetPlayerInterior(playerid, PROPERTY_INTERIORS[ PROPERTY_INFO[index][property_ID_INTERIOR] ][property_INT_INTERIOR]);
SetPlayerVirtualWorld(playerid, PROPERTY_INFO[index][property_ID]);
}
else
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
CHARACTER_INFO[playerid][ch_POS][0] = PROPERTY_INFO[index][property_EXT_X];
CHARACTER_INFO[playerid][ch_POS][1] = PROPERTY_INFO[index][property_EXT_Y];
CHARACTER_INFO[playerid][ch_POS][2] = PROPERTY_INFO[index][property_EXT_Z];
CHARACTER_INFO[playerid][ch_ANGLE] = PROPERTY_INFO[index][property_EXT_ANGLE];
CHARACTER_INFO[playerid][ch_INTERIOR] = PROPERTY_INFO[index][property_EXT_INTERIOR];
SetPlayerPosEx(playerid, CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2], CHARACTER_INFO[playerid][ch_ANGLE], CHARACTER_INFO[playerid][ch_INTERIOR], 0);
}
}
SetPlayerHud(playerid);
SetCameraBehindPlayer(playerid);
TogglePlayerControllableEx(playerid, false);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
PLAYER_TEMP[playerid][pt_TIMERS][3] = SetTimerEx("TogglePlayerControl", 2000, false, "ib", playerid, true);
}
case ROLEPLAY_STATE_HOSPITAL:
{
PLAYER_TEMP[playerid][pt_HOSPITAL] = GetNearestHospitalForPlayer(playerid);
PLAYER_TEMP[playerid][pt_PLAYER_FINISH_HOSPITAL] = false;
PLAYER_TEMP[playerid][pt_GAME_STATE] = GAME_STATE_DEAD;
TogglePlayerControllableEx(playerid, true);
TogglePlayerSpectatingEx(playerid, true);
SetPlayerInterior(playerid, 0);
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] = -1;
PLAYER_TEMP[playerid][pt_PROPERTY_INDEX] = -1;
PLAYER_TEMP[playerid][pt_HOSPITAL_LIFE] = 35.0;
UpdateHospitalSizeTextdrawLife(playerid);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][4]);
PLAYER_TEMP[playerid][pt_TIMERS][4] = SetTimerEx("HealthUp", 1000, false, "i", playerid);
DeleteIlegalInv(playerid);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HOSPITAL][0]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HOSPITAL][1]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HOSPITAL][2]);
SendClientMessage(playerid, -1, "{CCCCCC}Fuiste ingresado en el centro médico más cercano.");
SendClientMessage(playerid, -1, "{CCCCCC}Espera mientras te recuperas.");
InterpolateCameraPos(playerid, Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][0], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][1], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][2], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][0], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][1], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][2], 1000, CAMERA_CUT);
InterpolateCameraLookAt(playerid, Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][3], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][4], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][5], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][3], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][4], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][5], 1000, CAMERA_CUT);
}
case ROLEPLAY_STATE_CRACK:
{
SetPlayerHud(playerid);
SetCameraBehindPlayer(playerid);
SendAlertToMedics(playerid);
TogglePlayerControllableEx(playerid, false);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
PLAYER_TEMP[playerid][pt_TIMERS][3] = SetTimerEx("TogglePlayerControl", 2000, false, "ib", playerid, true);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][16]);
PLAYER_TEMP[playerid][pt_TIMERS][16] = SetTimerEx("HealthDown", 3000, false, "i", playerid);
PLAYER_TEMP[playerid][pt_INJURED_POS][0] = CHARACTER_INFO[playerid][ch_POS][0];
PLAYER_TEMP[playerid][pt_INJURED_POS][1] = CHARACTER_INFO[playerid][ch_POS][1];
PLAYER_TEMP[playerid][pt_INJURED_POS][2] = CHARACTER_INFO[playerid][ch_POS][2];
PLAYER_TEMP[playerid][pt_INJURED_POS][3] = CHARACTER_INFO[playerid][ch_ANGLE];
ApplyAnimation(playerid, "SWAT", "gnstwall_injurd", 4.1, true, 0, 0, 1, 0, 1);
SendClientMessage(playerid, -1, "Estás herido, puedes esperar a un médico o usar {eddd2f}/morir.");
}
}
if(!PLAYER_TEMP[playerid][pt_NEW_USER]) TextDrawHideForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][0]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][1]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][2]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][3]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_LOAD_SCREEN][4]);
new neccessary_rep = ACCOUNT_INFO[playerid][ac_LEVEL] * REP_MULTIPLIER;
if(ACCOUNT_INFO[playerid][ac_REP] < neccessary_rep)
{
if(ACCOUNT_INFO[playerid][ac_TIME_FOR_REP] > TIME_FOR_REP) ACCOUNT_INFO[playerid][ac_TIME_FOR_REP] = TIME_FOR_REP;
if(ACCOUNT_INFO[playerid][ac_TIME_FOR_REP] <= 900) ACCOUNT_INFO[playerid][ac_TIME_FOR_REP] = 3000;
if(!PLAYER_TEMP[playerid][pt_NEW_USER]) SendClientMessageEx(playerid, -1, "Eres {C4FF66}nivel %d, {FFFFFF}te quedan {C4FF66}%s minutos {FFFFFF}para la siguiente reputación.", ACCOUNT_INFO[playerid][ac_LEVEL], TimeConvert(ACCOUNT_INFO[playerid][ac_TIME_FOR_REP] / 1000));
PLAYER_TEMP[playerid][pt_TIME_PASSED_LAST_REP] = gettime() * 1000;
PLAYER_TEMP[playerid][pt_TIMERS][2] = SetTimerEx("AddPlayerReputation", ACCOUNT_INFO[playerid][ac_TIME_FOR_REP], false, "i", playerid);
}
else SendClientMessageEx(playerid, -1, "Escribe {C4FF66}/comprarnivel {FFFFFF}para subir al nivel {C4FF66}%d {FFFFFF}por {C4FF66}%d$.", ACCOUNT_INFO[playerid][ac_LEVEL] + 1, ACCOUNT_INFO[playerid][ac_LEVEL] * 150);
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
new DB_Query[220];
format(DB_Query, sizeof(DB_Query),
"\
SELECT COUNT(*) FROM `PHONE_MESSAGES` WHERE `TO` = '%d' AND `OFFLINE` = '1' ORDER BY `DATE` DESC LIMIT 10;\
UPDATE `PHONE_MESSAGES` SET `OFFLINE` = '0' WHERE `TO` = '%d';\
",
PLAYER_PHONE[playerid][player_phone_NUMBER],
PLAYER_PHONE[playerid][player_phone_NUMBER]);
mysql_tquery(SMF_DATABASE, DB_Query, "CheckSMS", "i", playerid);
}
}
else if(PLAYER_TEMP[playerid][pt_GAME_STATE] == GAME_STATE_DEAD) // Viene de morir
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_HOSPITAL)
{
if(!PLAYER_TEMP[playerid][pt_PLAYER_FINISH_HOSPITAL])
{
TogglePlayerSpectatingEx(playerid, true);
SetPlayerInterior(playerid, 0);
SetPlayerVirtualWorld(playerid, 0);
PLAYER_TEMP[playerid][pt_PLAYER_FINISH_HOSPITAL] = false;
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_HOSPITAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] = -1;
PLAYER_TEMP[playerid][pt_PROPERTY_INDEX] = -1;
PLAYER_TEMP[playerid][pt_HOSPITAL_LIFE] = 35.0;
UpdateHospitalSizeTextdrawLife(playerid);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][4]);
PLAYER_TEMP[playerid][pt_TIMERS][4] = SetTimerEx("HealthUp", 1000, false, "i", playerid);
DeleteIlegalInv(playerid);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HOSPITAL][0]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HOSPITAL][1]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HOSPITAL][2]);
ClearPlayerChat(playerid);
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED)
{
SendClientMessage(playerid, -1, "{CCCCCC}Fuiste ingresado en el centro médico más cercano.");
SendClientMessage(playerid, -1, "{CCCCCC}Cuando te recuperes serás llevado a la cárcel.");
}
else
{
SendClientMessage(playerid, -1, "{CCCCCC}Fuiste ingresado en el centro médico más cercano.");
SendClientMessage(playerid, -1, "{CCCCCC}Espera mientras te recuperas.");
}
InterpolateCameraPos(playerid, Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][0], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][1], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][2], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][0], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][1], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][2], 1000, CAMERA_CUT);
InterpolateCameraLookAt(playerid, Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][3], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][4], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][5], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][3], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][4], Hospital_Cameras_Positions[PLAYER_TEMP[playerid][pt_HOSPITAL]][5], 1000, CAMERA_CUT);
}
}
else if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK)
{
SetPlayerHud(playerid);
SetPlayerHealthEx(playerid, 60.0);
SendAlertToMedics(playerid);
TogglePlayerControllableEx(playerid, false);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
PLAYER_TEMP[playerid][pt_TIMERS][3] = SetTimerEx("TogglePlayerControl", 2000, false, "ib", playerid, true);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][16]);
PLAYER_TEMP[playerid][pt_TIMERS][16] = SetTimerEx("HealthDown", 3000, false, "i", playerid);
ApplyAnimation(playerid, "SWAT", "gnstwall_injurd", 4.1, true, 0, 0, 1, 0, 1);
SendClientMessage(playerid, -1, "Estás herido, puedes esperar a un médico o usar {eddd2f}/morir.");
}
}
if(PLAYER_TEMP[playerid][pt_PLAYER_FINISH_HOSPITAL])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL)
{
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][15]);
PLAYER_TEMP[playerid][pt_TIMERS][15] = SetTimerEx("UnjailPlayer", CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] * 1000, false, "i", playerid);
}
SetPlayerInterior(playerid, CHARACTER_INFO[playerid][ch_INTERIOR]);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerHud(playerid);
TogglePlayerControllableEx(playerid, false);
PLAYER_TEMP[playerid][pt_PLAYER_FINISH_HOSPITAL] = false;
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
SetCameraBehindPlayer(playerid);
PLAYER_TEMP[playerid][pt_TIMERS][3] = SetTimerEx("TogglePlayerControl", 2000, false, "ib", playerid, true);
}
SetPlayerTime(playerid, SERVER_TIME[0], SERVER_TIME[1]);
SetPlayerWeather(playerid, SERVER_WEATHER);
PLAYER_TEMP[playerid][pt_GAME_STATE] = GAME_STATE_NORMAL;
SetPlayerSkin(playerid, CHARACTER_INFO[playerid][ch_SKIN]);
SetPlayerToys(playerid);
if(CHARACTER_INFO[playerid][ch_STATE] != ROLEPLAY_STATE_JAIL && CHARACTER_INFO[playerid][ch_STATE] != ROLEPLAY_STATE_CRACK) SetWeaponsForPlayer(playerid);
SetPlayerArmedWeapon(playerid, 0);
SetPlayerNormalColor(playerid);
PLAYER_TEMP[playerid][pt_CONTROL] = false;
PLAYER_AC_INFO[playerid][CHEAT_POS][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_AC_INFO[playerid][CHEAT_STATE_SPAMMER][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_AC_INFO[playerid][CHEAT_PLAYER_HEALTH][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_AC_INFO[playerid][CHEAT_PLAYER_ARMOUR][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_AC_INFO[playerid][CHEAT_UNOCCUPIED_VEHICLE_TP][p_ac_info_IMMUNITY] = gettime() + 5;
return 1;
}
forward CheckSMS(playerid);
public CheckSMS(playerid)
{
new count;
cache_get_row_count(count);
if(count > 0)
{
new new_messages;
cache_get_value_index_int(0, 0, new_messages);
if(new_messages > 0) SendClientMessageEx(playerid, -1, "Tienes {f1f442}%d {FFFFFF}mensajes nuevos desde tu última conexión.", new_messages);
}
}
CMD:morir(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] != ROLEPLAY_STATE_CRACK) return ShowPlayerMessage(playerid, "No estás malherido", 3);
SetPlayerHealthEx(playerid, 0.0);
Auto_SendPlayerAction(playerid, "ha elegido la salida rápida.");
return 1;
}
//stock PrintPropertiesDatabaseInserts()
public OnPlayerDeath(playerid, killerid, reason)
{
if(PLAYER_TEMP[playerid][pt_KICKED]) return 1;
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][16]);
PLAYER_AC_INFO[playerid][CHEAT_POS][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_AC_INFO[playerid][CHEAT_STATE_SPAMMER][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_AC_INFO[playerid][CHEAT_PLAYER_HEALTH][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_AC_INFO[playerid][CHEAT_VEHICLE_NOFUEL][p_ac_info_IMMUNITY] = gettime() + 15;
if(!ACCOUNT_INFO[playerid][ac_SU]) SetPlayerArmourEx(playerid, 0.0);
if(ac_Info[CHEAT_DEATH_SPAMMER][ac_Enabled])
{
if(gettime() > PLAYER_AC_INFO[playerid][CHEAT_DEATH_SPAMMER][p_ac_info_IMMUNITY])
{
new interval = GetTickDiff(GetTickCount(), PLAYER_TEMP[playerid][pt_ANTIFLOOD_DEATH]);
if(interval < 50)
{
if(!ac_Info[CHEAT_DEATH_SPAMMER][ac_Interval]) OnPlayerCheatDetected(playerid, CHEAT_DEATH_SPAMMER, float(interval));
else
{
if(gettime() - PLAYER_AC_INFO[playerid][CHEAT_DEATH_SPAMMER][p_ac_info_LAST_DETECTION] > ac_Info[CHEAT_DEATH_SPAMMER][ac_Interval]) PLAYER_AC_INFO[playerid][CHEAT_DEATH_SPAMMER][p_ac_info_DETECTIONS] = 0;
else PLAYER_AC_INFO[playerid][CHEAT_DEATH_SPAMMER][p_ac_info_DETECTIONS] ++;
PLAYER_AC_INFO[playerid][CHEAT_DEATH_SPAMMER][p_ac_info_LAST_DETECTION] = gettime();
if(PLAYER_AC_INFO[playerid][CHEAT_DEATH_SPAMMER][p_ac_info_DETECTIONS] >= ac_Info[CHEAT_DEATH_SPAMMER][ac_Detections]) OnPlayerCheatDetected(playerid, CHEAT_DEATH_SPAMMER, float(interval));
}
}
PLAYER_TEMP[playerid][pt_ANTIFLOOD_DEATH] = GetTickCount();
}
}
HidePlayerMessage(playerid);
if(PLAYER_TEMP[playerid][pt_NEW_USER])
{
PLAYER_MISC[playerid][MISC_CONFIG_HUD] = true;
PLAYER_MISC[playerid][MISC_CONFIG_TIME] = true;
PLAYER_MISC[playerid][MISC_CONFIG_ADMIN] = true;
SavePlayerMisc(playerid);
PLAYER_TEMP[playerid][pt_NEW_USER] = false;
SetPlayerVirtualWorld(playerid, 0);
SetCameraBehindPlayer(playerid);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][18]);
}
if(IsPlayerConnected(killerid) && CHARACTER_INFO[killerid][ch_STATE] == ROLEPLAY_STATE_NORMAL && CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_NORMAL)
{
if(!PLAYER_WORKS[killerid][WORK_POLICE])
{
if(gettime() > PLAYER_TEMP[killerid][pt_LAST_SAFE_ZONE_WARNING] + 60)
{
if(IsPlayerInSafeZone(killerid))
{
SendClientMessage(killerid, -1, "Estás en una zona segura, la policía ha sido avisada del homicidio.");
new city[45], zone[45];
GetPlayerZones(killerid, city, zone);
new message[145];
format(message, sizeof message, "{4286f4}[Central policía] {FFFFFF}%s ha causado un asesinato en {4286f4}%s, %s.", PLAYER_TEMP[killerid][pt_RP_NAME], city, zone);
SendPoliceRadioMessage(-1, -1, message);
PLAYER_TEMP[killerid][pt_LAST_SAFE_ZONE_WARNING] = gettime();
}
}
}
}
if(PLAYER_TEMP[playerid][pt_SELECT_TEXTDRAW])
{
if(PLAYER_TEMP[playerid][pt_CLOTHING_SHOP] != -1) ClosePlayerClothingMenu(playerid);
if(PLAYER_TEMP[playerid][pt_TOYS_SHOP]) ClosePlayerToysMenu(playerid);
if(PLAYER_TEMP[playerid][pt_SHOP]) HidePlayerShop(playerid);
}
StopAudioStreamForPlayer(playerid);
SetPlayerDrunkLevel(playerid, 0);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][3]);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
GetPlayerPos(playerid, CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2]);
GetPlayerFacingAngle(playerid, CHARACTER_INFO[playerid][ch_ANGLE]);
CHARACTER_INFO[playerid][ch_INTERIOR] = GetPlayerInterior(playerid);
HidePlayerHud(playerid);
CancelEdit(playerid);
HidePlayerDialog(playerid);
SetNormalPlayerMarkers(playerid);
EndPlayerJob(playerid, false);
PLAYER_TEMP[playerid][pt_HUNGRY_MESSAGE] = false;
PLAYER_TEMP[playerid][pt_THIRST_MESSAGE] = false;
PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = false;
PLAYER_TEMP[playerid][pt_CUFFED] = false;
PLAYER_TEMP[playerid][pt_CUFFING] = false;
PLAYER_TEMP[playerid][pt_PLAYER_WAITING_MP3_HTTP] = false;
if(PLAYER_TEMP[playerid][pt_WANT_TAXI])
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = false;
DisablePlayerTaxiMark(playerid);
}
if(PLAYER_TEMP[playerid][pt_WANT_MECHANIC])
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(playerid);
}
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) EndPhoneCall(playerid);
if(PLAYER_TEMP[playerid][pt_GPS_MAP]) HidePlayerGpsMap(playerid);
if(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_SHOP]) CancelPlayerTuningShop(playerid);
if(PLAYER_TEMP[playerid][pt_IN_TUNING_GARAGE])
{
PLAYER_TEMP[playerid][pt_IN_TUNING_GARAGE] = false;
SetVehicleVirtualWorldEx(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], 0);
SetVehiclePosEx(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], 246.551910, 17.474195, 2.363841);
SetVehicleZAngle(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], 0.0);
}
if(PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] != INVALID_VEHICLE_ID)
{
if(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_JOB_STARTED])
{
if(PLAYER_TEMP[playerid][pt_TRASH_DRIVER])
{
SendClientMessage(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID], -1, "{CCCCCC}El trabajo se ha cancelado porque tu compañero ha dejado de trabajar.");
CancelTrashWork(playerid, TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID], PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID]);
}
if(PLAYER_TEMP[playerid][pt_TRASH_PASSENGER])
{
SendClientMessage(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_DRIVER_ID], -1, "{CCCCCC}El trabajo se ha cancelado porque tu compañero ha dejado de trabajar.");
CancelTrashWork(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_DRIVER_ID], playerid, PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID]);
}
}
}
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL)
{
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][15]);
PLAYER_TEMP[playerid][pt_PLAYER_FINISH_HOSPITAL] = true;
CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] -= gettime() - PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME];
if(CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] < 5) CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] = 5;
PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME] = gettime();
SetSpawnInfo(playerid, NO_TEAM, CHARACTER_INFO[playerid][ch_SKIN], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_X], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Y], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Z], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_ANGLE], 0, 0, 0, 0, 0, 0);
CHARACTER_INFO[playerid][ch_INTERIOR] = JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_INTERIOR];
}
else
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || GetPlayerInterior(playerid) != 0 || GetPlayerVirtualWorld(playerid) != 0)
{
DisablePlayerInjuredMark(playerid);
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_NORMAL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) PLAYER_TEMP[playerid][pt_HOSPITAL] = GetNearestHospitalForPlayer(playerid);
if(PLAYER_TEMP[playerid][pt_HOSPITAL] == -1) PLAYER_TEMP[playerid][pt_HOSPITAL] = 1;
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_HOSPITAL;
PLAYER_TEMP[playerid][pt_PLAYER_FINISH_HOSPITAL] = false;
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][16]);
SetSpawnInfo(playerid, NO_TEAM, CHARACTER_INFO[playerid][ch_SKIN], CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2], CHARACTER_INFO[playerid][ch_ANGLE], 0, 0, 0, 0, 0, 0);
}
else
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_CRACK;
GetPlayerPos(playerid, PLAYER_TEMP[playerid][pt_INJURED_POS][0], PLAYER_TEMP[playerid][pt_INJURED_POS][1], PLAYER_TEMP[playerid][pt_INJURED_POS][2]);
GetPlayerFacingAngle(playerid, PLAYER_TEMP[playerid][pt_INJURED_POS][3]);
SetSpawnInfo(playerid, NO_TEAM, CHARACTER_INFO[playerid][ch_SKIN], PLAYER_TEMP[playerid][pt_INJURED_POS][0], PLAYER_TEMP[playerid][pt_INJURED_POS][1], PLAYER_TEMP[playerid][pt_INJURED_POS][2], PLAYER_TEMP[playerid][pt_INJURED_POS][3], 0, 0, 0, 0, 0, 0);
}
}
PLAYER_TEMP[playerid][pt_GAME_STATE] = GAME_STATE_DEAD;
return 1;
}
public OnPlayerRequestClass(playerid, classid)
{
if(PLAYER_TEMP[playerid][pt_GAME_STATE] == GAME_STATE_CONNECTED) // Recién conectado
{
if(!PLAYER_TEMP[playerid][pt_USER_VALID_NAME] || PLAYER_TEMP[playerid][pt_KICKED]) return 0;
TogglePlayerSpectatingEx(playerid, true);
ClearPlayerChat(playerid);
new player_version[32];
GetPlayerVersion(playerid, player_version, sizeof player_version);
if(strcmp(player_version, "0.3.7-R2")) SendClientMessage(playerid, -1, "{999999}Actualiza tu versión de SA-MP desde: wwww.sa-mp.com");
if(PLAYER_TEMP[playerid][pt_USER_EXIT])
{
// Usuario registrado
if(ACCOUNT_INFO[playerid][ac_ID] == 0 || strcmp(PLAYER_TEMP[playerid][pt_NAME], ACCOUNT_INFO[playerid][ac_NAME], false)) // No coincide
{
Kick(playerid);
return 1;
}
if(strcmp(PLAYER_TEMP[playerid][pt_IP], ACCOUNT_INFO[playerid][ac_IP], false)) // La IP actual no es la misma IP de la última conexión
{
SendClientMessage(playerid, -1, "{999999}Tu dirección IP ha cambiado desde tu última conexión.");
format(ACCOUNT_INFO[playerid][ac_IP], 16, "%s", PLAYER_TEMP[playerid][pt_IP]);
}
ShowDialog(playerid, DIALOG_LOGIN);
}
else
{
// Nuevo usuario
PLAYER_TEMP[playerid][pt_REGISTER_ACTOR] = CreateActor(Intro_Skins[0][0], 444.200225, 514.112182, 1001.419494, 0.939619); //ACTOR DE LA HABITACION DE LA INTRO
SetActorVirtualWorld(PLAYER_TEMP[playerid][pt_REGISTER_ACTOR], playerid + 10);
ApplyActorAnimation(PLAYER_TEMP[playerid][pt_REGISTER_ACTOR], "INT_SHOP", "shop_loop", 4.1, 1, 1, 1, 0, 0);
SetPlayerVirtualWorld(playerid, playerid + 10);
InterpolateCameraPos(playerid, 447.1717, 512.9380, 1001.6884, 447.1717, 512.9380, 1001.6884, 4000);
InterpolateCameraLookAt(playerid, 446.4043, 513.5767, 1001.7037, 446.4043, 513.5767, 1001.7037, 4000);
SetPlayerInterior(playerid, 12);
ShowDialog(playerid, DIALOG_REGISTER);
}
}
else if(PLAYER_TEMP[playerid][pt_GAME_STATE] == GAME_STATE_NORMAL || PLAYER_TEMP[playerid][pt_GAME_STATE] == GAME_STATE_DEAD) // Viene de jugar
{
SetSpawnInfo(playerid, NO_TEAM, CHARACTER_INFO[playerid][ch_SKIN], CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2], CHARACTER_INFO[playerid][ch_ANGLE], 0, 0, 0, 0, 0, 0);
SpawnPlayer(playerid);
return 0;
}
PLAYER_TEMP[playerid][pt_GAME_STATE] = GAME_STATE_OCCUPIED;
return 1;
}
public OnPlayerRequestSpawn(playerid) // Intentar 'spawnear' mediante la selección de skin << spawn >>
{
if(PLAYER_TEMP[playerid][pt_GAME_STATE] == GAME_STATE_CONNECTED) CallLocalFunction("OnPlayerRequestClass", "dd", playerid, 0);
return 0;
}
public OnGameModeInit()
{
SetGameModeText(SERVER_GAMEMODE);
SendRconCommand("hostname "SERVER_HOSTNAME"");
SendRconCommand("language "SERVER_LANGUAGE"");
SendRconCommand("weburl "SERVER_WEBSITE"");
SendRconCommand("minconnectiontime 3000");
SendRconCommand("ackslimit 5000");
SendRconCommand("messageslimit 100");
SendRconCommand("conncookies 1");
SendRconCommand("cookielogging 0");
ConnectDatabase();
mysql_log(ERROR | WARNING);
//UsePlayerPedAnims();
DisableInteriorEnterExits();
ShowPlayerMarkers(PLAYER_MARKERS_MODE_GLOBAL);
EnableStuntBonusForAll(false);
ManualVehicleEngineAndLights();
FormatDialogStrings();
SanAndreas();
LoadServerInfo();
UpdateEconomy();
return 1;
}
FormatDialogStrings()
{
new Dialog_Lines_String[256];
/* PIZZA FOOD */
format(DIALOG_FOOD_PIZZA_String, sizeof DIALOG_FOOD_PIZZA_String, "Producto\tPrecio\n");
for(new i; i != sizeof PIZZA_FOOD; i ++)
{
format(Dialog_Lines_String, sizeof Dialog_Lines_String, "{FFFFFF}%d. %s\t{90C3D4}%d$\n", i + 1, PIZZA_FOOD[i][food_NAME], PIZZA_FOOD[i][food_PRICE]);
strcat(DIALOG_FOOD_PIZZA_String, Dialog_Lines_String);
}
/* CLUCKIN FOOD */
format(DIALOG_FOOD_CLUCKIN_String, sizeof DIALOG_FOOD_CLUCKIN_String, "Producto\tPrecio\n");
for(new i; i != sizeof CLUCKIN_BELL_FOOD; i ++)
{
format(Dialog_Lines_String, sizeof Dialog_Lines_String, "{FFFFFF}%d. %s\t{90C3D4}%d$\n", i + 1, CLUCKIN_BELL_FOOD[i][food_NAME], CLUCKIN_BELL_FOOD[i][food_PRICE]);
strcat(DIALOG_FOOD_CLUCKIN_String, Dialog_Lines_String);
}
/* BURGER_SHOT FOOD */
format(DIALOG_FOOD_BURGER_String, sizeof DIALOG_FOOD_BURGER_String, "Producto\tPrecio\n");
for(new i; i != sizeof BURGER_SHOT_FOOD; i ++)
{
format(Dialog_Lines_String, sizeof Dialog_Lines_String, "{FFFFFF}%d. %s\t{90C3D4}%d$\n", i + 1, BURGER_SHOT_FOOD[i][food_NAME], BURGER_SHOT_FOOD[i][food_PRICE]);
strcat(DIALOG_FOOD_BURGER_String, Dialog_Lines_String);
}
/* 24/7 LIST */
format(DIALOG_247_LIST_String, sizeof DIALOG_247_LIST_String, "Producto\tPrecio\n");
for(new i = 0; i != sizeof Supermarket_Product_List; i ++)
{
format(Dialog_Lines_String, sizeof(Dialog_Lines_String), "{FFFFFF}%d. %s\t{90C3D4}%d$\n", i + 1, Supermarket_Product_List[i][product_NAME], Supermarket_Product_List[i][product_PRICE]);
strcat(DIALOG_247_LIST_String, Dialog_Lines_String);
}
//GPS
new city[45], zone[45];
//GPS Hospitales
format(DIALOG_PLAYER_GPS_SITE_0_String, sizeof DIALOG_PLAYER_GPS_SITE_0_String, "{CCCCCC}Lugar\t{90C3D4}Zona\n");
for(new i = 0; i != sizeof(Hospital_Spawn_Positions); i++ )
{
GetPointZone(Hospital_Spawn_Positions[i][0], Hospital_Spawn_Positions[i][1], city, zone);
format(Dialog_Lines_String, sizeof Dialog_Lines_String, "{FFFFFF}Hospital %d\t{90C3D4}%s, %s\n", i + 1, city, zone);
strcat(DIALOG_PLAYER_GPS_SITE_0_String, Dialog_Lines_String);
}
//GPS CONCES
format(DIALOG_PLAYER_GPS_SITE_7_String, sizeof DIALOG_PLAYER_GPS_SITE_7_String, "{CCCCCC}Lugar\t{90C3D4}Zona\n");
for(new i = 0; i != sizeof(SELL_VEHICLES_SHOPS_SPAWN); i++ )
{
GetPointZone(SELL_VEHICLES_SHOPS_SPAWN[i][0], SELL_VEHICLES_SHOPS_SPAWN[i][1], city, zone);
format(Dialog_Lines_String, sizeof Dialog_Lines_String, "{FFFFFF}Concesionario %d\t{90C3D4}%s, %s\n", i + 1, city, zone);
strcat(DIALOG_PLAYER_GPS_SITE_7_String, Dialog_Lines_String);
}
//Colores bandas
format(DIALOG_CREATE_CREW_COLOR_String, sizeof DIALOG_CREATE_CREW_COLOR_String, "");
for(new i = 0; i != sizeof(RandomColors); i++)
{
format(Dialog_Lines_String, sizeof(Dialog_Lines_String), "{%06x}color %d\n", RandomColors[i] >>> 8, i + 1);
strcat(DIALOG_CREATE_CREW_COLOR_String, Dialog_Lines_String);
}
//Animaciones
format(DIALOG_ANIMS_String, sizeof DIALOG_ANIMS_String, "");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /rendirse\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /blowjob\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /rodar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /borracho\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /bomba\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /apuntar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /reir\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /amenazar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /paja\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /herido\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /cruzarbrazos\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /recostarse\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /cubrirse\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /vomitar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /comer\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /despedir\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /nalgada\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /agonizar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /besar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /crack\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /mear\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /sentarse\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /fucku\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /llamar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /taichi\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /beber\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /boxear\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /saludar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /llorar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /dormir\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /rapear\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /astrip\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /bailar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /alentar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /hablar\n");
strcat(DIALOG_ANIMS_String, "{CCCCCC}>> /asiento\n");
return 1;
}
new
Club_Strippers_Actor[2],
Club_Bar_Actor,
Club_Actors[7];
new RandomStripAnimations[][] =
{
"STR_A2B",
"strip_G",
"STR_B2C",
"STR_C1",
"STR_C2"
};
new RandomPayStripAnimations[][] =
{
"PLY_CASH",
"PUN_CASH",
"PUN_HOLLER",
"PUN_LOOP"
};
SanAndreas()
{
CreateTextDraws();
LoadEnterExits();
LoadProperties();
LoadCrews();
LoadGangZones();
SetMyWorldTime(180); // 3 horas reales = 24 horas en juego
//HABITACION INTRO PARA REGISTRARSE
SetDynamicObjectMaterialText(CreateDynamicObject(19353, 445.2722, 514.8859, 1001.42, 0.0000, 0.3999, 0.3542), 0, SERVER_SHORT_NAME, 140, "Gabriola", 55, 1, -8092540, 0, 1); //TEXTO SA:MP DE LA HABITACION DE LA INTRO
SetDynamicObjectMaterialText(CreateDynamicObject(19353, 445.2722, 514.8859, 1001.3, 0.0000, 0.3999, 0.3542), 0, "roleplay", 140, "Gabriola", 55, 1, -8092540, 0, 1); //TEXTO 'SERVER 1.01' DE LA HABITACION DE LA INTRO
//CreateDynamicObject(19624, 446.51517, 514.81940, 1001.63550, 0.00000, 0.00000, 29.44436); //MALETA ROCKSTAR DE LA HABITACION DE LA INTRO
SetDynamicObjectMaterial(CreateDynamicObject(19893, 444.1881, 514.5712, 1001.3964, 0.0000, 0.0000, 0.0), 1, 18646, "matcolours", "grey-50-percent", 0xFFFFFFFF); //LAPTOP DE LA HABITACION DE LA INTRO
SetDynamicObjectMaterial(CreateDynamicObject(18981, 444.61780, 510.80801, 1004.14160, 0.00000, 90.00000, 0.00000), 0, 18646, "matcolours", "black", 0xFFFFFFFF); //TECHO NEGRO PRIMERA HABITACION DE LA INTRO
CreateDynamicObject(2102, 443.90033, 514.92853, 1001.66467, 0.00000, 0.00000, 38.35522); //RADIO DE LA HABITACION DE LA INTRO
//Putis
CreateDynamic3DTextLabel("Pulsa {c9c244}'F' {FFFFFF}para soltar unos cuantos billetes.", 0xFFFFFFFF, 1208.744140, -34.261119, 1000.953125, 5.0, .testlos = true, .worldid = 0, .interiorid = 3);
CreateDynamic3DTextLabel("Pulsa {c9c244}'F' {FFFFFF}para soltar unos cuantos billetes.", 0xFFFFFFFF, 1213.738037, -33.667881, 1000.953125, 5.0, .testlos = true, .worldid = 0, .interiorid = 3);
CreateDynamic3DTextLabel("Escribe {c9c244}/bebida {FFFFFF}para comprar bebida alcohólica.", 0xFFFFFFFF, 1207.234375, -29.231435, 1000.953125, 5.0, .testlos = true, .worldid = 0, .interiorid = 3);
Club_Strippers_Actor[0] = CreateDynamicActor(246, 1209.416503, -36.272216, 1001.484375, 17.0, .worldid = 0, .interiorid = 3);
Club_Strippers_Actor[1] = CreateDynamicActor(87, 1215.355712, -33.439422, 1001.382812, 85.3, .worldid = 0, .interiorid = 3);
CreateDynamic3DTextLabel("Osvalda", 0xFFFFFFAA, 1209.416503, -36.272216, 1001.484375 + 0.3, 5.0, .testlos = false, .worldid = 0, .interiorid = 3);
CreateDynamic3DTextLabel("Tamara", 0xFFFFFFAA, 1215.355712, -33.439422, 1001.382812 + 0.3, 5.0, .testlos = false, .worldid = 0, .interiorid = 3);
Club_Bar_Actor = CreateDynamicActor(195, 1206.232788, -29.325387, 1000.953125, 270.0, .worldid = 0, .interiorid = 3);
Club_Actors[0] = CreateDynamicActor(1, 1209.846191, -33.879096, 1000.953125, 180.626205, .worldid = 0, .interiorid = 3);
Club_Actors[1] = CreateDynamicActor(15, 1207.873535, -34.441837, 1000.953125, 213.213790, .worldid = 0, .interiorid = 3);
Club_Actors[2] = CreateDynamicActor(21, 1215.694702, -31.700962, 1000.953125, 158.379913, .worldid = 0, .interiorid = 3);
Club_Actors[3] = CreateDynamicActor(73, 1214.740356, -35.461227, 1000.953125, 337.608306, .worldid = 0, .interiorid = 3);
Club_Actors[4] = CreateDynamicActor(78, 1213.713012, -34.496170, 1000.953125, 293.427886, .worldid = 0, .interiorid = 3);
Club_Actors[5] = CreateDynamicActor(127, 1211.037963, -36.378440, 1000.960571, 74.092475, .worldid = 0, .interiorid = 3);
Club_Actors[6] = CreateDynamicActor(131, 1207.190307, -36.132881, 1000.953125, 277.761077, .worldid = 0, .interiorid = 3);
UpdateThePutis();
SetTimer("UpdateThePutis", 3000, true);
// Map Icons Hospitales
//for(new i = 0; i < sizeof Hospital_Spawn_Positions; i++) CreateDynamicMapIcon(Hospital_Spawn_Positions[i][0], Hospital_Spawn_Positions[i][1], Hospital_Spawn_Positions[i][2], 22, -1, 0, 0);
//Tuning
CreateDynamicMapIcon(263.592102, 22.960014, 2.170951, 63, -1, 0, 0);
CreateDynamic3DTextLabel("Usa {b9f442}/tuning {FFFFFF}para tunear tu vehículo", 0xFFFFFFFF, 263.592102, 22.960014, 2.170951, 10.0, .testlos = true, .worldid = 0, .interiorid = 0);
// 3D Texts Ropas
for(new i = 0; i < sizeof Clothing_Shop_Positions; i++)
{
new label_str[256];
format(label_str, sizeof label_str, "{97c142}%s\n\n{FFFFFF}Escribe {c9c244}/ropa {FFFFFF}para cambiar de ropa\n{FFFFFF}Escribe {c9c244}/toys {FFFFFF}para comprar accesorios", Clothing_Shop_Positions[i][clothing_shop_NAME]);
CreateDynamic3DTextLabel(label_str, 0xFFFFFFFF, Clothing_Shop_Positions[i][clothing_shop_X], Clothing_Shop_Positions[i][clothing_shop_Y], Clothing_Shop_Positions[i][clothing_shop_Z] + 0.25, 10.0, .testlos = true, .interiorid = Clothing_Shop_Positions[i][clothing_shop_INTERIOR]);
}
// 3D Texts Pedir comida
for(new i = 0; i < sizeof Fast_Food_Positions; i++)
{
new label_str[128];
format(label_str, sizeof label_str, "{97c142}%s\n\n{FFFFFF}Escribe {c9c244}/pedir {FFFFFF}para alimentarte", Fast_Food_Positions[i][fast_food_NAME]);
CreateDynamic3DTextLabel(label_str, 0xFFFFFFFF, Fast_Food_Positions[i][fast_food_X], Fast_Food_Positions[i][fast_food_Y], Fast_Food_Positions[i][fast_food_Z] + 0.25, 10.0, .testlos = true, .interiorid = Fast_Food_Positions[i][fast_food_INTERIOR]);
}
// 3D Texts Bank
for(new i = 0; i < sizeof Bank_Interior_Positions; i++) CreateDynamic3DTextLabel("Escribe {6a98e2}/banco {FFFFFF}para realizar una operación", 0xFFFFFFFF, Bank_Interior_Positions[i][bank_X], Bank_Interior_Positions[i][bank_Y], Bank_Interior_Positions[i][bank_Z] + 0.25, 10.0, .testlos = true, .worldid = Bank_Interior_Positions[i][bank_WORLD], .interiorid = Bank_Interior_Positions[i][bank_INTERIOR]);
for(new i = 0; i < sizeof BUY_PROPERTIES_SITES; i++) CreateDynamic3DTextLabel("Escribe {6a98e2}/comprarcasa [ID] {FFFFFF}para comprar una propiedad", 0xFFFFFFFF, BUY_PROPERTIES_SITES[i][site_X], BUY_PROPERTIES_SITES[i][site_Y], BUY_PROPERTIES_SITES[i][site_Z] + 0.25, 10.0, .testlos = true, .worldid = BUY_PROPERTIES_SITES[i][site_WORLD], .interiorid = BUY_PROPERTIES_SITES[i][site_INTERIOR]);
//Cajeros
for(new i = 0; i < sizeof ATM_BANK; i ++)
{
CreateDynamicObject(ATM_BANK[i][atm_modelid], ATM_BANK[i][atm_X], ATM_BANK[i][atm_Y], ATM_BANK[i][atm_Z], ATM_BANK[i][atm_RX], ATM_BANK[i][atm_RY], ATM_BANK[i][atm_RZ], ATM_BANK[i][atm_WORLD], ATM_BANK[i][atm_INTERIOR]);
ATM_BANK[i][atm_X] += (-0.5 * floatsin(-(ATM_BANK[i][atm_RZ] - 90.0), degrees));
ATM_BANK[i][atm_Y] += (-0.5 * floatcos(-(ATM_BANK[i][atm_RZ] - 90.0), degrees));
CreateDynamicMapIcon(ATM_BANK[i][atm_X], ATM_BANK[i][atm_Y], ATM_BANK[i][atm_Z], 52, -1, ATM_BANK[i][atm_WORLD], ATM_BANK[i][atm_INTERIOR]);
new atm_pickup_id = CreateDynamicPickup(0, 1, ATM_BANK[i][atm_X], ATM_BANK[i][atm_Y], ATM_BANK[i][atm_Z] + 0.10, ATM_BANK[i][atm_WORLD], ATM_BANK[i][atm_INTERIOR]), info_arr[3];
info_arr[0] = PICKUP_TYPE_ATM;
info_arr[1] = i; // Index
info_arr[2] = 0; // Nada
Streamer_SetArrayData(STREAMER_TYPE_PICKUP, atm_pickup_id, E_STREAMER_EXTRA_ID, info_arr);
}
// 3D Texts Gasolinera
for(new i = 0; i < sizeof Fuel_Stations; i++) CreateDynamic3DTextLabel("{97c142}Gasolinera\n\n{FFFFFF}Precio: {c9c244}9$/Litro\n{FFFFFF}Escribe {c9c244}/gasolina [litros / lleno] {FFFFFF}para repostar\n\nCompra {c9c244}/bidon {FFFFFF}de 20 litros por 250$", 0xFFFFFFFF, Fuel_Stations[i][0], Fuel_Stations[i][1], Fuel_Stations[i][2] + 0.25, 10.0, .testlos = true, .worldid = 0, .interiorid = 0);
//24/7 Int
CreateDynamic3DTextLabel("Escribe {b3f442}/productos {FFFFFF}para comprar", 0xFFFFFFFF, -27.964675, -89.948631, 1003.546875 + 0.25, 10.0, .testlos = true, .interiorid = 18);
//Mercado negro
CreateDynamic3DTextLabel("Escribe {b3f442}/mercado {FFFFFF}para comprar", 0xFFFFFFFF, 2119.059814, -2001.701904, 7.984375, 10.0, .testlos = true, .interiorid = 0, .worldid = 0);
//Vehs venta
for(new i = 0; i != sizeof SELL_INFO_VEHICLES; i ++)
{
if(SELL_INFO_VEHICLES[i][sell_info_COLOR_1] == -1) SELL_INFO_VEHICLES[i][sell_info_COLOR_1] = valid_work_vehicle_colors[random(sizeof(valid_work_vehicle_colors))];
if(SELL_INFO_VEHICLES[i][sell_info_COLOR_2] == -1) SELL_INFO_VEHICLES[i][sell_info_COLOR_2] = valid_work_vehicle_colors[random(sizeof(valid_work_vehicle_colors))];
new vehicle_id = INVALID_VEHICLE_ID;
vehicle_id = CreateVehicle(SELL_INFO_VEHICLES[i][sel_info_vehicle_MODELID], SELL_INFO_VEHICLES[i][sell_info_SPAWN_X], SELL_INFO_VEHICLES[i][sell_info_SPAWN_Y], SELL_INFO_VEHICLES[i][sell_info_SPAWN_Z], SELL_INFO_VEHICLES[i][sell_info_SPAWN_ANGLE], SELL_INFO_VEHICLES[i][sell_info_COLOR_1], SELL_INFO_VEHICLES[i][sell_info_COLOR_2], -1, false);
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_VALID] = true;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_TYPE] = VEHICLE_TYPE_SELL;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] = SELL_INFO_VEHICLES[i][sel_info_vehicle_MODELID];
format(GLOBAL_VEHICLES[vehicle_id][gb_vehicle_NUMBER_PLATE], 32, "EN VENTA");
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_X] = SELL_INFO_VEHICLES[i][sell_info_SPAWN_X];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Y] = SELL_INFO_VEHICLES[i][sell_info_SPAWN_Y];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Z] = SELL_INFO_VEHICLES[i][sell_info_SPAWN_Z];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_ANGLE] = SELL_INFO_VEHICLES[i][sell_info_SPAWN_ANGLE];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_POS][0] = GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_X];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_POS][1] = GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Y];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_POS][2] = GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Z];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_HEALTH] = 1000.0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_PANELS] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_DOORS] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_LIGHTS] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_TIRES] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_COLOR_1] = SELL_INFO_VEHICLES[i][sell_info_COLOR_1];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_COLOR_2] = SELL_INFO_VEHICLES[i][sell_info_COLOR_2];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_PAINTJOB] = 3; // No paintjob
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MAX_GAS] = 0.0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_GAS] = 0.0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_STATE] = VEHICLE_STATE_NORMAL;
SELL_VEHICLES[vehicle_id][sell_vehicle_VALID] = true;
SELL_VEHICLES[vehicle_id][sell_vehicle_SHOP] = SELL_INFO_VEHICLES[i][sell_info_SHOP];
SELL_VEHICLES[vehicle_id][sell_vehicle_PRICE] = VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_PRICE];
SELL_VEHICLES[vehicle_id][sell_vehicle_LEVEL] = 1; /*VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_LEVEL];*/
SELL_VEHICLES[vehicle_id][sell_vehicle_EXTRA] = VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_COINS];
SELL_VEHICLES[vehicle_id][sell_vehicle_VIP_LEVEL] = VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_VIP_LEVEL];
if(SELL_VEHICLES[vehicle_id][sell_vehicle_VIP_LEVEL]) SELL_VEHICLES[vehicle_id][sell_vehicle_LEVEL] = 1;
if(SELL_VEHICLES[vehicle_id][sell_vehicle_EXTRA]) SELL_VEHICLES[vehicle_id][sell_vehicle_PRICE] = 0;
SetVehicleToRespawnEx(vehicle_id);
new label_str[256];
if(SELL_VEHICLES[vehicle_id][sell_vehicle_VIP_LEVEL])
{
if(SELL_VEHICLES[vehicle_id][sell_vehicle_EXTRA])
{
format
(
label_str,
sizeof label_str,
"\
{F4DC42}Membresía VIP%d requerida\n\
\n\
{C4FF66}%s\n\n\
{FFFFFF}Coste: {C4FF66}%d "SERVER_COIN"\n\
{FFFFFF}Nivel: {C4FF66}%d\
", SELL_VEHICLES[vehicle_id][sell_vehicle_VIP_LEVEL], VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_NAME], SELL_VEHICLES[vehicle_id][sell_vehicle_EXTRA], SELL_VEHICLES[vehicle_id][sell_vehicle_LEVEL]
);
}
else
{
format
(
label_str,
sizeof label_str,
"\
{F4DC42}Membresía VIP%d requerida\n\
\n\
{C4FF66}%s\n\n\
{FFFFFF}Precio: {C4FF66}%s$\n\
{FFFFFF}Nivel: {C4FF66}%d\
", SELL_VEHICLES[vehicle_id][sell_vehicle_VIP_LEVEL], VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_NAME], number_format_thousand(SELL_VEHICLES[vehicle_id][sell_vehicle_PRICE]), SELL_VEHICLES[vehicle_id][sell_vehicle_LEVEL]
);
}
}
else
{
if(SELL_VEHICLES[vehicle_id][sell_vehicle_EXTRA])
{
format
(
label_str,
sizeof label_str,
"\
{C4FF66}%s\n\n\
{FFFFFF}Coste: {C4FF66}%d "SERVER_COIN"\n\
{FFFFFF}Nivel: {C4FF66}%d\
", VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_NAME], SELL_VEHICLES[vehicle_id][sell_vehicle_EXTRA], SELL_VEHICLES[vehicle_id][sell_vehicle_LEVEL]
);
}
else
{
format
(
label_str,
sizeof label_str,
"\
{C4FF66}%s\n\n\
{FFFFFF}Precio: {C4FF66}%s$\n\
{FFFFFF}Nivel: {C4FF66}%d\
", VEHICLE_INFO[GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_NAME], number_format_thousand(SELL_VEHICLES[vehicle_id][sell_vehicle_PRICE]), SELL_VEHICLES[vehicle_id][sell_vehicle_LEVEL]
);
}
}
SELL_VEHICLES[vehicle_id][sell_vehicle_LABEL_ID] = CreateDynamic3DTextLabel(label_str, 0xFFFFFFFF, 0.0, 0.0, 1.5, 10.0, .attachedvehicle = vehicle_id, .testlos = true, .worldid = 0, .interiorid = 0);
}
//Concesionarios
for(new i = 0; i < sizeof SELL_VEHICLES_SHOPS_SPAWN; i++)
{
CreateDynamicMapIcon(SELL_VEHICLES_SHOPS_SPAWN[i][0], SELL_VEHICLES_SHOPS_SPAWN[i][1], SELL_VEHICLES_SHOPS_SPAWN[i][2], 55, -1, 0, 0);
CreateDynamic3DTextLabel("{ffdf2d}SALIDA DE VEHICULOS", 0xFFFFFFFF, SELL_VEHICLES_SHOPS_SPAWN[i][0], SELL_VEHICLES_SHOPS_SPAWN[i][1], SELL_VEHICLES_SHOPS_SPAWN[i][2], 10.0, .testlos = true, .worldid = 0, .interiorid = 0);
}
//Notario
CreateDynamic3DTextLabel("Escribe {79abfc}/pvender {FFFFFF}para vender\nalguna propiedad o vehículo", 0xFFFFFFFF, -474.596282, 289.679107, 2004.584960, 10.0, .testlos = true, .worldid = 20, .interiorid = 20);
//Grua
CreateDynamic3DTextLabel("Escribe {79abfc}/grua {FFFFFF}para solicitar\nel servicio de grúa a un vehículo", 0xFFFFFFFF, -508.645385, 322.147644, 2004.585937, 10.0, .testlos = true, .worldid = 20, .interiorid = 20);
//San Andreas Vehicles
for(new i = 0; i != sizeof San_Andreas_Vehicles; i ++)
{
if(San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_1] == -1) San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_1] = valid_work_vehicle_colors[random(sizeof(valid_work_vehicle_colors))];
if(San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_2] == -1) San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_2] = valid_work_vehicle_colors[random(sizeof(valid_work_vehicle_colors))];
new vehicle_id = INVALID_VEHICLE_ID, respawn_time = 300;
if(San_Andreas_Vehicles[i][san_andreas_vehicle_TYPE] == VEHICLE_TYPE_WORK)
{
if(work_info[ San_Andreas_Vehicles[i][san_andreas_vehicle_TYPE_IN] ][work_info_TYPE] == WORK_TYPE_FAMILY)
{
respawn_time = 900;
}
}
vehicle_id = CreateVehicle(San_Andreas_Vehicles[i][san_andreas_vehicle_MODELID], San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_X], San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_Y], San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_Z], San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_ANGLE], San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_1], San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_2], respawn_time, false);
if(vehicle_id == INVALID_VEHICLE_ID) continue;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_VALID] = true;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_TYPE] = San_Andreas_Vehicles[i][san_andreas_vehicle_TYPE];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] = San_Andreas_Vehicles[i][san_andreas_vehicle_MODELID];
format(GLOBAL_VEHICLES[vehicle_id][gb_vehicle_NUMBER_PLATE], 32, "%c%c%c-%04d", getRandomLetter(), getRandomLetter(), getRandomLetter(), random(9999));
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_X] = San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_X];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Y] = San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_Y];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Z] = San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_Z];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_ANGLE] = San_Andreas_Vehicles[i][san_andreas_vehicle_SPAWN_ANGLE];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_POS][0] = GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_X];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_POS][1] = GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Y];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_POS][2] = GLOBAL_VEHICLES[vehicle_id][gb_vehicle_SPAWN_Z];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_HEALTH] = 1000.0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_PANELS] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_DOORS] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_LIGHTS] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_DAMAGE_TIRES] = 0;
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_COLOR_1] = San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_1];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_COLOR_2] = San_Andreas_Vehicles[i][san_andreas_vehicle_COLOR_2];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_PAINTJOB] = 3; // No paintjob
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MAX_GAS] = VEHICLE_INFO[ GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MODELID] - 400][vehicle_info_MAX_GAS];
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_GAS] = frandom(GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MAX_GAS], GLOBAL_VEHICLES[vehicle_id][gb_vehicle_MAX_GAS] / 3, 2);
GLOBAL_VEHICLES[vehicle_id][gb_vehicle_STATE] = VEHICLE_STATE_NORMAL;
GLOBAL_VEHICLES[vehicle_id][gp_vehicle_vip] = San_Andreas_Vehicles[i][san_andreas_vehicle_vip];
if(GLOBAL_VEHICLES[vehicle_id][gb_vehicle_TYPE] == VEHICLE_TYPE_WORK)
{
WORK_VEHICLES[vehicle_id][work_vehicle_VALID] = true;
WORK_VEHICLES[vehicle_id][work_vehicle_WORK] = San_Andreas_Vehicles[i][san_andreas_vehicle_TYPE_IN];
WORK_VEHICLES[vehicle_id][work_vehicle_EXP] = San_Andreas_Vehicles[i][san_andreas_vehicle_TYPE_IN_EXP];
WORK_VEHICLES[vehicle_id][work_vehicle_NEED_DUTY] = work_info[ WORK_VEHICLES[vehicle_id][work_vehicle_WORK] ][work_info_NEED_DUTY];
}
SetVehicleToRespawnEx(vehicle_id);
}
//Barreras
for(new i = 0; i != sizeof San_Andreas_Barriers; i ++)
{
CreateDynamicObject(966, San_Andreas_Barriers[i][barrier_X], San_Andreas_Barriers[i][barrier_Y], San_Andreas_Barriers[i][barrier_Z], 0.0, 0.0, San_Andreas_Barriers[i][barrier_ROTATION], San_Andreas_Barriers[i][barrier_WORLD], San_Andreas_Barriers[i][barrier_INTERIOR]);
San_Andreas_Barriers[i][barrier_OBJECT_ID] = CreateDynamicObject(968, San_Andreas_Barriers[i][barrier_X], San_Andreas_Barriers[i][barrier_Y], San_Andreas_Barriers[i][barrier_Z] + 0.72967, 0.0, -90.0, San_Andreas_Barriers[i][barrier_ROTATION], San_Andreas_Barriers[i][barrier_WORLD], San_Andreas_Barriers[i][barrier_INTERIOR]);
if(San_Andreas_Barriers[i][barrier_VEHICLE_TYPE])
{
new label_str[128];
format(label_str, sizeof label_str, "{b2f441}%c%s", toupper(work_info[ San_Andreas_Barriers[i][barrier_VEHICLE_TYPE_IN] ][work_info_NAME][0]), work_info[ San_Andreas_Barriers[i][barrier_VEHICLE_TYPE_IN] ][work_info_NAME][1]);
CreateDynamic3DTextLabel(label_str, 0xFFFFFFFF, San_Andreas_Barriers[i][barrier_X], San_Andreas_Barriers[i][barrier_Y], San_Andreas_Barriers[i][barrier_Z] + 1.5, 15.0, .worldid = San_Andreas_Barriers[i][barrier_WORLD], .interiorid = San_Andreas_Barriers[i][barrier_INTERIOR]);
}
}
//polciais
for(new i = 0; i != sizeof POLICE_GARAGE_DOORS; i ++)
{
POLICE_GARAGE_DOORS[i][police_gdoor_OBJECT_ID] = CreateDynamicObject(POLICE_GARAGE_DOORS[i][police_gdoor_MODELID], POLICE_GARAGE_DOORS[i][police_gdoor_CLOSED_X], POLICE_GARAGE_DOORS[i][police_gdoor_CLOSED_Y], POLICE_GARAGE_DOORS[i][police_gdoor_CLOSED_Z], POLICE_GARAGE_DOORS[i][police_gdoor_CLOSED_RX], POLICE_GARAGE_DOORS[i][police_gdoor_CLOSED_RY], POLICE_GARAGE_DOORS[i][police_gdoor_CLOSED_RZ], 0, 0);
}
for(new i = 0; i != sizeof POLICE_DOORS; i ++)
{
POLICE_DOORS[i][police_door_OBJECT_ID] = CreateDynamicObject(POLICE_DOORS[i][police_door_MODELID], POLICE_DOORS[i][police_door_X], POLICE_DOORS[i][police_door_Y], POLICE_DOORS[i][police_door_Z], 0.0, 0.0, POLICE_DOORS[i][police_door_RZ], POLICE_DOORS[i][police_door_WORLD], POLICE_DOORS[i][police_door_INTERIOR]);
}
CreateDynamic3DTextLabel("Usa {b9f442}/policia {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, 253.280288, 76.219017, 1003.640625, 5.0, .testlos = true, .worldid = 0, .interiorid = 6);
CreateDynamic3DTextLabel("Usa {b9f442}/policia {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, 266.547180, 119.652816, 1004.617187, 5.0, .testlos = true, .worldid = 0, .interiorid = 10);
CreateDynamic3DTextLabel("Usa {b9f442}/policia {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, 217.816406, 187.667922, 1003.031250, 5.0, .testlos = true, .worldid = 0, .interiorid = 3);
CreateDynamic3DTextLabel("Usa {b9f442}/equiparse {FFFFFF}para equiparte", 0xFFFFFFFF, 219.244018, 69.982215, 1005.039062, 5.0, .testlos = true, .worldid = 0, .interiorid = 6);
CreateDynamic3DTextLabel("Usa {b9f442}/equiparse {FFFFFF}para equiparte", 0xFFFFFFFF, 262.945587, 109.785270, 1004.617187, 5.0, .testlos = true, .worldid = 0, .interiorid = 10);
CreateDynamic3DTextLabel("Usa {b9f442}/equiparse {FFFFFF}para equiparte", 0xFFFFFFFF, 222.683914, 186.956054, 1003.031250, 5.0, .testlos = true, .worldid = 0, .interiorid = 3);
Jail_Areas[0] = CreateDynamicRectangle(258.236938, 72.319061, 273.117279, 95.841438, 0, 6);
Jail_Areas[1] = CreateDynamicRectangle(211.001739, 117.171920, 236.010986, 104.004219, 0, 10);
Jail_Areas[2] = CreateDynamicRectangle(204.957885, 180.868392, 183.743148, 168.624618, 0, 3);
//Safe Zones
for(new i = 0; i != sizeof SAFE_ZONES; i ++)
{
SAFE_ZONES[i][safe_zone_AREA_ID] = CreateDynamicRectangle(SAFE_ZONES[i][safe_zone_MIN_X], SAFE_ZONES[i][safe_zone_MIN_Y], SAFE_ZONES[i][safe_zone_MAX_X], SAFE_ZONES[i][safe_zone_MAX_Y], SAFE_ZONES[i][safe_zone_WORLD], SAFE_ZONES[i][safe_zone_INTERIOR]);
}
//Trabajos
for(new i = 1; i != sizeof obtain_work_coords; i ++)
{
new label_str[256];
switch(work_info[i][work_info_TYPE])
{
case WORK_TYPE_NORMAL:
{
format(label_str, sizeof label_str, "Trabajo {95F442}%s\n{FFFFFF}Nivel: {95f442}%d\n\n{FFFFFF}Usa {caf441}/trabajar", work_info[i][work_info_NAME], work_info[i][work_info_LEVEL]);
CreateDynamic3DTextLabel(label_str, 0xFFFFFFFF, obtain_work_coords[i][obtain_work_X], obtain_work_coords[i][obtain_work_Y], obtain_work_coords[i][obtain_work_Z], 10.0, .testlos = true, .interiorid = obtain_work_coords[i][obtain_work_INTERIOR]);
CreateDynamicPickup(1239, 1, obtain_work_coords[i][obtain_work_X], obtain_work_coords[i][obtain_work_Y], obtain_work_coords[i][obtain_work_Z], -1, obtain_work_coords[i][obtain_work_INTERIOR]);
if(obtain_work_coords[i][obtain_work_MAP_ICON]) CreateDynamicMapIcon(obtain_work_coords[i][obtain_work_MAP_ICON_X], obtain_work_coords[i][obtain_work_MAP_ICON_Y], obtain_work_coords[i][obtain_work_MAP_ICON_Z], obtain_work_coords[i][obtain_work_MAP_ICON_ID], -1, 0, 0);
}
}
}
//Random taximeters
for(new i = 0; i != MAX_VEHICLES; i ++) TAXI_METER_VEHICLE[i][veh_taxi_meter_PRICE] = minrand(2, 8);
//Carga camioneros
for(new i = 0; i != sizeof LoadTrucksPoints; i ++)
{
CreateDynamic3DTextLabel("Usa {b9f442}/cargar {FFFFFF}para cargar el camión", 0xFFFFFFFF, LoadTrucksPoints[i][0], LoadTrucksPoints[i][1], LoadTrucksPoints[i][2], 10.0, .testlos = true, .worldid = 0, .interiorid = 0);
CreateDynamicPickup(19135, 1, LoadTrucksPoints[i][0], LoadTrucksPoints[i][1], LoadTrucksPoints[i][2], 0, 0);
}
//Mecánico
Mechanic_Area = CreateDynamicRectangle(-115.255050, -1211.812377, -54.539089, -1179.635253, 0, 0);
CreateDynamic3DTextLabel("Usa {b9f442}/mecanico {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, -89.087181, -1184.843627, 2.940625, 5.0, .testlos = true, .worldid = 0, .interiorid = 0);
CreateDynamic3DTextLabel("Piezas de mecánico\nEscribe {b9f442}/piezas [cantidad] {FFFFFF}para comprar piezas\nPrecio de pieza: {b9f442}50$", 0xFFFFFFFF, -80.710136, -1193.329956, 2.947619, 5.0, .testlos = true, .worldid = 0, .interiorid = 0);
//Leñador
CreateDynamicPickup(19793, 1, -527.670349, -97.338562, 63.176174, 0, 0);
CreateDynamic3DTextLabel("Usa {b9f442}/talar {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, -527.670349, -97.338562, 63.176174, 5.0, .testlos = true, .worldid = 0, .interiorid = 0);
//Pizzero
CreateDynamicPickup(1582, 1, 2097.355712, -1818.040771, 13.382812, 0, 0);
CreateDynamic3DTextLabel("Usa {b9f442}/pizzero {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, 2097.355712, -1818.040771, 13.382812, 5.0, .testlos = true, .worldid = 0, .interiorid = 0);
//Medico
CreateDynamicPickup(1275, 1, -2029.751342, -114.503044, 1035.171875, -1, 3);
CreateDynamic3DTextLabel("Usa {b9f442}/medico {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, -2029.751342, -114.503044, 1035.171875, 5.0, .testlos = true, .interiorid = 3);
//mercado
CreateDynamicActor(179, 2120.724853, -2000.400268, 7.984375, 130.0, true, 100.0, 0, 0);
//Trash
CreateDynamic3DTextLabel("Usa {b9f442}/basurero {FFFFFF}para empezar a trabajar\no para dejar de trabajar", 0xFFFFFFFF, -1906.577514, -1756.457519, 22.079319, 5.0, .testlos = true, .worldid = 0, .interiorid = 0);
//Ruta 0
CreateTrashCheckpoint(0, 1440, -1812.46228, -558.37744, 15.73948, 0.00000, 0.00000, 274.24359);
CreateTrashCheckpoint(0, 1440, -1793.84106, -312.50452, 24.46057, 0.00000, 0.00000, 268.49271);
CreateTrashCheckpoint(0, 1440, -1801.20825, 115.39587, 14.55550, 0.00000, 0.00000, 280.09882);
CreateTrashCheckpoint(0, 1440, -1750.40051, 323.11810, 6.61720, 0.00000, 0.00000, 319.06424);
CreateTrashCheckpoint(0, 1440, -1814.43311, 511.15622, 28.66113, 0.00000, 9.00000, 304.31201);
CreateTrashCheckpoint(0, 1440, -1982.79871, 614.85687, 34.61121, 0.00000, 0.00000, 0.00000);
CreateTrashCheckpoint(0, 1440, -2229.42896, 575.27448, 34.58952, 0.00000, 0.00000, 0.00000);
CreateTrashCheckpoint(0, 1440, -2385.20020, 513.64594, 28.11606, 0.00000, 0.00000, 282.48959);
CreateTrashCheckpoint(0, 1440, -2258.51782, 221.79150, 34.74878, 0.00000, 0.00000, 90.00000);
CreateTrashCheckpoint(0, 1440, -2266.30273, -206.86926, 34.86986, 0.00000, 0.00000, 90.00000);
CreateTrashCheckpoint(0, 1440, -1995.48499, -771.90076, 31.56746, 0.00000, 0.00000, 90.00000);
//Ruta 1
CreateTrashCheckpoint(1, 1440, -2211.24414, -964.98248, 38.68247, 0.00000, 2.50000, 286.39740);
CreateTrashCheckpoint(1, 1440, -2424.54443, -595.71997, 131.88649, 0.00000, -4.50000, 303.65921);
CreateTrashCheckpoint(1, 1440, -2602.82544, -478.18484, 68.15035, 0.00000, 0.00000, 21.71607);
CreateTrashCheckpoint(1, 1440, -2353.62256, -396.48764, 78.42006, 0.00000, -3.50000, 305.07410);
CreateTrashCheckpoint(1, 1440, -2756.29199, -500.66721, 6.77589, 0.00000, 0.00000, 316.44635);
CreateTrashCheckpoint(1, 1440, -2811.07056, -346.85269, 6.66456, 0.00000, 0.00000, 259.86459);
CreateTrashCheckpoint(1, 1440, -2415.51563, -128.34013, 34.82273, 0.00000, 0.00000, 250.60507);
CreateTrashCheckpoint(1, 1440, -2028.09985, -76.42242, 34.70956, 0.00000, 0.00000, 0.00000);
//Ruta 2
CreateTrashCheckpoint(2, 1440, -2193.88306, -2156.55347, 46.46848, 0.00000, -10.00000, 46.48320);
CreateTrashCheckpoint(2, 1440, -2208.01904, -2280.10645, 30.12751, 0.00000, 0.00000, 331.91882);
CreateTrashCheckpoint(2, 1440, -2125.33594, -2256.24902, 30.10599, 0.00000, 0.00000, 326.47290);
CreateTrashCheckpoint(2, 1440, -2101.86353, -2313.20093, 30.14946, 0.00000, 0.00000, 42.68287);
CreateTrashCheckpoint(2, 1440, -2183.69775, -2449.03003, 30.01783, 0.00000, 0.00000, 51.16318);
CreateTrashCheckpoint(2, 1440, -2328.98047, -2704.17358, 44.41791, 6.17998, 5.88000, 340.20822);
CreateTrashCheckpoint(2, 1440, -2601.78345, -2334.39746, 10.50614, 0.00000, 0.00000, 41.64481);
//Leñador arboles
Lumberjack_Area = CreateDynamicRectangle(-613.953796, -209.777252, -381.961181, -6.355076, 0, 0);
for(new i = 0; i != sizeof LUMBER_TREES; i ++)
{
LUMBER_TREES[i][lumber_tree_OBJECT_ID] = CreateDynamicObject(LUMBER_TREES[i][lumber_tree_MODELID], LUMBER_TREES[i][lumber_tree_X], LUMBER_TREES[i][lumber_tree_Y], LUMBER_TREES[i][lumber_tree_Z], LUMBER_TREES[i][lumber_tree_RX], LUMBER_TREES[i][lumber_tree_RY], LUMBER_TREES[i][lumber_tree_RZ], 0, 0);
new label_str[256];
format(label_str, sizeof label_str, "{f46530}Árbol (%d)\n\n{FFFFFF}Pulsa {f9d834}~k~~CONVERSATION_NO~ {FFFFFF}para talar el árbol.", i);
LUMBER_TREES[i][lumber_tree_LABEL] = CreateDynamic3DTextLabel(label_str, 0xFFFFFFFF, LUMBER_TREES[i][lumber_tree_X], LUMBER_TREES[i][lumber_tree_Y], LUMBER_TREES[i][lumber_tree_Z] + 1.5, 5.0, .testlos = false, .worldid = 0, .interiorid = 0);
}
//Agricultor
Farmer_Area = CreateDynamicCircle(1461.8894, -83.2621, 65.0, 0, 0);
CreateDynamicMapIcon(1461.8894, -83.2621, 65.0, 53, -1, 0, 0);
CreateDynamic3DTextLabel("Usa {b9f442}/semillas {FFFFFF}para comprar semillas", 0xFFFFFFFF, 1566.521606, 31.370532, 24.16406, 5.0, .testlos = true, .worldid = 0, .interiorid = 0);
//Cosechador
Harvest_Area = CreateDynamicRectangle(-428.336059, -1667.658569, -116.565414, -1220.122070, 0, 0);
return 1;
}
forward UpdateThePutis();
public UpdateThePutis()
{
ApplyDynamicActorAnimation(Club_Bar_Actor, "BAR", "BARman_idle", 4.1, 1, 0, 0, 0, 0);
new
strip_anim = random(sizeof(RandomStripAnimations)),
stripper = random(sizeof(Club_Strippers_Actor));
ApplyDynamicActorAnimation(Club_Strippers_Actor[stripper], "STRIP", RandomStripAnimations[strip_anim], 4.1, 1, 0, 0, 0, 0);
for(new i = 0; i != sizeof(Club_Actors); i ++)
{
ApplyDynamicActorAnimation(Club_Actors[i], "STRIP", RandomPayStripAnimations[random(sizeof(RandomPayStripAnimations))], 4.1, 1, 0, 0, 0, 0);
}
return 1;
}
CreateTrashCheckpoint(route, modelid, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
if(route >= MAX_ROUTES) return print("---> Límite superado en array 'TRASH_OBJECTS, route' en la función 'CreateTrashCheckpoint'.");
if(!TRASH_OBJECTS[route][trash_route_VALID]) TRASH_OBJECTS[route][trash_route_VALID] = true;
if(TRASH_OBJECTS[route][trash_route_OBJECTS] >= MAX_OBJECTS_PER_ROUTE) return print("---> Límite superado en array 'TRASH_OBJECTS, objects' en la función 'CreateTrashCheckpoint'.");
if(TRASH_OBJECTS[route][trash_route_OBJECTS] == 0) TRASH_OBJECTS[route][trash_route_DISTANCE] = GetDistanceBetweenPoints3D(x, y, z, obtain_work_coords[WORK_TRASH][obtain_work_X], obtain_work_coords[WORK_TRASH][obtain_work_Y], obtain_work_coords[WORK_TRASH][obtain_work_Z]);
else
{
TRASH_OBJECTS[route][trash_route_DISTANCE] -= GetDistanceBetweenPoints3D(TRASH_OBJECTS[route][trash_object_X][ TRASH_OBJECTS[route][trash_route_OBJECTS] - 1], TRASH_OBJECTS[route][trash_object_Y][ TRASH_OBJECTS[route][trash_route_OBJECTS] - 1 ], TRASH_OBJECTS[route][trash_object_Z][ TRASH_OBJECTS[route][trash_route_OBJECTS] - 1 ], obtain_work_coords[WORK_TRASH][obtain_work_X], obtain_work_coords[WORK_TRASH][obtain_work_Y], obtain_work_coords[WORK_TRASH][obtain_work_Z]);
TRASH_OBJECTS[route][trash_route_DISTANCE] += GetDistanceBetweenPoints3D(x, y, z, TRASH_OBJECTS[route][trash_object_X][ TRASH_OBJECTS[route][trash_route_OBJECTS] - 1], TRASH_OBJECTS[route][trash_object_Y][ TRASH_OBJECTS[route][trash_route_OBJECTS] - 1 ], TRASH_OBJECTS[route][trash_object_Z][ TRASH_OBJECTS[route][trash_route_OBJECTS] - 1 ]);
}
TRASH_OBJECTS[route][trash_object_MODELID][ TRASH_OBJECTS[route][trash_route_OBJECTS] ] = modelid;
TRASH_OBJECTS[route][trash_object_X][ TRASH_OBJECTS[route][trash_route_OBJECTS] ] = x;
TRASH_OBJECTS[route][trash_object_Y][ TRASH_OBJECTS[route][trash_route_OBJECTS] ] = y;
TRASH_OBJECTS[route][trash_object_Z][ TRASH_OBJECTS[route][trash_route_OBJECTS] ] = z;
TRASH_OBJECTS[route][trash_object_RX][ TRASH_OBJECTS[route][trash_route_OBJECTS] ] = rx;
TRASH_OBJECTS[route][trash_object_RY][ TRASH_OBJECTS[route][trash_route_OBJECTS] ] = ry;
TRASH_OBJECTS[route][trash_object_RZ][ TRASH_OBJECTS[route][trash_route_OBJECTS] ] = rz;
//CreateDynamicObject(modelid, x, y, z, rx, ry, rz, 0, 0);
TRASH_OBJECTS[route][trash_route_DISTANCE] += GetDistanceBetweenPoints3D(x, y, z, obtain_work_coords[WORK_TRASH][obtain_work_X], obtain_work_coords[WORK_TRASH][obtain_work_Y], obtain_work_coords[WORK_TRASH][obtain_work_Z]);
TRASH_OBJECTS[route][trash_route_MONEY] = floatround(0.3 * TRASH_OBJECTS[route][trash_route_DISTANCE]);
TRASH_OBJECTS[route][trash_route_OBJECTS] ++;
return 1;
}
stock Float:GetDistanceBetweenPoints3D(Float:x1, Float:y1, Float:z1, Float:x2, Float:y2, Float:z2)
{
return VectorSize(x1-x2,y1-y2,z1-z2);
}
CreateTextDraws()
{
for(new i; i < sizeof(Textdraws); i++) Textdraws[Textdraws_Enum:i] = _: INVALID_PLAYER_TEXT_DRAW;
Textdraws[textdraw_HUD][0] = TextDrawCreate(320.000000, 440.000000, "BarraAtras");
TextDrawLetterSize(Textdraws[textdraw_HUD][0], 0.000000, 9.933333);
TextDrawTextSize(Textdraws[textdraw_HUD][0], 0.000000, 699.000000);
TextDrawAlignment(Textdraws[textdraw_HUD][0], 2);
TextDrawColor(Textdraws[textdraw_HUD][0], -1);
TextDrawUseBox(Textdraws[textdraw_HUD][0], 1);
TextDrawBoxColor(Textdraws[textdraw_HUD][0], 90);
TextDrawSetShadow(Textdraws[textdraw_HUD][0], 0);
TextDrawSetOutline(Textdraws[textdraw_HUD][0], 0);
TextDrawBackgroundColor(Textdraws[textdraw_HUD][0], 255);
TextDrawFont(Textdraws[textdraw_HUD][0], 1);
TextDrawSetProportional(Textdraws[textdraw_HUD][0], 1);
TextDrawSetShadow(Textdraws[textdraw_HUD][0], 0);
Textdraws[textdraw_HUD][1] = TextDrawCreate(0.000000, 442.000000, "BarraAtrasRep");
TextDrawLetterSize(Textdraws[textdraw_HUD][1], 0.000000, 0.266667);
TextDrawTextSize(Textdraws[textdraw_HUD][1], 450.000000, 0.000000);
TextDrawAlignment(Textdraws[textdraw_HUD][1], 1);
TextDrawColor(Textdraws[textdraw_HUD][1], -1);
TextDrawUseBox(Textdraws[textdraw_HUD][1], 1);
TextDrawBoxColor(Textdraws[textdraw_HUD][1], 7886170);
TextDrawSetShadow(Textdraws[textdraw_HUD][1], 0);
TextDrawSetOutline(Textdraws[textdraw_HUD][1], 0);
TextDrawBackgroundColor(Textdraws[textdraw_HUD][1], 255);
TextDrawFont(Textdraws[textdraw_HUD][1], 1);
TextDrawSetProportional(Textdraws[textdraw_HUD][1], 1);
TextDrawSetShadow(Textdraws[textdraw_HUD][1], 0);
Textdraws[textdraw_HUD][2] = TextDrawCreate(456.000000, 442.000000, "BarraAtrasHambre");
TextDrawLetterSize(Textdraws[textdraw_HUD][2], 0.000000, 0.266667);
TextDrawTextSize(Textdraws[textdraw_HUD][2], 546.000000, 0.000000);
TextDrawAlignment(Textdraws[textdraw_HUD][2], 1);
TextDrawColor(Textdraws[textdraw_HUD][2], -1);
TextDrawUseBox(Textdraws[textdraw_HUD][2], 1);
TextDrawBoxColor(Textdraws[textdraw_HUD][2], 1414856922);
TextDrawSetShadow(Textdraws[textdraw_HUD][2], 0);
TextDrawSetOutline(Textdraws[textdraw_HUD][2], 0);
TextDrawBackgroundColor(Textdraws[textdraw_HUD][2], 255);
TextDrawFont(Textdraws[textdraw_HUD][2], 1);
TextDrawSetProportional(Textdraws[textdraw_HUD][2], 1);
TextDrawSetShadow(Textdraws[textdraw_HUD][2], 0);
Textdraws[textdraw_HUD][3] = TextDrawCreate(552.000000, 442.000000, "BarraAtrasSed");
TextDrawLetterSize(Textdraws[textdraw_HUD][3], 0.000000, 0.266667);
TextDrawTextSize(Textdraws[textdraw_HUD][3], 642.000000, 0.000000);
TextDrawAlignment(Textdraws[textdraw_HUD][3], 1);
TextDrawColor(Textdraws[textdraw_HUD][3], -1);
TextDrawUseBox(Textdraws[textdraw_HUD][3], 1);
TextDrawBoxColor(Textdraws[textdraw_HUD][3], 8173202);
TextDrawSetShadow(Textdraws[textdraw_HUD][3], 0);
TextDrawSetOutline(Textdraws[textdraw_HUD][3], 0);
TextDrawBackgroundColor(Textdraws[textdraw_HUD][3], 255);
TextDrawFont(Textdraws[textdraw_HUD][3], 1);
TextDrawSetProportional(Textdraws[textdraw_HUD][3], 1);
TextDrawSetShadow(Textdraws[textdraw_HUD][3], 0);
Textdraws[textdraw_HUD][4] = TextDrawCreate(637.000000, 427.000000, ""SERVER_NAME" "SERVER_VERSION"");
TextDrawLetterSize(Textdraws[textdraw_HUD][4], 0.221333, 1.077334);
TextDrawAlignment(Textdraws[textdraw_HUD][4], 3);
TextDrawColor(Textdraws[textdraw_HUD][4], -156);
TextDrawSetShadow(Textdraws[textdraw_HUD][4], 0);
TextDrawSetOutline(Textdraws[textdraw_HUD][4], 0);
TextDrawBackgroundColor(Textdraws[textdraw_HUD][4], 255);
TextDrawFont(Textdraws[textdraw_HUD][4], 1);
TextDrawSetProportional(Textdraws[textdraw_HUD][4], 1);
TextDrawSetShadow(Textdraws[textdraw_HUD][4], 0);
Textdraws[textdraw_GPS_MAP][0] = TextDrawCreate(-5.000000, 132.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_GPS_MAP][0], 0.000000, 22.498472);
TextDrawTextSize(Textdraws[textdraw_GPS_MAP][0], 180.130477, 0.000000);
TextDrawAlignment(Textdraws[textdraw_GPS_MAP][0], 1);
TextDrawColor(Textdraws[textdraw_GPS_MAP][0], -1);
TextDrawUseBox(Textdraws[textdraw_GPS_MAP][0], 1);
TextDrawBoxColor(Textdraws[textdraw_GPS_MAP][0], 120);
TextDrawSetShadow(Textdraws[textdraw_GPS_MAP][0], 0);
TextDrawSetOutline(Textdraws[textdraw_GPS_MAP][0], 0);
TextDrawBackgroundColor(Textdraws[textdraw_GPS_MAP][0], 255);
TextDrawFont(Textdraws[textdraw_GPS_MAP][0], 1);
TextDrawSetProportional(Textdraws[textdraw_GPS_MAP][0], 1);
TextDrawSetShadow(Textdraws[textdraw_GPS_MAP][0], 0);
Textdraws[textdraw_GPS_MAP][1] = TextDrawCreate(map_td_X, map_td_Y, "samaps:map");
TextDrawLetterSize(Textdraws[textdraw_GPS_MAP][1], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_GPS_MAP][1], map_td_SIZE_X, map_td_SIZE_Y);
TextDrawAlignment(Textdraws[textdraw_GPS_MAP][1], 1);
TextDrawColor(Textdraws[textdraw_GPS_MAP][1], -1);
TextDrawSetShadow(Textdraws[textdraw_GPS_MAP][1], 0);
TextDrawSetOutline(Textdraws[textdraw_GPS_MAP][1], 0);
TextDrawBackgroundColor(Textdraws[textdraw_GPS_MAP][1], 255);
TextDrawFont(Textdraws[textdraw_GPS_MAP][1], 4);
TextDrawSetProportional(Textdraws[textdraw_GPS_MAP][1], 0);
TextDrawSetShadow(Textdraws[textdraw_GPS_MAP][1], 0);
Textdraws[textdraw_GPS_MAP][2] = TextDrawCreate(90.000000, 324.000000, "GPS_-_/mapa");
TextDrawLetterSize(Textdraws[textdraw_GPS_MAP][2], 0.197330, 1.027553);
TextDrawAlignment(Textdraws[textdraw_GPS_MAP][2], 2);
TextDrawColor(Textdraws[textdraw_GPS_MAP][2], -186);
TextDrawSetShadow(Textdraws[textdraw_GPS_MAP][2], 0);
TextDrawSetOutline(Textdraws[textdraw_GPS_MAP][2], 0);
TextDrawBackgroundColor(Textdraws[textdraw_GPS_MAP][2], 255);
TextDrawFont(Textdraws[textdraw_GPS_MAP][2], 1);
TextDrawSetProportional(Textdraws[textdraw_GPS_MAP][2], 1);
TextDrawSetShadow(Textdraws[textdraw_GPS_MAP][2], 0);
Textdraws[textdraw_PLAYER_REP_BACK][0] = TextDrawCreate(500.000000, 13.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_PLAYER_REP_BACK][0], 0.000000, 0.633333);
TextDrawTextSize(Textdraws[textdraw_PLAYER_REP_BACK][0], 605.000000, 0.000000);
TextDrawAlignment(Textdraws[textdraw_PLAYER_REP_BACK][0], 1);
TextDrawColor(Textdraws[textdraw_PLAYER_REP_BACK][0], -1);
TextDrawUseBox(Textdraws[textdraw_PLAYER_REP_BACK][0], 1);
TextDrawBoxColor(Textdraws[textdraw_PLAYER_REP_BACK][0], 255);
TextDrawSetShadow(Textdraws[textdraw_PLAYER_REP_BACK][0], 0);
TextDrawSetOutline(Textdraws[textdraw_PLAYER_REP_BACK][0], 0);
TextDrawBackgroundColor(Textdraws[textdraw_PLAYER_REP_BACK][0], 255);
TextDrawFont(Textdraws[textdraw_PLAYER_REP_BACK][0], 1);
TextDrawSetProportional(Textdraws[textdraw_PLAYER_REP_BACK][0], 1);
TextDrawSetShadow(Textdraws[textdraw_PLAYER_REP_BACK][0], 0);
Textdraws[textdraw_PLAYER_REP_BACK][1] = TextDrawCreate(502.000000, 15.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_PLAYER_REP_BACK][1], 0.000000, 0.200000);
TextDrawTextSize(Textdraws[textdraw_PLAYER_REP_BACK][1], 603.000000, 0.000000);
TextDrawAlignment(Textdraws[textdraw_PLAYER_REP_BACK][1], 1);
TextDrawColor(Textdraws[textdraw_PLAYER_REP_BACK][1], -1);
TextDrawUseBox(Textdraws[textdraw_PLAYER_REP_BACK][1], 1);
TextDrawBoxColor(Textdraws[textdraw_PLAYER_REP_BACK][1], 5787296);
TextDrawSetShadow(Textdraws[textdraw_PLAYER_REP_BACK][1], 0);
TextDrawSetOutline(Textdraws[textdraw_PLAYER_REP_BACK][1], 0);
TextDrawBackgroundColor(Textdraws[textdraw_PLAYER_REP_BACK][1], 255);
TextDrawFont(Textdraws[textdraw_PLAYER_REP_BACK][1], 1);
TextDrawSetProportional(Textdraws[textdraw_PLAYER_REP_BACK][1], 1);
TextDrawSetShadow(Textdraws[textdraw_PLAYER_REP_BACK][1], 0);
Textdraws[textdraw_LOAD_SCREEN][0] = TextDrawCreate(320.000000, 0.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_LOAD_SCREEN][0], 0.000000, 60.0);
TextDrawTextSize(Textdraws[textdraw_LOAD_SCREEN][0], 0.000000, 700.000000);
TextDrawAlignment(Textdraws[textdraw_LOAD_SCREEN][0], 2);
TextDrawColor(Textdraws[textdraw_LOAD_SCREEN][0], -1);
TextDrawUseBox(Textdraws[textdraw_LOAD_SCREEN][0], 1);
TextDrawBoxColor(Textdraws[textdraw_LOAD_SCREEN][0], 255);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][0], 0);
TextDrawSetOutline(Textdraws[textdraw_LOAD_SCREEN][0], 0);
TextDrawBackgroundColor(Textdraws[textdraw_LOAD_SCREEN][0], 255);
TextDrawFont(Textdraws[textdraw_LOAD_SCREEN][0], 1);
TextDrawSetProportional(Textdraws[textdraw_LOAD_SCREEN][0], 1);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][0], 0);
Textdraws[textdraw_LOAD_SCREEN][1] = TextDrawCreate(320.000000, 30.000000, SERVER_SHORT_NAME);
TextDrawLetterSize(Textdraws[textdraw_LOAD_SCREEN][1], 0.535332, 2.230517);
TextDrawAlignment(Textdraws[textdraw_LOAD_SCREEN][1], 2);
TextDrawColor(Textdraws[textdraw_LOAD_SCREEN][1], -1);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][1], 0);
TextDrawSetOutline(Textdraws[textdraw_LOAD_SCREEN][1], 1);
TextDrawBackgroundColor(Textdraws[textdraw_LOAD_SCREEN][1], 1094795655);
TextDrawFont(Textdraws[textdraw_LOAD_SCREEN][1], 3);
TextDrawSetProportional(Textdraws[textdraw_LOAD_SCREEN][1], 1);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][1], 0);
Textdraws[textdraw_LOAD_SCREEN][2] = TextDrawCreate(320.000000, 52.000000, "RolePlay");
TextDrawLetterSize(Textdraws[textdraw_LOAD_SCREEN][2], 0.494332, 2.081182);
TextDrawAlignment(Textdraws[textdraw_LOAD_SCREEN][2], 2);
TextDrawColor(Textdraws[textdraw_LOAD_SCREEN][2], 255);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][2], 0);
TextDrawSetOutline(Textdraws[textdraw_LOAD_SCREEN][2], 1);
TextDrawBackgroundColor(Textdraws[textdraw_LOAD_SCREEN][2], -124);
TextDrawFont(Textdraws[textdraw_LOAD_SCREEN][2], 0);
TextDrawSetProportional(Textdraws[textdraw_LOAD_SCREEN][2], 1);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][2], 0);
Textdraws[textdraw_LOAD_SCREEN][3] = TextDrawCreate(320.000000, 360.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_LOAD_SCREEN][3], 0.000000, -0.133331);
TextDrawTextSize(Textdraws[textdraw_LOAD_SCREEN][3], 0.000000, 663.000000);
TextDrawAlignment(Textdraws[textdraw_LOAD_SCREEN][3], 2);
TextDrawColor(Textdraws[textdraw_LOAD_SCREEN][3], -1);
TextDrawUseBox(Textdraws[textdraw_LOAD_SCREEN][3], 1);
TextDrawBoxColor(Textdraws[textdraw_LOAD_SCREEN][3], 1010580735);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][3], 0);
TextDrawSetOutline(Textdraws[textdraw_LOAD_SCREEN][3], 0);
TextDrawBackgroundColor(Textdraws[textdraw_LOAD_SCREEN][3], 255);
TextDrawFont(Textdraws[textdraw_LOAD_SCREEN][3], 1);
TextDrawSetProportional(Textdraws[textdraw_LOAD_SCREEN][3], 1);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][3], 0);
Textdraws[textdraw_LOAD_SCREEN][4] = TextDrawCreate(320.000000, 90.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_LOAD_SCREEN][4], 0.000000, -0.133331);
TextDrawTextSize(Textdraws[textdraw_LOAD_SCREEN][4], 0.000000, 663.000000);
TextDrawAlignment(Textdraws[textdraw_LOAD_SCREEN][4], 2);
TextDrawColor(Textdraws[textdraw_LOAD_SCREEN][4], -1);
TextDrawUseBox(Textdraws[textdraw_LOAD_SCREEN][4], 1);
TextDrawBoxColor(Textdraws[textdraw_LOAD_SCREEN][4], 1010580735);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][4], 0);
TextDrawSetOutline(Textdraws[textdraw_LOAD_SCREEN][4], 0);
TextDrawBackgroundColor(Textdraws[textdraw_LOAD_SCREEN][4], 255);
TextDrawFont(Textdraws[textdraw_LOAD_SCREEN][4], 1);
TextDrawSetProportional(Textdraws[textdraw_LOAD_SCREEN][4], 1);
TextDrawSetShadow(Textdraws[textdraw_LOAD_SCREEN][4], 0);
Textdraws[textdraw_SERVER_TIME] = TextDrawCreate(577.5, 23.0, "00:00");
TextDrawLetterSize(Textdraws[textdraw_SERVER_TIME], 0.424666, 1.661777);
TextDrawAlignment(Textdraws[textdraw_SERVER_TIME], 2);
TextDrawColor(Textdraws[textdraw_SERVER_TIME], -1);
TextDrawSetShadow(Textdraws[textdraw_SERVER_TIME], 0);
TextDrawSetOutline(Textdraws[textdraw_SERVER_TIME], 1);
TextDrawBackgroundColor(Textdraws[textdraw_SERVER_TIME], 255);
TextDrawFont(Textdraws[textdraw_SERVER_TIME], 3);
TextDrawSetProportional(Textdraws[textdraw_SERVER_TIME], 1);
TextDrawSetShadow(Textdraws[textdraw_SERVER_TIME], 0);
Textdraws[textdraw_SHOP][0] = TextDrawCreate(320.000000, 120.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_SHOP][0], 0.000000, 24.936986);
TextDrawTextSize(Textdraws[textdraw_SHOP][0], 0.000000, 254.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP][0], 2);
TextDrawColor(Textdraws[textdraw_SHOP][0], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP][0], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP][0], 201);
TextDrawSetShadow(Textdraws[textdraw_SHOP][0], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP][0], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP][0], 255);
TextDrawFont(Textdraws[textdraw_SHOP][0], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP][0], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP][0], 0);
Textdraws[textdraw_SHOP][1] = TextDrawCreate(320.000000, 125.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_SHOP][1], 0.000000, 23.766672);
TextDrawTextSize(Textdraws[textdraw_SHOP][1], 0.000000, 254.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP][1], 2);
TextDrawColor(Textdraws[textdraw_SHOP][1], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP][1], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP][1], 11117257);
TextDrawSetShadow(Textdraws[textdraw_SHOP][1], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP][1], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP][1], 255);
TextDrawFont(Textdraws[textdraw_SHOP][1], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP][1], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP][1], 0);
Textdraws[textdraw_SHOP][2] = TextDrawCreate(207.000000, 128.000000, "Compra_y_venta");
TextDrawLetterSize(Textdraws[textdraw_SHOP][2], 0.295333, 1.388446);
TextDrawAlignment(Textdraws[textdraw_SHOP][2], 1);
TextDrawColor(Textdraws[textdraw_SHOP][2], -1);
TextDrawSetShadow(Textdraws[textdraw_SHOP][2], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP][2], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP][2], 255);
TextDrawFont(Textdraws[textdraw_SHOP][2], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP][2], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP][2], 0);
Textdraws[textdraw_SHOP][3] = TextDrawCreate(320.000000, 145.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_SHOP][3], 0.000000, -0.266666);
TextDrawTextSize(Textdraws[textdraw_SHOP][3], 0.000000, 222.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP][3], 2);
TextDrawColor(Textdraws[textdraw_SHOP][3], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP][3], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP][3], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP][3], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP][3], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP][3], 255);
TextDrawFont(Textdraws[textdraw_SHOP][3], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP][3], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP][3], 0);
Textdraws[textdraw_SHOP][4] = TextDrawCreate(320.000000, 301.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_SHOP][4], 0.000000, -0.266666);
TextDrawTextSize(Textdraws[textdraw_SHOP][4], 0.000000, 222.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP][4], 2);
TextDrawColor(Textdraws[textdraw_SHOP][4], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP][4], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP][4], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP][4], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP][4], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP][4], 255);
TextDrawFont(Textdraws[textdraw_SHOP][4], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP][4], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP][4], 0);
Textdraws[textdraw_SHOP_ARTICLES_BOX][0] = TextDrawCreate(208.000000, 148.000000, "LD_SPAC:white");
TextDrawLetterSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 70.000000, 70.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 1);
TextDrawColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 255);
TextDrawFont(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 4);
TextDrawSetProportional(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 0);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_ARTICLES_BOX][0], true);
Textdraws[textdraw_SHOP_ARTICLES_BOX][1] = TextDrawCreate(285.000000, 148.000000, "LD_SPAC:white");
TextDrawLetterSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 70.000000, 70.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 1);
TextDrawColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 255);
TextDrawFont(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 4);
TextDrawSetProportional(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 0);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_ARTICLES_BOX][1], true);
Textdraws[textdraw_SHOP_ARTICLES_BOX][2] = TextDrawCreate(362.000000, 148.000000, "LD_SPAC:white");
TextDrawLetterSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 70.000000, 70.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 1);
TextDrawColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 255);
TextDrawFont(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 4);
TextDrawSetProportional(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 0);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_ARTICLES_BOX][2], true);
Textdraws[textdraw_SHOP_ARTICLES_BOX][3] = TextDrawCreate(208.000000, 225.000000, "LD_SPAC:white");
TextDrawLetterSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 70.000000, 70.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 1);
TextDrawColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 255);
TextDrawFont(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 4);
TextDrawSetProportional(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 0);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_ARTICLES_BOX][3], true);
Textdraws[textdraw_SHOP_ARTICLES_BOX][4] = TextDrawCreate(285.000000, 225.000000, "LD_SPAC:white");
TextDrawLetterSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 70.000000, 70.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 1);
TextDrawColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 255);
TextDrawFont(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 4);
TextDrawSetProportional(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 0);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_ARTICLES_BOX][4], true);
Textdraws[textdraw_SHOP_ARTICLES_BOX][5] = TextDrawCreate(362.000000, 225.000000, "LD_SPAC:white");
TextDrawLetterSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 70.000000, 70.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 1);
TextDrawColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 255);
TextDrawFont(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 4);
TextDrawSetProportional(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 0);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_ARTICLES_BOX][5], true);
Textdraws[textdraw_SHOP_ARTICLE_BOX] = TextDrawCreate(208.000000, 175.000000, "LD_SPAC:white");
TextDrawLetterSize(Textdraws[textdraw_SHOP_ARTICLE_BOX], 0.000000, 0.000000);
TextDrawTextSize(Textdraws[textdraw_SHOP_ARTICLE_BOX], 100.000000, 100.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_ARTICLE_BOX], 1);
TextDrawColor(Textdraws[textdraw_SHOP_ARTICLE_BOX], 255);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLE_BOX], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_ARTICLE_BOX], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_ARTICLE_BOX], 255);
TextDrawFont(Textdraws[textdraw_SHOP_ARTICLE_BOX], 4);
TextDrawSetProportional(Textdraws[textdraw_SHOP_ARTICLE_BOX], 0);
TextDrawSetShadow(Textdraws[textdraw_SHOP_ARTICLE_BOX], 0);
Textdraws[textdraw_TERRITORY_BOX] = TextDrawCreate(320.000000, 355.000000, "-");
TextDrawLetterSize(Textdraws[textdraw_TERRITORY_BOX], 12.321674, 9.937778);
TextDrawAlignment(Textdraws[textdraw_TERRITORY_BOX], 2);
TextDrawColor(Textdraws[textdraw_TERRITORY_BOX], 167);
TextDrawSetShadow(Textdraws[textdraw_TERRITORY_BOX], 0);
TextDrawSetOutline(Textdraws[textdraw_TERRITORY_BOX], 0);
TextDrawBackgroundColor(Textdraws[textdraw_TERRITORY_BOX], 255);
TextDrawFont(Textdraws[textdraw_TERRITORY_BOX], 1);
TextDrawSetProportional(Textdraws[textdraw_TERRITORY_BOX], 1);
TextDrawSetShadow(Textdraws[textdraw_TERRITORY_BOX], 0);
Textdraws[textdraw_SHOP_TUNING][0] = TextDrawCreate(320.000000, 330.000000, "box");
TextDrawLetterSize(Textdraws[textdraw_SHOP_TUNING][0], 0.000000, 6.966667);
TextDrawTextSize(Textdraws[textdraw_SHOP_TUNING][0], 0.000000, 152.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_TUNING][0], 2);
TextDrawColor(Textdraws[textdraw_SHOP_TUNING][0], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP_TUNING][0], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP_TUNING][0], 95);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][0], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_TUNING][0], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_TUNING][0], 255);
TextDrawFont(Textdraws[textdraw_SHOP_TUNING][0], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP_TUNING][0], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][0], 0);
Textdraws[textdraw_SHOP_TUNING][1] = TextDrawCreate(320.000000, 330.000000, ""SERVER_SHORT_NAME"_Tuning_Club");
TextDrawLetterSize(Textdraws[textdraw_SHOP_TUNING][1], 0.354000, 1.533629);
TextDrawTextSize(Textdraws[textdraw_SHOP_TUNING][1], 0.000000, 152.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_TUNING][1], 2);
TextDrawColor(Textdraws[textdraw_SHOP_TUNING][1], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP_TUNING][1], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP_TUNING][1], 10205093);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][1], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_TUNING][1], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_TUNING][1], 255);
TextDrawFont(Textdraws[textdraw_SHOP_TUNING][1], 0);
TextDrawSetProportional(Textdraws[textdraw_SHOP_TUNING][1], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][1], 0);
Textdraws[textdraw_SHOP_TUNING][2] = TextDrawCreate(320.000000, 376.000000, "COMPRAR");
TextDrawLetterSize(Textdraws[textdraw_SHOP_TUNING][2], 0.219666, 1.031703);
TextDrawTextSize(Textdraws[textdraw_SHOP_TUNING][2], 10.000000, 43.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_TUNING][2], 2);
TextDrawColor(Textdraws[textdraw_SHOP_TUNING][2], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP_TUNING][2], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP_TUNING][2], -1936945921);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][2], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_TUNING][2], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_TUNING][2], 255);
TextDrawFont(Textdraws[textdraw_SHOP_TUNING][2], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP_TUNING][2], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][2], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_TUNING][2], true);
Textdraws[textdraw_SHOP_TUNING][3] = TextDrawCreate(370.000000, 376.000000, "SIGUIENTE");
TextDrawLetterSize(Textdraws[textdraw_SHOP_TUNING][3], 0.219666, 1.031703);
TextDrawTextSize(Textdraws[textdraw_SHOP_TUNING][3], 10.000000, 43.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_TUNING][3], 2);
TextDrawColor(Textdraws[textdraw_SHOP_TUNING][3], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP_TUNING][3], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP_TUNING][3], -1936945921);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][3], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_TUNING][3], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_TUNING][3], 255);
TextDrawFont(Textdraws[textdraw_SHOP_TUNING][3], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP_TUNING][3], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][3], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_TUNING][3], true);
Textdraws[textdraw_SHOP_TUNING][4] = TextDrawCreate(270.000000, 376.000000, "ANTERIOR");
TextDrawLetterSize(Textdraws[textdraw_SHOP_TUNING][4], 0.219666, 1.031703);
TextDrawTextSize(Textdraws[textdraw_SHOP_TUNING][4], 10.000000, 43.000000);
TextDrawAlignment(Textdraws[textdraw_SHOP_TUNING][4], 2);
TextDrawColor(Textdraws[textdraw_SHOP_TUNING][4], -1);
TextDrawUseBox(Textdraws[textdraw_SHOP_TUNING][4], 1);
TextDrawBoxColor(Textdraws[textdraw_SHOP_TUNING][4], -1936945921);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][4], 0);
TextDrawSetOutline(Textdraws[textdraw_SHOP_TUNING][4], 0);
TextDrawBackgroundColor(Textdraws[textdraw_SHOP_TUNING][4], 255);
TextDrawFont(Textdraws[textdraw_SHOP_TUNING][4], 1);
TextDrawSetProportional(Textdraws[textdraw_SHOP_TUNING][4], 1);
TextDrawSetShadow(Textdraws[textdraw_SHOP_TUNING][4], 0);
TextDrawSetSelectable(Textdraws[textdraw_SHOP_TUNING][4], true);
return 1;
}
stock DestroyTextDraws()
{
for(new i; i < sizeof(Textdraws); i++)
{
if(Textdraws[Textdraws_Enum:i] == INVALID_TEXT_DRAW) continue;
TextDrawDestroy(Text:Textdraws[Textdraws_Enum:i]);
Textdraws[Textdraws_Enum:i] = INVALID_TEXT_DRAW;
}
return 1;
}
public OnGameModeExit()
{
print("\n\n\n----> Saliendo\n\n");
mysql_close(SMF_DATABASE);
return 1;
}
CMD:a(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, "Syntax: /a <texto>");
new string[145];
format(string, sizeof(string), "Admin Chat: {90D496}%s (%s): {CCCCCC}%s", ACCOUNT_INFO[playerid][ac_NAME], ADMIN_LEVELS[ ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] ], params);
SendMessageToAdmins(0x90C3D4FF, string, 0);
return 1;
}
#define MIN_SECONDS_BETWEEN_TALKS 100 // Deben pasar al menos 1 segundos para volver a hablar.
public OnPlayerText(playerid, text[])
{
if(PLAYER_TEMP[playerid][pt_KICKED]) return 0;
if(PLAYER_TEMP[playerid][pt_GAME_STATE] != GAME_STATE_NORMAL || PLAYER_TEMP[playerid][pt_SELECT_TEXTDRAW] || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_HOSPITAL || PLAYER_TEMP[playerid][pt_NEW_USER]) { SendClientMessage(playerid, 0x999999AA, "Ahora no puedes hablar."); return 0; }
if(text[0] == '#' && ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] > 0 && PLAYER_TEMP[playerid][pt_ADMIN_SERVICE])
{
new string[145];
format(string, sizeof(string), "Admin Chat: {90D496}%s (%s): {CCCCCC}%s", ACCOUNT_INFO[playerid][ac_NAME], ADMIN_LEVELS[ ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] ], text[1]);
SendMessageToAdmins(0x90C3D4FF, string, 0);
return 0;
}
new interval = GetTickDiff(GetTickCount(), PLAYER_TEMP[playerid][pt_ANTIFLOOD_TALK]);
if(interval < MIN_SECONDS_BETWEEN_TALKS)
{
if(ac_Info[CHEAT_TEXT_SPAMMER][ac_Enabled])
{
if(gettime() > PLAYER_AC_INFO[playerid][CHEAT_TEXT_SPAMMER][p_ac_info_IMMUNITY])
{
if(interval < 50)
{
if(!ac_Info[CHEAT_TEXT_SPAMMER][ac_Interval]) OnPlayerCheatDetected(playerid, CHEAT_TEXT_SPAMMER, float(interval));
else
{
if(gettime() - PLAYER_AC_INFO[playerid][CHEAT_TEXT_SPAMMER][p_ac_info_LAST_DETECTION] > ac_Info[CHEAT_TEXT_SPAMMER][ac_Interval]) PLAYER_AC_INFO[playerid][CHEAT_TEXT_SPAMMER][p_ac_info_DETECTIONS] = 0;
else PLAYER_AC_INFO[playerid][CHEAT_TEXT_SPAMMER][p_ac_info_DETECTIONS] ++;
PLAYER_AC_INFO[playerid][CHEAT_TEXT_SPAMMER][p_ac_info_LAST_DETECTION] = gettime();
if(PLAYER_AC_INFO[playerid][CHEAT_TEXT_SPAMMER][p_ac_info_DETECTIONS] >= ac_Info[CHEAT_TEXT_SPAMMER][ac_Detections]) OnPlayerCheatDetected(playerid, CHEAT_TEXT_SPAMMER, float(interval));
}
}
}
}
SendClientMessage(playerid, 0x999999AA, "Cálmate.");
return 0;
}
PLAYER_TEMP[playerid][pt_ANTIFLOOD_TALK] = GetTickCount();
if(PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME])
{
format(PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME_STR], 24, "%s", text);
SendClientMessage(playerid, -1, "{CCCCCC}Operadora: De acuerdo, describe brevemente lo que sucede para enviar una patrulla.");
PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] = false;
PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION] = true;
return 0;
}
if(PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION])
{
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = false;
PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] = false;
PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION] = false;
new city[45], zone[45];
GetPlayerZones(playerid, city, zone);
new message[145];
format(message, sizeof message, "{4286f4}[Central policía] {FFFFFF}Reporte {CCCCCC}[%s (%d), gps: %s, %s]: {FFFFFF}%s", PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME_STR], playerid, city, zone, text);
SendPoliceRadioMessage(-1, -1, message);
SendClientMessage(playerid, -1, "{CCCCCC}Operadora: Su petición fue enviada, en breve una patrulla acudirá.");
SendClientMessage(playerid, -1, "{f47d42}Llamada finalizada.");
return 0;
}
new str_text[190];
if(text[0] == '!')
{
if(PLAYER_WORKS[playerid][WORK_POLICE] && PLAYER_TEMP[playerid][pt_WORKING_IN] == WORK_POLICE)
{
if(text[1] == '!') format(str_text, sizeof str_text, "** [Radio] (( %s: %s ))", PLAYER_TEMP[playerid][pt_RP_NAME], text[2]);
else format(str_text, sizeof str_text, "{8D8DFF}** [Radio] %s %s: %s", PLAYER_TEMP[playerid][pt_RP_NAME], POLICE_RANKS[ PLAYER_SKILLS[playerid][WORK_POLICE] ], text[1]);
SendPoliceRadioMessage(PLAYER_TEMP[playerid][pt_POLICE_RADIO], 0xCCCCCCCC, str_text);
return 0;
}
if(PLAYER_CREW[playerid][player_crew_VALID])
{
if(text[1] == '!') format(str_text, sizeof str_text, "** [Radio] (( %s: %s ))", PLAYER_TEMP[playerid][pt_RP_NAME], text[2]);
else format(str_text, sizeof str_text, "{8D8DFF}** [Radio] %s %s: %s", PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], text[1]);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], 0xCCCCCCCC, str_text);
return 0;
}
}
if(PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE] == CALL_STATE_ESTABLISHED)
{
format(str_text, 145, "%s dice (por teléfono): %s", PLAYER_TEMP[playerid][pt_RP_NAME], text);
SendClientMessageEx(PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID], -1, "{CCCCCC}Teléfono: %s: %s", convertPhoneNumber(PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID], PLAYER_PHONE[playerid][player_phone_NUMBER]), text);
}
else
{
if(GetPlayerDrunkLevel(playerid) > 2000) format(str_text, 145, "%s dice (ebrio): %s", PLAYER_TEMP[playerid][pt_RP_NAME], text);
else format(str_text, 145, "%s dice: %s", PLAYER_TEMP[playerid][pt_RP_NAME], text);
}
ProxDetector(playerid, 15.0, str_text, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5, 85);
return 0;
}
CMD:bebida(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] != -1)
{
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] == INTERIOR_CLUB)
{
if(IsPlayerInRangeOfPoint(playerid, 1.5, 1207.234375, -29.231435, 1000.953125))
{
if(GetPlayerSpecialAction(playerid) != SPECIAL_ACTION_DRINK_WINE)
{
if(CHARACTER_INFO[playerid][ch_CASH] <= 50) return SendClientMessage(playerid, -1, "{999999}La bebida cuesta 50$.");
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_DRINK_BEER);
GivePlayerCash(playerid, -50, false);
}
return 1;
}
}
}
ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
return 1;
}
#define MIN_TIME_BETWEEN_DOUBT 60
#define IP_SPAM_MUTE_TIME 5 //minutos
CMD:duda(playerid, params[])
{
if(!ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL]) return SendClientMessage(playerid, -1, "Para enviar una duda primero debes activar el canal de dudas con {C4FF66}/dudas");
if(isnull(params)) return SendClientMessage(playerid, -1, "Error: {C4FF66}/duda {FFFFFF}[DUDA]");
if(PLAYER_MISC[playerid][MISC_MUTE] > gettime())
{
new seconds = PLAYER_MISC[playerid][MISC_MUTE] - gettime();
SendClientMessageEx(playerid, -1, "Estás silenciado en el canal de dudas por %s minutos.", TimeConvert(seconds));
return 1;
}
if(!ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL])
{
if(gettime() < PLAYER_TEMP[playerid][pt_DOUBT_CHANNEL_TIME] + MIN_TIME_BETWEEN_DOUBT)
{
new time = (MIN_TIME_BETWEEN_DOUBT-(gettime()-PLAYER_TEMP[playerid][pt_DOUBT_CHANNEL_TIME]));
SendClientMessageEx(playerid, 0x999999AA, "Tienes que esperar %s minutos para volver a realizar otra consulta.", TimeConvert(time));
return 1;
}
if(StringContainsIP(params))
{
SendClientMessage(playerid, -1, "Hemos detectado una dirección IP en tu mensaje.");
PLAYER_MISC[playerid][MISC_MUTE] = gettime() + (IP_SPAM_MUTE_TIME * 60);
new str[145]; format(str, 145, "{ff782b}[ADMIN] {FFFFFF}%s ha sido expulsado: SPAM en canal de dudas.", ACCOUNT_INFO[playerid][ac_NAME]);
SendAdminAd(-1, str);
KickEx(playerid, 500);
return 1;
}
}
SendMessageToDoubtChannel(playerid, params);
return 1;
}
CMD:dudas(playerid, params[])
{
if(ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL])
{
ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL] = false;
SendClientMessage(playerid, -1, "Canal de dudas {C4FF66}deshabilitado.");
}
else
{
ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL] = true;
SendClientMessage(playerid, -1, "Canal de dudas {C4FF66}habilitado.");
}
return 1;
}
CMD:g(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, "Error: {C4FF66}/g{FFFFFF}ritar [TEXTO]");
new str_text[190];
format(str_text, 190, "%s grita: ¡%s!", PLAYER_TEMP[playerid][pt_RP_NAME], params);
ProxDetector(playerid, 25.0, str_text, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5, 85);
return 1;
}
CMD:s(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, "Error: {C4FF66}/s{FFFFFF}usurrar [TEXTO]");
new str_text[190];
format(str_text, sizeof(str_text), "%s susurra: %s", PLAYER_TEMP[playerid][pt_RP_NAME], params);
ProxDetector(playerid, 5.0, str_text, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5, 85);
return 1;
}
alias:s("susurrar", "gritar");
CMD:b(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, "Error: {C4FF66}/b {FFFFFF}[TEXTO]");
new str_text[190];
format(str_text, sizeof(str_text), "ID: %d | %s: (( %s ))", playerid, PLAYER_TEMP[playerid][pt_RP_NAME], params);
ProxDetector(playerid, 15.0, str_text, COLOR_FADE1, COLOR_FADE2, COLOR_FADE3, COLOR_FADE4, COLOR_FADE5, 85);
return 1;
}
CMD:do(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, "Error: {C4FF66}/do {FFFFFF}[TEXTO]");
new str_text[190];
format(str_text, sizeof(str_text), "* %s (( %s ))", PLAYER_TEMP[playerid][pt_RP_NAME], params);
ProxDetector(playerid, 15.0, str_text, 0xADFF2FAA, 0xADFF2FAA, 0xADFF2FAA, 0xADFF2FAA, 0xADFF2FAA, 85);
return 1;
}
CMD:me(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, -1, "Error: {C4FF66}/me {FFFFFF}[TEXTO]");
SendPlayerAction(playerid, params);
return 1;
}
alias:me("y");
CMD:inventario(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
ShowPlayerInventory(playerid, playerid);
return 1;
}
alias:inventario("inv");
CMD:experiencia(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
ShowPlayerSkills(playerid, playerid);
return 1;
}
alias:experiencia("exp", "skills");
CMD:est(playerid, params[])
{
ShowPlayerStats(playerid, playerid);
return 1;
}
alias:est("estadisticas");
CMD:web(playerid, params[])
{
SendClientMessage(playerid, -1, "Web: {a7f442}"SERVER_WEBSITE"");
return 1;
}
CMD:csave(playerid, params[])
{
if(gettime() < PLAYER_TEMP[playerid][pt_SAVE_ACCOUNT_TIME] + 30)
{
new time = (30-(gettime()-PLAYER_TEMP[playerid][pt_SAVE_ACCOUNT_TIME]));
SendClientMessageEx(playerid, 0x999999AA, "Tienes que esperar %s minutos para volver a guardar tus datos.", TimeConvert(time));
return 1;
}
SaveUserData(playerid);
SavePlayerToysData(playerid);
SavePlayerVehicles(playerid, false);
SavePlayerSkills(playerid);
SavePlayerWorks(playerid);
SavePlayerMisc(playerid);
SavePlayerWeaponsData(playerid);
PLAYER_TEMP[playerid][pt_SAVE_ACCOUNT_TIME] = gettime();
SendClientMessage(playerid, -1, "{CCCCCC}Datos de la cuenta guardados.");
return 1;
}
CMD:ayuda(playerid, params[])
{
new option[24];
if(sscanf(params, "s[24]", option)) return ShowDialog(playerid, DIALOG_HELP);
if(!strcmp(option, "general", true)) ShowDialog(playerid, DIALOG_HELP_GENERAL);
else if(!strcmp(option, "personaje", true)) ShowDialog(playerid, DIALOG_HELP_CHARACTER);
else if(!strcmp(option, "propiedades", true)) ShowDialog(playerid, DIALOG_HELP_PROPERTIES);
else if(!strcmp(option, "reportar", true)) ShowDialog(playerid, DIALOG_HELP_REPORT);
else if(!strcmp(option, "trabajos", true)) ShowDialog(playerid, DIALOG_HELP_WORKS);
else if(!strcmp(option, "vehiculos", true)) ShowDialog(playerid, DIALOG_HELP_VEHICLES);
else if(!strcmp(option, "bandas", true)) ShowDialog(playerid, DIALOG_HELP_CREWS);
else if(!strcmp(option, "vip", true)) ShowDialog(playerid, DIALOG_HELP_SU);
else ShowDialog(playerid, DIALOG_HELP);
return 1;
}
CMD:accesorios(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
ShowDialog(playerid, DIALOG_PLAYER_TOYS);
return 1;
}
CMD:armas(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
ShowDialog(playerid, DIALOG_PLAYER_WEAPONS);
return 1;
}
CMD:ropa(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] == INTERIOR_NO_INFO) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
PLAYER_TEMP[playerid][pt_CLOTHING_SHOP] = GetClothingShopIndexByIntType(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE]);
if(PLAYER_TEMP[playerid][pt_CLOTHING_SHOP] == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, Clothing_Shop_Positions[PLAYER_TEMP[playerid][pt_CLOTHING_SHOP]][clothing_shop_X], Clothing_Shop_Positions[PLAYER_TEMP[playerid][pt_CLOTHING_SHOP]][clothing_shop_Y], Clothing_Shop_Positions[PLAYER_TEMP[playerid][pt_CLOTHING_SHOP]][clothing_shop_Z])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
PLAYER_TEMP[playerid][pt_CLOTHING_SHOP_SELECTED_SKIN] = 0;
SetPlayerPosEx(playerid, 257.251373, -40.797775, 1002.023437, 135.0, 14, playerid + MAX_PLAYERS, false); // World = Playerid + Max_players
TogglePlayerControllableEx(playerid, false);
SetPlayerCameraPos(playerid, 254.988632, -43.060516, 1002.9131);
SetPlayerCameraLookAt(playerid, 257.251373, -40.797775, 1002.023437);
UpdateClothingShop(playerid);
ShowClothingShopTextdraws(playerid);
SendClientMessage(playerid, -1, "Pulsa {C4FF66}'ESCAPE' {FFFFFF}para dejar de probarte ropa.");
SelectTextDrawEx(playerid, 0xe8d08fFF);
return 1;
}
CMD:toys(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] == INTERIOR_NO_INFO) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new shop = GetClothingShopIndexByIntType(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE]);
if(shop == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, Clothing_Shop_Positions[shop][clothing_shop_X], Clothing_Shop_Positions[shop][clothing_shop_Y], Clothing_Shop_Positions[shop][clothing_shop_Z])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
PLAYER_TEMP[playerid][pt_TOYS_SHOP] = true;
SetPlayerVirtualWorld(playerid, playerid + MAX_PLAYERS);
TogglePlayerControllableEx(playerid, false);
UpdateToysShop(playerid);
ShowToysShopTextdraws(playerid);
SendClientMessage(playerid, -1, "Pulsa {C4FF66}'ESCAPE' {FFFFFF}para salir del menú.");
SelectTextDrawEx(playerid, 0xe8d08fFF);
return 1;
}
CMD:pedir(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] == INTERIOR_NO_INFO) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new index = GetFastFoodLocalIndexByIntType(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE]);
if(index == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, Fast_Food_Positions[index][fast_food_X], Fast_Food_Positions[index][fast_food_Y], Fast_Food_Positions[index][fast_food_Z])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
switch(Fast_Food_Positions[index][fast_food_INTERIOR_TYPE])
{
case INTERIOR_BURGER_SHOT: ShowDialog(playerid, DIALOG_FOOD_BURGER);
case INTERIOR_PIZZA: ShowDialog(playerid, DIALOG_FOOD_PIZZA);
case INTERIOR_CLUCKIN_BELL: ShowDialog(playerid, DIALOG_FOOD_CLUCKIN);
}
return 1;
}
CMD:productos(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] != INTERIOR_247) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, -27.964675, -89.948631, 1003.546875)) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
ShowDialog(playerid, DIALOG_247_LIST);
return 1;
}
CMD:mercado(playerid, params[])
{
if(!IsPlayerInRangeOfPoint(playerid, 1.0, 2119.059814, -2001.701904, 7.984375)) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(PLAYER_WORKS[playerid][WORK_POLICE]) return ShowPlayerMessage(playerid, "No eres bienvenido aquí", 3);
ShowDialog(playerid, DIALOG_BLACK_MARKET);
return 1;
}
CMD:gps(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_OBJECT[playerid][po_GPS])
{
ShowPlayerMessage(playerid, "No tienes ningún GPS, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
Auto_SendPlayerAction(playerid, "mira su GPS.");
ShowDialog(playerid, DIALOG_PLAYER_GPS);
return 1;
}
CMD:tiempo(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL)
{
new time = CHARACTER_INFO[playerid][ch_POLICE_JAIL_TIME] - (gettime() - PLAYER_TEMP[playerid][pt_ENTER_JAIL_TIME]);
if(time <= 0)
{
UnjailPlayer(playerid);
return 1;
}
SendClientMessageEx(playerid, -1, "{CCCCCC}Te quedan %s minutos de condena.", TimeConvert(time));
}
else SendClientMessage(playerid, -1, "{999999}No estás en la cárcel.");
return 1;
}
CMD:mapa(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_OBJECT[playerid][po_GPS])
{
ShowPlayerMessage(playerid, "No tienes ningún GPS, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_TEMP[playerid][pt_GPS_MAP]) HidePlayerGpsMap(playerid);
else ShowPlayerGpsMap(playerid);
return 1;
}
CMD:mp3(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_OBJECT[playerid][po_MP3])
{
ShowPlayerMessage(playerid, "No tienes ningún MP3, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_WAITING_MP3_HTTP]) return SendClientMessage(playerid, -1, "{999999}Espera que termine la búsqueda actual.");
PLAYER_TEMP[playerid][pt_MUSIC_FOR_PROPERTY] = false;
Auto_SendPlayerAction(playerid, "busca música en su MP3.");
ShowDialog(playerid, DIALOG_PLAYER_MP3);
return 1;
}
CMD:vmp3(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "{999999}No conduces ningún vehículo.");
if(!PLAYER_OBJECT[playerid][po_MP3])
{
ShowPlayerMessage(playerid, "No tienes ningún MP3, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_WAITING_MP3_HTTP]) return SendClientMessage(playerid, -1, "{999999}Espera que termine la búsqueda actual.");
PLAYER_TEMP[playerid][pt_MUSIC_FOR_VEHICLE] = true;
Auto_SendPlayerAction(playerid, "busca música en su MP3.");
ShowDialog(playerid, DIALOG_PLAYER_MP3);
return 1;
}
CMD:stop(playerid, params[])
{
StopAudioStreamForPlayer(playerid);
return 1;
}
CMD:pass(playerid, params[])
{
ShowDialog(playerid, DIALOG_CHANGE_PASSWORD);
return 1;
}
CMD:gcp(playerid, params[])
{
if(IsValidDynamicCP(PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT] = INVALID_STREAMER_ID;
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado la ruta antigua de tu GPS.");
}
else SendClientMessage(playerid, -1, "{999999}No tienes ningún punto marcado en tu GPS.");
return 1;
}
CMD:movil(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) SendClientMessageEx(playerid, -1, "{999999}Estás en una llamada.");
if(!PLAYER_TEMP[playerid][pt_PHONE_COMMANDS_MESSAGE])
{
PLAYER_TEMP[playerid][pt_PHONE_COMMANDS_MESSAGE] = true;
SendClientMessage(playerid, -1, "Recuerda que también puedes usar {7b9cd1}/agenda, /llamar, /sms, /tienda.");
}
Auto_SendPlayerAction(playerid, "mira su teléfono.");
ShowDialog(playerid, DIALOG_PHONE);
return 1;
}
alias:movil("celular", "telefono", "tlf");
CMD:guia(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_OBJECT[playerid][po_PHONE_RESOLVER])
{
ShowPlayerMessage(playerid, "No tienes una guía telefónica, puedes ir a cualquier 24/7 para comprar una.", 3, 1085);
return 1;
}
if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, "Error: {C4FF66}/guia {FFFFFF}[PlayerID/Nombre]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, "{999999}Jugador desconectado.");
if(!PLAYER_PHONE[params[0]][player_phone_VALID]) return SendClientMessage(playerid, -1, "{999999}Este jugador no tiene teléfono.");
if(!PLAYER_PHONE[params[0]][player_phone_VISIBLE_NUMBER]) return SendClientMessage(playerid, -1, "{999999}Este jugador ha decidido no mostrar su número en la guía.");
SendClientMessageEx(playerid, -1, "{CCCCCC}Nombre: {5c93ed}%s {CCCCCC}Teléfono: {5c93ed}%d.", PLAYER_TEMP[params[0]][pt_RP_NAME], PLAYER_PHONE[params[0]][player_phone_NUMBER]);
return 1;
}
CMD:sguia(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER])
{
PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER] = false;
SendClientMessage(playerid, -1, "{CCCCCC}Tu número no aparecerá ahora en la guía telefónica.");
}
else
{
PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu número aparecerá en la guía telefónica.");
}
return 1;
}
CMD:sms(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}Estás en una llamada.");
new to_number, message[64];
new tmp_number, tmp_contact[24], bool:found;
if(!sscanf(params, "ds[64]", tmp_number, message))
{
found = true;
to_number = tmp_number;
}
else if(!sscanf(params, "s[24]s[64]", tmp_contact, message))
{
// con strcmp daba crash por las tilder
new DB_Query[145];
format(DB_Query, sizeof DB_Query, "SELECT `PHONE_NUMBER` FROM `PHONE_BOOK` WHERE `PHONE_ID` = '%d' AND `NAME` LIKE '%%%q%%' LIMIT 1;", PLAYER_PHONE[playerid][player_phone_NUMBER], tmp_contact);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPhoneContactSMS", "iss", playerid, tmp_contact, message);
return 1;
}
else return SendClientMessage(playerid, -1, "Error: {C4FF66}/sms {FFFFFF}[Número o contacto de /agenda] [Mensaje 1-64 caracteres]");
if(!found) return SendClientMessageEx(playerid, -1, "{999999}No hemos encontrado a '%s' en tu /agenda.", tmp_contact);
if(to_number <= 0) return SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
new DB_Query[100];
format(DB_Query, sizeof(DB_Query), "SELECT * FROM `PHONE` WHERE `PHONE_NUMBER` = '%d';", to_number);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPhoneNumberToSMS", "iis", playerid, to_number, message);
return 1;
}
forward LoadPhoneContactSMS(playerid, tmp_contact[], message[]);
public LoadPhoneContactSMS(playerid, tmp_contact[], message[])
{
new count, to_number, bool:found;
cache_get_row_count(count);
if(count)
{
found = true;
cache_get_value_index_int(0, 0, to_number);
}
if(!found) return SendClientMessageEx(playerid, -1, "{999999}No hemos encontrado a '%s' en tu /agenda.", tmp_contact);
if(to_number <= 0) return SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
new DB_Query[100];
format(DB_Query, sizeof(DB_Query), "SELECT * FROM `PHONE` WHERE `PHONE_NUMBER` = '%d';", to_number);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPhoneNumberToSMS", "i", playerid, to_number, message);
return 1;
}
forward LoadPhoneNumberToSMS(playerid, to_number, message[]);
public LoadPhoneNumberToSMS(playerid, to_number, message[])
{
new phone_exists;
cache_get_row_count(phone_exists);
if(!phone_exists) return SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
new to_playerid = INVALID_PLAYER_ID;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if((PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_NORMAL || PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_DEAD) && PLAYER_PHONE[i][player_phone_NUMBER] == to_number)
{
to_playerid = i;
break;
}
}
}
if(to_playerid == INVALID_PLAYER_ID) RegisterPhoneMessage(PLAYER_PHONE[playerid][player_phone_NUMBER], to_number, message, true);
else
{
RegisterPhoneMessage(PLAYER_PHONE[playerid][player_phone_NUMBER], to_number, message);
if(PLAYER_PHONE[to_playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(to_playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(to_playerid, PLAYER_PHONE[playerid][player_phone_NUMBER]), message);
}
SendClientMessageEx(playerid, -1, "Mensaje enviado a {7b9cd1}%s.", convertPhoneNumber(playerid, to_number));
return 1;
}
CMD:agenda(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}Estás en una llamada.");
ShowDialog(playerid, DIALOG_PHONE_BOOK);
return 1;
}
CMD:tienda(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
ShowPlayerShop(playerid);
return 1;
}
CMD:llamar(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}Estás en una llamada.");
new call_number, tmp_number, tmp_contact[24], bool:found;
if(!sscanf(params, "d", tmp_number))
{
found = true;
call_number = tmp_number;
}
else if(!sscanf(params, "s[24]", tmp_contact))
{
// con strcmp daba crash por las tilder
new DB_Query[145];
format(DB_Query, sizeof DB_Query, "SELECT `PHONE_NUMBER` FROM `PHONE_BOOK` WHERE `PHONE_ID` = '%d' AND `NAME` LIKE '%%%q%%' LIMIT 1;", PLAYER_PHONE[playerid][player_phone_NUMBER], tmp_contact);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPhoneContact", "is", playerid, tmp_contact);
return 1;
}
else return SendClientMessage(playerid, -1, "Error: {C4FF66}/llamar {FFFFFF}[Número o contacto de /agenda]");
if(!found) return SendClientMessageEx(playerid, -1, "{999999}No hemos encontrado a '%s' en tu /agenda.", tmp_contact);
if(call_number <= 0) return SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
switch(call_number)
{
case 911:
{
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Debes ser al menos nivel 2 para llamar a la policía.");
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION] = false;
SendClientMessage(playerid, -1, "{CCCCCC}Operadora: Ha llamado a la central de policía, indícanos su nombre por favor.");
return 1;
}
case 450: //Taxi
{
if(PLAYER_TEMP[playerid][pt_WANT_TAXI])
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = false;
DisablePlayerTaxiMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el taxi.");
}
else
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los taxistas disponibles, espera a que llegue un taxi.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un taxi.");
SendAlertToTaxiDrivers(playerid);
}
return 1;
}
case 570: //Mecanico
{
if(PLAYER_TEMP[playerid][pt_WANT_MECHANIC])
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el mecánico.");
}
else
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{999999}Tienes que estar dentro de un vehículo averiado para llamar al mecánico.");
if(GLOBAL_VEHICLES[ GetPlayerVehicleID(playerid) ][gb_vehicle_STATE] != VEHICLE_STATE_DAMAGED) return SendClientMessage(playerid, -1, "{999999}Tienes que estar dentro de un vehículo averiado para llamar al mecánico.");
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los mecánicos disponibles, espera a que llegue un mecánico.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un mecánico.");
SendAlertToMechanic(playerid);
}
return 1;
}
case 6740: return SendClientMessage(playerid, -1, "{CCCCCC}No vuelvas a llamar al banco, cuidado.");
case 38350: return SendClientMessage(playerid, -1, "{CCCCCC}Aseguradora que asegura tus vehículos de mierda.");
case 666: return SendClientMessage(playerid, -1, "{CCCCCC}Mirar a las estrellas es mirar al pasado, no mires.");
}
new to_playerid = INVALID_PLAYER_ID;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if((PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_NORMAL) && PLAYER_PHONE[i][player_phone_NUMBER] == call_number)
{
to_playerid = i;
break;
}
}
}
if(to_playerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto o está fuera de cobertura.");
if(to_playerid == playerid) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto.");
if(PLAYER_PHONE[to_playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está apagado o fuera de cobertura.");
if(PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL]) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está en otra llamada.");
SendClientMessageEx(to_playerid, -1, "{e5f442}[Llamada entrante] {FFFFFF}%s te está llamando, para responser usa {e5f442}/responder {FFFFFF}o {e5f442}/colgar.", convertPhoneNumber(to_playerid, PLAYER_PHONE[playerid][player_phone_NUMBER]));
PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_INCOMING_CALL;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = playerid;
SendClientMessageEx(playerid, -1, "Llamando a {e5f442}%s ...", convertPhoneNumber(playerid, call_number));
PLAYER_TEMP[playerid][pt_TIMERS][6] = SetTimerEx("NoCallResponse", 15000, false, "i", playerid);
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_WAITING_RESPONSE;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = to_playerid;
PlayerPlaySoundEx(playerid, 3600, 0.0, 0.0, 0.0);
return 1;
}
forward LoadPhoneContact(playerid, tmp_contact[]);
public LoadPhoneContact(playerid, tmp_contact[])
{
new count, call_number, bool:found;
cache_get_row_count(count);
if(count)
{
found = true;
cache_get_value_index_int(0, 0, call_number);
}
if(!found) return SendClientMessageEx(playerid, -1, "{999999}No hemos encontrado a '%s' en tu /agenda.", tmp_contact);
if(call_number <= 0) return SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
switch(call_number)
{
case 911:
{
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Debes ser al menos nivel 2 para llamar a la policía.");
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION] = false;
SendClientMessage(playerid, -1, "{CCCCCC}Operadora: Ha llamado a la central de policía, indícanos su nombre por favor.");
return 1;
}
case 450: //Taxi
{
if(PLAYER_TEMP[playerid][pt_WANT_TAXI])
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = false;
DisablePlayerTaxiMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el taxi.");
}
else
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los taxistas disponibles, espera a que llegue un taxi.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un taxi.");
SendAlertToTaxiDrivers(playerid);
}
return 1;
}
case 570: //Mecanico
{
if(PLAYER_TEMP[playerid][pt_WANT_MECHANIC])
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el mecánico.");
}
else
{
if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid, -1, "{999999}Tienes que estar dentro de un vehículo averiado para llamar al mecánico.");
if(GLOBAL_VEHICLES[ GetPlayerVehicleID(playerid) ][gb_vehicle_STATE] != VEHICLE_STATE_DAMAGED) return SendClientMessage(playerid, -1, "{999999}Tienes que estar dentro de un vehículo averiado para llamar al mecánico.");
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los mecánicos disponibles, espera a que llegue un mecánico.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un mecánico.");
SendAlertToMechanic(playerid);
}
return 1;
}
case 6740: return SendClientMessage(playerid, -1, "{CCCCCC}No vuelvas a llamar al banco, cuidado.");
case 38350: return SendClientMessage(playerid, -1, "{CCCCCC}Aseguradora que asegura tus vehículos de mierda.");
case 666: return SendClientMessage(playerid, -1, "{CCCCCC}Mirar a las estrellas es mirar al pasado, no mires.");
}
new to_playerid = INVALID_PLAYER_ID;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if((PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_NORMAL) && PLAYER_PHONE[i][player_phone_NUMBER] == call_number)
{
to_playerid = i;
break;
}
}
}
if(to_playerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto o está fuera de cobertura.");
if(to_playerid == playerid) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto.");
if(PLAYER_PHONE[to_playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está apagado o fuera de cobertura.");
if(PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL]) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está en otra llamada.");
SendClientMessageEx(to_playerid, -1, "{e5f442}[Llamada entrante] {FFFFFF}%s te está llamando, para responser usa {e5f442}/responder {FFFFFF}o {e5f442}/colgar.", convertPhoneNumber(to_playerid, PLAYER_PHONE[playerid][player_phone_NUMBER]));
PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_INCOMING_CALL;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = playerid;
SendClientMessageEx(playerid, -1, "Llamando a {e5f442}%s ...", convertPhoneNumber(playerid, call_number));
PLAYER_TEMP[playerid][pt_TIMERS][6] = SetTimerEx("NoCallResponse", 15000, false, "i", playerid);
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_WAITING_RESPONSE;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = to_playerid;
PlayerPlaySoundEx(playerid, 3600, 0.0, 0.0, 0.0);
return 1;
}
CMD:responder(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
if(!PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}No hay ninguna llamada entrante.");
if(PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] == INVALID_PLAYER_ID) return SendClientMessageEx(playerid, -1, "{999999}No hay ninguna llamada entrante.");
if(PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE] != CALL_STATE_INCOMING_CALL) return SendClientMessageEx(playerid, -1, "{999999}No hay ninguna llamada entrante.");
new to_playerid = PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID];
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_ESTABLISHED;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = to_playerid;
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_USECELLPHONE);
KillTimer(PLAYER_TEMP[to_playerid][pt_TIMERS][6]);
PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_ESTABLISHED;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = playerid;
SetPlayerSpecialAction(to_playerid, SPECIAL_ACTION_USECELLPHONE);
SendClientMessage(playerid, -1, "Llamada establecida, usa {e5f442}/colgar {FFFFFF}para terminarla.");
SendClientMessage(to_playerid, -1, "Llamada establecida, usa {e5f442}/colgar {FFFFFF}para terminarla.");
return 1;
}
CMD:colgar(playerid, params[])
{
if(!PLAYER_PHONE[playerid][player_phone_VALID])
{
ShowPlayerMessage(playerid, "No tienes ningún teléfono, puedes ir a cualquier 24/7 para comprar uno.", 3, 1085);
return 1;
}
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
if(!PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}No hay ninguna llamada entrante.");
if(PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] || PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION])
{
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = false;
PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] = false;
PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION] = false;
SendClientMessage(playerid, -1, "{f47d42}Llamada finalizada.");
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] == INVALID_PLAYER_ID) return SendClientMessageEx(playerid, -1, "{999999}No hay ninguna llamada entrante.");
switch(PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE])
{
case CALL_STATE_WAITING_RESPONSE:
{
EndPhoneCall(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Colgaste.");
}
case CALL_STATE_INCOMING_CALL:
{
EndPhoneCall(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}No has respondido la llamada.");
}
case CALL_STATE_ESTABLISHED:
{
EndPhoneCall(playerid);
SendClientMessage(playerid, -1, "{f47d42}Llamada finalizada.");
}
default: SendClientMessageEx(playerid, -1, "{999999}No estás en ninguna llamada.");
}
return 1;
}
CMD:panel(playerid, params[])
{
ShowDialog(playerid, DIALOG_PLAYER_CONFIG);
return 1;
}
alias:panel("config", "configuracion", "ajustes");
CMD:comprarcasa(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] == INTERIOR_NO_INFO) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new site_index = GetBuyPropertySiteIndexByIntTyp(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE]);
if(site_index == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, BUY_PROPERTIES_SITES[site_index][site_X], BUY_PROPERTIES_SITES[site_index][site_Y], BUY_PROPERTIES_SITES[site_index][site_Z])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0) return SendClientMessage(playerid, -1, "{999999}No puedes comprar una casa sin tener cuenta bancaria.");
if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "Error: {C4FF66}/comprarcasa {FFFFFF}[ID]");
if(params[0] <= 0) return SendClientMessage(playerid, -1, "{999999}Error: ID no es válida.");
new DB_Query[120];
format(DB_Query, sizeof(DB_Query), "SELECT COUNT(`ID_USER`) AS `PROPERTIES` FROM `PROPERTY_OWNER` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "ComprarCasa", "ii", playerid, params[0]);
return 1;
}
forward ComprarCasa(playerid, idcasa);
public ComprarCasa(playerid, idcasa)
{
new count, player_properties;
cache_get_row_count(count);
if(count > 0) cache_get_value_name_int(0, "PROPERTIES", player_properties);
if(ACCOUNT_INFO[playerid][ac_SU])
{
if(player_properties >= MAX_SU_PROPERTIES) return SendClientMessage(playerid, -1, "{999999}No puedes comprar más propiedades.");
}
else
{
if(player_properties >= MAX_NU_PROPERTIES)
{
SendClientMessageEx(playerid, -1, "{CCCCCC}¡Los jugadores {b1fc6f}VIP {CCCCCC}pueden tener hasta %d propiedades! Usa {fffb49}/ayuda {CCCCCC}si quieres ser {b1fc6f}VIP.", MAX_SU_PROPERTIES);
SendClientMessage(playerid, -1, "{999999}No puedes comprar más propiedades.");
}
}
new index = GetPropertyIndexByID(idcasa);
if(index == -1) return SendClientMessage(playerid, -1, "{999999}Error: ID no es válida.");
if(PROPERTY_INFO[index][property_SOLD]) return SendClientMessage(playerid, -1, "{999999}Está propiedad ya está vendida.");
if(PROPERTY_INFO[index][property_LEVEL] > ACCOUNT_INFO[playerid][ac_LEVEL]) return SendClientMessageEx(playerid, -1, "{999999}Necesitas ser como mínimo nivel %d para comprar esta propiedad.", PROPERTY_INFO[index][property_LEVEL]);
if(PROPERTY_INFO[index][property_VIP_LEVEL] > ACCOUNT_INFO[playerid][ac_SU]) return SendClientMessageEx(playerid, -1, "{999999}Necesitas membresía VIP%d para comprar esta propiedad.", PROPERTY_INFO[index][property_VIP_LEVEL]);
if(PROPERTY_INFO[index][property_EXTRA] > ACCOUNT_INFO[playerid][ac_SD]) return SendClientMessageEx(playerid, -1, "{999999}Necesitas %d "SERVER_COIN" para comprar esta propiedad.", PROPERTY_INFO[index][property_EXTRA]);
if(BANK_ACCOUNT[playerid][bank_account_BALANCE] >= PROPERTY_INFO[index][property_PRICE])
{
PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX] = index;
ShowDialog(playerid, DIALOG_CONFIRM_BUY_PROPERTY);
}
else SendClientMessageEx(playerid, -1, "{999999}No tienes fondos suficientes en tu cuenta, te faltan {FF6633}%s$ {999999}para poder comprar esta propiedad.", number_format_thousand(PROPERTY_INFO[index][property_PRICE] - BANK_ACCOUNT[playerid][bank_account_BALANCE]));
return 1;
}
GetPropertyIndexByID(id)
{
for(new i = 0; i != MAX_PROPERTIES; i ++)
{
if(!PROPERTY_INFO[i][property_VALID]) continue;
if(PROPERTY_INFO[i][property_ID] == id) return i;
}
return -1;
}
CMD:banco(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] == INTERIOR_NO_INFO) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new index = GetBankLocalIndexByIntType(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE]);
if(index == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, Bank_Interior_Positions[index][bank_X], Bank_Interior_Positions[index][bank_Y], Bank_Interior_Positions[index][bank_Z])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0) // no tiene cuenta bancaria
{
ShowDialog(playerid, DIALOG_CREATE_BANK_ACCOUNT);
return 1;
}
ShowDialog(playerid, DIALOG_BANK);
return 1;
}
CMD:cajero(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID] == 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new info_arr[3];
Streamer_GetArrayData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
if(info_arr[0] != PICKUP_TYPE_ATM) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new Float:pos[3];
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_X, pos[0]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Y, pos[1]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Z, pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, pos[0], pos[1], pos[2])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0)
{
SendClientMessage(playerid, -1, "{999999}No tienes cuenta bancaria, puedes crearla en cualquier Banco.");
return 1;
}
PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = true;
ShowDialog(playerid, DIALOG_BANK);
return 1;
}
CMD:alimentos(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
ShowDialog(playerid, DIALOG_PLAYER_POCKET);
return 1;
}
#define TIME_BETWEEN_GIVE_CASH 30 // segundos
CMD:dar(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Debes ser al menos nivel 2 para usar este comando.");
new option[24], to_playerid, extra;
if(sscanf(params, "s[24]ud", option, to_playerid, extra)) return SendClientMessage(playerid, -1, "{999999}Error en los parámetros, utilice {CCCCCC}/man dar.");
if(!IsPlayerConnected(to_playerid)) return SendClientMessage(playerid, -1, "{999999}El jugador no está conectado.");
new Float:pos[3]; GetPlayerPos(to_playerid, pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "Este jugador no está cerca tuya.");
if(PLAYER_TEMP[to_playerid][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}No puedes darle nada a este jugador ahora.");
if(!strcmp(option, "dinero", true))
{
if(gettime() < PLAYER_TEMP[playerid][pt_LAST_GIVE_MONEY_TIME] + TIME_BETWEEN_GIVE_CASH)
{
new time = TIME_BETWEEN_GIVE_CASH - (gettime() - PLAYER_TEMP[playerid][pt_LAST_GIVE_MONEY_TIME]);
SendClientMessageEx(playerid, -1, "{999999}Debes de esperar %s minutos para volver a dar dinero.", TimeConvert(time));
return 1;
}
if(extra < 0 || extra > CHARACTER_INFO[playerid][ch_CASH]) return SendClientMessage(playerid, -1, "{999999}Cantidad de dinero incorrecta.");
if(extra > 50000) return SendClientMessage(playerid, -1, "{999999}Para dar tanto dinero tienes que hacerlo a través de transferencias bancarias.");
GivePlayerCash(playerid, -extra);
GivePlayerCash(to_playerid, extra);
SendClientMessageEx(playerid, -1, "Le has dado {5cd1d1}%s$ {FFFFFF}a {b6f442}%s.", number_format_thousand(extra), PLAYER_TEMP[to_playerid][pt_RP_NAME]);
SendClientMessageEx(to_playerid, -1, "{b6f442}%s {FFFFFF} te ha dado {5cd1d1}%s$.", PLAYER_TEMP[playerid][pt_RP_NAME], number_format_thousand(extra));
new action[64];
format(action, sizeof action, "le da dinero a %s.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
PLAYER_TEMP[playerid][pt_LAST_GIVE_MONEY_TIME] = gettime();
return 1;
}
else if(!strcmp(option, "alimento", true))
{
if(extra < 1 || extra > MAX_PLAYER_POCKET_OBJECTS) return SendClientMessage(playerid, -1, "Error: {C4FF66}/dar alimento {FFFFFF}[ID o Nombre] [Slot /alimentos]");
extra --;
if(!PLAYER_POCKET[playerid][extra][player_pocket_VALID]) return SendClientMessage(playerid, -1, "{999999}No tienes nada en ese slot.");
new to_player_slot = GetEmptyPlayerPocketSlot(to_playerid);
if(to_player_slot == -1)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{999999}El jugador no tiene más espacio entre sus alimentos.");
return 1;
}
new action[64];
format(action, sizeof action, "le da su %s a %s.", PLAYER_POCKET[playerid][extra][player_pocket_object_NAME], PLAYER_TEMP[to_playerid][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
TransferPlayerPocketObject(playerid, extra, to_playerid, to_player_slot);
return 1;
}
else if(!strcmp(option, "medicamentos", true))
{
if(extra <= 0 || extra > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(extra > PLAYER_MISC[playerid][MISC_MEDICINE]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
PLAYER_MISC[playerid][MISC_MEDICINE] -= extra;
PLAYER_MISC[to_playerid][MISC_MEDICINE] += extra;
SendClientMessageEx(playerid, -1, "Le has dado %dg de medicamentos a %s.", extra, PLAYER_TEMP[to_playerid][pt_RP_NAME]);
SendClientMessageEx(to_playerid, -1, "%s te ha dado %dg de medicamentos.", PLAYER_TEMP[playerid][pt_RP_NAME], extra);
new action[64];
format(action, sizeof action, "le da algo a %s.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
return 1;
}
else if(!strcmp(option, "marihuana", true))
{
if(extra <= 0 || extra > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(extra > PLAYER_MISC[playerid][MISC_CANNABIS]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
PLAYER_MISC[playerid][MISC_CANNABIS] -= extra;
PLAYER_MISC[to_playerid][MISC_CANNABIS] += extra;
SendClientMessageEx(playerid, -1, "Le has dado %dg de marihuana a %s.", extra, PLAYER_TEMP[to_playerid][pt_RP_NAME]);
SendClientMessageEx(to_playerid, -1, "%s te ha dado %dg de marihuana.", PLAYER_TEMP[playerid][pt_RP_NAME], extra);
new action[64];
format(action, sizeof action, "le da algo a %s.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
return 1;
}
else if(!strcmp(option, "crack", true))
{
if(extra <= 0 || extra > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(extra > PLAYER_MISC[playerid][MISC_CRACK]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
PLAYER_MISC[playerid][MISC_CRACK] -= extra;
PLAYER_MISC[to_playerid][MISC_CRACK] += extra;
SendClientMessageEx(playerid, -1, "Le has dado %dg de crack a %s.", extra, PLAYER_TEMP[to_playerid][pt_RP_NAME]);
SendClientMessageEx(to_playerid, -1, "%s te ha dado %dg de crack.", PLAYER_TEMP[playerid][pt_RP_NAME], extra);
new action[64];
format(action, sizeof action, "le da algo a %s.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
return 1;
}
else if(!strcmp(option, "arma", true))
{
if(PLAYER_WORKS[playerid][WORK_POLICE]) return SendClientMessage(playerid, -1, "{999999}Los policías no pueden vender armas.");
if(extra < 0 || extra > 12) return SendClientMessage(playerid, -1, "Error: {C4FF66}/dar arma {FFFFFF}[ID o Nombre] [Slot /armas]");
if(!PLAYER_WEAPONS[playerid][extra][player_weapon_VALID]) return SendClientMessage(playerid, -1, "{999999}No tienes nigún arma en ese slot.");
if(ACCOUNT_INFO[to_playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}La otra persona tiene que ser al menos nivel 2.");
if(PLAYER_WEAPONS[to_playerid][extra][player_weapon_VALID])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{999999}El jugador ya tiene un arma en ese slot.");
return 1;
}
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has dado tu '%s' a %s.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][extra][player_weapon_ID] ][weapon_info_NAME], PLAYER_TEMP[to_playerid][pt_RP_NAME]);
SendClientMessageEx(to_playerid, -1, "{CCCCCC}%s te ha dado su '%s'.", PLAYER_TEMP[playerid][pt_RP_NAME], WEAPON_INFO[ PLAYER_WEAPONS[playerid][extra][player_weapon_ID] ][weapon_info_NAME]);
new action[64];
format(action, sizeof action, "le da un arma a %s.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
TransferPlayerWeapon(playerid, extra, to_playerid);
return 1;
}
else SendClientMessage(playerid, -1, "{999999}Error en los parámetros, utilice {CCCCCC}/man dar.");
return 1;
}
CMD:vender(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Debes ser al menos nivel 2 para usar este comando.");
new option[24], to_playerid, extra, price;
if(sscanf(params, "s[24]udd", option, to_playerid, extra, price)) return SendClientMessage(playerid, -1, "{999999}Error en los parámetros, utilice {CCCCCC}/man vender.");
if(price <= 0 || price > 10000000) return SendClientMessage(playerid, -1, "{999999}El precio no es válido.");
if(!IsPlayerConnected(to_playerid)) return SendClientMessage(playerid, -1, "{999999}El jugador no está conectado.");
new Float:pos[3]; GetPlayerPos(to_playerid, pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "Este jugador no está cerca tuya.");
if(PLAYER_TEMP[to_playerid][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}No puedes venderle nada a este jugador ahora.");
if(price > CHARACTER_INFO[to_playerid][ch_CASH])
{
SendClientMessage(playerid, -1, "{999999}Esta persona no tiene el dinero que pides.");
return 1;
}
PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_PID] = playerid;
PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_AID] = ACCOUNT_INFO[playerid][ac_ID];
PLAYER_TEMP[to_playerid][pt_TRICK_PRICE] = price;
PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] = extra;
PLAYER_TEMP[to_playerid][pt_TRICK_TIME] = gettime();
if(!strcmp(option, "alimento", true))
{
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] < 1 || PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > MAX_PLAYER_POCKET_OBJECTS) return SendClientMessage(playerid, -1, "Error: {C4FF66}/vender alimento {FFFFFF}[ID o Nombre] [Slot /alimentos] [precio]");
PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] --;
if(!PLAYER_POCKET[playerid][ PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] ][player_pocket_VALID]) return SendClientMessage(playerid, -1, "{999999}No tienes nada en ese slot.");
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido una venta a %s, espera para ver si la acepta.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
ShowDialog(to_playerid, DIALOG_TRICKS_FOOD);
return 1;
}
else if(!strcmp(option, "medicamentos", true))
{
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] <= 0 || PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > PLAYER_MISC[playerid][MISC_MEDICINE]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido una venta a %s, espera para ver si la acepta.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
ShowDialog(to_playerid, DIALOG_TRICKS_MEDICINE);
return 1;
}
else if(!strcmp(option, "marihuana", true))
{
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] <= 0 || PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > PLAYER_MISC[playerid][MISC_CANNABIS]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido una venta a %s, espera para ver si la acepta.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
ShowDialog(to_playerid, DIALOG_TRICKS_CANNABIS);
return 1;
}
else if(!strcmp(option, "crack", true))
{
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] <= 0 || PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > PLAYER_MISC[playerid][MISC_CRACK]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido una venta a %s, espera para ver si la acepta.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
ShowDialog(to_playerid, DIALOG_TRICKS_CRACK);
return 1;
}
else if(!strcmp(option, "arma", true))
{
if(PLAYER_WORKS[playerid][WORK_POLICE]) return SendClientMessage(playerid, -1, "{999999}Los policías no pueden vender armas.");
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] < 0 || PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > 12) return SendClientMessage(playerid, -1, "Error en slot de /armas.");
if(!PLAYER_WEAPONS[playerid][ PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] ][player_weapon_VALID]) return SendClientMessage(playerid, -1, "{999999}No tienes nigún arma en ese slot.");
if(ACCOUNT_INFO[to_playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}La otra persona tiene que ser al menos nivel 2.");
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido una venta a %s, espera para ver si la acepta.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
ShowDialog(to_playerid, DIALOG_TRICKS_WEAPON);
return 1;
}
else if(!strcmp(option, "coins", true))
{
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] <= 0 || PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(PLAYER_TEMP[to_playerid][pt_TRICK_SELLER_EXTRA] > ACCOUNT_INFO[playerid][ac_SD]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad de "SERVER_COIN".");
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido una venta a %s, espera para ver si la acepta.", PLAYER_TEMP[to_playerid][pt_RP_NAME]);
ShowDialog(to_playerid, DIALOG_TRICKS_SU);
return 1;
}
else SendClientMessage(playerid, -1, "{999999}Error en los parámetros, utilice {CCCCCC}/man vender.");
return 1;
}
CMD:consumir(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
new option[24], slot;
if(!sscanf(params, "s[24]d", option, slot))
{
if(!strcmp(option, "alimento", true))
{
if(slot < 1 || slot > MAX_PLAYER_POCKET_OBJECTS) return SendClientMessageEx(playerid, -1, "Error: {C4FF66}/consumir alimento {FFFFFF}[SLOT 1-%d]", MAX_PLAYER_POCKET_OBJECTS);
slot --;
if(!PLAYER_POCKET[playerid][slot][player_pocket_VALID]) return SendClientMessage(playerid, -1, "{999999}No tienes nada en ese slot.");
if(CHARACTER_INFO[playerid][ch_HUNGRY] >= 99.0 && CHARACTER_INFO[playerid][ch_THIRST] >= 99.0) return SendClientMessage(playerid, -1, "{CCCCCC}¿Es que quieres reventar?");
Add_Hungry_Thirst(playerid, PLAYER_POCKET[playerid][slot][player_pocket_object_HUNGRY], PLAYER_POCKET[playerid][slot][player_pocket_object_THIRST]);
GivePlayerDrunkLevel(playerid, PLAYER_POCKET[playerid][slot][player_pocket_object_DRUNK]);
new action[64];
format(action, sizeof action, "consume %s.", PLAYER_POCKET[playerid][slot][player_pocket_object_NAME]);
Auto_SendPlayerAction(playerid, action);
DeletePlayerPocketObject(playerid, slot);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 0, 0, 0, 0, 0, 0);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 4.1, false, true, true, false, 1000);
}
else SendClientMessage(playerid, -1, "Error: {C4FF66}/consumir {FFFFFF}[medicamento - marihuana - crack - alimento]");
}
else if(!sscanf(params, "s[24]", option))
{
if(!strcmp(option, "medicamento", true))
{
if(PLAYER_MISC[playerid][MISC_MEDICINE] <= 0) return SendClientMessage(playerid, -1, "{999999}No tienes medicamentos.");
PLAYER_MISC[playerid][MISC_MEDICINE] --;
GivePlayerHealthEx(playerid, 25.0);
Auto_SendPlayerAction(playerid, "se toma un medicamento.");
}
else if(!strcmp(option, "marihuana", true))
{
if(PLAYER_MISC[playerid][MISC_CANNABIS] <= 0) return SendClientMessage(playerid, -1, "{999999}No tienes marihuana.");
PLAYER_MISC[playerid][MISC_CANNABIS] --;
GivePlayerHealthEx(playerid, 30.0);
Auto_SendPlayerAction(playerid, "consume marihuana.");
GivePlayerDrunkLevel(playerid, 1000);
}
else if(!strcmp(option, "crack", true))
{
if(PLAYER_MISC[playerid][MISC_CRACK] <= 0) return SendClientMessage(playerid, -1, "{999999}No tienes crack.");
PLAYER_MISC[playerid][MISC_CRACK] --;
GivePlayerArmourEx(playerid, 20.0);
Auto_SendPlayerAction(playerid, "consume crack.");
GivePlayerDrunkLevel(playerid, 2000);
}
else if(!strcmp(option, "alimento", true)) SendClientMessageEx(playerid, -1, "Error: {C4FF66}/consumir alimento {FFFFFF}[SLOT 1-%d]", MAX_PLAYER_POCKET_OBJECTS);
else SendClientMessage(playerid, -1, "Error: {C4FF66}/consumir {FFFFFF}[medicamento - marihuana - crack - alimento]");
}
else SendClientMessage(playerid, -1, "Error: {C4FF66}/consumir {FFFFFF}[medicamento - marihuana - crack - alimento]");
return 1;
}
CMD:man(playerid, params[])
{
new option[24];
if(sscanf(params, "s[24]", option)) return SendClientMessage(playerid, -1, "Error: {C4FF66}/man {FFFFFF}[dar]");
if(!strcmp(option, "dar", true))
{
ShowPlayerDialog
(
playerid,
DIALOG_INFO,
DIALOG_STYLE_MSGBOX,
""SERVER_NAME" - Manual",
"\
Comando: dar\n\
Sintaxis: dar <opcion> <playerid o nombre> <extra>\n\
\n\
Este comando sirve para dar algo a otro jugador cercano.\n\
Para comprobar que tiene el objeto y la cantidad utilice /inv.\n\
\n\
Esta es la lista de opciones:\n\
    - arma <playerid o nombre> <slot de /armas>\n\
    - dinero <playerid o nombre> <cantidad>\n\
    - alimento <playerid o nombre> <slot de /alimentos>\n\
    - medicamentos <playerid o nombre> <cantidad>\n\
    - marihuana <playerid o nombre> <cantidad>\n\
    - crack <playerid o nombre> <cantidad>\n\
\n\
Para obtener ayuda diferente use /ayuda.\
",
"Cerrar", ""
);
return 1;
}
else if(!strcmp(option, "tirar", true))
{
ShowPlayerDialog
(
playerid,
DIALOG_INFO,
DIALOG_STYLE_MSGBOX,
""SERVER_NAME" - Manual",
"\
Comando: tirar\n\
Sintaxis: tirar <opcion> <extra>\n\
\n\
Este comando sirve para deshacerte de algún objeto.\n\
\n\
Esta es la lista de opciones:\n\
    - arma <slot de /armas>\n\
    - dinero <cantidad>\n\
    - alimento <slot de /alimentos>\n\
    - medicamentos <cantidad>\n\
    - marihuana <cantidad>\n\
    - crack <cantidad>\n\
\n\
Para obtener ayuda diferente use /ayuda.\
",
"Cerrar", ""
);
return 1;
}
else if(!strcmp(option, "vender", true))
{
ShowPlayerDialog
(
playerid,
DIALOG_INFO,
DIALOG_STYLE_MSGBOX,
""SERVER_NAME" - Manual",
"\
Comando: vender\n\
Sintaxis: vender <opcion> <playerid o nombre> <extra> <precio>\n\
\n\
Este comando sirve para vender algo a otro jugador cercano.\n\
Para comprobar que tiene el objeto y la cantidad utilice /inv.\n\
\n\
Esta es la lista de opciones:\n\
    - arma <playerid o nombre> <slot de /armas> <precio>\n\
    - alimento <playerid o nombre> <slot de /alimentos> <precio>\n\
    - medicamentos <playerid o nombre> <cantidad> <precio>\n\
    - marihuana <playerid o nombre> <cantidad> <precio>\n\
    - crack <playerid o nombre> <cantidad> <precio>\n\
    - coins <playerid o nombre> <cantidad> <precio>\n\
\n\
Para obtener ayuda diferente use /ayuda.\
",
"Cerrar", ""
);
return 1;
}
else SendClientMessage(playerid, -1, "Error: {C4FF66}/man {FFFFFF}[dar]");
return 1;
}
CMD:tirar(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
new option[24], extra;
if(sscanf(params, "s[24]d", option, extra)) return SendClientMessage(playerid, -1, "{999999}Error en los parámetros, utilice {CCCCCC}/man tirar.");
if(!strcmp(option, "dinero", true))
{
if(extra < 0 || extra > CHARACTER_INFO[playerid][ch_CASH]) return SendClientMessage(playerid, -1, "{999999}Cantidad de dinero incorrecta.");
GivePlayerCash(playerid, -extra);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has tirado {5cd1d1}%s$.", number_format_thousand(extra));
Auto_SendPlayerAction(playerid, "tira dinero.");
return 1;
}
else if(!strcmp(option, "alimento", true))
{
if(extra < 1 || extra > MAX_PLAYER_POCKET_OBJECTS) return SendClientMessageEx(playerid, -1, "Error: {C4FF66}/tirar alimento {FFFFFF}[SLOT 1-%d]", MAX_PLAYER_POCKET_OBJECTS);
extra --;
if(!PLAYER_POCKET[playerid][extra][player_pocket_VALID]) return SendClientMessage(playerid, -1, "{999999}No tienes nada en ese slot.");
SendClientMessageEx(playerid, -1, "{999999}Has eliminado \"%s\" de tus alimentos.", PLAYER_POCKET[playerid][extra][player_pocket_object_NAME]);
DeletePlayerPocketObject(playerid, extra);
return 1;
}
else if(!strcmp(option, "medicamentos", true))
{
if(extra <= 0 || extra > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(extra > PLAYER_MISC[playerid][MISC_MEDICINE]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
PLAYER_MISC[playerid][MISC_MEDICINE] -= extra;
SendClientMessageEx(playerid, -1, "Has tirado %dg de medicamentos.", extra);
return 1;
}
else if(!strcmp(option, "marihuana", true))
{
if(extra <= 0 || extra > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(extra > PLAYER_MISC[playerid][MISC_CANNABIS]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
PLAYER_MISC[playerid][MISC_CANNABIS] -= extra;
SendClientMessageEx(playerid, -1, "Has tirado %dg de marihuana.", extra);
return 1;
}
else if(!strcmp(option, "crack", true))
{
if(extra <= 0 || extra > 10000000) return SendClientMessage(playerid, -1, "{999999}Cantidad incorrecta.");
if(extra > PLAYER_MISC[playerid][MISC_CRACK]) return SendClientMessage(playerid, -1, "{999999}No tienes esa cantidad.");
PLAYER_MISC[playerid][MISC_CRACK] -= extra;
SendClientMessageEx(playerid, -1, "Has tirado %dg de crack.", extra);
return 1;
}
else if(!strcmp(option, "arma", true))
{
if(extra < 0 || extra > 12) return SendClientMessage(playerid, -1, "Error: {C4FF66}/tirar arma {FFFFFF}[Slot /armas]");
if(!PLAYER_WEAPONS[playerid][extra][player_weapon_VALID]) return SendClientMessage(playerid, -1, "{999999}No tienes nigún arma en ese slot.");
SendClientMessageEx(playerid, -1, "{999999}Has eliminado tu '%s' de tus armas.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][extra][player_weapon_ID] ][weapon_info_NAME]);
RemovePlayerSlotWeapon(playerid, extra, true);
return 1;
}
else SendClientMessage(playerid, -1, "{999999}Error en los parámetros, utilice {CCCCCC}/man tirar.");
return 1;
}
CMD:entrar(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID] == 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new info_arr[3];
Streamer_GetArrayData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
if(info_arr[0] == PICKUP_TYPE_NONE) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new Float:pos[3];
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_X, pos[0]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Y, pos[1]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Z, pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, pos[0], pos[1], pos[2])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
switch(info_arr[0])
{
case PICKUP_TYPE_ENTER_EXIT:
{
PLAYER_TEMP[playerid][pt_HOSPITAL] = GetNearestHospitalForPlayer(playerid);
if(PLAYER_TEMP[playerid][pt_HOSPITAL] == -1) PLAYER_TEMP[playerid][pt_HOSPITAL] = 1;
if(info_arr[2] == 2) // Está en el Pickup Exterior y quiere ir al interior
{
if(ENTER_EXIT[info_arr[1]][ee_TIME_OPEN] == 0 && ENTER_EXIT[info_arr[1]][ee_TIME_CLOSE] == 0) // 24 horas
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_INTERIOR;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = ENTER_EXIT[info_arr[1]][ee_ID];
PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] = info_arr[1];
SetPlayerPosEx(playerid, ENTER_EXIT[info_arr[1]][ee_INT_X], ENTER_EXIT[info_arr[1]][ee_INT_Y], ENTER_EXIT[info_arr[1]][ee_INT_Z], ENTER_EXIT[info_arr[1]][ee_INT_ANGLE], ENTER_EXIT[info_arr[1]][ee_INT_INTERIOR], ENTER_EXIT[info_arr[1]][ee_INT_WORLD], false /*ENTER_EXIT[info_arr[1]][ee_INT_FREEZE]*/, true);
FreezePlayer(playerid);
}
else
{
if(is_open(SERVER_TIME[0], ENTER_EXIT[info_arr[1]][ee_TIME_OPEN], ENTER_EXIT[info_arr[1]][ee_TIME_CLOSE]))
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_INTERIOR;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = ENTER_EXIT[info_arr[1]][ee_ID];
PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] = info_arr[1];
SetPlayerPosEx(playerid, ENTER_EXIT[info_arr[1]][ee_INT_X], ENTER_EXIT[info_arr[1]][ee_INT_Y], ENTER_EXIT[info_arr[1]][ee_INT_Z], ENTER_EXIT[info_arr[1]][ee_INT_ANGLE], ENTER_EXIT[info_arr[1]][ee_INT_INTERIOR], ENTER_EXIT[info_arr[1]][ee_INT_WORLD], false /*ENTER_EXIT[info_arr[1]][ee_INT_FREEZE]*/, true);
FreezePlayer(playerid);
if(ENTER_EXIT[info_arr[1]][ee_INTERIOR_TYPE] == INTERIOR_CLUB) PlayAudioStreamForPlayerEx(playerid, "https://www.dropbox.com/s/yeuwio26i7y00ly/striptease.mp3?dl=1");
}
else SendClientMessageEx(playerid, -1, "{C4FF66}%s {FFFFFF}está cerrado, su horario es: {C4FF66}%02d:00 - %02d:00.", ENTER_EXIT[info_arr[1]][ee_NAME], ENTER_EXIT[info_arr[1]][ee_TIME_OPEN], ENTER_EXIT[info_arr[1]][ee_TIME_CLOSE]);
}
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
case PICKUP_TYPE_PROPERTY:
{
PLAYER_TEMP[playerid][pt_HOSPITAL] = GetNearestHospitalForPlayer(playerid);
if(PLAYER_TEMP[playerid][pt_HOSPITAL] == -1) PLAYER_TEMP[playerid][pt_HOSPITAL] = 1;
if(info_arr[2] == 2) // Está en el Pickup Exterior y quiere ir al interior
{
if(!PROPERTY_INFO[info_arr[1]][property_SOLD]) return SendClientMessage(playerid, -1, "{999999}Esta propiedad está en venta.");
if(PROPERTY_INFO[info_arr[1]][property_CREW])
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessageEx(playerid, -1, "{999999}Solo miembros de la banda pueden entrar.");
if(PLAYER_CREW[playerid][player_crew_ID] != PROPERTY_INFO[info_arr[1]][property_CREW_ID]) return SendClientMessageEx(playerid, -1, "{999999}Solo miembros de la banda pueden entrar.");
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_GUEST_PROPERTY;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = PROPERTY_INFO[info_arr[1]][property_ID];
PLAYER_TEMP[playerid][pt_PROPERTY_INDEX] = info_arr[1];
SetPlayerPosEx(playerid, PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_X], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_Y], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_Z], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_ANGLE], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_INTERIOR], PROPERTY_INFO[info_arr[1]][property_ID], false /*PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_FREEZE]*/, true);
FreezePlayer(playerid);
}
else
{
if(PROPERTY_INFO[info_arr[1]][property_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_OWN_PROPERTY;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = PROPERTY_INFO[info_arr[1]][property_ID];
PLAYER_TEMP[playerid][pt_PROPERTY_INDEX] = info_arr[1];
SetPlayerPosEx(playerid, PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_X], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_Y], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_Z], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_ANGLE], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_INTERIOR], PROPERTY_INFO[info_arr[1]][property_ID], false /*PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_FREEZE]*/, true);
FreezePlayer(playerid);
}
else
{
if(gettime() < PLAYER_TEMP[playerid][pt_ANTIFLOOD_KNOCK_PROPERTY] + 10) return SendClientMessage(playerid, 0x999999AA, "Espera para volver a tocar, si no te quieren abrir, vete.");
new owner_playerid = GetOwnerIntProperty(PROPERTY_INFO[info_arr[1]][property_ID]);
if(owner_playerid == -1) return SendClientMessage(playerid, -1, "{999999}Esta no es tu propiedad y el dueño no está dentro para dejarte entrar.");
PLAYER_TEMP[playerid][pt_ANTIFLOOD_KNOCK_PROPERTY] = gettime();
PLAYER_TEMP[owner_playerid][pt_KNOCK_PLAYER_ID] = playerid;
SendClientMessageEx(owner_playerid, -1, "{f4e542}%s {FFFFFF}está tocando la puerta, para dejarle entrar ve a la puerta y usa {bef441}/puerta.", PLAYER_TEMP[playerid][pt_RP_NAME]);
SendClientMessage(playerid, -1, "{CCCCCC}Has tocado en la puerta, espera para que te abran o vete.");
}
}
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
default: ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
return 1;
}
CMD:puerta(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] != ROLEPLAY_STATE_OWN_PROPERTY) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID] == 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new info_arr[3];
Streamer_GetArrayData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
if(info_arr[0] != PICKUP_TYPE_PROPERTY) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new Float:pos[3];
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_X, pos[0]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Y, pos[1]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Z, pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, pos[0], pos[1], pos[2])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(info_arr[2] == 1) // Está en el Pickup Interior
{
if(PROPERTY_INFO[info_arr[1]][property_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
if(PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID] == INVALID_PLAYER_ID) return SendClientMessage(playerid, 0x999999AA, "Nadie ha tocado en la puerta.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID])) return SendClientMessage(playerid, 0x999999AA, "Nadie ha tocado en la puerta o ya se ha ido.");
if(!IsPlayerInRangeOfPoint(PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID], 3.0, PROPERTY_INFO[info_arr[1]][property_EXT_X], PROPERTY_INFO[info_arr[1]][property_EXT_Y], PROPERTY_INFO[info_arr[1]][property_EXT_Z])) return SendClientMessage(playerid, 0x999999AA, "Nadie ha tocado en la puerta o ya se ha ido.");
if(PLAYER_TEMP[playerid][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, 0x999999AA, "Este jugador no puede entrar ahora.");
PLAYER_TEMP[PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]][pt_HOSPITAL] = GetNearestHospitalForPlayer(PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]);
if(PLAYER_TEMP[PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]][pt_HOSPITAL] == -1) PLAYER_TEMP[PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]][pt_HOSPITAL] = 1;
CHARACTER_INFO[PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]][ch_STATE] = ROLEPLAY_STATE_GUEST_PROPERTY;
CHARACTER_INFO[PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]][ch_INTERIOR_EXTRA] = PROPERTY_INFO[info_arr[1]][property_ID];
PLAYER_TEMP[PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]][pt_PROPERTY_INDEX] = info_arr[1];
SetPlayerPosEx(PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_X], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_Y], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_Z], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_ANGLE], PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_INTERIOR], PROPERTY_INFO[info_arr[1]][property_ID], false /*PROPERTY_INTERIORS[ PROPERTY_INFO[info_arr[1]][property_ID_INTERIOR] ][property_INT_FREEZE]*/, true);
FreezePlayer(PLAYER_TEMP[playerid][pt_KNOCK_PLAYER_ID]);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
return 1;
}
CMD:pvender(playerid, params[])
{
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Debes ser al menos nivel 2 para usar este comando.");
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] != INTERIOR_CITY_HALL_LS) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, -474.596282, 289.679107, 2004.584960)) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0) return SendClientMessage(playerid, 0x999999AA, "Necesitas tener una cuenta bancaria para poder realizar estas operaciones.");
ShowDialog(playerid, DIALOG_NOTARY);
return 1;
}
CMD:grua(playerid, params[])
{
if(ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] != INTERIOR_CITY_HALL_LS) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, -508.645385, 322.147644, 2004.585937)) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
ShowDialog(playerid, DIALOG_CRANE_SELECT_VEHICLE);
return 1;
}
CMD:casa(playerid, params[])
{
if(PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID] == 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new info_arr[3];
Streamer_GetArrayData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
if(info_arr[0] != PICKUP_TYPE_PROPERTY) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new Float:pos[3];
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_X, pos[0]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Y, pos[1]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Z, pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, pos[0], pos[1], pos[2])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_OWN_PROPERTY)
{
if(info_arr[2] == 1) // Está en el Pickup Interior
{
if(PROPERTY_INFO[info_arr[1]][property_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] = info_arr[1];
ShowDialog(playerid, DIALOG_PROPERTY_OPTIONS);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
else if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_GUEST_PROPERTY)
{
if(info_arr[2] == 1) // Está en el Pickup Interior
{
if(PROPERTY_INFO[info_arr[1]][property_CREW])
{
if(PROPERTY_INFO[info_arr[1]][property_CREW_ID] != PLAYER_CREW[playerid][player_crew_ID]) return SendClientMessage(playerid, -1, "{999999}Esta no es una propiedad de tu banda.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_DELETE_PROPERTIES]) return SendClientMessage(playerid, -1, "{999999}No tienes permiso.");
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No puedes liberar una propiedad cuando tu banda está en combate.");
PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] = info_arr[1];
ShowDialog(playerid, DIALOG_CREW_LEAVE_PROPERTY);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
return 1;
}
CMD:echar(playerid, params[])
{
if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, -1, "Error: {C4FF66}/echar {FFFFFF}[PlayerID/Nombre]");
if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, "{999999}El jugador no está conectado.");
if(playerid == params[0]) return SendClientMessage(playerid, -1, "{999999}No te eches a ti mismo.");
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_OWN_PROPERTY)
{
if( CHARACTER_INFO[params[0]][ch_STATE] == ROLEPLAY_STATE_GUEST_PROPERTY && CHARACTER_INFO[params[0]][ch_INTERIOR_EXTRA] == CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA])
{
new index = GetPropertyIndexByID(CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA]);
if(index == -1) return SendClientMessage(playerid, -1, "BUG: CMD /ECHAR, Tome captura y contacte con administrador.");
CHARACTER_INFO[params[0]][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[params[0]][ch_INTERIOR_EXTRA] = 0;
PLAYER_TEMP[params[0]][pt_PROPERTY_INDEX] = -1;
SetPlayerPosEx(params[0], PROPERTY_INFO[ index ][property_EXT_X], PROPERTY_INFO[ index ][property_EXT_Y], PROPERTY_INFO[ index ][property_EXT_Z], PROPERTY_INFO[ index ][property_EXT_ANGLE], PROPERTY_INFO[ index ][property_EXT_INTERIOR], 0, false /*PROPERTY_INFO[ index ][property_EXT_FREEZE]*/, false);
StopAudioStreamForPlayer(params[0]);
FreezePlayer(params[0]);
SendClientMessageEx(params[0], -1, "{bad2d8}%s {FFFFFF}te ha echado de su propiedad.", PLAYER_TEMP[playerid][pt_RP_NAME]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has echado a {bad2d8}%s {CCCCCC}de tu propiedad.", PLAYER_TEMP[params[0]][pt_RP_NAME]);
}
else SendClientMessage(playerid, -1, "{999999}Este jugador no está en tu propiedad.");
return 1;
}
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(!PLAYER_VEHICLES[vehicleid][player_vehicle_VALID]) return SendClientMessage(playerid, -1, "{999999}Este no es tú vehículo.");
if(PLAYER_VEHICLES[vehicleid][player_vehicle_OWNER_ID] != ACCOUNT_INFO[playerid][ac_ID]) return SendClientMessage(playerid, -1, "{999999}Este no es tú vehículo.");
if(GetPlayerVehicleID(params[0]) != vehicleid) return SendClientMessage(playerid, -1, "{999999}Este jugador no está en tu vehículo.");
RemovePlayerFromVehicle(params[0]);
new action[64];
format(action, sizeof action, "ha echado a %s de su vehículo.", PLAYER_TEMP[ params[0] ][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
return 1;
}
SendClientMessage(playerid, -1, "{999999}No estás en tu propiedad o en tu vehículo.");
return 1;
}
CMD:tarifa(playerid, params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "{999999}No estás conduciendo.");
if(!PLAYER_WORKS[playerid][WORK_TAXI]) return SendClientMessage(playerid, -1, "{999999}No eres taxista.");
if(PLAYER_TEMP[playerid][pt_WORKING_IN] != WORK_TAXI) return SendClientMessage(playerid, -1, "{999999}No estás de servicio como taxista.");
new vehicleid = GetPlayerVehicleID(playerid);
if(TAXI_METER_VEHICLE[vehicleid][veh_taxi_meter_ENABLED]) return SendClientMessage(playerid, -1, "{999999}Solo puedes cambiar la tarifa cuando no haya ningún pasajero.");
if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "Error: {C4FF66}/tarifa {FFFFFF}[0-14]");
if(params[0] < 0 || params[0] > 14) return SendClientMessage(playerid, -1, "Error: {C4FF66}/tarifa {FFFFFF}[0-14]");
TAXI_METER_VEHICLE[vehicleid][veh_taxi_meter_PRICE] = params[0];
Auto_SendPlayerAction(playerid, "ajusta el taxímetro.");
UpdatePlayerTaxiMeterTextdraws(playerid);
return 1;
}
CMD:cargar(playerid, params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, -1, "{999999}No estás conduciendo.");
if(!PLAYER_WORKS[playerid][WORK_TRUCK]) return SendClientMessage(playerid, -1, "{999999}No eres camionero.");
if(PLAYER_TEMP[playerid][pt_WORKING_IN] != WORK_TRUCK) return SendClientMessage(playerid, -1, "{999999}No estás de servicio como camionero.");
new vehicleid = GetPlayerVehicleID(playerid);
if(!WORK_VEHICLES[vehicleid][work_vehicle_VALID]) return SendClientMessage(playerid, -1, "{999999}No estás en un camión.");
if(WORK_VEHICLES[vehicleid][work_vehicle_WORK] != WORK_TRUCK) return SendClientMessage(playerid, -1, "{999999}No estás en un camión.");
for(new i = 0; i != sizeof LoadTrucksPoints; i ++)
{
if(IsPlayerInRangeOfPoint(playerid, 3.0, LoadTrucksPoints[i][0], LoadTrucksPoints[i][1], LoadTrucksPoints[i][2]))
{
new Float:angle;
GetVehicleZAngle(vehicleid, angle);
if(angle > 180.0) angle -= 360.0;
if(angle > (LoadTrucksPoints[i][3] - 15.0) && angle < (LoadTrucksPoints[i][3] + 15.0))
{
if(TRUCK_VEHICLE[vehicleid][truck_vehicle_LOADED]) return SendClientMessage(playerid, -1, "{999999}El camión ya está cargado.");
if(TRUCK_VEHICLE[vehicleid][truck_vehicle_LOADING]) return SendClientMessage(playerid, -1, "{999999}El camión ya se está cargando.");
TRUCK_VEHICLE[vehicleid][truck_vehicle_LOADING] = true;
TRUCK_VEHICLE[vehicleid][truck_vehicle_DRIVER_USER_ID] = ACCOUNT_INFO[playerid][ac_ID];
SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
GLOBAL_VEHICLES[vehicleid][gb_vehicle_PARAMS_ENGINE] = 0;
UpdateVehicleParams(vehicleid);
ShowDialog(playerid, DIALOG_SELECT_TRUCK_TYPE);
}
else SendClientMessage(playerid, -1, "{999999}El camión no está correctamente colocado para cargarlo.");
return 1;
}
}
SendClientMessage(playerid, -1, "{CCCCCC}Para cargar el camión colocate en cualquier punto de carga.");
return 1;
}
CMD:salir(playerid, params[])
{
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_CRACK || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL || CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_ARRESTED) return SendClientMessage(playerid, -1, "{999999}Ahora no puedes usar este comando.");
if(PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID] == 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new info_arr[3];
Streamer_GetArrayData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
if(info_arr[0] == PICKUP_TYPE_NONE) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new Float:pos[3];
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_X, pos[0]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Y, pos[1]);
Streamer_GetFloatData(STREAMER_TYPE_PICKUP, PLAYER_TEMP[playerid][pt_LAST_PICKUP_ID], E_STREAMER_Z, pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 1.0, pos[0], pos[1], pos[2])) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
switch(info_arr[0])
{
case PICKUP_TYPE_ENTER_EXIT:
{
if(info_arr[2] == 1) // Está en el Pickup Interior y quiere ir al exterior
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] = -1;
SetPlayerPosEx(playerid, ENTER_EXIT[info_arr[1]][ee_EXT_X], ENTER_EXIT[info_arr[1]][ee_EXT_Y], ENTER_EXIT[info_arr[1]][ee_EXT_Z], ENTER_EXIT[info_arr[1]][ee_EXT_ANGLE], ENTER_EXIT[info_arr[1]][ee_EXT_INTERIOR], ENTER_EXIT[info_arr[1]][ee_EXT_WORLD], false /*ENTER_EXIT[info_arr[1]][ee_EXT_FREEZE]*/);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
StopAudioStreamForPlayer(playerid);
FreezePlayer(playerid);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
case PICKUP_TYPE_PROPERTY:
{
if(info_arr[2] == 1) // Está en el Pickup Interior y quiere ir al exterior
{
CHARACTER_INFO[playerid][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA] = 0;
PLAYER_TEMP[playerid][pt_PROPERTY_INDEX] = -1;
SetPlayerPosEx(playerid, PROPERTY_INFO[info_arr[1]][property_EXT_X], PROPERTY_INFO[info_arr[1]][property_EXT_Y], PROPERTY_INFO[info_arr[1]][property_EXT_Z], PROPERTY_INFO[info_arr[1]][property_EXT_ANGLE], PROPERTY_INFO[info_arr[1]][property_EXT_INTERIOR], 0, false /*PROPERTY_INFO[info_arr[1]][property_EXT_FREEZE]*/, false);
SetPlayerSpecialAction(playerid, SPECIAL_ACTION_NONE);
StopAudioStreamForPlayer(playerid);
FreezePlayer(playerid);
}
else ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
default: ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
}
return 1;
}
CMD:gasolina(playerid, params[])
{
if(GetPlayerVirtualWorld(playerid) != 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(GetPlayerInterior(playerid) != 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return SendClientMessage(playerid, 0x999999AA, "No estás en nigún vehículo.");
new vehicleid = GetPlayerVehicleID(playerid), modelid = GetVehicleModel(vehicleid);
if(!VEHICLE_INFO[modelid - 400][vehicle_info_VALID]) return SendClientMessage(playerid, 0x999999AA, "No puedes repostar este vehículo.");
new fuel_station = -1;
for(new i = 0; i < sizeof Fuel_Stations; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, Fuel_Stations[i][0], Fuel_Stations[i][1], Fuel_Stations[i][2]))
{
fuel_station = i;
break;
}
}
if(fuel_station == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(GLOBAL_VEHICLES[vehicleid][gb_vehicle_PARAMS_ENGINE])
{
SendClientMessage(playerid, -1, "{999999}Por favor, para primero el motor del vehículo.");
return 1;
}
if(!sscanf(params, "d", params[0]))
{
new Float:ammount = float(params[0]);
if(ammount < 0.0) return SendClientMessage(playerid, -1, "Error: {C4FF66}/gasolina {FFFFFF}[litros / lleno]");
if(ammount + GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS] > GLOBAL_VEHICLES[vehicleid][gb_vehicle_MAX_GAS]) ammount = GLOBAL_VEHICLES[vehicleid][gb_vehicle_MAX_GAS] - GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS];
new price = floatround( floatmul(ammount, 9.0) );
if(CHARACTER_INFO[playerid][ch_CASH] >= price)
{
GivePlayerCash(playerid, -price);
GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS] += ammount;
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "Cantidad: {ede890}%.1f Litros {FFFFFF}Precio: {ede890}%s$.", ammount, number_format_thousand(price));
Auto_SendPlayerAction(playerid, "ha repostado el vehículo.");
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder repostar {588dc9}%.1f.", number_format_thousand(price - CHARACTER_INFO[playerid][ch_CASH]), ammount);
}
return 1;
}
new text[24];
if(!sscanf(params, "s[24]", text))
{
if(!strcmp(text, "lleno", true))
{
new Float:ammount = floatsub(GLOBAL_VEHICLES[vehicleid][gb_vehicle_MAX_GAS], GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS]);
new price = floatround( floatmul(ammount, 9.0) );
if(CHARACTER_INFO[playerid][ch_CASH] >= price)
{
GivePlayerCash(playerid, -price);
GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS] = GLOBAL_VEHICLES[vehicleid][gb_vehicle_MAX_GAS];
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "Cantidad: {ede890}%.1f Litros {FFFFFF}Precio: {ede890}%s$.", ammount, number_format_thousand(price));
Auto_SendPlayerAction(playerid, "ha repostado el vehículo.");
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder repostar {588dc9}%.1f.", number_format_thousand(price - CHARACTER_INFO[playerid][ch_CASH]), ammount);
}
}
else SendClientMessage(playerid, -1, "Error: {C4FF66}/gasolina {FFFFFF}[litros / lleno]");
return 1;
}
SendClientMessage(playerid, -1, "Error: {C4FF66}/gasolina {FFFFFF}[litros / lleno]");
return 1;
}
CMD:bidon(playerid, params[])
{
if(GetPlayerVirtualWorld(playerid) != 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(GetPlayerInterior(playerid) != 0) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
new fuel_station = -1;
for(new i = 0; i < sizeof Fuel_Stations; i++)
{
if(IsPlayerInRangeOfPoint(playerid, 5.0, Fuel_Stations[i][0], Fuel_Stations[i][1], Fuel_Stations[i][2]))
{
fuel_station = i;
break;
}
}
if(fuel_station == -1) return ShowPlayerMessage(playerid, "No estás en el lugar adecuado.", 3);
if(!PLAYER_MISC[playerid][MISC_FUEL_DRUM])
{
if(CHARACTER_INFO[playerid][ch_CASH] >= 250)
{
GivePlayerCash(playerid, -250);
PLAYER_MISC[playerid][MISC_FUEL_DRUM] = 20;
SendClientMessage(playerid, -1, "{CCCCCC}Has comprado un bidón de gasolina de 20 litros por 250$, usa {C4FF66}/vertir {CCCCCC}para repostar un vehículo.");
}
else SendClientMessage(playerid, -1, "{999999}No tienes suficiente dinero para comprar el bidón.");
}
else
{
if(PLAYER_MISC[playerid][MISC_FUEL_DRUM] == 20) return SendClientMessage(playerid, -1, "{999999}Tu bidón de gasolina está lleno.");
new ammount = (20 - PLAYER_MISC[playerid][MISC_FUEL_DRUM]);
new price = (13 * ammount);
if(CHARACTER_INFO[playerid][ch_CASH] >= price)
{
GivePlayerCash(playerid, -price);
PLAYER_MISC[playerid][MISC_FUEL_DRUM] += ammount;
SendClientMessageEx(playerid, -1, "{CCCCCC}Has llenado tu bidón de gasolina con 20 litros por %d$, usa {C4FF66}/vertir {CCCCCC}para repostar un vehículo.", price);
}
else SendClientMessage(playerid, -1, "{999999}No tienes suficiente dinero para comprar el bidón.");
}
return 1;
}
CMD:vertir(playerid, params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, -1, "{999999}Tienes que estar fuera del vehículo para vertir el bidón.");
new vehicleid = GetPlayerCameraTargetVehicle(playerid);
if(vehicleid == INVALID_VEHICLE_ID) return SendClientMessage(playerid, -1, "{999999}No estás cerca de ningún vehículo.");
if(GLOBAL_VEHICLES[vehicleid][gb_vehicle_PARAMS_ENGINE])
{
SendClientMessage(playerid, -1, "{999999}Por favor, para primero el motor del vehículo.");
return 1;
}
if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, -1, "Error: {C4FF66}/vetir {FFFFFF}[Cantidad de litros]");
if(params[0] <= 0) return SendClientMessage(playerid, -1, "{999999}Cantidad de litros no válida.");
if(params[0] > PLAYER_MISC[playerid][MISC_FUEL_DRUM]) return SendClientMessageEx(playerid, -1, "{999999}Solo tienes %d.0 litros en el bidón.", PLAYER_MISC[playerid][MISC_FUEL_DRUM]);
new Float:ammount = float(params[0]);
if(ammount + GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS] > GLOBAL_VEHICLES[vehicleid][gb_vehicle_MAX_GAS]) ammount = GLOBAL_VEHICLES[vehicleid][gb_vehicle_MAX_GAS] - GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS];
PLAYER_MISC[playerid][MISC_FUEL_DRUM] -= floatround(ammount);
GLOBAL_VEHICLES[vehicleid][gb_vehicle_GAS] += ammount;
SendClientMessageEx(playerid, -1, "{CCCCCC}Has vertido %.1f litros del bidón, te quedan %d.0 litros.", ammount, PLAYER_MISC[playerid][MISC_FUEL_DRUM]);
Auto_SendPlayerAction(playerid, "ha repostado el vehículo.");
return 1;
}
SendPlayerAction(playerid, action[])
{
new str_text[190];
format(str_text, sizeof str_text, "* %s %s", PLAYER_TEMP[playerid][pt_RP_NAME], action);
ProxDetector(playerid, 15.0, str_text, 0xC2A2DAFF, 0xC2A2DAFF, 0xC2A2DAFF, 0xC2A2DAFF, 0xC2A2DAFF, 85);
return 1;
}
Auto_SendPlayerAction(playerid, const action[])
{
new str_text[145];
format(str_text, 145, "* %s %s", PLAYER_TEMP[playerid][pt_RP_NAME], action);
ProxDetector(playerid, 15.0, str_text, 0xC2A2DAFF, 0xC2A2DAFF, 0xC2A2DAFF, 0xC2A2DAFF, 0xC2A2DAFF);
return 1;
}
#define DEFAULT_DIALOG_CAPTION SERVER_NAME
ShowDialog(playerid, dialogid)
{
PLAYER_TEMP[playerid][pt_PLAYER_WAITING_MP3_HTTP] = false;
PLAYER_TEMP[playerid][pt_DIALOG_RESPONDED] = false;
switch(dialogid)
{
case DIALOG_REGISTER:
{
new dialog[140];
format(dialog, sizeof dialog, "Esta cuenta no está registrada.\nIngrese su contraseña a continuación.\n\nLa contraseña debe contener entre %d-%d caracteres.", MIN_PASS_LENGTH, MAX_PASS_LENGTH);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_PASSWORD, ""DEFAULT_DIALOG_CAPTION" - Registrarse", dialog, ">>", "-");
return 1;
}
case DIALOG_LOGIN: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_PASSWORD, ""DEFAULT_DIALOG_CAPTION" - Ingresar", "Bienvenido de nuevo.\nIngrese su contraseña para acceder.", ">>", "-");
case DIALOG_REGISTER_EMAIL: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, ""DEFAULT_DIALOG_CAPTION" - Correo electrónico", "Ingresa una dirección de correlo electrónico válida.\n\nEs importante que tengas acceso al correo ya que\nserá la única manera de recuperar tu contraseña.\n\nTranquilo, no recibirás ningún tipo de SPAM ni suscripciones.", ">>", "-");
case DIALOG_FOOD_PIZZA: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, ""DEFAULT_DIALOG_CAPTION" - Comida rápida", DIALOG_FOOD_PIZZA_String, "Pedir", "Salir");
case DIALOG_FOOD_CLUCKIN: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, ""DEFAULT_DIALOG_CAPTION" - Comida rápida", DIALOG_FOOD_CLUCKIN_String, "Pedir", "Salir");
case DIALOG_FOOD_BURGER: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, ""DEFAULT_DIALOG_CAPTION" - Comida rápida", DIALOG_FOOD_BURGER_String, "Pedir", "Salir");
case DIALOG_PLAYER_TOYS:
{
new dialog[96 * (MAX_PLAYER_ATTACHED_OBJECTS + 2)], line_str[64];
format(dialog, sizeof dialog, "{CCCCCC}Accesorio\t{90C3D4}Colocado\n");
for(new i; i != MAX_PLAYER_ATTACHED_OBJECTS; i ++)
{
if(ACCOUNT_INFO[playerid][ac_SU])
{
if(PLAYER_TOYS[playerid][i][player_toy_VALID])
{
if(PLAYER_TOYS[playerid][i][player_toy_ATTACHED]) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}Sí\n", i + 1, PLAYER_TOYS[playerid][i][player_toy_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}No\n", i + 1, PLAYER_TOYS[playerid][i][player_toy_NAME]);
}
else format(line_str, sizeof line_str, "{666666}%d. Slot vacío\n", i + 1);
}
else
{
if(i >= MAX_NU_TOYS)
{
if(PLAYER_TOYS[playerid][i][player_toy_VALID]) format(line_str, sizeof line_str, "{666666}%d. %s\t{90C3D4}No\n", i + 1, PLAYER_TOYS[playerid][i][player_toy_NAME]);
else format(line_str, sizeof line_str, "{666666}%d. Slot vacío\n", i + 1);
}
else
{
if(PLAYER_TOYS[playerid][i][player_toy_VALID])
{
if(PLAYER_TOYS[playerid][i][player_toy_ATTACHED]) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}Sí\n", i + 1, PLAYER_TOYS[playerid][i][player_toy_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}No\n", i + 1, PLAYER_TOYS[playerid][i][player_toy_NAME]);
}
else format(line_str, sizeof line_str, "{666666}%d. Slot vacío\n", i + 1);
}
}
strcat(dialog, line_str);
}
strcat(dialog, "{c4290d}- Eliminar todo\n");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, ""DEFAULT_DIALOG_CAPTION" - Mis accesorios", dialog, ">>", "-");
return 1;
}
case DIALOG_PLAYER_TOY_MENU:
{
if(!PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_VALID])
{
SendClientMessage(playerid, -1, "{CCCCCC}Este slot está vacío, puedes comprar accesorios en cualquier tienda de ropa.");
return 1;
}
new caption[48];
format(caption, sizeof caption, "{CCCCCC}Accesorio '%s'", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
new dialog[256];
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED]) format(dialog, sizeof dialog, "{CCCCCC}Guardar este accesorio\n{CCCCCC}Cambiar el nombre del accesorio\n{CCCCCC}Configurar el accesorio\n{CCCCCC}Color primario\n{CCCCCC}Color secundario\n{CCCCCC}Eliminar este accesorio");
else
{
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_BONE] == -1)
{
SendClientMessage(playerid, -1, "{CCCCCC}Este accesorio es nuevo y aún no ha sido configurado, configuralo desde 'Configurar el accesorio'.");
format(dialog, sizeof dialog, "{999999}Colocarte el accesorio\n{CCCCCC}Cambiar el nombre del accesorio\n{CCCCCC}Configurar el accesorio\n{CCCCCC}Color primario\n{CCCCCC}Color secundario\n{CCCCCC}Eliminar este accesorio");
}
else format(dialog, sizeof dialog, "{CCCCCC}Colocarte el accesorio\n{CCCCCC}Cambiar el nombre del accesorio\n{CCCCCC}Configurar el accesorio\n{CCCCCC}Color primario\n{CCCCCC}Color secundario\n{CCCCCC}Eliminar este accesorio");
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_TOY_EDIT_NAME:
{
new dialog[145];
format(dialog, sizeof dialog, "Nombre actual: \"%s\"\nIndica el nuevo nombre:", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "{CCCCCC}Accesorio - Modificar nombre", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_TOY_CONFIRMDELETE:
{
new dialog[145];
format(dialog, sizeof dialog, "¿Estás seguro que quieres borrar el siguiente accesorio?\n\t\"%s\"", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "{CCCCCC}Accesorio - Eliminar accesorio", dialog, "Eliminar", "Atrás");
return 1;
}
case DIALOG_PLAYER_TOY_SELECT_BONE:
{
SendClientMessage(playerid, -1, "{CCCCCC}Selecciona en que parte del cuerpo quieres colocar este accesorio.");
new caption[48];
format(caption, sizeof caption, "{CCCCCC}Accesorio '%s'", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
new dialog[45 * sizeof Toys_Bones], line_str[45];
for(new i = 0; i != sizeof Toys_Bones; i ++)
{
format(line_str, sizeof(line_str), "{90C3D4}%d. %s\n", i + 1, Toys_Bones[i]);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_TOY_EDIT_BONE:
{
new caption[48];
format(caption, sizeof caption, "{CCCCCC}Accesorio '%s'", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
new dialog[145];
format(dialog, sizeof(dialog), "¿Quieres cambiar la parte del cuerpo donde se coloca este accesorio?\nActualmente está colocado en: %s", Toys_Bones[ PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_BONE] - 1 ]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, dialog, "Sí", "No");
return 1;
}
case DIALOG_PLAYER_TOY_COLOR_1:
{
SendClientMessage(playerid, -1, "Selecciona el color 0 para poner el color original del accesorio.");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Selecciona color", DIALOG_CREATE_CREW_COLOR_String, "Continuar", "Atrás");
return 1;
}
case DIALOG_PLAYER_TOY_COLOR_2:
{
SendClientMessage(playerid, -1, "Selecciona el color 0 para poner el color original del accesorio.");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Selecciona color", DIALOG_CREATE_CREW_COLOR_String, "Continuar", "Atrás");
return 1;
}
case DIALOG_PLAYER_TOY_DELETE_ALL: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Accesorios - Eliminar todo", "¿Está seguro de que quiere eliminar todos sus accesorios?\nEsta opción no se puede deshacer.", "Eliminar", "Atrás");
case DIALOG_BANK:
{
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0) return SendClientMessage(playerid, -1, "{999999}No tienes cuenta bancaria.");
new caption[80];
format(caption, sizeof caption, "Mi cuenta bancaria: {90C3D4}%s {FFFFFF}- Balance actual: {90C3D4}%s$", number_format_thousand(BANK_ACCOUNT[playerid][bank_account_ID]), number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption,
"{CCCCCC}1. Retirar dinero\n{CCCCCC}2. Depositar dinero\n{CCCCCC}3. Transferir dinero\n{CCCCCC}4. Últimas transacciones",
">>", "-");
return 1;
}
case DIALOG_CREATE_BANK_ACCOUNT:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, ""DEFAULT_DIALOG_CAPTION" - Crear cuenta bancaria",
"{CCCCCC}Bienvenido, actualmente no tienes una cuenta bancaria.\n\nPara disfrutar de los beneficios de una cuenta bancaria\npuedes crearla ahora mismo con un depósito minimo de 500$.",
"Crear", "Salir");
return 1;
}
case DIALOG_BANK_WITHDRAW:
{
new dialog[100];
format(dialog, sizeof dialog, "{CCCCCC}Balance actual: {90C3D4}%s$\n{CCCCCC}¿Cuánto quiere retirar?", number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Banco - Retirar", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_BANK_DEPOSIT:
{
new dialog[100];
format(dialog, sizeof dialog, "{CCCCCC}Dinero actual: {90C3D4}%s$\n{CCCCCC}¿Cuánto quiere depositar?", number_format_thousand(CHARACTER_INFO[playerid][ch_CASH]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Banco - Depositar", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_BANK_TRANSFER: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Banco - Transferir", "Indica a que número de cuenta quiere transferir dinero.", ">>", "Atrás");
case DIALOG_BANK_TRANSFER_SEND:
{
new dialog[170];
format(dialog, sizeof dialog, "{CCCCCC}Transferir a cuenta: {90C3D4}%s\n{CCCCCC}Balance actual: {90C3D4}%s$\n\n{CCCCCC}¿Cuánto quiere transferir?", number_format_thousand(PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT]), number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Banco - Transferir", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_BANK_TRANSACTIONS:
{
new DB_Query[140];
format(DB_Query, sizeof DB_Query, "SELECT * FROM `BANK_TRANSACTIONS` WHERE `ID_ACCOUNT` = '%d' ORDER BY `DATE` DESC LIMIT %d;", BANK_ACCOUNT[playerid][bank_account_ID], MAX_BANK_TRANSACTIONS_DIALOG);
mysql_tquery(SMF_DATABASE, DB_Query, "BankTransactionsLoaded", "i", playerid);
return 1;
}
case DIALOG_247_LIST: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, ""DEFAULT_DIALOG_CAPTION" - 24/7", DIALOG_247_LIST_String, ">>", "-");
case DIALOG_PLAYER_POCKET:
{
new dialog[50 * (MAX_PLAYER_POCKET_OBJECTS + 2)], line_str[50];
for(new i = 0; i != MAX_PLAYER_POCKET_OBJECTS; i ++)
{
if(PLAYER_POCKET[playerid][i][player_pocket_VALID])
{
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\n", i + 1, PLAYER_POCKET[playerid][i][player_pocket_object_NAME]);
strcat(dialog, line_str);
}
else
{
format(line_str, sizeof line_str, "{666666}%d. Slot vacío\n", i + 1);
strcat(dialog, line_str);
}
}
strcat(dialog, "{c4290d}- Eliminar todo\n");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, ""DEFAULT_DIALOG_CAPTION" - Alimentos", dialog, ">>", "-");
return 1;
}
case DIALOG_PLAYER_POCKET_OPTIONS:
{
new caption[40];
format(caption, sizeof caption, "Alimento - %s", PLAYER_POCKET[playerid][PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]][player_pocket_object_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, "{CCCCCC}1. Consumir\n{CCCCCC}2. Eliminar", ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_POCKET_DELETE_ALL: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Alimentos - Eliminar todo", "¿Está seguro de que quiere eliminar todos sus alimentos?\nEsta opción no se puede deshacer y perderás todos lo que haya.", "Eliminar", "Atrás");
case DIALOG_PHONE:
{
new caption[50];
format(caption, sizeof caption, "Mi teléfono - %d", PLAYER_PHONE[playerid][player_phone_NUMBER]);
new dialog[200];
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_ON) format(dialog, sizeof dialog, "{CCCCCC}1. Agenda\n{CCCCCC}2. Llamar\n{CCCCCC}3. Enviar mensaje\n{CCCCCC}4. Ver mensajes recibidos\n{CCCCCC}5. Ver mensajes enviados\n{CCCCCC}6. Tienda de compra y venta\n{CCCCCC}7. Apagar teléfono");
else format(dialog, sizeof dialog, "{CCCCCC}1. Encender teléfono\n{999999}2. Agenda\n{999999}3. Llamar\n{999999}4. Enviar mensaje\n{999999}5. Ver mensajes recibidos\n{999999}6. Ver mensajes enviados\n{999999}7. Tienda de compra y venta");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "-");
return 1;
}
case DIALOG_PHONE_BOOK:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[80 * (MAX_PHONE_CONTACTS + 3)];
format(dialog, sizeof dialog, "{CCCCCC}Nombre\t{90C3D4}Número\n");
new line_str[80], contacts, listitem;
for(new i = 0; i != MAX_PHONE_CONTACTS; i++ )
{
if(!PLAYER_PHONE_BOOK[playerid][i][phone_book_contact_VALID]) continue;
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}%d\n", listitem + 1, PLAYER_PHONE_BOOK[playerid][i][phone_book_contact_NAME], PLAYER_PHONE_BOOK[playerid][i][phone_book_contact_PHONE_NUMBER]);
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
contacts ++; listitem ++;
}
if(contacts < MAX_PHONE_CONTACTS)
{
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = MAX_PHONE_CONTACTS + 10;
strcat(dialog, "{CCCCCC}+ Añadir contacto\n"); listitem ++;
}
if(contacts > 0)
{
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = MAX_PHONE_CONTACTS + 20;
strcat(dialog, "{c4290d}- Eliminar todo\n"); listitem ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Mi teléfono - Agenda", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PHONE_BOOK_ADD_NUMBER: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Agenda - Añadir contacto", "Está añadiendo un nuevo contacto en su agenda.\nIndique el número de teléfono del nuevo contacto.", ">>", "Atrás");
case DIALOG_PHONE_BOOK_ADD_NAME: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Agenda - Añadir contacto", "Está añadiendo un nuevo contacto en su agenda.\nIndique el nombre del nuevo contacto.", ">>", "Atrás");
case DIALOG_PHONE_BOOK_OPTIONS:
{
new caption[40];
format(caption, sizeof caption, "Contacto - %s", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, "{CCCCCC}1. Llamar\n{CCCCCC}2. Enviar mensaje\n{CCCCCC}3. Cambiar nombre del contacto\n{CCCCCC}4. Eliminar este contacto", ">>", "Atrás");
return 1;
}
case DIALOG_PHONE_BOOK_CHANGE_NAME:
{
new caption[40];
format(caption, sizeof caption, "Contacto - %s", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME]);
new dialog[140];
format(dialog, sizeof dialog, "Nombre actual: %s\nTeléfono: %d\n\nIndica el nuevo nombre de este contacto.", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME], PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, dialog, "Cambiar", "Atrás");
return 1;
}
case DIALOG_PHONE_BOOK_CONFIRM_DELET:
{
new caption[40];
format(caption, sizeof caption, "Contacto - %s", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME]);
new dialog[140];
format(dialog, sizeof dialog, "¿Está seguro de que desea eliminar el siguiente contacto?\n\nNombre: %s\nTeléfono: %d", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME], PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, dialog, "Eliminar", "Atrás");
return 1;
}
case DIALOG_PHONE_BOOK_DELETE_ALL: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Agenda - Eliminar todo", "¿Está seguro de que quiere eliminar todos sus contactos?\nEsta opción no se puede deshacer y perderás todos los contactos guardados.", "Eliminar", "Atrás");
case DIALOG_PHONE_CALL_NUMBER: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Mi teléfono - Realizar una llamada", "¿A quién quieres llamar?\nIndique el número al que desea llamar.", ">>", "Atrás");
case DIALOG_PHONE_SMS_NUMBER: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Mi teléfono - Enviar mensaje", "¿A quién quieres enviarle el mensaje?\nIndique el número al que desea enviar el mensaje.", ">>", "Atrás");
case DIALOG_PHONE_SMS_MESSAGE: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Mi teléfono - Enviar mensaje", "Escribe el mensaje que quieres enviar\nCaracteres: 1-64.", ">>", "Atrás");
case DIALOG_PHONE_BOOK_SEND_MESSAGE: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Mi teléfono - Enviar mensaje", "Escribe el mensaje que quieres enviar\nCaracteres: 1-64.", ">>", "Atrás");
case DIALOG_PHONE_SENT_MESSAGES:
{
new DB_Query[140];
format(DB_Query, sizeof DB_Query, "SELECT * FROM `PHONE_MESSAGES` WHERE `FROM` = '%d' ORDER BY `DATE` DESC LIMIT 10;", PLAYER_PHONE[playerid][player_phone_NUMBER]);
mysql_tquery(SMF_DATABASE, DB_Query, "PhoneLoadSentMessages", "i", playerid);
return 1;
}
case DIALOG_PHONE_RECEIVED_MESSAGES:
{
new DB_Query[140];
format(DB_Query, sizeof DB_Query, "SELECT * FROM `PHONE_MESSAGES` WHERE `TO` = '%d' ORDER BY `DATE` DESC LIMIT 10;", PLAYER_PHONE[playerid][player_phone_NUMBER]);
mysql_tquery(SMF_DATABASE, DB_Query, "PhoneLoadRecievedMessages", "i", playerid);
return 1;
}
case DIALOG_CONFIRM_BUY_PROPERTY:
{
new dialog[220];
if(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXTRA])
{
format(dialog, sizeof dialog, "Coste de la propiedad: %d "SERVER_COIN"\nSeguro: NO\nMonedas "SERVER_COIN" actuales: %d "SERVER_COIN"\nMonedas "SERVER_COIN" tras la compra: %d "SERVER_COIN"\n\n¿De verdad desea comprar esta propiedad?", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX] ][property_EXTRA], ACCOUNT_INFO[playerid][ac_SD], ACCOUNT_INFO[playerid][ac_SD] - PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX] ][property_EXTRA]);
}
else
{
format(dialog, sizeof dialog, "Precio de la propiedad: %s$\nSeguro: %s$\nBalance actual: %s$\nBalance tras la compra: %s$\n\n¿De verdad desea comprar esta propiedad?", number_format_thousand(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX] ][property_PRICE]), number_format_thousand(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX] ][property_PRICE_BASE] / 200), number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE]), number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE] - PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX] ][property_PRICE]));
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, ""DEFAULT_DIALOG_CAPTION" - Comprar propiedad", dialog, "Comprar", "Salir");
return 1;
}
case DIALOG_PLAYER_GPS:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, ""DEFAULT_DIALOG_CAPTION" - GPS", "- Mis Lugares\n- Mis Propiedades\n- Mis Vehículos\n- Lugares de Interés\n- Trabajos\n- Ver mapa", ">>", "-");
return 1;
}
case DIALOG_PLAYER_GPS_PLAYER:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[90 * (MAX_PLAYER_GPS_SAVES + 2)];
format(dialog, sizeof dialog, "{CCCCCC}Lugar\t{FF846A}Distancia\n");
new line_str[90], sites, listitem;
for(new i = 0; i != MAX_PLAYER_GPS_SAVES; i++ )
{
if(!PLAYER_GPS[playerid][i][player_gps_VALID]) continue;
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}%.2f Km\n", listitem + 1, PLAYER_GPS[playerid][listitem][player_gps_NAME], (GetPlayerDistanceFromPoint(playerid, PLAYER_GPS[playerid][listitem][player_gps_X], PLAYER_GPS[playerid][listitem][player_gps_Y], PLAYER_GPS[playerid][listitem][player_gps_Z]) * 0.01));
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
sites ++; listitem ++;
}
if(sites < MAX_PLAYER_GPS_SAVES)
{
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = MAX_PLAYER_GPS_SAVES + 10;
strcat(dialog, "{CCCCCC}+ Añadir lugar actual\n"); listitem ++;
}
if(sites > 0)
{
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = MAX_PLAYER_GPS_SAVES + 20;
strcat(dialog, "{c4290d}- Eliminar todo\n"); listitem ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Mis lugares", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_PLAYER_ADD:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "GPS - Añadir lugar", "Tu posición actual será guardada en este lugar para ir más tarde.\nIndica el nombre de este lugar para guardarlo.", ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_DELETE_ALL: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Mis lugares - Eliminar todo", "¿Está seguro de que quiere eliminar todos sus lugares?\nEsta opción no se puede deshacer y perderás todos los lugares guardados.", "Eliminar", "Atrás");
case DIALOG_PLAYER_GPS_PLAYER_OPTION:
{
new caption[40];
format(caption, sizeof caption, "GPS - %s", PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, "{CCCCCC}1. Marcar coordenadas en el GPS\n{CCCCCC}2. Cambiar nombre de este lugar\n{CCCCCC}3. Eliminar este lugar del GPS", ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_CHANGE_NAME:
{
new dialog[90];
format(dialog, sizeof dialog, "Nombre del lugar: %s\nIndica el nuevo nombre para este lugar.", PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "GPS - Cambiar nombre de un lugar", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_CONFIRM_DELET:
{
new dialog[95];
format(dialog, sizeof dialog, "Nombre del lugar: %s\n¿Está seguro de que quiere borrarlo del GPS?", PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "GPS - Eliminar un lugar", dialog, "Eliminar", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITES:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "GPS - Lugares de Interés", "- Hospitales\n- Tiendas de Ropa\n- Tiendas 24/7\n- Restaurantes\n- Bancos\n- Cajeros\n- Gasolineras\n- Concesionarios\n- Gobierno San Andreas\n- Policías\n- "SERVER_SHORT_NAME" Tuning Club", ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_WORKS:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[85 * (sizeof(work_info) + 1)], listitem;
format(dialog, sizeof dialog, "Trabajo\tNivel\tDistancia\n");
for(new i = 1; i != sizeof work_info; i ++)
{
if(work_info[i][work_info_TYPE] == WORK_TYPE_FAMILY) continue;
new line_str[85];
format(line_str, sizeof line_str, "{CCCCCC}%c%s\t{CCCCCC}%d\t{CCCCCC}%.2f Km\n", toupper(work_info[i][work_info_NAME][0]), work_info[i][work_info_NAME][1], work_info[i][work_info_LEVEL], (GetPlayerDistanceFromPoint(playerid, obtain_work_coords[i][obtain_work_MAP_ICON_X], obtain_work_coords[i][obtain_work_MAP_ICON_Y], obtain_work_coords[i][obtain_work_MAP_ICON_Z]) * 0.01));
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Trabajos", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_TRABAJOS_TELEPORTS:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[85 * (sizeof(work_info) + 1)], listitem;
format(dialog, sizeof dialog, "Trabajo\tNivel\n");
for(new i = 1; i != sizeof work_info; i ++)
{
new line_str[85];
format(line_str, sizeof line_str, "{CCCCCC}%c%s (id: %d)\t{CCCCCC}%d\n", toupper(work_info[i][work_info_NAME][0]), work_info[i][work_info_NAME][1], i, work_info[i][work_info_LEVEL]);
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Trabajos", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_0: //Hospitales
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Hospitales", DIALOG_PLAYER_GPS_SITE_0_String, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_1: //Tiendas de ropa
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[90 * (MAX_LISTITEMS + 1)];
format(dialog, sizeof dialog, "Lugar\tDistancia\n");
new line_str[90], sites;
for(new i = 0; i != sizeof(ENTER_EXIT); i++ )
{
if(sites >= MAX_LISTITEMS) break;
if(ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_BINCO && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_SUBURBAN && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_PROLAPS && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_DIDIER_SACHS && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_VICTIM && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_ZIP) continue;
format(line_str, sizeof line_str, "{FFFFFF}%d. %s\t{CCCCCC}%.2f Km\n", sites + 1, ENTER_EXIT[i][ee_NAME], (GetPlayerDistanceFromPoint(playerid, ENTER_EXIT[i][ee_EXT_X], ENTER_EXIT[i][ee_EXT_Y], ENTER_EXIT[i][ee_EXT_Z]) * 0.01));
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][sites] = i;
sites ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Tiendas de ropa", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_2: //Tiendas 24 horas
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[90 * (MAX_LISTITEMS + 1)];
format(dialog, sizeof dialog, "Lugar\tDistancia\n");
new line_str[90], sites;
for(new i = 0; i != sizeof(ENTER_EXIT); i++ )
{
if(sites >= MAX_LISTITEMS) break;
if(ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_247) continue;
format(line_str, sizeof line_str, "{FFFFFF}%d. %s\t{CCCCCC}%.2f Km\n", sites + 1, ENTER_EXIT[i][ee_NAME], (GetPlayerDistanceFromPoint(playerid, ENTER_EXIT[i][ee_EXT_X], ENTER_EXIT[i][ee_EXT_Y], ENTER_EXIT[i][ee_EXT_Z]) * 0.01));
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][sites] = i;
sites ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Tiendas 24/7", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_3: //Comida rapida
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[90 * (MAX_LISTITEMS + 1)];
format(dialog, sizeof dialog, "Lugar\tDistancia\n");
new line_str[90], sites;
for(new i = 0; i != sizeof(ENTER_EXIT); i++ )
{
if(sites >= MAX_LISTITEMS) break;
if(ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_PIZZA && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_CLUCKIN_BELL && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_BURGER_SHOT) continue;
format(line_str, sizeof line_str, "{FFFFFF}%d. %s\t{CCCCCC}%.2f Km\n", sites + 1, ENTER_EXIT[i][ee_NAME], (GetPlayerDistanceFromPoint(playerid, ENTER_EXIT[i][ee_EXT_X], ENTER_EXIT[i][ee_EXT_Y], ENTER_EXIT[i][ee_EXT_Z]) * 0.01));
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][sites] = i;
sites ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Restaurantes", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_4: //Bancos
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[90 * (MAX_LISTITEMS + 1)];
format(dialog, sizeof dialog, "Lugar\tDistancia\n");
new line_str[90], sites;
for(new i = 0; i != sizeof(ENTER_EXIT); i++ )
{
if(sites >= MAX_LISTITEMS) break;
if(ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_BANK_LS && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_BANK_SF && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_BANK_LV) continue;
format(line_str, sizeof line_str, "{FFFFFF}%d. %s\t{CCCCCC}%.2f Km\n", sites + 1, ENTER_EXIT[i][ee_NAME], (GetPlayerDistanceFromPoint(playerid, ENTER_EXIT[i][ee_EXT_X], ENTER_EXIT[i][ee_EXT_Y], ENTER_EXIT[i][ee_EXT_Z]) * 0.01));
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][sites] = i;
sites ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Bancos", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_5: //Cajeros
{
new dialog[90 * (sizeof(ATM_BANK) + 1)];
format(dialog, sizeof dialog, "Lugar\tDistancia\n");
new line_str[90], sites;
for(new i = 0; i != sizeof(ATM_BANK); i++ )
{
format(line_str, sizeof line_str, "{FFFFFF}Cajero %d\t{CCCCCC}%.2f Km\n", sites + 1, (GetPlayerDistanceFromPoint(playerid, ATM_BANK[i][atm_X], ATM_BANK[i][atm_Y], ATM_BANK[i][atm_Z]) * 0.01));
strcat(dialog, line_str);
sites ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Cajeros", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_6: //Gasolineras
{
new dialog[90 * (sizeof(Fuel_Stations) + 1)];
format(dialog, sizeof dialog, "Lugar\tDistancia\n");
new line_str[90], sites;
for(new i = 0; i != sizeof(Fuel_Stations); i++ )
{
format(line_str, sizeof line_str, "{FFFFFF}Gasolinera %d\t%.2f Km\n", sites + 1, (GetPlayerDistanceFromPoint(playerid, Fuel_Stations[i][0], Fuel_Stations[i][1], Fuel_Stations[i][2]) * 0.01));
strcat(dialog, line_str);
sites ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Gasolineras", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_7: //Concesionarios
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Concesionarios", DIALOG_PLAYER_GPS_SITE_7_String, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_SITE_8: //Policias
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[90 * (MAX_LISTITEMS + 1)];
format(dialog, sizeof dialog, "Lugar\tDistancia\n");
new line_str[90], sites;
for(new i = 0; i != sizeof(ENTER_EXIT); i++ )
{
if(sites >= MAX_LISTITEMS) break;
if(ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_POLICE_LS && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_POLICE_SF && ENTER_EXIT[i][ee_INTERIOR_TYPE] != INTERIOR_POLICE_LV) continue;
format(line_str, sizeof line_str, "{FFFFFF}%d. %s\t%.2f Km\n", sites + 1, ENTER_EXIT[i][ee_NAME], (GetPlayerDistanceFromPoint(playerid, ENTER_EXIT[i][ee_EXT_X], ENTER_EXIT[i][ee_EXT_Y], ENTER_EXIT[i][ee_EXT_Z]) * 0.01));
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][sites] = i;
sites ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Policías", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_GPS_PROPERTIES:
{
for(new i = 0; i != MAX_SU_PROPERTIES; i ++) PLAYER_TEMP[playerid][pt_PLAYER_GPS_SELECTED_PROPERTY][i] = -1;
new DB_Query[250];
format(DB_Query, sizeof DB_Query, "SELECT `PROPERTY_OWNER`.*, `PROPERTY`.`EXT_X`, `PROPERTY`.`EXT_Y`, `PROPERTY`.`EXT_Z` FROM `PROPERTY_OWNER`, `PROPERTY` WHERE `PROPERTY_OWNER`.`ID_USER` = '%d' AND `PROPERTY`.`ID` = `PROPERTY_OWNER`.`ID_PROPERTY`;", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "GPSLoadProperties", "i", playerid);
return 1;
}
case DIALOG_PLAYER_GPS_VEHICLES:
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[115 * (MAX_SU_VEHICLES + 2)], total_vehicles;
format(dialog, sizeof dialog, "Vehículo\tMatrícula\tDistancia\n");
for(new i = 0; i != MAX_VEHICLES; i ++)
{
if(!GLOBAL_VEHICLES[i][gb_vehicle_VALID]) continue;
if(!PLAYER_VEHICLES[i][player_vehicle_VALID]) continue;
if(total_vehicles > MAX_SU_VEHICLES) break;
if(PLAYER_VEHICLES[i][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][total_vehicles] = i;
new Float:pos[3];
GetVehiclePos(i, pos[0], pos[1], pos[2]);
new line_str[115];
if(ACCOUNT_INFO[playerid][ac_SU]) format(line_str, sizeof line_str, "{FFFFFF}%d. %s\t{FFFFFF}%s\t{CCCCCC}%.2f Km\n", total_vehicles + 1, VEHICLE_INFO[ GLOBAL_VEHICLES[i][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME], GLOBAL_VEHICLES[i][gb_vehicle_NUMBER_PLATE], (GetPlayerDistanceFromPoint(playerid, pos[0], pos[1], pos[2]) * 0.01));
else
{
if(PLAYER_VEHICLES[i][player_vehicle_ACCESSIBLE]) format(line_str, sizeof line_str, "{CCCCCC}%d. %s (%d)\t{90C3D4}%s\t{CCCCCC}%.2f Km\n", total_vehicles + 1, VEHICLE_INFO[ GLOBAL_VEHICLES[i][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME], i, GLOBAL_VEHICLES[i][gb_vehicle_NUMBER_PLATE], (GetPlayerDistanceFromPoint(playerid, pos[0], pos[1], pos[2]) * 0.01));
else format(line_str, sizeof line_str, "{666666}%d. %s (%d)\t{666666}%s\t{666666}%.2f Km\n", total_vehicles + 1, VEHICLE_INFO[ GLOBAL_VEHICLES[i][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME], i, GLOBAL_VEHICLES[i][gb_vehicle_NUMBER_PLATE], (GetPlayerDistanceFromPoint(playerid, pos[0], pos[1], pos[2]) * 0.01));
}
strcat(dialog, line_str);
total_vehicles ++;
}
}
if(total_vehicles == 0) strcat(dialog, "{CCCCCC}No tienes vehículos");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Mis vehículos", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PROPERTY_OPTIONS:
{
new caption[40];
format(caption, sizeof caption, "Propiedad - %s", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME]);
new dialog[256];
format(dialog, sizeof dialog, "{CCCCCC}1. Cambiar nombre de la propiedad\n{CCCCCC}2. Echar a todo del mundo de mi propiedad\n{CCCCCC}3. Poner música desde tu MP3\n");
if(PLAYER_CREW[playerid][player_crew_VALID])
{
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_ADD_PROPERTIES])
{
strcat(dialog, "{CCCCCC}4. Pasar a propiedad de banda\n");
}
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PROPERTY_NAME:
{
new dialog[85];
format(dialog, sizeof dialog, "Nombre actual: %s\nIndica el nuevo nombre de la propiedad.", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Propiedad - Cambiar nombre", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_MP3: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "MP3 - Buscar una canción", "Indica el nombre y cantante de la canción que quieres reproducir.\nSe recomienda añadir la palabra 'audio' para canción directa.\n\nPor ejemplo: Lynyrd Skynyrd - Free Bird (Audio)", "Buscar", "Salir");
case DIALOG_BUY_VEHICLE:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_VALID]) return 0;
if(GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_TYPE] != VEHICLE_TYPE_SELL) return 0;
if(!SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_VALID]) return 0;
new dialog[800];
format(dialog, sizeof dialog,
"Vehículo: %s\n\
Nivel necesario: %d\n\
Precio del vehículo: %s$\n\
Velocidad máxima: %d Km/h\n\
Capacidad depósito: %.1f Litros\n\
Espacio maletero: %d\n\
Seguro: %s$\n\n",
VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME],
SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_LEVEL],
number_format_thousand(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE]),
floatround(VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_MAX_VEL]),
VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_MAX_GAS],
VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_BOOT_SLOTS],
number_format_thousand(VEHICLE_INFO[GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_MODELID] - 400][vehicle_info_PRICE] / 100)
);
new str[145];
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_LEVEL] > ACCOUNT_INFO[playerid][ac_LEVEL])
{
format(str, sizeof str, "{FF6633}- Necesitas ser al menos nivel %d para poder comprar este vehículo.", SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_LEVEL]);
strcat(dialog, str);
PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] = INVALID_VEHICLE_ID;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar vehículo", dialog, "Salir", "");
return 1;
}
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_VIP_LEVEL] > ACCOUNT_INFO[playerid][ac_SU])
{
format(str, sizeof str, "{FF6633}- Necesitas membresía VIP%d para poder comprar este vehículo.", SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_VIP_LEVEL]);
strcat(dialog, str);
PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] = INVALID_VEHICLE_ID;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar vehículo", dialog, "Salir", "");
return 1;
}
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0)
{
strcat(dialog, "{FF6633}- Necesitas una cuenta bancaria para poder comprar vehículos.");
PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] = INVALID_VEHICLE_ID;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar vehículo", dialog, "Salir", "");
return 1;
}
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE] > BANK_ACCOUNT[playerid][bank_account_BALANCE])
{
new diff = SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE] - BANK_ACCOUNT[playerid][bank_account_BALANCE];
format(str, sizeof str, "{FF6633}- Te faltan %s$ en tu cuenta bancaria para poder comprar este vehículo.", number_format_thousand(diff));
strcat(dialog, str);
PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] = INVALID_VEHICLE_ID;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar vehículo", dialog, "Salir", "");
return 1;
}
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA] > ACCOUNT_INFO[playerid][ac_SD])
{
format(str, sizeof str, "{FF6633}- Te faltan %d "SERVER_COIN" para poder comprar este vehículo.", SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA] - ACCOUNT_INFO[playerid][ac_SD]);
strcat(dialog, str);
PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] = INVALID_VEHICLE_ID;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar vehículo", dialog, "Salir", "");
return 1;
}
if(!SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA]) format(str, sizeof str, "Balance de tu cuenta bancaria: %s$\nBalance tras la compra: %s$\n\n¿De verdad desea comprar este vehículo?", number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE]), number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE] - SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE]));
else format(str, sizeof str, "Tus monedas: %d "SERVER_COIN"\nMonedas tras la compra: %d "SERVER_COIN"\n\n¿De verdad desea comprar este vehículo?", ACCOUNT_INFO[playerid][ac_SD], ACCOUNT_INFO[playerid][ac_SD] - SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA]);
strcat(dialog, str);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar vehículo", dialog, "Comprar", "Salir");
return 1;
}
case DIALOG_NOTARY:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Notaría", "{CCCCCC}Vender una propiedad al banco\n{CCCCCC}Vender un vehículo al banco\n{CCCCCC}Vender una propiedad a una persona\n{CCCCCC}Vender un vehículo a una persona", ">>", "-");
return 1;
}
case DIALOG_NOTARY_SELECT_PROPERTY:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new DB_Query[80];
format(DB_Query, sizeof DB_Query, "SELECT * FROM `PROPERTY_OWNER` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "NotaryLoadProperties", "i", playerid);
return 1;
}
case DIALOG_PROPERTY_BANK_SELL:
{
new caption[40];
format(caption, sizeof caption, "Vender - %s", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME]);
new Float:price, payment;
price = PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_PRICE_BASE];
if(ACCOUNT_INFO[playerid][ac_SU]) payment = floatround( floatmul(price, 0.50) );
else payment = floatround( floatmul(price, 0.25) );
new dialog[160];
format(dialog, sizeof dialog, "Precio en mercado: %s$\nNosotros te pagaremos: %s$\n\n¿Está seguro de que quiere venderla?", number_format_thousand(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_PRICE]), number_format_thousand(payment));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, dialog, "Vender", "Atrás");
return 1;
}
case DIALOG_PROPERTY_SELL_PRICE:
{
new caption[40];
format(caption, sizeof caption, "Vender - %s", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME]);
new Float:price, min_price, max_price;
price = PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_PRICE];
min_price = floatround( floatmul(price, 0.15) );
max_price = floatround( floatmul(price, 6.0) );
new dialog[250];
format(dialog, sizeof dialog,
"Precio en mercado: %s$\n\nPrecio mínimo de venta: %s$\nPrecio máximo de venta: %s$\n\n¿Por cuánto quieres vender esta propiedad?",
number_format_thousand(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_PRICE]),
number_format_thousand(min_price),
number_format_thousand(max_price));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PROPERTY_SELL_TO_PLAYER:
{
new caption[40];
format(caption, sizeof caption, "Vender - %s", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME]);
new dialog[250];
format(dialog, sizeof dialog, "De acuerdo, quieres vender esta propiedad por %s$.\n\nIndica el nombre o playerid del comprador.\nEl comprador debe estar en la sala y cumplir todos los requisitos.", number_format_thousand(PLAYER_TEMP[playerid][pt_NOTARY_PRICE]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_SELL_CONFIRM_PROPERTY:
{
new dialog[240];
format(dialog, sizeof dialog,
"%s te quiere vender una propiedad.\n\n\
Propiedad: %d\n\
Precio: %s$\n\n\
Balance tras la compra: %s$\n\n\
¿Quieres comprar esta propiedad?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_RP_NAME],
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID],
number_format_thousand(PLAYER_TEMP[playerid][pt_NOTARY_PRICE]),
number_format_thousand( BANK_ACCOUNT[playerid][bank_account_BALANCE] - PLAYER_TEMP[playerid][pt_NOTARY_PRICE] )
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Oferta recibida", dialog, "Comprar", "Salir");
return 1;
}
case DIALOG_NOTARY_SELECT_VEHICLE:
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[95 * (MAX_SU_VEHICLES + 2)], total_vehicles;
format(dialog, sizeof dialog, "{CCCCCC}Vehículo\t{90C3D4}Matrícula\n");
for(new i = 0; i != MAX_VEHICLES; i ++)
{
if(!GLOBAL_VEHICLES[i][gb_vehicle_VALID]) continue;
if(!PLAYER_VEHICLES[i][player_vehicle_VALID]) continue;
if(total_vehicles > MAX_SU_VEHICLES) break;
if(PLAYER_VEHICLES[i][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][total_vehicles] = i;
new line_str[95];
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}%s\n", total_vehicles + 1, VEHICLE_INFO[ GLOBAL_VEHICLES[i][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME], GLOBAL_VEHICLES[i][gb_vehicle_NUMBER_PLATE]);
strcat(dialog, line_str);
total_vehicles ++;
}
}
if(total_vehicles == 0) strcat(dialog, "{CCCCCC}No tienes vehículos");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Selecciona el vehículo que quieres vender", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VEHICLE_BANK_SELL:
{
new caption[40];
format(caption, sizeof caption, "Vender - %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
new Float:price, payment;
price = VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_PRICE];
if(ACCOUNT_INFO[playerid][ac_SU]) payment = floatround( floatmul(price, 0.50) );
else payment = floatround( floatmul(price, 0.25) );
new dialog[160];
format(dialog, sizeof dialog, "Precio en mercado: %s$\nNosotros te pagaremos: %s$\n\n¿Está seguro de que quiere venderlo?", number_format_thousand( VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_PRICE] ), number_format_thousand(payment));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, dialog, "Vender", "Atrás");
return 1;
}
case DIALOG_VEHICLE_SELL_PRICE:
{
new caption[40];
format(caption, sizeof caption, "Vender - %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
new Float:price, min_price, max_price;
price = VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_PRICE];
min_price = floatround( floatmul(price, 0.15) );
max_price = floatround( floatmul(price, 6.0) );
new dialog[250];
format(dialog, sizeof dialog,
"Precio en mercado: %s$\n\nPrecio mínimo de venta: %s$\nPrecio máximo de venta: %s$\n\n¿Por cuánto quieres vender este vehículo?",
number_format_thousand(VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_PRICE]),
number_format_thousand(min_price),
number_format_thousand(max_price));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VEHICLE_SELL_TO_PLAYER:
{
new caption[40];
format(caption, sizeof caption, "Vender - %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
new dialog[250];
format(dialog, sizeof dialog, "De acuerdo, quieres vender este vehículo por %s$.\n\nIndica el nombre o playerid del comprador.\nEl comprador debe estar en la sala y cumplir todos los requisitos.", number_format_thousand(PLAYER_TEMP[playerid][pt_NOTARY_PRICE]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_SELL_CONFIRM_VEHICLE:
{
new dialog[300];
format(dialog, sizeof dialog,
"%s te quiere vender un vehículo.\n\n\
Vehículo: %s\n\
Matrícula: %s\n\
Precio: %s$\n\n\
Balance tras la compra: %s$\n\n\
¿Quieres comprar este vehículo?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_RP_NAME],
VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME],
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_NUMBER_PLATE],
number_format_thousand(PLAYER_TEMP[playerid][pt_NOTARY_PRICE]),
number_format_thousand( BANK_ACCOUNT[playerid][bank_account_BALANCE] - PLAYER_TEMP[playerid][pt_NOTARY_PRICE] )
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Oferta recibida", dialog, "Comprar", "Salir");
return 1;
}
case DIALOG_SELECT_TRUCK_TYPE:
{
new work_extra_payment;
if(work_info[WORK_TRUCK][work_info_EXTRA_PAY] > 0 && work_info[WORK_TRUCK][work_info_EXTRA_PAY_EXP] > 0)
{
work_extra_payment = (work_info[WORK_TRUCK][work_info_EXTRA_PAY] * floatround(floatdiv(PLAYER_SKILLS[playerid][WORK_TRUCK], work_info[WORK_TRUCK][work_info_EXTRA_PAY_EXP])));
if(work_info[WORK_TRUCK][work_info_EXTRA_PAY_LIMIT] != 0) if(work_extra_payment > work_info[WORK_TRUCK][work_info_EXTRA_PAY_LIMIT]) work_extra_payment = work_info[WORK_TRUCK][work_info_EXTRA_PAY_LIMIT];
if(ACCOUNT_INFO[playerid][ac_SU]) work_extra_payment += SU_WORK_EXTRA_PAY;
}
new dialog[105 * (sizeof(Truck_Contents) + 2)];
format(dialog, sizeof dialog, "{CCCCCC}Producto\t{90C3D4}Beneficios\t{CCCCCC}Distancia\n");
for(new i = 0; i != sizeof Truck_Contents; i ++)
{
new line_str[105];
if(Truck_Contents[i][truck_content_EXP] > PLAYER_SKILLS[playerid][WORK_TRUCK])
{
format(line_str, sizeof line_str, "{666666}%s\t{666666}%s$\t{666666}%.2f Km\n", Truck_Contents[i][truck_content_NAME], number_format_thousand(Truck_Contents[i][truck_content_MONEY] + work_extra_payment), (GetPlayerDistanceFromPoint(playerid, Truck_Contents[i][truck_content_X], Truck_Contents[i][truck_content_Y], Truck_Contents[i][truck_content_Z]) * 0.01));
strcat(dialog, line_str);
}
else
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}%s$\t{CCCCCC}%.2f Km\n", Truck_Contents[i][truck_content_NAME], number_format_thousand(Truck_Contents[i][truck_content_MONEY] + work_extra_payment), (GetPlayerDistanceFromPoint(playerid, Truck_Contents[i][truck_content_X], Truck_Contents[i][truck_content_Y], Truck_Contents[i][truck_content_Z]) * 0.01));
strcat(dialog, line_str);
}
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Selecciona la carga", dialog, ">>", "Cancelar");
return 1;
}
case DIALOG_TUNING_MENU_PART:
{
new vehicleid = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
new DB_Query[250];
format(DB_Query, sizeof DB_Query, "SELECT `COMPONENTS_INFO`.`PART`, `COMPONENTS_INFO`.`PIECES` FROM `COMPONENTS_INFO`, `VEHICLE_COMPONENTS` WHERE `VEHICLE_COMPONENTS`.`MODELID` = '%d' AND `VEHICLE_COMPONENTS`.`COMPONENT_ID` = `COMPONENTS_INFO`.`ID` GROUP BY `COMPONENTS_INFO`.`PART`;", GLOBAL_VEHICLES[vehicleid][gb_vehicle_MODELID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadTuningMenuParts", "i", playerid);
return 1;
}
case DIALOG_TUNING_MENU_COMPONENT:
{
new vehicleid = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
new DB_Query[300];
format(DB_Query, sizeof DB_Query, "SELECT `COMPONENTS_INFO`.`ID`, `COMPONENTS_INFO`.`NAME` FROM `COMPONENTS_INFO`, `VEHICLE_COMPONENTS` WHERE `COMPONENTS_INFO`.`PART` = '%s' AND `VEHICLE_COMPONENTS`.`MODELID` = '%d' AND `VEHICLE_COMPONENTS`.`COMPONENT_ID` = `COMPONENTS_INFO`.`ID`;", PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PART], GLOBAL_VEHICLES[vehicleid][gb_vehicle_MODELID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadTuningMenuPartsNames", "i", playerid);
return 1;
}
case DIALOG_MECHANIC_MENU:
{
new caption[60];
format(caption, sizeof caption, "%s piezas disponibles - %s", number_format_thousand(PLAYER_MISC[playerid][MISC_MECHANIC_PIECES]), VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
new dialog[450];
format(dialog, sizeof dialog,
"\
{CCCCCC}Opción\t{90C3D4}Piezas necesarias\t{CCCCCC}Estimación\n\
{CCCCCC}Reparación completa\t{90C3D4}10\t{CCCCCC}500$\n\
");
if(IsPlayerInDynamicArea(playerid, Mechanic_Area))
{
new paintjobs = VehiclePaintjob( GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] );
strcat(dialog, "{CCCCCC}Pintar vehículo\t{90C3D4}5\t{CCCCCC}250$\n");
if(PLAYER_SKILLS[playerid][WORK_MECHANIC] >= 100)
{
strcat(dialog, "{CCCCCC}Eliminar componentes\n");
strcat(dialog, "{CCCCCC}Tunear vehículo\n");
if(paintjobs > 0) strcat(dialog, "{CCCCCC}Paintjob\t{90C3D4}15\t{CCCCCC}750$\n");
}
else
{
strcat(dialog, "{666666}Eliminar componentes\n");
strcat(dialog, "{666666}Tunear vehículo\n");
if(paintjobs > 0) strcat(dialog, "{666666}Paintjob\t{666666}15\t{666666}750$\n");
}
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_MECHANIC_REPAIR_PRICE:
{
new caption[60];
format(caption, sizeof caption, "Reparar %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, "Indica el precio de la reparación.\nRango de precio: 0$ - 2.000$", ">>", "Atrás");
return 1;
}
case DIALOG_MECHANIC_COLOR_PRICE:
{
new caption[60];
format(caption, sizeof caption, "Pintar %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, "Indica el precio para pintar el vehículo.\nRango de precio: 0$ - 1.750$", ">>", "Atrás");
return 1;
}
case DIALOG_MECHANIC_TUNING_PRICE:
{
new caption[60], dialog[145];
format(caption, sizeof caption, "Tunear %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
format(dialog, sizeof dialog, "Indica el precio para tunear el vehículo.\nRango de precio: 0$ - %s$", number_format_thousand((PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES] * 50) + 2000));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_MECHANIC_PAINTJOB_PRICE:
{
new caption[60];
format(caption, sizeof caption, "Paintjob %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, "Indica el precio para el paintjob del vehículo.\nRango de precio: 0$ - 2.750$", ">>", "Atrás");
return 1;
}
case DIALOG_MECHANIC_ACCEPT:
{
new dialog[300];
format(dialog, sizeof dialog,
"\
{CCCCCC}El mecánico %s te ofrece:\n\
\t%s\n\
\n\
{CCCCCC}Precio: %s$\n\
¿Quieres aceptarlo?\n\
",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][pt_RP_NAME],
PLAYER_TEMP[playerid][pt_MECHANIC_TEXT],
number_format_thousand(PLAYER_TEMP[playerid][pt_MECHANIC_PRICE])
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Mecánico", dialog, "Aceptar", "Cancelar");
return 1;
}
case DIALOG_MECHANIC_SELECT_COL_SLOT:
{
new caption[60];
format(caption, sizeof caption, "Pintar %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, "{CCCCCC}Pintar color primario\n{CCCCCC}Pintar color secundario", ">>", "Atrás");
return 1;
}
case DIALOG_MECHANIC_SELECT_COLOR:
{
new caption[60];
format(caption, sizeof caption, "Pintar %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
new dialog[15 * (sizeof(VEHICLE_COLORS) + 1) ];
for(new i = 0; i != sizeof VEHICLE_COLORS; i++)
{
new line_str[15];
format(line_str, sizeof(line_str), "{%06x}%d\n", VEHICLE_COLORS[i] >>> 8, i);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_MECHANIC_REMOVE_COMPONEN:
{
new DB_Query[250], listitem;
format(DB_Query, sizeof DB_Query, "SELECT * FROM `COMPONENTS_INFO` WHERE");
for(new i = 0; i != MAX_VEHICLE_COMPONENTS; i ++)
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COMPONENTS][i]) continue;
if(listitem == 0) format(DB_Query, sizeof DB_Query, "%s `ID` = '%d'", DB_Query, GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COMPONENTS][i]);
else format(DB_Query, sizeof DB_Query, "%s AND `ID` = '%d'", DB_Query, GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COMPONENTS][i]);
listitem ++;
}
if(listitem == 0)
{
new caption[60], dialog[80];
format(caption, sizeof caption, "%s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID] = 0;
strcat(dialog, "{CCCCCC}Vehículo sin tunear");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, caption, dialog, " - ", "Atrás");
return 1;
}
strcat(DB_Query, ";");
mysql_tquery(SMF_DATABASE, DB_Query, "LoadMechanicRemoveComponents", "i", playerid);
return 1;
}
case DIALOG_TUNING_PAINTJOB:
{
new caption[60], dialog[25 * 4];
format(caption, sizeof caption, "Paintjob - %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
new paintjobs = VehiclePaintjob( GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] );
if(paintjobs == 0)
{
SendClientMessage(playerid, -1, "{999999}Este vehículo no soporta paintjobs.");
ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
strcat(dialog, "{CCCCCC}Eliminar paintjob (+ 15 piezas)\n");
for(new i = 0; i != paintjobs; i ++)
{
new line_str[25];
format(line_str, sizeof line_str, "{CCCCCC}Paintjob %d\n", i + 1);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_SEED_LIST:
{
new dialog[64 * (sizeof(seed_info) + 1)];
format(dialog, sizeof dialog, "Nombre\tPrecio por semilla\n");
for(new i = 0; i != sizeof seed_info; i ++)
{
new line_str[64];
if(PLAYER_SKILLS[playerid][WORK_FARMER] >= seed_info[i][seed_info_EXP])
{
if(seed_info[i][seed_info_TYPE] == TYPE_LEGAL) format(line_str, sizeof line_str, "{009900}%s\t{CCCCCC}%d$\n", seed_info[i][seed_info_NAME], seed_info[i][seed_info_PRICE]);
else format(line_str, sizeof line_str, "{FF3300}%s\t{CCCCCC}%d$\n", seed_info[i][seed_info_NAME], seed_info[i][seed_info_PRICE]);
}
else format(line_str, sizeof line_str, "{666666}%s\t{666666}%d$\n", seed_info[i][seed_info_NAME], seed_info[i][seed_info_PRICE]);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Semillas de la vida", dialog, ">>", "-");
return 1;
}
case DIALOG_SEED_BUY:
{
new dialog[145];
format(dialog, sizeof dialog, "{CCCCCC}Vale, quieres comprar semillas de %s.\n{CCCCCC}El precio por semilla es de: %d$\n\n{CCCCCC}¿Cuántas semillas quieres comprar?", seed_info[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_SEED_ID] ][seed_info_NAME], seed_info[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_SEED_ID] ][seed_info_PRICE]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Semillas de la vida", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_PLANT_PLANTS:
{
new dialog[95 * (sizeof(seed_info) + 1)];
format(dialog, sizeof dialog, "Planta\tSemilla requerida\tSemillas necesarias\n");
for(new i = 0; i != sizeof plant_info; i ++)
{
new line_str[95];
if(seed_info[i][seed_info_TYPE] == TYPE_LEGAL) format(line_str, sizeof line_str, "{009900}%s\t{CCCCCC}%s\t{CCCCCC}%d\n", plant_info[i][plant_info_NAME], seed_info[i][seed_info_NAME], plant_info[i][plant_info_SEEDS]);
else format(line_str, sizeof line_str, "{FF3300}%s\t{CCCCCC}%s\t{CCCCCC}%d\n", plant_info[i][plant_info_NAME], seed_info[i][seed_info_NAME], plant_info[i][plant_info_SEEDS]);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Plantar", dialog, ">>", "-");
}
case DIALOG_BLACK_MARKET:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Mercado negro", "{CCCCCC}Comprar armas\n{CCCCCC}Comprar munición para mis armas", "Comprar", "Salir");
return 1;
}
case DIALOG_BLACK_MARKET_WEAPONS:
{
new dialog[64 * (sizeof(BLACK_MARKT_WEAPONS) + 2)];
format(dialog, sizeof dialog, "{CCCCCC}Producto\t{CCCCCC}Precio\n");
for(new i = 0; i != sizeof BLACK_MARKT_WEAPONS; i ++)
{
new line_str[64];
if(BLACK_MARKT_WEAPONS[i][black_market_EXP] > CHARACTER_INFO[playerid][ch_BLACK_MARKET_LEVEL])
{
format(line_str, sizeof line_str, "{666666}%s\t{666666}%s$\n", WEAPON_INFO[ BLACK_MARKT_WEAPONS[i][black_market_WEAPON_ID] ][weapon_info_NAME], number_format_thousand(BLACK_MARKT_WEAPONS[i][black_market_WEAPON_PRICE]));
strcat(dialog, line_str);
}
else
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{CCCCCC}%s$\n", WEAPON_INFO[ BLACK_MARKT_WEAPONS[i][black_market_WEAPON_ID] ][weapon_info_NAME], number_format_thousand(BLACK_MARKT_WEAPONS[i][black_market_WEAPON_PRICE]));
strcat(dialog, line_str);
}
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Armas", dialog, "Comprar", "Salir");
return 1;
}
case DIALOG_BLACK_MARKET_SELECT_WEA:
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[95 * 15], line_str[95], listitem;
format(dialog, sizeof dialog, "{CCCCCC}Arma\t{90C3D4}Munición\t{CCCCCC}Slot\n");
for(new i; i != 13; i ++)
{
if(!PLAYER_WEAPONS[playerid][i][player_weapon_VALID]) continue;
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}%s\t{CCCCCC}%d\n", WEAPON_INFO[ PLAYER_WEAPONS[playerid][i][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(PLAYER_WEAPONS[playerid][i][player_weapon_AMMO]), i);
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
if(listitem == 0) strcat(dialog, "{666666}No tienes armas");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Selecciona la arma a la que quieres comprarle munición", dialog, ">>", "-");
return 1;
}
case DIALOG_BLACK_MARKET_AMMO:
{
new dialog[145];
format(dialog, sizeof dialog, "Arma: %s\nMunición: %s\n\nEl precio por bala es de 3$\n¿Cuánto munición quiere comprar?", WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_AMMO]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Comprar munición", dialog, ">>", "-");
return 1;
}
case DIALOG_PLAYER_WEAPONS:
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[95 * 15], line_str[95], listitem;
format(dialog, sizeof dialog, "{CCCCCC}Arma\t{90C3D4}Munición\t{CCCCCC}Slot\n");
for(new i; i != 13; i ++)
{
if(!PLAYER_WEAPONS[playerid][i][player_weapon_VALID]) continue;
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}%s\t{CCCCCC}%d\n", WEAPON_INFO[ PLAYER_WEAPONS[playerid][i][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(PLAYER_WEAPONS[playerid][i][player_weapon_AMMO]), i);
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
strcat(dialog, "{c4290d}- Eliminar todo\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = 13 + 20;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, ""DEFAULT_DIALOG_CAPTION" - Mis armas", dialog, ">>", "-");
return 1;
}
case DIALOG_PLAYER_WEAPONS_DELETE_A:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Mis armas - Eliminar todo", "¿Está seguro de que quiere eliminar todas sus armas?\nEsta opción no se puede deshacer.", "Eliminar", "Atrás");
return 1;
}
case DIALOG_PLAYER_WEAPONS_DELETE:
{
new dialog[150];
format(dialog, sizeof dialog, "Arma: %s\nMunición: %s\n\n¿Está seguro de que quiere eliminar esta arma?\nEsta opción no se puede deshacer.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_AMMO]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Mis armas - Eliminar arma", dialog, "Eliminar", "Atrás");
return 1;
}
case DIALOG_ANIMS: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Animaciones", DIALOG_ANIMS_String, ">>", "X");
case DIALOG_TRICKS_FOOD:
{
new dialog[150];
format(dialog, sizeof dialog, "%s te quiere vender algo.\n\nTipo: Alimento\nNombre: %s\nPrecio: %s$\n\n¿Quieres comprárselo?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_RP_NAME],
PLAYER_POCKET[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA] ][player_pocket_object_NAME],
number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE])
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Ventas", dialog, "Aceptar", "Cancelar");
return 1;
}
case DIALOG_TRICKS_MEDICINE:
{
new dialog[150];
format(dialog, sizeof dialog, "%s te quiere vender algo.\n\nTipo: Medicamento\nCantidad: %dg\nPrecio: %s$\n\n¿Quieres comprárselo?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_RP_NAME],
PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA],
number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE])
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Ventas", dialog, "Aceptar", "Cancelar");
return 1;
}
case DIALOG_TRICKS_CANNABIS:
{
new dialog[150];
format(dialog, sizeof dialog, "%s te quiere vender algo.\n\nTipo: Marihuana\nCantidad: %dg\nPrecio: %s$\n\n¿Quieres comprárselo?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_RP_NAME],
PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA],
number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE])
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Ventas", dialog, "Aceptar", "Cancelar");
return 1;
}
case DIALOG_TRICKS_CRACK:
{
new dialog[150];
format(dialog, sizeof dialog, "%s te quiere vender algo.\n\nTipo: Crack\nCantidad: %dg\nPrecio: %s$\n\n¿Quieres comprárselo?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_RP_NAME],
PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA],
number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE])
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Ventas", dialog, "Aceptar", "Cancelar");
return 1;
}
case DIALOG_TRICKS_SU:
{
new dialog[150];
format(dialog, sizeof dialog, "%s te quiere vender %d "SERVER_COIN"\nPrecio: %s$\n\n¿Quieres comprárselo?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_RP_NAME],
PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA],
number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE])
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Ventas", dialog, "Aceptar", "Cancelar");
return 1;
}
case DIALOG_TRICKS_WEAPON:
{
new dialog[180];
format(dialog, sizeof dialog, "%s te quiere vender algo.\n\nTipo: Arma\nNombre: %s\nMunición: %s\nPrecio: %s$\n\n¿Quieres comprárselo?",
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_RP_NAME],
WEAPON_INFO[ PLAYER_WEAPONS[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA] ][player_weapon_ID] ][weapon_info_NAME],
number_format_thousand(PLAYER_WEAPONS[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA] ][player_weapon_AMMO]),
number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE])
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Ventas", dialog, "Aceptar", "Cancelar");
return 1;
}
case DIALOG_VEHICLE_BOOT:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new max_slots = VEHICLE_INFO[GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][gb_vehicle_MODELID] - 400][vehicle_info_BOOT_SLOTS];
if(max_slots > MAX_BOOT_SLOTS) max_slots = MAX_BOOT_SLOTS;
new dialog[128 * (MAX_BOOT_SLOTS + 2)], line_str[128], listitem;
format(dialog, sizeof dialog, "Arma\tMunición\tSlot\n");
for(new i = 0; i != max_slots; i ++)
{
if(VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][i][vehicle_boot_VALID])
{
switch(VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][i][vehicle_boot_TYPE])
{
case BOOT_TYPE_WEAPON:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{CCCCCC}%s\t{CCCCCC}%d\n", WEAPON_INFO[ VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][i][vehicle_boot_INT] ][weapon_info_NAME], number_format_thousand(VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][i][vehicle_boot_INT_EXTRA]), i);
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
}
}
listitem ++;
}
}
new caption[64];
format(caption, sizeof caption, "Maletero de %s (%d espacios disponibles)", VEHICLE_INFO[GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][gb_vehicle_MODELID] - 400][vehicle_info_NAME], max_slots - listitem);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = MAX_BOOT_SLOTS + 20;
strcat(dialog, "{c4290d}- Eliminar todo\n"); listitem ++;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, ">>", "-");
}
case DIALOG_VEHICLE_BOOT_DELETE_ALL: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Maletero - Eliminar todo", "¿Está seguro de que quiere eliminar todo de su maletero?\nEsta opción no se puede deshacer.", "Eliminar", "Cancelar");
case DIALOG_VEHICLE_BOOT_OPTIONS:
{
new caption[45];
format(caption, sizeof caption, "Maletero - %s", WEAPON_INFO[ VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_INT] ][weapon_info_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, "{CCCCCC}1. Sacar\n{CCCCCC}2. Eliminar", ">>", "Atrás");
return 1;
}
case DIALOG_VEHICLE_BOOT_DELETE:
{
new dialog[190];
format(dialog, sizeof dialog, "Arma: %s\nMunición: %s\n\n¿Está seguro de que quiere eliminar esta arma de este maletero?\nEsta opción no se puede deshacer.", WEAPON_INFO[ VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_INT] ][weapon_info_NAME], number_format_thousand( VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_INT_EXTRA] ));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Maletero - Eliminar", dialog, "Eliminar", "Atrás");
return 1;
}
case DIALOG_SELECT_POLICE_SKIN:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[60 * sizeof(POLICE_SKINS)], line_str[60], listitem;
format(dialog, sizeof dialog, "{CCCCCC}Ropa\t{CCCCCC}Rango necesario\n");
for(new i = 0; i != sizeof POLICE_SKINS; i ++)
{
if(POLICE_SKINS[i][police_skin_TYPE] != CHARACTER_INFO[playerid][ch_SEX]) continue;
if(POLICE_SKINS[i][police_skin_RANK] > PLAYER_SKILLS[playerid][WORK_POLICE]) format(line_str, sizeof line_str, "{666666}%d\t{666666}%s\n", POLICE_SKINS[i][police_skin_SKIN], POLICE_RANKS[ POLICE_SKINS[i][police_skin_RANK] ]);
else format(line_str, sizeof line_str, "{CCCCCC}%d\t{CCCCCC}%s\n", POLICE_SKINS[i][police_skin_SKIN], POLICE_RANKS[ POLICE_SKINS[i][police_skin_RANK] ]);
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Selecciona la ropa", dialog, ">>", "-");
return 1;
}
case DIALOG_POLICE_RADIOS:
{
new dialog[45 * 6], line_str[45];
for(new i = 0; i != 6; i ++)
{
new players = CountPoliceRadioPlayers(i);
if(PLAYER_TEMP[playerid][pt_POLICE_RADIO] == i) format(line_str, sizeof line_str, "{CCCCCC}Frecuencia %d: %d personas\n", i + 1, players);
else format(line_str, sizeof line_str, "{666666}Frecuencia %d: %d personas\n", i, players);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Selecciona la frecuencia", dialog, ">>", "-");
return 1;
}
case DIALOG_POLICE_LIST:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new DB_Query[600];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`ID`, `CUENTA`.`NAME`, `CUENTA`.`LAST_CONNECTION`, `CUENTA`.`CONNECTED`, `PLAYER_SKILLS`.`TOTAL` FROM `CUENTA`, `PLAYER_SKILLS`, `PLAYER_WORKS` WHERE `PLAYER_SKILLS`.`ID_USER` = `CUENTA`.`ID` AND `PLAYER_SKILLS`.`ID_WORK` = '%d' AND `PLAYER_WORKS`.`ID_USER` = `CUENTA`.`ID` AND `PLAYER_WORKS`.`ID_WORK` = '%d' AND `PLAYER_WORKS`.`SET` = '1' ORDER BY `CUENTA`.`CONNECTED` DESC, `PLAYER_SKILLS`.`TOTAL` DESC LIMIT %d, %d;", WORK_POLICE, WORK_POLICE, PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT], PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPoliceList", "i", playerid);
return 1;
}
case DIALOG_POLICE_MODIFY:
{
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `PLAYER_SKILLS`.`TOTAL` FROM `CUENTA`, `PLAYER_SKILLS` WHERE `CUENTA`.`ID` = '%d' AND `PLAYER_SKILLS`.`ID_USER` = `CUENTA`.`ID` AND `PLAYER_SKILLS`.`ID_WORK` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID], WORK_POLICE);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPoliceRank", "i", playerid);
}
case DIALOG_POLICE_SHOP:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Equiparse", "{CCCCCC}Comprar armas\n{CCCCCC}Comprar munición para mis armas\n{CCCCCC}Comprar chaleco antibalas", "Comprar", "Salir");
return 1;
}
case DIALOG_POLICE_SELECT_WEAPON:
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[95 * 15], line_str[95], listitem;
format(dialog, sizeof dialog, "{CCCCCC}Arma\t{90C3D4}Munición\t{CCCCCC}Slot\n");
for(new i; i != 13; i ++)
{
if(!PLAYER_WEAPONS[playerid][i][player_weapon_VALID]) continue;
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}%s\t{CCCCCC}%d\n", WEAPON_INFO[ PLAYER_WEAPONS[playerid][i][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(PLAYER_WEAPONS[playerid][i][player_weapon_AMMO]), i);
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
if(listitem == 0) strcat(dialog, "{666666}No tienes armas");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Selecciona la arma a la que quieres comprarle munición", dialog, ">>", "-");
return 1;
}
case DIALOG_POLICE_AMMO:
{
new dialog[145];
format(dialog, sizeof dialog, "Arma: %s\nMunición: %s\n\nEl precio por bala es de 2$\n¿Cuánto munición quiere comprar?", WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_AMMO]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Comprar munición", dialog, ">>", "-");
return 1;
}
case DIALOG_POLICE_ARMOUR:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Comprar chaleco", "El precio del chaleco antibalas es de 300$.\n¿Lo quieres comprar?", ">>", "-");
return 1;
}
case DIALOG_POLICE_WEAPONS:
{
new dialog[64 * (sizeof(POLICE_SHOP_WEAPONS) + 2)];
format(dialog, sizeof dialog, "{CCCCCC}Producto\t{CCCCCC}Precio\n");
for(new i = 0; i != sizeof POLICE_SHOP_WEAPONS; i ++)
{
new line_str[64];
if(POLICE_SHOP_WEAPONS[i][police_shop_RANK] > PLAYER_SKILLS[playerid][WORK_POLICE])
{
format(line_str, sizeof line_str, "{666666}%s\t{666666}%s$\n", WEAPON_INFO[ POLICE_SHOP_WEAPONS[i][police_shop_WEAPON_ID] ][weapon_info_NAME], number_format_thousand(POLICE_SHOP_WEAPONS[i][police_shop_WEAPON_PRICE]));
strcat(dialog, line_str);
}
else
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{CCCCCC}%s$\n", WEAPON_INFO[ POLICE_SHOP_WEAPONS[i][police_shop_WEAPON_ID] ][weapon_info_NAME], number_format_thousand(POLICE_SHOP_WEAPONS[i][police_shop_WEAPON_PRICE]));
strcat(dialog, line_str);
}
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Armas", dialog, "Comprar", "Salir");
return 1;
}
case DIALOG_HELP:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, ""SERVER_NAME" v"SERVER_VERSION"."BUILD_VERSION"",
"\
{CCCCCC}- General\n\
{CCCCCC}- Personaje\n\
{CCCCCC}- Propiedades\n\
{CCCCCC}- Reportar\n\
{CCCCCC}- Trabajos\n\
{CCCCCC}- Vehículos\n\
{CCCCCC}- Bandas\n\
{F4DC42}- Membresía VIP\n\
"
, ">>", "-");
return 1;
}
case DIALOG_HELP_GENERAL:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "General",
"\
{FFFFFF}En un día completo dura tres horas reales.\n\
\n\
Para subir de nivel necesitas rellenar la reputación, puedes verlo gráficamente\n\
en la barra que aparece en la parte superior derecha que representa tu reputación.\n\
La reputación se aumenta cada {FF846A}25 minutos,{FFFFFF} cuando la reputación llegue\n\
al límite podrás subir al siguiente nivel con el comando {CCCCCC}/comprarnivel.\n\
{FFFFFF}El pago de juego(payday) se recibe cada tres reputaciones{FF846A}(75 minutos).\n\
{FFFFFF}Puedes utilizar {CCCCCC}/csave{FFFFFF} para guardar los datos de tu cuenta.\n\
\n\
Utiliza {CCCCCC}/estadisticas{FFFFFF} para ver tus estadísticas, utiliza {CCCCCC}/exp{FFFFFF} para ver tus habilidades.\n\
En el nivel uno no podrás agredir a otros jugadores, tampoco podrás tener armas\n\
hasta el nivel tres.\n\
Utiliza {CCCCCC}/pass{FFFFFF} para cambiar la contraseña de tu cuenta.\n\
Para ver el tiempo que te queda en la cárcel utiliza {CCCCCC}/tiempo.\n\
\n\
{FFFFFF}Para utilizar el canal de dudas utiliza el comando {CCCCCC}/duda{FFFFFF} seguido de tu duda.\n\
Para deshabilitar o volver a habilitar el canal de dudas usa {CCCCCC}/dudas.\n\
\n\
{FFFFFF}Utiliza {CCCCCC}/panel {FFFFFF}para configuraciones básicas de tu cuenta.\n\
\n\
"
, "Salir", "");
return 1;
}
case DIALOG_HELP_CHARACTER:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Personaje",
"\
{FFFFFF}Para poder localizar cualquier punto en San Andreas te recomandamos que compres\n\
un GPS en cualquier tienda {FF846A}24/7.{FFFFFF} Desde el GPS podrás localizarlo todo, tus vehículos,\n\
tus propiedades, trabajos, lugares de interés, etc.\n\
\n\
Utiliza tu teléfono para llamar a la policía, mecánico, taxi... o para hablar con\n\
alguien, por defecto tendrás varios contactos en la agenda pero puedes eliminarlos\n\
o añadir más, puedes tener hasta 20 contactos, todo esto se hace desde {CCCCCC}/movil{FFFFFF} o {CCCCCC}/celular.\n\
\n\
{FFFFFF}En las tiendas {FF846A}24/7{FFFFFF} puedes comprar guías para saber el número de cualquier jugador.\n\
Para evitar aparecer en la guía utiliza {CCCCCC}/sguia.\n\
\n\
{FFFFFF}Las barras en la esquina superior derecha representan tu nivel de hidratación y de alimentación,\n\
si los niveles llegan muy abajo tu personaje se empezará a sentir mal y empezarás a perder vida.\n\
Los niveles bajarán según tu actividad física, corriendo te dará sed más pronto que caminando.\n\
Para alimentarte ve a un restaurante de cómida rápida o a un {FF846A}24/7{FFFFFF} donde podrás comprar alimentos,\n\
que podrás consumir el cualquier momento con {CCCCCC}/alimentos{FFFFFF} o {CCCCCC}/consumir.\n\
\n\
{FFFFFF}Puedes dar objetos con el comando {CCCCCC}/dar,{FFFFFF} para más información utiliza {CCCCCC}/man dar.\n\
{FFFFFF}Puedes deshacerte de tus objetos con el comando {CCCCCC}/tirar,{FFFFFF} para más información utiliza {CCCCCC}/man tirar.\n\
{FFFFFF}Puedes vender objetos con el comando {CCCCCC}/vender, para más información utiliza {CCCCCC}/man vender.\n\
{FFFFFF}Para consumir consumibles que lleves contigo utiliza {CCCCCC}/consumir.\n\
\n\
{FFFFFF}Puedes cambiar la ropa de tu personaje en cualquier tienda de ropa, también\n\
podrás comprarte accesorios y ponertelos o quitartelos{CCCCCC}(/accesorios).\n\
\n\
{FFFFFF}Si tienes nivel de búsqueda o estás arrestado y mueres irás a la cárcel después de recuperarte.\n\
Cuando te arresten los policías te pueden requisar tus pertenencias ilegales{FF846A}(armas y drogas).\n\
\n\
{FFFFFF}Utiliza {CCCCCC}/inv{FFFFFF} para ver todo lo que llevas encima.\n\
{FFFFFF}Utiliza {CCCCCC}/estilo{FFFFFF} para cambiar el estilo de tu personaje.\n\
\n\
"
, "Salir", "");
return 1;
}
case DIALOG_HELP_PROPERTIES:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Propiedades",
"\
{FFFFFF}Puedes encontrar diferentes propiedades en todo {FF846A}San Andreas,{FFFFFF} para comprarla tendrás que saber la\n\
ID de la propiedad e ir a cualquier banco para comprarla, el dinero se descuenta de la cuenta bancaria.\n\
\n\
Puedes localizar tus propiedades con el GPS.\n\
Puedes dejar pasar a cualquiera a tu propiedad, solo tiene que tocar el timbre\n\
y tu elijes si quieres dejarlo pasar o no.\n\
\n\
Si quieres echar a alguien que esté dentro de tu propiedad utiliza el comando {CCCCCC}/echar.\n\
{FFFFFF}Dentro de la propiedade sitúate en la puerta interior y pon {CCCCCC}/casa,{FFFFFF} desde ahí podras\n\
cambiar el nombre de la propiedad para así localizarla más fácilmente en el GPS.\n\
{FFFFFF}También podrás echar a todos los huéspedes de tu propiedad.\n\
Si tienes un MP3 podrás poner música en él y hacer que se reproduzca para toda la gente\n\
que haya dentro de la propiedad.\n\
\n\
Si quieres vender tu propiedad puedes hacerlo en {F4DC42}\"Gobierno San Andreas\"{FFFFFF}, localizaló en el GPS.\n\
Puedes vendersela al banco al instante, pero te darán solo el 25% de lo que te costó {FF846A}(50% VIP).\n\
{FFFFFF}También se la puedes vender a otro jugador, dentro de un rango de precio pre-establecido.\n\
Para vender tu propiedad a un jugador puedes ponerla en {CCCCCC}/tienda.\n\
\n\
"
, "Salir", "");
return 1;
}
case DIALOG_HELP_REPORT:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Reportar",
"\
{FFFFFF}Para un reporte simple utiliza {CCCCCC}/reportar ID{FFFFFF} para reportar a un jugador.\n\
\n\
Para reportes más detallado debes publicarlos en el foro aportando imágenes.\n\
Los reportes de fallos o bugs también deberás hacerlo en el foro junto con imágenes.\n\
\n\
"
, "Salir", "");
return 1;
}
case DIALOG_HELP_VEHICLES:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Vehículos",
"\
{FF846A}GENERAL\n\
{FFFFFF}Para arrancar o detener un vehículo utiliza {CCCCCC}/motor.\n\
{FFFFFF}Utiliza {CCCCCC}/luces{FFFFFF} para encender o apagar las luces del vehículos.\n\
Si tu vehículo se daña tendrás que llamar a un mecánico desde tu móvil para que lo repare.\n\
\n\
Cada vehículo tiene su cantidad máxima del depósito de gasolina.\n\
Para repostar el vehículo debes ir a cualquier gasolinera, puedes localizarlas con el GPS.\n\
También puedes comprar un bidón de gasolina para {CCCCCC}/vertir{FFFFFF} gasolina en cualquier momento.\n\
Si tienes un MP3 puedes poner una canción en el vehículo con el comando {CCCCCC}/vmp3.\n\
\n\
\n\
{FF846A}VEHICULOS PERSONALES\n\
{FFFFFF}Para comprarlos ve a cualquier concesionario.\n\
El dinero para comprarlo es el de la cuenta bancaria.\n\
Para localizar tus vehículos utiliza el GPS.\n\
\n\
Utiliza {CCCCCC}/abrir{FFFFFF} para abrir las puertes de tu vehículo, utiliza {CCCCCC}/cerrar{FFFFFF} para cerrarlas.\n\
Puedes estacionar tu vehículo con el comando {CCCCCC}/estacionar.\n\
{FFFFFF}Cuando tu vehículo sea destruido recibirás uno nuevo en tu último estacionamiento.\n\
Para pintar, tunear o modificar tu vehículo tendrás que hacerlo en el mecánico.\n\
\n\
Puedes guardar armas en el maletero del vehículo con el comando {CCCCCC}/guardar.\n\
{FFFFFF}Para extraer armas del maletero puedes utilizar {CCCCCC}/maletero {FFFFFF}o {CCCCCC}/sacar.\n\
\n\
{FFFFFF}Si quieres vender tu vehículo puedes hacerlo en \"Gobierno San Andreas\", localizaló en el GPS.\n\
Puedes venderselo al banco, pero te darán solo el 25% de lo que te costó (50% VIP).\n\
También se la puedes vender a otro jugador, dentro de un rango de precio pre-establecido.\n\
Para vender tu vehículo a un jugador puedes ponerlo en {CCCCCC}/tienda.\n\
{FFFFFF}Al vender tu vehículo se venderá con todo lo que haya en el maletero.\n\
\n\
"
, "Salir", "");
return 1;
}
case DIALOG_HELP_WORKS:
{
new dialog[45 * sizeof work_info], line_str[45];
for(new i = 1; i != sizeof work_info; i ++)
{
format(line_str, sizeof line_str, "{CCCCCC}- %c%s\n", toupper(work_info[i][work_info_NAME][0]), work_info[i][work_info_NAME][1]);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Trabajos", dialog, ">>", "-");
return 1;
}
case DIALOG_HELP_CREWS:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Bandas",
"\
{FFFFFF}Utiliza {CCCCCC}/banda{FFFFFF} para crear una banda o administrar la tuya.\n\
{FFFFFF}Al entrar a una banda puedes conquistar territorios por todo San Andreas.\n\
\n\
{FFFFFF}Visita {FF846A}"SERVER_WEBSITE" {FFFFFF}para más información.\n\
\n\
"
, "Salir", "");
return 1;
}
case DIALOG_HELP_SU:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Ayuda - Super Usuario",
"\
{CCCCCC}Puedes comprar VIP por 30 días con el comando /vip.\n\
{CCCCCC}Se compra con "SERVER_COIN", para ver como comprar esta moneda visita nuestra web.\n\
\n\
{f4dc42}Ventajas\n\
{cccccc}- Tener 3 trabajos.\n\
{cccccc}- Tener 6 vehículos.\n\
{cccccc}- Tener 10 accesorios.\n\
{cccccc}- Tener 6 propiedades.\n\
{cccccc}- No pagas seguro de propiedades ni vehículos en el Payday.\n\
{cccccc}- No pierdes chaleco al morir.\n\
{cccccc}- Al vender un vehículo o propiedad al banco recibes un 50%.\n\
{cccccc}- Te recuperas el doble de rápido en el hospital.\n\
{cccccc}- Al recuperarte tu vida es del 100%.\n\
{cccccc}- Reducción de la condena a la mitad.\n\
{cccccc}- Cuando un médico te cura vida al 50%.\n\
{cccccc}- Comprar armas en mercado negro sin pertenecer a banda.\n\
{cccccc}- Comprar armas sin esperar 5 minutos por cada compra.\n\
{cccccc}- Pagas extras de 300$ en algunos trabajos.\n\
\n\
{cccccc}Visita {f4dc42}"SERVER_WEBSITE" {CCCCCC}para más información.\n\
\n\
"
, "Salir", "");
return 1;
}
case DIALOG_ADMIN_LIST:
{
new DB_Query[400];
format(DB_Query, sizeof DB_Query, "SELECT `ID`, `NAME`, `LAST_CONNECTION`, `CONNECTED`, `ADMIN_LEVEL` FROM `CUENTA` WHERE `ADMIN_LEVEL` > 0 ORDER BY `CONNECTED` DESC, `ADMIN_LEVEL` DESC LIMIT %d, %d;", PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT], PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadAdminList", "i", playerid);
return 1;
}
case DIALOG_ADMIN_MODIFY:
{
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `NAME`, `ADMIN_LEVEL` FROM `CUENTA` WHERE `ID` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadAdminRank", "i", playerid);
return 1;
}
case DIALOG_CHANGE_PASSWORD:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_PASSWORD, "Cambiar contraseña", "Introduce tu contraseña actual.", ">>", "-");
return 1;
}
case DIALOG_CHANGE_PASSWORD_PASS:
{
new dialog[128];
format(dialog, sizeof dialog, "Introduce tu nueva contraseña.\nLa contraseña debe contener entre %d-%d caracteres.", MIN_PASS_LENGTH, MAX_PASS_LENGTH);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_PASSWORD, "Cambiar contraseña", dialog, ">>", "-");
return 1;
}
case DIALOG_ANTI_CHEAT:
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] < 4) return 0;
new dialog[115 * sizeof(ac_Info) + 1], line_str[115];
dialog = "Tipo\tEstado\tAccionar\tAcción\n";
for(new i = 0; i != sizeof(ac_Info); i ++)
{
format(line_str, sizeof line_str, "%02d %s\t%s\t%d:%d\t%s\n", i, ac_Info[i][ac_Name], ac_Info[i][ac_Enabled] ? "Activado" : "Desactivado", ac_Info[i][ac_Detections], ac_Info[i][ac_Interval], ac_Info[i][ac_Kick] ? "Kick" : "Aviso");
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Anticheat", dialog, ">>", "X");
return 1;
}
case DIALOG_ANTI_CHEAT_MODIFY:
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] < 4) return 0;
new caption[45], dialog[90];
format(caption, sizeof caption, "ac %02d %s", PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM], ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Name]);
format(dialog, sizeof dialog, "Estado\t%s\nAccionar\t(%d:%d)\nAccion\t%s", ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Enabled] ? "Activado" : "Desactivado", ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Detections], ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Interval], ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Kick] ? "Kick" : "Aviso");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST, caption, dialog, ">>", "<<");
return 1;
}
case DIALOG_ANTI_CHEAT_MODIFY_DETECT:
{
new caption[45], dialog[200];
format(caption, sizeof caption, "ac %02d %s", PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM], ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Name]);
format(dialog, sizeof dialog, "Estado actual de accioner en: (%d:%d)\n\nSintaxis: <detecciones>:<segundos>\nDeja segundos en 0 para que sea instantáneo.\n\nEjemplo de 2 detecciones en 10 segundos: 2:10", ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Detections], ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Interval]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, dialog, ">>", "<<");
return 1;
}
case DIALOG_SHOP_ARTICLE_MODIFY: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Mi anuncio", "Inserta el nuevo precio de tu artículo:\n", ">>", "<<");
case DIALOG_SHOP_ARTICLE_REMOVE: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Eliminar anuncio", "¿Está seguro de que quiere eliminar este anuncio?\nEsta opción no se puede deshacer.", "Eliminar", "Atrás");
case DIALOG_SHOP_ADD:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Añadir anuncio", "{CCCCCC}Propiedad\n{CCCCCC}Vehículo\n{CCCCCC}Otros", ">>", "-");
return 1;
}
case DIALOG_SHOP_ADD_TEXT:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Añadir anuncio", "Introduce una breve descripción para tu anuncio.\nCaracteres: 1-24 [A-Z a-z 0-9]", ">>", "-");
return 1;
}
case DIALOG_SHOP_ADD_PRICE:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Añadir anuncio", "Introduce el precio para tu anuncio.\nAl publicar tu anuncio se te cobrará 500$.", ">>", "-");
return 1;
}
case DIALOG_CRANE_SELECT_VEHICLE:
{
for(new i = 0; i != MAX_LISTITEMS; i ++) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[95 * (MAX_SU_VEHICLES + 2)], total_vehicles;
format(dialog, sizeof dialog, "{CCCCCC}Vehículo\t{90C3D4}Matrícula\t{CCCCCC}Precio\n");
for(new i = 0; i != MAX_VEHICLES; i ++)
{
if(!GLOBAL_VEHICLES[i][gb_vehicle_VALID]) continue;
if(!PLAYER_VEHICLES[i][player_vehicle_VALID]) continue;
if(total_vehicles > MAX_SU_VEHICLES) break;
if(PLAYER_VEHICLES[i][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][total_vehicles] = i;
new line_str[95], veh_money = (VEHICLE_INFO[GLOBAL_VEHICLES[i][gb_vehicle_MODELID] - 400][vehicle_info_PRICE] / 100) + 350;
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}%s\t{CCCCCC}%s$\n", total_vehicles + 1, VEHICLE_INFO[ GLOBAL_VEHICLES[i][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME], GLOBAL_VEHICLES[i][gb_vehicle_NUMBER_PLATE], number_format_thousand(veh_money));
strcat(dialog, line_str);
total_vehicles ++;
}
}
if(total_vehicles == 0) strcat(dialog, "{CCCCCC}No tienes vehículos");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, "Selecciona el vehículo que quieres remolcar", dialog, ">>", "-");
return 1;
}
case DIALOG_CREATE_CREW:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Banda", "No perteneces a ninguna banda.\n\n¿Quieres crear una?\nPara crear una banda necesitas ser nivel 5, además cuesta 600.000$.", "Sí", "No");
return 1;
}
case DIALOG_CREATE_CREW_NAME:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Crear banda", "Introduce el nombre de tu banda.\nHasta 32 caracteres.", "Continuar", "Salir");
return 1;
}
case DIALOG_CREATE_CREW_COLOR:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Selecciona un color para tu banda", DIALOG_CREATE_CREW_COLOR_String, "Continuar", "Atrás");
return 1;
}
case DIALOG_CREATE_CREW_CONFIRM:
{
new dialog[360];
format(dialog, sizeof dialog,
"\
{CCCCCC}Nombre de la banda: %s\n\
{CCCCCC}Color de la banda: {%06x}color %d\n\
{CCCCCC}Coste de creación: 600.000$\n\
\n\
{CCCCCC}¿Quieres crear esta banda?\n\
{CCCCCC}Una vez creada podrás crear rangos, modificarlos y mucho más.\n\
\n\
",
PLAYER_TEMP[playerid][pt_CREATE_CREW_NAME],
RandomColors[ PLAYER_TEMP[playerid][pt_CREATE_CREW_COLOR] ] >>> 8, PLAYER_TEMP[playerid][pt_CREATE_CREW_COLOR] + 1
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Crear banda", dialog, "Crear", "Salir");
return 1;
}
case DIALOG_CREW_MENU:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new caption[64], dialog[360], listitem;
format(caption, sizeof caption, "Mi banda - {%06x}'%s'", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME]);
format(dialog, sizeof dialog, "Ver miembros\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_SIZE;
listitem ++;
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_NAME])
{
strcat(dialog, "Cambiar nombre de la banda\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_CHANGE_NAME;
listitem ++;
}
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CAST_MEMBERS])
{
strcat(dialog, "Echar a un miembro\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_CAST_MEMBERS;
listitem ++;
}
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_MEMBERS])
{
strcat(dialog, "Cambiar rango de un miembro\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_MODIFY_MEMBERS;
listitem ++;
}
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS])
{
strcat(dialog, "Crear rangos o modificarlos\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_MODIFY_RANKS;
listitem ++;
}
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_COLOR])
{
strcat(dialog, "Cambiar color de la banda\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_CHANGE_COLOR;
listitem ++;
}
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_DELETE])
{
strcat(dialog, "Eliminar la banda\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_DELETE;
listitem ++;
}
strcat(dialog, "Abandonar banda\n");
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = CREW_RANK_SIZE + 1;
listitem ++;
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "-");
return 1;
}
case DIALOG_CREW_MEMBER_LIST:
{
new DB_Query[320];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `CUENTA`.`LAST_CONNECTION`, `CUENTA`.`CONNECTED`, `PLAYER_CREW`.`RANK` FROM `CUENTA`, `PLAYER_CREW` WHERE `PLAYER_CREW`.`ID_USER` = `CUENTA`.`ID` AND `PLAYER_CREW`.`ID_CREW` = '%d' ORDER BY `CUENTA`.`CONNECTED` DESC, `PLAYER_CREW`.`RANK` ASC LIMIT %d, %d;", PLAYER_CREW[playerid][player_crew_ID], PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT], PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewList", "i", playerid);
return 1;
}
case DIALOG_CREW_CHANGE_NAME:
{
new dialog[128];
format(dialog, sizeof dialog, "Nombre actual de la banda:\n\t\"%s\"\n\nIndica el nuevo nombre.\nMáximo 32 caracteres.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Cambiar nombre de la banda", dialog, "Cambiar", "Atrás");
return 1;
}
case DIALOG_CREW_MEMBER_LIST_DELETE:
{
new DB_Query[350];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`ID`, `CUENTA`.`NAME`, `CUENTA`.`LAST_CONNECTION`, `CUENTA`.`CONNECTED`, `PLAYER_CREW`.`RANK` FROM `CUENTA`, `PLAYER_CREW` WHERE `PLAYER_CREW`.`ID_USER` = `CUENTA`.`ID` AND `PLAYER_CREW`.`ID_CREW` = '%d' ORDER BY `CUENTA`.`CONNECTED` DESC, `PLAYER_CREW`.`RANK` ASC LIMIT %d, %d;", PLAYER_CREW[playerid][player_crew_ID], PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT], PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewListDelete", "i", playerid);
return 1;
}
case DIALOG_CREW_CAST_MEMBER_CONFIRM:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Echar a un miembro", "¿Estás seguro de que quieres echar a este miembro de la banda?", "Echar", "Cancelar");
return 1;
}
case DIALOG_CREW_INVITE_RANK:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[64 * MAX_CREW_RANKS], line_str[64], listitem;
for(new i = 0; i != MAX_CREW_RANKS; i ++)
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_VALID]) continue;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
if(i < PLAYER_CREW[playerid][player_crew_RANK]) format(line_str, sizeof line_str, "{666666}%d. %s\n", listitem + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\n", listitem + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
strcat(dialog, line_str);
listitem ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Invitar", dialog, "Invitar", "Salir");
return 1;
}
case DIALOG_CREW_INVITE_ACCEPT:
{
new dialog[128];
format(dialog, sizeof dialog, "Te han ofrecio unirte a una banda.\n\nBanda: %s\nRango: %s\n", CREW_INFO[ PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][1] ][crew_NAME], CREW_RANK_INFO[ PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][1] ][ PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][2] ][crew_rank_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Invitación", dialog, "Unirme", "Salir");
return 1;
}
case DIALOG_CREW_RANKS:
{
new dialog[64 * MAX_CREW_RANKS], line_str[64];
for(new i = 0; i != MAX_CREW_RANKS; i ++)
{
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_VALID])
{
if(i < PLAYER_CREW[playerid][player_crew_RANK]) format(line_str, sizeof line_str, "{666666}%d. %s\n", i + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\n", i + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
}
else
{
if(i < PLAYER_CREW[playerid][player_crew_RANK]) format(line_str, sizeof line_str, "{666666}%d. Slot vacío\n", i + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{FFFFFF}%d. Slot vacío\n", i + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
}
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Rangos", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_CREW_RANK_MODIFY:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Modificar rango", "Cambiar nombre del rango\nModificar permisos\nEliminar rango", ">>", "Atrás");
return 1;
}
case DIALOG_CREW_RANK_MODIFY_NAME:
{
new dialog[145];
format(dialog, sizeof dialog, "Nombre actual del rango:\n\t\"%s\"\n\nIndica el nuevo nombre del rango.\nMáximo 32 caracteres.", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Modificar rango", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_CREW_RANK_MODIFY_PERMISS:
{
new caption[70];
format(caption, sizeof caption, "Modificar permisos del rango '%s'", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME]);
new dialog[64 * (CREW_RANK_SIZE + 1)], line_str[64];
format(dialog, sizeof dialog, "Permiso\tActivado\n");
for(new i = 0; i != CREW_RANK_SIZE; i ++)
{
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][i]) format(line_str, sizeof line_str, "%s\t%s\n", CREW_RANKS_PERMISSIONS[i], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][i] ? "Sí" : "No");
else format(line_str, sizeof line_str, "{666666}%s\t{666666}%s\n", CREW_RANKS_PERMISSIONS[i], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][i] ? "Sí" : "No");
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, "Cambiar", "Atrás");
return 1;
}
case DIALOG_CREW_RANK_CREATE:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Crear nuevo rango", "Indica el nombre del rango.\nMáximo 32 caracteres.", "Crear", "Atrás");
return 1;
}
case DIALOG_CREW_RANK_DELETE:
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[64 * MAX_CREW_RANKS], line_str[64], listitem;
for(new i = 0; i != MAX_CREW_RANKS; i ++)
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_VALID]) continue;
if(i == PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK]) continue;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
if(i < PLAYER_CREW[playerid][player_crew_RANK]) format(line_str, sizeof line_str, "{666666}%d. %s\n", listitem + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\n", listitem + 1, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
strcat(dialog, line_str);
listitem ++;
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Seleccionar nuevo rango", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_CREW_RANK_DELETE_CONFIRM:
{
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d' AND `RANK` = '%d';", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ID], PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewRankDelete", "i", playerid);
return 1;
}
case DIALOG_CREW_MODIFY_COLOR:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Selecciona el nuevo color para tu banda", DIALOG_CREATE_CREW_COLOR_String, "Cambiar", "Atrás");
return 1;
}
case DIALOG_CREW_DELETE:
{
new DB_Query[190];
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d';", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewMemberCount", "i", playerid);
return 1;
}
case DIALOG_CREW_LEAVE:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Abandonar banda", "¿Quieres abandonar la banda?\nEsta opción no se puede deshacer.", "Abandonar", "Cancelar");
return 1;
}
case DIALOG_CREW_MODIFY_MEMBERS:
{
new DB_Query[350];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`ID`, `CUENTA`.`NAME`, `CUENTA`.`LAST_CONNECTION`, `CUENTA`.`CONNECTED`, `PLAYER_CREW`.`RANK` FROM `CUENTA`, `PLAYER_CREW` WHERE `PLAYER_CREW`.`ID_USER` = `CUENTA`.`ID` AND `PLAYER_CREW`.`ID_CREW` = '%d' ORDER BY `CUENTA`.`CONNECTED` DESC, `PLAYER_CREW`.`RANK` ASC LIMIT %d, %d;", PLAYER_CREW[playerid][player_crew_ID], PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT], PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewModifyMembers", "i", playerid);
return 1;
}
case DIALOG_CREW_MODIFY_MEMBER:
{
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `PLAYER_CREW`.`RANK` FROM `CUENTA`, `PLAYER_CREW` WHERE `CUENTA`.`ID` = '%d' AND `PLAYER_CREW`.`ID_USER` = `CUENTA`.`ID`;", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewModifyMember", "i", playerid);
return 1;
}
case DIALOG_CREW_PROPERTY_CONFIRM:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Propiedad de banda", "¿Estás seguro que quieres pasar esta propiedad a banda?\nEsta opción no se puede deshacer.", ">>", "Cancelar");
return 1;
}
case DIALOG_CREW_LEAVE_TERRITORY:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Abandonar territorio", "¿Estás seguro que quieres abandonar este territorio?\nEsta opción no se puede deshacer.", ">>", "Cancelar");
return 1;
}
case DIALOG_CREW_LEAVE_PROPERTY:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Propiedad de banda", "¿Estás seguro que quieres liberar esta propiedad?\nEsta opción no se puede deshacer.", ">>", "Cancelar");
return 1;
}
case DIALOG_POLICE_PENALTY:
{
new dialog[128];
format(dialog, sizeof dialog, "El policía %s te ha puesto una multa.\nImporte: %s$\n", PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_POLICE_PEN_PID] ][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[playerid][pt_POLICE_PEN_IM]));
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Multa", dialog, "Pagar", "Salir");
return 1;
}
case DIALOG_SERVER_ECO:
{
new dialog[256];
format(dialog, sizeof dialog,
"\
PROPIEDADES\t%.4f\n\
VEHICULOS\t%.4f\n\
TOYS\t%.4f\n\
SKINS\t%.4f\n\
ARMAS\t%.4f\n\
VIP\t%d "SERVER_COIN"\n\
",
MULTIPLIER_PROPERITES,
MULTIPLIER_VEHICLES,
MULTIPLIER_TOYS,
MULTIPLIER_SKINS,
MULTIPLIER_WEAPONS,
SU_SD_PRICE
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST, "Multiplicadores", dialog, ">>", "-");
return 1;
}
case DIALOG_SERVER_ECO_MODIFY:
{
new dialog[32];
switch(PLAYER_TEMP[playerid][pt_DIALOG_ECO_SELECTED])
{
case 0: format(dialog, sizeof dialog, "PROPIEDADES: %f", MULTIPLIER_PROPERITES);
case 1: format(dialog, sizeof dialog, "VEHICULOS: %f", MULTIPLIER_VEHICLES);
case 2: format(dialog, sizeof dialog, "TOYS: %f", MULTIPLIER_TOYS);
case 3: format(dialog, sizeof dialog, "SKINS: %f", MULTIPLIER_SKINS);
case 4: format(dialog, sizeof dialog, "ARMAS: %f", MULTIPLIER_WEAPONS);
case 5: format(dialog, sizeof dialog, "Coste VIP: %d "SERVER_COIN"", SU_SD_PRICE);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Multiplicador", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_SU_BUY:
{
new dialog[128];
format(dialog, sizeof dialog, "El coste del VIP es de %d "SERVER_COIN"\nDuración: 30 días\n\n¿Comprar?", SU_SD_PRICE);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "VIP", dialog, "Comprar", "Salir");
return 1;
}
case DIALOG_SU:
{
new year, month, day, hour, minute, second;
getdate(year, month, day);
gettime(hour, minute, second);
new dialog[256];
format(dialog, sizeof dialog,
"\
Fecha actual: %d-%02d-%02d %02d:%02d:%02d\n\
Fecha caducidad: %s\n\
\n\
Renuevalo 30 días más por %d "SERVER_COIN".\n\
\n\
",
year, month, day, hour, minute, second,
ACCOUNT_INFO[playerid][ac_SU_EXPIRE_DATE],
SU_SD_PRICE
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "VIP", dialog, "Salir", "Renovar");
return 1;
}
case DIALOG_VOBJECT_MENU:
{
new caption[45];
format(caption, sizeof caption, "STC - '%s'", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, "1. Mis objetos\n2. Comprar objeto\n3. Añadir texto (500$)\n4. Añadir bandera de país (2.000$)\n5. Añadir panel de país (2.000$)", ">>", "-");
return 1;
}
case DIALOG_VOBJECT_OBJECTS:
{
new caption[45], dialog[145 * (MAX_SU_VOBJECTS + 2)], line_str[145];
format(caption, sizeof caption, "STC - '%s'", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
format(dialog, sizeof dialog, "{CCCCCC}Objeto\t{90C3D4}Colocado\n");
for(new i = 0; i != MAX_SU_VOBJECTS; i ++)
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i][vobject_VALID])
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i][vobject_ATTACHED]) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}Sí\n", i + 1, VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i][vobject_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{90C3D4}No\n", i + 1, VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i][vobject_NAME]);
}
else format(line_str, sizeof line_str, "{666666}%d. Slot vacío\n", i + 1);
strcat(dialog, line_str);
}
strcat(dialog, "{c4290d}- Eliminar todo\n");
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_OBJECT:
{
new caption[45], dialog[256];
format(caption, sizeof caption, "Objeto '%s'", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME]);
switch(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_TYPE])
{
case VOBJECT_TYPE_OBJECT:
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED]) format(dialog, sizeof dialog, "{CCCCCC}Guardar este objeto\n{CCCCCC}Cambiar el nombre del objeto\n{CCCCCC}Editar posición del objeto\n{CCCCCC}Colores\n{CCCCCC}Eliminar este objeto");
else format(dialog, sizeof dialog, "{CCCCCC}Colocar este objeto\n{CCCCCC}Cambiar el nombre del objeto\n{666666}Editar posición del objeto\n{666666}Colores\n{CCCCCC}Eliminar este objeto");
}
case VOBJECT_TYPE_TEXT:
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED]) format(dialog, sizeof dialog, "{CCCCCC}Guardar este objeto\n{CCCCCC}Cambiar el nombre del objeto\n{CCCCCC}Editar posición del objeto\n{CCCCCC}Texto\n{CCCCCC}Eliminar este objeto");
else format(dialog, sizeof dialog, "{CCCCCC}Colocar este objeto\n{CCCCCC}Cambiar el nombre del objeto\n{666666}Editar posición del objeto\n{666666}Texto\n{CCCCCC}Eliminar este objeto");
}
case VOBJECT_TYPE_COUNTRY_FLAG, VOBJECT_TYPE_COUNTRY_PANEL:
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED]) format(dialog, sizeof dialog, "{CCCCCC}Guardar este objeto\n{CCCCCC}Cambiar el nombre del objeto\n{CCCCCC}Editar posición del objeto\n{CCCCCC}Eliminar este objeto");
else format(dialog, sizeof dialog, "{CCCCCC}Colocar este objeto\n{CCCCCC}Cambiar el nombre del objeto\n{666666}Editar posición del objeto\n{CCCCCC}Eliminar este objeto");
}
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_OBJECT_CNAME:
{
new dialog[145];
format(dialog, sizeof dialog, "Nombre actual: \"%s\"\nIndica el nuevo nombre:", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Objeto - Modificar nombre", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_OBJECT_COLORS:
{
new caption[64];
format(caption, sizeof caption, "Colores de '%s'", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME]);
new dialog[45 * MAX_VEHICLE_OBJECTS_INDEXS], line_str[45];
for(new i = 0; i != MAX_VEHICLE_OBJECTS_INDEXS; i ++)
{
if(!VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_COLORS][i]) format(line_str, sizeof line_str, "{FFFFFF}Color #%d (original)\n", i + 1);
else format(line_str, sizeof line_str, "{%06x}Color #%d\n", ARGBToRGBA(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_COLORS][i]) >>> 8, i + 1);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_OBJECT_COLOR:
{
new caption[64];
format(caption, sizeof caption, "Color (%d) de '%s'", PLAYER_TEMP[playerid][pt_TUNING_EDIT_COLOR_SLOT], VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME]);
new dialog[145];
format(dialog, sizeof dialog,
"\
Color original\n\
{%06x}Veh Color 1\n\
{%06x}Veh Color 2\n\
{FFFFFF}Otro (ARGB)\n\
",
VEHICLE_COLORS[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][gb_vehicle_COLOR_1] ] >>> 8,
VEHICLE_COLORS[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][gb_vehicle_COLOR_2] ] >>> 8
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_OBJECT_COLOR_HEX:
{
new caption[64];
format(caption, sizeof caption, "Color (%d) de '%s'", PLAYER_TEMP[playerid][pt_TUNING_EDIT_COLOR_SLOT], VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, caption, "Introduce el color en formato AARRGGBB\nPor ejemplo: FFCCCCCC", ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_OBJECT_CDELETE:
{
new dialog[145];
format(dialog, sizeof dialog, "¿Estás seguro que quieres borrar el siguiente objeto?\n\t\"%s\"", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Objeto - Eliminar Objeto", dialog, "Eliminar", "Atrás");
return 1;
}
case DIALOG_VOBJECT_DELETE_ALL: return ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "Objeto - Eliminar todo", "¿Está seguro de que quiere eliminar todos los objetos de este vehículo?\nEsta opción no se puede deshacer.", "Eliminar", "Atrás");
case DIALOG_VOBJECT_TEXT_MENU:
{
new caption[64];
format(caption, sizeof caption, "Texto '%s'", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, caption, "Editar texto\nCambiar fuente\nTamaño de letra\nNegrita\nColor de fuente", ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_TEXT_TEXT:
{
new dialog[128];
format(dialog, sizeof dialog, "Texto actual:\n\"%s\"\n\nIndica el nuevo texto (1-32 caracteres)\n", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_TEXT]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Modificar texto", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_TEXT_FONT:
{
new dialog[128];
format(dialog, sizeof dialog, "Fuente actual:\n\"%s\"\n\nIndica la nueva fuente (1-24 caracteres)\n", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_FONT]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Modificar fuente", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_TEXT_FONT_SIZE:
{
new dialog[128];
format(dialog, sizeof dialog, "Tamaño actual: %d\n\nIndica la nueva fuente (1-24 caracteres)\n", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_FONT_SIZE]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Modificar fuente", dialog, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_TEXT_FONT_COLOR:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Selecciona color", DIALOG_CREATE_CREW_COLOR_String, ">>", "Atrás");
return 1;
}
case DIALOG_VOBJECT_COUNTRY:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_LIST, "Selecciona país",
"\
Alemania\n\
Argentina\n\
Austria\n\
Belgica\n\
Bolivia\n\
Bulgaria\n\
Chile\n\
Colombia\n\
El Salvador\n\
España\n\
Estonia\n\
Francia\n\
Guatemala\n\
Holanda\n\
Hungría\n\
India\n\
Indonesia\n\
Irlanda\n\
Italia\n\
Lituania\n\
Luxemburgo\n\
Madagascar\n\
Malta\n\
Malí\n\
México\n\
Nigeria\n\
Panamá\n\
Paraguay\n\
Perú\n\
Polonia\n\
Rumanía\n\
Rusia\n\
Ucrania\n\
Venezuela\n\
"
, ">>", "Atrás");
return 1;
}
case DIALOG_PLAYER_CONFIG:
{
new dialog[512];
format(dialog, sizeof dialog,
"\
Audios del servidor\t%s\n\
Barras indicadoras (hud)\t%s\n\
Ver sanciones, kicks, baneos\t%s\n\
Número en guía telefónica\t%s\n\
Sonidos del servidor\t%s\n\
Mostrar hora del servidor\t%s\n\
Canal de dudas\t%s\
",
(PLAYER_MISC[playerid][MISC_CONFIG_AUDIO] ? "Sí" : "No"),
(PLAYER_MISC[playerid][MISC_CONFIG_HUD] ? "Sí" : "No"),
(PLAYER_MISC[playerid][MISC_CONFIG_ADMIN] ? "Sí" : "No"),
(PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER] ? "Sí" : "No"),
(PLAYER_MISC[playerid][MISC_CONFIG_SOUNDS] ? "Sí" : "No"),
(PLAYER_MISC[playerid][MISC_CONFIG_TIME] ? "Sí" : "No"),
(ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL] ? "Sí" : "No")
);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST, "Panel de configuración del usuario", dialog, "Cambiar", "Salir");
return 1;
}
case DIALOG_POLICE_BYC:
{
new caption[128];
format(caption, sizeof caption, "Placa Nº%d | %c. %s", PLAYER_MISC[playerid][MISC_PLACA_PD], PLAYER_TEMP[playerid][pt_FIRST_NAME][0], PLAYER_TEMP[playerid][pt_SUB_NAME]);
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_TABLIST, caption, "Ver últimos registros a BYC\nBuscar BYC de una persona", ">>", "Salir");
return 1;
}
case DIALOG_POLICE_BYC_NAME_FIND:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_INPUT, "Búsqueda", "Introduce el nombre completo del sospechoso.\n\nUsa el guión bajo para separar nombre y apellido\nPor ejemplo: Nombre_Apellido.", "Buscar", "Salir");
return 1;
}
case DIALOG_POLICE_BYC_LAST_ALL:
{
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `POLICE_HISTORY`.* FROM `CUENTA`, `POLICE_HISTORY` WHERE `CUENTA`.`ID` = `POLICE_HISTORY`.`ID_USER` ORDER BY `DATE` DESC LIMIT %d, %d;", PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT], PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPoliceBycLastAll", "i", playerid);
return 1;
}
case DIALOG_POLICE_BYC_LAST_PLAYER:
{
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `POLICE_HISTORY`.* FROM `CUENTA`, `POLICE_HISTORY` WHERE `POLICE_HISTORY`.`ID_USER` = '%d' AND `CUENTA`.`ID` = `POLICE_HISTORY`.`ID_USER` ORDER BY `DATE` DESC LIMIT %d, %d;", PLAYER_TEMP[playerid][pt_SELECTED_BYC_USER_ID], PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT], PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPoliceBycLastPlayer", "i", playerid);
return 1;
}
case DIALOG_POLICE_DELETE_BYC:
{
ShowPlayerDialog(playerid, dialogid, DIALOG_STYLE_MSGBOX, "BYC", "¿Borrar esto del historial?", "Borrar", "Salir");
return 1;
}
default: return 0;
}
return 1;
}
PlayerDataLoaded(playerid)
{
PLAYER_TEMP[playerid][pt_DATA_LOADED]++;
printf("--> PlayerDataLoaded llamado por %d vez para playerid %d", PLAYER_TEMP[playerid][pt_DATA_LOADED], playerid);
if(PLAYER_TEMP[playerid][pt_DATA_LOADED] != 13) return 1;
SetPlayerScore(playerid, ACCOUNT_INFO[playerid][ac_LEVEL]);
PLAYER_TEMP[playerid][pt_DOUBT_CHANNEL_TIME] = gettime();
ResetPlayerWeapons(playerid);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, CHARACTER_INFO[playerid][ch_CASH]);
SetPlayerFightingStyle(playerid, CHARACTER_INFO[playerid][ch_FIGHT_STYLE]);
SetPlayerHealthEx(playerid, CHARACTER_INFO[playerid][ch_HEALTH]);
SetPlayerArmourEx(playerid, CHARACTER_INFO[playerid][ch_ARMOUR]);
SetPlayerVirtualWorld(playerid, 0);
SetPlayerNormalColor(playerid);
StopAudioStreamForPlayer(playerid);
SetSpawnInfo(playerid, NO_TEAM, CHARACTER_INFO[playerid][ch_SKIN], CHARACTER_INFO[playerid][ch_POS][0], CHARACTER_INFO[playerid][ch_POS][1], CHARACTER_INFO[playerid][ch_POS][2], CHARACTER_INFO[playerid][ch_ANGLE], 0, 0, 0, 0, 0, 0);
SetPlayerInterior(playerid, CHARACTER_INFO[playerid][ch_INTERIOR]);
PLAYER_TEMP[playerid][pt_BAD_LOGIN_ATTEMP] = 0;
TogglePlayerSpectatingEx(playerid, false);
TogglePlayerControllableEx(playerid, false);
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(PLAYER_TEMP[playerid][pt_DIALOG_RESPONDED]) return 1;
PLAYER_TEMP[playerid][pt_DIALOG_RESPONDED] = true;
if(!isnull(inputtext))
{
for(new i = 0; i != strlen(inputtext); i ++)
{
if(inputtext[i] == '%') inputtext[i] = '#';
}
}
switch(dialogid)
{
case DIALOG_INFO: return 1;
case DIALOG_REGISTER:
{
if(response)
{
if(strlen(inputtext) < MIN_PASS_LENGTH || strlen(inputtext) > MAX_PASS_LENGTH) return ShowDialog(playerid, dialogid);
format(ACCOUNT_INFO[playerid][ac_IP], 16, "%s", PLAYER_TEMP[playerid][pt_IP]);
format(ACCOUNT_INFO[playerid][ac_NAME], 24, "%s", PLAYER_TEMP[playerid][pt_NAME]);
format(PLAYER_TEMP[playerid][pt_PASSWD], 24, "%s", inputtext);
new salt[16];
getRandomSalt(salt);
format(ACCOUNT_INFO[playerid][ac_SALT], 16, "%s", salt);
SHA256_PassHash(inputtext, ACCOUNT_INFO[playerid][ac_SALT], ACCOUNT_INFO[playerid][ac_PASS], 64 + 1);
ACCOUNT_INFO[playerid][ac_LEVEL] = 1;
ACCOUNT_INFO[playerid][ac_REP] = 1;
ACCOUNT_INFO[playerid][ac_TIME_FOR_REP] = TIME_FOR_REP;
ShowDialog(playerid, DIALOG_REGISTER_EMAIL);
}
else Kick(playerid);
return 1;
}
case DIALOG_REGISTER_EMAIL:
{
if(!response) return Kick(playerid);
if(strlen(inputtext) < 5) return ShowDialog(playerid, dialogid);
if(strfind(inputtext, "@", true) == -1) return ShowDialog(playerid, dialogid);
if(strfind(inputtext, ".", true) == -1) return ShowDialog(playerid, dialogid);
new DB_Query[80];
format(DB_Query, sizeof(DB_Query), "SELECT * FROM `CUENTA` WHERE `EMAIL` = '%q'", inputtext);
mysql_tquery(SMF_DATABASE, DB_Query, "CheckMail", "is", playerid, inputtext);
return 1;
}
case DIALOG_LOGIN:
{
if(!response) return Kick(playerid);
if(!strlen(inputtext)) return ShowDialog(playerid, dialogid);
new password[64 + 1];
SHA256_PassHash(inputtext, ACCOUNT_INFO[playerid][ac_SALT], password, sizeof password);
if(!strcmp(password, ACCOUNT_INFO[playerid][ac_PASS], true)) //SHA256 no varía entre mayusculas y minusculas, evitemonos un problemita dejando el ignore case en true :)
{
LoadCharacterData(playerid);
LoadPlayerBankAccountData(playerid);
LoadPlayerToysData(playerid);
LoadPlayerPocketData(playerid);
LoadPlayerPhoneData(playerid);
LoadPlayerGPSData(playerid);
LoadPlayerObjectsData(playerid);
LoadPlayerVehicles(playerid);
LoadPlayerSkills(playerid);
LoadPlayerWorks(playerid);
LoadPlayerMisc(playerid);
LoadPlayerWeaponsData(playerid);
LoadPlayerCrewInfo(playerid);
SendClientMessageEx(playerid, -1, "Bienvenido de nuevo {C4FF66}%s, {FFFFFF}tu última conexión fue el {C4FF66}%s.", PLAYER_TEMP[playerid][pt_RP_NAME], ACCOUNT_INFO[playerid][ac_LAST_CONNECTION]);
//Login manejado por PlayerDataLoaded que se llama en todas las funciones anteriores
}
else // Error
{
PLAYER_TEMP[playerid][pt_BAD_LOGIN_ATTEMP] ++;
if(PLAYER_TEMP[playerid][pt_BAD_LOGIN_ATTEMP] > MAX_BAD_LOGIN_ATTEMPS) return Kick(playerid);
ShowDialog(playerid, dialogid);
}
return 1;
}
case DIALOG_FOOD_PIZZA:
{
if(response)
{
if(CHARACTER_INFO[playerid][ch_CASH] >= PIZZA_FOOD[listitem][food_PRICE])
{
if(CHARACTER_INFO[playerid][ch_HUNGRY] >= 99.0 && CHARACTER_INFO[playerid][ch_THIRST] >= 99.0) return SendClientMessage(playerid, -1, "{CCCCCC}¿Es que quieres reventar?");
GivePlayerCash(playerid, -PIZZA_FOOD[listitem][food_PRICE]);
Add_Hungry_Thirst(playerid, PIZZA_FOOD[listitem][food_HUNGRY], PIZZA_FOOD[listitem][food_THIRST]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
new action[64];
format(action, sizeof action, "compra %s y lo consume.", PIZZA_FOOD[listitem][food_NAME]);
Auto_SendPlayerAction(playerid, action);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 0, 0, 0, 0, 0, 0);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 4.1, false, true, true, false, 1000);
ShowDialog(playerid, dialogid);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%d$ {CCCCCC}para poder comprarlo.", PIZZA_FOOD[listitem][food_PRICE] - CHARACTER_INFO[playerid][ch_CASH]);
}
}
else SendClientMessageEx(playerid, -1, "Gracias por su visita a {6a98e2}%s {FFFFFF}vuelva pronto.", ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_NAME]);
return 1;
}
case DIALOG_FOOD_BURGER:
{
if(response)
{
if(CHARACTER_INFO[playerid][ch_CASH] >= BURGER_SHOT_FOOD[listitem][food_PRICE])
{
if(CHARACTER_INFO[playerid][ch_HUNGRY] >= 99.0 && CHARACTER_INFO[playerid][ch_THIRST] >= 99.0) return SendClientMessage(playerid, -1, "{CCCCCC}¿Es que quieres reventar?");
GivePlayerCash(playerid, -BURGER_SHOT_FOOD[listitem][food_PRICE]);
Add_Hungry_Thirst(playerid, BURGER_SHOT_FOOD[listitem][food_HUNGRY], BURGER_SHOT_FOOD[listitem][food_THIRST]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
new action[64];
format(action, sizeof action, "compra %s y lo consume.", BURGER_SHOT_FOOD[listitem][food_NAME]);
Auto_SendPlayerAction(playerid, action);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 0, 0, 0, 0, 0, 0);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 4.1, false, true, true, false, 1000);
ShowDialog(playerid, dialogid);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%d$ {CCCCCC}para poder comprarlo.", BURGER_SHOT_FOOD[listitem][food_PRICE] - CHARACTER_INFO[playerid][ch_CASH]);
}
}
else SendClientMessageEx(playerid, -1, "Gracias por su visita a {6a98e2}%s {FFFFFF}vuelva pronto.", ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_NAME]);
return 1;
}
case DIALOG_FOOD_CLUCKIN:
{
if(response)
{
if(CHARACTER_INFO[playerid][ch_CASH] >= CLUCKIN_BELL_FOOD[listitem][food_PRICE])
{
if(CHARACTER_INFO[playerid][ch_HUNGRY] >= 99.0 && CHARACTER_INFO[playerid][ch_THIRST] >= 99.0) return SendClientMessage(playerid, -1, "{CCCCCC}¿Es que quieres reventar?");
GivePlayerCash(playerid, -CLUCKIN_BELL_FOOD[listitem][food_PRICE]);
Add_Hungry_Thirst(playerid, CLUCKIN_BELL_FOOD[listitem][food_HUNGRY], CLUCKIN_BELL_FOOD[listitem][food_THIRST]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
new action[64];
format(action, sizeof action, "compra %s y lo consume.", CLUCKIN_BELL_FOOD[listitem][food_NAME]);
Auto_SendPlayerAction(playerid, action);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 0, 0, 0, 0, 0, 0);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 4.1, false, true, true, false, 1000);
ShowDialog(playerid, dialogid);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%d$ {CCCCCC}para poder comprarlo.", CLUCKIN_BELL_FOOD[listitem][food_PRICE] - CHARACTER_INFO[playerid][ch_CASH]);
}
}
else SendClientMessageEx(playerid, -1, "Gracias por su visita a {6a98e2}%s {FFFFFF}vuelva pronto.", ENTER_EXIT[ PLAYER_TEMP[playerid][pt_INTERIOR_INDEX] ][ee_NAME]);
return 1;
}
case DIALOG_PLAYER_TOYS:
{
if(response)
{
if(listitem == MAX_PLAYER_ATTACHED_OBJECTS) return ShowDialog(playerid, DIALOG_PLAYER_TOY_DELETE_ALL);
if(!ACCOUNT_INFO[playerid][ac_SU] && listitem >= MAX_NU_TOYS)
{
SendClientMessageEx(playerid, -1, "{CCCCCC}¡Los jugadores {b1fc6f}VIP {CCCCCC}pueden tener hasta %d accesorios! Usa {fffb49}/ayuda {CCCCCC}si quieres ser {b1fc6f}VIP.", MAX_PLAYER_ATTACHED_OBJECTS);
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] = listitem;
ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
}
return 1;
}
case DIALOG_PLAYER_TOY_MENU:
{
if(response)
{
switch(listitem)
{
case 0: //colocar / quitar
{
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED]) // tiene accesorio puesto
{
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED] = false;
RemovePlayerAttachedObject(playerid, PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT]);
new action[45]; format(action, sizeof action, "se quita su \"%s\"", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
Auto_SendPlayerAction(playerid, action);
}
else // No lo tiene puesto
{
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_BONE] == -1) return ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED] = true;
RemovePlayerAttachedObject(playerid, PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT]);
SetPlayerAttachedObject
(
playerid,
PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_MODELID],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_BONE],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_OFFSET_X],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_OFFSET_Y],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_OFFSET_Z],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ROT_X],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ROT_Y],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ROT_Z],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_SCALE_X],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_SCALE_Y],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_SCALE_Z],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_1],
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_2]
);
new action[45]; format(action, sizeof action, "se coloca su \"%s\"", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
Auto_SendPlayerAction(playerid, action);
}
}
case 1: ShowDialog(playerid, DIALOG_PLAYER_TOY_EDIT_NAME);
case 2: //Configurar
{
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_BONE] == -1)
{
ShowDialog(playerid, DIALOG_PLAYER_TOY_SELECT_BONE);
return 1;
}
ShowDialog(playerid, DIALOG_PLAYER_TOY_EDIT_BONE);
}
case 3: ShowDialog(playerid, DIALOG_PLAYER_TOY_COLOR_1);
case 4: ShowDialog(playerid, DIALOG_PLAYER_TOY_COLOR_2);
case 5: ShowDialog(playerid, DIALOG_PLAYER_TOY_CONFIRMDELETE);
}
}
else ShowDialog(playerid, DIALOG_PLAYER_TOYS);
return 1;
}
case DIALOG_PLAYER_TOY_EDIT_NAME:
{
if(response)
{
if(!strlen(inputtext) || strlen(inputtext) > 24)
{
SendClientMessage(playerid, -1, "{CCCCCC}El nombre del accesorio debe contener de 1 a 24 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
format(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME], 24, "%s", inputtext);
ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
}
else ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
return 1;
}
case DIALOG_PLAYER_TOY_CONFIRMDELETE:
{
if(response)
{
new DB_Query[130];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_TOYS` WHERE `ID_USER` = '%d' AND `ID_TOY` = '%d';", ACCOUNT_INFO[playerid][ac_ID], PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED]) RemovePlayerAttachedObject(playerid, PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Accesorio \"%s\" eliminado.", PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME]);
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_VALID] = false;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ID] = 0;
format(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_NAME], 24, "");
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED] = false;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_MODELID] = 0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_BONE] = 0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_OFFSET_X] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_OFFSET_Y] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_OFFSET_Z] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ROT_X] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ROT_Y] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ROT_Z] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_SCALE_X] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_SCALE_Y] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_SCALE_Z] = 0.0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_1] = 0;
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_2] = 0;
PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] = 0;
ShowDialog(playerid, DIALOG_PLAYER_TOYS);
}
else ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
return 1;
}
case DIALOG_PLAYER_TOY_SELECT_BONE:
{
if(response)
{
PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_BONE] = listitem + 1;
EditPlayerToy(playerid);
}
else ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
return 1;
}
case DIALOG_PLAYER_TOY_EDIT_BONE:
{
if(response) ShowDialog(playerid, DIALOG_PLAYER_TOY_SELECT_BONE);
else EditPlayerToy(playerid);
return 1;
}
case DIALOG_PLAYER_TOY_COLOR_1:
{
if(response)
{
if(listitem == 0) PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_1] = 0;
else PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_1] = RGBAToARGB(RandomColors[listitem]);
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED]) UpdatePlayerToy(playerid, PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT]);
SendClientMessage(playerid, -1, "{CCCCCC}Color del accesorio actualizado.");
}
else ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
return 1;
}
case DIALOG_PLAYER_TOY_COLOR_2:
{
if(response)
{
if(listitem == 0) PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_2] = 0;
else PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_COLOR_2] = RGBAToARGB(RandomColors[listitem]);
if(PLAYER_TOYS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT] ][player_toy_ATTACHED]) UpdatePlayerToy(playerid, PLAYER_TEMP[playerid][pt_SELECTED_TOY_SLOT]);
SendClientMessage(playerid, -1, "{CCCCCC}Color del accesorio actualizado.");
}
else ShowDialog(playerid, DIALOG_PLAYER_TOY_MENU);
return 1;
}
case DIALOG_PLAYER_TOY_DELETE_ALL:
{
if(response)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_TOYS` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_PLAYER_TOYS[Player_Toys_Info];
for(new i = 0; i != MAX_PLAYER_ATTACHED_OBJECTS; i ++)
{
RemovePlayerAttachedObject(playerid, i);
PLAYER_TOYS[playerid][i] = temp_PLAYER_TOYS;
}
SendClientMessage(playerid, -1, "{CCCCCC}Ha eliminado todos tus accesorios.");
}
else ShowDialog(playerid, DIALOG_PLAYER_TOYS);
return 1;
}
case DIALOG_BANK:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_BANK_WITHDRAW);
case 1: ShowDialog(playerid, DIALOG_BANK_DEPOSIT);
case 2: ShowDialog(playerid, DIALOG_BANK_TRANSFER);
case 3: ShowDialog(playerid, DIALOG_BANK_TRANSACTIONS);
}
}
else PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = false;
return 1;
}
case DIALOG_BANK_WITHDRAW:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor positivo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] > BANK_ACCOUNT[playerid][bank_account_BALANCE])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Saldo insuficiente.");
ShowDialog(playerid, dialogid);
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM])
{
if(inputtext[0] > 10000)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Las operaciones de más de {FF6633}10.000$ {CCCCCC}no se pueden realizar desde un cajero, solo en el banco.");
ShowDialog(playerid, dialogid);
return 1;
}
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] -= inputtext[0];
GivePlayerCash(playerid, inputtext[0]);
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_WITHDRAW, inputtext[0]);
SendClientMessageEx(playerid, -1, "Operación realizada con éxito, has retirado {6a98e2}%s$.", number_format_thousand(inputtext[0]));
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = false;
}
else ShowDialog(playerid, DIALOG_BANK);
return 1;
}
case DIALOG_BANK_DEPOSIT:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor positivo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] > CHARACTER_INFO[playerid][ch_CASH])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Dinero insuficiente.");
ShowDialog(playerid, dialogid);
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM])
{
if(inputtext[0] > 10000)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Las operaciones de más de {FF6633}10.000$ {CCCCCC}no se pueden realizar desde un cajero, solo en el banco.");
ShowDialog(playerid, dialogid);
return 1;
}
}
GivePlayerCash(playerid, -inputtext[0]);
BANK_ACCOUNT[playerid][bank_account_BALANCE] += inputtext[0];
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_DEPOSIT, inputtext[0]);
SendClientMessageEx(playerid, -1, "Operación realizada con éxito, has depositado {6a98e2}%s$.", number_format_thousand(inputtext[0]));
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = false;
}
else ShowDialog(playerid, DIALOG_BANK);
return 1;
}
case DIALOG_BANK_TRANSFER:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor positivo.");
ShowDialog(playerid, dialogid);
return 1;
}
new DB_Query[90];
format(DB_Query, sizeof(DB_Query), "SELECT * FROM `BANK_ACCOUNTS` WHERE `ID_ACCOUNT` = '%d'", inputtext[0]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadBankValidAccount", "i", playerid);
}
else ShowDialog(playerid, DIALOG_BANK);
return 1;
}
case DIALOG_BANK_TRANSFER_SEND:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor positivo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] > BANK_ACCOUNT[playerid][bank_account_BALANCE])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Saldo insuficiente.");
ShowDialog(playerid, dialogid);
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM])
{
if(inputtext[0] > 10000)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Las operaciones de más de {FF6633}10.000$ {CCCCCC}no se pueden realizar desde un cajero, solo en el banco.");
ShowDialog(playerid, dialogid);
return 1;
}
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] -= inputtext[0];
new transfer_player_id = GetPlayerIdByBankAccountId(PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT]);
new DB_Query[300], message[64];
format(message, sizeof message, "Tranferencia recibida: +%s$", number_format_thousand(inputtext[0]));
if(transfer_player_id == -1)
{
format(DB_Query, sizeof DB_Query, "SELECT `PHONE`.`PHONE_NUMBER` FROM `PHONE`, `BANK_ACCOUNTS` WHERE `BANK_ACCOUNTS`.`ID_ACCOUNT` = '%d' AND `PHONE`.`ID_USER` = `BANK_ACCOUNTS`.`ID_USER`;", PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT]);
mysql_tquery(SMF_DATABASE, DB_Query, "BankRegisterPhoneMessage", "s", message);
}
else
{
BANK_ACCOUNT[transfer_player_id][bank_account_BALANCE] += inputtext[0];
if(PLAYER_PHONE[transfer_player_id][player_phone_VALID])
{
RegisterPhoneMessage(6740, PLAYER_PHONE[transfer_player_id][player_phone_NUMBER], message);
if(PLAYER_PHONE[transfer_player_id][player_phone_STATE] == PHONE_STATE_ON)
{
if((PLAYER_TEMP[transfer_player_id][pt_GAME_STATE] == GAME_STATE_NORMAL || PLAYER_TEMP[transfer_player_id][pt_GAME_STATE] == GAME_STATE_DEAD))
{
SendClientMessageEx(transfer_player_id, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(transfer_player_id, 6740), message);
}
}
}
}
format(DB_Query, sizeof(DB_Query), "\
UPDATE `BANK_ACCOUNTS` SET\
`BALANCE` = BALANCE + '%d' \
WHERE `ID_ACCOUNT` = '%d';\
UPDATE `BANK_ACCOUNTS` SET\
`BALANCE` = '%d' \
WHERE `ID_ACCOUNT` = '%d';\
",
inputtext[0], PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT],
BANK_ACCOUNT[playerid][bank_account_BALANCE], BANK_ACCOUNT[playerid][bank_account_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query);
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_TRANSFER_SENT, inputtext[0], PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT]);
RegisterBankAccountTransaction(PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT], BANK_TRANSACTION_TRANSFER_RECE, inputtext[0], BANK_ACCOUNT[playerid][bank_account_ID]);
SendClientMessageEx(playerid, -1, "Operación realizada con éxito, has transferido {6a98e2}%s$ {FFFFFF}al número de cuenta {6a98e2}%s.", number_format_thousand(inputtext[0]), number_format_thousand(PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT]));
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT] = 0;
PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = false;
}
else
{
PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT] = 0;
ShowDialog(playerid, DIALOG_BANK_TRANSFER);
}
return 1;
}
case DIALOG_CREATE_BANK_ACCOUNT:
{
if(response)
{
if(CHARACTER_INFO[playerid][ch_CASH] >= 500)
{
GivePlayerCash(playerid, -500);
BANK_ACCOUNT[playerid][bank_account_BALANCE] = 500;
new DB_Query[190];
format(DB_Query, sizeof DB_Query,
"\
INSERT INTO `BANK_ACCOUNTS`\
(\
`ID_USER`, `BALANCE`\
)\
VALUES\
(\
'%d', '%d'\
);\
SELECT `ID_ACCOUNT` FROM `BANK_ACCOUNTS` WHERE `ID_USER` = '%d';\
", ACCOUNT_INFO[playerid][ac_ID], BANK_ACCOUNT[playerid][bank_account_BALANCE], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadBankAccountID", "i", playerid);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente para crear la cuenta bancaria, te faltan {FF6633}%d$.", 500 - CHARACTER_INFO[playerid][ch_CASH]);
}
}
return 1;
}
case DIALOG_BANK_TRANSACTIONS:
{
if(response) PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = false;
else ShowDialog(playerid, DIALOG_BANK);
return 1;
}
case DIALOG_247_LIST:
{
if(response)
{
switch(Supermarket_Product_List[listitem][product_TYPE])
{
case PRODUCT_TYPE_FOOD:
{
if(CHARACTER_INFO[playerid][ch_CASH] >= Supermarket_Product_List[listitem][product_PRICE])
{
new slot = GetEmptyPlayerPocketSlot(playerid);
if(slot == -1)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{999999}No tienes más espacio entre tus alimentos, elimina algo con {e0d43e}/alimentos.");
return 1;
}
GivePlayerCash(playerid, -Supermarket_Product_List[listitem][product_PRICE]);
PLAYER_POCKET[playerid][slot][player_pocket_VALID] = true;
format(PLAYER_POCKET[playerid][slot][player_pocket_object_NAME], 24, "%s", Supermarket_Product_List[listitem][product_NAME]);
PLAYER_POCKET[playerid][slot][player_pocket_object_HUNGRY] = Supermarket_Product_List[listitem][product_HUNGRY];
PLAYER_POCKET[playerid][slot][player_pocket_object_THIRST] = Supermarket_Product_List[listitem][product_THIRST];
PLAYER_POCKET[playerid][slot][player_pocket_object_DRUNK] = Supermarket_Product_List[listitem][product_DRUNK];
RegisterNewPlayerPocketObject(playerid, slot);
SendClientMessageEx(playerid, -1, "Has comprado {86e03e}%s {FFFFFF}por {86e03e}%d$, {FFFFFF}para consumirlo usa {ddd67c}/alimentos.", Supermarket_Product_List[listitem][product_NAME], Supermarket_Product_List[listitem][product_PRICE]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este producto.", number_format_thousand(Supermarket_Product_List[listitem][product_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
}
}
case PRODUCT_TYPE_PHONE:
{
if(CHARACTER_INFO[playerid][ch_CASH] >= Supermarket_Product_List[listitem][product_PRICE])
{
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
SendClientMessageEx(playerid, -1, "{999999}Ya tienes un teléfono.");
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
return 1;
}
mysql_tquery(SMF_DATABASE, "WITH `CTE` AS (SELECT FLOOR(RAND()*10000000) AS `NUM`) SELECT `NUM` FROM `CTE` WHERE `NUM` NOT IN (SELECT `PHONE_NUMBER` FROM `PHONE`) LIMIT 1;", "LoadFreePhoneNumber", "ii", playerid, listitem);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este producto.", number_format_thousand(Supermarket_Product_List[listitem][product_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
}
}
case PRODUCT_TYPE_GPS:
{
if(CHARACTER_INFO[playerid][ch_CASH] >= Supermarket_Product_List[listitem][product_PRICE])
{
if(PLAYER_OBJECT[playerid][po_GPS])
{
SendClientMessageEx(playerid, -1, "{999999}Ya tienes un GPS.");
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
return 1;
}
GivePlayerCash(playerid, -Supermarket_Product_List[listitem][product_PRICE]);
PLAYER_OBJECT[playerid][po_GPS] = true;
SendClientMessageEx(playerid, -1, "Has comprado un {86e03e}%s {FFFFFF}por {86e03e}%d$, {FFFFFF}usa {6a98e2}/GPS {FFFFFF}para usarlo.", Supermarket_Product_List[listitem][product_NAME], Supermarket_Product_List[listitem][product_PRICE]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este producto.", number_format_thousand(Supermarket_Product_List[listitem][product_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
}
}
case PRODUCT_TYPE_MP3:
{
if(CHARACTER_INFO[playerid][ch_CASH] >= Supermarket_Product_List[listitem][product_PRICE])
{
if(PLAYER_OBJECT[playerid][po_MP3])
{
SendClientMessageEx(playerid, -1, "{999999}Ya tienes un MP3.");
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
return 1;
}
GivePlayerCash(playerid, -Supermarket_Product_List[listitem][product_PRICE]);
PLAYER_OBJECT[playerid][po_MP3] = true;
SendClientMessageEx(playerid, -1, "Has comprado un {86e03e}%s {FFFFFF}por {86e03e}%d$, {FFFFFF}usa {6a98e2}/MP3 {FFFFFF}para usarlo.", Supermarket_Product_List[listitem][product_NAME], Supermarket_Product_List[listitem][product_PRICE]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este producto.", number_format_thousand(Supermarket_Product_List[listitem][product_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
}
}
case PRODUCT_TYPE_PHONE_RESOLVER:
{
if(CHARACTER_INFO[playerid][ch_CASH] >= Supermarket_Product_List[listitem][product_PRICE])
{
if(PLAYER_OBJECT[playerid][po_PHONE_RESOLVER])
{
SendClientMessageEx(playerid, -1, "{999999}Ya tienes una guía telefónica.");
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
return 1;
}
GivePlayerCash(playerid, -Supermarket_Product_List[listitem][product_PRICE]);
PLAYER_OBJECT[playerid][po_PHONE_RESOLVER] = true;
SendClientMessageEx(playerid, -1, "Has comprado una {86e03e}%s {FFFFFF}por {86e03e}%d$, {FFFFFF}usa {6a98e2}/guia {FFFFFF}para usarla.", Supermarket_Product_List[listitem][product_NAME], Supermarket_Product_List[listitem][product_PRICE]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este producto.", number_format_thousand(Supermarket_Product_List[listitem][product_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
}
}
}
}
return 1;
}
case DIALOG_PLAYER_POCKET:
{
if(response)
{
if(listitem == MAX_PLAYER_POCKET_OBJECTS) return ShowDialog(playerid, DIALOG_PLAYER_POCKET_DELETE_ALL);
if(!PLAYER_POCKET[playerid][listitem][player_pocket_VALID])
{
SendClientMessage(playerid, -1, "{999999}Este slot está vacío.");
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED] = listitem;
ShowDialog(playerid, DIALOG_PLAYER_POCKET_OPTIONS);
}
return 1;
}
case DIALOG_PLAYER_POCKET_OPTIONS:
{
if(response)
{
switch(listitem)
{
case 0: //Consumir
{
if(CHARACTER_INFO[playerid][ch_HUNGRY] >= 99.0 && CHARACTER_INFO[playerid][ch_THIRST] >= 99.0)
{
PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED] = 0;
SendClientMessage(playerid, -1, "{CCCCCC}¿Es que quieres reventar?");
return 1;
}
Add_Hungry_Thirst(playerid, PLAYER_POCKET[playerid][PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]][player_pocket_object_HUNGRY], PLAYER_POCKET[playerid][PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]][player_pocket_object_THIRST]);
GivePlayerDrunkLevel(playerid, PLAYER_POCKET[playerid][PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]][player_pocket_object_DRUNK]);
new action[64];
format(action, sizeof action, "consume %s.", PLAYER_POCKET[playerid][PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]][player_pocket_object_NAME]);
Auto_SendPlayerAction(playerid, action);
DeletePlayerPocketObject(playerid, PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]);
PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED] = 0;
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 0, 0, 0, 0, 0, 0);
ApplyAnimation(playerid, "FOOD", "EAT_Pizza", 4.1, false, true, true, false, 1000);
}
case 1: //Eliminar
{
SendClientMessageEx(playerid, -1, "{999999}Has eliminado \"%s\" de tus alimentos.", PLAYER_POCKET[playerid][PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]][player_pocket_object_NAME]);
DeletePlayerPocketObject(playerid, PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED]);
PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED] = 0;
}
}
}
else
{
PLAYER_TEMP[playerid][pt_POCKET_SLOT_SELECTED] = 0;
ShowDialog(playerid, DIALOG_PLAYER_POCKET);
}
return 1;
}
case DIALOG_PLAYER_POCKET_DELETE_ALL:
{
if(response)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_POCKET` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_PLAYER_POCKET[Player_Pocket_Enum];
for(new i = 0; i != MAX_PLAYER_POCKET_OBJECTS; i ++) PLAYER_POCKET[playerid][i] = temp_PLAYER_POCKET;
SendClientMessage(playerid, -1, "{CCCCCC}Ha eliminado todo lo que tenías en tus alimentos.");
}
else ShowDialog(playerid, DIALOG_PLAYER_POCKET);
return 1;
}
case DIALOG_PHONE:
{
if(response)
{
switch(listitem)
{
case 0: //Agenda
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF)
{
PLAYER_PHONE[playerid][player_phone_STATE] = PHONE_STATE_ON;
ShowDialog(playerid, dialogid);
return 1;
}
ShowDialog(playerid, DIALOG_PHONE_BOOK);
}
case 1: //Llamar
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}Tu teléfono está apagado, enciéndelo para usarlo.");
ShowDialog(playerid, DIALOG_PHONE_CALL_NUMBER);
}
case 2: //Enviar mensaje
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}Tu teléfono está apagado, enciéndelo para usarlo.");
ShowDialog(playerid, DIALOG_PHONE_SMS_NUMBER);
}
case 3: //Ver mensajes recibidos
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}Tu teléfono está apagado, enciéndelo para usarlo.");
ShowDialog(playerid, DIALOG_PHONE_RECEIVED_MESSAGES);
}
case 4: //Ver mensajes enviados
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}Tu teléfono está apagado, enciéndelo para usarlo.");
ShowDialog(playerid, DIALOG_PHONE_SENT_MESSAGES);
}
case 5: //Tienda
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}Tu teléfono está apagado, enciéndelo para usarlo.");
ShowPlayerShop(playerid);
}
case 6: //Apagar
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}Tu teléfono está apagado, enciéndelo para usarlo.");
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) EndPhoneCall(playerid);
PLAYER_PHONE[playerid][player_phone_STATE] = PHONE_STATE_OFF;
SendClientMessage(playerid, -1, "{999999}Has apagado tu teléfono, ahora no recibirás llamadas.");
}
}
}
return 1;
}
case DIALOG_PHONE_BOOK:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return ShowDialog(playerid, dialogid);
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == MAX_PHONE_CONTACTS + 10) return ShowDialog(playerid, DIALOG_PHONE_BOOK_ADD_NUMBER);
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == MAX_PHONE_CONTACTS + 20) return ShowDialog(playerid, DIALOG_PHONE_BOOK_DELETE_ALL);
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_PHONE_BOOK_OPTIONS);
}
else ShowDialog(playerid, DIALOG_PHONE);
return 1;
}
case DIALOG_PHONE_BOOK_ADD_NUMBER:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{CCCCCC}Introduce un valor positivo.");
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_ADD_NUMBER] = inputtext[0];
ShowDialog(playerid, DIALOG_PHONE_BOOK_ADD_NAME);
}
else ShowDialog(playerid, DIALOG_PHONE_BOOK);
return 1;
}
case DIALOG_PHONE_BOOK_ADD_NAME:
{
if(response)
{
if(isnull(inputtext))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
ShowDialog(playerid, dialogid);
return 1;
}
if(strlen(inputtext) > 24)
{
SendClientMessage(playerid, -1, "{999999}Caracteres: 1-24.");
ShowDialog(playerid, dialogid);
return 1;
}
new slot = GetEmptyPlayerPhoneBookSlot(playerid);
if(slot == -1) return SendClientMessage(playerid, -1, "{999999}Memoria de la agenda llena.");
PLAYER_PHONE_BOOK[playerid][slot][phone_book_contact_VALID] = true;
format(PLAYER_PHONE_BOOK[playerid][slot][phone_book_contact_NAME], 24, "%s", inputtext);
PLAYER_PHONE_BOOK[playerid][slot][phone_book_contact_PHONE_NUMBER] = PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_ADD_NUMBER];
RegisterNewPlayerPhoneBook(playerid, slot);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "Nuevo contacto añadido a la agenda: Nombre: {6a98e2}%s {FFFFFF}Teléfono: {6a98e2}%d.", PLAYER_PHONE_BOOK[playerid][slot][phone_book_contact_NAME], PLAYER_PHONE_BOOK[playerid][slot][phone_book_contact_PHONE_NUMBER]);
ShowDialog(playerid, DIALOG_PHONE_BOOK);
}
else ShowDialog(playerid, DIALOG_PHONE_BOOK_ADD_NUMBER);
return 1;
}
case DIALOG_PHONE_BOOK_OPTIONS:
{
if(response)
{
switch(listitem)
{
case 0: //llamar
{
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}Estás en una llamada.");
switch(PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER])
{
case 911:
{
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Debes ser al menos nivel 2 para llamar a la policía.");
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION] = false;
SendClientMessage(playerid, -1, "{CCCCCC}Operadora: Ha llamado a la central de policía, indícanos su nombre por favor.");
return 1;
}
case 450: //Taxi
{
if(PLAYER_TEMP[playerid][pt_WANT_TAXI])
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = false;
DisablePlayerTaxiMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el taxi.");
}
else
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los taxistas disponibles, espera a que llegue un taxi.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un taxi.");
SendAlertToTaxiDrivers(playerid);
}
return 1;
}
case 570: //Mecanico
{
if(PLAYER_TEMP[playerid][pt_WANT_MECHANIC])
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el mecánico.");
}
else
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los mecánicos disponibles, espera a que llegue un mecánico.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un mecánico.");
SendAlertToMechanic(playerid);
}
return 1;
}
case 6740: return SendClientMessage(playerid, -1, "{CCCCCC}No vuelvas a llamar al banco, cuidado.");
case 38350: return SendClientMessage(playerid, -1, "{CCCCCC}Aseguradora que asegura tus vehículos de mierda.");
case 666: return SendClientMessage(playerid, -1, "{CCCCCC}Mirar a las estrellas es mirar al pasado, no mires.");
}
new to_playerid = INVALID_PLAYER_ID;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if((PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_NORMAL) && PLAYER_PHONE[i][player_phone_NUMBER] == PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER])
{
to_playerid = i;
break;
}
}
}
if(to_playerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto o está fuera de cobertura.");
if(to_playerid == playerid) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto.");
if(PLAYER_PHONE[to_playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está apagado o fuera de cobertura.");
if(PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL]) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está en otra llamada.");
SendClientMessageEx(to_playerid, -1, "{e5f442}[Llamada entrante] {FFFFFF}%s te está llamando, para responser usa {e5f442}/responder {FFFFFF}o {e5f442}/colgar.", convertPhoneNumber(to_playerid, PLAYER_PHONE[playerid][player_phone_NUMBER]));
PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_INCOMING_CALL;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = playerid;
SendClientMessageEx(playerid, -1, "Llamando a {e5f442}%s ...", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME]);
PLAYER_TEMP[playerid][pt_TIMERS][6] = SetTimerEx("NoCallResponse", 15000, false, "i", playerid);
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_WAITING_RESPONSE;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = to_playerid;
PlayerPlaySoundEx(playerid, 3600, 0.0, 0.0, 0.0);
}
case 1: ShowDialog(playerid, DIALOG_PHONE_BOOK_SEND_MESSAGE);
case 2: ShowDialog(playerid, DIALOG_PHONE_BOOK_CHANGE_NAME);
case 3: ShowDialog(playerid, DIALOG_PHONE_BOOK_CONFIRM_DELET);
}
}
else ShowDialog(playerid, DIALOG_PHONE_BOOK);
return 1;
}
case DIALOG_PHONE_BOOK_CHANGE_NAME:
{
if(response)
{
if(isnull(inputtext))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
ShowDialog(playerid, dialogid);
return 1;
}
if(strlen(inputtext) > 24)
{
SendClientMessage(playerid, -1, "{999999}Caracteres: 1-24.");
ShowDialog(playerid, dialogid);
return 1;
}
format(PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME], 24, "%s", inputtext);
new DB_Query[120];
format(DB_Query, sizeof DB_Query, "UPDATE `PHONE_BOOK` SET `NAME` = '%q' WHERE `CONTACT_ID` = '%d';", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME], PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessage(playerid, -1, "Contacto modificado.");
ShowDialog(playerid, DIALOG_PHONE_BOOK);
}
else ShowDialog(playerid, DIALOG_PHONE_BOOK_OPTIONS);
return 1;
}
case DIALOG_PHONE_BOOK_CONFIRM_DELET:
{
if(response)
{
new DB_Query[120];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PHONE_BOOK` WHERE `PHONE_ID` = '%d' AND `CONTACT_ID` = '%d';", PLAYER_PHONE[playerid][player_phone_NUMBER], PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessageEx(playerid, -1, "Contacto {6a98e2}\"%s\" {FFFFFF}eliminado de tu agenda.", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME]);
PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_VALID] = false;
PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_ID] = 0;
format(PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME], 24, "");
PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER] = 0;
ShowDialog(playerid, DIALOG_PHONE_BOOK);
}
else ShowDialog(playerid, DIALOG_PHONE_BOOK_OPTIONS);
return 1;
}
case DIALOG_PHONE_BOOK_DELETE_ALL:
{
if(response)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PHONE_BOOK` WHERE `PHONE_ID` = '%d';", PLAYER_PHONE[playerid][player_phone_NUMBER]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_PLAYER_PHONE_BOOK[Phone_Book_Enum];
for(new i = 0; i != MAX_PHONE_CONTACTS; i ++) PLAYER_PHONE_BOOK[playerid][i] = temp_PLAYER_PHONE_BOOK;
SendClientMessage(playerid, -1, "{CCCCCC}Ha eliminado todos sus contactos.");
}
else ShowDialog(playerid, DIALOG_PHONE_BOOK);
return 1;
}
case DIALOG_PHONE_CALL_NUMBER:
{
if(response)
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}Estás en una llamada.");
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}Número no válido.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0)
{
SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
ShowDialog(playerid, dialogid);
return 1;
}
switch(inputtext[0])
{
case 911:
{
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Debes ser al menos nivel 2 para llamar a la policía.");
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_NAME] = true;
PLAYER_TEMP[playerid][pt_POLICE_CALL_DESCRIPTION] = false;
SendClientMessage(playerid, -1, "{CCCCCC}Operadora: Ha llamado a la central de policía, indícanos su nombre por favor.");
return 1;
}
case 450: //Taxi
{
if(PLAYER_TEMP[playerid][pt_WANT_TAXI])
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = false;
DisablePlayerTaxiMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el taxi.");
}
else
{
PLAYER_TEMP[playerid][pt_WANT_TAXI] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los taxistas disponibles, espera a que llegue un taxi.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un taxi.");
SendAlertToTaxiDrivers(playerid);
}
return 1;
}
case 570: //Mecanico
{
if(PLAYER_TEMP[playerid][pt_WANT_MECHANIC])
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Has cancelado el mecánico.");
}
else
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = true;
SendClientMessage(playerid, -1, "{CCCCCC}Tu llamada se ha enviado a los mecánicos disponibles, espera a que llegue un mecánico.");
SendClientMessage(playerid, -1, "{CCCCCC}Vuelve a llamar a este número si ya no necesitas un mecánico.");
SendAlertToMechanic(playerid);
}
return 1;
}
case 6740: return SendClientMessage(playerid, -1, "{CCCCCC}No vuelvas a llamar al banco, cuidado.");
case 38350: return SendClientMessage(playerid, -1, "{CCCCCC}Aseguradora que asegura tus vehículos de mierda.");
case 666: return SendClientMessage(playerid, -1, "{CCCCCC}Mirar a las estrellas es mirar al pasado, no mires.");
}
new to_playerid = INVALID_PLAYER_ID;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if((PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_NORMAL) && PLAYER_PHONE[i][player_phone_NUMBER] == inputtext[0])
{
to_playerid = i;
break;
}
}
}
if(to_playerid == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto o está fuera de cobertura.");
if(to_playerid == playerid) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar no es correcto.");
if(PLAYER_PHONE[to_playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está apagado o fuera de cobertura.");
if(PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL]) return SendClientMessage(playerid, -1, "{999999}El número al que intentas llamar está en otra llamada.");
SendClientMessageEx(to_playerid, -1, "{e5f442}[Llamada entrante] {FFFFFF}%s te está llamando, para responser usa {e5f442}/responder {FFFFFF}o {e5f442}/colgar.", convertPhoneNumber(to_playerid, PLAYER_PHONE[playerid][player_phone_NUMBER]));
PLAYER_TEMP[to_playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_INCOMING_CALL;
PLAYER_TEMP[to_playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = playerid;
SendClientMessageEx(playerid, -1, "Llamando a {e5f442}%s ...", convertPhoneNumber(playerid, inputtext[0]));
PLAYER_TEMP[playerid][pt_TIMERS][6] = SetTimerEx("NoCallResponse", 15000, false, "i", playerid);
PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL] = true;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_STATE] = CALL_STATE_WAITING_RESPONSE;
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_CALL_PLAYERID] = to_playerid;
PlayerPlaySoundEx(playerid, 3600, 0.0, 0.0, 0.0);
}
else ShowDialog(playerid, DIALOG_PHONE);
return 1;
}
case DIALOG_PHONE_SMS_NUMBER:
{
if(response)
{
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_OFF) return SendClientMessageEx(playerid, -1, "{999999}Tu teléfono está apagado, para encenderlo usa /movil.");
if(PLAYER_TEMP[playerid][pt_PLAYER_IN_CALL]) return SendClientMessageEx(playerid, -1, "{999999}Estás en una llamada.");
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}Número no válido.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0)
{
SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
ShowDialog(playerid, dialogid);
return 1;
}
new DB_Query[100];
format(DB_Query, sizeof(DB_Query), "SELECT * FROM `PHONE` WHERE `PHONE_NUMBER` = '%d';", inputtext[0]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPhoneNumber", "i", playerid);
return 1;
}
else ShowDialog(playerid, DIALOG_PHONE);
return 1;
}
case DIALOG_PHONE_SMS_MESSAGE:
{
if(response)
{
if(isnull(inputtext)) return ShowDialog(playerid, dialogid);
if(strlen(inputtext) > 64) return ShowDialog(playerid, dialogid);
new to_playerid = INVALID_PLAYER_ID;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if((PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_NORMAL || PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_DEAD) && PLAYER_PHONE[i][player_phone_NUMBER] == PLAYER_TEMP[playerid][pt_PLAYER_PHONE_NUMBER_SELECTED])
{
to_playerid = i;
break;
}
}
}
if(to_playerid == INVALID_PLAYER_ID) RegisterPhoneMessage(PLAYER_PHONE[playerid][player_phone_NUMBER], PLAYER_TEMP[playerid][pt_PLAYER_PHONE_NUMBER_SELECTED], inputtext, true);
else
{
RegisterPhoneMessage(PLAYER_PHONE[playerid][player_phone_NUMBER], PLAYER_TEMP[playerid][pt_PLAYER_PHONE_NUMBER_SELECTED], inputtext);
if(PLAYER_PHONE[to_playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(to_playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(to_playerid, PLAYER_PHONE[playerid][player_phone_NUMBER]), inputtext);
}
SendClientMessageEx(playerid, -1, "Mensaje enviado a {7b9cd1}%s.", convertPhoneNumber(playerid, PLAYER_TEMP[playerid][pt_PLAYER_PHONE_NUMBER_SELECTED]));
}
else ShowDialog(playerid, DIALOG_PHONE_SMS_MESSAGE);
return 1;
}
case DIALOG_PHONE_BOOK_SEND_MESSAGE:
{
if(response)
{
if(isnull(inputtext)) return ShowDialog(playerid, dialogid);
if(strlen(inputtext) > 64) return ShowDialog(playerid, dialogid);
new DB_Query[100];
format(DB_Query, sizeof(DB_Query), "SELECT * FROM `PHONE` WHERE `PHONE_NUMBER` = '%d';", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPhoneNumberSendMessage", "is", playerid, inputtext);
return 1;
}
else ShowDialog(playerid, DIALOG_PHONE_BOOK_OPTIONS);
return 1;
}
case DIALOG_PHONE_SENT_MESSAGES:
{
if(!response) ShowDialog(playerid, DIALOG_PHONE);
return 1;
}
case DIALOG_PHONE_RECEIVED_MESSAGES:
{
if(!response) ShowDialog(playerid, DIALOG_PHONE);
return 1;
}
case DIALOG_CONFIRM_BUY_PROPERTY:
{
if(response)
{
if(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_SOLD]) return SendClientMessage(playerid, -1, "{999999}Está propiedad ya está vendida.");
if(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_LEVEL] > ACCOUNT_INFO[playerid][ac_LEVEL]) return SendClientMessageEx(playerid, -1, "{999999}Necesitas ser como mínimo nivel %d para comprar esta propiedad.", PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_LEVEL]);
if(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_PRICE] > BANK_ACCOUNT[playerid][bank_account_BALANCE]) return SendClientMessage(playerid, -1, "{999999}No.");
if(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_VIP_LEVEL] > ACCOUNT_INFO[playerid][ac_SU]) return SendClientMessage(playerid, -1, "{999999}No.");
if(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXTRA] > ACCOUNT_INFO[playerid][ac_SD]) return SendClientMessage(playerid, -1, "{999999}No.");
new DB_Query_update[350];
if(!PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXTRA])
{
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "PROPIEDAD COMPRADA: -%s$", number_format_thousand(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_PRICE]));
RegisterPhoneMessage(6740, PLAYER_PHONE[playerid][player_phone_NUMBER], message);
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(playerid, 6740), message);
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] -= PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_PRICE];
format
(
DB_Query_update, sizeof(DB_Query_update),
"UPDATE `BANK_ACCOUNTS` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';",
BANK_ACCOUNT[playerid][bank_account_BALANCE], BANK_ACCOUNT[playerid][bank_account_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_BUY_PROPERTY, PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_PRICE]);
}
else
{
ACCOUNT_INFO[playerid][ac_SD] -= PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXTRA];
format(DB_Query_update, sizeof(DB_Query_update), "UPDATE `CUENTA` SET `SD` = '%d' WHERE `ID` = '%d';", ACCOUNT_INFO[playerid][ac_SD], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query_update);
SendClientMessageEx(playerid, -1, "Has gastado %d "SERVER_COIN" en la compra de esta propiedad.", PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXTRA]);
}
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_SOLD] = true;
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_CREW] = false;
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_OWNER_ID] = ACCOUNT_INFO[playerid][ac_ID];
format
(
DB_Query_update, sizeof(DB_Query_update),
"INSERT INTO `PROPERTY_OWNER` (`ID_PROPERTY`, `ID_USER`, `PROPERTY_NAME`) VALUES ('%d', '%d', '%q');",
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_ID], ACCOUNT_INFO[playerid][ac_ID], PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_NAME]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
new label_str[256], info_arr[3];
format
(
label_str,
sizeof label_str,
"\
Propiedad {C4FF66}#%d\n\n\
{FFFFFF}Propietario: {C4FF66}%s\n\
{FFFFFF}Usa {C4FF66}/entrar {FFFFFF}para entrar.\
", PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_ID], ACCOUNT_INFO[playerid][ac_NAME]
);
UpdateDynamic3DTextLabelText(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_LABEL_ID], 0xFFFFFFFF, label_str);
DestroyDynamicPickup(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_PICKUP_ID]);
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_PICKUP_ID] = INVALID_STREAMER_ID;
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_PICKUP_ID] = CreateDynamicPickup(0, 1, PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_X], PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_Y], PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_Z], 0, PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_INTERIOR]);
info_arr[0] = PICKUP_TYPE_PROPERTY;
info_arr[1] = PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]; // Index
info_arr[2] = 2; // Pickup Exterior
Streamer_SetArrayData(STREAMER_TYPE_PICKUP, PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_EXT_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
SendClientMessageEx(playerid, -1, "{6a98e2}¡Propiedad #%d comprada! {FFFFFF}Ahora puedes ir a tu casa, si no sabes donde es puedes marcarla con el {6a98e2}/GPS.", PROPERTY_INFO[PLAYER_TEMP[playerid][pt_BUY_HOUSE_INDEX]][property_ID]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
}
return 1;
}
case DIALOG_PLAYER_GPS:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER);
case 1: ShowDialog(playerid, DIALOG_PLAYER_GPS_PROPERTIES);
case 2: ShowDialog(playerid, DIALOG_PLAYER_GPS_VEHICLES);
case 3: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITES);
case 4: ShowDialog(playerid, DIALOG_PLAYER_GPS_WORKS);
case 5:
{
if(PLAYER_TEMP[playerid][pt_GPS_MAP]) HidePlayerGpsMap(playerid);
else ShowPlayerGpsMap(playerid);
}
}
}
return 1;
}
case DIALOG_PLAYER_GPS_PLAYER:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return ShowDialog(playerid, dialogid);
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == MAX_PLAYER_GPS_SAVES + 10) return ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER_ADD);
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == MAX_PLAYER_GPS_SAVES + 20) return ShowDialog(playerid, DIALOG_PLAYER_GPS_DELETE_ALL);
PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER_OPTION);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS);
return 1;
}
case DIALOG_PLAYER_GPS_PLAYER_ADD:
{
if(response)
{
if(isnull(inputtext))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
ShowDialog(playerid, dialogid);
return 1;
}
if(strlen(inputtext) > 24)
{
SendClientMessage(playerid, -1, "{999999}Caracteres: 1-24.");
ShowDialog(playerid, dialogid);
return 1;
}
new slot = GetEmptyPlayer_GPS_Slot(playerid);
if(slot == -1) return SendClientMessage(playerid, -1, "{999999}Memoria del GPS llena.");
PLAYER_GPS[playerid][slot][player_gps_VALID] = true;
format(PLAYER_GPS[playerid][slot][player_gps_NAME], 24, "%s", inputtext);
GetPlayerPos(playerid, PLAYER_GPS[playerid][slot][player_gps_X], PLAYER_GPS[playerid][slot][player_gps_Y], PLAYER_GPS[playerid][slot][player_gps_Z]);
PLAYER_GPS[playerid][slot][player_gps_WORLD] = GetPlayerVirtualWorld(playerid);
PLAYER_GPS[playerid][slot][player_gps_INTERIOR] = GetPlayerInterior(playerid);
RegisterNewPlayer_GPS_Site(playerid, slot, true);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "Nuevo sitio añadido al GPS con el nombre: {6a98e2}%s.", PLAYER_GPS[playerid][slot][player_gps_NAME]);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER);
return 1;
}
case DIALOG_PLAYER_GPS_PLAYER_OPTION:
{
if(response)
{
switch(listitem)
{
case 0: SetPlayer_GPS_Checkpoint(playerid, PLAYER_GPS[playerid][PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED]][player_gps_X], PLAYER_GPS[playerid][PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED]][player_gps_Y], PLAYER_GPS[playerid][PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED]][player_gps_Z], PLAYER_GPS[playerid][PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED]][player_gps_WORLD], PLAYER_GPS[playerid][PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED]][player_gps_INTERIOR]);
case 1: ShowDialog(playerid, DIALOG_PLAYER_GPS_CHANGE_NAME);
case 2: ShowDialog(playerid, DIALOG_PLAYER_GPS_CONFIRM_DELET);
}
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER);
return 1;
}
case DIALOG_PLAYER_GPS_CHANGE_NAME:
{
if(response)
{
if(isnull(inputtext))
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
ShowDialog(playerid, dialogid);
return 1;
}
if(strlen(inputtext) > 24)
{
SendClientMessage(playerid, -1, "{999999}Caracteres: 1-24.");
ShowDialog(playerid, dialogid);
return 1;
}
format(PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_NAME], 24, "%s", inputtext);
new DB_Query[160];
format(DB_Query, sizeof DB_Query, "UPDATE `PLAYER_GPS` SET `NAME` = '%q' WHERE `ID` = '%d' AND `ID_USER` = '%d';", PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_NAME], PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_ID], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "Has modificado el nombre de este lugar correctamente");
ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER_OPTION);
return 1;
}
case DIALOG_PLAYER_GPS_CONFIRM_DELET:
{
if(response)
{
new DB_Query[110];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_GPS` WHERE `ID` = '%d' AND `ID_USER` = '%d';", PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_ID], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_VALID] = false;
PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_ID] = 0;
format(PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_NAME], 24, "");
PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_X] = 0.0;
PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_Y] = 0.0;
PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_Z] = 0.0;
PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_WORLD] = 0;
PLAYER_GPS[playerid][ PLAYER_TEMP[playerid][pt_GPS_PLAYER_SELECTED] ][player_gps_INTERIOR] = 0;
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "Has eliminado este lugar de tu GPS.");
ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER_OPTION);
return 1;
}
case DIALOG_PLAYER_GPS_DELETE_ALL:
{
if(response)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_GPS` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_PLAYER_GPS[Player_GPS_Enum];
for(new i = 0; i != MAX_PLAYER_GPS_SAVES; i ++) PLAYER_GPS[playerid][i] = temp_PLAYER_GPS;
SendClientMessage(playerid, -1, "{CCCCCC}Ha eliminado todos tus lugares guardados.");
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS_PLAYER);
return 1;
}
case DIALOG_PLAYER_GPS_SITES:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_0);
case 1: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_1);
case 2: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_2);
case 3: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_3);
case 4: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_4);
case 5: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_5);
case 6: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_6);
case 7: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_7);
case 8: SetPlayer_GPS_Checkpoint(playerid, 1480.966918, -1772.065673, 18.795755, 0, 0);
case 9: ShowDialog(playerid, DIALOG_PLAYER_GPS_SITE_8);
case 10: SetPlayer_GPS_Checkpoint(playerid, 263.592102, 22.960014, 2.170951, 0, 0);
}
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS);
return 1;
}
case DIALOG_PLAYER_GPS_WORKS:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return true;
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == WORK_MEDIC) SendClientMessage(playerid, -1, "{CCCCCC}Este trabajo se puede conseguir en cualquier hospital.");
else SetPlayer_GPS_Checkpoint(playerid, obtain_work_coords[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][obtain_work_MAP_ICON_X], obtain_work_coords[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][obtain_work_MAP_ICON_Y], obtain_work_coords[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][obtain_work_MAP_ICON_Z], 0, 0);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS);
return 1;
}
case DIALOG_PLAYER_GPS_SITE_0: //Hospitales
{
if(response) SetPlayer_GPS_Checkpoint(playerid, Hospital_Spawn_Positions[listitem][0], Hospital_Spawn_Positions[listitem][1], Hospital_Spawn_Positions[listitem][2], 0, 0);
else ShowDialog(playerid, DIALOG_PLAYER_GPS_SITES);
return 1;
}
case DIALOG_PLAYER_GPS_SITE_1 .. DIALOG_PLAYER_GPS_SITE_4, DIALOG_PLAYER_GPS_SITE_8: //EE
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return ShowDialog(playerid, DIALOG_PLAYER_GPS);
SetPlayer_GPS_Checkpoint(playerid, ENTER_EXIT[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][ee_EXT_X], ENTER_EXIT[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][ee_EXT_Y], ENTER_EXIT[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][ee_EXT_Z], ENTER_EXIT[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][ee_EXT_WORLD], ENTER_EXIT[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][ee_EXT_INTERIOR]);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS_SITES);
return 1;
}
case DIALOG_PLAYER_GPS_SITE_5: //Cajeros
{
if(response) SetPlayer_GPS_Checkpoint(playerid, ATM_BANK[listitem][atm_X], ATM_BANK[listitem][atm_Y], ATM_BANK[listitem][atm_Z], ATM_BANK[listitem][atm_WORLD], ATM_BANK[listitem][atm_INTERIOR]);
else ShowDialog(playerid, DIALOG_PLAYER_GPS_SITES);
return 1;
}
case DIALOG_PLAYER_GPS_SITE_6: //Gasolineras
{
if(response) SetPlayer_GPS_Checkpoint(playerid, Fuel_Stations[listitem][0], Fuel_Stations[listitem][1], Fuel_Stations[listitem][2], 0, 0);
else ShowDialog(playerid, DIALOG_PLAYER_GPS_SITES);
return 1;
}
case DIALOG_TRABAJOS_TELEPORTS:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return true;
else SetPlayerPosEx(playerid,obtain_work_coords[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][obtain_work_MAP_ICON_X], obtain_work_coords[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][obtain_work_MAP_ICON_Y], obtain_work_coords[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][obtain_work_MAP_ICON_Z],0.0,0,0,true);
}
return 1;
}
case DIALOG_PLAYER_GPS_SITE_7: //Concesionarios
{
if(response) SetPlayer_GPS_Checkpoint(playerid, SELL_VEHICLES_SHOPS_SPAWN[listitem][0], SELL_VEHICLES_SHOPS_SPAWN[listitem][1], SELL_VEHICLES_SHOPS_SPAWN[listitem][2], 0, 0);
else ShowDialog(playerid, DIALOG_PLAYER_GPS_SITES);
return 1;
}
case DIALOG_PLAYER_GPS_PROPERTIES:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_GPS_SELECTED_PROPERTY][listitem] == -1) return ShowDialog(playerid, DIALOG_PLAYER_GPS);
new index = GetPropertyIndexByID(PLAYER_TEMP[playerid][pt_PLAYER_GPS_SELECTED_PROPERTY][listitem]);
if(index != -1) SetPlayer_GPS_Checkpoint(playerid, PROPERTY_INFO[index][property_EXT_X], PROPERTY_INFO[index][property_EXT_Y], PROPERTY_INFO[index][property_EXT_Z], 0, PROPERTY_INFO[index][property_EXT_INTERIOR]);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS);
return 1;
}
case DIALOG_PLAYER_GPS_VEHICLES:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return ShowDialog(playerid, DIALOG_PLAYER_GPS);
if(!ACCOUNT_INFO[playerid][ac_SU])
{
if(!PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][player_vehicle_ACCESSIBLE])
{
SendClientMessage(playerid, -1, "{999999}No podrás usar este vehículo hasta que no consigas VIP.");
}
}
new Float:pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem], pos[0], pos[1], pos[2]);
SetPlayer_GPS_Checkpoint(playerid, pos[0], pos[1], pos[2], 0, 0);
}
else ShowDialog(playerid, DIALOG_PLAYER_GPS);
return 1;
}
case DIALOG_PROPERTY_OPTIONS:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_PROPERTY_NAME);
case 1:
{
new total;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if( CHARACTER_INFO[i][ch_STATE] == ROLEPLAY_STATE_GUEST_PROPERTY && CHARACTER_INFO[i][ch_INTERIOR_EXTRA] == PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID])
{
CHARACTER_INFO[i][ch_STATE] = ROLEPLAY_STATE_NORMAL;
CHARACTER_INFO[i][ch_INTERIOR_EXTRA] = 0;
PLAYER_TEMP[i][pt_PROPERTY_INDEX] = -1;
SetPlayerPosEx(i, PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_X], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Y], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Z], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_ANGLE], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_INTERIOR], 0, PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_FREEZE], false);
StopAudioStreamForPlayer(i);
SendClientMessageEx(i, -1, "{bad2d8}%s {FFFFFF}te ha echado de su propiedad.", PLAYER_TEMP[playerid][pt_RP_NAME]);
total ++;
}
}
}
if(total == 0) SendClientMessage(playerid, -1, "{999999}No hay nadie en tu propiedad.");
else SendClientMessageEx(playerid, -1, "{CCCCCC}Has echado %d personas de tu propiedad.", total);
}
case 2:
{
if(!PLAYER_OBJECT[playerid][po_MP3])
{
SendClientMessageEx(playerid, -1, "{999999}No tienes ningún MP3, puedes ir a cualquier 24/7 para comprar uno.");
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
return 1;
}
if(PLAYER_TEMP[playerid][pt_PLAYER_WAITING_MP3_HTTP]) return SendClientMessage(playerid, -1, "{999999}Espera que termine la búsqueda actual.");
PLAYER_TEMP[playerid][pt_MUSIC_FOR_PROPERTY] = true;
Auto_SendPlayerAction(playerid, "busca música en su MP3.");
ShowDialog(playerid, DIALOG_PLAYER_MP3);
}
case 3:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_ADD_PROPERTIES]) return SendClientMessage(playerid, -1, "{999999}No tienes permiso.");
for(new i = 0; i != MAX_TERRITORIES; i ++)
{
if(!TERRITORIES[i][territory_VALID]) continue;
if(!TERRITORIES[i][territory_OCCUPIED]) continue;
if(TERRITORIES[i][territory_CREW_ID] != PLAYER_CREW[playerid][player_crew_ID]) continue;
if(IsPointInDynamicArea(TERRITORIES[i][territory_AREA], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_X], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Y], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Z]))
{
PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] = i;
ShowDialog(playerid, DIALOG_CREW_PROPERTY_CONFIRM);
return 1;
}
}
SendClientMessage(playerid, -1, "{999999}Esta propiedad no está dentro de un territorio de tu banda.");
}
}
}
return 1;
}
case DIALOG_PROPERTY_NAME:
{
if(response)
{
if(!PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_VALID]) return 1;
if(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_OWNER_ID] != ACCOUNT_INFO[playerid][ac_ID]) return 1;
if(isnull(inputtext)) return ShowDialog(playerid, dialogid);
if(strlen(inputtext) > 24)
{
ShowDialog(playerid, dialogid);
SendClientMessage(playerid, 0x999999AA, "{999999}Caracteres: 1-24.");
return 1;
}
format(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME], 24, "%s", inputtext);
new DB_Query[200];
format(DB_Query, sizeof DB_Query, "UPDATE `PROPERTY_OWNER` SET `PROPERTY_NAME` = '%q' WHERE `ID_PROPERTY` = '%d' AND `ID_USER` = '%d';", inputtext, PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessageEx(playerid, -1, "{b5d1ff}Nombre de la propiedad actualizado a '%s'.", inputtext);
}
else ShowDialog(playerid, DIALOG_PROPERTY_OPTIONS);
return 1;
}
case DIALOG_PLAYER_MP3:
{
if(response)
{
if(isnull(inputtext)) return ShowDialog(playerid, dialogid);
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, "Cargando ...", "Espera mientras buscamos resultados para su búsqueda ...", "X", "");
new title[100 + 1];
title = SpaceFix(inputtext);
new str[180]; format(str, sizeof str, "super-roleplay.net/busqueda-youtube.php?limit=10&song_title=%s", title);
PLAYER_TEMP[playerid][pt_PLAYER_WAITING_MP3_HTTP] = true;
HTTP(playerid, HTTP_GET, str, "", "OnPlayerSongFound");
}
return 1;
}
case DIALOG_PLAYER_MP3_RESULTS:
{
if(response)
{
new url[128];
format(url, 128, "http://www.youtubeinmp3.com/fetch/?video=http://www.youtube.com/watch?v=%s", PLAYER_DIALOG_MP3_RESULT[playerid][listitem][videoID]);
if(PLAYER_TEMP[playerid][pt_MUSIC_FOR_PROPERTY])
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if( (CHARACTER_INFO[i][ch_STATE] == ROLEPLAY_STATE_OWN_PROPERTY || CHARACTER_INFO[i][ch_STATE] == ROLEPLAY_STATE_GUEST_PROPERTY) && CHARACTER_INFO[i][ch_INTERIOR_EXTRA] == CHARACTER_INFO[playerid][ch_INTERIOR_EXTRA])
{
PlayAudioStreamForPlayerEx(i, url);
SendClientMessageEx(i, -1, "{CCCCCC}Reproduciendo {90C3D4}'%s' {CCCCCC}usa {CCFF00}/stop {CCCCCC}para parar la música.", PLAYER_DIALOG_MP3_RESULT[playerid][listitem][yt_title]);
}
}
}
PLAYER_TEMP[playerid][pt_MUSIC_FOR_PROPERTY] = false;
Auto_SendPlayerAction(playerid, "pone música en su propiedad.");
}
else if(PLAYER_TEMP[playerid][pt_MUSIC_FOR_VEHICLE])
{
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if(IsPlayerInAnyVehicle(i))
{
if(GetPlayerVehicleID(playerid) == GetPlayerVehicleID(i))
{
PlayAudioStreamForPlayerEx(i, url);
SendClientMessageEx(i, -1, "{CCCCCC}Reproduciendo {90C3D4}'%s' {CCCCCC}usa {CCFF00}/stop {CCCCCC}para parar la música.", PLAYER_DIALOG_MP3_RESULT[playerid][listitem][yt_title]);
}
}
}
}
PLAYER_TEMP[playerid][pt_MUSIC_FOR_VEHICLE] = false;
if(PLAYER_VEHICLES[ GetPlayerVehicleID(playerid) ][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID]) Auto_SendPlayerAction(playerid, "pone música en su vehículo.");
else Auto_SendPlayerAction(playerid, "pone música en el vehículo.");
}
else
{
PlayAudioStreamForPlayerEx(playerid, url);
SendClientMessageEx(playerid, -1, "{CCCCCC}Reproduciendo {90C3D4}'%s' {CCCCCC}usa {CCFF00}/stop {CCCCCC}para parar la música.", PLAYER_DIALOG_MP3_RESULT[playerid][listitem][yt_title]);
Auto_SendPlayerAction(playerid, "escucha música de su MP3 en sus auriculares.");
}
}
return 1;
}
case DIALOG_BUY_VEHICLE:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] == INVALID_VEHICLE_ID) return 1;
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
if(GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_TYPE] != VEHICLE_TYPE_SELL) return 1;
if(!SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_VALID]) return 1;
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_VIP_LEVEL] > ACCOUNT_INFO[playerid][ac_SU]) return 1;
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_LEVEL] > ACCOUNT_INFO[playerid][ac_LEVEL]) return 1;
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0) return 1;
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE] > BANK_ACCOUNT[playerid][bank_account_BALANCE]) return 1;
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA] > ACCOUNT_INFO[playerid][ac_SD]) return 1;
new vid = AddPersonalVehicle
(
playerid,
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_MODELID],
SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][0],
SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][1],
SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][2],
SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][3],
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_COLOR_1],
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_COLOR_2],
VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_MAX_GAS]
);
if(!vid) return SendClientMessage(playerid, -1, "{999999}No se pueden añadir más vehículos.");
if(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA])
{
ACCOUNT_INFO[playerid][ac_SD] -= SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA];
new DB_Query_update[160];
format(DB_Query_update, sizeof(DB_Query_update), "UPDATE `CUENTA` SET `SD` = '%d' WHERE `ID` = '%d';", ACCOUNT_INFO[playerid][ac_SD], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query_update);
SendClientMessageEx(playerid, -1, "Has gastado %d "SERVER_COIN" en la compra de este vehículo.", SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_EXTRA]);
}
else
{
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "VEHICULO COMPRADO: -%s$", number_format_thousand(SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE]));
RegisterPhoneMessage(6740, PLAYER_PHONE[playerid][player_phone_NUMBER], message);
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(playerid, 6740), message);
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] -= SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE];
new DB_Query_update[160];
format(DB_Query_update, sizeof(DB_Query_update), "UPDATE `BANK_ACCOUNTS` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';", BANK_ACCOUNT[playerid][bank_account_BALANCE], BANK_ACCOUNT[playerid][bank_account_ID]);
mysql_tquery(SMF_DATABASE, DB_Query_update);
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_BUY_VEHICLE, SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_PRICE]);
}
SendClientMessage(playerid, -1, "{6a98e2}¡Vehículo comprado! {FFFFFF}Utiliza {6a98e2}/ayuda vehiculos {FFFFFF}para ver que puedes hacer con tu vehículo.");
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
new Float:pos[4];
pos[0] = SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][0];
pos[1] = SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][1];
pos[2] = SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][2];
pos[3] = SELL_VEHICLES_SHOPS_SPAWN[ SELL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_VEHICLE_ID] ][sell_vehicle_SHOP] ][3];
pos[0] += (2.0 * floatsin(-(pos[3] + 90.0), degrees));
pos[1] += (2.0 * floatcos(-(pos[3] + 90.0), degrees));
SetPlayerPosEx(playerid, pos[0], pos[1], pos[2], pos[3], 0, 0);
if(!ACCOUNT_INFO[playerid][ac_SU]) ReLockPlayerVehicles(playerid);
}
return 1;
}
case DIALOG_NOTARY:
{
if(response)
{
switch(listitem)
{
case 0:
{
PLAYER_TEMP[playerid][pt_NOTARY_OPTION] = 0;
ShowDialog(playerid, DIALOG_NOTARY_SELECT_PROPERTY);
}
case 1:
{
PLAYER_TEMP[playerid][pt_NOTARY_OPTION] = 0;
ShowDialog(playerid, DIALOG_NOTARY_SELECT_VEHICLE);
}
case 2:
{
PLAYER_TEMP[playerid][pt_NOTARY_OPTION] = 1;
ShowDialog(playerid, DIALOG_NOTARY_SELECT_PROPERTY);
}
case 3:
{
PLAYER_TEMP[playerid][pt_NOTARY_OPTION] = 1;
ShowDialog(playerid, DIALOG_NOTARY_SELECT_VEHICLE);
}
}
}
return 1;
}
case DIALOG_NOTARY_SELECT_PROPERTY:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] = GetPropertyIndexByID(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem]);
if(PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] == -1) return SendClientMessage(playerid, -1, "PROPIEDAD ID no encontrada.");
switch(PLAYER_TEMP[playerid][pt_NOTARY_OPTION])
{
case 0: ShowDialog(playerid, DIALOG_PROPERTY_BANK_SELL);
case 1: ShowDialog(playerid, DIALOG_PROPERTY_SELL_PRICE);
case 2:
{
PLAYER_TEMP[playerid][pt_SHOP_ADD_TYPE] = SHOP_ARTICLE_TYPE_PROPERTY;
PLAYER_TEMP[playerid][pt_SHOP_ADD_MODELID] = 1273;
PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL1] = 0;
PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL2] = 0;
ShowDialog(playerid, DIALOG_SHOP_ADD_TEXT);
}
}
}
else
{
if(PLAYER_TEMP[playerid][pt_NOTARY_OPTION] == 2) ShowDialog(playerid, DIALOG_SHOP_ADD);
else ShowDialog(playerid, DIALOG_NOTARY);
}
return 1;
}
case DIALOG_PROPERTY_BANK_SELL:
{
if(response)
{
if(!PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_VALID]) return 1;
if(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_OWNER_ID] != ACCOUNT_INFO[playerid][ac_ID]) return 1;
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0) return SendClientMessage(playerid, -1, "{999999}Necesitas tener una cuenta bancaria para vender la propiedad.");
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_SOLD] = false;
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_CREW] = false;
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_OWNER_ID] = 0;
format(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME], 24, "PROPIEDAD %d", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID]);
new info_arr[3];
UpdateUnnocupiedPropertyLabel(PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]);
DestroyDynamicPickup(PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_PICKUP_ID]);
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_PICKUP_ID] = INVALID_STREAMER_ID;
PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_PICKUP_ID] = CreateDynamicPickup(1273, 1, PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_X], PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_Y], PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_Z], 0, PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_INTERIOR]);
info_arr[0] = PICKUP_TYPE_PROPERTY;
info_arr[1] = PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]; // Index
info_arr[2] = 2; // Pickup Exterior
Streamer_SetArrayData(STREAMER_TYPE_PICKUP, PROPERTY_INFO[PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]][property_EXT_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
new Float:price, payment;
price = PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_PRICE_BASE];
if(ACCOUNT_INFO[playerid][ac_SU]) payment = floatround( floatmul(price, 0.50) );
else payment = floatround( floatmul(price, 0.25) );
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "PROPIEDAD VENDIDA: +%s$", number_format_thousand(payment));
RegisterPhoneMessage(6740, PLAYER_PHONE[playerid][player_phone_NUMBER], message);
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(playerid, 6740), message);
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] += payment;
new DB_Query_update[350];
format(DB_Query_update, sizeof(DB_Query_update), "\
UPDATE `BANK_ACCOUNTS` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';\
DELETE FROM `PROPERTY_OWNER` WHERE `ID_PROPERTY` = '%d' AND `ID_USER` = '%d';\
",
BANK_ACCOUNT[playerid][bank_account_BALANCE], BANK_ACCOUNT[playerid][bank_account_ID],
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID], ACCOUNT_INFO[playerid][ac_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_SOLD_PROPERTY, payment);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has vendido esta propiedad, has recibido %s$ en tu cuenta bancaria.", number_format_thousand(payment));
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
}
else ShowDialog(playerid, DIALOG_NOTARY_SELECT_PROPERTY);
return 1;
}
case DIALOG_PROPERTY_SELL_PRICE:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0])) return ShowDialog(playerid, dialogid);
new Float:price, min_price, max_price;
price = PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_PRICE];
min_price = floatround( floatmul(price, 0.15) );
max_price = floatround( floatmul(price, 6.0) );
if(inputtext[0] < min_price || inputtext[0] > max_price)
{
SendClientMessage(playerid, -1, "{999999}Este precio no está dentro del rango ofrecido.");
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_NOTARY_PRICE] = inputtext[0];
ShowDialog(playerid, DIALOG_PROPERTY_SELL_TO_PLAYER);
}
else ShowDialog(playerid, DIALOG_NOTARY_SELECT_PROPERTY);
return 1;
}
case DIALOG_PROPERTY_SELL_TO_PLAYER:
{
if(response)
{
if(sscanf(inputtext, "u", inputtext[0])) return ShowDialog(playerid, dialogid);
if(!IsPlayerConnected(inputtext[0])) return SendClientMessage(playerid, -1, "{999999}Error, el comprador está desconectado.");
if(inputtext[0] == playerid) return SendClientMessage(playerid, -1, "{999999}¿Pero como te vas a vender algo a ti mismo?");
if(PLAYER_TEMP[inputtext[0]][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}Error, el comprador no está disponible.");
if(ENTER_EXIT[ PLAYER_TEMP[inputtext[0]][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] != INTERIOR_CITY_HALL_LS) return SendClientMessage(playerid, 0x999999AA, "El comprador no está en la sala.");
if(!IsPlayerInRangeOfPoint(inputtext[0], 3.0, -474.596282, 289.679107, 2004.584960)) return SendClientMessage(playerid, 0x999999AA, "El comprador no está en la sala.");
if(BANK_ACCOUNT[inputtext[0]][bank_account_ID] == 0) return SendClientMessage(playerid, 0x999999AA, "El comprador no tiene cuenta bancaria.");
new DB_Query[120];
format(DB_Query, sizeof(DB_Query), "SELECT COUNT(*) AS `PROPERTIES` FROM `PROPERTY_OWNER` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[inputtext[0]][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPlayerPropertyCount", "ii", playerid, inputtext[0]);
}
else ShowDialog(playerid, DIALOG_PROPERTY_SELL_PRICE);
return 1;
}
case DIALOG_SELL_CONFIRM_PROPERTY:
{
if(response)
{
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER])) return SendClientMessage(playerid, -1, "{999999}El vendedor se ha desconectado.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_NOTARY_TO_PLAYER] != playerid) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}Error, el vendedor no está disponible.");
if(ENTER_EXIT[ PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] != INTERIOR_CITY_HALL_LS) return SendClientMessage(playerid, 0x999999AA, "El vendedor no está en la sala.");
if(!IsPlayerInRangeOfPoint(PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER], 3.0, -474.596282, 289.679107, 2004.584960)) return SendClientMessage(playerid, 0x999999AA, "El vendedor no está en la sala.");
if(BANK_ACCOUNT[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][bank_account_ID] == 0) return SendClientMessage(playerid, 0x999999AA, "El vendedor no tiene cuenta bancaria.");
// Traspasar
new label_str[256];
format
(
label_str,
sizeof label_str,
"\
Propiedad {C4FF66}#%d\n\n\
{FFFFFF}Propietario: {C4FF66}%s\n\
{FFFFFF}Usa {C4FF66}/entrar {FFFFFF}para entrar.\
", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID], ACCOUNT_INFO[playerid][ac_NAME]
);
UpdateDynamic3DTextLabelText(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_LABEL_ID], 0xFFFFFFFF, label_str);
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_OWNER_ID] = ACCOUNT_INFO[playerid][ac_ID];
new DB_Query_update[350];
format(DB_Query_update, sizeof(DB_Query_update), "UPDATE `PROPERTY_OWNER` SET `ID_USER` = '%d' WHERE `ID_PROPERTY` = '%d';",
ACCOUNT_INFO[playerid][ac_ID],
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
// Banco
new price = PLAYER_TEMP[playerid][pt_NOTARY_PRICE], seller = PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER];
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "PROPIEDAD COMPRADA: -%s$", number_format_thousand(price));
RegisterPhoneMessage(6740, PLAYER_PHONE[playerid][player_phone_NUMBER], message);
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(playerid, 6740), message);
}
if(PLAYER_PHONE[seller][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "PROPIEDAD VENDIDA: +%s$", number_format_thousand(price));
RegisterPhoneMessage(6740, PLAYER_PHONE[seller][player_phone_NUMBER], message);
if(PLAYER_PHONE[seller][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(seller, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(seller, 6740), message);
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] -= price;
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_BUY_PROPERTY, price);
BANK_ACCOUNT[seller][bank_account_BALANCE] += price;
RegisterBankAccountTransaction(BANK_ACCOUNT[seller][bank_account_ID], BANK_TRANSACTION_SOLD_PROPERTY, price);
format(DB_Query_update, sizeof(DB_Query_update),
"\
UPDATE `BANK_ACCOUNT` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';\
UPDATE `BANK_ACCOUNT` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';\
",
BANK_ACCOUNT[playerid][bank_account_BALANCE], BANK_ACCOUNT[playerid][bank_account_ID],
BANK_ACCOUNT[seller][bank_account_BALANCE], BANK_ACCOUNT[seller][bank_account_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
SendClientMessageEx(playerid, -1, "{6a98e2}¡Propiedad #%d comprada! {FFFFFF}Ahora puedes ir a tu casa, si no sabes donde es puedes marcarla con el {6a98e2}/GPS.", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID]);
SendClientMessageEx(seller, -1, "{6a98e2}¡Propiedad #%d vendida! {FFFFFF}Has recibido {d1f442}%s$ {FFFFFF}en tu cuenta bancaria.", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID], number_format_thousand(price));
PlayerPlaySoundEx(seller, 1058, 0.0, 0.0, 0.0);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
new action[64]; format(action, sizeof action, "y %s han llegado a un acuerdo.", PLAYER_TEMP[seller][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
}
return 1;
}
case DIALOG_NOTARY_SELECT_VEHICLE:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
switch(PLAYER_TEMP[playerid][pt_NOTARY_OPTION])
{
case 0: ShowDialog(playerid, DIALOG_VEHICLE_BANK_SELL);
case 1: ShowDialog(playerid, DIALOG_VEHICLE_SELL_PRICE);
case 2:
{
PLAYER_TEMP[playerid][pt_SHOP_ADD_TYPE] = SHOP_ARTICLE_TYPE_VEHICLE;
PLAYER_TEMP[playerid][pt_SHOP_ADD_MODELID] = GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID];
PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL1] = GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_COLOR_1];
PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL2] = GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_COLOR_2];
ShowDialog(playerid, DIALOG_SHOP_ADD_TEXT);
}
}
}
else
{
if(PLAYER_TEMP[playerid][pt_NOTARY_OPTION] == 2) ShowDialog(playerid, DIALOG_SHOP_ADD);
else ShowDialog(playerid, DIALOG_NOTARY);
}
return 1;
}
case DIALOG_VEHICLE_BANK_SELL:
{
if(response)
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_VALID]) return 1;
if(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][player_vehicle_OWNER_ID] != ACCOUNT_INFO[playerid][ac_ID]) return 1;
if(BANK_ACCOUNT[playerid][bank_account_ID] == 0) return SendClientMessage(playerid, -1, "{999999}Necesitas tener una cuenta bancaria para vender el vehículo.");
new Float:price, payment;
price = VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_PRICE];
if(ACCOUNT_INFO[playerid][ac_SU]) payment = floatround( floatmul(price, 0.50) );
else payment = floatround( floatmul(price, 0.25) );
//Destruir veh
new DB_Query_update[350];
format(DB_Query_update, sizeof(DB_Query_update), "DELETE FROM `PLAYER_VEHICLES` WHERE `ID` = '%d';", PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][player_vehicle_ID]);
mysql_tquery(SMF_DATABASE, DB_Query_update);
DestroyVehicleEx(PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED]);
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "VEHICULO VENDIDO: +%s$", number_format_thousand(payment));
RegisterPhoneMessage(6740, PLAYER_PHONE[playerid][player_phone_NUMBER], message);
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(playerid, 6740), message);
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] += payment;
format(DB_Query_update, sizeof(DB_Query_update), "UPDATE `BANK_ACCOUNTS` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';", BANK_ACCOUNT[playerid][bank_account_BALANCE], BANK_ACCOUNT[playerid][bank_account_ID]);
mysql_tquery(SMF_DATABASE, DB_Query_update);
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_SOLD_VEHICLE, payment);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has vendido este vehículo, has recibido %s$ en tu cuenta bancaria.", number_format_thousand(payment));
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
if(!ACCOUNT_INFO[playerid][ac_SU]) ReLockPlayerVehicles(playerid);
}
else ShowDialog(playerid, DIALOG_NOTARY_SELECT_VEHICLE);
return 1;
}
case DIALOG_VEHICLE_SELL_PRICE:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0])) return ShowDialog(playerid, dialogid);
new Float:price, min_price, max_price;
price = VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_PRICE];
min_price = floatround( floatmul(price, 0.15) );
max_price = floatround( floatmul(price, 6.0) );
if(inputtext[0] < min_price || inputtext[0] > max_price)
{
SendClientMessage(playerid, -1, "{999999}Este precio no está dentro del rango ofrecido.");
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_NOTARY_PRICE] = inputtext[0];
ShowDialog(playerid, DIALOG_VEHICLE_SELL_TO_PLAYER);
}
else ShowDialog(playerid, DIALOG_NOTARY_SELECT_VEHICLE);
return 1;
}
case DIALOG_VEHICLE_SELL_TO_PLAYER:
{
if(response)
{
if(sscanf(inputtext, "u", inputtext[0])) return ShowDialog(playerid, dialogid);
if(!IsPlayerConnected(inputtext[0])) return SendClientMessage(playerid, -1, "{999999}Error, el comprador está desconectado.");
if(inputtext[0] == playerid) return SendClientMessage(playerid, -1, "{999999}¿Pero como te vas a vender algo a ti mismo?");
if(PLAYER_TEMP[inputtext[0]][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}Error, el comprador no está disponible.");
if(ENTER_EXIT[ PLAYER_TEMP[inputtext[0]][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] != INTERIOR_CITY_HALL_LS) return SendClientMessage(playerid, 0x999999AA, "El comprador no está en la sala.");
if(!IsPlayerInRangeOfPoint(inputtext[0], 3.0, -474.596282, 289.679107, 2004.584960)) return SendClientMessage(playerid, 0x999999AA, "El comprador no está en la sala.");
if(BANK_ACCOUNT[inputtext[0]][bank_account_ID] == 0) return SendClientMessage(playerid, 0x999999AA, "El comprador no tiene cuenta bancaria.");
new DB_Query[120];
format(DB_Query, sizeof(DB_Query), "SELECT COUNT(`ID_USER`) AS `VEHICLES` FROM `PLAYER_VEHICLES` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[inputtext[0]][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPlayerVehicleCount", "ii", playerid, inputtext[0]);
}
else ShowDialog(playerid, DIALOG_PROPERTY_SELL_PRICE);
return 1;
}
case DIALOG_SELL_CONFIRM_VEHICLE:
{
if(response)
{
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER])) return SendClientMessage(playerid, -1, "{999999}El vendedor se ha desconectado.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_NOTARY_TO_PLAYER] != playerid) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}Error, el vendedor no está disponible.");
if(ENTER_EXIT[ PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][pt_INTERIOR_INDEX] ][ee_INTERIOR_TYPE] != INTERIOR_CITY_HALL_LS) return SendClientMessage(playerid, 0x999999AA, "El vendedor no está en la sala.");
if(!IsPlayerInRangeOfPoint(PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER], 3.0, -474.596282, 289.679107, 2004.584960)) return SendClientMessage(playerid, 0x999999AA, "El vendedor no está en la sala.");
if(BANK_ACCOUNT[ PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] ][bank_account_ID] == 0) return SendClientMessage(playerid, 0x999999AA, "El vendedor no tiene cuenta bancaria.");
// Traspasar
PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][player_vehicle_OWNER_ID] = ACCOUNT_INFO[playerid][ac_ID];
new DB_Query_update[350];
format(DB_Query_update, sizeof(DB_Query_update), "UPDATE `PLAYER_VEHICLES` SET `ID_USER` = '%d' WHERE `ID` = '%d';",
ACCOUNT_INFO[playerid][ac_ID],
PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][player_vehicle_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
// Banco
new price = PLAYER_TEMP[playerid][pt_NOTARY_PRICE], seller = PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER];
if(PLAYER_PHONE[playerid][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "VEHICULO COMPRADO: -%s$", number_format_thousand(price));
RegisterPhoneMessage(6740, PLAYER_PHONE[playerid][player_phone_NUMBER], message);
if(PLAYER_PHONE[playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(playerid, 6740), message);
}
if(PLAYER_PHONE[seller][player_phone_VALID])
{
new message[64]; format(message, sizeof message, "VEHICULO VENDIDO: +%s$", number_format_thousand(price));
RegisterPhoneMessage(6740, PLAYER_PHONE[seller][player_phone_NUMBER], message);
if(PLAYER_PHONE[seller][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(seller, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(seller, 6740), message);
}
BANK_ACCOUNT[playerid][bank_account_BALANCE] -= price;
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_BUY_VEHICLE, price);
BANK_ACCOUNT[seller][bank_account_BALANCE] += price;
RegisterBankAccountTransaction(BANK_ACCOUNT[seller][bank_account_ID], BANK_TRANSACTION_SOLD_VEHICLE, price);
format(DB_Query_update, sizeof(DB_Query_update),
"\
UPDATE `BANK_ACCOUNT` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';\
UPDATE `BANK_ACCOUNT` SET `BALANCE` = '%d' WHERE `ID_ACCOUNT` = '%d';\
",
BANK_ACCOUNT[playerid][bank_account_BALANCE], BANK_ACCOUNT[playerid][bank_account_ID],
BANK_ACCOUNT[seller][bank_account_BALANCE], BANK_ACCOUNT[seller][bank_account_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
SendClientMessageEx(playerid, -1, "{6a98e2}¡Vehículo %s comprado! {FFFFFF}Utiliza {6a98e2}/GPS {FFFFFF}para localizarlo.", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
SendClientMessageEx(seller, -1, "{6a98e2}¡Vehículo vendido! {FFFFFF}Has recibido {d1f442}%s$ {FFFFFF}en tu cuenta bancaria.", number_format_thousand(price));
PlayerPlaySoundEx(seller, 1058, 0.0, 0.0, 0.0);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
new action[64]; format(action, sizeof action, "y %s han llegado a un acuerdo.", PLAYER_TEMP[seller][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
if(!ACCOUNT_INFO[seller][ac_SU]) ReLockPlayerVehicles(seller);
if(!ACCOUNT_INFO[playerid][ac_SU]) ReLockPlayerVehicles(playerid);
}
return 1;
}
case DIALOG_SELECT_TRUCK_TYPE:
{
if(response)
{
if(Truck_Contents[listitem][truck_content_EXP] > PLAYER_SKILLS[playerid][WORK_TRUCK])
{
SendClientMessageEx(playerid, -1, "{999999}Has realizado %d trabajos como camionero, necesitas %d para este viaje.", PLAYER_SKILLS[playerid][WORK_TRUCK], Truck_Contents[listitem][truck_content_EXP]);
ShowDialog(playerid, dialogid);
return 1;
}
new vehicleid = GetPlayerVehicleID(playerid);
TRUCK_VEHICLE[vehicleid][truck_vehicle_POINT] = listitem;
PlayerTextDrawSetString(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][0], "");
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][0]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][1]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][2]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][3]);
PLAYER_TEMP[playerid][pt_TRUCK_LOADING_VALUE] = 35.0;
UpdatePlayerLoadingTruckSize(playerid);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][7]);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][9]);
PLAYER_TEMP[playerid][pt_TIMERS][9] = SetTimerEx("TruckLoadUp", 1000, false, "ii", playerid, vehicleid);
SendClientMessage(playerid,0xCCCCCCCC,"Info: El camión se está cargando, si sales de él se cancelará el viaje.");
}
else
{
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][9]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][0]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][1]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][2]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][3]);
SetVehicleToRespawnEx(GetPlayerVehicleID(playerid));
}
return 1;
}
case DIALOG_TUNING_MENU_PART:
{
if(response)
{
if(isnull(PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_NAME])) return 1;
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] < PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_PIECES])
{
ShowDialog(playerid, dialogid);
SendClientMessage(playerid, -1, "{999999}No tienes suficientes piezas, puedes comprar más piezas en el taller.");
return 1;
}
format(PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PART], 24, "%s", PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_NAME]);
PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES] = PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_PIECES];
ShowDialog(playerid, DIALOG_TUNING_MENU_COMPONENT);
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
case DIALOG_TUNING_MENU_COMPONENT:
{
if(response)
{
if(isnull(PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_NAME]) || !PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID]) return 1;
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] < PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES])
{
SendClientMessage(playerid, -1, "{999999}No tienes suficientes piezas, puedes comprar más piezas en el taller.");
return 1;
}
if(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
new vehicleid = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
new slot = GetVehicleComponentType( PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID] );
new current_component = GetVehicleComponentInSlot(vehicleid, slot);
if(current_component) RemoveVehicleComponent(vehicleid, current_component);
GLOBAL_VEHICLES[vehicleid][gb_vehicle_COMPONENTS][slot] = PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID];
AddVehicleComponent(vehicleid, PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID]);
PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] -= PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES];
SendClientMessageEx(playerid, -1, "{CCCCCC}Componente '%s' añadido, has necesitado %d piezas.", PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_NAME], PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES]);
}
else
{
format(PLAYER_TEMP[playerid][pt_TUNING_SELECTED_COMPONENT], 24, "%s", PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_NAME]);
PLAYER_TEMP[playerid][pt_TUNING_SELECTED_COMPONENT_ID] = PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID];
ShowDialog(playerid, DIALOG_MECHANIC_TUNING_PRICE);
}
}
else ShowDialog(playerid, DIALOG_TUNING_MENU_PART);
return 1;
}
case DIALOG_MECHANIC_MENU:
{
if(response)
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
switch(listitem)
{
case 0: // Reparar
{
if(PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] < 10) return SendClientMessage(playerid, -1, "{999999}No tienes suficientes piezas, puedes comprar más piezas en el taller.");
if(gettime() < GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_LAST_REPAIR_TIME] + 300)
{
new time = (300-(gettime()-GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_LAST_REPAIR_TIME]));
SendClientMessageEx(playerid, 0x999999AA, "Tienes que esperar %s minutos para volver a reparar este vehículo.", TimeConvert(time));
return 1;
}
if(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] -= 10;
RepairVehicleEx(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Este es tu vehículo por lo que no se cobrará.");
SendClientMessage(playerid, -1, "{CCCCCC}Has necesitado 10 piezas para la reparacion.");
return 1;
}
else
{
if(!PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_VALID])
{
if(GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_DRIVER] == playerid || GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_LAST_DRIVER] == playerid)
{
PLAYER_AC_INFO[playerid][CHEAT_VEHICLE_HEALTH][p_ac_info_IMMUNITY] = gettime() + 3;
PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] -= 10;
RepairVehicleEx(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Eres el conductor o el último conductor de este vehículo por lo que no se cobrará.");
SendClientMessage(playerid, -1, "{CCCCCC}Has necesitado 10 piezas para la reparacion.");
return 1;
}
}
ShowDialog(playerid, DIALOG_MECHANIC_REPAIR_PRICE);
}
}
case 1:
{
if(PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] < 5)
{
ShowDialog(playerid, dialogid);
SendClientMessage(playerid, -1, "{999999}No tienes suficientes piezas, puedes comprar más piezas en el taller.");
return 1;
}
if(!PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_VALID])
{
ShowDialog(playerid, dialogid);
SendClientMessage(playerid, -1, "{999999}Solo los vehículos personales se pueden pintar.");
return 1;
}
ShowDialog(playerid, DIALOG_MECHANIC_SELECT_COL_SLOT);
}
case 2:
{
if(100 > PLAYER_SKILLS[playerid][WORK_MECHANIC])
{
SendClientMessageEx(playerid, -1, "{999999}Has realizado %d reparaciones como mecánico, necesitas 100 para tunear vehículos.", PLAYER_SKILLS[playerid][WORK_MECHANIC]);
ShowDialog(playerid, dialogid);
return 1;
}
ShowDialog(playerid, DIALOG_MECHANIC_REMOVE_COMPONEN);
}
case 3:
{
if(100 > PLAYER_SKILLS[playerid][WORK_MECHANIC])
{
SendClientMessageEx(playerid, -1, "{999999}Has realizado %d reparaciones como mecánico, necesitas 100 para tunear vehículos.", PLAYER_SKILLS[playerid][WORK_MECHANIC]);
ShowDialog(playerid, dialogid);
return 1;
}
if(!PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_VALID])
{
ShowDialog(playerid, dialogid);
SendClientMessage(playerid, -1, "{999999}Solo los vehículos personales se pueden tunear.");
return 1;
}
ShowDialog(playerid, DIALOG_TUNING_MENU_PART);
}
case 4:
{
if(100 > PLAYER_SKILLS[playerid][WORK_MECHANIC])
{
SendClientMessageEx(playerid, -1, "{999999}Has realizado %d reparaciones como mecánico, necesitas 100 para paintjobs.", PLAYER_SKILLS[playerid][WORK_MECHANIC]);
ShowDialog(playerid, dialogid);
return 1;
}
if(!PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_VALID])
{
ShowDialog(playerid, dialogid);
SendClientMessage(playerid, -1, "{999999}Solo los vehículos personales se le pueden cambiar el paintjob.");
return 1;
}
ShowDialog(playerid, DIALOG_TUNING_PAINTJOB);
}
}
}
return 1;
}
case DIALOG_MECHANIC_REPAIR_PRICE:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}El precio no es correcto.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] < 0 || inputtext[0] > 2000)
{
SendClientMessage(playerid, -1, "{999999}El rango del precio es: 0$ - 2.000$.");
ShowDialog(playerid, dialogid);
return 1;
}
if(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_VALID])
{
new buyer = GetPlayerIdFromAccountId(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID]);
if(buyer == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo no está cerca.");
new Float:mechanic_pos[3];
GetPlayerPos(playerid, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2]);
if(!IsPlayerInRangeOfPoint(buyer, 10.0, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2])) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo está demasiado lejos.");
PLAYER_TEMP[buyer][pt_MECHANIC_PID] = playerid;
PLAYER_TEMP[buyer][pt_MECHANIC_AID] = ACCOUNT_INFO[playerid][ac_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PRICE] = inputtext[0];
format(PLAYER_TEMP[buyer][pt_MECHANIC_TEXT], 64, "Reparación completa del vehículo");
PLAYER_TEMP[buyer][pt_MECHANIC_TYPE] = MECHANIC_OPTION_REPAIR;
PLAYER_TEMP[buyer][pt_MECHANIC_EXTRA] = 0;
PLAYER_TEMP[buyer][pt_MECHANIC_VEHICLE_ID] = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PIECES] = 10;
PLAYER_TEMP[buyer][pt_MECHANIC_TIME] = gettime();
ShowDialog(buyer, DIALOG_MECHANIC_ACCEPT);
if(PLAYER_TEMP[buyer][pt_WANT_MECHANIC])
{
PLAYER_TEMP[buyer][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(buyer);
}
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido a %s reparar su vehículo por %s$.", PLAYER_TEMP[buyer][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[buyer][pt_MECHANIC_PRICE]));
}
else
{
if(GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_OCCUPIED])
{
new buyer = GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_DRIVER];
if(buyer == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El conductor del vehículo no está cerca.");
new Float:mechanic_pos[3];
GetPlayerPos(playerid, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2]);
if(!IsPlayerInRangeOfPoint(buyer, 10.0, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2])) return SendClientMessage(playerid, -1, "{999999}El conductor del vehículo está demasiado lejos.");
PLAYER_TEMP[buyer][pt_MECHANIC_PID] = playerid;
PLAYER_TEMP[buyer][pt_MECHANIC_AID] = ACCOUNT_INFO[playerid][ac_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PRICE] = inputtext[0];
format(PLAYER_TEMP[buyer][pt_MECHANIC_TEXT], 64, "Reparación completa del vehículo");
PLAYER_TEMP[buyer][pt_MECHANIC_TYPE] = MECHANIC_OPTION_REPAIR;
PLAYER_TEMP[buyer][pt_MECHANIC_EXTRA] = 0;
PLAYER_TEMP[buyer][pt_MECHANIC_VEHICLE_ID] = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PIECES] = 10;
PLAYER_TEMP[buyer][pt_MECHANIC_TIME] = gettime();
ShowDialog(buyer, DIALOG_MECHANIC_ACCEPT);
if(PLAYER_TEMP[buyer][pt_WANT_MECHANIC])
{
PLAYER_TEMP[buyer][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(buyer);
}
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido a %s reparar el vehículo por %s$.", PLAYER_TEMP[buyer][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[buyer][pt_MECHANIC_PRICE]));
}
else
{
new buyer = GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_LAST_DRIVER];
if(buyer == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}Este vehículo no tiene conductor.");
new Float:mechanic_pos[3];
GetPlayerPos(playerid, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2]);
if(!IsPlayerInRangeOfPoint(buyer, 10.0, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2])) return SendClientMessage(playerid, -1, "{999999}El conductor del vehículo está demasiado lejos.");
PLAYER_TEMP[buyer][pt_MECHANIC_PID] = playerid;
PLAYER_TEMP[buyer][pt_MECHANIC_AID] = ACCOUNT_INFO[playerid][ac_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PRICE] = inputtext[0];
format(PLAYER_TEMP[buyer][pt_MECHANIC_TEXT], 64, "Reparación completa del vehículo");
PLAYER_TEMP[buyer][pt_MECHANIC_TYPE] = MECHANIC_OPTION_REPAIR;
PLAYER_TEMP[buyer][pt_MECHANIC_EXTRA] = 0;
PLAYER_TEMP[buyer][pt_MECHANIC_VEHICLE_ID] = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PIECES] = 10;
PLAYER_TEMP[buyer][pt_MECHANIC_TIME] = gettime();
ShowDialog(buyer, DIALOG_MECHANIC_ACCEPT);
if(PLAYER_TEMP[buyer][pt_WANT_MECHANIC])
{
PLAYER_TEMP[buyer][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(buyer);
}
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido a %s reparar el vehículo por %s$.", PLAYER_TEMP[buyer][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[buyer][pt_MECHANIC_PRICE]));
}
}
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
case DIALOG_MECHANIC_COLOR_PRICE:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}El precio no es correcto.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] < 0 || inputtext[0] > 1750)
{
SendClientMessage(playerid, -1, "{999999}El rango del precio es: 0$ - 1.750$.");
ShowDialog(playerid, dialogid);
return 1;
}
new buyer = GetPlayerIdFromAccountId(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID]);
if(buyer == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo no está cerca.");
new Float:mechanic_pos[3];
GetPlayerPos(playerid, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2]);
if(!IsPlayerInRangeOfPoint(buyer, 10.0, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2])) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo está demasiado lejos.");
PLAYER_TEMP[buyer][pt_MECHANIC_PID] = playerid;
PLAYER_TEMP[buyer][pt_MECHANIC_AID] = ACCOUNT_INFO[playerid][ac_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PRICE] = inputtext[0];
switch(PLAYER_TEMP[playerid][pt_MECHANIC_COLOR_SLOT])
{
case 0:
{
format(PLAYER_TEMP[buyer][pt_MECHANIC_TEXT], 64, "Pintar color primario {%06x}(%d)", VEHICLE_COLORS[ PLAYER_TEMP[playerid][pt_MECHANIC_SELECTED_COLOR] ] >>> 8, PLAYER_TEMP[playerid][pt_MECHANIC_SELECTED_COLOR]);
PLAYER_TEMP[buyer][pt_MECHANIC_TYPE] = MECHANIC_OPTION_COLOR_1;
}
case 1:
{
format(PLAYER_TEMP[buyer][pt_MECHANIC_TEXT], 64, "Pintar color secundario {%06x}(%d)", VEHICLE_COLORS[ PLAYER_TEMP[playerid][pt_MECHANIC_SELECTED_COLOR] ] >>> 8, PLAYER_TEMP[playerid][pt_MECHANIC_SELECTED_COLOR]);
PLAYER_TEMP[buyer][pt_MECHANIC_TYPE] = MECHANIC_OPTION_COLOR_2;
}
}
PLAYER_TEMP[buyer][pt_MECHANIC_EXTRA] = PLAYER_TEMP[playerid][pt_MECHANIC_SELECTED_COLOR];
PLAYER_TEMP[buyer][pt_MECHANIC_VEHICLE_ID] = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PIECES] = 5;
PLAYER_TEMP[buyer][pt_MECHANIC_TIME] = gettime();
ShowDialog(buyer, DIALOG_MECHANIC_ACCEPT);
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido a %s pintar su vehículo por %s$.", PLAYER_TEMP[buyer][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[buyer][pt_MECHANIC_PRICE]));
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
case DIALOG_MECHANIC_TUNING_PRICE:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}El precio no es correcto.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] < 0 || inputtext[0] > ((PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES] * 50) + 2000))
{
SendClientMessageEx(playerid, -1, "{999999}El rango del precio es: 0$ - %s$.", number_format_thousand((PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES] * 50) + 2000));
ShowDialog(playerid, dialogid);
return 1;
}
new buyer = GetPlayerIdFromAccountId(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID]);
if(buyer == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo no está cerca.");
new Float:mechanic_pos[3];
GetPlayerPos(playerid, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2]);
if(!IsPlayerInRangeOfPoint(buyer, 10.0, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2])) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo está demasiado lejos.");
PLAYER_TEMP[buyer][pt_MECHANIC_PID] = playerid;
PLAYER_TEMP[buyer][pt_MECHANIC_AID] = ACCOUNT_INFO[playerid][ac_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PRICE] = inputtext[0];
format(PLAYER_TEMP[buyer][pt_MECHANIC_TEXT], 64, "'%s' > '%s'", PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PART], PLAYER_TEMP[playerid][pt_TUNING_SELECTED_COMPONENT]);
PLAYER_TEMP[buyer][pt_MECHANIC_TYPE] = MECHANIC_OPTION_TUNING;
PLAYER_TEMP[buyer][pt_MECHANIC_EXTRA] = PLAYER_TEMP[playerid][pt_TUNING_SELECTED_COMPONENT_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_VEHICLE_ID] = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PIECES] = PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PIECES];
PLAYER_TEMP[buyer][pt_MECHANIC_TIME] = gettime();
ShowDialog(buyer, DIALOG_MECHANIC_ACCEPT);
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido a %s tunear su vehículo por %s$.", PLAYER_TEMP[buyer][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[buyer][pt_MECHANIC_PRICE]));
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
case DIALOG_MECHANIC_PAINTJOB_PRICE:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}El precio no es correcto.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] < 0 || inputtext[0] > 2750)
{
SendClientMessage(playerid, -1, "{999999}El rango del precio es: 0$ - 2.750$.");
ShowDialog(playerid, dialogid);
return 1;
}
new buyer = GetPlayerIdFromAccountId(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID]);
if(buyer == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo no está cerca.");
new Float:mechanic_pos[3];
GetPlayerPos(playerid, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2]);
if(!IsPlayerInRangeOfPoint(buyer, 10.0, mechanic_pos[0], mechanic_pos[1], mechanic_pos[2])) return SendClientMessage(playerid, -1, "{999999}El dueño del vehículo está demasiado lejos.");
PLAYER_TEMP[buyer][pt_MECHANIC_PID] = playerid;
PLAYER_TEMP[buyer][pt_MECHANIC_AID] = ACCOUNT_INFO[playerid][ac_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PRICE] = inputtext[0];
format(PLAYER_TEMP[buyer][pt_MECHANIC_TEXT], 64, "Paintjob (%d)", PLAYER_TEMP[playerid][pt_PAINTJOB_SELECTED_ID]);
PLAYER_TEMP[buyer][pt_MECHANIC_TYPE] = MECHANIC_OPTION_PAINTJOB;
PLAYER_TEMP[buyer][pt_MECHANIC_EXTRA] = PLAYER_TEMP[playerid][pt_PAINTJOB_SELECTED_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_VEHICLE_ID] = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
PLAYER_TEMP[buyer][pt_MECHANIC_PIECES] = 15;
PLAYER_TEMP[buyer][pt_MECHANIC_TIME] = gettime();
ShowDialog(buyer, DIALOG_MECHANIC_ACCEPT);
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has ofrecido a %s cambiar el paintjob de su vehículo por %s$.", PLAYER_TEMP[buyer][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[buyer][pt_MECHANIC_PRICE]));
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
case DIALOG_MECHANIC_ACCEPT:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_MECHANIC_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_MECHANIC_PID])) return SendClientMessage(playerid, -1, "{999999}El mecánico ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_MECHANIC_AID]) return SendClientMessage(playerid, -1, "{999999}El mecánico ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_MECHANIC_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 10.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El mecánico está demasiado lejos.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}El mecánico no está disponible.");
if(PLAYER_TEMP[playerid][pt_MECHANIC_PRICE] > CHARACTER_INFO[playerid][ch_CASH])
{
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{999999}La persona no tiene suficiente dinero.");
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder aceptarlo.", number_format_thousand(PLAYER_TEMP[playerid][pt_MECHANIC_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
return 1;
}
if(PLAYER_TEMP[playerid][pt_MECHANIC_PIECES] > PLAYER_MISC[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][MISC_MECHANIC_PIECES])
{
SendClientMessage(playerid, -1, "{999999}Al mecánico no le quedan piezas para el trabajo.");
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{999999}La persona ha aceptado pero no tienes piezas suficientes para el trabajo.");
return 1;
}
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID])
{
SendClientMessage(playerid, -1, "{999999}El vehículo está muy lejos.");
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{999999}La persona ha aceptado pero el vehículo está muy lejos.");
return 1;
}
if(GetVehicleDistanceFromPoint(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], pos[0], pos[1], pos[2]) > 10.0)
{
SendClientMessage(playerid, -1, "{999999}El vehículo está muy lejos del mecánico.");
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{999999}La persona ha aceptado pero estás muy lejos del vehículo.");
return 1;
}
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_MECHANIC_PRICE]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_MECHANIC_PID], PLAYER_TEMP[playerid][pt_MECHANIC_PRICE]);
switch(PLAYER_TEMP[playerid][pt_MECHANIC_TYPE])
{
case MECHANIC_OPTION_REPAIR:
{
PLAYER_MISC[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][MISC_MECHANIC_PIECES] -= PLAYER_TEMP[playerid][pt_MECHANIC_PIECES];
PLAYER_SKILLS[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][WORK_MECHANIC] ++;
RepairVehicleEx(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], playerid);
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{CCCCCC}Has necesitado 10 piezas para la reparacion.");
}
case MECHANIC_OPTION_COLOR_1:
{
PLAYER_MISC[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][MISC_MECHANIC_PIECES] -= 5;
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_1] = PLAYER_TEMP[playerid][pt_MECHANIC_EXTRA];
ChangeVehicleColor(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_1], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_2]);
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{CCCCCC}Has necesitado 5 piezas para pintar el vehículo.");
}
case MECHANIC_OPTION_COLOR_2:
{
PLAYER_MISC[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][MISC_MECHANIC_PIECES] -= 5;
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_2] = PLAYER_TEMP[playerid][pt_MECHANIC_EXTRA];
ChangeVehicleColor(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_1], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_2]);
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{CCCCCC}Has necesitado 5 piezas para pintar el vehículo.");
}
case MECHANIC_OPTION_TUNING:
{
new slot = GetVehicleComponentType(PLAYER_TEMP[playerid][pt_MECHANIC_EXTRA]);
new current_component = GetVehicleComponentInSlot(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], slot);
if(current_component) RemoveVehicleComponent(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], current_component);
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_COMPONENTS][slot] = PLAYER_TEMP[playerid][pt_MECHANIC_EXTRA];
AddVehicleComponent(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], PLAYER_TEMP[playerid][pt_MECHANIC_EXTRA]);
PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] -= PLAYER_TEMP[playerid][pt_MECHANIC_PIECES];
SendClientMessageEx(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{CCCCCC}Has necesitado 5 piezas para tunear el vehículo.", PLAYER_TEMP[playerid][pt_MECHANIC_PIECES]);
}
case MECHANIC_OPTION_PAINTJOB:
{
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_PAINTJOB] = PLAYER_TEMP[playerid][pt_MECHANIC_EXTRA];
ChangeVehiclePaintjob(PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_MECHANIC_VEHICLE_ID] ][gb_vehicle_PAINTJOB]);
SendClientMessage(playerid, -1, "{CCCCCC}Has necesitado 15 piezas para el paintjob de el vehículo.");
}
}
SendClientMessageEx(playerid, -1, "{CCCCCC}Le has pagado %s$ al mecánico por su trabajo.", number_format_thousand(PLAYER_TEMP[playerid][pt_MECHANIC_PRICE]));
SendClientMessageEx(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{CCCCCC}%s te ha pagado %s$ por tu trabajo.", PLAYER_TEMP[playerid][pt_RP_NAME], number_format_thousand(PLAYER_TEMP[playerid][pt_MECHANIC_PRICE]));
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_MECHANIC_TIME] + 30) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_MECHANIC_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_MECHANIC_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_MECHANIC_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_MECHANIC_PID], -1, "{999999}La persona no aceptó lo que le ofreciste.");
}
return 1;
}
case DIALOG_MECHANIC_SELECT_COL_SLOT:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
PLAYER_TEMP[playerid][pt_MECHANIC_COLOR_SLOT] = listitem;
ShowDialog(playerid, DIALOG_MECHANIC_SELECT_COLOR);
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
case DIALOG_MECHANIC_SELECT_COLOR:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
if(PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] < 5) return SendClientMessage(playerid, -1, "{999999}No tienes suficientes piezas, puedes comprar más piezas en el taller.");
if(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] -= 5;
switch(PLAYER_TEMP[playerid][pt_MECHANIC_COLOR_SLOT])
{
case 0: GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_1] = listitem;
case 1: GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_2] = listitem;
}
ChangeVehicleColor(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_1], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COLOR_2]);
SendClientMessage(playerid, -1, "{CCCCCC}Has necesitado 5 piezas para pintar el vehículo.");
}
else
{
PLAYER_TEMP[playerid][pt_MECHANIC_SELECTED_COLOR] = listitem;
ShowDialog(playerid, DIALOG_MECHANIC_COLOR_PRICE);
}
}
else ShowDialog(playerid, DIALOG_MECHANIC_SELECT_COL_SLOT);
return 1;
}
case DIALOG_MECHANIC_REMOVE_COMPONEN:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
if(100 > PLAYER_SKILLS[playerid][WORK_MECHANIC])
{
SendClientMessageEx(playerid, -1, "{999999}Has realizado %d reparaciones como mecánico, necesitas 100 para tunear vehículos.", PLAYER_SKILLS[playerid][WORK_MECHANIC]);
ShowDialog(playerid, dialogid);
return 1;
}
if(PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID] == 0) return ShowDialog(playerid, dialogid);
RemoveVehicleComponent(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COMPONENTS][ PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID] ]);
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_COMPONENTS][ PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID] ] = 0;
PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] += PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_PIECES];
SendClientMessageEx(playerid, -1, "{CCCCCC}Componente eliminado, piezas ganadas: %d, piezas totales: %d.", PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_PIECES], PLAYER_MISC[playerid][MISC_MECHANIC_PIECES]);
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
case DIALOG_TUNING_PAINTJOB:
{
if(!GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_VALID]) return 1;
new Float:Vehicle_Pos[3];
GetVehiclePos(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, Vehicle_Pos[0], Vehicle_Pos[1], Vehicle_Pos[2])) return SendClientMessage(playerid, -1, "{999999}El vehículo está demasiado lejos.");
if(response)
{
if(100 > PLAYER_SKILLS[playerid][WORK_MECHANIC])
{
SendClientMessageEx(playerid, -1, "{999999}Has realizado %d reparaciones como mecánico, necesitas 100 para cambiar el paintjob de vehículos.", PLAYER_SKILLS[playerid][WORK_MECHANIC]);
ShowDialog(playerid, dialogid);
return 1;
}
if(PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] < 15) return SendClientMessage(playerid, -1, "{999999}No tienes suficientes piezas, puedes comprar más piezas en el taller.");
if(listitem == 0)
{
if(GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_PAINTJOB] == 3)
{
SendClientMessage(playerid, -1, "{999999}El vehículo no tiene ningún paintjob.");
return 1;
}
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_PAINTJOB] = 3;
ChangeVehiclePaintjob(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_PAINTJOB]);
PLAYER_MISC[playerid][MISC_MECHANIC_PIECES] += 15;
SendClientMessageEx(playerid, -1, "{CCCCCC}Paintjob eliminado, piezas ganadas: 15, piezas totales: %d.", PLAYER_MISC[playerid][MISC_MECHANIC_PIECES]);
return 1;
}
if(PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][player_vehicle_OWNER_ID] == ACCOUNT_INFO[playerid][ac_ID])
{
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_PAINTJOB] = listitem - 1;
ChangeVehiclePaintjob(PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID], GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_PAINTJOB]);
SendClientMessage(playerid, -1, "{CCCCCC}Has necesitado 15 piezas para el paintjob de el vehículo.");
}
else
{
PLAYER_TEMP[playerid][pt_PAINTJOB_SELECTED_ID] = listitem - 1;
ShowDialog(playerid, DIALOG_MECHANIC_PAINTJOB_PRICE);
}
}
else ShowDialog(playerid, DIALOG_MECHANIC_MENU);
return 1;
}
/*case DIALOG_SELECT_TRASH_ROUTE:
{
if(response)
{
if(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID] == INVALID_PLAYER_ID)
{
SendClientMessage(playerid, -1, "{CCCCCC}Necesitas un compañero para comenzar a recoger basura.");
return 1;
}
TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_JOB_STARTED] = true;
TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_ROUTE] = listitem;
TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_CP] = 0;
SetPlayerTrashCheckpoint(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_DRIVER_ID], PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID]);
SetPlayerTrashCheckpoint(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID], PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID]);
CreatePlayerTrashRouteObjects(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_DRIVER_ID], listitem);
CreatePlayerTrashRouteObjects(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID], listitem);
SendClientMessageEx(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_DRIVER_ID], -1, "Ruta {42aaf4}#%d {FFFFFF}establecida, pueden comenzar.", TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_ROUTE] + 1);
SendClientMessageEx(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID], -1, "Ruta {42aaf4}#%d {FFFFFF}establecida, pueden comenzar.", TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_ROUTE] + 1);
}
return 1;
}*/
case DIALOG_SEED_LIST:
{
if(response)
{
if(seed_info[listitem][seed_info_EXP] > PLAYER_SKILLS[playerid][WORK_FARMER]) return SendClientMessageEx(playerid, -1, "{999999}Necesitas haber plantado al menos %d plantas como agricultor para poder comprar esta semilla.", seed_info[listitem][seed_info_EXP]);
PLAYER_TEMP[playerid][pt_SELECTED_BUY_SEED_ID] = listitem;
ShowDialog(playerid, DIALOG_SEED_BUY);
}
return 1;
}
case DIALOG_SEED_BUY:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0])) return SendClientMessage(playerid, -1, "{999999}La cantidad de semillas no es correcta.");
if(inputtext[0] <= 0 || inputtext[0] > 100000) return SendClientMessage(playerid, -1, "{999999}La cantidad de semillas no es correcta.");
new price = seed_info[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_SEED_ID] ][seed_info_PRICE] * inputtext[0];
if(price > CHARACTER_INFO[playerid][ch_CASH]) return SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar las semillas.", number_format_thousand(price - CHARACTER_INFO[playerid][ch_CASH]));
switch(seed_info[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_SEED_ID] ][seed_info_PLANT_TYPE])
{
case PLANT_TYPE_MEDICINE: PLAYER_MISC[playerid][MISC_SEED_MEDICINE] += inputtext[0];
case PLANT_TYPE_CANNABIS: PLAYER_MISC[playerid][MISC_SEED_CANNABIS] += inputtext[0];
case PLANT_TYPE_CRACK: PLAYER_MISC[playerid][MISC_SEED_CRACK] += inputtext[0];
}
GivePlayerCash(playerid, -price);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has comprado %s semillas de %s por %s$.", number_format_thousand(inputtext[0]), seed_info[ PLAYER_TEMP[playerid][pt_SELECTED_BUY_SEED_ID] ][seed_info_NAME], number_format_thousand(price));
}
else ShowDialog(playerid, DIALOG_SEED_LIST);
return 1;
}
case DIALOG_PLANT_PLANTS:
{
if(response)
{
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, -1, "{999999}No estás depie.");
if(!IsPlayerInDynamicArea(playerid, Farmer_Area)) return SendClientMessage(playerid, 0x999999AA, "No estás en la zona para plantar, está marcada en el mapa con una bandera.");
switch(seed_info[listitem][seed_info_PLANT_TYPE])
{
case PLANT_TYPE_MEDICINE:
{
if(plant_info[listitem][plant_info_SEEDS] > PLAYER_MISC[playerid][MISC_SEED_MEDICINE])
{
SendClientMessage(playerid, -1, "{999999}No tienes las semillas necesarias para plantar esta planta.");
return 1;
}
PLAYER_MISC[playerid][MISC_SEED_MEDICINE] -= plant_info[listitem][plant_info_SEEDS];
}
case PLANT_TYPE_CANNABIS:
{
if(plant_info[listitem][plant_info_SEEDS] > PLAYER_MISC[playerid][MISC_SEED_CANNABIS])
{
SendClientMessage(playerid, -1, "{999999}No tienes las semillas necesarias para plantar esta planta.");
return 1;
}
PLAYER_MISC[playerid][MISC_SEED_CANNABIS] -= plant_info[listitem][plant_info_SEEDS];
}
case PLANT_TYPE_CRACK:
{
if(plant_info[listitem][plant_info_SEEDS] > PLAYER_MISC[playerid][MISC_SEED_CRACK])
{
SendClientMessage(playerid, -1, "{999999}No tienes las semillas necesarias para plantar esta planta.");
return 1;
}
PLAYER_MISC[playerid][MISC_SEED_CRACK] -= plant_info[listitem][plant_info_SEEDS];
}
}
SendClientMessageEx(playerid, -1, "{CCCCCC}Vas a plantar '%s' y vas a necesitar %d semillas.", plant_info[listitem][plant_info_NAME], plant_info[listitem][plant_info_SEEDS]);
new Float:offset = floatdiv(PLAYER_SKILLS[playerid][WORK_FARMER], 10);
if(offset > 30.0) offset = 30.0;
PLAYER_TEMP[playerid][pt_LAST_PLANT_TIME] = gettime();
PLAYER_TEMP[playerid][pt_PLANTING_PLANT_SELECTED] = listitem;
PLAYER_TEMP[playerid][pt_PLANTING] = true;
PLAYER_TEMP[playerid][pt_WORKING_IN] = WORK_FARMER;
PLAYER_TEMP[playerid][pt_PLANTING_PROGRESS] = frandom(10.0, 8.0, 2) + offset;
UpdatePlantSizeTextdrawPlant(playerid);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_PLANT_PLANT][0]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_PLANT_PLANT][1]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_PLANT_PLANT][2]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_PLANT_PLANT][3]);
TogglePlayerControllableEx(playerid, false);
SetCameraBehindPlayer(playerid);
ApplyAnimation(playerid, "BOMBER", "BOM_Plant_Loop", 4.1, true, false, false, false, 0);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][12]);
PLAYER_TEMP[playerid][pt_TIMERS][12] = SetTimerEx("PlantingUp", 1000, false, "id", playerid, plant_info[listitem][plant_info_SEEDS]);
}
return 1;
}
case DIALOG_BLACK_MARKET:
{
if(response)
{
switch(listitem)
{
case 0:
{
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 3) return SendClientMessage(playerid, 0x999999AA, "Necesitas ser al menos nivel 3 para poder comprar armas.");
if(!PLAYER_CREW[playerid][player_crew_VALID] && !ACCOUNT_INFO[playerid][ac_SU]) return SendClientMessage(playerid, 0x999999AA, "Solo puedes comprar armas aquí si perteneces a una banda o eres VIP (/ayuda).");
if(!ACCOUNT_INFO[playerid][ac_SU])
{
if(gettime() < PLAYER_TEMP[playerid][pt_LAST_BM_BUY] + 300)
{
new time = (300-(gettime()-PLAYER_TEMP[playerid][pt_LAST_BM_BUY]));
SendClientMessageEx(playerid, 0x999999AA, "Tienes que esperar %s minutos para volver a comprar aquí.", TimeConvert(time));
return 1;
}
}
ShowDialog(playerid, DIALOG_BLACK_MARKET_WEAPONS);
}
case 1: ShowDialog(playerid, DIALOG_BLACK_MARKET_SELECT_WEA);
}
}
return 1;
}
case DIALOG_BLACK_MARKET_WEAPONS:
{
if(response)
{
if(BLACK_MARKT_WEAPONS[listitem][black_market_EXP] > CHARACTER_INFO[playerid][ch_BLACK_MARKET_LEVEL])
{
SendClientMessageEx(playerid, -1, "{999999}Necesitas ser un cliente más habitual para que te vendan esta arma (%d/%d).", CHARACTER_INFO[playerid][ch_BLACK_MARKET_LEVEL], BLACK_MARKT_WEAPONS[listitem][black_market_EXP]);
return 1;
}
if(CHARACTER_INFO[playerid][ch_CASH] >= BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_PRICE])
{
new weapon_slot = WEAPON_INFO[ BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_ID] ][weapon_info_SLOT];
if(PLAYER_WEAPONS[playerid][weapon_slot][player_weapon_ID] != 0)
{
SendClientMessageEx(playerid, -1, "{999999}Para comprar esta arma tienes que deshacerte de tu '%s' (%d) para tener espacio.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][weapon_slot][player_weapon_ID] ][weapon_info_NAME], weapon_slot);
return 1;
}
PLAYER_TEMP[playerid][pt_LAST_BM_BUY] = gettime();
GivePlayerCash(playerid, -BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_PRICE]);
CHARACTER_INFO[playerid][ch_BLACK_MARKET_LEVEL] ++;
if(WEAPON_INFO[ BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_ID] ][weapon_info_AMMO]) GivePlayerWeaponEx(playerid, BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_ID], 50);
else GivePlayerWeaponEx(playerid, BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_ID], 1);
RegisterNewPlayerWeapon(playerid, weapon_slot);
SendClientMessageEx(playerid, -1, "{CCCCCC}Arma {98d16c}'%s' {CCCCCC}comprada por %s$.", WEAPON_INFO[ BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_ID] ][weapon_info_NAME], number_format_thousand(BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_PRICE]));
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar esta arma.", number_format_thousand(BLACK_MARKT_WEAPONS[listitem][black_market_WEAPON_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
}
}
return 1;
}
case DIALOG_BLACK_MARKET_SELECT_WEA:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
if(!WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_AMMO])
{
SendClientMessage(playerid, -1, "{999999}Este tipo de arma no necesita munición.");
return 1;
}
ShowDialog(playerid, DIALOG_BLACK_MARKET_AMMO);
}
return 1;
}
case DIALOG_BLACK_MARKET_AMMO:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0])) return ShowDialog(playerid, dialogid);
if(inputtext[0] <= 0 || inputtext[0] > 9999) return SendClientMessage(playerid, -1, "{999999}La cantidad de munición no es correcta.");
new price = 3 * inputtext[0];
if(price > CHARACTER_INFO[playerid][ch_CASH]) return SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar la munición.", number_format_thousand(price - CHARACTER_INFO[playerid][ch_CASH]));
if(PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_AMMO] + inputtext[0] > 9999)
{
SendClientMessage(playerid, -1, "{999999}A esta arma no le entra tanta municion.");
return 1;
}
GivePlayerCash(playerid, -price);
GivePlayerWeaponEx(playerid, PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID], inputtext[0]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has comprado {98d16c}%s {CCCCCC}balas para tu {98d16c}'%s' {CCCCCC}por %s$.", number_format_thousand(inputtext[0]), WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(price));
}
return 1;
}
case DIALOG_PLAYER_WEAPONS:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == 13 + 20) // Eliminar todo
{
ShowDialog(playerid, DIALOG_PLAYER_WEAPONS_DELETE_A);
return 1;
}
PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_PLAYER_WEAPONS_DELETE);
}
return 1;
}
case DIALOG_PLAYER_WEAPONS_DELETE_A:
{
if(response)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_WEAPONS` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
ResetPlayerWeaponsEx(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}Ha eliminado todas tus armas.");
}
else ShowDialog(playerid, DIALOG_PLAYER_WEAPONS);
return 1;
}
case DIALOG_PLAYER_WEAPONS_DELETE:
{
if(response)
{
SendClientMessageEx(playerid, -1, "{999999}Has eliminado tu '%s' de tus armas.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_NAME]);
RemovePlayerSlotWeapon(playerid, PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT], true);
}
else ShowDialog(playerid, DIALOG_PLAYER_WEAPONS);
return 1;
}
case DIALOG_ANIMS:
{
if(response)
{
switch(listitem)
{
case 0: SetPlayerSpecialAction(playerid,SPECIAL_ACTION_HANDSUP);//rendirse
case 1: ApplyAnimation(playerid, "BLOWJOBZ", "BJ_COUCH_LOOP_W", 4.0, 1, 1, 1, 0, 0);//blowjob
case 2: ApplyAnimation(playerid,"PED","BIKE_fallR",4.0,0,1,1,1,0);//rodar
case 3: ApplyAnimation(playerid,"PED", "WALK_DRUNK",4.0,1,1,1,1,500);//borracho
case 4: ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 1, 1, 0,0);//bomba
case 5: ApplyAnimation( playerid,"ped", "ARRESTgun", 4.0, 0, 1, 1, 1,500);//apuntar
case 6: ApplyAnimation(playerid, "RAPPING", "Laugh_01", 4.0, 0, 0, 0, 0,0);//reir
case 7: ApplyAnimation(playerid, "SHOP", "ROB_Loop_Threat", 4.0, 0, 0, 0, 1,500);//amenazar
case 8: ApplyAnimation(playerid, "PAULNMAC", "wank_loop", 4.0, 1, 0, 0, 1, 0);//paja
case 9: ApplyAnimation(playerid, "SWEET", "LaFin_Sweet", 4.0, 0, 1, 1, 1, 0);//herido
case 10: ApplyAnimation(playerid, "COP_AMBIENT", "Coplook_loop", 4.0, 1, 1, 1, 0, 4000);//cruzarbrazos
case 11: ApplyAnimation(playerid,"SUNBATHE", "Lay_Bac_in", 4.0, 0, 0, 0, 1, 0);//recostarse
case 12: ApplyAnimation(playerid, "ped", "cower", 4.0, 1, 0, 0, 0, 0);//crubrirse
case 13: ApplyAnimation(playerid, "FOOD", "EAT_Vomit_P", 3.0, 0, 0, 0, 0, 0);//vomitar
case 14: ApplyAnimation(playerid, "FOOD", "EAT_Burger", 3.00, 0, 0, 0, 0, 0);//comer
case 15: ApplyAnimation(playerid, "KISSING", "BD_GF_Wave", 3.0, 0, 0, 0, 0, 0);//despedir
case 16: ApplyAnimation(playerid, "SWEET", "sweet_ass_slap", 4.0, 0, 0, 0, 0, 0);//nalgada
case 17: ApplyAnimation(playerid, "WUZI", "CS_Dead_Guy", 4.0, 0, 0, 0, 1, 0);//agonizar
case 18: ApplyAnimation(playerid, "KISSING", "Playa_Kiss_02", 4.0, 0, 0, 0, 0, 0);//besar
case 19: ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.0, 0, 0, 0, 1, 0);//crack
case 20: SetPlayerSpecialAction(playerid, SPECIAL_ACTION_PISSING);//mear
case 21: ApplyAnimation(playerid, "SUNBATHE", "ParkSit_M_in", 4.000000, 0, 1, 1, 1, 0);//sentarse
case 22: ApplyAnimation( playerid,"ped", "fucku", 4.0, 0, 1, 1, 1, 1 );//fucku
case 23: ApplyAnimation(playerid, "ped", "phone_in", 4.000000, 0, 0, 0, 1, 4000);//llamar
case 24: ApplyAnimation(playerid, "PARK", "Tai_Chi_Loop", 4.1,7,5,1,1,1);//taichi
case 25: ApplyAnimation(playerid, "BAR", "dnk_stndM_loop", 4.0, 0, 1, 1, 0, 4000);//beber
case 26: ApplyAnimation(playerid, "GYMNASIUM", "gym_shadowbox", 4.1,7,5,1,1,1);//boxear
case 27: ApplyAnimation(playerid,"GANGS","hndshkfa_swt",4.1,0,0,0,0,0);//saludar
case 28: ApplyAnimation(playerid,"GRAVEYARD","mrnF_loop",4.1,0,0,0,0,0);//llorar
case 29: ApplyAnimation(playerid,"INT_HOUSE","BED_In_R",4.1,0,0,0,1,0);//dormir
case 30: ApplyAnimation(playerid,"RAPPING","RAP_B_Loop",4.0,1,0,0,0,8000);//rapear
case 31: ApplyAnimation(playerid,"STRIP","strip_A",4.1,7,5,1,1,1);//strip
case 32: ApplyAnimation(playerid,"DANCING","DAN_Down_A",4.1,7,5,1,1,1);//bailar
case 33: ApplyAnimation(playerid,"ON_LOOKERS","shout_02",4.1,7,5,1,1,1);//alentar
case 34: ApplyAnimation(playerid,"PED","IDLE_chat",4.1,7,5,1,1,1);//hablar
case 35: ApplyAnimation(playerid, "ped", "SEAT_down", 4.000000, 0, 1, 1, 1, 0);//asiento
}
SendClientMessage(playerid, -1, "{CCCCCC}Para detener la animacion utiliza /parar.");
}
return 1;
}
case DIALOG_TRICKS_FOOD:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El vendedor está demasiado lejos.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}El vendedor no está disponible.");
new to_player_slot = GetEmptyPlayerPocketSlot(playerid);
if(to_player_slot == -1)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{999999}No tienes espacio en tus /alimentos para comprar esto.");
return 1;
}
TransferPlayerPocketObject(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA], playerid, to_player_slot);
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te has gastado %s$ con esta compra.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
SendClientMessageEx(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{CCCCCC}Has ganado %s$ con esta venta.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
new action[64];
format(action, sizeof action, "y %s llegan a un acuerdo.", PLAYER_TEMP[playerid][pt_RP_NAME]);
Auto_SendPlayerAction(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], action);
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{999999}El comprador no ha aceptado tu trato.");
}
return 1;
}
case DIALOG_TRICKS_MEDICINE:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El vendedor está demasiado lejos.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}El vendedor no está disponible.");
PLAYER_MISC[playerid][MISC_MEDICINE] += PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
PLAYER_MISC[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][MISC_MEDICINE] -= PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te has gastado %s$ con esta compra.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
SendClientMessageEx(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{CCCCCC}Has ganado %s$ con esta venta.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
new action[64];
format(action, sizeof action, "y %s llegan a un acuerdo.", PLAYER_TEMP[playerid][pt_RP_NAME]);
Auto_SendPlayerAction(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], action);
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{999999}El comprador no ha aceptado tu trato.");
}
return 1;
}
case DIALOG_TRICKS_CANNABIS:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El vendedor está demasiado lejos.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}El vendedor no está disponible.");
PLAYER_MISC[playerid][MISC_CANNABIS] += PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
PLAYER_MISC[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][MISC_CANNABIS] -= PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te has gastado %s$ con esta compra.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
SendClientMessageEx(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{CCCCCC}Has ganado %s$ con esta venta.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
new action[64];
format(action, sizeof action, "y %s llegan a un acuerdo.", PLAYER_TEMP[playerid][pt_RP_NAME]);
Auto_SendPlayerAction(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], action);
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{999999}El comprador no ha aceptado tu trato.");
}
return 1;
}
case DIALOG_TRICKS_CRACK:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El vendedor está demasiado lejos.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}El vendedor no está disponible.");
PLAYER_MISC[playerid][MISC_CRACK] += PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
PLAYER_MISC[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][MISC_CRACK] -= PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te has gastado %s$ con esta compra.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
SendClientMessageEx(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{CCCCCC}Has ganado %s$ con esta venta.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
new action[64];
format(action, sizeof action, "y %s llegan a un acuerdo.", PLAYER_TEMP[playerid][pt_RP_NAME]);
Auto_SendPlayerAction(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], action);
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{999999}El comprador no ha aceptado tu trato.");
}
return 1;
}
case DIALOG_TRICKS_SU:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El vendedor está demasiado lejos.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}El vendedor no está disponible.");
ACCOUNT_INFO[playerid][ac_SD] += PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_SD] -= PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA];
new DB_Query_update[256];
format
(
DB_Query_update, sizeof DB_Query_update,
"\
UPDATE `CUENTA` SET `SD` = '%d' WHERE `ID` = '%d';\
UPDATE `CUENTA` SET `SD` = '%d' WHERE `ID` = '%d';\
",
ACCOUNT_INFO[playerid][ac_SD], ACCOUNT_INFO[playerid][ac_ID],
ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_SD], ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID]
);
mysql_tquery(SMF_DATABASE, DB_Query_update);
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te has gastado %s$ con esta compra.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
SendClientMessageEx(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{CCCCCC}Has ganado %s$ con esta venta.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
new action[64];
format(action, sizeof action, "y %s llegan a un acuerdo.", PLAYER_TEMP[playerid][pt_RP_NAME]);
Auto_SendPlayerAction(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], action);
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{999999}El comprador no ha aceptado tu trato.");
}
return 1;
}
case DIALOG_TRICKS_WEAPON:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return SendClientMessage(playerid, -1, "{999999}El vendedor ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El vendedor está demasiado lejos.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}El vendedor no está disponible.");
if(PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA] ][player_weapon_VALID])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{999999}Para comprar esta arma tienes que deshacerte de tu '%s' (%d) para tener espacio.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA] ][player_weapon_ID] ][weapon_info_NAME], PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA]);
return 1;
}
TransferPlayerWeapon(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_SELLER_EXTRA], playerid);
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], PLAYER_TEMP[playerid][pt_TRICK_PRICE]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Te has gastado %s$ con esta compra.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
SendClientMessageEx(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{CCCCCC}Has ganado %s$ con esta venta.", number_format_thousand(PLAYER_TEMP[playerid][pt_TRICK_PRICE]));
new action[64];
format(action, sizeof action, "y %s llegan a un acuerdo.", PLAYER_TEMP[playerid][pt_RP_NAME]);
Auto_SendPlayerAction(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], action);
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_TRICK_TIME] + 20) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_TRICK_SELLER_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_TRICK_SELLER_PID], -1, "{999999}El comprador no ha aceptado tu trato.");
}
return 1;
}
case DIALOG_VEHICLE_BOOT:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == MAX_BOOT_SLOTS + 20)
{
ShowDialog(playerid, DIALOG_VEHICLE_BOOT_DELETE_ALL);
return 1;
}
PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_VEHICLE_BOOT_OPTIONS);
}
}
case DIALOG_VEHICLE_BOOT_DELETE_ALL:
{
if(response)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "DELETE FROM `VEHICLE_BOOT` WHERE `ID_VEHICLE` = '%d';", PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][player_vehicle_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_VEHICLE_BOOT[enum_VEHICLE_BOOT];
for(new i = 0; i != MAX_BOOT_SLOTS; i ++) VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][i] = temp_VEHICLE_BOOT;
SendClientMessage(playerid, -1, "{CCCCCC}Ha eliminado todo de este maletero.");
}
return 1;
}
case DIALOG_VEHICLE_BOOT_OPTIONS:
{
if(response)
{
switch(listitem)
{
case 0:
{
if(!VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_VALID]) return SendClientMessage(playerid, -1, "{999999}No hay nada en ese slot.");
if(VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_TYPE] != BOOT_TYPE_WEAPON) return SendClientMessage(playerid, -1, "{999999}En ese slot no hay armas.");
new to_slot = WEAPON_INFO[ VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_INT] ][weapon_info_SLOT];
if(PLAYER_WEAPONS[playerid][to_slot][player_weapon_VALID])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{999999}Para sacar esta arma tienes que deshacerte de tu '%s' (%d) para tener espacio.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][ to_slot ][player_weapon_ID] ][weapon_info_NAME], to_slot);
return 1;
}
new DB_Query[64];
format(DB_Query, sizeof DB_Query, "DELETE FROM `VEHICLE_BOOT` WHERE `ID_OBJECT` = '%d';", VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_OBJECT_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
GivePlayerWeaponEx(playerid, VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_INT], VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_INT_EXTRA]);
RegisterNewPlayerWeapon(playerid, to_slot);
new temp_VEHICLE_BOOT[enum_VEHICLE_BOOT]; VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ] = temp_VEHICLE_BOOT;
Auto_SendPlayerAction(playerid, "saca un arma del maletero de su vehículo.");
}
case 1: ShowDialog(playerid, DIALOG_VEHICLE_BOOT_DELETE);
}
}
else ShowDialog(playerid, DIALOG_VEHICLE_BOOT);
return 1;
}
case DIALOG_VEHICLE_BOOT_DELETE:
{
if(response)
{
SendClientMessageEx(playerid, -1, "{999999}Has eliminado tu '%s' de este maletero.", WEAPON_INFO[ VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_INT] ][weapon_info_NAME]);
new DB_Query[64];
format(DB_Query, sizeof DB_Query, "DELETE FROM `VEHICLE_BOOT` WHERE `ID_OBJECT` = '%d';", VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ][vehicle_boot_OBJECT_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_VEHICLE_BOOT[enum_VEHICLE_BOOT]; VEHICLE_BOOT[ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE] ][ PLAYER_TEMP[playerid][pt_DIALOG_BOT_VEHICLE_BOOT_SLOT] ] = temp_VEHICLE_BOOT;
}
else ShowDialog(playerid, DIALOG_VEHICLE_BOOT_OPTIONS);
return 1;
}
case DIALOG_SELECT_POLICE_SKIN:
{
if(response)
{
if(!PLAYER_WORKS[playerid][WORK_POLICE]) return 1;
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
if(POLICE_SKINS[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][police_skin_RANK] > PLAYER_SKILLS[playerid][WORK_POLICE]) return ShowDialog(playerid, dialogid);
SetPlayerSkin(playerid, POLICE_SKINS[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][police_skin_SKIN]);
StartPlayerJob(playerid, WORK_POLICE);
}
return 1;
}
case DIALOG_POLICE_RADIOS:
{
if(response)
{
PLAYER_TEMP[playerid][pt_POLICE_RADIO] = listitem;
SendClientMessageEx(playerid, -1, "Tu radio ha sido ajustada a la frecuencia %d.", listitem + 1);
}
return 1;
}
case DIALOG_POLICE_LIST:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -2) // Siguiente
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_WORKS` WHERE `ID_WORK` = '%d' AND `SET` = '1';", WORK_POLICE);
mysql_tquery(SMF_DATABASE, the_query, "LoadPoliceListNextPage", "i", playerid);
return 1;
}
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -3) //Anterior
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_WORKS` WHERE `ID_WORK` = '%d' AND `SET` = '1';", WORK_POLICE);
mysql_tquery(SMF_DATABASE, the_query, "LoadPoliceListPrevPage", "i", playerid);
return 1;
}
else
{
if(PLAYER_SKILLS[playerid][WORK_POLICE] >= 11)
{
PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_POLICE_MODIFY);
}
}
}
return 1;
}
case DIALOG_POLICE_MODIFY:
{
if(response)
{
if(listitem > PLAYER_SKILLS[playerid][WORK_POLICE])
{
SendClientMessage(playerid, -1, "{999999}El rango que has seleccionado es superior al tuyo.");
return 1;
}
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `CUENTA`.`CONNECTED`, `CUENTA`.`PLAYERID`, `PLAYER_SKILLS`.`TOTAL` FROM `CUENTA`, `PLAYER_SKILLS` WHERE `CUENTA`.`ID` = '%d' AND `PLAYER_SKILLS`.`ID_USER` = `CUENTA`.`ID` AND `PLAYER_SKILLS`.`ID_WORK` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID], WORK_POLICE);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPoliceMemberRank", "ii", playerid, listitem);
}
else ShowDialog(playerid, DIALOG_POLICE_LIST);
return 1;
}
case DIALOG_POLICE_SHOP:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_POLICE_WEAPONS);
case 1: ShowDialog(playerid, DIALOG_POLICE_SELECT_WEAPON);
case 2: ShowDialog(playerid, DIALOG_POLICE_ARMOUR);
}
}
return 1;
}
case DIALOG_POLICE_SELECT_WEAPON:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
if(!WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_AMMO])
{
SendClientMessage(playerid, -1, "{999999}Este tipo de arma no necesita munición.");
return 1;
}
ShowDialog(playerid, DIALOG_POLICE_AMMO);
}
return 1;
}
case DIALOG_POLICE_AMMO:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0])) return ShowDialog(playerid, dialogid);
if(inputtext[0] <= 0 || inputtext[0] > 9999) return SendClientMessage(playerid, -1, "{999999}La cantidad de munición no es correcta.");
new price = 2 * inputtext[0];
if(price > CHARACTER_INFO[playerid][ch_CASH]) return SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar la munición.", number_format_thousand(price - CHARACTER_INFO[playerid][ch_CASH]));
if(PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_AMMO] + inputtext[0] > 9999)
{
SendClientMessage(playerid, -1, "{999999}A esta arma no le entra tanta municion.");
return 1;
}
GivePlayerCash(playerid, -price);
GivePlayerWeaponEx(playerid, PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID], inputtext[0]);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has comprado {98d16c}%s {CCCCCC}balas para tu {98d16c}'%s' {CCCCCC}por %s$.", number_format_thousand(inputtext[0]), WEAPON_INFO[ PLAYER_WEAPONS[playerid][ PLAYER_TEMP[playerid][pt_SELECTED_DIALOG_WEAPON_SLOT] ][player_weapon_ID] ][weapon_info_NAME], number_format_thousand(price));
}
return 1;
}
case DIALOG_POLICE_ARMOUR:
{
if(response)
{
if(300 > CHARACTER_INFO[playerid][ch_CASH]) return SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar la munición.", number_format_thousand(300 - CHARACTER_INFO[playerid][ch_CASH]));
GetPlayerArmour(playerid, CHARACTER_INFO[playerid][ch_ARMOUR]);
if(CHARACTER_INFO[playerid][ch_ARMOUR] > 99.5) return SendClientMessage(playerid, -1, "{999999}Ya tienes un chaleco antibalas.");
SetPlayerArmourEx(playerid, 100.0);
GivePlayerCash(playerid, -300);
SendClientMessage(playerid, -1, "{CCCCCC}Has comprado {98d16c}chaleco antibales {CCCCCC}por 300$.");
}
return 1;
}
case DIALOG_POLICE_WEAPONS:
{
if(response)
{
if(POLICE_SHOP_WEAPONS[listitem][police_shop_RANK] > PLAYER_SKILLS[playerid][WORK_POLICE])
{
SendClientMessageEx(playerid, -1, "{999999}Necesitas el rango %s para poder comprar esta arma.", POLICE_RANKS[ POLICE_SHOP_WEAPONS[listitem][police_shop_RANK] ]);
return 1;
}
if(CHARACTER_INFO[playerid][ch_CASH] >= POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_PRICE])
{
new weapon_slot = WEAPON_INFO[ POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_ID] ][weapon_info_SLOT];
if(PLAYER_WEAPONS[playerid][weapon_slot][player_weapon_ID] != 0)
{
SendClientMessageEx(playerid, -1, "{999999}Para comprar esta arma tienes que deshacerte de tu '%s' (%d) para tener espacio.", WEAPON_INFO[ PLAYER_WEAPONS[playerid][weapon_slot][player_weapon_ID] ][weapon_info_NAME], weapon_slot);
return 1;
}
GivePlayerCash(playerid, -POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_PRICE]);
if(WEAPON_INFO[ POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_ID] ][weapon_info_AMMO]) GivePlayerWeaponEx(playerid, POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_ID], 100);
else GivePlayerWeaponEx(playerid, POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_ID], 1);
RegisterNewPlayerWeapon(playerid, weapon_slot);
SendClientMessageEx(playerid, -1, "{CCCCCC}Arma {98d16c}'%s' {CCCCCC}comprada por %s$.", WEAPON_INFO[ POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_ID] ][weapon_info_NAME], number_format_thousand(POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_PRICE]));
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar esta arma.", number_format_thousand(POLICE_SHOP_WEAPONS[listitem][police_shop_WEAPON_PRICE] - CHARACTER_INFO[playerid][ch_CASH]));
}
}
return 1;
}
case DIALOG_HELP:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_HELP_GENERAL);
case 1: ShowDialog(playerid, DIALOG_HELP_CHARACTER);
case 2: ShowDialog(playerid, DIALOG_HELP_PROPERTIES);
case 3: ShowDialog(playerid, DIALOG_HELP_REPORT);
case 4: ShowDialog(playerid, DIALOG_HELP_WORKS);
case 5: ShowDialog(playerid, DIALOG_HELP_VEHICLES);
case 6: ShowDialog(playerid, DIALOG_HELP_CREWS);
case 7: ShowDialog(playerid, DIALOG_HELP_SU);
}
}
return 1;
}
case DIALOG_HELP_WORKS:
{
if(response)
{
new caption[45], dialog[1800], work = listitem + 1;
format(caption, sizeof caption, "Trabajo - %c%s", toupper(work_info[work][work_info_NAME][0]), work_info[work][work_info_NAME][1]);
new header[350];
if(work_info[work][work_info_TYPE] != WORK_TYPE_FAMILY)
{
if(work_info[work][work_info_EXTRA_PAY] > 0 && work_info[work][work_info_EXTRA_PAY_EXP] > 0) // con paga extra
{
if(!work_info[work][work_info_EXTRA_PAY_LIMIT]) // sin limite
{
format(header, sizeof header,
"\
Trabajo: %s\n\
Tipo: %s\n\
Nivel necesario: %d\n\
Paga extra: por cada %s trabajos realizados recibes %s$ extra.\n\
Puedes localizar donde adquirir este trabajo desde el GPS.\n\
",
work_info[work][work_info_NAME],
(work_info[work][work_info_TYPE] == WORK_TYPE_NORMAL) ? ("normal") : ("complementario"),
work_info[work][work_info_LEVEL],
number_format_thousand(work_info[work][work_info_EXTRA_PAY_EXP]),
number_format_thousand(work_info[work][work_info_EXTRA_PAY])
);
}
else // con limite
{
format(header, sizeof header,
"\
Trabajo: %s\n\
Tipo: %s\n\
Nivel necesario: %d\n\
Paga extra: por cada %s trabajos realizados recibes %s$ extra con un límite de %s$.\n\
Puedes localizar donde adquirir este trabajo desde el GPS.\n\
",
work_info[work][work_info_NAME],
(work_info[work][work_info_TYPE] == WORK_TYPE_NORMAL) ? ("normal") : ("complementario"),
work_info[work][work_info_LEVEL],
number_format_thousand(work_info[work][work_info_EXTRA_PAY_EXP]),
number_format_thousand(work_info[work][work_info_EXTRA_PAY]),
number_format_thousand(work_info[work][work_info_EXTRA_PAY_LIMIT])
);
}
}
else
{
format(header, sizeof header,
"\
Trabajo: %s\n\
Tipo: %s\n\
Nivel necesario: %d\n\
Puedes localizar donde adquirir este trabajo desde el GPS.\n\
",
work_info[work][work_info_NAME],
(work_info[work][work_info_TYPE] == WORK_TYPE_NORMAL) ? ("normal") : ("complementario"),
work_info[work][work_info_LEVEL]
);
}
}
switch(work)
{
case WORK_TAXI:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Solo súbete a un taxi y empieza a trabajar, recibirás las llamadas de los clientes.\n\
Las personas que hayan llamado a la central de taxi aparecerán marcados de color amarillo.\n\
Si tienes un GPS puedes utilizar /mapa para ver las personas que necesitan un taxi.\n\
\n\
El taxímetro se pondrá en marcha para el primer pasajero que se suba al taxi, el precio se\n\
mide en precio por km, puedes ajustarlo con el comando /tarifa.\n\
\n\
",
header
);
}
case WORK_TRUCK:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Súbete a cualquier camión de la empresa y ve a cargarlo en cualquier punto de carga.\n\
Según tu experiencia en el trabajo podrás transportar diferentes productos de más valor.\n\
\n\
",
header
);
}
case WORK_MECHANIC:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Para empezar a trabajar ve al taller y utiliza /mecanico para empezar a trabajar o dejar de trabajar.\n\
Con este trabajo podrás reparar los vehículos dañados en el taller o ir a arreglarlos por San Andreas.\n\
Las personas que hayan llamado al mecánico aparecerán marcados en el mapa.\n\
Si tienes un GPS puedes utilizar /mapa para ver las personas que necesitan un mecánico.\n\
Para reparar o tunear un vehículo usa /vmenu tras elegir una opción se le ofrecerá al dueño del vehículo\n\
en caso de ser un vehículo personal, si no se le ofrecerá al conductor o el último conductor del vehículo.\n\
\n\
Puedes utilizar los vehículos de tu trabajo o tu vehículo personal.\n\
Para cualquier reparación o modificación necesitarás piezas que puedes comprar en el taller.\n\
Para reparar o modificar un vehículo utiliza cerca del vehículo el comando /vmenu.\n\
\n\
Si el vehículo no está en el mecánico y se puede remolcar tendrás que remolcarlo hasta el mecánico\n\
para repararlo, se usa el comando /remolcar.\n\
\n\
En el taller también podrás pintar los vehículos.\n\
Para tunearlos o remover componentes tendrás que haber realizado al menos 100 reparaciones en vehículos ajenos.\n\
\n\
",
header
);
}
case WORK_HARVESTER:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Súbete a una cosechadora y empieza a cosechar.\n\
\n\
",
header
);
}
case WORK_TRASH:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Para este trabajo se necesitan 2 personas, uno que conduzca el camión y otro que recoja la basura.\n\
Para empezar a trabajar sube a alguien a un camión y selecciona la ruta que queréis realizar.\n\
\n\
Dependiendo de tu experiencia recogerás más rápido la basura.\n\
\n\
",
header
);
}
case WORK_LUMBERJACK:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Para empezar a trabajar ve a los árboles asignados y empieza a talar.\n\
Dependiendo de tu experiencia tu velocidad talando irá aumentando.\n\
\n\
",
header
);
}
case WORK_FARMER:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Necesitarás semillas para poder plantar que puedes comprar en la granja.\n\
Dependiendo de tu experiencia tu velocidad plantando irá aumentando.\n\
\n\
Después de que la planta crezca tienes 5 minutos para recogerla si no la planta se secará y se destruirá.\n\
Cuando termines de plantar espera a que la planta termine de crecer, para recogerla.\n\
Una vez recogida puedes vender el producto adquirido o usarlo para consumo propio.\n\
\n\
Cuida tus plantas, la gente puede destuirlas si le disparan.\n\
\n\
",
header
);
}
case WORK_POLICE:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Los policías en servicio aparecerán de color azul.\n\
Utiliza /policias para ver la lista de policías, los rangos altos podrán desde aquí\n\
bajar, subir el rango de los policías, también pueden expulsarlos del cuerpo.\n\
\n\
Para asignar un BYC una persona utiliza el comando /abyc.\n\
Usa /byc para ver los BYC de todos o de una persona, también para eliminarlos.\n\
Utiliza /esposar para esposar o desesposar a alguien que tenga nivel de búsqueda.\n\
Utiliza /revisar para ver las pertenencias del jugador esposado, utiliza /requisar para requisar las pertenencias ilegales.\n\
Utiliza /arrestar en tu vehículo personal para detener a alguien que esté esposado.\n\
Utiliza /ref para pedir refuerzos.\n\
Para utiliza el megáfono utiliza /m dentro de un vehículo policial.\n\
Para entregar a alguien tiene que estar arrestado en un vehículo policial\n\
y llevarlo a cualquiera de las 3 comisarías de San Andreas al parking y utilizar /entregar.\n\
\n\
Usa /control para añadir objetos como barreras etc.\n\
\n\
Para ponerte de servicio ve a cualquier comisaría y busca el vestuario para /policia.\n\
Los policías pueden equiparse en la comisaría.\n\
Para utilizar la radio debes estar de servicio, puedes seleccionar la frecuencia con /frecuencias, uso: !texto.\n\
Puedes abrir cualquier puerta de la comisaría pulsando la tecla F cerca de la puerta.\n\
Los policías recibirán la paga en el payday, su paga dependerá de su rango.\n\
\n\
",
header
);
}
case WORK_PIZZA:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Súbete a una moto y empieza a repartir pizzas.\n\
\n\
",
header
);
}
case WORK_MEDIC:
{
format(dialog, sizeof dialog,
"\
%s\
\n\
Ponte de servicio en cualquier hospital, tras esto verás a las persons que necesiten un médico\n\
marcadas en el mapa, ve rápido hasta ellas para poder salvarlos a tiempo.\n\
Para salvar la vida a alguien que este herido usa /curar.\n\
\n\
Cuando estás de servicio solo puedes conducir ambulancias.\n\
\n\
",
header
);
}
}
ShowPlayerDialog(playerid, DIALOG_INFO, DIALOG_STYLE_MSGBOX, caption, dialog, "Salir", "");
}
return 1;
}
case DIALOG_ADMIN_LIST:
{
if(response)
{
static const the_query[] = "SELECT COUNT(*) FROM `CUENTA` WHERE `ADMIN_LEVEL` > 0;";
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -2) // Siguiente
{
mysql_tquery(SMF_DATABASE, the_query, "LoadAdminListNextPage", "i", "playerid");
return 1;
}
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -3) //Anterior
{
mysql_tquery(SMF_DATABASE, the_query, "LoadAdminListPrevPage", "i", "playerid");
return 1;
}
else
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] >= 4)
{
PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_ADMIN_MODIFY);
}
}
}
return 1;
}
case DIALOG_ADMIN_MODIFY:
{
if(response)
{
if(listitem > ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL])
{
SendClientMessage(playerid, -1, "El rango que has seleccionado es superior al tuyo.");
return 1;
}
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `NAME`, `CONNECTED`, `PLAYERID`, `ADMIN_LEVEL` FROM `CUENTA` WHERE `ID` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadAdminRankModify", "ii", playerid, listitem);
}
else ShowDialog(playerid, DIALOG_ADMIN_LIST);
return 1;
}
case DIALOG_CHANGE_PASSWORD:
{
if(response)
{
if(!strlen(inputtext)) return ShowDialog(playerid, dialogid);
new password[64 + 1];
SHA256_PassHash(inputtext, ACCOUNT_INFO[playerid][ac_SALT], password, sizeof password);
if(!strcmp(password, ACCOUNT_INFO[playerid][ac_PASS], false))
{
ShowDialog(playerid, DIALOG_CHANGE_PASSWORD_PASS);
PLAYER_TEMP[playerid][pt_BAD_LOGIN_ATTEMP] = 0;
}
else // Error
{
PLAYER_TEMP[playerid][pt_BAD_LOGIN_ATTEMP] ++;
if(PLAYER_TEMP[playerid][pt_BAD_LOGIN_ATTEMP] > MAX_BAD_LOGIN_ATTEMPS) return Kick(playerid);
SendClientMessageEx(playerid, 0x999999AA, "Contraseña incorrecta, aviso %d/%d.", PLAYER_TEMP[playerid][pt_BAD_LOGIN_ATTEMP], MAX_BAD_LOGIN_ATTEMPS);
}
}
return 1;
}
case DIALOG_CHANGE_PASSWORD_PASS:
{
if(response)
{
if(strlen(inputtext) < MIN_PASS_LENGTH || strlen(inputtext) > MAX_PASS_LENGTH) return ShowDialog(playerid, dialogid);
new salt[16];
getRandomSalt(salt);
format(ACCOUNT_INFO[playerid][ac_SALT], 16, "%s", salt);
SHA256_PassHash(inputtext, ACCOUNT_INFO[playerid][ac_SALT], ACCOUNT_INFO[playerid][ac_PASS], 64 + 1);
new DB_Query[160];
format(DB_Query, sizeof DB_Query, "UPDATE `CUENTA` SET `SALT` = '%q' `PASS` = '%q' WHERE `ID` = '%d';", ACCOUNT_INFO[playerid][ac_SALT], ACCOUNT_INFO[playerid][ac_PASS], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessage(playerid, -1, "{CCCCCC}Tu contraseña ha sido cambiada correctamente.");
}
return 1;
}
case DIALOG_ANTI_CHEAT:
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] < 4) return 1;
if(response)
{
PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] = listitem;
ShowDialog(playerid, DIALOG_ANTI_CHEAT_MODIFY);
}
return 1;
}
case DIALOG_ANTI_CHEAT_MODIFY:
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] < 4) return 1;
if(response)
{
switch(listitem)
{
case 0:
{
if(ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Enabled]) ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Enabled] = false;
else ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Enabled] = true;
}
case 1: return ShowDialog(playerid, DIALOG_ANTI_CHEAT_MODIFY_DETECT);
case 2:
{
if(ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Kick]) ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Kick] = false;
else ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Kick] = true;
}
}
WriteAnticheatRules();
ShowDialog(playerid, DIALOG_ANTI_CHEAT_MODIFY);
}
else ShowDialog(playerid, DIALOG_ANTI_CHEAT);
return 1;
}
case DIALOG_ANTI_CHEAT_MODIFY_DETECT:
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] < 4) return 1;
if(response)
{
new detections, seconds;
if(sscanf(inputtext, "p<:>dd", detections, seconds))
{
SendClientMessage(playerid, -1, "Sintaxis no válida.");
ShowDialog(playerid, dialogid);
return 1;
}
if(detections < 1 || detections > 99999)
{
SendClientMessage(playerid, -1, "El número de detecciones debe ser 1 o mayor.");
ShowDialog(playerid, dialogid);
return 1;
}
if(seconds < 0 || seconds > 99999)
{
SendClientMessage(playerid, -1, "Los segundos no pueden ser un valor negativo.");
ShowDialog(playerid, dialogid);
return 1;
}
ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Detections] = detections;
ac_Info[ PLAYER_TEMP[playerid][pt_SELECTED_AC_LISTITEM] ][ac_Interval] = seconds;
WriteAnticheatRules();
ShowDialog(playerid, DIALOG_ANTI_CHEAT_MODIFY);
}
else ShowDialog(playerid, DIALOG_ANTI_CHEAT_MODIFY);
return 1;
}
case DIALOG_SHOP_ARTICLE_MODIFY:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}Por favor introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] < 0)
{
SendClientMessage(playerid, -1, "{999999}Por favor introduce un valor positivo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] > 1000000000)
{
SendClientMessage(playerid, -1, "{999999}El precio es demasiado alto.");
ShowDialog(playerid, dialogid);
return 1;
}
new DB_Query[80];
format(DB_Query, sizeof DB_Query, "UPDATE `SHOP` SET `PRICE` = '%d' WHERE `ID` = '%d';", inputtext[0], PLAYER_TEMP[playerid][pt_SHOP_SELECTED_ARTICLE_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
UpdatePlayerShop(playerid);
SendClientMessage(playerid, -1, "{CCCCCC}El precio de tu artículo ha sido actualizado.");
}
return 1;
}
case DIALOG_SHOP_ARTICLE_REMOVE:
{
if(response)
{
new DB_Query[80];
format(DB_Query, sizeof DB_Query, "DELETE FROM `SHOP` WHERE `ID` = '%d';", PLAYER_TEMP[playerid][pt_SHOP_SELECTED_ARTICLE_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
if(PLAYER_TEMP[playerid][pt_SHOP_COME_FROM_MY_ADS])
{
PLAYER_TEMP[playerid][pt_SHOP_STATE] = PLAYER_SHOP_STATE_MY_ADS;
UpdatePlayerShop(playerid);
}
else
{
PLAYER_TEMP[playerid][pt_SHOP_STATE] = PLAYER_SHOP_STATE_ALL;
UpdatePlayerShop(playerid);
}
SendClientMessage(playerid, -1, "{CCCCCC}Tu producto se ha eliminado.");
}
return 1;
}
case DIALOG_SHOP_ADD:
{
if(response)
{
switch(listitem)
{
case 0:
{
PLAYER_TEMP[playerid][pt_NOTARY_OPTION] = 2;
ShowDialog(playerid, DIALOG_NOTARY_SELECT_PROPERTY);
}
case 1:
{
PLAYER_TEMP[playerid][pt_NOTARY_OPTION] = 2;
ShowDialog(playerid, DIALOG_NOTARY_SELECT_VEHICLE);
}
case 2:
{
PLAYER_TEMP[playerid][pt_SHOP_ADD_TYPE] = SHOP_ARTICLE_TYPE_OTHER;
PLAYER_TEMP[playerid][pt_SHOP_ADD_MODELID] = 1314;
PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL1] = 0;
PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL2] = 0;
ShowDialog(playerid, DIALOG_SHOP_ADD_TEXT);
}
}
}
return 1;
}
case DIALOG_SHOP_ADD_TEXT:
{
if(response)
{
if(strlen(inputtext) > 24) return ShowDialog(playerid, dialogid);
new text[24];
if(sscanf(inputtext, "s[24]", text)) return ShowDialog(playerid, dialogid);
if(!td_str_legal(text)) return ShowDialog(playerid, dialogid);
format(PLAYER_TEMP[playerid][pt_SHOP_ADD_TEXT], 24, "%s", inputtext);
ShowDialog(playerid, DIALOG_SHOP_ADD_PRICE);
}
return 1;
}
case DIALOG_SHOP_ADD_PRICE:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}Por favor introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] < 0)
{
SendClientMessage(playerid, -1, "{999999}Por favor introduce un valor positivo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] > 1000000000)
{
SendClientMessage(playerid, -1, "{999999}El precio es demasiado alto.");
ShowDialog(playerid, dialogid);
return 1;
}
if(500 > CHARACTER_INFO[playerid][ch_CASH]) return SendClientMessage(playerid, -1, "{999999}Necesitas 500$ para poner el anuncio.");
AddNewAd(playerid, PLAYER_TEMP[playerid][pt_SHOP_ADD_TYPE], inputtext[0], PLAYER_TEMP[playerid][pt_SHOP_ADD_TEXT], PLAYER_TEMP[playerid][pt_SHOP_ADD_MODELID], PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL1], PLAYER_TEMP[playerid][pt_SHOP_ADD_VCOL2]);
GivePlayerCash(playerid, -500);
SendClientMessage(playerid, -1, "{CCCCCC}Tu anuncio se ha publicado correctamente.");
}
return 1;
}
case DIALOG_CRANE_SELECT_VEHICLE:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
new veh_money = (VEHICLE_INFO[GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_MODELID] - 400][vehicle_info_PRICE] / 100) + 350;
if(veh_money > CHARACTER_INFO[playerid][ch_CASH])
{
SendClientMessageEx(playerid, -1, "{999999}Necesitas %s$ para remolcar este vehículo al depósito municipal.", veh_money);
return 1;
}
if(GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_OCCUPIED])
{
SendClientMessage(playerid, -1, "{999999}No podemos remolcar tu vehículo porque hay alguien conduciéndolo.");
return 1;
}
new crane_point = random(sizeof(CRANE_POINTS));
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_SPAWN_X] = CRANE_POINTS[crane_point][0];
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_SPAWN_Y] = CRANE_POINTS[crane_point][1];
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_SPAWN_Z] = CRANE_POINTS[crane_point][2];
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_SPAWN_ANGLE] = CRANE_POINTS[crane_point][3];
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_LAST_CLOSED_TIME] = gettime();
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_PARAMS_ENGINE] = 0;
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_PARAMS_LIGHTS] = 0;
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_PARAMS_DOORS] = 1;
UpdateVehicleParams(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem]);
SetVehicleToRespawnEx(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem]);
GivePlayerCash(playerid, -veh_money);
SendClientMessageEx(playerid, -1, "{CCCCCC}Tu vehículo %s ha sido remolcado hasta el depósito municipal.", VEHICLE_INFO[GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][gb_vehicle_MODELID] - 400][vehicle_info_NAME]);
}
return 1;
}
case DIALOG_CREATE_CREW:
{
if(response)
{
if(ACCOUNT_INFO[playerid][ac_LEVEL] < 5) return SendClientMessage(playerid, -1, "{999999}Necesitas ser nivel 5 para poder crear una banda.");
ShowDialog(playerid, DIALOG_CREATE_CREW_NAME);
}
return 1;
}
case DIALOG_CREATE_CREW_NAME:
{
if(response)
{
if(strlen(inputtext) >= 32)
{
SendClientMessage(playerid, -1, "{999999}Como máximo puedes introducir un nombre de 32 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
new crew_name[32];
if(sscanf(inputtext, "s[32]", crew_name))
{
SendClientMessage(playerid, -1, "{999999}Introduce un nombre para tu banda.");
ShowDialog(playerid, dialogid);
return 1;
}
format(PLAYER_TEMP[playerid][pt_CREATE_CREW_NAME], 32, "%s", crew_name);
ShowDialog(playerid, DIALOG_CREATE_CREW_COLOR);
}
return 1;
}
case DIALOG_CREATE_CREW_COLOR:
{
if(response)
{
PLAYER_TEMP[playerid][pt_CREATE_CREW_COLOR] = listitem;
ShowDialog(playerid, DIALOG_CREATE_CREW_CONFIRM);
}
else ShowDialog(playerid, DIALOG_CREATE_CREW_NAME);
return 1;
}
case DIALOG_CREATE_CREW_CONFIRM:
{
if(response)
{
new index = GetAvaibleCrewIndex();
if(index == -1)
{
SendClientMessageEx(playerid, -1, "{999999}No se puede crear la banda porque no hay espacio disponible, el límite de bandas es %d.", MAX_CREWS);
return 1;
}
if(600000 > CHARACTER_INFO[playerid][ch_CASH])
{
SendClientMessage(playerid, -1, "{999999}Necesitas 600.000$ para crear la banda.");
return 1;
}
GivePlayerCash(playerid, -600000);
CREW_INFO[index][crew_VALID] = true;
format(CREW_INFO[index][crew_NAME], 32, "%s", PLAYER_TEMP[playerid][pt_CREATE_CREW_NAME]);
CREW_INFO[index][crew_COLOR] = RandomColors[ PLAYER_TEMP[playerid][pt_CREATE_CREW_COLOR] ];
CREW_RANK_INFO[index][0][crew_rank_VALID] = true;
format(CREW_RANK_INFO[index][0][crew_rank_NAME], 32, "Fundador");
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_CHANGE_NAME] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_INVITE] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_CAST_MEMBERS] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_MODIFY_MEMBERS] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_ADD_PROPERTIES] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_DELETE_PROPERTIES] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_CHANGE_COLOR] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_LEAVE_TERRITORY] =
CREW_RANK_INFO[index][0][crew_rank_PERMISSION][CREW_RANK_DELETE] = 1;
NewCrewRegister(index);
PLAYER_CREW[playerid][player_crew_VALID] = true;
PLAYER_CREW[playerid][player_crew_ID] = CREW_INFO[index][crew_ID];
PLAYER_CREW[playerid][player_crew_RANK] = 0;
PLAYER_CREW[playerid][player_crew_INDEX] = index;
SetPlayerGangZones(playerid);
new DB_Query[200];
format(DB_Query, sizeof DB_Query,
"\
DELETE FROM `PLAYER_CREW` WHERE `ID_USER` = '%d';\
INSERT INTO `PLAYER_CREW` (`ID_USER`, `ID_CREW`, `RANK`) VALUES ('%d', '%d', '%d');\
",
ACCOUNT_INFO[playerid][ac_ID],
ACCOUNT_INFO[playerid][ac_ID],
PLAYER_CREW[playerid][player_crew_ID],
PLAYER_CREW[playerid][player_crew_RANK]
);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessageEx(playerid, -1, "La banda {%06x}'%s' {FFFFFF}se ha creado correctamente, usa {f4f142}/banda {FFFFFF}para administrarla.", CREW_INFO[index][crew_COLOR] >>> 8, CREW_INFO[index][crew_NAME]);
}
return 1;
}
case DIALOG_CREW_MENU:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
switch(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem])
{
case CREW_RANK_SIZE: //Lista de miembros
{
PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] = 10;
PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
ShowDialog(playerid, DIALOG_CREW_MEMBER_LIST);
}
case CREW_RANK_CHANGE_NAME:
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_NAME]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No se puede cambiar el nombre de la banda cuando la banda está en combate.");
ShowDialog(playerid, DIALOG_CREW_CHANGE_NAME);
}
case CREW_RANK_CAST_MEMBERS:
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CAST_MEMBERS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] = 10;
PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
ShowDialog(playerid, DIALOG_CREW_MEMBER_LIST_DELETE);
}
case CREW_RANK_MODIFY_RANKS:
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
ShowDialog(playerid, DIALOG_CREW_RANKS);
}
case CREW_RANK_CHANGE_COLOR:
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_COLOR]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No se puede cambiar el color cuando la banda está en combate.");
ShowDialog(playerid, DIALOG_CREW_MODIFY_COLOR);
}
case CREW_RANK_DELETE:
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_DELETE]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
ShowDialog(playerid, DIALOG_CREW_DELETE);
}
case CREW_RANK_MODIFY_MEMBERS:
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_MEMBERS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] = 10;
PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
ShowDialog(playerid, DIALOG_CREW_MODIFY_MEMBERS);
}
case CREW_RANK_SIZE + 1: //Abandonar banda
{
if(PLAYER_CREW[playerid][player_crew_RANK] == 0)
{
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d' AND `RANK` = '0';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewFounderCount", "i", playerid);
return 1;
}
ShowDialog(playerid, DIALOG_CREW_LEAVE);
}
}
}
return 1;
}
case DIALOG_CREW_MEMBER_LIST:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return ShowDialog(playerid, dialogid);
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -2) // Siguiente
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, the_query, "LoadCrewMemberListNextPage", "i", playerid);
return 1;
}
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -3) //Anterior
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, the_query, "LoadCrewMemberListPrevPage", "i", playerid);
return 1;
}
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_CHANGE_NAME:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_NAME]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No se puede cambiar el nombre de la banda cuando la banda está en combate.");
if(strlen(inputtext) >= 32)
{
SendClientMessage(playerid, -1, "{999999}Como máximo puedes introducir un nombre de 32 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
new crew_name[32];
if(sscanf(inputtext, "s[32]", crew_name))
{
SendClientMessage(playerid, -1, "{999999}Introduce un nombre para tu banda.");
ShowDialog(playerid, dialogid);
return 1;
}
format(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME], 32, "%s", crew_name);
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "UPDATE `CREW` SET `NAME` = '%q' WHERE `ID` = '%d';", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME], CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
//actualizar nombre casas pickups
new message[145], label_str[256];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) cambió el nombre de la banda a '%s'.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME]);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], -1, message);
for(new i = 0; i != MAX_PROPERTIES; i ++)
{
if(!PROPERTY_INFO[i][property_VALID]) continue;
if(!PROPERTY_INFO[i][property_CREW]) continue;
if(PROPERTY_INFO[i][property_CREW_ID] != PLAYER_CREW[playerid][player_crew_ID]) continue;
format
(
label_str,
sizeof label_str,
"\
Propiedad {C4FF66}#%d\n\n\
{FFFFFF}Banda: {C4FF66}%s\n\
{FFFFFF}Usa {C4FF66}/entrar {FFFFFF}para entrar.\
", PROPERTY_INFO[i][property_ID], CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME]
);
UpdateDynamic3DTextLabelText(PROPERTY_INFO[i][property_EXT_LABEL_ID], 0xFFFFFFFF, label_str);
}
ShowDialog(playerid, DIALOG_CREW_MENU);
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_MEMBER_LIST_DELETE:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CAST_MEMBERS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -2) // Siguiente
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, the_query, "CrewMemberListDeletePagesNext", "i", playerid);
return 1;
}
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -3) //Anterior
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, the_query, "CrewMemberListDeletePagesPrev", "i", playerid);
return 1;
}
else
{
PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT `PLAYER_CREW`.`RANK` FROM `CUENTA`, `PLAYER_CREW` WHERE `CUENTA`.`ID` = '%d' AND `PLAYER_CREW`.`ID_USER` = `CUENTA`.`ID`;", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewMemberRankDelete", "i", playerid);
return 1;
}
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_CAST_MEMBER_CONFIRM:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CAST_MEMBERS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
new DB_Query[320];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `CUENTA`.`CONNECTED`, `CUENTA`.`PLAYERID`, `PLAYER_CREW`.`RANK` FROM `CUENTA`, `PLAYER_CREW` WHERE `CUENTA`.`ID` = '%d' AND `PLAYER_CREW`.`ID_USER` = `CUENTA`.`ID`;", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewMemberRankCast", "i", playerid);
return 1;
}
else ShowDialog(playerid, DIALOG_CREW_MEMBER_LIST_DELETE);
return 1;
}
case DIALOG_CREW_INVITE_RANK:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_INVITE]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] < PLAYER_CREW[playerid][player_crew_RANK])
{
SendClientMessage(playerid, -1, "{999999}No puedes invitar con este rango porque es superior al tuyo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_CREW_INVITE_PID])) return SendClientMessage(playerid, -1, "{999999}El jugador está desconectado.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_CREW_INVITE_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 2.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "Este jugador no está cerca tuya.");
if(PLAYER_WORKS[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][WORK_POLICE]) return SendClientMessage(playerid, -1, "{999999}Esta persona es policía y no puede tener banda.");
if(PLAYER_CREW[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}Esta persona pertenece a otra banda.");
if(PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][pt_GAME_STATE] != GAME_STATE_NORMAL) return SendClientMessage(playerid, -1, "{999999}No puedes invitar a este jugador ahora.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_CREW_INVITE_AID]) return SendClientMessage(playerid, -1, "{999999}El jugador está desconectado.");
SendClientMessageEx(playerid, -1, "Has ofrecido a %s unirse a la banda con el rango %s.", PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][crew_rank_NAME]);
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][pt_CREW_INVITE_INFO][0] = PLAYER_CREW[playerid][player_crew_ID];
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][pt_CREW_INVITE_INFO][1] = PLAYER_CREW[playerid][player_crew_INDEX];
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][pt_CREW_INVITE_INFO][2] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
PLAYER_TEMP[ PLAYER_TEMP[playerid][pt_CREW_INVITE_PID] ][pt_CREW_INVITE_INFO][3] = gettime();
ShowDialog(PLAYER_TEMP[playerid][pt_CREW_INVITE_PID], DIALOG_CREW_INVITE_ACCEPT);
}
return 1;
}
case DIALOG_CREW_INVITE_ACCEPT:
{
if(response)
{
if(!CREW_INFO[ PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][1] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}Esta banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][1] ][ PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][2] ][crew_rank_VALID]) return SendClientMessage(playerid, -1, "{999999}El rango que te han ofrecio ya no existe.");
if(gettime() > PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][3] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptar.");
if(CREW_INFO[ PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][1] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No puedes unirte a la banda cuando la banda está en combate.");
PLAYER_CREW[playerid][player_crew_VALID] = true;
PLAYER_CREW[playerid][player_crew_ID] = PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][0];
PLAYER_CREW[playerid][player_crew_RANK] = PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][2];
PLAYER_CREW[playerid][player_crew_INDEX] = PLAYER_TEMP[playerid][pt_CREW_INVITE_INFO][1];
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_MEMBERS] ++;
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ONLINE_MEMBERS] ++;
PLAYER_TEMP[playerid][pt_LAST_GOT_CREW] = gettime();
SetPlayerGangZones(playerid);
new DB_Query[200];
format(DB_Query, sizeof DB_Query,
"\
DELETE FROM `PLAYER_CREW` WHERE `ID_USER` = '%d';\
INSERT INTO `PLAYER_CREW` (`ID_USER`, `ID_CREW`, `RANK`) VALUES ('%d', '%d', '%d');\
",
ACCOUNT_INFO[playerid][ac_ID],
ACCOUNT_INFO[playerid][ac_ID],
PLAYER_CREW[playerid][player_crew_ID],
PLAYER_CREW[playerid][player_crew_RANK]
);
mysql_tquery(SMF_DATABASE, DB_Query);
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s se ha unido a la banda con el rango %s.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME]);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], -1, message);
}
return 1;
}
case DIALOG_CREW_RANKS:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(listitem < PLAYER_CREW[playerid][player_crew_RANK])
{
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][listitem][crew_rank_VALID]) SendClientMessage(playerid, -1, "{999999}No puedes modificar este rango porque es un rango superior al tuyo.");
else SendClientMessage(playerid, -1, "{999999}No puedes crear un rango en este puesto porque es superior al tuyo.");
return 1;
}
PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] = listitem;
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][listitem][crew_rank_VALID]) ShowDialog(playerid, DIALOG_CREW_RANK_MODIFY);
else ShowDialog(playerid, DIALOG_CREW_RANK_CREATE);
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_RANK_MODIFY:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_CREW_RANK_MODIFY_NAME);
case 1:
{
if(PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] == 0)
{
SendClientMessage(playerid, -1, "{999999}No se pueden modificar los permisos de este rango porque es el rango fundador.");
return 1;
}
ShowDialog(playerid, DIALOG_CREW_RANK_MODIFY_PERMISS);
}
case 2:
{
if(PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] == 0)
{
SendClientMessage(playerid, -1, "{999999}No se puede eliminar este rango porque es el rango fundador.");
return 1;
}
SendClientMessageEx(playerid, -1, "{f1df53}[Atención] {FFFFFF}Selecciona el nuevo rango para los miembros que actualmente tienen el rango {4eba18}'%s'.", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME]);
ShowDialog(playerid, DIALOG_CREW_RANK_DELETE);
}
}
}
else ShowDialog(playerid, DIALOG_CREW_RANKS);
return 1;
}
case DIALOG_CREW_RANK_MODIFY_NAME:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(strlen(inputtext) >= 32)
{
SendClientMessage(playerid, -1, "{999999}Como máximo puedes introducir un nombre de 32 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
new rank_name[32];
if(sscanf(inputtext, "s[32]", rank_name))
{
SendClientMessage(playerid, -1, "{999999}Introduce el nuevo nombre para el rango.");
ShowDialog(playerid, dialogid);
return 1;
}
SendClientMessageEx(playerid, -1, "Has modificado el nombre del rango '%s' a '%s'.", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME], rank_name);
format(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME], 32, "%s", rank_name);
new DB_Query[145];
format(DB_Query, sizeof DB_Query, "UPDATE `CREW_RANKS` SET `RANK_NAME` = '%q' WHERE `ID` = '%d';", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
}
else ShowDialog(playerid, DIALOG_CREW_RANK_MODIFY);
return 1;
}
case DIALOG_CREW_RANK_CREATE:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(strlen(inputtext) >= 32)
{
SendClientMessage(playerid, -1, "{999999}Como máximo puedes introducir un nombre de 32 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
new rank_name[32];
if(sscanf(inputtext, "s[32]", rank_name))
{
SendClientMessage(playerid, -1, "{999999}Introduce un nombre para el rango.");
ShowDialog(playerid, dialogid);
return 1;
}
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_VALID])
{
SendClientMessage(playerid, -1, "{999999}Parece que alguien ya ha creado un rango en este espacio.");
return 1;
}
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_VALID] = true;
format(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME], 32, "%s", rank_name);
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_NAME] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_INVITE] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_CAST_MEMBERS] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_MEMBERS] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_ADD_PROPERTIES] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_DELETE_PROPERTIES] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_COLOR] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_LEAVE_TERRITORY] =
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][CREW_RANK_DELETE] = 0;
RegisterNewCrewRank(PLAYER_CREW[playerid][player_crew_INDEX], PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK]);
SendClientMessageEx(playerid, -1, "El rango '%s' ha sido creado, ahora puedes editarlo y darle permisos.", rank_name);
ShowDialog(playerid, DIALOG_CREW_RANKS);
}
else ShowDialog(playerid, DIALOG_CREW_RANKS);
return 1;
}
case DIALOG_CREW_RANK_MODIFY_PERMISS:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][listitem])
{
SendClientMessage(playerid, -1, "{999999}No puedes cambiar este permiso porque tu no tienes este permiso.");
ShowDialog(playerid, dialogid);
return 1;
}
if(CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][listitem]) CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][listitem] = false;
else CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][listitem] = true;
new DB_Query[120];
format(DB_Query, sizeof DB_Query, "UPDATE `RANK_PERMISSIONS` SET `SET` = '%d' WHERE `ID_RANK` = '%d' AND `PERMISSION` = '%d';", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][listitem], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_ID], listitem);
mysql_tquery(SMF_DATABASE, DB_Query);
ShowDialog(playerid, dialogid);
}
else ShowDialog(playerid, DIALOG_CREW_RANK_MODIFY);
return 1;
}
case DIALOG_CREW_RANK_DELETE:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] < PLAYER_CREW[playerid][player_crew_RANK])
{
SendClientMessage(playerid, -1, "{999999}No puedes seleccionar este rango porque es superior al tuyo.");
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_CREW_SELECTED_NEW_RANK] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_CREW_RANK_DELETE_CONFIRM);
}
return 1;
}
case DIALOG_CREW_RANK_DELETE_CONFIRM:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_RANKS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
new DB_Query[256];
format(DB_Query, sizeof DB_Query,
"\
DELETE FROM `CREW_RANKS` WHERE `ID` = '%d';\
UPDATE `PLAYER_CREW` SET `RANK` = '%d' WHERE `ID_CREW` = '%d' AND `RANK` = '%d';\
",
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_ID],
PLAYER_TEMP[playerid][pt_CREW_SELECTED_NEW_RANK],
PLAYER_CREW[playerid][player_crew_ID],
PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK]
);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessageEx(playerid, -1, "{CCCCCC}Has eliminado el rango '%s'.", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME]);
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) cambió tu rango al rango '%s'.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_NEW_RANK] ][crew_rank_NAME]);
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if(PLAYER_CREW[i][player_crew_VALID])
{
if(PLAYER_CREW[i][player_crew_ID] == PLAYER_CREW[playerid][player_crew_ID])
{
if(PLAYER_CREW[i][player_crew_RANK] == PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK])
{
PLAYER_CREW[i][player_crew_RANK] = PLAYER_TEMP[playerid][pt_CREW_SELECTED_NEW_RANK];
SendClientMessage(i, -1, message);
}
}
}
}
}
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_VALID] = false;
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_ID] = 0;
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME][0] = EOS;
for(new i = 0; i != CREW_RANK_SIZE; i ++) CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_PERMISSION][i] = 0;
}
else ShowDialog(playerid, DIALOG_CREW_RANKS);
return 1;
}
case DIALOG_CREW_MODIFY_COLOR:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_CHANGE_COLOR]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No se puede cambiar el color cuando la banda está en combate.");
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] = RandomColors[listitem];
new r, g, b, a, new_territory_color;
HexToRGBA(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR], r, g, b, a);
new_territory_color = RGBAToHex(r, g, b, 135);
for(new i = 0; i != MAX_TERRITORIES; i ++)
{
if(!TERRITORIES[i][territory_VALID]) continue;
if(!TERRITORIES[i][territory_OCCUPIED]) continue;
if(TERRITORIES[i][territory_CREW_ID] == PLAYER_CREW[playerid][player_crew_ID])
{
TERRITORIES[i][territory_COLOR] = new_territory_color;
UpdateGangZoneColor(i);
}
}
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "UPDATE `CREW` SET `COLOR` = '%d' WHERE `ID` = '%d';", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR], CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessage(playerid, -1, "{CCCCCC}El color de la banda se ha cambiado.");
ShowDialog(playerid, DIALOG_CREW_MENU);
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_DELETE:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_DELETE]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No se puede borrar la banda cuando está en combate.");
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) ha eliminado la banda.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME]);
new DB_Query[350];
format(DB_Query, sizeof DB_Query, "DELETE FROM `CREW` WHERE `ID` = '%d';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new tmp_CREW_INFO[enum_CREW_INFO], old_crew_id = PLAYER_CREW[playerid][player_crew_ID];
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ] = tmp_CREW_INFO;
new tmp_CREW_RANK_INFO[enum_CREW_RANK_INFO];
for(new i = 0; i != MAX_CREW_RANKS; i ++) CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i] = tmp_CREW_RANK_INFO;
new tmp_PLAYER_CREW[enum_PLAYER_CREW];
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if(PLAYER_CREW[i][player_crew_VALID])
{
if(PLAYER_CREW[i][player_crew_ID] == PLAYER_CREW[playerid][player_crew_ID])
{
SetPlayerNormalColor(i);
HidePlayerGangZones(i);
if(PLAYER_TEMP[i][pt_LAST_TERRITORY] != INVALID_STREAMER_ID)
{
TextDrawHideForPlayer(i, Textdraws[textdraw_TERRITORY_BOX]);
TextDrawHideForPlayer(i, TERRITORIES[ PLAYER_TEMP[i][pt_LAST_TERRITORY] ][territory_TEXTDRAW]);
}
PLAYER_CREW[i] = tmp_PLAYER_CREW;
SendClientMessage(i, -1, message);
}
}
}
}
for(new i = 0; i != MAX_TERRITORIES; i ++)
{
if(!TERRITORIES[ i ][territory_VALID]) continue;
if(!TERRITORIES[ i ][territory_OCCUPIED]) continue;
if(TERRITORIES[ i ][territory_CREW_ID] != old_crew_id) continue;
TERRITORIES[ i ][territory_OCCUPIED] = false;
TERRITORIES[ i ][territory_CREW_ID] = 0;
TERRITORIES[ i ][territory_CREW_INDEX] = 0;
TERRITORIES[ i ][territory_COLOR] = 0xCCCCCC55;
UpdateGangZoneColor(i);
}
for(new i = 0; i != MAX_PROPERTIES; i ++)
{
if(!PROPERTY_INFO[i][property_VALID]) continue;
if(!PROPERTY_INFO[i][property_CREW]) continue;
if(PROPERTY_INFO[i][property_CREW_ID] != old_crew_id) continue;
PROPERTY_INFO[ i ][property_SOLD] = false;
PROPERTY_INFO[ i ][property_CREW] = false;
PROPERTY_INFO[ i ][property_OWNER_ID] = 0;
PROPERTY_INFO[ i ][property_CREW_ID] = 0;
format(PROPERTY_INFO[ i ][property_NAME], 24, "PROPIEDAD %d", PROPERTY_INFO[ i ][property_ID]);
new info_arr[3];
UpdateUnnocupiedPropertyLabel(i);
DestroyDynamicPickup(PROPERTY_INFO[ i ][property_EXT_PICKUP_ID]);
PROPERTY_INFO[ i ][property_EXT_PICKUP_ID] = INVALID_STREAMER_ID;
PROPERTY_INFO[ i ][property_EXT_PICKUP_ID] = CreateDynamicPickup(1273, 1, PROPERTY_INFO[ i ][property_EXT_X], PROPERTY_INFO[ i ][property_EXT_Y], PROPERTY_INFO[ i ][property_EXT_Z], 0, PROPERTY_INFO[ i ][property_EXT_INTERIOR]);
info_arr[0] = PICKUP_TYPE_PROPERTY;
info_arr[1] = i; // Index
info_arr[2] = 2; // Pickup Exterior
Streamer_SetArrayData(STREAMER_TYPE_PICKUP, PROPERTY_INFO[ i ][property_EXT_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
format(DB_Query, sizeof(DB_Query), "DELETE FROM `PROPERTY_TERRITORY` WHERE `ID_PROPERTY` = '%d';", PROPERTY_INFO[i][property_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
}
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_LEAVE:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(response)
{
new DB_Query[128];
if(PLAYER_CREW[playerid][player_crew_RANK] == 0)
{
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d' AND `RANK` = '0';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewFounderCountLeave", "i", playerid);
return 1;
}
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) ha abandonado la banda.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME]);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], -1, message);
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_CREW` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SetPlayerNormalColor(playerid);
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_MEMBERS] --;
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ONLINE_MEMBERS] --;
HidePlayerGangZones(playerid);
new tmp_PLAYER_CREW[enum_PLAYER_CREW];
PLAYER_CREW[playerid] = tmp_PLAYER_CREW;
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_MODIFY_MEMBERS:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_MEMBERS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -2) // Siguiente
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, the_query, "LoadCrewMembersModifyNextPage", "i", playerid);
return 1;
}
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -3) //Anterior
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, the_query, "LoadCrewMembersModifyPrevPage", "i", playerid);
return 1;
}
else
{
PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_CREW_MODIFY_MEMBER);
}
}
else ShowDialog(playerid, DIALOG_CREW_MENU);
return 1;
}
case DIALOG_CREW_MODIFY_MEMBER:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_MODIFY_MEMBERS]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] < PLAYER_CREW[playerid][player_crew_RANK])
{
SendClientMessage(playerid, -1, "{999999}No puedes dar este rango porque es un rango superior al tuyo.");
return 1;
}
new DB_Query[320];
format(DB_Query, sizeof DB_Query, "SELECT `CUENTA`.`NAME`, `CUENTA`.`CONNECTED`, `CUENTA`.`PLAYERID`, `PLAYER_CREW`.`RANK` FROM `CUENTA`, `PLAYER_CREW` WHERE `CUENTA`.`ID` = '%d' AND `PLAYER_CREW`.`ID_USER` = `CUENTA`.`ID`;", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewMemberModify", "ii", playerid, listitem);
return 1;
}
else ShowDialog(playerid, DIALOG_CREW_MODIFY_MEMBERS);
return 1;
}
case DIALOG_CREW_PROPERTY_CONFIRM:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_ADD_PROPERTIES]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(!TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_VALID]) return SendClientMessage(playerid, -1, "{999999}La propiedad no está dentro de un territorio de tu banda.");
if(!TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_OCCUPIED]) return SendClientMessage(playerid, -1, "{999999}La propiedad no está dentro de un territorio de tu banda.");
if(TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_CREW_ID] != PLAYER_CREW[playerid][player_crew_ID]) return SendClientMessage(playerid, -1, "{999999}La propiedad no está dentro de un territorio de tu banda.");
if(!IsPointInDynamicArea(TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_AREA], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_X], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Y], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Z])) return SendClientMessage(playerid, -1, "{999999}La propiedad no está dentro de un territorio de tu banda.");
if(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_OWNER_ID] != ACCOUNT_INFO[playerid][ac_ID]) return SendClientMessage(playerid, -1, "{999999}Esta no es tu propiedad.");
new index = PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED];
PROPERTY_INFO[ index ][property_CREW] = true;
PROPERTY_INFO[ index ][property_OWNER_ID] = 0;
PROPERTY_INFO[ index ][property_CREW_ID] = PLAYER_CREW[playerid][player_crew_ID];
format(PROPERTY_INFO[ index ][property_NAME], 24, "PROPIEDAD %d", PROPERTY_INFO[ index ][property_ID]);
new label_str[256];
format
(
label_str,
sizeof label_str,
"\
Propiedad {C4FF66}#%d\n\n\
{FFFFFF}Banda: {C4FF66}%s\n\
{FFFFFF}Usa {C4FF66}/entrar {FFFFFF}para entrar.\
", PROPERTY_INFO[index][property_ID], CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME]
);
UpdateDynamic3DTextLabelText(PROPERTY_INFO[ index ][property_EXT_LABEL_ID], 0xFFFFFFFF, label_str);
new DB_Query[350];
format(DB_Query, sizeof(DB_Query), "INSERT INTO `PROPERTY_TERRITORY` (`ID_PROPERTY`, `ID_TERRITORY`) VALUES ('%d', '%d');", PROPERTY_INFO[ index ][property_ID], TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
format(DB_Query, sizeof(DB_Query), "DELETE FROM `PROPERTY_OWNER` WHERE `ID_PROPERTY` = '%d';", PROPERTY_INFO[ index ][property_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) ha añadido una nueva propiedad en %s.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_NAME]);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], -1, message);
}
return 1;
}
case DIALOG_CREW_LEAVE_TERRITORY:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_LEAVE_TERRITORY]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(!IsPlayerInDynamicArea(playerid, TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_AREA])) return SendClientMessage(playerid, -1, "{999999}No estás en un territorio de tu banda.");
if(TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_CREW_ID] != PLAYER_CREW[playerid][player_crew_ID]) return SendClientMessage(playerid, -1, "{999999}No estás en un territorio de tu banda.");
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No puedes abandonar territorios mientras tu banda está en combate.");
if(TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_WAR]) return SendClientMessage(playerid, -1, "{999999}No se puede abandonar este territorio cuando está siendo conquistado.");
TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_OCCUPIED] = false;
TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_CREW_ID] = 0;
TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_CREW_INDEX] = 0;
TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_COLOR] = 0xCCCCCC55;
UpdateGangZoneColor(PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO]);
new DB_Query[350];
format(DB_Query, sizeof DB_Query, "DELETE FROM `CREW_TERRITORIES` WHERE `ID_TERRITORY` = '%d';", TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
for(new i = 0; i != MAX_PROPERTIES; i ++)
{
if(!PROPERTY_INFO[i][property_VALID]) continue;
if(!PROPERTY_INFO[i][property_CREW]) continue;
if(PROPERTY_INFO[i][property_CREW_ID] != PLAYER_CREW[playerid][player_crew_ID]) continue;
if(IsPointInDynamicArea(TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_AREA], PROPERTY_INFO[i][property_EXT_X], PROPERTY_INFO[i][property_EXT_Y], PROPERTY_INFO[i][property_EXT_Z]))
{
PROPERTY_INFO[ i ][property_SOLD] = false;
PROPERTY_INFO[ i ][property_CREW] = false;
PROPERTY_INFO[ i ][property_OWNER_ID] = 0;
PROPERTY_INFO[ i ][property_CREW_ID] = 0;
format(PROPERTY_INFO[ i ][property_NAME], 24, "PROPIEDAD %d", PROPERTY_INFO[ i ][property_ID]);
new info_arr[3];
UpdateUnnocupiedPropertyLabel(i);
DestroyDynamicPickup(PROPERTY_INFO[ i ][property_EXT_PICKUP_ID]);
PROPERTY_INFO[ i ][property_EXT_PICKUP_ID] = INVALID_STREAMER_ID;
PROPERTY_INFO[ i ][property_EXT_PICKUP_ID] = CreateDynamicPickup(1273, 1, PROPERTY_INFO[ i ][property_EXT_X], PROPERTY_INFO[ i ][property_EXT_Y], PROPERTY_INFO[ i ][property_EXT_Z], 0, PROPERTY_INFO[ i ][property_EXT_INTERIOR]);
info_arr[0] = PICKUP_TYPE_PROPERTY;
info_arr[1] = i; // Index
info_arr[2] = 2; // Pickup Exterior
Streamer_SetArrayData(STREAMER_TYPE_PICKUP, PROPERTY_INFO[ i ][property_EXT_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
format(DB_Query, sizeof(DB_Query), "DELETE FROM `PROPERTY_TERRITORY` WHERE `ID_PROPERTY` = '%d';", PROPERTY_INFO[ i ][property_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
}
}
new message[145];
format(message, sizeof message, "{f4e242}[BANDAS] {FFFFFF}La banda '%s' ha abandonado un territorio en %s.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME], TERRITORIES[ PLAYER_TEMP[playerid][pt_PLAYER_TERRITORY_PRO] ][territory_NAME]);
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if(PLAYER_CREW[i][player_crew_VALID])
{
SendClientMessage(i, -1, message);
}
}
}
}
return 1;
}
case DIALOG_CREW_LEAVE_PROPERTY:
{
if(!PLAYER_CREW[playerid][player_crew_VALID]) return SendClientMessage(playerid, -1, "{999999}No perteneces a ninguna banda.");
if(!CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_VALID]) return SendClientMessage(playerid, -1, "{999999}La banda ya no existe.");
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_PERMISSION][CREW_RANK_DELETE_PROPERTIES]) return SendClientMessage(playerid, 0x999999AA, "No tienes permiso.");
if(response)
{
if(!PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_CREW]) return SendClientMessage(playerid, -1, "{999999}Esta no es una propiedad de tu banda.");
if(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_CREW_ID] != PLAYER_CREW[playerid][player_crew_ID]) return SendClientMessage(playerid, -1, "{999999}Esta no es una propiedad de tu banda.");
if(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_FIGHTING]) return SendClientMessage(playerid, -1, "{999999}No puedes liberar una propiedad cuando tu banda está en combate.");
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_SOLD] = false;
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_CREW] = false;
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_OWNER_ID] = 0;
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_CREW_ID] = 0;
format(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_NAME], 24, "PROPIEDAD %d", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID]);
new info_arr[3];
UpdateUnnocupiedPropertyLabel(PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]);
DestroyDynamicPickup(PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_PICKUP_ID]);
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_PICKUP_ID] = INVALID_STREAMER_ID;
PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_PICKUP_ID] = CreateDynamicPickup(1273, 1, PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_X], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Y], PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_Z], 0, PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_INTERIOR]);
info_arr[0] = PICKUP_TYPE_PROPERTY;
info_arr[1] = PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED]; // Index
info_arr[2] = 2; // Pickup Exterior
Streamer_SetArrayData(STREAMER_TYPE_PICKUP, PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_EXT_PICKUP_ID], E_STREAMER_EXTRA_ID, info_arr);
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PROPERTY_TERRITORY` WHERE `ID_PROPERTY` = '%d';", PROPERTY_INFO[ PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED] ][property_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessage(playerid, -1, "{CCCCCC}La propiedad ha sido liberada.");
}
return 1;
}
case DIALOG_POLICE_PENALTY:
{
if(response)
{
if(gettime() > PLAYER_TEMP[playerid][pt_POLICE_PEN_TIME] + 20) return SendClientMessage(playerid, -1, "{999999}Has tardado mucho en aceptarlo.");
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_POLICE_PEN_PID])) return SendClientMessage(playerid, -1, "{999999}El policía ya no está en el servidor.");
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_POLICE_PEN_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_POLICE_PEN_AID]) return SendClientMessage(playerid, -1, "{999999}El policía ya no está en el servidor.");
new Float:pos[3]; GetPlayerPos(PLAYER_TEMP[playerid][pt_POLICE_PEN_PID], pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 5.0, pos[0], pos[1], pos[2])) return SendClientMessage(playerid, 0x999999AA, "El policía no está cerca tuya.");
if(PLAYER_TEMP[playerid][pt_POLICE_PEN_IM] > CHARACTER_INFO[playerid][ch_CASH])
{
SendClientMessage(playerid, -1, "{999999}No tienes dinero para pagar la multa.");
SendClientMessage(PLAYER_TEMP[playerid][pt_POLICE_PEN_PID], -1, "{999999}La persona ha aceptado la multa pero no tiene dinero para pagarla.");
return 1;
}
GivePlayerCash(playerid, -PLAYER_TEMP[playerid][pt_POLICE_PEN_IM]);
GivePlayerCash(PLAYER_TEMP[playerid][pt_POLICE_PEN_PID], PLAYER_TEMP[playerid][pt_POLICE_PEN_IM]/2);
SendClientMessage(playerid, -1, "{CCCCCC}La multa ha sido pagada.");
SendClientMessage(PLAYER_TEMP[playerid][pt_POLICE_PEN_PID], -1, "{CCCCCC}La persona ha pagado la multa, la mitad del importe es para ti.");
}
else
{
if(gettime() > PLAYER_TEMP[playerid][pt_POLICE_PEN_TIME] + 20) return 1;
if(!IsPlayerConnected(PLAYER_TEMP[playerid][pt_POLICE_PEN_PID])) return 1;
if(ACCOUNT_INFO[ PLAYER_TEMP[playerid][pt_POLICE_PEN_PID] ][ac_ID] != PLAYER_TEMP[playerid][pt_POLICE_PEN_AID]) return 1;
SendClientMessage(PLAYER_TEMP[playerid][pt_POLICE_PEN_PID], -1, "{999999}La persona se ha negado a pagar la multa.");
}
return 1;
}
case DIALOG_SERVER_ECO:
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] < 5) return 1;
if(response)
{
PLAYER_TEMP[playerid][pt_DIALOG_ECO_SELECTED] = listitem;
ShowDialog(playerid, DIALOG_SERVER_ECO_MODIFY);
}
return 1;
}
case DIALOG_SERVER_ECO_MODIFY:
{
if(ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL] < 5) return 1;
if(response)
{
new Float:multiplier;
if(sscanf(inputtext, "f", multiplier))
{
SendClientMessage(playerid, -1, "Sintaxis no válida.");
ShowDialog(playerid, dialogid);
return 1;
}
switch(PLAYER_TEMP[playerid][pt_DIALOG_ECO_SELECTED])
{
case 0: MULTIPLIER_PROPERITES = multiplier;
case 1: MULTIPLIER_VEHICLES = multiplier;
case 2: MULTIPLIER_TOYS = multiplier;
case 3: MULTIPLIER_SKINS = multiplier;
case 4: MULTIPLIER_WEAPONS = multiplier;
case 5: SU_SD_PRICE = floatround(multiplier);
}
WriteEconomyMultipliers();
UpdateEconomy(PLAYER_TEMP[playerid][pt_DIALOG_ECO_SELECTED]);
ShowDialog(playerid, DIALOG_SERVER_ECO);
}
else ShowDialog(playerid, DIALOG_SERVER_ECO);
return 1;
}
case DIALOG_SU_BUY:
{
if(response)
{
if(SU_SD_PRICE > ACCOUNT_INFO[playerid][ac_SD])
{
SendClientMessageEx(playerid, -1, "{999999}Te faltan %d "SERVER_COIN" para poder comprar VIP.", SU_SD_PRICE - ACCOUNT_INFO[playerid][ac_SD]);
return 1;
}
SetPlayerVip(playerid, 1, SU_SD_PRICE, 30);
}
return 1;
}
case DIALOG_SU:
{
if(!response)
{
if(SU_SD_PRICE > ACCOUNT_INFO[playerid][ac_SD])
{
SendClientMessageEx(playerid, -1, "{999999}Te faltan %d "SERVER_COIN" para poder comprar VIP.", SU_SD_PRICE - ACCOUNT_INFO[playerid][ac_SD]);
return 1;
}
ACCOUNT_INFO[playerid][ac_SD] -= SU_SD_PRICE;
ACCOUNT_INFO[playerid][ac_SU] = 1;
new DB_Query[300];
format(DB_Query, sizeof DB_Query, "UPDATE `CUENTA` SET `SD` = '%d', `SU` = '%d', `SU_EXPIRE_DATE` = FROM_UNIXTIME(UNIX_TIMESTAMP() + 2592000), `SU_EXPIRE_DATE_INT` = UNIX_TIMESTAMP() + 2592000 WHERE `ID` = '%d';", ACCOUNT_INFO[playerid][ac_SD], ACCOUNT_INFO[playerid][ac_SU], ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
format(DB_Query, sizeof DB_Query, "SELECT `SU_EXPIRE_DATE` FROM `CUENTA` WHERE `ID` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadSuExpireDate", "i", playerid);
return 1;
}
return 1;
}
case DIALOG_VOBJECT_MENU:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_VOBJECT_OBJECTS);
case 1: //Comprar
{
new slot = GetVehicleFreeObjectSlot(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID]);
if(!ACCOUNT_INFO[playerid][ac_SU] && slot >= MAX_NU_VOBJECTS)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}¡Los jugadores {b1fc6f}VIP {CCCCCC}pueden tener hasta %d objetos en vehículos! Usa {fffb49}/ayuda {CCCCCC}si quieres ser {b1fc6f}VIP.", MAX_SU_VOBJECTS);
ShowDialog(playerid, dialogid);
return 1;
}
if(slot == -1)
{
SendClientMessage(playerid, -1, "{999999}No hay más espacio para objetos en este vehículo.");
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_TUNING_GARAGE_SHOP] = true;
new Float:p[6];
GetPlayerCameraPos(playerid, p[0], p[1], p[2]);
GetPlayerCameraLookAt(playerid, p[3], p[4], p[5]);
InterpolateCameraPos(playerid, p[0], p[1], p[2], 265.3348, 14.0199, 3.6937, 2000);
InterpolateCameraLookAt(playerid, p[3], p[4], p[5], 268.2404, 11.4559, 2.2, 2000);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_SHOP_TUNING][0]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_SHOP_TUNING][1]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_SHOP_TUNING][2]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_SHOP_TUNING][3]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_SHOP_TUNING][4]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TUNING_SHOP]);
//PLAYER_TEMP[playerid][pt_SELECT_TUNING_OBJECT] = 0;
UpdateTuningShop(playerid);
SendClientMessage(playerid, -1, "Pulsa {C4FF66}'ESCAPE' {FFFFFF}para dejar de comprar objetos.");
SelectTextDrawEx(playerid, 0xe8d08fFF);
}
case 2:
{
new slot = GetVehicleFreeObjectSlot(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID]);
if(!ACCOUNT_INFO[playerid][ac_SU] && slot >= MAX_NU_VOBJECTS)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}¡Los jugadores {b1fc6f}VIP {CCCCCC}pueden tener hasta %d objetos en vehículos! Usa {fffb49}/ayuda {CCCCCC}si quieres ser {b1fc6f}VIP.", MAX_SU_VOBJECTS);
ShowDialog(playerid, dialogid);
return 1;
}
if(slot == -1)
{
SendClientMessage(playerid, -1, "{999999}No hay más espacio para objetos en este vehículo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(500 > CHARACTER_INFO[playerid][ch_CASH])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este objeto.", number_format_thousand(500 - CHARACTER_INFO[playerid][ch_CASH]));
ShowDialog(playerid, dialogid);
return 1;
}
GivePlayerCash(playerid, -500);
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_VALID] = true;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_TYPE] = VOBJECT_TYPE_TEXT;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_ID] = 0;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_MODELID] = 19327;
format(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_NAME], 32, "Texto");
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_ATTACHED] = true;
format(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_text_TEXT], 32, "Mi texto");
format(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_text_FONT], 24, "Arial");
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_text_FONT_SIZE] = 24;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_text_BOLD] = false;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_text_FONT_COLOR] = 0xFF000000;
RegisterNewVehicleObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], slot);
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], slot, true);
SendClientMessage(playerid, -1, "{CCCCCC}El objeto de texto ha sido añadido.");
PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] = slot;
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
}
case 3:
{
new slot = GetVehicleFreeObjectSlot(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID]);
if(!ACCOUNT_INFO[playerid][ac_SU] && slot >= MAX_NU_VOBJECTS)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}¡Los jugadores {b1fc6f}VIP {CCCCCC}pueden tener hasta %d objetos en vehículos! Usa {fffb49}/ayuda {CCCCCC}si quieres ser {b1fc6f}VIP.", MAX_SU_VOBJECTS);
ShowDialog(playerid, dialogid);
return 1;
}
if(slot == -1)
{
SendClientMessage(playerid, -1, "{999999}No hay más espacio para objetos en este vehículo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(2000 > CHARACTER_INFO[playerid][ch_CASH])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este objeto.", number_format_thousand(2000 - CHARACTER_INFO[playerid][ch_CASH]));
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_COUNTRY_TYPE] = 0;
ShowDialog(playerid, DIALOG_VOBJECT_COUNTRY);
}
case 4:
{
new slot = GetVehicleFreeObjectSlot(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID]);
if(!ACCOUNT_INFO[playerid][ac_SU] && slot >= MAX_NU_VOBJECTS)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}¡Los jugadores {b1fc6f}VIP {CCCCCC}pueden tener hasta %d objetos en vehículos! Usa {fffb49}/ayuda {CCCCCC}si quieres ser {b1fc6f}VIP.", MAX_SU_VOBJECTS);
ShowDialog(playerid, dialogid);
return 1;
}
if(slot == -1)
{
SendClientMessage(playerid, -1, "{999999}No hay más espacio para objetos en este vehículo.");
ShowDialog(playerid, dialogid);
return 1;
}
if(2000 > CHARACTER_INFO[playerid][ch_CASH])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este objeto.", number_format_thousand(2000 - CHARACTER_INFO[playerid][ch_CASH]));
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_COUNTRY_TYPE] = 1;
ShowDialog(playerid, DIALOG_VOBJECT_COUNTRY);
}
}
}
else
{
PLAYER_TEMP[playerid][pt_IN_TUNING_GARAGE] = false;
SetVehicleVirtualWorldEx(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], 0);
SetPlayerVirtualWorld(playerid, 0);
SetVehiclePosEx(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], 246.551910, 17.474195, 2.363841);
SetVehicleZAngle(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], 0.0);
GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][gb_vehicle_PARAMS_ENGINE] = 1;
UpdateVehicleParams(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID]);
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) PutPlayerInVehicleEx(playerid, PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], 0);
ShowPlayerSpeedoMeter(playerid);
SetCameraBehindPlayer(playerid);
}
return 1;
}
case DIALOG_VOBJECT_COUNTRY:
{
if(response)
{
new slot = GetVehicleFreeObjectSlot(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID]);
if(!ACCOUNT_INFO[playerid][ac_SU] && slot >= MAX_NU_VOBJECTS)
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}¡Los jugadores {b1fc6f}VIP {CCCCCC}pueden tener hasta %d objetos en vehículos! Usa {fffb49}/ayuda {CCCCCC}si quieres ser {b1fc6f}VIP.", MAX_SU_VOBJECTS);
ShowDialog(playerid, DIALOG_VOBJECT_MENU);
return 1;
}
if(slot == -1)
{
SendClientMessage(playerid, -1, "{999999}No hay más espacio para objetos en este vehículo.");
ShowDialog(playerid, DIALOG_VOBJECT_MENU);
return 1;
}
if(2000 > CHARACTER_INFO[playerid][ch_CASH])
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "{CCCCCC}No tienes dinero suficiente, te faltan {FF6633}%s$ {CCCCCC}para poder comprar este objeto.", number_format_thousand(2000 - CHARACTER_INFO[playerid][ch_CASH]));
ShowDialog(playerid, DIALOG_VOBJECT_MENU);
return 1;
}
GivePlayerCash(playerid, -2000);
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_VALID] = true;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_ID] = 0;
if(PLAYER_TEMP[playerid][pt_COUNTRY_TYPE] == 0)
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_TYPE] = VOBJECT_TYPE_COUNTRY_FLAG;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_MODELID] = 19307;
}
else if(PLAYER_TEMP[playerid][pt_COUNTRY_TYPE] == 1)
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_TYPE] = VOBJECT_TYPE_COUNTRY_PANEL;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_MODELID] = 2661;
}
format(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_NAME], 32, "Pais");
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_ATTACHED] = true;
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][slot][vobject_COLORS][0] = listitem;
RegisterNewVehicleObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], slot);
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], slot, true);
SendClientMessage(playerid, -1, "{CCCCCC}El objeto ha sido añadido.");
PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] = slot;
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
}
else ShowDialog(playerid, DIALOG_VOBJECT_MENU);
return 1;
}
case DIALOG_VOBJECT_OBJECTS:
{
if(response)
{
if(listitem == MAX_SU_VOBJECTS) return ShowDialog(playerid, DIALOG_VOBJECT_DELETE_ALL);
if(!VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][listitem][vobject_VALID])
{
SendClientMessage(playerid, -1, "{999999}Este slot está vacío, aquí puedes comprar un nuevo objeto.");
ShowDialog(playerid, dialogid);
return 1;
}
PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] = listitem;
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
}
else ShowDialog(playerid, DIALOG_VOBJECT_MENU);
return 1;
}
case DIALOG_VOBJECT_OBJECT:
{
if(response)
{
switch(listitem)
{
case 0:
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED])
{
SendClientMessage(playerid, -1, "{CCCCCC}Objeto guardado.");
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED] = false;
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT]);
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
}
else
{
SendClientMessage(playerid, -1, "{CCCCCC}Objeto colocado.");
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED] = true;
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
}
}
case 1: ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_CNAME);
case 2:
{
if(!VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED])
{
SendClientMessage(playerid, -1, "{999999}Debes colocar el objeto primero.");
ShowDialog(playerid, dialogid);
return 1;
}
EditVehicleObject(playerid, PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT]);
}
case 3:
{
switch(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_TYPE])
{
case VOBJECT_TYPE_OBJECT:
{
if(!VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED])
{
SendClientMessage(playerid, -1, "{999999}Debes colocar el objeto primero.");
ShowDialog(playerid, dialogid);
return 1;
}
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLORS);
}
case VOBJECT_TYPE_TEXT:
{
if(!VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ATTACHED])
{
SendClientMessage(playerid, -1, "{999999}Debes colocar el objeto primero.");
ShowDialog(playerid, dialogid);
return 1;
}
ShowDialog(playerid, DIALOG_VOBJECT_TEXT_MENU);
}
case VOBJECT_TYPE_COUNTRY_FLAG, VOBJECT_TYPE_COUNTRY_PANEL: ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_CDELETE);
}
}
case 4: ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_CDELETE);
}
}
else
{
UpdateVehicleObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT]);
ShowDialog(playerid, DIALOG_VOBJECT_OBJECTS);
}
return 1;
}
case DIALOG_VOBJECT_OBJECT_CNAME:
{
if(response)
{
if(!strlen(inputtext) || strlen(inputtext) > 32)
{
SendClientMessage(playerid, -1, "{CCCCCC}El nombre del objeto debe contener de 1 a 32 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
format(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_NAME], 32, "%s", inputtext);
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
}
else ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
return 1;
}
case DIALOG_VOBJECT_OBJECT_COLORS:
{
if(response)
{
PLAYER_TEMP[playerid][pt_TUNING_EDIT_COLOR_SLOT] = listitem;
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLOR);
}
else ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
return 1;
}
case DIALOG_VOBJECT_OBJECT_COLOR:
{
if(response)
{
switch(listitem)
{
case 0:
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_COLORS][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_COLOR_SLOT] ] = 0;
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "{CCCCCC}Color actualizado.");
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLORS);
}
case 1:
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_COLORS][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_COLOR_SLOT] ] = RGBAToARGB(VEHICLE_COLORS[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][gb_vehicle_COLOR_1] ]);
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "{CCCCCC}Color actualizado.");
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLORS);
}
case 2:
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_COLORS][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_COLOR_SLOT] ] = RGBAToARGB(VEHICLE_COLORS[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][gb_vehicle_COLOR_2] ]);
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "{CCCCCC}Color actualizado.");
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLORS);
}
case 3: ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLOR_HEX);
}
}
else ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLORS);
return 1;
}
case DIALOG_VOBJECT_OBJECT_COLOR_HEX:
{
if(response)
{
if(strlen(inputtext) < 8) return ShowDialog(playerid, dialogid);
new hexcolor;
if(sscanf(inputtext, "h", hexcolor))
{
ShowDialog(playerid, dialogid);
return 1;
}
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_COLORS][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_COLOR_SLOT] ] = hexcolor;
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "{CCCCCC}Color actualizado.");
ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLORS);
}
else ShowDialog(playerid, DIALOG_VOBJECT_OBJECT_COLOR);
return 1;
}
case DIALOG_VOBJECT_OBJECT_CDELETE:
{
if(response)
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_OBJECT_ID] != INVALID_STREAMER_ID)
{
DestroyDynamicObject(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_OBJECT_ID]);
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_OBJECT_ID] = INVALID_STREAMER_ID;
}
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "DELETE FROM `VEHICLE_OBJECTS` WHERE `ID` = '%d';", VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_VEHICLE_OBJECTS[e_VEHICLE_OBJECTS];
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ] = temp_VEHICLE_OBJECTS;
SendClientMessage(playerid, -1, "{CCCCCC}Objeto eliminado.");
ShowDialog(playerid, DIALOG_VOBJECT_OBJECTS);
}
else ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
return 1;
}
case DIALOG_VOBJECT_DELETE_ALL:
{
if(response)
{
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "DELETE FROM `VEHICLE_OBJECTS` WHERE `ID_VEHICLE` = '%d';", PLAYER_VEHICLES[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][player_vehicle_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new temp_VEHICLE_OBJECTS[e_VEHICLE_OBJECTS];
for(new i = 0; i != MAX_SU_VOBJECTS; i ++)
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i][vobject_OBJECT_ID] != INVALID_STREAMER_ID)
{
DestroyDynamicObject(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i][vobject_OBJECT_ID]);
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i][vobject_OBJECT_ID] = INVALID_STREAMER_ID;
}
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][i] = temp_VEHICLE_OBJECTS;
}
SendClientMessage(playerid, -1, "{CCCCCC}Todos los objetos de este vehículo han sido eliminados.");
ShowDialog(playerid, DIALOG_VOBJECT_OBJECTS);
}
else ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
return 1;
}
case DIALOG_VOBJECT_TEXT_MENU:
{
if(response)
{
switch(listitem)
{
case 0: ShowDialog(playerid, DIALOG_VOBJECT_TEXT_TEXT);
case 1: ShowDialog(playerid, DIALOG_VOBJECT_TEXT_FONT);
case 2: ShowDialog(playerid, DIALOG_VOBJECT_TEXT_FONT_SIZE);
case 3:
{
if(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_BOLD])
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_BOLD] = false;
SendClientMessage(playerid, -1, "Negrita deshabilitada.");
}
else
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_BOLD] = true;
SendClientMessage(playerid, -1, "Negrita habilitada.");
}
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
ShowDialog(playerid, dialogid);
}
case 4: ShowDialog(playerid, DIALOG_VOBJECT_TEXT_FONT_COLOR);
}
}
else ShowDialog(playerid, DIALOG_VOBJECT_OBJECT);
return 1;
}
case DIALOG_VOBJECT_TEXT_TEXT:
{
if(response)
{
if(strlen(inputtext) >= 32)
{
SendClientMessage(playerid, -1, "{999999}Como máximo puedes introducir un texto de 32 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
if(sscanf(inputtext, "s[32]", inputtext))
{
SendClientMessage(playerid, -1, "{999999}Introduce un texto.");
ShowDialog(playerid, dialogid);
return 1;
}
format(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_TEXT], 32, "%s", inputtext);
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "Texto actualizado.");
}
ShowDialog(playerid, DIALOG_VOBJECT_TEXT_MENU);
return 1;
}
case DIALOG_VOBJECT_TEXT_FONT:
{
if(response)
{
if(strlen(inputtext) >= 24)
{
SendClientMessage(playerid, -1, "{999999}Como máximo puedes introducir una fuente de 24 caracteres.");
ShowDialog(playerid, dialogid);
return 1;
}
if(sscanf(inputtext, "s[24]", inputtext))
{
SendClientMessage(playerid, -1, "{999999}Introduce un texto.");
ShowDialog(playerid, dialogid);
return 1;
}
format(VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_FONT], 24, "%s", inputtext);
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "Fuente actualizada.");
}
ShowDialog(playerid, DIALOG_VOBJECT_TEXT_MENU);
return 1;
}
case DIALOG_VOBJECT_TEXT_FONT_SIZE:
{
if(response)
{
if(sscanf(inputtext, "d", inputtext[0]))
{
SendClientMessage(playerid, -1, "{999999}Introduce un valor numérico.");
ShowDialog(playerid, dialogid);
return 1;
}
if(inputtext[0] <= 0 || inputtext[0] >= 255)
{
SendClientMessage(playerid, -1, "{999999}Introduce un valor entre 1 y 255.");
ShowDialog(playerid, dialogid);
return 1;
}
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_FONT_SIZE] = inputtext[0];
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "Tamaño de letra actualizado.");
}
ShowDialog(playerid, DIALOG_VOBJECT_TEXT_MENU);
return 1;
}
case DIALOG_VOBJECT_TEXT_FONT_COLOR:
{
if(response)
{
VEHICLE_OBJECTS[ PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID] ][ PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT] ][vobject_text_FONT_COLOR] = RGBAToARGB(RandomColors[listitem]);
UpdateVehicleAttachedObject(PLAYER_TEMP[playerid][pt_TUNING_GARAGE_VEHICLEID], PLAYER_TEMP[playerid][pt_TUNING_EDIT_SLOT], true);
SendClientMessage(playerid, -1, "Color de letra actualizado.");
}
ShowDialog(playerid, DIALOG_VOBJECT_TEXT_MENU);
return 1;
}
case DIALOG_PLAYER_CONFIG:
{
if(response)
{
switch(listitem)
{
case 0:
{
if(PLAYER_MISC[playerid][MISC_CONFIG_AUDIO])
{
PLAYER_MISC[playerid][MISC_CONFIG_AUDIO] = false;
StopAudioStreamForPlayer(playerid);
}
else PLAYER_MISC[playerid][MISC_CONFIG_AUDIO] = true;
}
case 1:
{
if(PLAYER_MISC[playerid][MISC_CONFIG_HUD])
{
PLAYER_MISC[playerid][MISC_CONFIG_HUD] = false;
TextDrawHideForPlayer(playerid, Textdraws[textdraw_HUD][0]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_HUD][1]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_HUD][2]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_HUD][3]);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_HUD][4]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][0]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][1]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][2]);
PlayerTextDrawHide(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][3]);
}
else
{
PLAYER_MISC[playerid][MISC_CONFIG_HUD] = true;
TextDrawShowForPlayer(playerid, Textdraws[textdraw_HUD][0]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_HUD][1]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_HUD][2]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_HUD][3]);
TextDrawShowForPlayer(playerid, Textdraws[textdraw_HUD][4]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][0]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][1]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][2]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_HUD][3]);
}
}
case 2:
{
if(PLAYER_MISC[playerid][MISC_CONFIG_ADMIN]) PLAYER_MISC[playerid][MISC_CONFIG_ADMIN] = false;
else PLAYER_MISC[playerid][MISC_CONFIG_ADMIN] = true;
}
case 3:
{
if(PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER]) PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER] = false;
else PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER] = true;
}
case 4:
{
if(PLAYER_MISC[playerid][MISC_CONFIG_SOUNDS]) PLAYER_MISC[playerid][MISC_CONFIG_SOUNDS] = false;
else PLAYER_MISC[playerid][MISC_CONFIG_SOUNDS] = true;
}
case 5:
{
if(PLAYER_MISC[playerid][MISC_CONFIG_TIME])
{
PLAYER_MISC[playerid][MISC_CONFIG_TIME] = false;
TextDrawHideForPlayer(playerid, Textdraws[textdraw_SERVER_TIME]);
}
else
{
PLAYER_MISC[playerid][MISC_CONFIG_TIME] = true;
TextDrawShowForPlayer(playerid, Textdraws[textdraw_SERVER_TIME]);
}
}
case 6:
{
if(ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL]) ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL] = false;
else ACCOUNT_INFO[playerid][ac_DOUBT_CHANNEL] = true;
}
}
ShowDialog(playerid, dialogid);
}
return 1;
}
case DIALOG_POLICE_BYC:
{
if(response)
{
switch(listitem)
{
case 0:
{
PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] = 10;
PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
ShowDialog(playerid, DIALOG_POLICE_BYC_LAST_ALL);
}
case 1: ShowDialog(playerid, DIALOG_POLICE_BYC_NAME_FIND);
}
}
return 1;
}
case DIALOG_POLICE_BYC_NAME_FIND:
{
if(response)
{
new name[24];
if(sscanf(inputtext, "s[24]", name)) return ShowDialog(playerid, dialogid);
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "SELECT `ID` FROM `CUENTA` WHERE `NAME` = '%q';", name);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadPoliceBycByName", "i", playerid);
}
return 1;
}
case DIALOG_POLICE_BYC_LAST_ALL:
{
if(response)
{
static const the_query[] = "SELECT COUNT(*) FROM `POLICE_HISTORY`;";
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -2) // Siguiente
{
mysql_tquery(SMF_DATABASE, the_query, "LoadPoliceBycNextPage", "i", playerid);
return 1;
}
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -3) //Anterior
{
mysql_tquery(SMF_DATABASE, the_query, "LoadPoliceBycPrevPage", "i", playerid);
return 1;
}
else
{
PLAYER_TEMP[playerid][pt_SELECTED_BYC_ID] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_POLICE_DELETE_BYC);
}
}
return 1;
}
case DIALOG_POLICE_BYC_LAST_PLAYER:
{
if(response)
{
if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -1) return 1;
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -2) // Siguiente
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `POLICE_HISTORY` WHERE `ID_USER` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_BYC_USER_ID]);
mysql_tquery(SMF_DATABASE, the_query, "LoadPoliceHistoryNextPage", "i", playerid);
return 1;
}
else if(PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] == -3) //Anterior
{
new the_query[128];
format(the_query, sizeof the_query, "SELECT COUNT(*) FROM `POLICE_HISTORY` WHERE `ID_USER` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_BYC_USER_ID]);
mysql_tquery(SMF_DATABASE, the_query, "LoadPoliceHistoryPrevPage", "i", playerid);
return 1;
}
else
{
PLAYER_TEMP[playerid][pt_SELECTED_BYC_ID] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
ShowDialog(playerid, DIALOG_POLICE_DELETE_BYC);
}
}
return 1;
}
case DIALOG_POLICE_DELETE_BYC:
{
if(response)
{
new DB_Query[128];
format(DB_Query, sizeof DB_Query, "DELETE FROM `POLICE_HISTORY` WHERE `ID` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_BYC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessage(playerid, -1, "Registro borrado del historial policial.");
}
return 1;
}
}
return 0;
}
/*
Funciones MySQL de los Dialogs
*/
forward BankTransactionsLoaded(playerid);
public BankTransactionsLoaded(playerid)
{
new dialog[2675], count, transactions;
cache_get_row_count(count);
if(count == 0) strcat(dialog, "{CCCCCC}No hay transacciones en tu cuenta.");
else
{
format(dialog, sizeof dialog, "{CCCCCC}Fecha\t{90C3D4}Concepto\t{CCCCCC}Importe\n");
new line_str[125];
for(new i; i < count; i++ )
{
new transaction_type, ammount, extra, date[24];
cache_get_value_name_int(i, "TRANSACTION_TYPE", transaction_type);
cache_get_value_name_int(i, "AMMOUNT",ammount);
cache_get_value_name_int(i, "EXTRA",extra);
cache_get_value_name(i, "DATE", date, 24);
switch(transaction_type)
{
case BANK_TRANSACTION_WITHDRAW:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}RETIRADA EFECTIVO\t{CCCCCC}-%s$\n", date, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_DEPOSIT:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}INGRESO EN EFECTIVO\t{CCCCCC}%s$\n", date, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_TRANSFER_SENT:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}TRANSFERENCIA A LA CUENTA %d\t{CCCCCC}-%s$\n", date, extra, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_TRANSFER_RECE:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}TRANSFERENCIA DE LA CUENTA %d\t{CCCCCC}%s$\n", date, extra, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_CREATE_ACCOUNT:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}CREACION DE LA CUENTA\t{CCCCCC}%s$\n", date, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_BUY_PROPERTY:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}PROPIEDAD COMPRADA\t{CCCCCC}-%s$\n", date, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_SOLD_PROPERTY:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}PROPIEDAD VENDIDA\t{CCCCCC}%s$\n", date, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_BUY_VEHICLE:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}VEHICULO COMPRADO\t{CCCCCC}-%s$\n", date, number_format_thousand(ammount));
strcat(dialog, line_str);
}
case BANK_TRANSACTION_SOLD_VEHICLE:
{
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}VEHICULO VENDIDO\t{CCCCCC}%s$\n", date, number_format_thousand(ammount));
strcat(dialog, line_str);
}
}
transactions ++;
}
format(line_str, sizeof line_str, "{CCCCCC}SALDO ACTUAL:\t{d0f441}%s$", number_format_thousand(BANK_ACCOUNT[playerid][bank_account_BALANCE]));
strcat(dialog, line_str);
}
new caption[40];
format(caption, sizeof caption, "Banco - Últimas %d transacciones", transactions);
ShowPlayerDialog(playerid, DIALOG_BANK_TRANSACTIONS, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, "Salir", "Atrás");
}
forward PhoneMessagesLoaded(playerid);
public PhoneMessagesLoaded(playerid)
{
new dialog[1600], messages, count;
format(dialog, sizeof dialog, "{CCCCCC}Fecha\t{90C3D4}Enviado a\t{CCCCCC}Mensaje\n");
cache_get_row_count(count);
if(count == 0) strcat(dialog, "{CCCCCC}No hay mensajes.");
else
{
new line_str[150];
for(new i; i < count; i++ )
{
new date[24], to, message[64];
cache_get_value_name_int(i, "TO", to);
cache_get_value_name(i, "MESSAGE", message, 64);
cache_get_value_name(i, "DATE", date, 24);
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}%s\t{CCCCCC}%s\n", date, convertPhoneNumber(playerid, to), message);
strcat(dialog, line_str);
messages ++;
}
}
new caption[40];
format(caption, sizeof caption, "Últimos %d mensajes enviados", messages);
ShowPlayerDialog(playerid, DIALOG_PHONE_SENT_MESSAGES, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, "Salir", "Atrás");
return 1;
}
forward PhoneLoadRecievedMessages(playerid);
public PhoneLoadRecievedMessages(playerid)
{
new dialog[1600], messages, count;
format(dialog, sizeof dialog, "{CCCCCC}Fecha\t{90C3D4}Remitente\t{CCCCCC}Mensaje\n");
cache_get_row_count(count);
if(count == 0) strcat(dialog, "{CCCCCC}No hay mensajes.");
else
{
new line_str[150];
for(new i; i < count; i++ )
{
new date[24], from, message[64];
cache_get_value_name_int(i, "FROM", from);
cache_get_value_name(i, "MESSAGE", message, 64);
cache_get_value_name(i, "DATE", date, 24);
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}%s\t{CCCCCC}%s\n", date, convertPhoneNumber(playerid, from), message);
strcat(dialog, line_str);
messages ++;
}
}
new caption[40];
format(caption, sizeof caption, "Últimos %d mensajes recibidos", messages);
ShowPlayerDialog(playerid, DIALOG_PHONE_RECEIVED_MESSAGES, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, "Salir", "Atrás");
return 1;
}
forward GPSLoadProperties(playerid);
public GPSLoadProperties(playerid)
{
new dialog[90 * (MAX_SU_PROPERTIES + 2)], count;
format(dialog, sizeof dialog, "Propiedad\tDistancia\n");
cache_get_row_count(count);
if(count == 0) strcat(dialog, "{CCCCCC}No tienes propiedades");
else
{
new line_str[90], properties;
for(new i; i < count; i++ )
{
if(properties >= MAX_SU_PROPERTIES) break;
new property_name[24], Float:pos[3];
cache_get_value_name_int(i, "ID_PROPERTY", PLAYER_TEMP[playerid][pt_PLAYER_GPS_SELECTED_PROPERTY][properties]);
cache_get_value_name(i, "PROPERTY_NAME", property_name, 24);
cache_get_value_name_float(i, "EXT_X", pos[0]);
cache_get_value_name_float(i, "EXT_Y", pos[1]);
cache_get_value_name_float(i, "EXT_Z", pos[2]);
format(line_str, sizeof line_str, "{FFFFFF}%d. %s\t{CCCCCC}%.2f Km\n", properties + 1, property_name, (GetPlayerDistanceFromPoint(playerid, pos[0], pos[1], pos[2]) * 0.01));
strcat(dialog, line_str);
properties ++;
}
}
ShowPlayerDialog(playerid, DIALOG_PLAYER_GPS_PROPERTIES, DIALOG_STYLE_TABLIST_HEADERS, "GPS - Mis propiedades", dialog, ">>", "Atrás");
return 1;
}
forward NotaryLoadProperties(playerid);
public NotaryLoadProperties(playerid)
{
new dialog[45 * (MAX_SU_PROPERTIES + 2)], count;
format(dialog, sizeof dialog, "{CCCCCC}Propiedad\n");
cache_get_row_count(count);
if(count == 0) strcat(dialog, "{CCCCCC}No tienes propiedades");
else
{
new line_str[45], properties;
for(new i; i < count; i++ )
{
if(properties >= MAX_SU_PROPERTIES) break;
new property_name[24];
cache_get_value_name_int(i, "ID_PROPERTY", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][properties]);
cache_get_value_name(i, "PROPERTY_NAME", property_name, 24);
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\n", properties + 1, property_name);
strcat(dialog, line_str);
properties ++;
}
}
ShowPlayerDialog(playerid, DIALOG_NOTARY_SELECT_PROPERTY, DIALOG_STYLE_TABLIST_HEADERS, "Selecciona la propiedad que quieres vender", dialog, ">>", "Atrás");
return 1;
}
forward LoadTuningMenuParts(playerid);
public LoadTuningMenuParts(playerid)
{
new vehicleid = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
new caption[45], dialog[80 * TOTAL_TUNING_PARTS], count;
format(caption, sizeof caption, "Tuning - %s", VEHICLE_INFO[ GLOBAL_VEHICLES[vehicleid][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
cache_get_row_count(count);
format(dialog, sizeof dialog, "{CCCCCC}Categoría\t{90C3D4}Piezas necesarias\t{CCCCCC}Estimación\n");
if(count == 0) strcat(dialog, "{666666}Este vehículo no se puede tunear");
else
{
new line_str[80];
for(new i; i < count; i++ )
{
if(i >= TOTAL_TUNING_PARTS)
{
printf("---> Límite superado en array 'PLAYER_TUNING_MENU, dialog Parts' al intentar cargar de la base de datos.");
break;
}
cache_get_value_name(i, "PART", PLAYER_TUNING_MENU[playerid][i][tuning_menu_NAME], 24);
cache_get_value_name_int(i, "PIECES", PLAYER_TUNING_MENU[playerid][i][tuning_menu_PIECES]);
format(line_str, sizeof line_str, "{CCCCCC}%s\t{90C3D4}%d\t{CCCCCC}%s$\n", PLAYER_TUNING_MENU[playerid][i][tuning_menu_NAME], PLAYER_TUNING_MENU[playerid][i][tuning_menu_PIECES], number_format_thousand(PLAYER_TUNING_MENU[playerid][i][tuning_menu_PIECES] * 50));
strcat(dialog, line_str);
}
}
ShowPlayerDialog(playerid, DIALOG_TUNING_MENU_PART, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, ">>", "Atrás");
return 1;
}
forward LoadTuningMenuPartsNames(playerid);
public LoadTuningMenuPartsNames(playerid)
{
new vehicleid = PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID];
new caption[45], dialog[40 * MAX_TUNING_PARTS_COMPONENTS], count;
format(caption, sizeof caption, "%s > %s", VEHICLE_INFO[ GLOBAL_VEHICLES[vehicleid][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME], PLAYER_TEMP[playerid][pt_TUNING_SELECTED_PART]);
cache_get_row_count(count);
if(count == 0) strcat(dialog, "{666666}No hay nada aquí");
else
{
new line_str[40];
for(new i; i < count; i++ )
{
if(i >= MAX_TUNING_PARTS_COMPONENTS)
{
printf("---> Límite superado en array 'PLAYER_TUNING_MENU, dialog Partsnames' al intentar cargar de la base de datos.");
break;
}
cache_get_value_name_int(i, "ID", PLAYER_TUNING_MENU[playerid][i][tuning_menu_ID]);
cache_get_value_name(i, "NAME", PLAYER_TUNING_MENU[playerid][i][tuning_menu_NAME], 24);
format(line_str, sizeof line_str, "{CCCCCC}%s\n", PLAYER_TUNING_MENU[playerid][i][tuning_menu_NAME]);
strcat(dialog, line_str);
}
}
ShowPlayerDialog(playerid, DIALOG_TUNING_MENU_COMPONENT, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
forward LoadMechanicRemoveComponents(playerid);
public LoadMechanicRemoveComponents(playerid)
{
new count, caption[60], dialog[80 * (MAX_VEHICLE_COMPONENTS + 2) ], listitem;
format(caption, sizeof caption, "Componentes de %s", VEHICLE_INFO[ GLOBAL_VEHICLES[ PLAYER_TEMP[playerid][pt_SELECTED_MECHANIC_VEHICLE_ID] ][gb_vehicle_MODELID] - 400 ][vehicle_info_NAME]);
format(dialog, sizeof dialog, "{CCCCCC}Componente\t{90C3D4}Piezas\n");
cache_get_row_count(count);
for(new i; i < count; i++)
{
new part[24], name[24];
cache_get_value_name(i, "PART", part, 24);
cache_get_value_name(i, "NAME", name, 24);
PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_ID] = i;
cache_get_value_name_int(i, "PIECES", PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_PIECES]);
new line_str[80];
format(line_str, sizeof line_str, "{CCCCCC}%s > %s\t{90C3D4}+ %d\n", part, name, PLAYER_TUNING_MENU[playerid][listitem][tuning_menu_PIECES]);
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, DIALOG_MECHANIC_REMOVE_COMPONEN, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, "Eliminar", "Atrás");
return 1;
}
forward LoadPoliceList(playerid);
public LoadPoliceList(playerid)
{
new dialog[128 * 15], count, listitem, start_pos = PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] + 1;
format(dialog, sizeof dialog, "{CCCCCC}Nombre\t{CCCCCC}Rango\t{CCCCCC}Últ. conexión\n");
cache_get_row_count(count);
for(new i; i < count; i++ )
{
new name[24], last_connection[24], connected, rank;
cache_get_value_name_int(i, "ID", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem]);
cache_get_value_name(i, "NAME", name, 24);
cache_get_value_name(i, "LAST_CONNECTION", last_connection, 24);
cache_get_value_name_int(i, "CONNECTED", connected);
cache_get_value_name_int(i, "TOTAL", rank);
new line_str[128];
if(connected) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{98f442}Conectado\n", start_pos + listitem, name, POLICE_RANKS[rank]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{CCCCCC}%s\n", start_pos + listitem, name, POLICE_RANKS[rank], last_connection);
strcat(dialog, line_str);
listitem ++;
}
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -2;
strcat(dialog, "{c9c9c9}- Siguiente\n"); listitem ++;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -3;
strcat(dialog, "{c9c9c9}- Anterior\n"); listitem ++;
ShowPlayerDialog(playerid, DIALOG_POLICE_LIST, DIALOG_STYLE_TABLIST_HEADERS, "Policías", dialog, ">>", "-");
return 1;
}
forward LoadPoliceRank(playerid);
public LoadPoliceRank(playerid)
{
new count, name[24], current_rank, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name_int(0, "TOTAL", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank > PLAYER_SKILLS[playerid][WORK_POLICE])
{
SendClientMessage(playerid, -1, "{999999}No puedes modificar el rango de este policía porque es un rango superior al tuyo.");
return 1;
}
new caption[45];
format(caption, sizeof caption, "Policía - %s", name);
new dialog[45 * sizeof(POLICE_RANKS)], line_str[45];
format(dialog, sizeof dialog, "{CCCCCC}Civil (eliminar)\n");
for(new i = 1; i != sizeof POLICE_RANKS; i ++)
{
if(i > PLAYER_SKILLS[playerid][WORK_POLICE])
{
if(current_rank == i) format(line_str, sizeof line_str, "{666666}%s (actual)\n", POLICE_RANKS[i]);
else format(line_str, sizeof line_str, "{666666}%s\n", POLICE_RANKS[i]);
}
else
{
if(current_rank == i) format(line_str, sizeof line_str, "{CCCCCC}%s (actual)\n", POLICE_RANKS[i]);
else format(line_str, sizeof line_str, "{CCCCCC}%s\n", POLICE_RANKS[i]);
}
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, DIALOG_POLICE_MODIFY, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
forward LoadAdminList(playerid);
public LoadAdminList(playerid)
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[128 * 15], count, listitem, start_pos = PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] + 1;
format(dialog, sizeof dialog, "{CCCCCC}Nombre\t{CCCCCC}Rango\t{CCCCCC}Últ. conexión\n");
cache_get_row_count(count);
for(new i; i < count; i++ )
{
new name[24], last_connection[24], connected, rank;
cache_get_value_name_int(i, "ID", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem]);
cache_get_value_name(i, "NAME", name, 24);
cache_get_value_name(i, "LAST_CONNECTION", last_connection, 24);
cache_get_value_name_int(i, "CONNECTED", connected);
cache_get_value_name_int(i, "ADMIN_LEVEL", rank);
new line_str[128];
if(connected) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{98f442}Conectado\n", start_pos + listitem, name, ADMIN_LEVELS[rank]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{CCCCCC}%s\n", start_pos + listitem, name, ADMIN_LEVELS[rank], last_connection);
strcat(dialog, line_str);
listitem ++;
}
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -2;
strcat(dialog, "{c9c9c9}- Siguiente\n"); listitem ++;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -3;
strcat(dialog, "{c9c9c9}- Anterior\n"); listitem ++;
ShowPlayerDialog(playerid, DIALOG_ADMIN_LIST, DIALOG_STYLE_TABLIST_HEADERS, "Administradores", dialog, ">>", "-");
return 1;
}
forward LoadAdminRank(playerid);
public LoadAdminRank(playerid)
{
new name[24], current_rank, count, bool:found;
if(count)
{
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name_int(0, "ADMIN_LEVEL", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank > ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL])
{
SendClientMessage(playerid, -1, "No puedes modificar el rango de este admin porque es un rango superior al tuyo.");
return 1;
}
new caption[45];
format(caption, sizeof caption, "Admin - %s", name);
new dialog[45 * sizeof(ADMIN_LEVELS)], line_str[45];
format(dialog, sizeof dialog, "{CCCCCC}Normal (eliminar)\n");
for(new i = 1; i != sizeof ADMIN_LEVELS; i ++)
{
if(i > ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL])
{
if(current_rank == i) format(line_str, sizeof line_str, "{666666}%s (actual)\n", ADMIN_LEVELS[i]);
else format(line_str, sizeof line_str, "{666666}%s\n", ADMIN_LEVELS[i]);
}
else
{
if(current_rank == i) format(line_str, sizeof line_str, "{CCCCCC}%s (actual)\n", ADMIN_LEVELS[i]);
else format(line_str, sizeof line_str, "{CCCCCC}%s\n", ADMIN_LEVELS[i]);
}
strcat(dialog, line_str);
}
ShowPlayerDialog(playerid, DIALOG_ADMIN_MODIFY, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
forward LoadCrewList(playerid);
public LoadCrewList(playerid)
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new caption[64];
format(caption, sizeof caption, "Miembros de la banda '%s'", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME]);
new dialog[128 * 15], listitem, count, start_pos = PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] + 1;
format(dialog, sizeof dialog, "{CCCCCC}Nombre\t{CCCCCC}Rango\t{CCCCCC}Últ. conexión\n");
cache_get_row_count(count);
for(new i; i < count; i++ )
{
new name[24], last_connection[24], connected, rank;
cache_get_value_name(i, "NAME", name, 24);
cache_get_value_name(i, "LAST_CONNECTION", last_connection, 24);
cache_get_value_name_int(i, "CONNECTED", connected);
cache_get_value_name_int(i, "RANK", rank);
new line_str[128];
if(connected) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{98f442}Conectado\n", start_pos + listitem, name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ rank ][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{CCCCCC}%s\n", start_pos + listitem, name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ rank ][crew_rank_NAME], last_connection);
strcat(dialog, line_str);
listitem ++;
}
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -2;
strcat(dialog, "{c9c9c9}- Siguiente\n"); listitem ++;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -3;
strcat(dialog, "{c9c9c9}- Anterior\n"); listitem ++;
ShowPlayerDialog(playerid, DIALOG_CREW_MEMBER_LIST, DIALOG_STYLE_TABLIST_HEADERS, caption, dialog, ">>", "Atrás");
return 1;
}
forward LoadCrewListDelete(playerid);
public LoadCrewListDelete(playerid)
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[128 * 15], listitem, count, start_pos = PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] + 1;
format(dialog, sizeof dialog, "{CCCCCC}Nombre\t{CCCCCC}Rango\t{CCCCCC}Últ. conexión\n");
cache_get_row_count(count);
for(new i; i < count; i++ )
{
new name[24], last_connection[24], connected, rank;
cache_get_value_name_int(i, "ID", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i]);
cache_get_value_name(i, "NAME", name, 24);
cache_get_value_name(i, "LAST_CONNECTION", last_connection, 24);
cache_get_value_name_int(i, "CONNECTED", connected);
cache_get_value_name_int(i, "RANK", rank);
new line_str[128];
if(connected) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{98f442}Conectado\n", start_pos + listitem, name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ rank ][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{CCCCCC}%s\n", start_pos + listitem, name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ rank ][crew_rank_NAME], last_connection);
strcat(dialog, line_str);
listitem ++;
}
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -2;
strcat(dialog, "{c9c9c9}- Siguiente\n"); listitem ++;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -3;
strcat(dialog, "{c9c9c9}- Anterior\n"); listitem ++;
ShowPlayerDialog(playerid, DIALOG_CREW_MEMBER_LIST_DELETE, DIALOG_STYLE_TABLIST_HEADERS, "Echar a un miembro", dialog, ">>", "Atrás");
return 1;
}
forward LoadCrewRankDelete(playerid);
public LoadCrewRankDelete(playerid)
{
new dialog[400], count, affected_members;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, affected_members);
format(dialog, sizeof dialog,
"\
Rango que se eliminará:\n\
\t'%s'\n\
\n\
Miembros afectados: %d\n\
El nuevo rango de estos miembros será:\n\
\t'%s'\n\
\n\
¿Seguro que quieres eliminar el rango? Esta opción no se puede deshacer.\n\
\n\
",
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_RANK] ][crew_rank_NAME],
affected_members,
CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_CREW_SELECTED_NEW_RANK] ][crew_rank_NAME]
);
ShowPlayerDialog(playerid, DIALOG_CREW_RANK_DELETE_CONFIRM, DIALOG_STYLE_MSGBOX, "Eliminar rango", dialog, "Eliminar", "Cancelar");
return 1;
}
forward LoadCrewMemberCount(playerid);
public LoadCrewMemberCount(playerid)
{
new DB_Query[190], count, affected_members;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, affected_members);
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `CREW_TERRITORIES` WHERE `ID_CREW` = '%d';", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewTerritoryCount", "ii", playerid, affected_members);
return 1;
}
forward LoadCrewTerritoryCount(playerid, affected_members);
public LoadCrewTerritoryCount(playerid, affected_members)
{
new count, crew_territories;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, crew_territories);
new dialog[450];
format(dialog, sizeof dialog,
"\
Banda: %s\n\
Miembros: %d\n\
Territorios: %d\n\
\n\
¿De verdad quieres borrar la banda?\n\
\n\
",
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_NAME],
affected_members,
crew_territories
);
ShowPlayerDialog(playerid, DIALOG_CREW_DELETE, DIALOG_STYLE_MSGBOX, "Eliminar banda", dialog, "Eliminar", "Cancelar");
return 1;
}
forward LoadCrewModifyMembers(playerid);
public LoadCrewModifyMembers(playerid)
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[128 * 15], listitem, count, start_pos = PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] + 1;
format(dialog, sizeof dialog, "{CCCCCC}Nombre\t{CCCCCC}Rango\t{CCCCCC}Últ. conexión\n");
cache_get_row_count(count);
for(new i; i < count; i++ )
{
new name[24], last_connection[24], connected, rank;
cache_get_value_name_int(i, "ID", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i]);
cache_get_value_name(i, "NAME", name, 24);
cache_get_value_name(i, "LAST_CONNECTION", last_connection, 24);
cache_get_value_name_int(i, "CONNECTED", connected);
cache_get_value_name_int(i, "RANK", rank);
new line_str[128];
if(connected) format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{98f442}Conectado\n", start_pos + listitem, name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ rank ][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{CCCCCC}%s\n", start_pos + listitem, name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ rank ][crew_rank_NAME], last_connection);
strcat(dialog, line_str);
listitem ++;
}
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -2;
strcat(dialog, "{c9c9c9}- Siguiente\n"); listitem ++;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -3;
strcat(dialog, "{c9c9c9}- Anterior\n"); listitem ++;
ShowPlayerDialog(playerid, DIALOG_CREW_MODIFY_MEMBERS, DIALOG_STYLE_TABLIST_HEADERS, "Modificar rango de un miembro", dialog, ">>", "Atrás");
return 1;
}
forward LoadCrewModifyMember(playerid);
public LoadCrewModifyMember(playerid)
{
new count, name[24], current_rank, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name_int(0, "RANK", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank < PLAYER_CREW[playerid][player_crew_RANK]) return SendClientMessage(playerid, -1, "{999999}No puedes modificar el rango de este miembro porque es un rango superior al tuyo.");
if(current_rank == 0)
{
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d' AND `RANK` = '0';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewMemberRankCount", "isi", playerid, name, current_rank);
return 1;
}
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new caption[45];
format(caption, sizeof caption, "Miembro - %s", name);
new dialog[45 * CREW_RANK_SIZE], line_str[45], listitem;
for(new i = 0; i != CREW_RANK_SIZE; i ++)
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_VALID]) continue;
if(i < PLAYER_CREW[playerid][player_crew_RANK])
{
if(current_rank == i) format(line_str, sizeof line_str, "{666666}%s (actual)\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{666666}%s\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
}
else
{
if(current_rank == i) format(line_str, sizeof line_str, "{CCCCCC}%s (actual)\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%s\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
}
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
ShowPlayerDialog(playerid, DIALOG_CREW_MODIFY_MEMBER, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
forward LoadCrewMemberRankCount(playerid, name[24], current_rank);
public LoadCrewMemberRankCount(playerid, name[24], current_rank)
{
new count, total;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, total);
if(total <= 1)
{
SendClientMessage(playerid, -1, "{999999}No se puede modificar el rango de este miembro ya que es el único miembro con el rango fundador.");
return 1;
}
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new caption[45];
format(caption, sizeof caption, "Miembro - %s", name);
new dialog[45 * CREW_RANK_SIZE], line_str[45], listitem;
for(new i = 0; i != CREW_RANK_SIZE; i ++)
{
if(!CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_VALID]) continue;
if(i < PLAYER_CREW[playerid][player_crew_RANK])
{
if(current_rank == i) format(line_str, sizeof line_str, "{666666}%s (actual)\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{666666}%s\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
}
else
{
if(current_rank == i) format(line_str, sizeof line_str, "{CCCCCC}%s (actual)\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
else format(line_str, sizeof line_str, "{CCCCCC}%s\n", CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][i][crew_rank_NAME]);
}
strcat(dialog, line_str);
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = i;
listitem ++;
}
ShowPlayerDialog(playerid, DIALOG_CREW_MODIFY_MEMBER, DIALOG_STYLE_LIST, caption, dialog, ">>", "Atrás");
return 1;
}
forward LoadPoliceBycLastAll(playerid);
public LoadPoliceBycLastAll(playerid)
{
new name[24], by[24], reason[128], date[24], count;
cache_get_row_count(count);
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[256 * 15], listitem, start_pos = PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] + 1;
format(dialog, sizeof dialog, "{CCCCCC}Sospechoso\t{CCCCCC}Añadido por\t{CCCCCC}Fecha\t{CCCCCC}Razón\n");
for(new i; i < count; i++ )
{
cache_get_value_name_int(i, "ID", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem]);
cache_get_value_name(i, "NAME", name, 24);
cache_get_value_name(i, "BY2", by, 24);
cache_get_value_name(i, "TEXT", reason, 128);
cache_get_value_name(i, "DATE", date, 24);
new line_str[256];
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{CCCCCC}%s\t{CCCCCC}%s\n", start_pos + listitem, name, by, date, reason);
strcat(dialog, line_str);
listitem ++;
}
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -2;
strcat(dialog, "{c9c9c9}- Siguiente\n"); listitem ++;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -3;
strcat(dialog, "{c9c9c9}- Anterior\n"); listitem ++;
ShowPlayerDialog(playerid, DIALOG_POLICE_BYC_LAST_ALL, DIALOG_STYLE_TABLIST_HEADERS, "BYC", dialog, ">>", "-");
return 1;
}
forward LoadPoliceBycLastPlayer(playerid);
public LoadPoliceBycLastPlayer(playerid)
{
for(new i = 0; i != MAX_LISTITEMS; i++ ) PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][i] = -1;
new dialog[256 * 15], name[24], by[24], reason[128], date[24], listitem, count, start_pos = PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] * PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] + 1;
format(dialog, sizeof dialog, "{CCCCCC}Sospechoso\t{CCCCCC}Añadido por\t{CCCCCC}Fecha\t{CCCCCC}Razón\n");
cache_get_row_count(count);
for(new i; i < count; i++ )
{
cache_get_value_name_int(i, "ID", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem]);
cache_get_value_name(i, "NAME", name, 24);
cache_get_value_name(i, "BY2", by, 24);
cache_get_value_name(i, "TEXT", reason, 128);
cache_get_value_name(i, "DATE", date, 24);
new line_str[256];
format(line_str, sizeof line_str, "{CCCCCC}%d. %s\t{CCCCCC}%s\t{CCCCCC}%s\t{CCCCCC}%s\n", start_pos + listitem, name, by, date, reason);
strcat(dialog, line_str);
listitem ++;
}
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -2;
strcat(dialog, "{c9c9c9}- Siguiente\n"); listitem ++;
PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] = -3;
strcat(dialog, "{c9c9c9}- Anterior\n"); listitem ++;
ShowPlayerDialog(playerid, DIALOG_POLICE_BYC_LAST_PLAYER, DIALOG_STYLE_TABLIST_HEADERS, "BYC", dialog, ">>", "-");
}
/*
Funciones Dialog
Responses
*/
forward CheckMail(playerid, inputtext[]);
public CheckMail(playerid, inputtext[])
{
new count;
cache_get_row_count(count);
if(count)
{
SendClientMessage(playerid, 0x999999AA, "Este correco electrónico ya está en uso, use otro distinto.");
ShowDialog(playerid, DIALOG_REGISTER_EMAIL);
return 1;
}
format(ACCOUNT_INFO[playerid][ac_EMAIL], 32, "%s", inputtext);
ApplyActorAnimation(PLAYER_TEMP[playerid][pt_REGISTER_ACTOR], "INT_SHOP", "shop_loop", 4.1, 1, 1, 1, 0, 0);
PLAYER_TEMP[playerid][pt_READING_GUIDE] = true;
PLAYER_TEMP[playerid][pt_GUIDE_STEP] = 0;
SendClientMessage(playerid, 0xCCCCCCCC, "Lee detenidamente la guía, para pasar de concepto haz 'click' en siguiente.");
SetPlayerRulesTextDraw(playerid, Server_Rules[ PLAYER_TEMP[playerid][pt_GUIDE_STEP] ][Rule_Title], Server_Rules[ PLAYER_TEMP[playerid][pt_GUIDE_STEP] ][Rule_Info], Server_Rules[ PLAYER_TEMP[playerid][pt_GUIDE_STEP] ][Rule_Pages], PLAYER_TEMP[playerid][pt_GUIDE_STEP] + 1, sizeof(Server_Rules) );
SelectTextDrawEx(playerid, 0xe8d08fFF);
return 1;
}
forward LoadBankValidAccount(playerid);
public LoadBankValidAccount(playerid)
{
new count, bank_account;
cache_get_row_count(count);
cache_get_value_name_int(0, "ID_ACCOUNT", bank_account);
if(count)
{
PLAYER_TEMP[playerid][pt_SELECT_BANK_TRANSFER_ACCOUNT] = bank_account;
ShowDialog(playerid, DIALOG_BANK_TRANSFER_SEND);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{999999}El número de cuenta introducido no existe o no es correcto.");
PLAYER_TEMP[playerid][pt_PLAYER_IN_ATM] = false;
}
return 1;
}
forward BankRegisterPhoneMessage(message[]);
public BankRegisterPhoneMessage(message[])
{
new count;
cache_get_row_count(count);
if(count)
{
new phone_number;
cache_get_value_index_int(0, 0, phone_number);
RegisterPhoneMessage(6740, phone_number, message, true);
}
return 1;
}
forward LoadBankAccountID(playerid);
public LoadBankAccountID(playerid)
{
new count;
cache_get_row_count(count);
if(count) cache_get_value_name_int(0, "ID_ACCOUNT", BANK_ACCOUNT[playerid][bank_account_ID]);
RegisterBankAccountTransaction(BANK_ACCOUNT[playerid][bank_account_ID], BANK_TRANSACTION_CREATE_ACCOUNT, 500);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
SendClientMessageEx(playerid, -1, "Tu cuenta bancaria ha sido creada con éxito tu número de cuenta es {6a98e2}%s.", number_format_thousand(BANK_ACCOUNT[playerid][bank_account_ID]));
}
forward LoadFreePhoneNumber(playerid, listitem);
public LoadFreePhoneNumber(playerid, listitem)
{
new count, phone_number;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, phone_number);
if(phone_number)
{
PLAYER_PHONE[playerid][player_phone_VALID] = true;
PLAYER_PHONE[playerid][player_phone_NUMBER] = phone_number;
PLAYER_PHONE[playerid][player_phone_STATE] = PHONE_STATE_ON;
PLAYER_PHONE[playerid][player_phone_VISIBLE_NUMBER] = true;
RegisterNewPlayerPhone(playerid);
GivePlayerCash(playerid, -Supermarket_Product_List[listitem][product_PRICE]);
SendClientMessageEx(playerid, -1, "Has comprado un {86e03e}%s {FFFFFF}por {86e03e}%d$, {FFFFFF}tu número es {c5e03e}%d.", Supermarket_Product_List[listitem][product_NAME], Supermarket_Product_List[listitem][product_PRICE], PLAYER_PHONE[playerid][player_phone_NUMBER]);
PlayerPlaySoundEx(playerid, 1058, 0.0, 0.0, 0.0);
}
else
{
PlayerPlaySoundEx(playerid, 1085, 0.0, 0.0, 0.0);
SendClientMessage(playerid, -1, "{999999}No se ha podido encontrar un número de teléfono libre.");
}
return 1;
}
forward LoadPhoneNumber(playerid);
public LoadPhoneNumber(playerid)
{
new count;
cache_get_row_count(count);
if(!count)
{
ShowDialog(playerid, DIALOG_PHONE_SMS_NUMBER);
SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
return 1;
}
cache_get_value_name_int(0, "PHONE_NUMBER", count);
PLAYER_TEMP[playerid][pt_PLAYER_PHONE_NUMBER_SELECTED] = count;
ShowDialog(playerid, DIALOG_PHONE_SMS_MESSAGE);
return 1;
}
forward LoadPhoneNumberSendMessage(playerid, inputtext[]);
public LoadPhoneNumberSendMessage(playerid, inputtext[])
{
new count;
cache_get_row_count(count);
if(!count) return SendClientMessage(playerid, -1, "{999999}El número destino no es válido.");
new to_playerid = INVALID_PLAYER_ID;
for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++)
{
if(IsPlayerConnected(i))
{
if((PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_NORMAL || PLAYER_TEMP[i][pt_GAME_STATE] == GAME_STATE_DEAD) && PLAYER_PHONE[i][player_phone_NUMBER] == PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER])
{
to_playerid = i;
break;
}
}
}
if(to_playerid == INVALID_PLAYER_ID) RegisterPhoneMessage(PLAYER_PHONE[playerid][player_phone_NUMBER], PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER], inputtext, true);
else
{
RegisterPhoneMessage(PLAYER_PHONE[playerid][player_phone_NUMBER], PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_PHONE_NUMBER], inputtext);
if(PLAYER_PHONE[to_playerid][player_phone_STATE] == PHONE_STATE_ON) SendClientMessageEx(to_playerid, -1, "{e5f442}[Nuevo mensaje recibido] {b7dd80}Remitente: {FFFFFF}%s {b7dd80}Mensaje: {FFFFFF}%s", convertPhoneNumber(to_playerid, PLAYER_PHONE[playerid][player_phone_NUMBER]), inputtext);
}
SendClientMessageEx(playerid, -1, "Mensaje enviado a {7b9cd1}%s.", PLAYER_PHONE_BOOK[playerid][ PLAYER_TEMP[playerid][pt_PLAYER_PHONE_BOOK_SELECTED] ][phone_book_contact_NAME]);
return 1;
}
forward LoadPlayerPropertyCount(playerid, to_player);
public LoadPlayerPropertyCount(playerid, to_player)
{
new count, player_properties;
cache_get_row_count(count);
if(count) cache_get_value_name_int(0, "PROPERTIES", player_properties);
if(player_properties >= MAX_SU_PROPERTIES) return SendClientMessage(playerid, -1, "{999999}El comprador no puede adquirir más propiedades.");
if(!ACCOUNT_INFO[to_player][ac_SU])
{
if(player_properties >= MAX_NU_PROPERTIES) return SendClientMessage(playerid, -1, "{999999}El comprador no puede adquirir más propiedades.");
}
if(ACCOUNT_INFO[to_player][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Error, el comprador necesita ser al menos nivel 2.");
if(PLAYER_TEMP[playerid][pt_NOTARY_PRICE] > BANK_ACCOUNT[to_player][bank_account_BALANCE]) return SendClientMessage(playerid, -1, "{999999}Error, el comprador no tiene el dinero que pides.");
SendClientMessage(playerid, -1, "{CCCCCC}Tu oferta se ha enviado al comprador, espera para ver si la acepta.");
new action[64]; format(action, sizeof action, "quiere llegar a un acuerdo con %s.", PLAYER_TEMP[to_player][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
PLAYER_TEMP[to_player][pt_PLAYER_PROPERTY_SELECTED] = PLAYER_TEMP[playerid][pt_PLAYER_PROPERTY_SELECTED];
PLAYER_TEMP[to_player][pt_NOTARY_PRICE] = PLAYER_TEMP[playerid][pt_NOTARY_PRICE];
PLAYER_TEMP[to_player][pt_NOTARY_TO_PLAYER] = playerid;
PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] = to_player;
ShowDialog(to_player, DIALOG_SELL_CONFIRM_PROPERTY);
return 1;
}
forward LoadPlayerVehicleCount(playerid, to_player);
public LoadPlayerVehicleCount(playerid, to_player)
{
new count, player_vehicles;
cache_get_row_count(count);
if(count) cache_get_value_name_int(0, "VEHICLES", player_vehicles);
if(player_vehicles >= MAX_SU_VEHICLES) return SendClientMessage(playerid, -1, "{999999}El comprador no puede adquirir más vehículos.");
if(!ACCOUNT_INFO[to_player][ac_SU])
{
if(player_vehicles >= MAX_NU_VEHICLES) return SendClientMessage(playerid, -1, "{999999}El comprador no puede adquirir más vehículos.");
}
if(ACCOUNT_INFO[to_player][ac_LEVEL] < 2) return SendClientMessage(playerid, -1, "{999999}Error, el comprador necesita ser al menos nivel 2.");
if(PLAYER_TEMP[playerid][pt_NOTARY_PRICE] > BANK_ACCOUNT[to_player][bank_account_BALANCE]) return SendClientMessage(playerid, -1, "{999999}Error, el comprador no tiene el dinero que pides.");
SendClientMessage(playerid, -1, "{CCCCCC}Tu oferta se ha enviado al comprador, espera para ver si la acepta.");
new action[64]; format(action, sizeof action, "quiere llegar a un acuerdo con %s.", PLAYER_TEMP[to_player][pt_RP_NAME]);
Auto_SendPlayerAction(playerid, action);
PLAYER_TEMP[to_player][pt_PLAYER_VEHICLE_SELECTED] = PLAYER_TEMP[playerid][pt_PLAYER_VEHICLE_SELECTED];
PLAYER_TEMP[to_player][pt_NOTARY_PRICE] = PLAYER_TEMP[playerid][pt_NOTARY_PRICE];
PLAYER_TEMP[to_player][pt_NOTARY_TO_PLAYER] = playerid;
PLAYER_TEMP[playerid][pt_NOTARY_TO_PLAYER] = to_player;
ShowDialog(to_player, DIALOG_SELL_CONFIRM_VEHICLE);
return 1;
}
forward LoadPoliceMemberRank(playerid, listitem);
public LoadPoliceMemberRank(playerid, listitem)
{
new count, name[24], connected, player_id, current_rank, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name_int(0, "CONNECTED", connected);
cache_get_value_name_int(0, "PLAYERID", player_id);
cache_get_value_name_int(0, "TOTAL", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank > PLAYER_SKILLS[playerid][WORK_POLICE])
{
SendClientMessage(playerid, -1, "{999999}No puedes modificar el rango de este policía porque es un rango superior al tuyo.");
return 1;
}
new DB_Query[256];
format(DB_Query, sizeof DB_Query, "UPDATE `PLAYER_SKILLS` SET `TOTAL` = '%d' WHERE `ID_USER` = '%d' AND `ID_WORK` = '%d';", listitem, PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID], WORK_POLICE);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessageEx(playerid, -1, "{CCCCCC}El nuevo rango de %s es: '%s'.", name, POLICE_RANKS[listitem]);
if(listitem == 0)
{
format(DB_Query, sizeof DB_Query, "UPDATE `PLAYER_WORKS` SET `SET` = '0' WHERE `ID_USER` = '%d' AND `ID_WORK` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID], WORK_POLICE);
mysql_tquery(SMF_DATABASE, DB_Query);
}
if(connected)
{
PLAYER_SKILLS[player_id][WORK_POLICE] = listitem;
if(listitem == 0)
{
if(PLAYER_TEMP[player_id][pt_WORKING_IN] == WORK_POLICE) EndPlayerJob(player_id);
PLAYER_WORKS[player_id][WORK_POLICE] = false;
SendClientMessageEx(player_id, -1, "{999999}El %s %s te ha expulsado del cuerpo de policía.", POLICE_RANKS[ PLAYER_SKILLS[playerid][WORK_POLICE] ], PLAYER_TEMP[playerid][pt_RP_NAME]);
}
else SendClientMessageEx(player_id, -1, "{CCCCCC}El %s %s ha modificado tu rango del cuerpo de policía a '%s'.", POLICE_RANKS[ PLAYER_SKILLS[playerid][WORK_POLICE] ], PLAYER_TEMP[playerid][pt_RP_NAME], POLICE_RANKS[listitem]);
}
return 1;
}
forward LoadAdminRankModify(playerid, listitem);
public LoadAdminRankModify(playerid, listitem)
{
new count, name[24], connected, player_id, current_rank, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name_int(0, "CONNECTED", connected);
cache_get_value_name_int(0, "PLAYERID", player_id);
cache_get_value_name_int(0, "ADMIN_LEVEL", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank > ACCOUNT_INFO[playerid][ac_ADMIN_LEVEL])
{
SendClientMessage(playerid, -1, "No puedes modificar el rango de este admin porque es un rango superior al tuyo.");
return 1;
}
new DB_Query[100];
format(DB_Query, sizeof DB_Query, "UPDATE `CUENTA` SET `ADMIN_LEVEL` = '%d' WHERE `ID` = '%d';", listitem, PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SendClientMessageEx(playerid, -1, "El nuevo rango de %s es: '%s'.", name, ADMIN_LEVELS[listitem]);
if(connected)
{
ACCOUNT_INFO[player_id][ac_ADMIN_LEVEL] = listitem;
SendClientMessageEx(player_id, -1, "%s cambió tu rango administrativo a: %s.", ACCOUNT_INFO[playerid][ac_NAME], ADMIN_LEVELS[listitem]);
}
return 1;
}
forward LoadCrewFounderCount(playerid);
public LoadCrewFounderCount(playerid)
{
new count;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, count);
if(count <= 1)
{
SendClientMessage(playerid, -1, "{999999}No puedes abandonar la banda porque eres el único miembro con el rango fundador.");
return 1;
}
ShowDialog(playerid, DIALOG_CREW_LEAVE);
return 1;
}
forward CrewMemberListDeletePagesNext(playerid);
public CrewMemberListDeletePagesNext(playerid)
{
new count, pages;
cache_get_value_index_int(0, 0, count);
new Float:tpages = floatdiv(floatround(count), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] >= pages - 1) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] ++;
ShowDialog(playerid, DIALOG_CREW_MEMBER_LIST_DELETE);
return 1;
}
forward CrewMemberListDeletePagesPrev(playerid);
public CrewMemberListDeletePagesPrev(playerid)
{
new count, pages;
cache_get_value_index_int(0, 0, count);
new Float:tpages = floatdiv(floatround(count), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] <= 0) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = pages - 1;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] --;
ShowDialog(playerid, DIALOG_CREW_MEMBER_LIST_DELETE);
return 1;
}
forward LoadCrewMemberRankDelete(playerid);
public LoadCrewMemberRankDelete(playerid)
{
new count, current_rank, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_name_int(0, "RANK", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank < PLAYER_CREW[playerid][player_crew_RANK]) return SendClientMessage(playerid, -1, "{999999}No puedes echar a este miembro porque es un rango superior al tuyo.");
if(current_rank == 0)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d' AND `RANK` = '0';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewFounderCountDelete", "i", playerid);
return 1;
}
ShowDialog(playerid, DIALOG_CREW_CAST_MEMBER_CONFIRM);
return 1;
}
forward LoadCrewFounderCountDelete(playerid);
public LoadCrewFounderCountDelete(playerid)
{
new count;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, count);
if(count <= 1)
{
SendClientMessage(playerid, -1, "{999999}No se puede echar a este miembro ya que es el único miembro con el rango fundador.");
return 1;
}
ShowDialog(playerid, DIALOG_CREW_CAST_MEMBER_CONFIRM);
return 1;
}
forward LoadCrewMemberRankCast(playerid);
public LoadCrewMemberRankCast(playerid)
{
new count, name[24], current_rank, connected, player_id, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name_int(0, "CONNECTED", connected);
cache_get_value_name_int(0, "PLAYERID", player_id);
cache_get_value_name_int(0, "RANK", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank < PLAYER_CREW[playerid][player_crew_RANK]) return SendClientMessage(playerid, -1, "{999999}No puedes echar a este miembro porque es un rango superior al tuyo.");
if(current_rank == 0)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d' AND `RANK` = '0';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewFounderCountCast", "iiis", playerid, player_id, connected, name);
return 1;
}
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) ha echado a %s de la banda.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], name);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], -1, message);
new DB_Query[64];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_CREW` WHERE `ID_USER` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_MEMBERS] --;
if(connected)
{
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ONLINE_MEMBERS] --;
SetPlayerNormalColor(player_id);
if(PLAYER_TEMP[playerid][pt_LAST_TERRITORY] != INVALID_STREAMER_ID)
{
TextDrawHideForPlayer(player_id, Textdraws[textdraw_TERRITORY_BOX]);
TextDrawHideForPlayer(player_id, TERRITORIES[ PLAYER_TEMP[playerid][pt_LAST_TERRITORY] ][territory_TEXTDRAW]);
}
PLAYER_CREW[player_id][player_crew_VALID] = false;
PLAYER_CREW[player_id][player_crew_ID] = 0;
PLAYER_CREW[player_id][player_crew_RANK] = 0;
PLAYER_CREW[player_id][player_crew_INDEX] = 0;
HidePlayerGangZones(player_id);
}
return 1;
}
forward LoadCrewFounderCountCast(playerid, player_id, connected, name[]);
public LoadCrewFounderCountCast(playerid, player_id, connected, name[])
{
new count;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, count);
if(count <= 1)
{
SendClientMessage(playerid, -1, "{999999}No se puede echar a este miembro ya que es el único miembro con el rango fundador.");
return 1;
}
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) ha echado a %s de la banda.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], name);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], -1, message);
new DB_Query[64];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_CREW` WHERE `ID_USER` = '%d';", PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_MEMBERS] --;
if(connected)
{
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ONLINE_MEMBERS] --;
SetPlayerNormalColor(player_id);
if(PLAYER_TEMP[playerid][pt_LAST_TERRITORY] != INVALID_STREAMER_ID)
{
TextDrawHideForPlayer(player_id, Textdraws[textdraw_TERRITORY_BOX]);
TextDrawHideForPlayer(player_id, TERRITORIES[ PLAYER_TEMP[playerid][pt_LAST_TERRITORY] ][territory_TEXTDRAW]);
}
PLAYER_CREW[player_id][player_crew_VALID] = false;
PLAYER_CREW[player_id][player_crew_ID] = 0;
PLAYER_CREW[player_id][player_crew_RANK] = 0;
PLAYER_CREW[player_id][player_crew_INDEX] = 0;
HidePlayerGangZones(player_id);
}
return 1;
}
forward LoadCrewFounderCountLeave(playerid);
public LoadCrewFounderCountLeave(playerid)
{
new count;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, count);
if(count <= 1)
{
SendClientMessage(playerid, -1, "{999999}No puedes abandonar la banda porque eres el único miembro con el rango fundador.");
return 1;
}
new message[145];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) ha abandonado la banda.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME]);
SendMessageToCrewMembers(PLAYER_CREW[playerid][player_crew_ID], -1, message);
new DB_Query[64];
format(DB_Query, sizeof DB_Query, "DELETE FROM `PLAYER_CREW` WHERE `ID_USER` = '%d';", ACCOUNT_INFO[playerid][ac_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
SetPlayerNormalColor(playerid);
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_MEMBERS] --;
CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_ONLINE_MEMBERS] --;
HidePlayerGangZones(playerid);
new tmp_PLAYER_CREW[enum_PLAYER_CREW];
PLAYER_CREW[playerid] = tmp_PLAYER_CREW;
return 1;
}
forward LoadCrewMemberModify(playerid, listitem);
public LoadCrewMemberModify(playerid, listitem)
{
new count, name[24], current_rank, connected, player_id, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_name(0, "NAME", name, 24);
cache_get_value_name_int(0, "CONNECTED", connected);
cache_get_value_name_int(0, "PLAYERID", player_id);
cache_get_value_name_int(0, "RANK", current_rank);
found = true;
}
else found = false;
if(!found) return 1;
if(current_rank < PLAYER_CREW[playerid][player_crew_RANK]) return SendClientMessage(playerid, -1, "{999999}No puedes modificar el rango de este miembro porque es un rango superior al tuyo.");
if(current_rank == 0)
{
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "SELECT COUNT(*) FROM `PLAYER_CREW` WHERE `ID_CREW` = '%d' AND `RANK` = '0';", PLAYER_CREW[playerid][player_crew_ID]);
mysql_tquery(SMF_DATABASE, DB_Query, "LoadCrewFounderCountModify", "iiiis", playerid, listitem, connected, player_id, name);
return 1;
}
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "UPDATE `PLAYER_CREW` SET `RANK` = '%d' WHERE `ID_USER` = '%d';", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem], PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new message[145];
if(connected)
{
PLAYER_CREW[player_id][player_crew_RANK] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) cambió tu rango al rango '%s'.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][crew_rank_NAME]);
SendClientMessage(player_id, -1, message);
}
format(message, sizeof message, "Has modificado el rango de '%s' al rango '%s'.", name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][crew_rank_NAME]);
SendClientMessage(playerid, -1, message);
return 1;
}
forward LoadCrewFounderCountModify(playerid, listitem, connected, player_id, name[]);
public LoadCrewFounderCountModify(playerid, listitem, connected, player_id, name[])
{
new count;
cache_get_row_count(count);
if(count) cache_get_value_index_int(0, 0, count);
if(count <= 1)
{
SendClientMessage(playerid, -1, "{999999}No se puede modificar el rango de este miembro ya que es el único miembro con el rango fundador.");
return 1;
}
new DB_Query[90];
format(DB_Query, sizeof DB_Query, "UPDATE `PLAYER_CREW` SET `RANK` = '%d' WHERE `ID_USER` = '%d';", PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem], PLAYER_TEMP[playerid][pt_SELECTED_DB_AC_ID]);
mysql_tquery(SMF_DATABASE, DB_Query);
new message[145];
if(connected)
{
PLAYER_CREW[player_id][player_crew_RANK] = PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem];
format(message, sizeof message, "{%06x}[Banda] {FFFFFF}%s (%s) cambió tu rango al rango '%s'.", CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR] >>> 8, PLAYER_TEMP[playerid][pt_RP_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_CREW[playerid][player_crew_RANK] ][crew_rank_NAME], CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][crew_rank_NAME]);
SendClientMessage(player_id, -1, message);
}
format(message, sizeof message, "Has modificado el rango de '%s' al rango '%s'.", name, CREW_RANK_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][ PLAYER_TEMP[playerid][pt_PLAYER_LISTITEM][listitem] ][crew_rank_NAME]);
SendClientMessage(playerid, -1, message);
return 1;
}
forward LoadSuExpireDate(playerid);
public LoadSuExpireDate(playerid)
{
new count;
cache_get_row_count(count);
if(count) cache_get_value_index(0, 0, ACCOUNT_INFO[playerid][ac_SU_EXPIRE_DATE], 24);
SendClientMessageEx(playerid, -1, "{b6f442}¡Felicidades! {FFFFFF}Has renovado tu VIP%d por 30 días, fecha de caducidad: %s.", ACCOUNT_INFO[playerid][ac_SU], ACCOUNT_INFO[playerid][ac_SU_EXPIRE_DATE]);
SendClientMessage(playerid, -1, "Puedes utilizar {eaf259}/vip {FFFFFF}para ver el tiempo restante o renovar.");
return 1;
}
forward LoadPoliceBycByName(playerid);
public LoadPoliceBycByName(playerid)
{
new count, bool:found;
cache_get_row_count(count);
if(count)
{
cache_get_value_index_int(0, 0, PLAYER_TEMP[playerid][pt_SELECTED_BYC_USER_ID]);
found = true;
}
if(found)
{
PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT] = 10;
PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
ShowDialog(playerid, DIALOG_POLICE_BYC_LAST_PLAYER);
}
else SendClientMessage(playerid, -1, "No se ha encontrado a esa persona.");
return 1;
}
forward LoadPoliceHistoryNextPage(playerid);
public LoadPoliceHistoryNextPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] >= pages - 1) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] ++;
ShowDialog(playerid, DIALOG_POLICE_BYC_LAST_PLAYER);
return 1;
}
forward LoadPoliceHistoryPrevPage(playerid);
public LoadPoliceHistoryPrevPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] <= 0) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = pages - 1;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] --;
ShowDialog(playerid, DIALOG_POLICE_BYC_LAST_PLAYER);
return 1;
}
forward LoadPoliceListNextPage(playerid);
public LoadPoliceListNextPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] >= pages - 1) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] ++;
ShowDialog(playerid, DIALOG_POLICE_LIST);
return 1;
}
forward LoadPoliceListPrevPage(playerid);
public LoadPoliceListPrevPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] <= 0) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = pages - 1;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] --;
ShowDialog(playerid, DIALOG_POLICE_LIST);
return 1;
}
forward LoadAdminListNextPage(playerid);
public LoadAdminListNextPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] >= pages - 1) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] ++;
ShowDialog(playerid, DIALOG_ADMIN_LIST);
return 1;
}
forward LoadAdminListPrevPage(playerid);
public LoadAdminListPrevPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] <= 0) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = pages - 1;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] --;
ShowDialog(playerid, DIALOG_ADMIN_LIST);
return 1;
}
forward LoadCrewMemberListNextPage(playerid);
public LoadCrewMemberListNextPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] >= pages - 1) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] ++;
ShowDialog(playerid, DIALOG_CREW_MEMBER_LIST);
return 1;
}
forward LoadCrewMemberListPrevPage(playerid);
public LoadCrewMemberListPrevPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] <= 0) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = pages - 1;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] --;
ShowDialog(playerid, DIALOG_CREW_MEMBER_LIST);
return 1;
}
forward LoadCrewMembersModifyNextPage(playerid);
public LoadCrewMembersModifyNextPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] >= pages - 1) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] ++;
ShowDialog(playerid, DIALOG_CREW_MODIFY_MEMBERS);
return 1;
}
forward LoadCrewMembersModifyPrevPage(playerid);
public LoadCrewMembersModifyPrevPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] <= 0) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = pages - 1;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] --;
ShowDialog(playerid, DIALOG_CREW_MODIFY_MEMBERS);
return 1;
}
forward LoadPoliceBycNextPage(playerid);
public LoadPoliceBycNextPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] >= pages - 1) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = 0;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] ++;
ShowDialog(playerid, DIALOG_POLICE_BYC_LAST_ALL);
return 1;
}
forward LoadPoliceBycPrevPage(playerid);
public LoadPoliceBycPrevPage(playerid)
{
new pages;
cache_get_value_index_int(0, 0, pages);
new Float:tpages = floatdiv(floatround(pages), PLAYER_TEMP[playerid][pt_DIALOG_DB_LIMIT]);
pages = floatround(tpages, floatround_ceil);
if(PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] <= 0) PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] = pages - 1;
else PLAYER_TEMP[playerid][pt_DIALOG_DB_PAGE] --;
ShowDialog(playerid, DIALOG_POLICE_BYC_LAST_ALL);
return 1;
}
/*
Fin funciones Dialog
*/
AddNewAd(playerid, type, price, text[], modelid, vcol1 = 0, vcol2 = 0)
{
new Float:rots[4];
switch(type)
{
case SHOP_ARTICLE_TYPE_PROPERTY: rots = Float:{345.0, 0.0, 30.0, 1.20};
case SHOP_ARTICLE_TYPE_VEHICLE: rots = Float:{345.0, 0.0, 330.0, 1.0};
case SHOP_ARTICLE_TYPE_OTHER: rots = Float:{0.0, 0.0, 330.0, 1.20};
}
new DB_Query[450];
format(DB_Query, sizeof DB_Query,
"\
INSERT INTO `SHOP` (`ID_USER`, `TYPE`, `PRICE`, `TEXT`, `MODELID`, `RX`, `RY`, `RZ`, `ZOOM`, `VCOL1`, `VCOL2`, `DATE`) VALUES ('%d', '%d', '%d', '%q', '%d', '%f', '%f', '%f', '%f', '%d', '%d', CURRENT_TIMESTAMP);\
DELETE FROM `SHOP` WHERE `ID` NOT IN (SELECT `ID` FROM `SHOP` ORDER BY `DATE` DESC LIMIT 300);\
",
ACCOUNT_INFO[playerid][ac_ID], type, price, text, modelid, rots[0], rots[1], rots[2], rots[3], vcol1, vcol2
);
mysql_tquery(SMF_DATABASE, DB_Query);
return 1;
}
forward OnPlayerSongFound(index, response_code, data[]);
public OnPlayerSongFound(index, response_code, data[])
{
if(!PLAYER_TEMP[index][pt_PLAYER_WAITING_MP3_HTTP]) return 1;
if(response_code == 200)
{
if(data[0] == '|' && data[1] == '[')
{
new start_song_pos = -1, end_song_pos = -1, delimiter_pos_info = -1, counter, tmp[yt_result];
for(new i = 0; i != sizeof RESULT_YOUTUBE; i ++) RESULT_YOUTUBE[i] = tmp;
start_song_pos = strfind(data, "|[");
while(start_song_pos != -1)
{
start_song_pos = strfind(data, "|[");
if(start_song_pos == -1) break;
delimiter_pos_info = strfind(data, "||");
strmid(RESULT_YOUTUBE[counter][videoID], data, start_song_pos + 2, delimiter_pos_info, 11 + 1);
end_song_pos = strfind(data, "]|");
strmid(RESULT_YOUTUBE[counter][yt_title], data, delimiter_pos_info + 2, end_song_pos, 100 + 1);
strdel(data, 0, end_song_pos + 2);
counter ++;
}
if(counter == 0) return SendClientMessage(index, -1, "{999999}No se encontró ningún resultado para tu búsqueda.");
new dialog_title[50], dialog[120 * MAX_RESULTS], dialog_counter;
for(new i = 0; i != counter; i ++)
{
if(isnull(RESULT_YOUTUBE[i][yt_title])) continue;
format(PLAYER_DIALOG_MP3_RESULT[index][dialog_counter][videoID], 11 + 1, "%s", RESULT_YOUTUBE[i][videoID]);
format(PLAYER_DIALOG_MP3_RESULT[index][dialog_counter][yt_title], 100 + 1, "%s", RESULT_YOUTUBE[i][yt_title]);
format(dialog, sizeof dialog, "%s{CCCCCC}%d. %s\n", dialog, dialog_counter + 1, RESULT_YOUTUBE[i][yt_title]);
dialog_counter ++;
}
format(dialog_title, sizeof dialog_title, "{CCCCCC}Se han encontado '%d' resultados", dialog_counter);
ShowPlayerDialog(index, DIALOG_PLAYER_MP3_RESULTS, DIALOG_STYLE_LIST, dialog_title, dialog, "Reproducir", "Salir");
PLAYER_TEMP[index][pt_DIALOG_RESPONDED] = false;
}
else SendClientMessage(index, -1, "{999999}El resultado obtenido no puede ser comprendido.");
}
else SendClientMessage(index, -1, "{999999}La búsqueda falló, inténtelo de nuevo más tarde.");
PLAYER_TEMP[index][pt_PLAYER_WAITING_MP3_HTTP] = false;
return 1;
}
GetEmptyPlayer_GPS_Slot(playerid)
{
for(new i = 0; i != MAX_PLAYER_GPS_SAVES; i ++)
{
if(!PLAYER_GPS[playerid][i][player_gps_VALID]) return i;
}
return -1;
}
SetPlayer_GPS_Checkpoint(playerid, Float:x, Float:y, Float:z, world, interior)
{
if(IsValidDynamicCP(PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT] = INVALID_STREAMER_ID;
}
PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT] = CreateDynamicCP(x, y, z, 5.0, world, interior, playerid, 9999999999.0);
new info_arr[1];
info_arr[0] = CHECKPOINT_TYPE_GPS;
Streamer_SetArrayData(STREAMER_TYPE_CP, PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT], E_STREAMER_EXTRA_ID, info_arr);
if(GetPlayerState(playerid) == PLAYER_STATE_PASSENGER)
{
new vehicleid = GetPlayerVehicleID(playerid);
if(WORK_VEHICLES[vehicleid][work_vehicle_VALID])
{
if(WORK_VEHICLES[vehicleid][work_vehicle_WORK] == WORK_TAXI)
{
if(TAXI_METER_VEHICLE[vehicleid][veh_taxi_meter_ENABLED])
{
if(IsPlayerConnected(GLOBAL_VEHICLES[vehicleid][gb_vehicle_DRIVER]))
{
if(IsValidDynamicCP(PLAYER_TEMP[ GLOBAL_VEHICLES[vehicleid][gb_vehicle_DRIVER] ][pt_GPS_CHECKPOINT]))
{
DestroyDynamicCP(PLAYER_TEMP[ GLOBAL_VEHICLES[vehicleid][gb_vehicle_DRIVER] ][pt_GPS_CHECKPOINT]);
PLAYER_TEMP[ GLOBAL_VEHICLES[vehicleid][gb_vehicle_DRIVER] ][pt_GPS_CHECKPOINT] = INVALID_STREAMER_ID;
}
PLAYER_TEMP[ GLOBAL_VEHICLES[vehicleid][gb_vehicle_DRIVER] ][pt_GPS_CHECKPOINT] = CreateDynamicCP(x, y, z, 5.0, world, interior, GLOBAL_VEHICLES[vehicleid][gb_vehicle_DRIVER], 9999999999.0);
new taxi_info[1];
taxi_info[0] = CHECKPOINT_TYPE_GPS;
Streamer_SetArrayData(STREAMER_TYPE_CP, PLAYER_TEMP[ GLOBAL_VEHICLES[vehicleid][gb_vehicle_DRIVER] ][pt_GPS_CHECKPOINT], E_STREAMER_EXTRA_ID, taxi_info);
Auto_SendPlayerAction(playerid, "configura su GPS y se lo muestra al taxista.");
return 1;
}
}
}
}
}
Auto_SendPlayerAction(playerid, "configura su GPS.");
return 1;
}
public OnPlayerEnterDynamicArea(playerid, areaid)
{
new info_arr[2];
Streamer_GetArrayData(STREAMER_TYPE_AREA, areaid, E_STREAMER_EXTRA_ID, info_arr);
switch(info_arr[0])
{
case AREA_TYPE_NONE:
{
if(areaid == Mechanic_Area)
{
if(PLAYER_TEMP[playerid][pt_WANT_MECHANIC])
{
PLAYER_TEMP[playerid][pt_WANT_MECHANIC] = false;
DisablePlayerMechanicMark(playerid);
}
}
}
case AREA_TYPE_GANGZONE:
{
new index = info_arr[1];
if(TERRITORIES[index][territory_VALID])
{
PLAYER_TEMP[playerid][pt_LAST_TERRITORY] = index;
if(PLAYER_CREW[playerid][player_crew_VALID])
{
if(TERRITORIES[index][territory_WAR])
{
SendClientMessageEx(playerid, -1, "Este territorio está siendo atacado por la banda {%06x}'%s'.", CREW_INFO[ TERRITORIES[index][territory_ATTACKER_CREW_INDEX] ][crew_COLOR] >>> 8, CREW_INFO[ TERRITORIES[index][territory_ATTACKER_CREW_INDEX] ][crew_NAME]);
new r, g, b, a;
HexToRGBA(CREW_INFO[ PLAYER_CREW[playerid][player_crew_INDEX] ][crew_COLOR], r, g, b, a);
SetPlayerColorEx(playerid, RGBAToHex(r, g, b, 0));
TextDrawShowForPlayer(playerid, Textdraws[textdraw_TERRITORY_BOX]);
TextDrawShowForPlayer(playerid, TERRITORIES[index][territory_TEXTDRAW]);
}
}
}
}
}
return 1;
}
public OnPlayerLeaveDynamicArea(playerid, areaid)
{
new info_arr[2];
Streamer_GetArrayData(STREAMER_TYPE_AREA, areaid, E_STREAMER_EXTRA_ID, info_arr);
switch(info_arr[0])
{
case AREA_TYPE_NONE:
{
if(areaid == Lumberjack_Area)
{
if(PLAYER_TEMP[playerid][pt_WORKING_IN] == WORK_LUMBERJACK)
{
SendClientMessage(playerid, -1, "{999999}Has abandonado el trabajo de leñador porque te has alejado demasiado de la zona.");
EndPlayerJob(playerid);
}
}
else if(areaid == Farmer_Area)
{
if(PLAYER_TEMP[playerid][pt_WORKING_IN] == WORK_FARMER) EndPlayerJob(playerid);
}
else if(areaid == Harvest_Area)
{
if(GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
{
if(PLAYER_TEMP[playerid][pt_WORKING_IN] == WORK_HARVESTER)
{
SendClientMessage(playerid, -1, "{CCCCCC}Has abandonado tu trabajo de cosechador porque te has alejado demasiado de la zona.");
EndPlayerJob(playerid);
}
}
}
if(CHARACTER_INFO[playerid][ch_STATE] == ROLEPLAY_STATE_JAIL)
{
if(areaid == Jail_Areas[0] || areaid == Jail_Areas[1] || areaid == Jail_Areas[2])
{
SetPlayerPosEx(playerid, JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_X], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Y], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_Z], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_ANGLE], JAIL_POSITIONS[ CHARACTER_INFO[playerid][ch_POLICE_JAIL_ID] ][jail_INTERIOR], 0, true);
}
}
}
case AREA_TYPE_GANGZONE:
{
new index = info_arr[1];
if(TERRITORIES[index][territory_VALID])
{
if(PLAYER_CREW[playerid][player_crew_VALID])
{
SetPlayerNormalColor(playerid);
TextDrawHideForPlayer(playerid, Textdraws[textdraw_TERRITORY_BOX]);
TextDrawHideForPlayer(playerid, TERRITORIES[index][territory_TEXTDRAW]);
}
}
}
}
return 1;
}
public OnPlayerEnterDynamicCP(playerid, checkpointid)
{
new info_arr[1];
Streamer_GetArrayData(STREAMER_TYPE_CP, checkpointid, E_STREAMER_EXTRA_ID, info_arr);
switch(info_arr[0])
{
case CHECKPOINT_TYPE_GPS:
{
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_GPS_CHECKPOINT] = INVALID_STREAMER_ID;
}
case CHECKPOINT_TYPE_UNLOAD_TRUCK:
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!PLAYER_WORKS[playerid][WORK_TRUCK]) return 1;
if(PLAYER_TEMP[playerid][pt_WORKING_IN] != WORK_TRUCK) return 1;
new vehicleid = GetPlayerVehicleID(playerid);
if(GLOBAL_VEHICLES[vehicleid][gb_vehicle_TYPE] != VEHICLE_TYPE_WORK) return 1;
if(WORK_VEHICLES[vehicleid][work_vehicle_WORK] != WORK_TRUCK) return 1;
if(TRUCK_VEHICLE[vehicleid][truck_vehicle_DELIVERED]) return 1;
if(TRUCK_VEHICLE[vehicleid][truck_vehicle_UNLOADING]) return 1;
if(TRUCK_VEHICLE[vehicleid][truck_vehicle_DRIVER_USER_ID] != ACCOUNT_INFO[playerid][ac_ID]) return SendClientMessage(playerid, -1, "{999999}Solo aceptaremos la carga del conductor de este camión.");
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT] = INVALID_STREAMER_ID;
SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
GLOBAL_VEHICLES[vehicleid][gb_vehicle_PARAMS_ENGINE] = 0;
UpdateVehicleParams(vehicleid);
TRUCK_VEHICLE[vehicleid][truck_vehicle_UNLOADING] = true;
PlayerTextDrawSetString(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][0], "");
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][0]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][1]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][2]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_TRUCK_LOAD][3]);
PLAYER_TEMP[playerid][pt_TRUCK_LOADING_VALUE] = 40.0;
UpdatePlayerLoadingTruckSize(playerid);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][7]);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][9]);
PLAYER_TEMP[playerid][pt_TIMERS][9] = SetTimerEx("TruckUnLoadUp", 1000, false, "ii", playerid, vehicleid);
}
case CHECKPOINT_TYPE_FINISH_TRUCK:
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!PLAYER_WORKS[playerid][WORK_TRUCK]) return 1;
if(PLAYER_TEMP[playerid][pt_WORKING_IN] != WORK_TRUCK) return 1;
new vehicleid = GetPlayerVehicleID(playerid);
if(GLOBAL_VEHICLES[vehicleid][gb_vehicle_TYPE] != VEHICLE_TYPE_WORK) return 1;
if(WORK_VEHICLES[vehicleid][work_vehicle_WORK] != WORK_TRUCK) return 1;
if(!TRUCK_VEHICLE[vehicleid][truck_vehicle_DELIVERED]) return 1;
if(TRUCK_VEHICLE[vehicleid][truck_vehicle_UNLOADING]) return 1;
if(TRUCK_VEHICLE[vehicleid][truck_vehicle_DRIVER_USER_ID] != ACCOUNT_INFO[playerid][ac_ID]) return SendClientMessage(playerid, -1, "{999999}Solo le pagaremos al conductor que entregó la mercancía.");
DestroyDynamicCP(PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT]);
PLAYER_TEMP[playerid][pt_TRUCK_CHECKPOINT] = INVALID_STREAMER_ID;
SetVehicleVelocity(vehicleid, 0.0, 0.0, 0.0);
new work_extra_payment;
if(work_info[WORK_TRUCK][work_info_EXTRA_PAY] > 0 && work_info[WORK_TRUCK][work_info_EXTRA_PAY_EXP] > 0)
{
work_extra_payment = (work_info[WORK_TRUCK][work_info_EXTRA_PAY] * floatround(floatdiv(PLAYER_SKILLS[playerid][WORK_TRUCK], work_info[WORK_TRUCK][work_info_EXTRA_PAY_EXP])));
if(work_info[WORK_TRUCK][work_info_EXTRA_PAY_LIMIT] != 0) if(work_extra_payment > work_info[WORK_TRUCK][work_info_EXTRA_PAY_LIMIT]) work_extra_payment = work_info[WORK_TRUCK][work_info_EXTRA_PAY_LIMIT];
if(ACCOUNT_INFO[playerid][ac_SU]) work_extra_payment += SU_WORK_EXTRA_PAY;
}
GivePlayerCash(playerid, Truck_Contents[ TRUCK_VEHICLE[vehicleid][truck_vehicle_POINT] ][truck_content_MONEY] + work_extra_payment);
PLAYER_SKILLS[playerid][WORK_TRUCK] ++;
new StrText[20];
format(StrText,sizeof(StrText), "~g~+%s$", number_format_thousand(Truck_Contents[ TRUCK_VEHICLE[vehicleid][truck_vehicle_POINT] ][truck_content_MONEY] + work_extra_payment));
GameTextForPlayer(playerid, StrText, 5000, 1);
SetVehicleToRespawnEx(vehicleid);
}
case CHECKPOINT_TYPE_TRASH:
{
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return 1;
if(!PLAYER_WORKS[playerid][WORK_TRASH]) return DestroyPlayerTrashCheckpoint(playerid);
if(PLAYER_TEMP[playerid][pt_WORKING_IN] != WORK_TRASH) return DestroyPlayerTrashCheckpoint(playerid);
if(!PLAYER_TEMP[playerid][pt_TRASH_PASSENGER]) return 1;
new driver = TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_DRIVER_ID];
SendClientMessage(driver, -1, "{CCCCCC}Espera mientras tu compañero recoge la basura.");
new Float:offset = floatdiv(PLAYER_SKILLS[playerid][WORK_TRASH], 10);
if(offset > 30.0) offset = 30.0;
PLAYER_TEMP[playerid][pt_RECYCLE_BIN_VALUE] = 10.0 + offset;
UpdatePlayerTrashRecycleSize(playerid);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_RECYCLE_TRASH][0]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_RECYCLE_TRASH][1]);
PlayerTextDrawShow(playerid, PlayerTextdraws[playerid][ptextdraw_RECYCLE_TRASH][2]);
TogglePlayerControllableEx(playerid, false);
SetCameraBehindPlayer(playerid);
ApplyAnimation(playerid, "ROB_BANK", "CAT_Safe_Rob", 4.1, true, false, false, false, 0);
KillTimer(PLAYER_TEMP[playerid][pt_TIMERS][10]);
PLAYER_TEMP[playerid][pt_TIMERS][10] = SetTimerEx("RecycleUp", 1000, false, "i", playerid);
}
case CHECKPOINT_TYPE_FINISH_TRASH:
{
if(GetPlayerState(playerid) != PLAYER_STATE_DRIVER) return 1;
if(!PLAYER_WORKS[playerid][WORK_TRASH]) return DestroyPlayerTrashCheckpoint(playerid);
if(PLAYER_TEMP[playerid][pt_WORKING_IN] != WORK_TRASH) return DestroyPlayerTrashCheckpoint(playerid);
if(!PLAYER_TEMP[playerid][pt_TRASH_DRIVER]) return 1;
new route = TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_ROUTE];
new money = TRASH_OBJECTS[route][trash_route_MONEY];
new driver_work_extra_payment, passenger_work_extra_payment;
if(work_info[WORK_TRASH][work_info_EXTRA_PAY] > 0 && work_info[WORK_TRASH][work_info_EXTRA_PAY_EXP] > 0)
{
driver_work_extra_payment = (work_info[WORK_TRASH][work_info_EXTRA_PAY] * floatround(floatdiv(PLAYER_SKILLS[playerid][WORK_TRASH], work_info[WORK_TRASH][work_info_EXTRA_PAY_EXP])));
if(work_info[WORK_TRASH][work_info_EXTRA_PAY_LIMIT] != 0) if(driver_work_extra_payment > work_info[WORK_TRASH][work_info_EXTRA_PAY_LIMIT]) driver_work_extra_payment = work_info[WORK_TRASH][work_info_EXTRA_PAY_LIMIT];
if(ACCOUNT_INFO[playerid][ac_SU]) driver_work_extra_payment += SU_WORK_EXTRA_PAY;
passenger_work_extra_payment = (work_info[WORK_TRASH][work_info_EXTRA_PAY] * floatround(floatdiv(PLAYER_SKILLS[ TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID] ][WORK_TRASH], work_info[WORK_TRASH][work_info_EXTRA_PAY_EXP])));
if(work_info[WORK_TRASH][work_info_EXTRA_PAY_LIMIT] != 0) if(passenger_work_extra_payment > work_info[WORK_TRASH][work_info_EXTRA_PAY_LIMIT]) passenger_work_extra_payment = work_info[WORK_TRASH][work_info_EXTRA_PAY_LIMIT];
if(ACCOUNT_INFO[ TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID] ][ac_SU]) passenger_work_extra_payment += SU_WORK_EXTRA_PAY;
}
GivePlayerCash(playerid, money + driver_work_extra_payment);
SendClientMessageEx(playerid, -1, "Trabajo finalizado, has ganado %s$.", number_format_thousand(money + driver_work_extra_payment));
PLAYER_SKILLS[playerid][WORK_TRASH] ++;
GivePlayerCash(TRASH_VEHICLES[ PLAYER_TEMP[playerid][pt_TRASH_VEHICLE_ID] ][trash_vehicle_PASSENGER_ID], money + passenger_work_extra_payment);
SendClientMessageEx(TRASH_VEHICLES[ PLAYER_TEM
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment