Archived copy of war3source.com, the War3Source forum (2009–2020), rebuilt from the Internet Archive by wc3mods.net. This page was captured on 2012-10-25 (original capture). Forum · All archived topics · Wiki · Bug tracker · Blog
Chat

War3:Source
October 24, 2012, 07:18:58 PM *
Welcome, Guest. Please login or register.
Did you miss your activation email?

Login with username, password and session length
News: Download: http://war3source.com/index.php?board=9.0
What is War3Source?: http://war3source.com/index.php?topic=200.0
Sample Stats: http://war3source.com/war3stats
Steam Community Group: http://steamcommunity.com/groups/war3source
War3Source SVN Checkout: http://ownageclan.com/svn/war3source/
War3Source servers: http://www.game-monitor.com/search.php?vars=war3_version=
 
   Home   Help Search Login Register  
Pages: [1]
  Print  
Author Topic: [Russian] Помогите с моделями  (Read 1086 times)
venom123
Newbie
*
Posts: 9


View Profile Email
« on: May 30, 2011, 03:45:26 AM »

Можете объяснить как поставить модель на какую либо расу и чтоб эта модель нормально скачивалась?

Например на ту расу
Code:
/**
* File: War3Source_[Cereal] NINJA.sp
* Description: a race for War3Source.
* Author(s): Cereal Killer + Ownz
*/

// War3Source stuff
#pragma semicolon 1

#include <sourcemod>
#include "W3SIncs/War3Source_Interface"
#include <sdktools>
#include <sdktools_functions>
#include <sdktools_tempents>
#include <sdktools_tempents_stocks>
#include <sdkhooks>

new thisRaceID;
new Float:InvisibilityAlpha[7]={1.0,0.85,0.70,0.65,0.55,0.45,0.4};
new Float:SkillLongJump[7]={0.0,2.0,2.5,3.0,4.5,5.0,5.5};
new Float:DodgeChance[7]={0.0,0.05,0.10,0.15,0.20,0.25,0.3};
new Float:VanishChance[7]={0.0,0.04,0.7,0.11,0.14,0.17,0.2};
new Handle:ultRangeCvar;
new g_offsCollisionGroup;
new m_vecVelocity_0, m_vecVelocity_1, m_vecBaseVelocity;
new Float:ASSASSINATION_cooldown[7]={40.0,35.0,30.0,25.0,20.0,15.0,10.0};
new String:ultimateSound[]="ambient/office/coinslot1.wav";

new SKILL_INVIS, SKILL_LONGJUMP, SKILL_DODGE, SKILL_VANISH, ULT_ASSASSINATION;

public Plugin:myinfo =
{
    name = "War3Source Race - Ninja",
    author = "Cereal Killer + Ownz ",
    description = "The Ninja race for War3Source.",
    version = "1.0.0.0",
    url = "http://war3source.com"
};

// War3Source Functions
public OnPluginStart()
{
    ultRangeCvar=CreateConVar("war3_ninja_ult_range","99999","Range of ninja assination ultimate");
    g_offsCollisionGroup = FindSendPropOffs("CBaseEntity", "m_CollisionGroup");
    m_vecVelocity_0 = FindSendPropOffs("CBasePlayer","m_vecVelocity[0]");
    m_vecVelocity_1 = FindSendPropOffs("CBasePlayer","m_vecVelocity[1]");
    m_vecBaseVelocity = FindSendPropOffs("CBasePlayer","m_vecBaseVelocity");
    HookEvent("player_jump",PlayerJumpEvent);
   
}


public OnClientPutInServer(client)
{
    SDKHook(client, SDKHook_WeaponCanUse, OnWeaponCanUse);
}

public Action:OnWeaponCanUse(client, weapon)
{
    if(War3_GetRace(client)==thisRaceID)
    {
        decl String:name[64];
        GetEdictClassname(weapon, name, sizeof(name));
       
        if(!StrEqual(name, "weapon_knife", false)){
            return Plugin_Handled;
        }
    }
    return Plugin_Continue;
}

public OnWar3LoadRaceOrItemOrdered2(num)
{
    if(num==180)
    {
        thisRaceID=War3_CreateNewRace("[Cereal] Ninja","ninja");
        SKILL_INVIS=War3_AddRaceSkill(thisRaceID,"Camo","blend in with the environment",false,6);
        SKILL_LONGJUMP=War3_AddRaceSkill(thisRaceID,"Long Jump","Jump farther",false,6);
        SKILL_DODGE=War3_AddRaceSkill(thisRaceID,"Dodge Bullets","Evade Bullets",false,6);
        SKILL_VANISH=War3_AddRaceSkill(thisRaceID,"Vanish","Chance to vanish into thin air when hit",false,6);
        ULT_ASSASSINATION=War3_AddRaceSkill(thisRaceID,"Assassination","Get behind a random enemy",true,6);
        War3_CreateRaceEnd(thisRaceID);
    }
}


// *************************************************************


public OnMapStart()
{
    War3_PrecacheSound(ultimateSound);

}
new Float:pOsition[3];
public OnUltimateCommand(client,race,bool:pressed)
{
    new userid=GetClientUserId(client);
    if(race==thisRaceID && pressed && userid>1 && IsPlayerAlive(client) )
    {
        new ult_level=War3_GetSkillLevel(client,race,ULT_ASSASSINATION);
        if(ult_level>0)
        {
           
            if(War3_SkillNotInCooldown(client,thisRaceID,ULT_ASSASSINATION,true))
            {
                new Float:posVec[3];
                GetClientAbsOrigin(client,posVec);
                new Float:otherVec[3];
                new Float:bestTargetDistance=999999.0;
                new team = GetClientTeam(client);
                new bestTarget=0;
               
                new Float:ultmaxdistance=GetConVarFloat(ultRangeCvar);
                for(new i=1;i<=MaxClients;i++)
                {
                    if(ValidPlayer(i,true)&&GetClientTeam(i)!=team&&!W3HasImmunity(i,Immunity_Ultimates))
                    {
                        GetClientAbsOrigin(i,otherVec);
                        new Float:dist=GetVectorDistance(posVec,otherVec);
                        if(dist<bestTargetDistance&&dist<ultmaxdistance)
                        {
                            bestTarget=i;
                            bestTargetDistance=GetVectorDistance(posVec,otherVec);
                           
                        }
                    }
                }
                if(bestTarget==0)
                {
                    PrintHintText(client,"No Target Found");
                }
                else
                {
                    new damage=RoundFloat(float(War3_GetMaxHP(bestTarget))/2.0);
                    if(damage>0)
                    {
                        War3_CachedPosition(bestTarget,Float:pOsition);
                        TeleportEntity(client,pOsition,NULL_VECTOR,NULL_VECTOR);
                        SetEntData(bestTarget, g_offsCollisionGroup, 2, 4, true);
                       
                       
                        EmitSoundToAll(ultimateSound,client);
                        CooldownUltimate(client);
                       
                       
                    }
                }
            }
        }
        else
        {
            PrintHintText(client,"Level Your Ultimate First");
        }
    }
}



public CooldownUltimate(client)
{
    new skilllevel_assassination=War3_GetSkillLevel(client,thisRaceID,ULT_ASSASSINATION);
    War3_CooldownMGR(client,ASSASSINATION_cooldown[skilllevel_assassination],thisRaceID,ULT_ASSASSINATION,false,false,_,"Assasination");
}

public OnRaceSelected(client,newrace)
{
    if(newrace!=thisRaceID)
    {
        War3_SetBuff(client,fInvisibilitySkill,thisRaceID,1.0);
        War3_SetBuff(client,fMaxSpeed,thisRaceID,1.0);
    }
    else
    {
        ActivateSkills(client);
    }
}


// *************************************************************************************************


public ActivateSkills(client)
{
    if(War3_GetRace(client)==thisRaceID)
    {
       
        new skilllevel=War3_GetSkillLevel(client,thisRaceID,SKILL_INVIS);
        new Float:alpha=InvisibilityAlpha[skilllevel];
        War3_SetBuff(client,fInvisibilitySkill,thisRaceID,alpha);
       
       
        SetEntData(client, g_offsCollisionGroup, 2, 4, true);
    }
}



public OnSkillLevelChanged(client,race,skill,newskilllevel)
{
    if(War3_GetRace(client)==thisRaceID)
    {
        ActivateSkills(client);
    }
}




public OnW3TakeDmgAll(victim,attacker,Float:damage)
/**
public Action:OnWar3TakeDamage(victim,attacker,inflictor,Float:damage,damagetype)
**/
{
    new skill_level_dodge=War3_GetSkillLevel(victim,thisRaceID,SKILL_DODGE);
    if(victim==thisRaceID && skill_level_dodge>0 &&GetClientTeam(attacker)!=GetClientTeam(victim))
    {
       
        if(GetRandomFloat(0.0,1.0)<=DodgeChance[skill_level_dodge] && !W3HasImmunity(attacker,Immunity_Skills))
        {
            W3FlashScreen(victim,RGBA_COLOR_BLUE);
            War3_DamageModPercent(0.0); //NO DAMAMGE
           
        }
    }
   
}
public OnWar3EventPostHurt(victim,attacker,dmg){
    if(ValidPlayer(victim,true)&&War3_GetRace(victim)==thisRaceID){
        new skilllevel=War3_GetSkillLevel(victim,thisRaceID,SKILL_VANISH);
        if(skilllevel>0&&War3_Chance(VanishChance[skilllevel])){
            PrintHintText(victim,"You disapear in the shadows");
            War3_SetBuff(victim,fInvisibilitySkill,thisRaceID,0);
            CreateTimer(1.5,Invis1,victim);
        }
    }
}

public Action:Invis1(Handle:timer,any:victim)
{
    if(War3_GetRace(victim)==thisRaceID)
    {
        new skilllevel=War3_GetSkillLevel(victim,thisRaceID,SKILL_INVIS);
        War3_SetBuff(victim,fInvisibilitySkill,thisRaceID,InvisibilityAlpha[skilllevel]);
    }
    else{
        War3_SetBuff(victim,fInvisibilitySkill,thisRaceID,1.0);
    }
}



public OnWar3EventSpawn(client)
{
    new race=War3_GetRace(client);
    if(race==thisRaceID)
    {
        War3_SetMaxHP(client,War3_GetMaxHP(client)-60);
        ActivateSkills(client);
    }
}
   

   
public PlayerJumpEvent(Handle:event,const String:name[],bool:dontBroadcast)
{
    new client=GetClientOfUserId(GetEventInt(event,"userid"));
    if(War3_GetRace(client)==thisRaceID){
        new skilllevel=War3_GetSkillLevel(client,thisRaceID,SKILL_LONGJUMP);
        if(skilllevel>0){
            new Float:velocity[3]={0.0,0.0,0.0};
            velocity[0]= GetEntDataFloat(client,m_vecVelocity_0);
            velocity[1]= GetEntDataFloat(client,m_vecVelocity_1);
            velocity[0]*=SkillLongJump[skilllevel]*0.25;
            velocity[1]*=SkillLongJump[skilllevel]*0.25;
            SetEntDataVector(client,m_vecBaseVelocity,velocity,true);
        }
    }
}


Вот эту модель http://webfile.ru/5354310
Logged

Frenzzy
Moderator
Full Member
*****
Posts: 217


337905984 frenzzy@live.ru
View Profile WWW
« Reply #1 on: May 30, 2011, 06:57:15 AM »

// В начале файла объявляем глобальную строковую переменную, в которой указываем путь к главному (.MDL) файлу модели
new String:RaceModel[PLATFORM_MAX_PATH] = "models/player/techknow/tmnt/ninja.mdl";

// При загрузке карты скачиваем все необходимые файлы клиенту
public OnMapStart()
{
    
// Файлы можно скачивать только при загрузке карты, не путать с OnPluginStart()
    
W3AddFile("materials/models/player/techknow/tmnt/ninja.vmt");
    
W3AddFile("materials/models/player/techknow/tmnt/ninja.vtf");
    
W3AddFile("materials/models/player/techknow/tmnt/ninja_n.vtf");
    
W3AddFile("models/player/techknow/tmnt/ninja.dx80.vtx");
    
W3AddFile("models/player/techknow/tmnt/ninja.dx90.vtx");
    
W3AddFile("models/player/techknow/tmnt/ninja.phy");
    
W3AddFile("models/player/techknow/tmnt/ninja.sw.vtx");
    
W3AddFile("models/player/techknow/tmnt/ninja.vvd");

    
// Не забываем про главный файл модели (без этой строчки моделька точно работать не будет)
    
W3AddModel(RaceModel);
}

// Когда игрок выбирает нашу расу, устанавливаем ему новую модель
public OnRaceChanged(client, oldrace, newrace)
{
    if (
newrace == thisRaceID)
    {
        
// Если игрок в игре и живой
        
if (ValidPlayer(client, true))
        {
            
// На всякий случай проверим, загружена ли наша моделька на сервере, а то сервер может падать :о)
            
if (IsModelPrecached(RaceModel))
            {
                
// Устанавливаем игроку нашу модель
                
SetEntityModel(client, RaceModel);
            }
        }
    }
}

// Каждый раз, когда игрок возрождается, устанавливаем ему новую модель
public OnWar3EventSpawn(client)
{
    if (
War3_GetRace(client) == thisRaceID)
    {
        
// На всякий случай проверим, загружена ли наша моделька на сервере, а то сервер может падать :о)
        
if (IsModelPrecached(RaceModel))
        {
            
// Устанавливаем игроку нашу модель
            
SetEntityModel(client, RaceModel);
        }
    }
}
« Last Edit: June 06, 2011, 06:26:03 PM by Frenzzy » Logged

O_o
Ownz
Developer
Administrator
Hero Member
*****
Posts: 2045



View Profile WWW Email
« Reply #2 on: May 30, 2011, 08:09:37 AM »

check for alive
Logged

DarkEnergy
venom123
Newbie
*
Posts: 9


View Profile Email
« Reply #3 on: May 30, 2011, 11:15:29 AM »

не получается можете сделать на этой расе на примере чтоб понятнее было?
и еще как можно обновлять расы?
Logged

venom123
Newbie
*
Posts: 9


View Profile Email
« Reply #4 on: May 31, 2011, 12:09:11 AM »

Спасибо большое все получилось Cheesy
Logged

venom123
Newbie
*
Posts: 9


View Profile Email
« Reply #5 on: May 31, 2011, 12:11:57 AM »

и еще помогите сделать так чтоб за разные команды были разные скины
или хотя бы разного цвета)
Logged

Essential
Newbie
*
Posts: 26


View Profile Email
« Reply #6 on: June 03, 2011, 02:35:55 AM »

а возможно ли приделать модельку машины к расе? вместо игрока будет ездить машинка?
Logged
Frenzzy
Moderator
Full Member
*****
Posts: 217


337905984 frenzzy@live.ru
View Profile WWW
« Reply #7 on: June 06, 2011, 05:56:34 PM »

и еще помогите сделать так чтоб за разные команды были разные скины
или хотя бы разного цвета)

if (GetClientTeam(client) == TEAM_T)
{
    
// Здесь можно установить модельку или цвет для Террористов
}
else
{
    
// Здесь можно установить модельку или цвет для Контер-Террористов
}

а возможно ли приделать модельку машины к расе? вместо игрока будет ездить машинка?

можно
Logged

O_o
Essential
Newbie
*
Posts: 26


View Profile Email
« Reply #8 on: June 12, 2011, 01:54:42 PM »

Frenzzy можешь написать, как сделать, чтоб в начале каждого раунда раса воспроизводила  какие-нибудь  звуки (  рев, визг, слова )
Logged
Frenzzy
Moderator
Full Member
*****
Posts: 217


337905984 frenzzy@live.ru
View Profile WWW
« Reply #9 on: June 12, 2011, 10:12:53 PM »

// В начале файла объявляем глобальную строковую переменную, в которой указываем путь к нашему звуку
new String:SpawnSound[PLATFORM_MAX_PATH] = "war3source/zombiesch/spawn.mp3";
// Или так:
// #define RACE_SPAWN_SOUND "war3source/zombiesch/spawn.mp3"

// При загрузке карты скачиваем все необходимые звуки клиенту
public OnMapStart()
{
    
W3AddSound(SpawnSound);
}

// При возрождении игрока
public OnWar3EventSpawn(client)
{
    
// Если у него наша раса
    
if (War3_GetRace(client) == thisRaceID)
    {
        
// Воспроизводим рев, визг, слова
        
EmitSoundToAll(SpawnSound, client);
    }
}
Logged

O_o
Essential
Newbie
*
Posts: 26


View Profile Email
« Reply #10 on: June 13, 2011, 04:24:03 AM »

первый вариант через String попробовал и не вышло
а через define надо писать "W3AddSound(SpawnSound);" ? если да, то что в скобках?  т.к.  spawnsound компилятор не признает
Logged
Frenzzy
Moderator
Full Member
*****
Posts: 217


337905984 frenzzy@live.ru
View Profile WWW
« Reply #11 on: June 13, 2011, 06:10:27 AM »

В скобках путь к файлу или название переменной которая содержит этот путь к файлу.
Logged

O_o
Schmarotzer
Full Member
***
Posts: 189


Ich schmarotze dich!

258631507
View Profile WWW
« Reply #12 on: June 13, 2011, 12:13:03 PM »

Frenzzy, а напиши нам как увеличить скорость бега?
Logged

Welcome to my server
Essential
Newbie
*
Posts: 26


View Profile Email
« Reply #13 on: June 24, 2011, 06:50:10 AM »

Frenzzy, можно ли модельку мустанга отсюда ( http://s-low.info/forum/viewtopic.php?f=35&t=999 ) поставить на игрока?
Logged
Arturius
Moderator
Full Member
*****
Posts: 155



View Profile Email
« Reply #14 on: December 02, 2011, 03:09:07 AM »

Помогите с таким вопросом. У расы Headcrab используются HL2 модели headcrab.mdl и headcrabblack.mdl. Но у многих non-steam клиентов этих моделей нет и вместо них бегают ERROR-ы. Как правильно прописать, чтобы клиенту скачивались недостающие модели, которые находятся в папке hl2 сервера или хотя бы отображались?
Logged
Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #15 on: December 02, 2011, 04:29:36 AM »

Помогите с таким вопросом. У расы Headcrab используются HL2 модели headcrab.mdl и headcrabblack.mdl. Но у многих non-steam клиентов этих моделей нет и вместо них бегают ERROR-ы. Как правильно прописать, чтобы клиенту скачивались недостающие модели, которые находятся в папке hl2 сервера или хотя бы отображались?

А нельзя сделать как обычную закачку моделей ? В исходнике расы они не скачиваются, они одеваются на клиента.
Logged
alex0310
Full Member
***
Posts: 170



View Profile
« Reply #16 on: December 02, 2011, 05:11:03 AM »

Помогите с таким вопросом. У расы Headcrab используются HL2 модели headcrab.mdl и headcrabblack.mdl. Но у многих non-steam клиентов этих моделей нет и вместо них бегают ERROR-ы. Как правильно прописать, чтобы клиенту скачивались недостающие модели, которые находятся в папке hl2 сервера или хотя бы отображались?
К чему, изобретать велосипед, каждый может позаботиться о себе сам, качнув Демо-версию, я правда не проверял, но наверняка там будет всё необходимое... 
Steam Магазин
Logged
Divix
Sr. Member
****
Posts: 280


View Profile Email
« Reply #17 on: December 02, 2011, 05:21:23 AM »

Помогите с таким вопросом. У расы Headcrab используются HL2 модели headcrab.mdl и headcrabblack.mdl. Но у многих non-steam клиентов этих моделей нет и вместо них бегают ERROR-ы. Как правильно прописать, чтобы клиенту скачивались недостающие модели, которые находятся в папке hl2 сервера или хотя бы отображались?
К чему, изобретать велосипед, каждый может позаботиться о себе сам, качнув Демо-версию, я правда не проверял, но наверняка там будет всё необходимое... 
Steam Магазин

ИМХО Говоря так каждому но-стимовцу сервер теряет онлайн... Мало кому захочется качать демо-версию ради того, чтобы поиграть на каком-то неизвестном сервере... ну или я бы не стал по крайне мере.
Logged
alex0310
Full Member
***
Posts: 170



View Profile
« Reply #18 on: December 02, 2011, 06:09:08 AM »


ИМХО Говоря так каждому но-стимовцу сервер теряет онлайн... Мало кому захочется качать демо-версию ради того, чтобы поиграть на каком-то неизвестном сервере... ну или я бы не стал по крайне мере.
Я за это не "парюсь"))), а вообще можно использовать:
Code:
AddFileToDownloadsTable("путь/к/файлу/файл.###"); 
Но, у мое мнение не изменилось, можно из-за того, что сервер перегружен моделями и звуками, потерять гораздо больше)))
Поэтому, во всем нужна мера...  Shocked
Logged
Bazinga
Newbie
*
Posts: 27


View Profile Email
« Reply #19 on: December 02, 2011, 06:22:48 AM »

Поставьте на сервер обычный плагин который скачивает клиенту необходимые файлы ( http://forums.alliedmods.net/showthread.php?t=69005 ) Пути прописываются в файле downloads.ini и всё что там прописано будет качаться клиенту
Logged
Arturius
Moderator
Full Member
*****
Posts: 155



View Profile Email
« Reply #20 on: December 02, 2011, 09:28:21 AM »

а вообще можно использовать:
Code:
AddFileToDownloadsTable("путь/к/файлу/файл.###"); 
При таком варианте выдаётся, что файла не существует. Хотя PrecacheModel("путь/к/файлу/файл.###") проходит нормально.
Logged
alex0310
Full Member
***
Posts: 170



View Profile
« Reply #21 on: December 02, 2011, 10:02:35 AM »

а вообще можно использовать:
Code:
AddFileToDownloadsTable("путь/к/файлу/файл.###"); 
При таком варианте выдаётся, что файла не существует. Хотя PrecacheModel("путь/к/файлу/файл.###") проходит нормально.
Правильно, папка cstrike/ корневая, нужно поместить файлы моделей в папки cstrike/materials/далее и cstrike/models/player/далее и тогда все найдется...
Logged
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2009, Simple Machines LLC Valid XHTML 1.0! Valid CSS!