Удалить трейл игрока после смерти

Тема в разделе "Программирование / Скриптинг", создана пользователем Yaroslav, 3 ноя 2012.

  1. Yaroslav

    Yaroslav

    Сообщения:
    0
    Симпатии:
    0
    1. Как удалить Entity env_spritetrail после смерти игрока?

    Получил ответ от wS на его форуме:
    Но понятия не имею как это сделать.

    Код:
    PHP:
    trail[client] = CreateEntityByName("env_spritetrail", -1); 
           
    new 
    Float:Pos[3];    
    GetClientAbsOrigin(clientPos);    
    Pos[2] += 55.0;    
    decl String:xName[MAXPLAYERS+1]; 
    IntToString(clientxName[client], 10);    
    DispatchKeyValue(client"targetname"xName[client]); 
           
    DispatchKeyValueVector(trail[client], "origin"Pos);    
    decl String:Name[MAXPLAYERS+1];    
    GetClientName(clientName[client], 64);    
    DispatchKeyValue(trail[client], "parentname"Name[client]);    
    DispatchKeyValue(trail[client], "spritename""sprites/laser.vmt");    
    DispatchKeyValue(trail[client], "rendermode""5"); 

    // option - выбор из меню    
    if(option == 0DispatchKeyValue(trail[client], "rendercolor""0 255 0"); // Зеленый 
    else if(option == 1DispatchKeyValue(trail[client], "rendercolor""255 0 0"); // Красный 
    else if(option == 2DispatchKeyValue(trail[client], "rendercolor""0 0 255"); // Синий 
           
    DispatchKeyValue(trail[client], "renderamt""255");    
    DispatchKeyValueFloat(trail[client], "lifetime"4.0);    
    DispatchKeyValueFloat(trail[client], "startwidth"3.0);    
    DispatchKeyValueFloat(trail[client], "endwidth"7.0);    
    DispatchSpawn(trail[client]);    
    SetVariantString(xName[client]);    
    AcceptEntityInput(trail[client], "SetParent");    
    AcceptEntityInput(trail[client], "ShowSprite");
    2. Как задать не простой цветной трейл, а другой, необычный.
    Скачал трейл, установил на сервер, закачал в папку с css (лень было создавать загрузку файла с сервера).
    Трейл загружал в папку materials/sprites

    Делал так:
    DispatchKeyValue(trail[client], "spritename", "sprites/youtube.vmt");
    P.s. все 3 rendercolor убирал.
     
  2. neatek

    neatek

    Сообщения:
    442
    Симпатии:
    233
    Из моего магазина:
    PHP:
    // событие чебурек умирает
    public player_death(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    nkx GetClientOfUserId(GetEventInt(event,"userid"));

        if(
    nkx <= MaxClients && IsClientInGame(nkx)) // is valid client
        
    {
            
    Void_KillTrail(nkx); // kill trail
        
    }
    }

    // Удаление трейла
    void:Void_KillTrail(client)
    {
        if(
    g_iEntity[client] > && IsValidEdict(g_iEntity[client]))
        {
            
    AcceptEntityInput(g_iEntity[client], "ClearParent");
            
    AcceptEntityInput(g_iEntity[client], "Kill");
        }
            
        
    g_iEntity[client] = -1;
    }
    Удаление трейла...

    А насчет #2 думай сам :)
    У тебя это почти получилось, покопайся побольше в параметрах...
     
    Yaroslav нравится это.
  3. Yaroslav

    Yaroslav

    Сообщения:
    0
    Симпатии:
    0
    Окей, попробую. Спасибо за помощь.

    Добавлено через 10 минут
    ------
    Удалить трейл после смерти получилось.
    ---------------------
    Ссылку на документацию с параметрами Entity можешь скинуть?
     
    Последнее редактирование: 3 ноя 2012
  4. wanted241

    wanted241 Real-Gamer.Ru

    Сообщения:
    783
    Симпатии:
    355
    Хах....... Где то я уже видел этот код =)

    Добавлено через 1 минуту
    Кстати, можно в разы легче сделать трейл. Главное иметь мозги.
     
    Последнее редактирование: 4 ноя 2012
  5. neatek

    neatek

    Сообщения:
    442
    Симпатии:
    233
    Где?

    PHP:
        g_iEntity[client] = CreateEntityByName("env_spritetrail");
        
    GetClientName(clientg_sNamesizeof(g_sName));
        
    DispatchKeyValue(g_iEntity[client], "parentname"g_sName);
        
    DispatchKeyValue(g_iEntity[client], "spritename""sprites/trails/arrows.vmt");
        
    DispatchKeyValue(g_iEntity[client], "renderamt""255");
        
    DispatchKeyValue(g_iEntity[client], "rendercolor""255 255 255");
        
    DispatchKeyValue(g_iEntity[client], "rendermode""5");
        
    DispatchSpawn(g_iEntity[client]);
    Вот упрощенное создание трейла...
    но тут не хватает одного звена для полной работы текстурки.
     
  6. Yaroslav

    Yaroslav

    Сообщения:
    0
    Симпатии:
    0
    user_1: Не могу создать трейл, помогите, вот мои наброски: <код>;
    user_2: Вот, держи: <измененный код>, ты не указал то-то, и тут у тебя неправильно. Документация по трейлам: <url> ;

    -------------------------

    user_1: не получается создать трейл из vmt файла, помогите, вот мои наброски: <код>;
    user_2: ты почти все сделал правильно, молодец
    user_3: user_1, твой код дер#мо, можно было сделать намного проще
    user_2: user_3, этот код все равно лучше, потому что я его тоже использую. Вот смотри: <неполный код>
     
  7. neatek

    neatek

    Сообщения:
    442
    Симпатии:
    233
  8. schmidt

    schmidt wS (skype: ws.css)

    Сообщения:
    188
    Симпатии:
    347
    Не проще ли просто:

    PHP:
    public player_death(Handle:event, const String:name[], bool:silent)
    {
        
    Void_KillTrail(GetClientOfUserId(GetEventInt(event,"userid")));
    }
    Или бывают случаи когда игрок умирает не находясь на сервере?
    Ну и это не лучшая идея:

    В имени игрока инопланетные символы могут быть и кто знает что из-за этого может быть.