Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

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

Статус
В этой теме нельзя размещать новые ответы.

Merlin

Умник
Приветствую. Данный код подойдет совершенно для любого мода, если конечно правильно его вставить.

Ко всем new добавить:
PHP:
new bool:Offer[MAX_PLAYERS] = false;
В public OnPlayerCommandText(playerid, cmdtext[])
PHP:
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)
PHP:
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;
    }
}
PHP:
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;
}
PHP:
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
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу