- 0

обработка уже существующих диалогов
Asked by
denis_191105
,
Question
Лучший ответ
@_bogdan_ Строчки,которые я внес в мод:
Этот код отвечает за дм зоны, тобишь телепорт на определенную дм зону и после смерти игрок снова возрождается в дм зоне, кнопка alt(игровое меню) в дм зоне не работает и в чате отображается "введите /exit для выхода с дм зоны"
#if !defined WEAPON_FIST
#define WEAPON_FIST (0)
#endif
#define MAX_DM_ZONES (5)
#define MAX_DM_ZONE_NAME_LEN (17 + 1)
#define GetDmZoneData(%0,%1) g_dm_zone[%0][%1]
#define GetDmZoneName(%0) GetDmZoneData(%0, DZ_NAME)
#define GetDmZoneGun(%0) GetDmZoneData(%0, DZ_GUN)
#define GetDmZoneGunAmmo(%0) GetDmZoneData(%0, DZ_GUN_AMMO)
#define GetDmZonePosX(%0) GetDmZoneData(%0, DZ_POS_X)
#define GetDmZonePosY(%0) GetDmZoneData(%0, DZ_POS_Y)
#define GetDmZonePosZ(%0) GetDmZoneData(%0, DZ_POS_Z)
#define GetDmZoneAngle(%0) GetDmZoneData(%0, DZ_ANGLE)
#define GetDmZoneEnterMsgColor(%0) GetDmZoneData(%0, DZ_ENTER_MSG_COLOR)
#define GivePlayerDmZoneWeapon(%0,%1) \
GivePlayerWeapon(%0, GetDmZoneGun(%1), GetDmZoneGunAmmo(%1))
#define SetPlayerDmZonePos(%0,%1) \
SetPlayerPos(%0, GetDmZonePosX(%1), GetDmZonePosY(%1), GetDmZonePosZ(%1))
#define SetPlayerDmZoneAngle(%0,%1) SetPlayerFacingAngle(%0, GetDmZoneAngle(%1))
#define SendExitDmZoneMessage(%0) SendClientMessage(%0, -1, "Bведите /exit, чтобы выйти с дм зоны")
#define GetPlayerDmZone(%0) g_player_dm_zone[%0]
#define IsPlayerInDmZone(%0) (GetPlayerDmZone(%0) != DM_ZONE_TYPE_NONE)
enum
{
DIALOG_ENTERTAINMENT = 6,
DIALOG_DM_ZONES = 632
}
enum E_DM_ZONE_STRUCT
{
DZ_NAME[MAX_DM_ZONE_NAME_LEN],
DZ_GUN,
DZ_GUN_AMMO,
Float: DZ_POS_X,
Float: DZ_POS_Y,
Float: DZ_POS_Z,
Float: DZ_ANGLE,
DZ_ENTER_MSG_COLOR
}
new g_dm_zone[MAX_DM_ZONES][E_DM_ZONE_STRUCT] =
{
{
"Город",
0, 0,
2379.10, -1716.12, 524.26,
239.0523,
0xE2A80EAA
},
{
"Крушение самолёта",
0, 0,
-423.89, 498.11, 14.48,
343.1032,
0x367A94AA
},
{
"Берлин 1945",
WEAPON_RIFLE, 300,
1362.36, 1672.41, 4.06,
343.1032,
0x367A94AA
},
{
"Ghetto",
WEAPON_RIFLE, 300,
340.92, 1892.04, 13.12,
343.1032,
0x9C8DF3AA
},
{
"Вулкан",
WEAPON_DEAGLE, 300,
36.38, 2854.61, 315.46,
88.9641,
0xF60000AA
}
};
enum
{
DM_ZONE_TYPE_NONE = -1,
DM_ZONE_TYPE_VOLCANO = 4
}
new g_player_dm_zone[MAX_PLAYERS] = {DM_ZONE_TYPE_NONE, ...};
stock ShowPlayerEntertainmentDialog(playerid)
{
return ShowPlayerDialog
(
playerid, DIALOG_ENTERTAINMENT, DIALOG_STYLE_LIST,
"{1E90FF}Развлечения",
"{30d5c8}Паркур зоны\n"\
"{08e8de}Deathmatch зоны\n"\
"{00ffff}Мини-игры\n"\
"{afeeee}Различные места",
"OK", "Назад"
);
}
stock ShowPlayerDmZonesDialog(playerid)
{
new colors[5][2][9] =
{
{"{9240FF}", "{DCC1FF}"},
{"{A73DFE}", "{E6C6FF}"},
{"{C134FE}", "{EFCAFF}"},
{"{D222FF}", "{F2C1FF}"},
{"{EA30FE}", "{F9BBFF}"}
},
fmt_str[] = "%sДМ %d || %s'%s'\n",
result_str[((sizeof fmt_str) +
((- 4 + (sizeof colors[][] * 2)) +
(- 2 + 1) +
(- 2 + MAX_DM_ZONE_NAME_LEN)))],
dest[((sizeof result_str) * MAX_DM_ZONES)];
for(new idx; idx < sizeof g_dm_zone; idx ++)
{
format
(
result_str, sizeof result_str,
fmt_str,
colors[idx][0],
idx + 1,
colors[idx][1],
GetDmZoneName(idx)
);
strcat(dest, result_str);
}
return ShowPlayerDialog
(
playerid, DIALOG_DM_ZONES, DIALOG_STYLE_LIST,
"{1E90FF}Deathmatch зоны",
dest,
"OK", "Назад"
);
}
stock SendEnterDmZoneMessage(playerid, zone_id)
{
new fmt_str[] = "{1E90FF}[DM] {ffffff}Игрок {1E90FF}%s {FFFFFF}зашел на дм зону"\
"{1E90FF}'%s'! {FFFFFF}[/dm]",
result_str[((sizeof fmt_str) +
((- 2 + MAX_PLAYER_NAME) +
(- 2 + MAX_DM_ZONE_NAME_LEN)))];
format(result_str, sizeof result_str, fmt_str, GetPlayerNameEx(playerid), GetDmZoneName(zone_id));
return SendClientMessage(playerid, GetDmZoneEnterMsgColor(zone_id), result_str);
}
stock SetPlayerMainDmZoneData(playerid, zone_id)
{
new result = (zone == DM_ZONE_TYPE_VOLCANO ? 1 : 0);
if(result)
ResetPlayerWeapons(playerid);
SetPlayerArmour(playerid, 100.00);
SetPlayerHealth(playerid, 100.00);
SetPlayerInterior(playerid, result);
result = (!result ? result : result + 1);
SetPlayerVirtualWorld(playerid, result);
if(GetDmZoneGun(zone_id) != WEAPON_FIST)
GivePlayerDmZoneWeapon(playerid, zone_id);
SetPlayerDmZonePos(playerid, zone_id);
SetPlayerDmZoneAngle(playerid, zone_id);
SendEnterDmZoneMessage(playerid, zone_id);
return PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
}
@__OnPlayerSelectDmZone(playerid, zone_id);
@__OnPlayerSelectDmZone(playerid, zone_id)
return SetPlayerMainDmZoneData(playerid, zone_id);
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
if((newkeys & KEY_WALK) && (IsPlayerInDmZone(playerid)))
return SendExitDmZoneMessage(playerid);
return 1;
}
public OnPlayerDeath(playerid, killerid, reason)
{
if(IsPlayerInDmZone(playerid))
return SetPlayerMainDmZoneData(playerid, GetPlayerDmZone(playerid));
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, const inputtext[])
{
switch(dialogid)
{
case DIALOG_ENTERTAINMENT:
{
switch(listitem)
{
case 1:
return ShowPlayerDmZonesDialog(playerid);
}
}
case DIALOG_DM_ZONES:
{
if(response)
return @__OnPlayerSelectDmZone(playerid, listitem);
else ShowPlayerEntertainmentDialog(playerid);
}
}
return 1;
}
Ошибки:
Как я вставил код:

This topic is now closed to further replies.
-
Recently Browsing 0 members
No registered users viewing this page.
-
Similar Content
-
By Доналдо Фарекелка
Скачать файл Christmas Live » RPG | XS
Приветствую, сливаю мод, который делал самолично. Мод недоработан, возможно где-то имеются баги, без лаунчера.
Взят под основу от Phantom RolePlay. Отдельная благодарность за мод WW.INC
Основная информация про мод:
Информация про сервер:
Записка:
ПРИМЕР - скриншот, сделанный для показа чего-либо и скриншот может является устаревшей информацией(Пояснение: Что-то изменилось, а что-то нет).
Добавил Доналдо Фарекелка Добавлено 14.03.2025 Категория Моды Автор Donaldo_Farekelka
-
By Доналдо Фарекелка
Приветствую, сливаю мод, который делал самолично. Мод недоработан, возможно где-то имеются баги, без лаунчера.
Взят под основу от Phantom RolePlay. Отдельная благодарность за мод WW.INC
Основная информация про мод:
Информация про сервер:
Записка:
ПРИМЕР - скриншот, сделанный для показа чего-либо и скриншот может является устаревшей информацией(Пояснение: Что-то изменилось, а что-то нет).
-
By Zelixsz
Привет, при попытке запустить сервер появляется такая ошибка.
Буду благодарен за любую помощь
MySQL: подключаюсь к localhost (Логин: root | БД: adamandrp) MySQL: не удалось подключиться к localhost
-
Posted (edited) · Report post
Как убрать обработку уже существующих диалогов? При компиляции, много ошибок. Нужна срочно помощь!
Edited by denis_191105
Заметка от _bogdan_ , создано
прикрепите код, или скриншот ошибки.
Share this post
Link to post