08/08/2018, 11:54 PM
Buenas, tengo un problema descargue el zombie plague 4.3 hclass e intente adaptar el clawmodel(knife) a la clases humanas etc, lo adapte y compile sin ningun error ni warning nada, cuando entre al cs, entro en modo normal no en zp, me tira los siguente logs en consola
Este es la linea del error
Igual dejo el sma si alguien me puede ayudar tambien queria saber como adaptar un p_knife gracias!
Código:
L 08/08/2018 - 23:43:09: -------- Mapchange to de_dust2 --------
L 08/08/2018 - 23:43:10: Invalid cellvector handle provided (119:0:0)
L 08/08/2018 - 23:43:10: [AMXX] Displaying debug trace (plugin "zombie_plague40.amxx")
L 08/08/2018 - 23:43:10: [AMXX] Run time error 10: native error (native "ArrayGetString")
L 08/08/2018 - 23:43:10: [AMXX] [0] zombie_plague40.sma::native_register_human_class (line 10126)
L 08/08/2018 - 23:43:10: Unhandled dynamic native error
L 08/08/2018 - 23:43:10: [AMXX] Displaying debug trace (plugin "zp_hclasses40.amxx")
L 08/08/2018 - 23:43:10: [AMXX] Run time error 10: native error (native "zp_register_human_class")
L 08/08/2018 - 23:43:10: [AMXX] [0] zp_hclasses40.sma::plugin_precache (line 53)
Visibility Table file (pvi) exists and is newer than waypoint file (pwf).
Loading & decompressing Visibility Table
Visibility Table loaded from File...
Loading & decompressing Experience Data
Experience Data loaded from File...
[AMXX] Loaded 1 admin from file
L 08/08/2018 - 23:43:10: [AMXX] Plugin ("zombie_plague40.amxx") is setting itself as failed.
L 08/08/2018 - 23:43:10: [AMXX] Plugin says: No human classes loaded!
L 08/08/2018 - 23:43:10: [AMXX] Displaying debug trace (plugin "zombie_plague40.amxx")
L 08/08/2018 - 23:43:10: [AMXX] Run time error 1: forced exit
L 08/08/2018 - 23:43:10: [AMXX] [0] zombie_plague40.sma::plugin_init (line 1165)
Este es la linea del error
Código PHP:
// Native: zp_register_human_class
public native_register_human_class(const name[], const info[], const model[], const clawmodel[], hp, speed, Float:gravity)
{
// Arrays not yet initialized
if (!g_arrays_created)
return -1;
// Strings passed byref
param_convert(1)
param_convert(2)
param_convert(3)
// Add the class
ArrayPushString(g_hclass_name, name)
ArrayPushString(g_hclass_info, info)
// Using same human models for all classes?
if (g_same_models_for_all)
{
ArrayPushCell(g_hclass_modelsstart, 0)
ArrayPushCell(g_hclass_modelsend, ArraySize(g_hclass_model))
}
else
{
ArrayPushCell(g_hclass_modelsstart, ArraySize(g_hclass_model))
ArrayPushString(g_hclass_model, model)
ArrayPushCell(g_hclass_modelsend, ArraySize(g_hclass_model))
ArrayPushCell(g_hclass_modelindex, -1)
}
ArrayPushString(g_hclass_clawmodel, clawmodel)
ArrayPushCell(g_hclass_hp, hp)
ArrayPushCell(g_hclass_spd, speed)
ArrayPushCell(g_hclass_grav, gravity)
// Set temporary new class flag
ArrayPushCell(g_hclass_new, 1)
// Override zombie classes data with our customizations
new i, k, buffer[32], Float:buffer2, nummodels_custom, nummodels_default, prec_mdl[100], size = ArraySize(g_hclass2_realname)
for (i = 0; i < size; i++)
{
ArrayGetString(g_hclass2_realname, i, buffer, charsmax(buffer))
// Check if this is the intended class to override
if (!equal(name, buffer))
continue;
// Remove new class flag
ArraySetCell(g_hclass_new, g_hclass_i, 0)
// Replace caption
ArrayGetString(g_hclass2_name, i, buffer, charsmax(buffer))
ArraySetString(g_hclass_name, g_hclass_i, buffer)
// Replace info
ArrayGetString(g_hclass2_info, i, buffer, charsmax(buffer))
ArraySetString(g_hclass_info, g_hclass_i, buffer)
// Replace models, unless using same models for all classes
if (!g_same_models_for_all)
{
nummodels_custom = ArrayGetCell(g_hclass2_modelsend, i) - ArrayGetCell(g_hclass2_modelsstart, i)
nummodels_default = ArrayGetCell(g_hclass_modelsend, g_hclass_i) - ArrayGetCell(g_hclass_modelsstart, g_hclass_i)
// Replace each player model and model index
for (k = 0; k < min(nummodels_custom, nummodels_default); k++)
{
ArrayGetString(g_hclass2_playermodel, ArrayGetCell(g_hclass2_modelsstart, i) + k, buffer, charsmax(buffer))
ArraySetString(g_hclass_model, ArrayGetCell(g_hclass_modelsstart, g_hclass_i) + k, buffer)
// Precache player model and replace its modelindex with the real one
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", buffer, buffer)
ArraySetCell(g_hclass_modelindex, ArrayGetCell(g_hclass_modelsstart, g_hclass_i) + k, engfunc(EngFunc_PrecacheModel, prec_mdl))
if (g_force_consistency == 1) force_unmodified(force_model_samebounds, {0,0,0}, {0,0,0}, prec_mdl)
if (g_force_consistency == 2) force_unmodified(force_exactfile, {0,0,0}, {0,0,0}, prec_mdl)
}
// We have more custom models than what we can accommodate,
// Let's make some space...
if (nummodels_custom > nummodels_default)
{
for (k = 0; k < min(nummodels_custom, nummodels_default); k++)
{
ArrayGetString(g_hclass2_playermodel, ArrayGetCell(g_hclass2_modelsstart, i) + k, buffer, charsmax(buffer))
ArraySetString(g_hclass_model, ArrayGetCell(g_hclass_modelsstart, g_hclass_i) + k, buffer)
// Precache player model and replace its modelindex with the real one
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", buffer, buffer)
ArraySetCell(g_hclass_modelindex, ArrayGetCell(g_hclass_modelsstart, g_hclass_i) + k, engfunc(EngFunc_PrecacheModel, prec_mdl))
if (g_force_consistency == 1) force_unmodified(force_model_samebounds, {0,0,0}, {0,0,0}, prec_mdl)
if (g_force_consistency == 2) force_unmodified(force_exactfile, {0,0,0}, {0,0,0}, prec_mdl)
}
// Fix models end index for this class
ArraySetCell(g_hclass_modelsend, g_hclass_i, ArrayGetCell(g_hclass_modelsend, g_hclass_i) + (nummodels_custom - nummodels_default))
}
/* --- Not needed since classes can't have more than 1 default model for now ---
// We have less custom models than what this class has by default,
// Get rid of those extra entries...
if (nummodels_custom < nummodels_default)
{
for (k = nummodels_custom; k < nummodels_default; k++)
{
ArrayDeleteItem(g_hclass_playermodel, ArrayGetCell(g_hclass_modelsstart, g_hclass_i) + nummodels_custom)
}
// Fix models end index for this class
ArraySetCell(g_hclass_modelsend, g_hclass_i, ArrayGetCell(g_hclass_modelsend, g_hclass_i) - (nummodels_default - nummodels_custom))
}
*/
}
// Replace clawmodel
ArrayGetString(g_hclass2_clawmodel, i, buffer, charsmax(buffer))
ArraySetString(g_hclass_clawmodel, g_hclass_i, buffer)
// Precache clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/zombie_plague/%s", buffer)
engfunc(EngFunc_PrecacheModel, prec_mdl)
// Replace health
buffer[0] = ArrayGetCell(g_hclass2_hp, i)
ArraySetCell(g_hclass_hp, g_hclass_i, buffer[0])
// Replace speed
buffer[0] = ArrayGetCell(g_hclass2_spd, i)
ArraySetCell(g_hclass_spd, g_hclass_i, buffer[0])
// Replace gravity
buffer2 = Float:ArrayGetCell(g_hclass2_grav, i)
ArraySetCell(g_hclass_grav, g_hclass_i, buffer2)
}
// If class was not overriden with customization data
if (ArrayGetCell(g_hclass_new, g_hclass_i))
{
// If not using same models for all classes
if (!g_same_models_for_all)
{
// Precache default class model and replace modelindex with the real one
formatex(prec_mdl, charsmax(prec_mdl), "models/player/%s/%s.mdl", model, model)
ArraySetCell(g_hclass_modelindex, ArrayGetCell(g_hclass_modelsstart, g_hclass_i), engfunc(EngFunc_PrecacheModel, prec_mdl))
if (g_force_consistency == 1) force_unmodified(force_model_samebounds, {0,0,0}, {0,0,0}, prec_mdl)
if (g_force_consistency == 2) force_unmodified(force_exactfile, {0,0,0}, {0,0,0}, prec_mdl)
// Precache modelT.mdl files too
copy(prec_mdl[strlen(prec_mdl)-4], charsmax(prec_mdl) - (strlen(prec_mdl)-4), "T.mdl")
if (file_exists(prec_mdl)) engfunc(EngFunc_PrecacheModel, prec_mdl)
}
// Precache default clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/zombie_plague/%s", clawmodel)
engfunc(EngFunc_PrecacheModel, prec_mdl)
}
// Increase registered classes counter
g_hclass_i++
// Return id under which we registered the class
return g_hclass_i-1;
}
Código PHP:
// Replace clawmodel
ArrayGetString(g_hclass2_clawmodel, i, buffer, charsmax(buffer))
ArraySetString(g_hclass_clawmodel, g_hclass_i, buffer)
// Precache clawmodel
formatex(prec_mdl, charsmax(prec_mdl), "models/zombie_plague/%s", buffer)
engfunc(EngFunc_PrecacheModel, prec_mdl)