Raised This Month: $51 Target: $400
 12% 

Simple Drop weapon


Post New Thread Reply   
 
Thread Tools Display Modes
Shouldercannon
BANNED
Join Date: Sep 2009
Location: Russia, Penza
Old 11-20-2010 , 15:28   Re: Simple Drop weapon
Reply With Quote #31

Можно выбросить всё оружие. так лучше будет.
PHP Code:
[MAX_NAME
вызывает ошибку при компиляции
error 017: undefined symbol "MAX_NAME"
пока без блока идущего после else
в кносоле появляются ошибки
Code:
L 11/20/2010 - 23:15:05: [SM] Native "SDKCall" reported: NULL not allowed
L 11/20/2010 - 23:15:05: [SM] Displaying call stack trace for plugin "test.smx":
L 11/20/2010 - 23:15:05: [SM]   [0]  Line 51, D:\Main\Counter-Strike Source Zombie Reloaded\orangebox\cstrike\addons\sourcemod\scripting\test.sp::DropWeapon()
L 11/20/2010 - 23:15:05: [SM]   [1]  Line 45, D:\Main\Counter-Strike Source Zombie Reloaded\orangebox\cstrike\addons\sourcemod\scripting\test.sp::Event_PlayerHurt()
пытаюсь выкинуть пистолет при атаке своих

Сами линии
PHP Code:
Line 51, кода нет (пустота)
Line 45stock DropWeapon(client,ent

Last edited by Shouldercannon; 11-20-2010 at 15:39.
Shouldercannon is offline
Send a message via ICQ to Shouldercannon
Leonardo
Veteran Member
Join Date: Feb 2010
Location: 90's
Old 11-20-2010 , 15:52   Re: Simple Drop weapon
Reply With Quote #32

справочные материалы доступны. все плагины с исходным кодом. в наше время даже переводчик бесплатный доступен. ну подумай хоть немного.
__________________
Leonardo is offline
FaTony
Veteran Member
Join Date: Aug 2008
Old 11-20-2010 , 16:02   Re: Simple Drop weapon
Reply With Quote #33

Тут пока код рабочий не напишешь и не разжуёшь, ничего хорошего не выйдет. Имхо, если нужно пушки из игры совсем удалить, то лучше вообще без SDKCall'ов, т.к. тут похоже никто не собирается оффсеты подправлять при каждом обновлении. Собственно, если пушка выбрасывается командой "drop" (я под css не писал), то тут тоже по большому счёту SDKCall не нужен.
__________________
FaTony is offline
Shouldercannon
BANNED
Join Date: Sep 2009
Location: Russia, Penza
Old 11-20-2010 , 16:09   Re: Simple Drop weapon
Reply With Quote #34

Разрулил (MAX_NAME - это #define MAX_NAME 64)
PHP Code:
#include <sourcemod>
#include <sdktools>

#define MAX_NAME 64

new Handle:hDrop INVALID_HANDLE;
new 
Handle:hGameConf INVALID_HANDLE;

public 
Plugin:myinfo 
{
    
name "_New Plugin_",
    
author "Unknown",
    
description "<- Description ->",
    
version "1.0",
    
url "<- URL ->"
}

public 
OnPluginStart()
{
    
HookEvent("player_hurt"Event_PlayerHurt);
    
    
hGameConf LoadGameConfigFile("ut1999_sneers");
    
StartPrepSDKCall(SDKCall_Player);
    
PrepSDKCall_SetFromConf(hGameConfSDKConf_Virtual"Weapon_Drop");
    
PrepSDKCall_AddParameter(SDKType_CBaseEntitySDKPass_Pointer);
    
PrepSDKCall_AddParameter(SDKType_VectorSDKPass_Pointer);
    
PrepSDKCall_AddParameter(SDKType_VectorSDKPass_Pointer);
    if((
hDrop EndPrepSDKCall()) == INVALID_HANDLE)
        
PrintToServer("[Debug] Weapon_Drop SDKCall not found, stupid method will be used");
}

public 
Action:Event_PlayerHurt(Handle:event, const String:name[], bool:dontBroadcast)
{
    new 
attackerid GetClientOfUserId(GetEventInt(event"attacker"));    
    new 
ent GetPlayerWeaponSlot(attackerid2); // Выбросить нож
    
DropWeapon(attackerident); // Point 2
           // Полагаю, что проверку надо сделать здесь и задействовать return. Могу ошибаться.
}

stock DropWeapon(client,ent)

    if (
hDrop != INVALID_HANDLE)
        
SDKCall(hDropclientent0,0); // Point 1
    
else
    {
        
decl String:edict[MAX_NAME];
        
GetEdictClassname(ent,edict,sizeof(edict));
        
FakeClientCommandEx(client,"use %s;drop",edict);
    }

Если оружие уже выброшено и плагин пытается выкинуть его снова то возникают ошибки (Point 1, Point 2)
Как выбросить сразу всё оружие (нож; пистолеты; основное оружие)

Last edited by Shouldercannon; 11-20-2010 at 16:26.
Shouldercannon is offline
Send a message via ICQ to Shouldercannon
Leonardo
Veteran Member
Join Date: Feb 2010
Location: 90's
Old 11-20-2010 , 17:19   Re: Simple Drop weapon
Reply With Quote #35

дюд
ставь цели заранее
если при ранении своего нужно пушку ронять
то
PHP Code:
public OnPluginStart()
    
HookEvent("player_hurt"Event_PlayerHurtEventHookMode_Pre);

public 
OnPluginEnd()
    
UnhookEvent("player_hurt"Event_PlayerHurtEventHookMode_Pre);

public 
Action:Event_PlayerHurt(Handle:hEvent, const String:sName[], bool:bDontBroadcast)
{
    new 
iAttacker GetClientOfUserId(GetEventInt(hEvent"attacker"));
    new 
iVictim GetClientOfUserId(GetEventInt(hEvent"userid"));
    if( 
iAttacker<=|| iAttacker>MaxClients || iVictim<=|| iVictim>MaxClients
        
|| !IsClientInGame(iAttacker) || !IsClientInGame(iVictim) || !IsPlayerAlive(iAttacker
        || 
GetClientTeam(iAttacker)<=|| GetClientTeam(iVictim)<=)
        return 
Plugin_Continue;
    if( 
GetClientTeam(iVictim)==GetClientTeam(iAttacker) )
        
FakeClientCommand(iAttacker"drop");
    return 
Plugin_Continue;

__________________
Leonardo is offline
Shouldercannon
BANNED
Join Date: Sep 2009
Location: Russia, Penza
Old 11-21-2010 , 02:14   Re: Simple Drop weapon
Reply With Quote #36

Реально сделаю как было раньше, а то слишком много проблем
PHP Code:
FakeClientCommand(client,"drop"); 
без FakeClientCommandEx. Пусть даже alias будет на drop, всёравно после четвёртого попадания убью игрока
Shouldercannon is offline
Send a message via ICQ to Shouldercannon
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 01:00.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode