shape1
shape2
shape3
shape4
shape7
shape8

Выкинуть/поднять оружие


Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 513
550
0
26
definehost.ru
Скриптер
Данный мануал поможет Вам добавить в свой мод систему выбрасывания оружия командой /drop, и поднятие оружия командой /take.
 
Ко всем define

#define MAX_GUNS 500 
Ко всем enum

enum DGUN_INFO
{
dID, // ID
Float:dPos[3], // Позиция
dWeapon, // Оружие
dAmmo, // Патроны
dVirtualWorld, // Виртуальный мир
dInterior, // Интерьер
Text3D:dLabel // 3D текст
};
new Dgun[MAX_GUNS][DGUN_INFO]; 
Ко всем глобальным переменным:

new GunObjects[47] =
{
0, 331, 333, 334, 335, 336, 337, 338, 339, 341, 321, 322, 323, 324, 325, 326,
342, 343, 344, 0, 0, 0, 346, 347, 348, 349, 350, 351, 352, 353, 355, 356, 372,
357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 368, 371
}; 
В конец мода:

stock B_RemovePlayerWeapon(playerid, b_weapon)
{
new b_weaponammo[13][2];
for(new s; s != 13; s++) GetPlayerWeaponData(playerid, s, b_weaponammo[0], b_weaponammo[1]);
ResetPlayerWeapons(playerid);
for(new g; g != 13; g++)
{
if(b_weaponammo[g][0] == b_weapon || b_weaponammo[g][1] <= 0) continue;
GivePlayerWeapon(playerid, b_weaponammo[g][0], b_weaponammo[g][1]);
break;
}
return true;
}

Команды:

CMD:drop(playerid, params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы находитесь в транспорте.");
if(GetPlayerWeapon(playerid) <= 0 && GetPlayerAmmo(playerid) <= 0) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы не имеете при себе оружие.");
for(new g; g != MAX_GUNS; g++)
{
if(g > MAX_GUNS) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы не можете выбросить оружие. Превышен максимальный лимит.");
B_RemovePlayerWeapon(playerid, GetPlayerWeapon(playerid));
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
GetPlayerPos(playerid, Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2]);
Dgun[g][dWeapon] = GetPlayerWeapon(playerid);
Dgun[g][dAmmo] = GetPlayerAmmo(playerid);
Dgun[g][dVirtualWorld] = GetPlayerVirtualWorld(playerid);
Dgun[g][dInterior] = GetPlayerInterior(playerid);
Dgun[g][dID] = CreateDynamicObject(GunObjects[Dgun[g][dWeapon]], Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2]-1, 93.7, 120.0, 120.0, Dgun[g][dVirtualWorld], Dgun[g][dInterior], -1, 300.0);
GetWeaponName(Dgun[g][dWeapon], m_string, sizeof(m_string));
format(f_string, sizeof(f_string), "Оружие %s и %d патронов.\n{00A86B}Введите: /take", m_string, Dgun[g][dAmmo]);
Dgun[g][dLabel] = CreateDynamic3DTextLabel(f_string, 0xFFFF00AA, Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2], 5.0, INVALID_PLAYER_ID, INVALID_VEHICLE_ID, 0, Dgun[g][dVirtualWorld], Dgun[g][dInterior], -1, 100.0);
format(f_string, sizeof(f_string), "Вы выбросили оружие %s и %d патронов.", m_string, Dgun[g][dAmmo]);
SendClientMessage(playerid, 0xFFA500AA, f_string);
format(f_string, sizeof(f_string), "Выбросил оружие %s и %d патронов", m_string, Dgun[g][dAmmo]);
SetPlayerChatBubble(playerid, f_string, 0xFF9900AA, 5.0, 3000);
break;
}
return true;
}
CMD:take(playerid, params[])
{
if(GetPlayerState(playerid) != PLAYER_STATE_ONFOOT) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы находитесь в транспорте.");
for(new g; g != MAX_GUNS; g++)
{
if(!IsPlayerInRangeOfPoint(playerid, 1.0, Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2])) continue;
if(g > MAX_GUNS) return SendClientMessage(playerid, 0xAFAFAFAA, "[!] Вы не можете подобрать оружие. Превышен максимальный лимит.");
ApplyAnimation(playerid, "BOMBER", "BOM_Plant", 4.0, 0, 0, 0, 0, 0);
DestroyDynamicObject(Dgun[g][dID]);
DestroyDynamic3DTextLabel(Dgun[g][dLabel]);
GivePlayerWeapon(playerid, Dgun[g][dWeapon], Dgun[g][dAmmo]);
GetWeaponName(Dgun[g][dWeapon], m_string, sizeof(m_string));
format(f_string, sizeof(f_string), "Вы подобрали оружие %s и %d патронов.", m_string, Dgun[g][dAmmo]);
SendClientMessage(playerid, 0xFFA500AA, f_string);
format(f_string, sizeof(f_string), "Подобрал оружие %s и %d патронов", m_string, Dgun[g][dAmmo]);
SetPlayerChatBubble(playerid, f_string, 0xFF9900AA, 5.0, 3000);
Dgun[g][dID] = -1;
Dgun[g][dPos][0] = 0.0;
Dgun[g][dPos][1] = 0.0;
Dgun[g][dPos][2] = 0.0;
Dgun[g][dWeapon] = -1;
Dgun[g][dAmmo] = -1;
Dgun[g][dVirtualWorld] = -1;
Dgun[g][dInterior] = -1;
break;
}
return true;
}


Командный процесс - ZCMD. Так что, при необходимости подгоняйте под свой мод.
 
Последнее редактирование модератором:

meteor23

Новичок
Пользователь
21.07.2014
3
0
0
Помогите пожалуйста исправить
C:\Documents and Settings\Пк\Мои документы\Downloads\Diamond RolePlay\Diamond RolePlay\gamemodes\Diamond.pwn(28051) : error 017: undefined symbol "drop"
C:\Documents and Settings\Пк\Мои документы\Downloads\Diamond RolePlay\Diamond RolePlay\gamemodes\Diamond.pwn(28066) : error 017: undefined symbol "m_string"
C:\Documents and Settings\Пк\Мои документы\Downloads\Diamond RolePlay\Diamond RolePlay\gamemodes\Diamond.pwn(28066) : error 017: undefined symbol "m_string"
C:\Documents and Settings\Пк\Мои документы\Downloads\Diamond RolePlay\Diamond RolePlay\gamemodes\Diamond.pwn(28066) : error 029: invalid expression, assumed zero
C:\Documents and Settings\Пк\Мои документы\Downloads\Diamond RolePlay\Diamond RolePlay\gamemodes\Diamond.pwn(28066) : fatal error 107: too many error messages on one line


Compilation aborted.Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase




5 Errors.
Строчка 28066:

Dgun[g][dID] = CreateDynamicObject(GunObjects[Dgun[g][dWeapon]], Dgun[g][dPos][0], Dgun[g][dPos][1], Dgun[g][dPos][2]-1, 93.7, 120.0, 120.0, Dgun[g][dVirtualWorld], Dgun[g][dInterior], -1, 300.0);
Строчка 28051:

Код:
CMD:drop(playerid, params[])
 
Последнее редактирование модератором:
A

Amfy

Гость
Гость
В готовом решении команды построены на zcmd, в принципе, вам просто нужно изменить шапку команды на ту, которая у вас используется.

Например:

CMD:drop(playerid, params[])

на

if(strcmp(cmd,"/drop",true) == 0)

и замените все m_string на string

 

meteor23

Новичок
Пользователь
21.07.2014
3
0
0
Спасибо огромное,помогло

 
Последнее редактирование модератором:

Dmitriy67Rus

Новичок
Пользователь
13.05.2014
28
3
0
Подскажите как исправить данную проблему

Код:
C:\Users\User\Desktop\Survival.pwn(4022) : error 017: undefined symbol "m_string"
C:\Users\User\Desktop\Survival.pwn(4022) : error 017: undefined symbol "m_string"
C:\Users\User\Desktop\Survival.pwn(4022) : error 029: invalid expression, assumed zero
C:\Users\User\Desktop\Survival.pwn(4022) : fatal error 107: too many error messages on one line
 
Последнее редактирование модератором:

SMETAHA

Новичок
Пользователь
23.03.2014
47
5
0
26
глаза открой, выше тебя решение проблемы

 
Последнее редактирование модератором:

Dmitriy67Rus

Новичок
Пользователь
13.05.2014
28
3
0
Я пробовал сделать заместо m_string string, непомогает

 
Последнее редактирование модератором: