shape1
shape2
shape3
shape4
shape7
shape8

Передача оружия другому игроку


Mirex

Руководитель проекта
Команда портала
Гл.Администратор
Золотой
21.12.2013
2 512
3
550
0
29
definehost.ru
Скриптер
Приветствую. Данный код подойдет совершенно для любого мода, если конечно правильно его вставить.

Ко всем new добавить:

new bool:Offer[MAX_PLAYERS] = false;
В public OnPlayerCommandText(playerid, cmdtext[])

if(strcmp(cmd, "/givemygun", true) == 0)
{
tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,-1,"ИНФО: /givemygun [ID]");
    new ID = strval(tmp);
    if(ID == playerid) return SendClientMessage(playerid,-1,"Вы не можете передать оружие самому себе!");
    if(!IsPlayerConnected(ID)) return SendClientMessage(playerid,-1,"Игрок оффлайн!");
    if(GetPlayerWeapon(playerid) == 0) return SendClientMessage(playerid,-1,"У вас нет оружия в руках!");
new Float:pos[3];
GetPlayerPos(ID, pos[0], pos[1], pos[2]);
if(!IsPlayerInRangeOfPoint(playerid, 1.2, pos[0], pos[1], pos[2])) return SendClientMessage(playerid,-1,"Вы далеко от этого игрока!");
new nickplayer1[MAX_PLAYER_NAME], nickplayer2[MAX_PLAYER_NAME], sg[90];
    GetPlayerName(playerid, nickplayer1, sizeof(nickplayer1));
    GetPlayerName(ID, nickplayer2, sizeof(nickplayer2));
    SetPVarInt(ID, "Gun", GetPlayerWeapon(playerid));
SetPVarInt(ID, "Ammo", GetPlayerAmmo(playerid));
SetPVarInt(ID, "IDplayer", playerid);
SetPVarString(ID, "Nick1", nickplayer1);
SetPVarString(ID, "Nick2", nickplayer2);
    format(sg, 70, "Вы предложили %s оружие которое у вас в руках.", nickplayer2);
SendClientMessage(playerid, -1, sg);
format(sg, 90, "%s предлагает вам оружие. Клавиша: Y - согласиться, N - отказаться.", nickplayer1);
SendClientMessage(ID, -1, sg);
Offer[ID] = true;
return 1;
}
В public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)

if(newkeys == KEY_YES)
{
if(Offer[playerid] == true)
{
new getnick1[MAX_PLAYER_NAME], getnick2[MAX_PLAYER_NAME], sg[45];
GetPVarString(playerid, "Nick1", getnick1, sizeof(getnick1));
GetPVarString(playerid, "Nick2", getnick2, sizeof(getnick2));
format(sg, sizeof(sg), "Вы передали оружие %s", getnick2);
SendClientMessage(GetPVarInt(playerid, "IDplayer"), -1, sg);
format(sg, sizeof(sg), "Вы взяли оружие у %s", getnick1);
SendClientMessage(playerid, -1, sg);
RemovePlayerWeapon(GetPVarInt(playerid, "IDplayer"), GetPVarInt(playerid, "Gun"));
GivePlayerWeapon(playerid, GetPVarInt(playerid, "Gun"), GetPVarInt(playerid, "Ammo"));
DeletePVar(playerid, "Gun");
DeletePVar(playerid, "Ammo");
DeletePVar(playerid, "IDplayer");
DeletePVar(playerid, "Nick1");
DeletePVar(playerid, "Nick2");
Offer[playerid] = false;
return 1;
}
}
if(newkeys == KEY_NO)
{
if(Offer[playerid] == true)
{
new getnick1[MAX_PLAYER_NAME], getnick2[MAX_PLAYER_NAME], sg[60];
GetPVarString(playerid, "Nick1", getnick1, sizeof(getnick1));
GetPVarString(playerid, "Nick2", getnick2, sizeof(getnick2));
format(sg, sizeof(sg), "%s отказался принимать ваше оружие", getnick2);
SendClientMessage(GetPVarInt(playerid, "IDplayer"), -1, sg);
format(sg, sizeof(sg), "Вы отказались принимать оружие от %s", getnick1);
SendClientMessage(playerid, -1, sg);
DeletePVar(playerid, "Gun");
DeletePVar(playerid, "Ammo");
DeletePVar(playerid, "IDplayer");
DeletePVar(playerid, "Nick1");
DeletePVar(playerid, "Nick2");
Offer[playerid] = false;
return 1;
}
}
Если у вас ошибка error 017: undefined symbol "strtok", то добавьте в конец мода следующий код:

strtok(const string[], &index)
{
new length = strlen(string);
while ((index < length) && (string[index] <= ' '))
{
index++;
}
new offset = index;
new result[20];
while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
{
result[index - offset] = string[index];
index++;
}
result[index - offset] = EOS;
return result;

Если у вас ошибка error 017: undefined symbol "RemovePlayerWeapon", то добавьте в конец мода следующий код:

RemovePlayerWeapon(playerid, weaponid)
{
new plyWeapons[12] = 0;
new plyAmmo[12] = 0;
for(new slot = 0; slot != 12; slot++)
{
new wep, ammo;
GetPlayerWeaponData(playerid, slot, wep, ammo);
if(wep != weaponid && ammo != 0)
{
GetPlayerWeaponData(playerid, slot, plyWeapons[slot], plyAmmo[slot]);
}
}
ResetPlayerWeapons(playerid);
for(new slot = 0; slot != 12; slot++)
{
if(plyAmmo[slot] != 0)
{
GivePlayerWeapon(playerid, plyWeapons[slot], plyAmmo[slot]);
}
}
return 1;

Автор: Amfy

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

Artifakt5059

Новичок
Пользователь
29.10.2016
1
1
0
Вы можете перевести команду на процессор DC_CMD?

 

noname_idk

Гуру
Пользователь
19.07.2015
4 046
7
787
0
Скриптер
@Artifakt5059

Код:
CMD:givemygun(playerid, params[])
{
	if(sscanf(params, "u", params[0])) return SendClientMessage(playerid,-1,"ИНФО: /givemygun [ID]");
    if(params[0] == playerid) return SendClientMessage(playerid,-1,"Вы не можете передать оружие самому себе!");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid,-1,"Игрок оффлайн!");
    if(GetPlayerWeapon(playerid) == 0) return SendClientMessage(playerid,-1,"У вас нет оружия в руках!");
    new Float:pos[3];
    GetPlayerPos(params[0], pos[0], pos[1], pos[2]);
    if(!IsPlayerInRangeOfPoint(playerid, 1.2, pos[0], pos[1], pos[2])) return SendClientMessage(playerid,-1,"Вы далеко от этого игрока!");
    new nickplayer1[MAX_PLAYER_NAME], nickplayer2[MAX_PLAYER_NAME], sg[90];
    GetPlayerName(playerid, nickplayer1, sizeof(nickplayer1));
    GetPlayerName(params[0], nickplayer2, sizeof(nickplayer2));
    SetPVarInt(params[0], "Gun", GetPlayerWeapon(playerid));
    SetPVarInt(params[0], "Ammo", GetPlayerAmmo(playerid));
    SetPVarInt(params[0], "IDplayer", playerid);
    SetPVarString(params[0], "Nick1", nickplayer1);
    SetPVarString(params[0], "Nick2", nickplayer2);
    format(sg, 70, "Вы предложили %s оружие которое у вас в руках.", nickplayer2);
    SendClientMessage(playerid, -1, sg);
    format(sg, 90, "%s предлагает вам оружие. Клавиша: Y - согласиться, N - отказаться.", nickplayer1);
    SendClientMessage(params[0], -1, sg);
    Offer[params[0]] = true;
	return true;
} 
 

Banan

Новичок
Пользователь
26.12.2016
3
2
0
Большое спасибо, давно искал