AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   Need Help with Errors and XP-Mod (https://forums.alliedmods.net/showthread.php?t=61469)

Frozen Usp 10-01-2007 09:34

Need Help with Errors and XP-Mod
 
Hello!
I'm Making a Mod For CS 1.6.:)
It's about TFC.:)
The problem is how many people you kill you don't get Xp.:cry:
And you can't choose Class!:cry:

Please Help!:up:

Error Logs ::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::
L 09/26/2007 - 15:45:34: Function "ChooseClass" was not found
L 09/26/2007 - 15:45:34: [AMXX] Displaying debug trace (plugin "tfcmod.amxx")
L 09/26/2007 - 15:45:34: [AMXX] Run time error 19: function not found
L 09/26/2007 - 15:45:34: [AMXX] [0] tfcmod.sma::plugin_init (line 66)
::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::: ::::
But the XP error dosen't show...

Here is the code
Code:
/* MEDIC - REGENERATION AND SPEED HWGUY - HP AND AP SOLDIER - GRAVITY AND ARMOR SCOUT - SPEED AND GRAVITY MADE BY FROZEN USP! */ #include <amxmodx> #include <amxmisc> #include <cstrike> #include <fun> #include <nvault> #include <engine> #include <fakemeta> #define TASK_REGEN 999 #define CLASS_NOTHING 0 #define CLASS_SCOUT 1 #define CLASS_SOLDIER 2 #define CLASS_HWGUY 3 #define CLASS_MEDIC 4 #define MAXCLASSES 5 new PlayerClass[33] new PlayerXP[33] new PlayerLevel[33] new const CLASSES[MAXCLASSES][] = { "None", "Scout", "Soldier", "Hwguy", "Medic" } new msgtext new const LEVELS[20] = { 100, 200, 400, 800, 1600, 3200, 4000, 4500, 5000, 5300, 5900, 6800, 7600, 8500, 9000, 10000, 12000, 15000, 16000, 20000 } public plugin_init() { register_plugin("TFC Mod", "1.0", "Frozen Usp") register_cvar("sv_tfcmod", "1") register_event("DeathMsg", "DeathMsg", "b") register_cvar("XP_per_kill", "20") register_menucmd(register_menuid("menu_ChooseClass"),1023,"DoChooseClass"); register_event("ResetHUD","ResetHUD","be") register_event("ResetHUD","on_spawn","be") register_event("CurWeapon","Event_CurWeapon","be","1=1") msgtext = get_user_msgid("StatusText") register_clcmd("say /changeclass", "ChooseClass") register_clcmd("say_team /changeclass", "ChooseClass") } public on_spawn(id) {  // give the user 50 extra health if(PlayerClass[id] ==CLASS_HWGUY) set_user_health(id,200)   // and 100 points of armour + a helmet if(PlayerClass[id] == CLASS_HWGUY || PlayerClass[id] ==CLASS_SOLDIER) cs_set_user_armor(id,150,CS_ARMOR_VESTHELM)   // and reduce their gravity to half if(PlayerClass[id] == CLASS_SCOUT || PlayerClass[id] ==CLASS_SOLDIER) set_user_gravity(id,0.3)   // and in 5 seconds, call the on_regen function set_task(5.0,"on_regen",TASK_REGEN+id) } public Event_CurWeapon(id) { if(PlayerClass[id] == CLASS_SCOUT || PlayerClass[id] ==CLASS_MEDIC) { set_user_maxspeed(id,430.0) } return } public on_regen(id) { // here, we take away the constant part of the task's id ( 999 ) // and are left with just the player id // (the task id is 999 + player's id ) if ( id > TASK_REGEN ) if(PlayerClass[id] ==CLASS_MEDIC) id -= TASK_REGEN ; // don't regen dead people ! if ( !is_user_alive(id) ) return ;   // if(PlayerClass[id] ==CLASS_MEDIC)give user 5 hp if(PlayerClass[id] ==CLASS_MEDIC) set_user_health(id,get_user_health(id)+5)   // and do it again in 5 seconds if(PlayerClass[id] ==CLASS_MEDIC) set_task(5.0,"on_regen",TASK_REGEN+id) } public SaveXP(id) { new authid[32]; get_user_authid(id,authid,31); new vaultkey[64], vaultdata[64]; format(vaultkey,63,"CLASS-%s-class",authid); format(vaultdata,63,"%d",PlayerClass[id]); set_vaultdata(vaultkey,vaultdata); format(vaultkey,63,"CLASS-%s-xp",authid); format(vaultdata,63,"%d",PlayerXP[id]); set_vaultdata(vaultkey,vaultdata); format(vaultkey,63,"CLASS-%s-level",authid); format(vaultdata,63,"%d",PlayerLevel[id]); set_vaultdata(vaultkey,vaultdata); } public LoadXP(id) { new authid[32]; get_user_authid(id,authid,31); new vaultkey[64], vaultdata[64]; format(vaultkey,63,"CLASS-%s-class",authid); get_vaultdata(vaultkey,vaultdata,63); PlayerClass[id] = str_to_num(vaultdata); format(vaultkey,63,"CLASS-%s-xp",authid); get_vaultdata(vaultkey,vaultdata,63); PlayerXP[id] = str_to_num(vaultdata); format(vaultkey,63,"CLASS-%s-level",authid); get_vaultdata(vaultkey,vaultdata,63); PlayerLevel[id] = str_to_num(vaultdata); } public client_connect(id) { if(get_cvar_num("SaveXP") == 1) {   LoadXP(id) client_print(id, print_chat, "[TFC] Loaded") client_print(id, print_chat, "[TFC] You are a %s with level %s and %s XP", PlayerClass[id], PlayerLevel[id], PlayerXP[id]) } } public client_disconnect(id) { if(get_cvar_num("SaveXP") == 1) {   SaveXP(id) } } stock ChooseClass(id) { new menu[192] new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4   format(menu, 191, "TFC: Choose Class^n^n1. Scout^n2. Soldier^n3. Hwguy^n4. Medic^n^n0. Exit") show_menu(id, keys, menu, -1, "menu_ChooseClass") return PLUGIN_CONTINUE } public DoChooseClass(id, key) { if(key == 0) {   if(PlayerClass[id] == CLASS_SCOUT) {   ChooseClass(id) return PLUGIN_HANDLED } PlayerClass[id] = CLASS_SCOUT }   if(key == 1) {   if(PlayerClass[id] == CLASS_SOLDIER) {   ChooseClass(id) return PLUGIN_HANDLED }   PlayerClass[id] = CLASS_SOLDIER }   if(key == 2) {   if(PlayerClass[id] == CLASS_HWGUY) {   ChooseClass(id) return PLUGIN_HANDLED }   PlayerClass[id] = CLASS_HWGUY } if(key == 3) {   if(PlayerClass[id] == CLASS_MEDIC) { ChooseClass(id) return PLUGIN_HANDLED }   PlayerClass[id] = CLASS_MEDIC }   ShowHUD(id)   return PLUGIN_HANDLED } public ResetHUD(id) { if(PlayerClass[id] == CLASS_NOTHING) { ChooseClass(id) return PLUGIN_HANDLED }   return PLUGIN_HANDLED } public DeathMsg() { if(get_cvar_num("sv_tfcmod") == 0) { return PLUGIN_HANDLED }   new attacker = read_data(1)   if(PlayerClass[attacker] == CLASS_NOTHING) { return PLUGIN_HANDLED }   if(PlayerLevel[attacker] == 6) { return PLUGIN_HANDLED }   PlayerXP[attacker] += get_cvar_num("XP_per_kill")   if(PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) {   PlayerLevel[attacker] += 1   client_print(attacker, print_chat, "[TFC] Congratulations! You are now level %i!", PlayerLevel[attacker]) if(get_cvar_num("SaveXP") == 1) {   SaveXP(attacker) } ShowHUD(attacker) }   ShowHUD(attacker)   return PLUGIN_CONTINUE } public ShowHUD(id) { new HUD[51] format(HUD, 50, "[%s]Level: %i XP: %i", CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id]) message_begin(MSG_ONE, msgtext, {0,0,0}, id) write_byte(0) write_string(HUD) message_end() return }


purple_pixie 10-01-2007 10:45

Re: Need Help with Errors and XP-Mod
 
Try changing "stock ChooseClass" to "public ChooseClass"

A stock function is private - only your plugin may call it.
You are trying to call it from outside your plugin by using register_clcmd()

X-Script 10-01-2007 11:12

Re: Need Help with Errors and XP-Mod
 
I'm begging you to please indent and space things out correctly, that was a horrible mess. I've cleaned up the code.

One more thing:

PHP Code:

return PLUGIN_HANDLED 

is greater than
PHP Code:

return 

PHP Code:

/*
MEDIC - REGENERATION AND SPEED
HWGUY - HP AND AP
SOLDIER - GRAVITY AND ARMOR
SCOUT - SPEED AND GRAVITY
MADE BY FROZEN USP!
*/
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fun>
#include <nvault>
#include <engine>
#include <fakemeta>


#define TASK_REGEN 999
#define CLASS_NOTHING 0
#define CLASS_SCOUT 1
#define CLASS_SOLDIER 2
#define CLASS_HWGUY 3
#define CLASS_MEDIC 4

#define MAXCLASSES 5

new PlayerClass[33]
new 
PlayerXP[33]
new 
PlayerLevel[33]

new const 
CLASSES[MAXCLASSES][] = {
    
"None",
    
"Scout",
    
"Soldier",
    
"Hwguy",
    
"Medic"
}

new 
msgtext

new const LEVELS[20] = {
    
100
    
200
    
400
    
800,
    
1600,
    
3200,
    
4000,
    
4500,
    
5000,
    
5300,
    
5900,
    
6800,
    
7600,
    
8500,
    
9000,
    
10000,
    
12000,
    
15000,
    
16000,
    
20000
}

public 
plugin_init()
{
    
register_plugin("TFC Mod""1.0""Frozen Usp")
    
    
register_cvar("sv_tfcmod""1")
    
register_cvar("XP_per_kill""20")
    
    
register_clcmd("say /changeclass""ChooseClass")
    
register_clcmd("say_team /changeclass""ChooseClass")
    
    
register_event("CurWeapon","Event_CurWeapon","be","1=1")
    
register_event("DeathMsg""DeathMsg""b")
    
register_event("ResetHUD","ResetHUD","be")
    
register_event("ResetHUD","on_spawn","be")
    
    
register_menucmd(register_menuid("menu_ChooseClass"),1023,"DoChooseClass")
    
msgtext get_user_msgid("StatusText")
    
    
}

public 
on_spawn(id)
{
    
// give the user 50 extra health
    
if(PlayerClass[id] ==CLASS_HWGUY)
        
set_user_health(id,200)
    
    
// and 100 points of armour + a helmet
    
if(PlayerClass[id] == CLASS_HWGUY || PlayerClass[id] ==CLASS_SOLDIER)
        
cs_set_user_armor(id,150,CS_ARMOR_VESTHELM)
    
    
// and reduce their gravity to half
    
if(PlayerClass[id] == CLASS_SCOUT || PlayerClass[id] ==CLASS_SOLDIER)
        
set_user_gravity(id,0.3)
    
    
// and in 5 seconds, call the on_regen function
    
set_task(5.0,"on_regen",TASK_REGEN+id)
}

public 
Event_CurWeapon(id)
{
    if(
PlayerClass[id] == CLASS_SCOUT || PlayerClass[id] ==CLASS_MEDIC)
    {
        
set_user_maxspeed(id,430.0)
    }
    return


public 
on_regen(id)
{
    
// here, we take away the constant part of the task's id ( 999 )
    // and are left with just the player id
    // (the task id is 999 + player's id )
    
if ( id TASK_REGEN )
        if(
PlayerClass[id] ==CLASS_MEDIC)
        
id -= TASK_REGEN ;
    
// don't regen dead people !
    
if ( !is_user_alive(id) )
        return ;
    
    
// if(PlayerClass[id] ==CLASS_MEDIC)give user 5 hp
    
if(PlayerClass[id] ==CLASS_MEDIC)
        
set_user_health(id,get_user_health(id)+5)
    
    
// and do it again in 5 seconds
    
if(PlayerClass[id] ==CLASS_MEDIC)
        
set_task(5.0,"on_regen",TASK_REGEN+id)
}

public 
SaveXP(id)
{
    new 
authid[32]; 
    
get_user_authid(id,authid,31); 
    new 
vaultkey[64], vaultdata[64]; 
    
format(vaultkey,63,"CLASS-%s-class",authid); 
    
format(vaultdata,63,"%d",PlayerClass[id]); 
    
set_vaultdata(vaultkey,vaultdata); 
    
format(vaultkey,63,"CLASS-%s-xp",authid); 
    
format(vaultdata,63,"%d",PlayerXP[id]); 
    
set_vaultdata(vaultkey,vaultdata); 
    
format(vaultkey,63,"CLASS-%s-level",authid); 
    
format(vaultdata,63,"%d",PlayerLevel[id]); 
    
set_vaultdata(vaultkey,vaultdata);


public 
LoadXP(id)
{
    new 
authid[32]; 
    
get_user_authid(id,authid,31); 
    new 
vaultkey[64], vaultdata[64]; 
    
format(vaultkey,63,"CLASS-%s-class",authid); 
    
get_vaultdata(vaultkey,vaultdata,63); 
    
PlayerClass[id] = str_to_num(vaultdata); 
    
format(vaultkey,63,"CLASS-%s-xp",authid); 
    
get_vaultdata(vaultkey,vaultdata,63); 
    
PlayerXP[id] = str_to_num(vaultdata); 
    
format(vaultkey,63,"CLASS-%s-level",authid); 
    
get_vaultdata(vaultkey,vaultdata,63);
    
PlayerLevel[id] = str_to_num(vaultdata); 


public 
client_connect(id)
{
    if(
get_cvar_num("SaveXP") == 1) {
        
        
LoadXP(id)
        
client_print(idprint_chat"[TFC] Loaded")
        
client_print(idprint_chat"[TFC] You are a %s with level %s and %s XP"PlayerClass[id], PlayerLevel[id], PlayerXP[id])
    }
}

public 
client_disconnect(id)
{
    if(
get_cvar_num("SaveXP") == 1) {
        
        
SaveXP(id)
    }
}

public 
ChooseClass(id)
{
    new 
menu[192
    new 
keys MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4
    
    format
(menu191"TFC: Choose Class^n^n1. Scout^n2. Soldier^n3. Hwguy^n4. Medic^n^n0. Exit"
    
show_menu(idkeysmenu, -1"menu_ChooseClass"
    return 
PLUGIN_CONTINUE
}

public 
DoChooseClass(idkey)
{
    if(
key == 0) {
        
        if(
PlayerClass[id] == CLASS_SCOUT) {
            
            
ChooseClass(id
            return 
PLUGIN_HANDLED
        

        
PlayerClass[id] = CLASS_SCOUT 
    

    
    if(
key == 1) {
        
        if(
PlayerClass[id] == CLASS_SOLDIER) {
            
            
ChooseClass(id)
            return 
PLUGIN_HANDLED
        
}
        
        
PlayerClass[id] = CLASS_SOLDIER
    
}
    
    if(
key == 2) {
        
        if(
PlayerClass[id] == CLASS_HWGUY) {
            
            
ChooseClass(id)
            return 
PLUGIN_HANDLED
        
}
        
        
PlayerClass[id] = CLASS_HWGUY
    

    if(
key == 3) {
        
        if(
PlayerClass[id] == CLASS_MEDIC) {
            
ChooseClass(id)
            return 
PLUGIN_HANDLED
        
}
        
        
PlayerClass[id] = CLASS_MEDIC
    
}
    
    
ShowHUD(id)
    
    return 
PLUGIN_HANDLED
}

public 
ResetHUD(id)
{
    if(
PlayerClass[id] == CLASS_NOTHING) {
        
ChooseClass(id)
        return 
PLUGIN_HANDLED
    
}
    
    return 
PLUGIN_HANDLED
}

public 
DeathMsg()
{
    if(
get_cvar_num("sv_tfcmod") == 0) {
        return 
PLUGIN_HANDLED
    
}
    
    new 
attacker read_data(1)
    
    if(
PlayerClass[attacker] == CLASS_NOTHING) {
        return 
PLUGIN_HANDLED
    
}
    
    if(
PlayerLevel[attacker] == 6) {
        return 
PLUGIN_HANDLED
    
}
    
    
PlayerXP[attacker] += get_cvar_num("XP_per_kill"
    
    if(
PlayerXP[attacker] >= LEVELS[PlayerLevel[attacker]]) {
        
        
PlayerLevel[attacker] += 1
        
        client_print
(attackerprint_chat"[TFC] Congratulations! You are now level %i!"PlayerLevel[attacker])
        if(
get_cvar_num("SaveXP") == 1) {
            
            
SaveXP(attacker)
        }
        
ShowHUD(attacker)
    } 
    
    
ShowHUD(attacker)
    
    return 
PLUGIN_CONTINUE
}
public 
ShowHUD(id

    new 
HUD[51]
    
format(HUD50"[%s]Level: %i XP: %i"CLASSES[PlayerClass[id]], PlayerLevel[id], PlayerXP[id]) 
    
message_begin(MSG_ONEmsgtext, {0,0,0}, id
    
write_byte(0
    
write_string(HUD
    
message_end() 
    return


What in the hell is this, why do you have cstrike? you shouldn't use fakemeta and engine together.

PHP Code:

 #include <amxmodx>
 #include <amxmisc>
 #include <cstrike>
 #include <fun>
 #include <nvault>
 #include <engine>
 #include <fakemeta> 

Next, after 900 seconds it'll regenerate? :/

PHP Code:

#define TASK_REGEN 999 

Next, why is your CVAR a server command?

PHP Code:

register_cvar("sv_tfcmod""1"

should be:

PHP Code:

register_cvar("amx_tfcmod""1"

What's this?

PHP Code:

if(get_cvar_num("SaveXP") == 1) { 

Change on all:

PHP Code:

if ( get_cvar_num(sv_tfcmod) == 

instead of

PHP Code:

if(get_cvar_num("sv_tfcmod") == 0


Arkshine 10-01-2007 12:16

Re: Need Help with Errors and XP-Mod
 
Quote:

PHP Code:

return PLUGIN_HANDLED 

is greater than
PHP Code:

return 


What? O_o . You sould learn more before to say that... :shock:.
You don't have to use HANDLED all the time...

Code:
#define PLUGIN_CONTINUE     0   /* Results returned by public functions */ #define PLUGIN_HANDLED      1   /* stop other plugins */ #define PLUGIN_HANDLED_MAIN 2   /* to use in client_command(), continue all plugins but stop the command */

Quote:

What in the hell is this, why do you have cstrike?
Because it gives money... But since it uses fakemeta he could use the money offset using set_pdata_*() .

Quote:

you shouldn't use fakemeta and engine together.
Not really. But his code doesn't use any engine function. So he can remove '#include <engine>'.


Quote:

Next, after 900 seconds it'll regenerate? :/

PHP Code:

#define TASK_REGEN 999 


This define isn't for that... :| It's a random value used by the task...


Quote:

Next, why is your CVAR a server command?

PHP Code:

register_cvar("sv_tfcmod""1"

should be:

PHP Code:

register_cvar("amx_tfcmod""1"


I agree to not use sv_ prefix. But he can use other than 'amx_'.


Quote:

Change on all:

PHP Code:

if ( get_cvar_num(sv_tfcmod) == 


What?! :shock:

He should use pcvar.

So, something like :

Code:
new p_mode, p_perkill     public plugin_init() {     p_mode = register_cvar( "sv_tfcmod", "1" )     p_perkill = register_cvar( "XP_per_kill", "20" ) } myfunction() {     if( !get_pcvar_num( p_mode ) )         return;     }

X-Script 10-01-2007 12:53

Re: Need Help with Errors and XP-Mod
 
oh yeah the pcvar was my mistake it was a typo.

X-Script 10-01-2007 13:00

Re: Need Help with Errors and XP-Mod
 
He's using it for TFC not for cstrike in TFC there is no 'money defined'.

I never said you should use HANDLED all the time, but people use it way more often then just return.

Drak 10-01-2007 15:41

Re: Need Help with Errors and XP-Mod
 
Quote:

Originally Posted by X-Script
He's using it for TFC not for cstrike in TFC there is no 'money defined'.

Quote:

Originally Posted by Frozen Usp
I'm Making a Mod For CS 1.6.
It's about TFC.


X-Script 10-01-2007 15:53

Re: Need Help with Errors and XP-Mod
 
oh.

:/

fxfighter 10-01-2007 15:59

Re: Need Help with Errors and XP-Mod
 
you shuld use nvault instead of vault i did this quite fast just add/replace havent time to look for errors.
PHP Code:

#include <nvault>
 
new g_vault 
 
public plugin_init() {
 
g_vault nvault_open("VAULT")
}
public 
SaveXP(id)
{
 new 
AuthID[35]
 
get_user_authid(id,AuthID,34)
 
 new 
vaultkey[64],vaultdata[256]
 
format(vaultkey,63,"%s-CLASS",AuthID)
 
format(vaultdata,255,"%i#%i#%i#",PlayerClass[id],PlayerXP[id],PlayerLevel[id])
 
nvault_set(g_vault,vaultkey,vaultdata)
 return 
PLUGIN_HANDLED
}
public 
LoadXP(id)
{
 new 
AuthID[35]
 
get_user_authid(id,AuthID,34)
 
 new 
vaultkey[64],vaultdata[256]
 
format(vaultkey,63,"%s-CLASS",AuthID)
 
format(vaultdata,255,"%i#%i#%i#",PlayerClass[id],PlayerXP[id],PlayerLevel[id])
 
nvault_get(g_vault,vaultkey,vaultdata,255)
 
 
replace_all(vaultdata255"#"" ")
 
 new 
playerclas[32], playerxpp[32], playerlv[32]
 
 
parse(vaultdataplayerclas31playerxpp31playerlv31)
 
 
PlayerClass[id] = str_to_num(playerclas)
 
PlayerXP[id] = str_to_num(playerxpp)
 
PlayerLevel[id] = str_to_num(playerlv)
 
 return 
PLUGIN_HANDLED



X-Script 10-01-2007 17:12

Re: Need Help with Errors and XP-Mod
 
OMFG INDENT!

PHP Code:

#include <nvault>

new g_vault 

public plugin_init() {
    
g_vault nvault_open("VAULT")
}
public 
SaveXP(id)
{
    new 
AuthID[35]
    
get_user_authid(id,AuthID,34)
    
    new 
vaultkey[64],vaultdata[256]
    
format(vaultkey,63,"%s-CLASS",AuthID)
    
format(vaultdata,255,"%i#%i#%i#",PlayerClass[id],PlayerXP[id],PlayerLevel[id])
    
nvault_set(g_vault,vaultkey,vaultdata)
    return 
PLUGIN_HANDLED
}
public 
LoadXP(id)
{
    new 
AuthID[35]
    
get_user_authid(id,AuthID,34)
    
    new 
vaultkey[64],vaultdata[256]
    
format(vaultkey,63,"%s-CLASS",AuthID)
    
format(vaultdata,255,"%i#%i#%i#",PlayerClass[id],PlayerXP[id],PlayerLevel[id])
    
nvault_get(g_vault,vaultkey,vaultdata,255)
    
    
replace_all(vaultdata255"#"" ")
    
    new 
playerclas[32], playerxpp[32], playerlv[32]
    
    
parse(vaultdataplayerclas31playerxpp31playerlv31)
    
    
PlayerClass[id] = str_to_num(playerclas)
    
PlayerXP[id] = str_to_num(playerxpp)
    
PlayerLevel[id] = str_to_num(playerlv)
    
    return 
PLUGIN_HANDLED




All times are GMT -4. The time now is 16:07.

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