Member
|
03-21-2017
, 17:41
Help with diablo2 compile errors
|
#1
|
Hey..
Can any one help me with this one
i try to make skill that shoots a ball that heal
Natives:
PHP Code:
// Diablo II LoD Include File //
#if defined _diablo2LOD_included
#endinput
#endif
#define _diablo2LOD_included
#define MAX_P_SKILLS 20
// Gets the max skills are loaded
native MAX_SKILLS_ACTIVE();
// Gets the max items are loaded
native MAX_ITEMS_ACTIVE();
// Hero class values
enum
{
HUNTER = 0,
ASSASSIN,
WARLOCK,
WARRIOR,
ROGUE,
DRUID,
MAGE
}
// Log type values
enum
{
UNLOGGED = 0,
LOGGED
}
// Display value, while selecting skill 'E' button.
enum
{
NOT_DISPLAY = 0,
DISPLAY
}
// Item types
enum
{
TYPE_GLOVES = 0,
TYPE_BOOTS,
TYPE_BELT,
TYPE_ARMOR,
TYPE_HELM,
TYPE_SHIELD,
TYPE_WEAPON,
TYPE_RING,
TYPE_AMULET,
TYPE_BOLTS
}
// Called when you pressed E button and selected the skill.
forward d2_skill_selected(id, skill_id);
// Called when you fired a skill, bind t +skills.
forward d2_skill_fired(id);
// Called when player gets damaged, 1-st parameter is victim, 2-nd is attacker, 3-rd is Array parameter means damage done.
forward d2_takedamage(victim, attacker, Float:iDamage[1]);
// Called when player gets damaged by skill, 1-st parameter is victim, 2-nd is attacker, 3-rd is Array parameter means damage done.
forward d2_skill_takedamage(victim, attacker, Float:iDamage[1]);
// Called when player gets damaged by weapon with poison, 1-st parameter is victim, 2-nd is attacker, 3-rd is Array parameter means damage done.
forward d2_dagger_poisondamage(victim, attacker, Float:iDamage[1]);
// Called when player gets damaged by RANGED attack, 1-st parameter is victim, 2-nd is attacker, 3-rd is Array parameter means damage done.
forward d2_ranged_takedamage(victim, attacker, Float:iDamage[1]);
// Called when player successfully fires arrow, 1-st parameter is playerid, 2-nd is entityid.
forward d2_ranged_actshoot(id, entity);
// Called when the player is logged/unlogged.
forward d2_logged(id, log_type);
// Gets the player's current speed.
native Float:get_current_speed(id);
// if is player logged/unlogged.
native get_player_logged(id);
// Gets player's max health.
native get_p_maxhealth(id);
// Sets player's max health.
native set_p_maxhealth(id, value);
// Sets player xp with X value.
native set_p_xp(id, value);
// Gets player xp.
native get_p_xp(id);
// Gets player current hero.
native get_p_hero(id);
// Gets player level.
native get_p_level(id);
// Sets player current mana.
native set_p_mana(id, value);
// Gets player current mana.
native get_p_mana(id);
// Gets player vitality.
native get_p_vitality(id);
// Sets player vitality.
native set_p_vitality(id, value);
// Sets player gold.
native set_p_gold(id, value);
// Sets player inventory gold.
native set_p_gold_inventory(id, value);
// Gets player gold.
native get_p_gold(id);
// Gets player inventory gold.
native get_p_gold_inventory(id);
// Gets player skill's value.
native get_p_skill(id, skill_id);
// Resets player model to custom.
native reset_p_model(id);
// Gets player's current item count.
native get_p_item_count(id, item_id);
// If is player wear item returns true.
native get_p_item_is_worn(id, item_id);
// Gets if player wears any item with specified type
native bool:get_p_item_wear_type(id, type);
// Gets if player wears any item with specified data type
native bool:get_p_item_data(id, data);
// Gets if player is in safe zone ( Near Akara, Charsi, Inventory ).
native bool:get_p_in_safezone(id);
// Gets if is player protected, if spawn protection time passed.
native bool:is_p_protected(id);
// Checks if is a freezetime.
native is_freezetime();
// Checks if is player near monster
native bool:IsPlayerNearByMonster(id);
// Damages a player, 1-st parameter is victim, 2-nd is attacker, 3-rd is damage , 4-th is weapon type string.
native dmg_kill_player(id, attacker, Float:damage, weaponDescription[])
// Drops coins from give id/victim with specified classname and gold value stored in entity.
native drop_coins(victim, classname[], goldvalue);
// Sets user model.
native set_user_model(id, const model[]);
stock find_itemplugin()
{
for(new i = 0; i < get_pluginsnum(); ++i)
{
new temp[2], name[64]
get_plugin(i, name, 63, temp, 1, temp, 1, temp, 1, temp, 1)
if(equali(name, "diablo2LOD.amxx"))
{
return i;
}
}
return -1;
}
stock find_itemindex()
{
new temp[2], name[64], pluginname[64]
get_plugin(-1, pluginname, 63, temp, 1, temp, 1, temp, 1, temp, 1)
for (new i = 0; i < get_pluginsnum(); ++i)
{
get_plugin(i, name, 63, temp, 1, temp, 1, temp, 1, temp, 1)
if(equal(name, pluginname))
{
return i
}
}
return -1
}
stock register_d2_skill(skill_name[], skill_desc[], skill_hero, skill_level, skill_display)
{
new SkillId = find_itemindex()
new SkillPlugin = find_itemplugin()
new SkillRegFunc = get_func_id("register_skill", SkillPlugin)
new temp = callfunc_begin_i(SkillRegFunc, SkillPlugin)
if(temp == -1 || temp == -2)
{
log_amx("Plugin not found or function is not executable!")
return PLUGIN_HANDLED;
}
callfunc_push_int(SkillId)
callfunc_push_str(skill_name)
callfunc_push_str(skill_desc)
callfunc_push_int(skill_hero)
callfunc_push_int(skill_level)
callfunc_push_int(skill_display)
temp = callfunc_end()
if(temp == -1 || temp == -2)
{
return PLUGIN_HANDLED;
}
return temp;
}
stock client_printcolor(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg,190,input,3);
replace_all(msg,190,"/g","^4");// green txt
replace_all(msg,190,"/y","^1");// orange txt
replace_all(msg,190,"/ctr","^3");// team txt
if (id) players[0] = id;
else get_players(players,count,"ch");
for (new i=0;i<count;i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
Script:
PHP Code:
#include <amxmodx>
#include <d2lod>
#include <fakemeta>
#include <engine>
new PLUGIN_NAME[] = "Heal Ball"
new PLUGIN_AUTHOR[] = "AkkaStyle"
new PLUGIN_VERSION[] = "1.0"
new Skill_Level = 12;
new const SorcFireCast[] = "d2lod/firecast.wav";
new const OnPFireSpr[] = "sprites/xfire2.spr";
new const FireCast[] = "sprites/rjet1.spr";
new const g_SpriteExplode[] = "sprites/explosion1.spr";
new const SorcaManaFireBall[MAX_P_SKILLS] = //
{
5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 14, 15, 15, 15, 15, 16, 17, 18, 19
};
new const Float:FireBallDamage[MAX_P_SKILLS] = //
{
10.0, 20.0, 25.0, 30.0, 35.0, 40.0, 50.0, 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 125.0, 130.0, 140.0, 150.0, 155.0, 160.0
};
new g_SkillId;
new g_iCurSkill[33];
new Float:g_LastPressedSkill[33];
new g_spriteBall;
new g_iMaxPlayers;
public plugin_init()
{
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
g_SkillId = register_d2_skill(PLUGIN_NAME, "Throws a fire flying bolt", MAGE, Skill_Level, DISPLAY)
register_forward(FM_Touch, "Entity_Touched");
g_iMaxPlayers = get_maxplayers();
}
public plugin_precache()
{
precache_sound( SorcFireCast );
precache_model( OnPFireSpr );
precache_model( FireCast );
g_spriteBall = precache_model( g_SpriteExplode );
}
public d2_skill_selected(id, skill_id)
{
g_iCurSkill[id] = skill_id;
}
public d2_skill_fired(id)
{
if ( g_iCurSkill[id] == g_SkillId )
{
static Float:cdown;
cdown = 1.0;
if (get_gametime() - g_LastPressedSkill[id] <= cdown)
{
return PLUGIN_HANDLED;
}
else if ( get_gametime() - g_LastPressedSkill[id] >= cdown )
{
g_LastPressedSkill[id] = get_gametime()
}
if ( get_p_skill( id, g_SkillId ) > 0 && get_p_mana(id) >= SorcaManaFireBall[ get_p_skill( id, g_SkillId ) - 1 ] )
{
emit_sound(id, CHAN_ITEM, SorcFireCast, 1.0, ATTN_NORM, 0, PITCH_NORM);
set_p_mana( id, get_p_mana(id) - SorcaManaFireBall[ get_p_skill( id, g_SkillId ) - 1 ]);
Set_Sprite_FireBolt(id, FireCast, 50.0, 0.7, "FireBall");
Set_Sprite_Task(id, OnPFireSpr, 2.7, 1, 0.8, "Morph");
}
}
return PLUGIN_CONTINUE;
}
public Entity_Touched(ent, victim)
{
if ( !pev_valid(ent) )
return;
new classname[32]
pev( ent, pev_classname, classname, 31)
new attacker = entity_get_edict(ent, EV_ENT_owner);
if(equal(classname,"FireBall"))
{
new Float: Torigin[3], Float: Distance, Float: Damage;
new Float: Torigin[3], Float: Distance, MaxHealth;
new Float:fOrigin[3], iOrigin[3];
entity_get_vector( ent, EV_VEC_origin, fOrigin)
iOrigin[0] = floatround(fOrigin[0])
iOrigin[1] = floatround(fOrigin[1])
iOrigin[2] = floatround(fOrigin[2])
message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
write_byte(TE_EXPLOSION);
engfunc( EngFunc_WriteCoord,fOrigin[0]);
engfunc( EngFunc_WriteCoord,fOrigin[1]);
engfunc( EngFunc_WriteCoord,fOrigin[2]);
write_short(g_spriteBall);
write_byte(30); // scale
write_byte(30); // framerate
write_byte(0); // flags
message_end();
for(new enemy = 1; enemy <= g_iMaxPlayers; enemy++)
{
if ( is_user_alive(enemy) )
{
entity_get_vector( enemy, EV_VEC_origin, Torigin)
Distance = get_distance_f(fOrigin, Torigin);
if ( Distance <= 1.0 && !IsPlayerNearByMonster(enemy) && !is_p_protected(enemy) && get_p_skill( attacker, g_SkillId ) > 0 )
{
MaxHealth = (((Distance / 175.0) * FireBallDamage[get_p_skill( attacker, g_SkillId ) - 1]) - FireBallDamage[get_p_skill( attacker, g_SkillId ) - 1]) * -1.0;
if( get_user_health(enemy) + MaxHealth > get_p_maxhealth(enemy))
{
set_p_maxhealth(enemy, get_p_maxhealth(enemy));
}
else
{
set_p_maxhealth(enemy, get_p_maxhealth(enemy) + MaxHealth);
}
}
}
}
set_pev( ent, pev_flags, FL_KILLME);
}
}
public d2_takedamage(victim, attacker, Float:iDamage[1])
{
}
public Set_Sprite_Task(id, const sprite[], Float:scale, istask, Float:task_time, const classname[])
{
new sprite_ent = create_entity("env_sprite")
entity_set_string(sprite_ent, EV_SZ_classname, classname)
entity_set_int(sprite_ent, EV_INT_movetype, MOVETYPE_FOLLOW)
entity_set_edict(sprite_ent, EV_ENT_aiment, id );
entity_set_model(sprite_ent, sprite)
entity_set_int( sprite_ent, EV_INT_rendermode, kRenderTransAdd)
entity_set_float( sprite_ent, EV_FL_renderamt, 200.0 )
entity_set_float( sprite_ent, EV_FL_framerate, 22.0 )
entity_set_float( sprite_ent, EV_FL_scale, scale )
entity_set_int( sprite_ent, EV_INT_spawnflags, SF_SPRITE_STARTON)
DispatchSpawn( sprite_ent )
if ( istask )
{
set_task(task_time, "End_Sprite_Task", sprite_ent);
}
}
public End_Sprite_Task(sprite_ent)
{
if ( is_valid_ent(sprite_ent) )
{
remove_entity(sprite_ent);
}
}
public Set_Sprite_FireBolt(id, const sprite[], Float:framerate, Float:scale, const classname[])
{
new sprite_ent = create_entity("env_sprite")
entity_set_string( sprite_ent, EV_SZ_classname, classname)
entity_set_model( sprite_ent, sprite);
entity_set_edict( sprite_ent, EV_ENT_owner, id)
entity_set_size( sprite_ent, Float:{-2.1, -2.1, -2.1}, Float:{2.1, 2.1, 2.1})
entity_set_int( sprite_ent, EV_INT_rendermode, kRenderTransAdd)
entity_set_float( sprite_ent, EV_FL_renderamt, 200.0 )
entity_set_float( sprite_ent, EV_FL_framerate, framerate )
entity_set_float( sprite_ent, EV_FL_scale, scale )
DispatchSpawn(sprite_ent);
entity_set_int( sprite_ent, EV_INT_spawnflags, SF_SPRITE_STARTON)
entity_set_int( sprite_ent, EV_INT_movetype, MOVETYPE_FLY)
entity_set_int( sprite_ent, EV_INT_solid, SOLID_BBOX)
new Float:fAim[3],Float:fAngles[3],Float:fOrigin[3];
velocity_by_aim(id,64,fAim)
vector_to_angle(fAim,fAngles)
entity_get_vector( id, EV_VEC_origin, fOrigin)
fOrigin[0] += fAim[0]
fOrigin[1] += fAim[1]
fOrigin[2] += fAim[2] + 25.0
entity_set_vector( sprite_ent, EV_VEC_origin, fOrigin)
entity_set_vector( sprite_ent, EV_VEC_angles, fAngles)
new Float:fVel[3]
velocity_by_aim(id, 500, fVel)
entity_set_vector( sprite_ent, EV_VEC_velocity, fVel)
}
Compile
Code:
// C:\Games\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\d.sma(101) : error 021: symbol already defined: "Torigin"
// C:\Games\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\d.sma(120) : warning 217: loose indentation
// C:\Games\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\d.sma(130) : warning 213: tag mismatch
// C:\Games\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\d.sma(144) : warning 217: loose indentation
// C:\Games\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\d.sma(145) : warning 203: symbol is never used: "Damage"
// C:\Games\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\d.sma(145) : warning 203: symbol is never used: "Distance"
// C:\Games\Counter-Strike 1.6\cstrike\addons\amxmodx\scripting\d.sma(145) : warning 204: symbol is assigned a value that is never used: "Torigin"
Last edited by Akka3223; 03-22-2017 at 01:06.
|
|