Esta guia la saque de AM.net pero le faltaba el chaleco para cada clase y simplemente dejo la guia completa como la dejaron en AM + el chaleco
AUTOR : LA BANDA
MEJORA : EVIL SPIRET
Dejo todo mas que nada por que algunos no pueden entrar en el am.net
Debajo de
Código PHP:
const MAX_ZOMBIE_CLASSSES = 20
Código PHP:
const MAX_HUMAN_CLASSSES = 20
Despues nos vamos a
Código PHP:
// For zombie class menu handlers #define ZCLASSES_STARTID g_menu_data[id][7] #define ZCLASSES_SELECTION (g_menu_data[id][7]+key)
y colocamos
Código PHP:
// For human class menu handlers #define HCLASSES_STARTID g_menu_data[id][8] #define HCLASSES_SELECTION (g_menu_data[id][8]+key)
Luego debajo de
Código PHP:
// Zombie classes const ZCLASS_NONE = -1
Colocamos
Código PHP:
// Human classes const HCLASS_NONE = -1
En player vars
Código PHP:
new g_humanclass[33] new g_humanclassnext[33]
Luego buscamos
Código PHP:
new g_menu_data[33][8] // data for various menus
Y reemplazamos el 8 por un 9
Abajo de
Código PHP:
new db_zombieclass[MAX_STATS_SAVED] // zombie class
colocamos
Código PHP:
new db_humanclass[MAX_STATS_SAVED] // human class
Debajo de
Código PHP:
// Zombie Classes vars new g_zclass_name[MAX_ZOMBIE_CLASSSES][32] // name new g_zclass_info[MAX_ZOMBIE_CLASSSES][32] // description new g_zclass_model[MAX_ZOMBIE_CLASSSES][32] // player model new g_zclass_modelindex[MAX_ZOMBIE_CLASSSES] // model index new g_zclass_clawmodel[MAX_ZOMBIE_CLASSSES][32] // claw model new g_zclass_hp[MAX_ZOMBIE_CLASSSES] // health new g_zclass_spd[MAX_ZOMBIE_CLASSSES] // speed new Float:g_zclass_grav[MAX_ZOMBIE_CLASSSES] // gravity new Float:g_zclass_kb[MAX_ZOMBIE_CLASSSES] // knockback new g_zclass_i // loaded zombie classes counter
Agregan
Código PHP:
// Human Classes vars new g_hclass_name[MAX_HUMAN_CLASSSES][32] // name new g_hclass_info[MAX_HUMAN_CLASSSES][32] // description new g_hclass_model[MAX_HUMAN_CLASSSES][32] // player model new g_hclass_modelindex[MAX_HUMAN_CLASSSES] // model index new g_hclass_clawmodel[MAX_HUMAN_CLASSSES][32] // claw model new g_hclass_hp[MAX_HUMAN_CLASSSES] // health new g_hclass_spd[MAX_HUMAN_CLASSSES] // speed new Float:g_hclass_grav[MAX_HUMAN_CLASSSES] // gravity new g_hclass_i // loaded human classes counter
luego buscar // CVAR pointers y ponen
Código PHP:
, cvar_hclasses
Debajo de
Código PHP:
// No zombie classes? if (!g_zclass_i) set_fail_state("No zombie classes loaded!")
colocan
Código PHP:
// No human classes? if (!g_hclass_i) set_fail_state("No human classes loaded!")
// 3. Zombie class if (get_pcvar_num(cvar_zclasses)) len += formatex(menu[len], sizeof menu - 1 - len, "\r3.\w %L^n", id,"MENU_ZCLASS") else len += formatex(menu[len], sizeof menu - 1 - len, "\d3. %L^n", id,"MENU_ZCLASS")
por esto
Código PHP:
// 3. Zombie class || Human class if (g_zombie[id]) len += formatex(menu[len], sizeof menu - 1 - len, "\r3.\w %L^n", id,"MENU_ZCLASS") else len += formatex(menu[len], sizeof menu - 1 - len, "\r3.\w %L^n", id,"MENU_HCLASS")
Ahora el menu , debajo del todo en
Código PHP:
// Zombie Class Menu public show_menu_zclass(id)
osea despues de la llave
Colocan
Código PHP:
// Human Class Menu public show_menu_hclass(id) { // Player disconnected if (!is_user_connected(id)) return;
// Bots pick their zombie class randomly if (is_user_bot(id)) { g_humanclassnext[id] = random_num(0, g_hclass_i - 1) return; }
static menu[400], len, class len = 0
// Title len += formatex(menu[len], sizeof menu - 1 - len, "\y%L \r[%d-%d]^n^n", id, "MENU_HCLASS_TITLE", HCLASSES_STARTID+1, min(HCLASSES_STARTID+7, g_hclass_i))
// 1-7. Class List for (class = HCLASSES_STARTID; class < min(HCLASSES_STARTID+7, g_hclass_i); class++) { if (class == g_humanclassnext[id]) len += formatex(menu[len], sizeof menu - 1 - len, "\d%d. %s %s^n", class-HCLASSES_STARTID+1, g_hclass_name[class], g_hclass_info[class]) else len += formatex(menu[len], sizeof menu - 1 - len, "\r%d.\w %s\y %s^n", class-HCLASSES_STARTID+1, g_hclass_name[class], g_hclass_info[class]) }
// 8. Back - 9. Next - 0. Exit len += formatex(menu[len], sizeof menu - 1 - len, "^n\r8.\w %L^n\r9.\w %L^n^n\r0.\w %L", id, "MENU_BACK", id, "MENU_NEXT", id, "MENU_EXIT")
show_menu(id, KEYSMENU, menu, -1, "Human Class Menu") }
Buscamos
Código PHP:
case 2: // Zombie Classes { // Zombie classes enabled? if (get_pcvar_num(cvar_zclasses)) show_menu_zclass(id) else zp_colored_print(id, "^x04[ZP]^x01 %L", id ,"CMD_NOT_ZCLASSES") }
y lo reemplazamos por
Código PHP:
case 2: // Zombie Classes || Human Classes { // Zombie classes enabled? if (g_zombie[id]) show_menu_zclass(id) else show_menu_hclass(id) }
Ahora debajo de este public
Código PHP:
// Zombie Class Menu public menu_zclass(id, key)
colocamos
Código PHP:
// Human Class Menu public menu_hclass(id, key) { // Special keys / items list exceeded if (key >= MENU_KEY_BACK || HCLASSES_SELECTION >= g_hclass_i) { switch (key) { case MENU_KEY_BACK: // back { if (HCLASSES_STARTID-7 >= 0) HCLASSES_STARTID -= 7 } case MENU_KEY_NEXT: // next { if (HCLASSES_STARTID+7 < g_hclass_i) HCLASSES_STARTID += 7 } case MENU_KEY_EXIT: // exit { return PLUGIN_HANDLED; } }
// Show extra items menu again show_menu_hclass(id) return PLUGIN_HANDLED; }
// Store selection for the next infection g_humanclassnext[id] = HCLASSES_SELECTION;
// Show selected zombie class info and stats zp_colored_print(id, "^x04[ZP]^x01 %L: %s", id, "HUMAN_SELECT", g_hclass_name[g_humanclassnext[id]]) zp_colored_print(id, "^x04[ZP]^x01 %L: %d %L: %d %L: %d", id, "HUMAN_ATTRIB1", g_hclass_hp[g_humanclassnext[id]], id, "HUMAN_ATTRIB2", g_hclass_spd[g_humanclassnext[id]], id, "HUMAN_ATTRIB3", floatround(g_hclass_grav[g_humanclassnext[id]]*800))
if (g_survivor[id]) formatex(class, sizeof class - 1, "%L", ID_SHOWHUD,"CLASS_SURVIVOR") else formatex(class, sizeof class - 1, "%L", ID_SHOWHUD,"CLASS_HUMAN") }
y reemplazan
Código PHP:
formatex(class, sizeof class - 1, "%L", ID_SHOWHUD,"CLASS_HUMAN")
por esto
Código PHP:
copy(class, sizeof class - 1, g_hclass_name[g_humanclass[id]])
Vamos al public // Last Zombie Check -check for last zombie and set its flag-
public fnCheckLastZombie()
Buscamos esto
Código PHP:
// Last human if (!g_zombie[id] && !g_survivor[id] && is_user_alive(id) && fnGetHumans() == 1) { // Reward extra hp for last human? if (!g_lasthuman[id]) fm_set_user_health(id, pev(id, pev_health)+get_pcvar_num(cvar_humanlasthp)) g_lasthuman[id] = true } else g_lasthuman[id] = false
remplazamos esto
Código PHP:
if (!g_lasthuman[id]) fm_set_user_health(id, pev(id, pev_health)+get_pcvar_num(cvar_humanlasthp))
por esto
Código PHP:
if (!g_lasthuman[id]) fm_set_user_health(id, g_hclass_hp[g_humanclass[id]]+get_pcvar_num(cvar_humanlasthp))
Buscamos esto
Código PHP:
// Native: zp_register_zombie_class
Donde cierra la llave y termina el public ponemos esto
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) { // Reached human classes limit if (g_hclass_i >= sizeof g_hclass_name) return -1;
Masa abajo // Add the class agregamos abajo de la gravedad
Código PHP:
g_hclass_armor[g_hclass_i] = armor
en // Human Classes vars agregamos
Código PHP:
new g_hclass_armor[MAX_HUMAN_CLASSSES] // armor
LISTO LA PARTE DE CODEAR
Bueno ahora solo les hace falta agregar las natives al include para crear las clases humanas desde afuera para eso abrimos nuestro zombieplague.inc
que se en cuentra dentro de la carpeta include
Agregamos estas lineas
evil creo que te comiste un par de cosas XD , hoy por ejemplo se me dio por usarla no funciono ajaj investigandoo vi el post original Xd hay cosas que aqui no esta ahora deje pero dentro de un rato sigo , te marco lo que no esta asi lo agregas xD
(10/05/2014 08:50 PM)LeiToH escribió: evil creo que te comiste un par de cosas XD , hoy por ejemplo se me dio por usarla no funciono ajaj investigandoo vi el post original Xd hay cosas que aqui no esta ahora deje pero dentro de un rato sigo , te marco lo que no esta asi lo agregas xD
No lo saque del post , por lo menos la mayoria de las cosas las saque de MI ZP ya las tenia implementadas...
Si encontras que falta algo, no dudes en decirlo.
Gracias por avisar , ya que es mucho code code code y entre C&P y poner las etiquetas y estar minimizando y maximizando el navegador y el amxmod , seguro se me paso algo por alto.
La página se hace muy larga... ponle spoilers o reduce algo
(17/04/2015 03:36 PM)Neeeeeeeeeel.- escribió: No se va a volver a conectar a internet en toda su puta vida... nadie sube porno a mi foro y vive para contarlo.
(12/05/2014 06:36 PM)Sangriento escribió: no es mejor aserlo todo adentro del sma con un enum y new const, antes de estar creando natives y estar llamando desde afuera ?
Emmm ; he visto bastante la forma que mencionas pero nunca la use.
Capas que con la forma que decis tenes que usar mas lineas (creo)
Mientras menos tengas en interno mejor ; ami gusto prefiero hacer todo lo que pueda externo.