Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

ищу систему

Авг
67
172
Пользователь
2.20. Запрещено публиковать ответы, сгенерированные при помощи ChatGPT или аналогичных ИИ-моделей.
Привет! Вот система заморозки ледяным мечем

pawn:
// В начале скрипта, после includes и определений

// Константы
#define ICE_WEAPON_ID 4 // ID оружия (нож)
#define FREEZE_DURATION 5000 // Длительность заморозки в миллисекундах (5 сек)
#define ICE_OBJECT_MODEL 19318 // ID объекта "лёд" (например, модель kbd_beam_rg)

// Переменные
new PlayerFrozenTimer[MAX_PLAYERS] = {-1, ...}; // Таймер для разморозки
new IceObject[MAX_PLAYERS] = {INVALID_OBJECT_ID, ...}; // Объект льда на игроке

// Функция для "заморозки" игрока
FreezePlayer(playerid, by_playerid)
{
    // 1. Останавливаем игрока
    TogglePlayerControllable(playerid, 0); // Блокируем управление
    
    // 2. Применяем анимацию "заморозки" (например, анимация падения)
    ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.1, 0, 1, 1, 1, 0, 1);
    
    // 3. Создаём визуальный эффект (объект льда) на спине игрока
    new Float:pos[3];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
    
    // Удаляем старый объект, если он был
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
    }
    
    // Создаём новый объект льда и прикрепляем его к игроку
    IceObject[playerid] = CreatePlayerObject(playerid, ICE_OBJECT_MODEL, pos[0], pos[1], pos[2], 0.0, 0.0, 0.0);
    AttachPlayerObjectToPlayer(playerid, IceObject[playerid], by_playerid, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0);
    // Примечание: AttachPlayerObjectToPlayer может работать некорректно в некоторых версиях SA-MP.
    // Альтернатива - AttachPlayerObjectToPlayer с вычислением смещения.
    
    // 4. Отправляем сообщения обоим игрокам
    SendClientMessage(playerid, 0x33CCFFAA, "Вас заморозил ледяной меч! Вы обездвижены на несколько секунд.");
    SendClientMessage(by_playerid, 0x33CCFFAA, "Вы заморозили противника своим ледяным мечом!");
    
    // 5. Устанавливаем таймер на разморозку
    // Сначала убиваем старый таймер, если он существует
    if(PlayerFrozenTimer[playerid] != -1) {
        KillTimer(PlayerFrozenTimer[playerid]);
    }
    PlayerFrozenTimer[playerid] = SetTimerEx("UnFreezePlayer", FREEZE_DURATION, false, "i", playerid);
}

// Функция для "разморозки" игрока (вызывается таймером)
forward UnFreezePlayer(playerid);
public UnFreezePlayer(playerid)
{
    // 1. Возвращаем управление
    TogglePlayerControllable(playerid, 1);
    
    // 2. Очищаем анимацию
    ClearAnimations(playerid);
    
    // 3. Удаляем объект льда
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
        IceObject[playerid] = INVALID_OBJECT_ID;
    }
    
    // 4. Сбрасываем таймер
    PlayerFrozenTimer[playerid] = -1;
    
    // 5. Сообщение игроку
    SendClientMessage(playerid, 0x33CCFFAA, "Лёд растаял! Вы снова можете двигаться.");
}

// Обработчик нанесения урона
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
    // Проверяем, что урон нанесён нужным оружием, цель жива и это другой игрок
    if(weaponid == ICE_WEAPON_ID && damagedid != INVALID_PLAYER_ID && IsPlayerConnected(damagedid))
    {
        // Вызываем функцию заморозки
        FreezePlayer(damagedid, playerid);
    }
    return 1;
}

// Важно: очистка при дисконнекте игрока
public OnPlayerDisconnect(playerid, reason)
{
    // Убиваем таймер, если он активен
    if(PlayerFrozenTimer[playerid] != -1) {
        KillTimer(PlayerFrozenTimer[playerid]);
        PlayerFrozenTimer[playerid] = -1;
    }
    
    // Удаляем объект, если он создан
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
        IceObject[playerid] = INVALID_OBJECT_ID;
    }
    return 1;
}
 
Сен
28
1
Пользователь
Привет! Вот система заморозки ледяным мечем

pawn:
// В начале скрипта, после includes и определений

// Константы
#define ICE_WEAPON_ID 4 // ID оружия (нож)
#define FREEZE_DURATION 5000 // Длительность заморозки в миллисекундах (5 сек)
#define ICE_OBJECT_MODEL 19318 // ID объекта "лёд" (например, модель kbd_beam_rg)

// Переменные
new PlayerFrozenTimer[MAX_PLAYERS] = {-1, ...}; // Таймер для разморозки
new IceObject[MAX_PLAYERS] = {INVALID_OBJECT_ID, ...}; // Объект льда на игроке

// Функция для "заморозки" игрока
FreezePlayer(playerid, by_playerid)
{
    // 1. Останавливаем игрока
    TogglePlayerControllable(playerid, 0); // Блокируем управление
   
    // 2. Применяем анимацию "заморозки" (например, анимация падения)
    ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.1, 0, 1, 1, 1, 0, 1);
   
    // 3. Создаём визуальный эффект (объект льда) на спине игрока
    new Float:pos[3];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
   
    // Удаляем старый объект, если он был
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
    }
   
    // Создаём новый объект льда и прикрепляем его к игроку
    IceObject[playerid] = CreatePlayerObject(playerid, ICE_OBJECT_MODEL, pos[0], pos[1], pos[2], 0.0, 0.0, 0.0);
    AttachPlayerObjectToPlayer(playerid, IceObject[playerid], by_playerid, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0);
    // Примечание: AttachPlayerObjectToPlayer может работать некорректно в некоторых версиях SA-MP.
    // Альтернатива - AttachPlayerObjectToPlayer с вычислением смещения.
   
    // 4. Отправляем сообщения обоим игрокам
    SendClientMessage(playerid, 0x33CCFFAA, "Вас заморозил ледяной меч! Вы обездвижены на несколько секунд.");
    SendClientMessage(by_playerid, 0x33CCFFAA, "Вы заморозили противника своим ледяным мечом!");
   
    // 5. Устанавливаем таймер на разморозку
    // Сначала убиваем старый таймер, если он существует
    if(PlayerFrozenTimer[playerid] != -1) {
        KillTimer(PlayerFrozenTimer[playerid]);
    }
    PlayerFrozenTimer[playerid] = SetTimerEx("UnFreezePlayer", FREEZE_DURATION, false, "i", playerid);
}

// Функция для "разморозки" игрока (вызывается таймером)
forward UnFreezePlayer(playerid);
public UnFreezePlayer(playerid)
{
    // 1. Возвращаем управление
    TogglePlayerControllable(playerid, 1);
   
    // 2. Очищаем анимацию
    ClearAnimations(playerid);
   
    // 3. Удаляем объект льда
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
        IceObject[playerid] = INVALID_OBJECT_ID;
    }
   
    // 4. Сбрасываем таймер
    PlayerFrozenTimer[playerid] = -1;
   
    // 5. Сообщение игроку
    SendClientMessage(playerid, 0x33CCFFAA, "Лёд растаял! Вы снова можете двигаться.");
}

// Обработчик нанесения урона
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
    // Проверяем, что урон нанесён нужным оружием, цель жива и это другой игрок
    if(weaponid == ICE_WEAPON_ID && damagedid != INVALID_PLAYER_ID && IsPlayerConnected(damagedid))
    {
        // Вызываем функцию заморозки
        FreezePlayer(damagedid, playerid);
    }
    return 1;
}

// Важно: очистка при дисконнекте игрока
public OnPlayerDisconnect(playerid, reason)
{
    // Убиваем таймер, если он активен
    if(PlayerFrozenTimer[playerid] != -1) {
        KillTimer(PlayerFrozenTimer[playerid]);
        PlayerFrozenTimer[playerid] = -1;
    }
   
    // Удаляем объект, если он создан
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
        IceObject[playerid] = INVALID_OBJECT_ID;
    }
    return 1;
}
спасибо чекни личку профиля
 
Апр
37
1
Пользователь
Pawn:
forward ApplyIceObjects(hitid, playerid);
public ApplyIceObjects(hitid, playerid) {
    if(!IsPlayerConnected(hitid)) return;
    
    new Float:attachedPosition[][] = {
        {-0.032000, 0.025000, -0.039999, -94.900017, 8.700002, -61.399879, 1.088999, 0.765999, 1.301999},
        {-0.141999, -0.003999, -0.000999, -9.199993, 5.600007, -89.499947, 0.432000, 0.656000, 0.615999},
        {-0.141999, -0.003999, -0.000999, -9.199993, 5.600007, -89.499947, 0.432000, 0.656000, 0.615999},
        {0.281000, 0.015000, -0.017999, -12.099991, 4.600006, -74.100014, 0.571000, 0.656000, 0.753000},
        {0.262000, 0.023000, 0.013000, -12.099991, 3.400007, -83.099968, 0.571000, 0.656000, 0.753000},
        {0.235000, 0.011000, -0.018999, -8.599989, 3.800008, -77.899956, 0.595000, 0.508000, 0.853999}
    }, attachedBoned[] = {1, 5, 6, 12, 11, 8};
    
    for(new i = 0; i < 6; i++) {
        SetPlayerAttachedObject(hitid, i, 2806, attachedBoned[i],
            attachedPosition[i][0], attachedPosition[i][1], attachedPosition[i][2],
            attachedPosition[i][3], attachedPosition[i][4], attachedPosition[i][5],
            attachedPosition[i][6], attachedPosition[i][7], attachedPosition[i][8],
            0xFF87CEEB, 0);
    }
}
 
Авг
246
60
Активный
Привет! Вот система заморозки ледяным мечем

pawn:
// В начале скрипта, после includes и определений

// Константы
#define ICE_WEAPON_ID 4 // ID оружия (нож)
#define FREEZE_DURATION 5000 // Длительность заморозки в миллисекундах (5 сек)
#define ICE_OBJECT_MODEL 19318 // ID объекта "лёд" (например, модель kbd_beam_rg)

// Переменные
new PlayerFrozenTimer[MAX_PLAYERS] = {-1, ...}; // Таймер для разморозки
new IceObject[MAX_PLAYERS] = {INVALID_OBJECT_ID, ...}; // Объект льда на игроке

// Функция для "заморозки" игрока
FreezePlayer(playerid, by_playerid)
{
    // 1. Останавливаем игрока
    TogglePlayerControllable(playerid, 0); // Блокируем управление
   
    // 2. Применяем анимацию "заморозки" (например, анимация падения)
    ApplyAnimation(playerid, "CRACK", "crckdeth2", 4.1, 0, 1, 1, 1, 0, 1);
   
    // 3. Создаём визуальный эффект (объект льда) на спине игрока
    new Float:pos[3];
    GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
   
    // Удаляем старый объект, если он был
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
    }
   
    // Создаём новый объект льда и прикрепляем его к игроку
    IceObject[playerid] = CreatePlayerObject(playerid, ICE_OBJECT_MODEL, pos[0], pos[1], pos[2], 0.0, 0.0, 0.0);
    AttachPlayerObjectToPlayer(playerid, IceObject[playerid], by_playerid, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0);
    // Примечание: AttachPlayerObjectToPlayer может работать некорректно в некоторых версиях SA-MP.
    // Альтернатива - AttachPlayerObjectToPlayer с вычислением смещения.
   
    // 4. Отправляем сообщения обоим игрокам
    SendClientMessage(playerid, 0x33CCFFAA, "Вас заморозил ледяной меч! Вы обездвижены на несколько секунд.");
    SendClientMessage(by_playerid, 0x33CCFFAA, "Вы заморозили противника своим ледяным мечом!");
   
    // 5. Устанавливаем таймер на разморозку
    // Сначала убиваем старый таймер, если он существует
    if(PlayerFrozenTimer[playerid] != -1) {
        KillTimer(PlayerFrozenTimer[playerid]);
    }
    PlayerFrozenTimer[playerid] = SetTimerEx("UnFreezePlayer", FREEZE_DURATION, false, "i", playerid);
}

// Функция для "разморозки" игрока (вызывается таймером)
forward UnFreezePlayer(playerid);
public UnFreezePlayer(playerid)
{
    // 1. Возвращаем управление
    TogglePlayerControllable(playerid, 1);
   
    // 2. Очищаем анимацию
    ClearAnimations(playerid);
   
    // 3. Удаляем объект льда
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
        IceObject[playerid] = INVALID_OBJECT_ID;
    }
   
    // 4. Сбрасываем таймер
    PlayerFrozenTimer[playerid] = -1;
   
    // 5. Сообщение игроку
    SendClientMessage(playerid, 0x33CCFFAA, "Лёд растаял! Вы снова можете двигаться.");
}

// Обработчик нанесения урона
public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid, bodypart)
{
    // Проверяем, что урон нанесён нужным оружием, цель жива и это другой игрок
    if(weaponid == ICE_WEAPON_ID && damagedid != INVALID_PLAYER_ID && IsPlayerConnected(damagedid))
    {
        // Вызываем функцию заморозки
        FreezePlayer(damagedid, playerid);
    }
    return 1;
}

// Важно: очистка при дисконнекте игрока
public OnPlayerDisconnect(playerid, reason)
{
    // Убиваем таймер, если он активен
    if(PlayerFrozenTimer[playerid] != -1) {
        KillTimer(PlayerFrozenTimer[playerid]);
        PlayerFrozenTimer[playerid] = -1;
    }
   
    // Удаляем объект, если он создан
    if(IceObject[playerid] != INVALID_OBJECT_ID) {
        DestroyPlayerObject(playerid, IceObject[playerid]);
        IceObject[playerid] = INVALID_OBJECT_ID;
    }
    return 1;
}
gpt юзер крос
 
Сверху