Raised This Month: $ Target: $400
 0% 

set_task help


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Snipa-of-Death
Junior Member
Join Date: Jul 2005
Old 05-03-2006 , 17:15   set_task help
Reply With Quote #1

I need help with the set_task function. I working on a plugin that regenerates armor for certain people until it gets to 100. The function works fine the first round but on the second round it doesnt regenerate at a steady rate.
Code:
new parm[2];
parm[0] = id;
parm[1] = 0;

set_task(2.0, "droid_repair", 50+id, parm, 2, "b");
Please help!
Snipa-of-Death is offline
Zenith77
Veteran Member
Join Date: Aug 2005
Old 05-03-2006 , 17:16  
Reply With Quote #2

show us all of your code, and use the "small" tags
__________________
Quote:
Originally Posted by phorelyph View Post
your retatred
Zenith77 is offline
Snipa-of-Death
Junior Member
Join Date: Jul 2005
Old 05-03-2006 , 17:18  
Reply With Quote #3

Code:
#include <amxmodx> #include <amxmisc> #include <fun> #include <cstrike> #define MAX_NAME_LENGTH 32 #define MAX_ID_LENGTH 32 #define MAX_VAR_LENGTH 64 #define SHORT_TERM 0 #define HEADSHOT_BONUS 15 new bool:bFreezeTime = false; new bool:changingrace[33] = false; new gmsgStatusText; new xplevel[11] = {0,100,300,600,1000,1500,2100,2800,3600,4500,5500}; new xpgiven[11] = {60,80,100,120,140,160,180,200,220,240,260}; #if SHORT_TERM new Float:xpmultiplier = 0.8; #else new Float:xpmultiplier = 0.4; #endif new p_skills[33][5]; new playerxp[33]; new p_level[33]; new racename[6][] = {"No Race", "Bounty Hunter", "Clone Trooper", "Droid", "Jedi", "Wookie"}; new race1skills[4][] = {"Armor Upgrade", "Flamethrower", "Jetpack", "Radar Scan"}; new race2skills[4] []= {"Stacked Weapons", "Ammo Restock", "", "Respawn"}; new race3skills[4][] = {"Armor Repair", "Shield", "", ""}; new race4skills[4][] = {"Speed","Heal","Mind Trick","Lightsaber"}; new race5skills[4][] = {"Strength", "Stamina", "", "Berserker"}; // Bounty Hunter Skills new p_armor_upgrade[4] = {0, 100, 150, 200}; // Droid Skills new p_armor_repair[4] = {0,1,2,4}; public plugin_init() {     gmsgStatusText = get_user_msgid("StatusText");         register_plugin("StarwarsMod", "1.0", "Snipa-of-Death");     register_menucmd(register_menuid("\ySelect Race:"),(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9),"set_race");     register_menucmd(register_menuid("\ySelect Skill:"), (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<9), "set_skill");         register_clcmd("changerace","change_race",-1,"changerace")     register_clcmd("say /changerace","say_changerace")     register_clcmd("say_team /changerace", "say_changerace")     register_srvcmd("display_race_select","display_race_select")         register_event("DeathMsg", "death", "a");     register_event("ResetHUD", "new_round", "b");     register_logevent("start_round", 2, "1=Round_Start");     register_logevent("end_round", 2, "1=Round_End")     register_logevent("end_round", 2, "1&Restart_Round_") } public plugin_precache() {     precache_sound("starwarsmod/impresive.wav"); } public droid_repair(parm[2]) {     if (p_skills[parm[0]][0] == 3 && p_skills[parm[0]][1] != 0 && is_user_alive(parm[0]) && is_user_connected(parm[0])) {         new player_armor = get_user_armor(parm[0]);                 if (player_armor < 100) {             player_armor += p_armor_repair[p_skills[parm[0]][1]];                         if (player_armor > 100) {                 player_armor = 100;             }                             set_user_armor(parm[0], player_armor);         }     } } public client_connect(id) {     if (is_user_bot(id)) {         #if !SHORT_TERM             playerxp[id] = 300;         #else         #endif     } } public say_changerace(id) {     change_race(id,1)     return PLUGIN_CONTINUE } public end_round() {     #if !SHORT_TERM         write_all();     #endif } public write_all() {     new players[32], numofplayers, id;     get_players(players, numofplayers);         for (new i=0; i<numofplayers; i++){         id = players[i];         if (p_skills[id][0]>0 && playerxp[id])             write_xp_to_file(id,"");     } } public write_xp_to_file(id,givenline[128]){     if (is_user_bot(id))         return PLUGIN_CONTINUE     new playerid[MAX_ID_LENGTH], playername[MAX_NAME_LENGTH], currentrace[2];         if (id){         get_user_name(id,playername,MAX_NAME_LENGTH-1)         format(currentrace,1,"%d",p_skills[id][0])         get_user_authid(id,playerid,MAX_ID_LENGTH-1);     }     if (id && playerxp[id] && p_skills[id][0]) {         new vaultkey[64], vaultdata[128], index[32]         format(vaultkey, 63, "StarWars_%s_%s", playerid, currentrace)         format(vaultdata, 127, "%d %d %d %d %d %d",playerxp[id],p_skills[id][0], p_skills[id][1],p_skills[id][2],p_skills[id][3],p_skills[id][4])         set_vaultdata(vaultkey,vaultdata);                                 // Prune Information Setup         format(vaultkey, 63,"StarWars_%s",playerid);         if(!vaultdata_exists(vaultkey)) {             get_vaultdata("StarWars_starwarsindex", index, 31);             format(vaultdata,127,"%d ^"%s^" %d",str_to_num(index),playername,get_systime())             set_vaultdata(vaultkey,vaultdata)             format(vaultkey,63,"StarWars_pruneindex_%d",str_to_num(index))             set_vaultdata(vaultkey,playerid)             format(index,31,"%d",(str_to_num(index)+1))             set_vaultdata("StarWars_starwarsindex",index)         } else {             get_vaultdata(vaultkey,vaultdata,127)             parse(vaultdata,index,31)             format(vaultdata,127,"%d ^"%s^" %d",str_to_num(index),playername,get_systime())             set_vaultdata(vaultkey,vaultdata)         }     }         return PLUGIN_CONTINUE } public get_xp_from_file(id,returnrace){     if (!id)         return PLUGIN_CONTINUE     new playerid[MAX_ID_LENGTH], playername[MAX_NAME_LENGTH]     new xp[8], race[2], skill1[2], skill2[2], skill3[2], skill4[2]     new racexp[5]={0,0,0,0,0}     get_user_name(id,playername,MAX_NAME_LENGTH-1)     get_user_authid(id,playerid,MAX_ID_LENGTH-1)     new vaultkey[64], vaultdata[128], currentrace[2]     format(currentrace,1,"%d",p_skills[id][0])     if(returnrace) {         for(new i=1;i < 6; i++) {             format(vaultkey, 63, "StarWars_%s_%d", playerid, i)             if (vaultdata_exists(vaultkey)) {                 get_vaultdata(vaultkey, vaultdata,127)                 parse(vaultdata,xp,7,race,1,skill1,1,skill2,1,skill3,1,skill4,1)                                 racexp[i-1] = str_to_num(xp)             } else {                 racexp[i-1] = 0             }             if (p_skills[id][0])                 racexp[p_skills[id][0]-1]=playerxp[id]                             server_cmd("display_race_select %d %d %d %d %d %d",id, racexp[0], racexp[1], racexp[2], racexp[3], racexp[4])         }     } else {         format(vaultkey, 63, "StarWars_%s_%s", playerid, currentrace)         if(vaultdata_exists(vaultkey)) {             get_vaultdata(vaultkey, vaultdata, 127)             parse(vaultdata,xp,7,race,1,skill1,1,skill2,1,skill3,1,skill4,1)             playerxp[id]=str_to_num(xp)             p_skills[id][1]=str_to_num(skill1)             p_skills[id][2]=str_to_num(skill2)             p_skills[id][3]=str_to_num(skill3)             p_skills[id][4]=str_to_num(skill4)             display_level(id)         } else {             playerxp[id]=0             p_skills[id][1]=0             p_skills[id][2]=0             p_skills[id][3]=0             p_skills[id][4]=0             display_level(id)         }     }         return PLUGIN_CONTINUE } public death() {     new killer = read_data(1);     new victim = read_data(2);     new headshot = read_data(3);         new xp;         if (!(killer == victim) && !(p_skills[killer][0] == 0)) {         xp = floatround(xpgiven[p_level[victim]]*xpmultiplier);         if (headshot) {             xp += HEADSHOT_BONUS;         }                 playerxp[killer] += xp;                 new msg[128];         format(msg, 128, "[StarwarsMod] You have killed an enemy and gained %d XP.", xp);         client_print(killer, print_chat, msg);                 display_level(killer);     } }     public display_level(id) {     if (playerxp[id]<0)         playerxp[id]=0             new oldlevel = p_level[id];     for (new i=0; i<=10; i++){         if (playerxp[id]>=xplevel[i])             p_level[id]=i;         else             break;     }         new xpstring[128];         if (p_skills[id][0] == 0) {         format (xpstring, 128, "%s XP: %d/%d", racename[p_skills[id][0]], playerxp[id], xplevel[p_level[id]+1]);     } else if (p_level[id] < 10) {         format (xpstring, 128, "%s Level: %d XP: %d/%d", racename[p_skills[id][0]], p_level[id],  playerxp[id], xplevel[p_level[id]+1]);     } else {         format (xpstring, 128, "%s XP: %d", racename[p_skills[id][0]], playerxp[id]);     }         message_begin( MSG_ONE, gmsgStatusText, {0,0,0}, id);     write_byte(0);     write_string(xpstring);     message_end();         if (p_level[id] > oldlevel && is_user_alive(id)){           // Level Gained         set_hudmessage(200, 100, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);         show_hudmessage(id,"You gained a Level");         if (file_exists("sound/starwarsmod/impresive.wav")==1)             emit_sound(id,CHAN_STATIC, "starwarsmod/impresive.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)     }         return PLUGIN_CONTINUE; } public change_race(id,saychat){     #if SHORT_TERM     select_race(id)     return PLUGIN_CONTINUE     #endif     if (is_user_alive(id) && !bFreezeTime) {         if (saychat==1){             set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 3)             show_hudmessage(id,"You can only change your race when you are dead or at the beginning of the round!")         } else {             client_cmd(id,"echo You can only change your race when you are dead or at the beginning of the round!")         }         return PLUGIN_CONTINUE     }     if ( p_skills[id][0]>=0){         #if !SHORT_TERM             if (!changingrace[id]){                 write_xp_to_file(id, "")                 changingrace[id]=true                 get_xp_from_file(id,1)             } else if (saychat==1) {                 set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 3)                 show_hudmessage(id,"You can't change race more than once per round!")             } else {                 client_cmd(id,"echo You can't change race more than once per round!")             }         #else             if (!changingrace[id]){                 select_race(id)             } else if (saychat==1) {                 set_hudmessage(200, 100, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 3)                 show_hudmessage(id,"You can't change race more than once per round!")             } else {                 client_cmd(id,"echo You can't change race more than once per round!")             }         #endif     }     if (saychat==1)         return PLUGIN_CONTINUE     return PLUGIN_HANDLED } public select_skill(id) {     new menu_msg[256];     new temp[128];         new skillsused = p_skills[id][1] + p_skills[id][2] + p_skills[id][3] + p_skills[id][4];     if (skillsused >= p_level[id]) {         client_print(id, print_chat, "[StarwarsMod] You have already used all of your skill points.");     }         format(menu_msg, 256, "\ySelect Skill:\w^n^n");         new skillcounter = 0     new skillcurrentrace[4][64]     while (skillcounter < 4){         if (p_skills[id][0] == 1){             copy(skillcurrentrace[skillcounter],63,race1skills[skillcounter])         }         else if (p_skills[id][0] == 2){             copy(skillcurrentrace[skillcounter],63,race2skills[skillcounter])         }         else if (p_skills[id][0] == 3){             copy(skillcurrentrace[skillcounter],63,race3skills[skillcounter])         }         else if (p_skills[id][0] == 4){             copy(skillcurrentrace[skillcounter],63,race4skills[skillcounter])         }         else if (p_skills[id][0] == 5){             copy(skillcurrentrace[skillcounter],63,race5skills[skillcounter])         }         skillcounter++;     }         skillcounter = 1     while (skillcounter< 4){         if (p_skills[id][skillcounter]!=3){             if (p_level[id]<=2*p_skills[id][skillcounter]){                 format(temp,127,"\d")                 add(menu_msg,255,temp)             }             format(temp,127,"^n%d. %s Level %d\w",skillcounter,skillcurrentrace[skillcounter-1],p_skills[id][skillcounter]+1)             add(menu_msg,255,temp);         }         skillcounter++;     }         if (p_skills[id][4]==0){         if (p_level[id] < 7) {             format(temp, 127, "\d");             add(menu_msg, 255, temp);         }         format(temp,127,"^n4. Ultimate: %s\w",skillcurrentrace[3]);         add(menu_msg, 255, temp);     }         new keys = (1<<9)     if (p_skills[id][1]!=3 && p_level[id]>2*p_skills[id][1] && skillsused<p_level[id])         keys |= (1<<0)     if (p_skills[id][2]!=3 && p_level[id]>2*p_skills[id][2] && skillsused<p_level[id])         keys |= (1<<1)     if (p_skills[id][3]!=3 && p_level[id]>2*p_skills[id][3] && skillsused<p_level[id])         keys |= (1<<2)     if (p_skills[id][4]==0 && p_level[id]>=6 && skillsused<p_level[id])         keys |= (1<<3)         format(temp, 127, "\w^n0. Cancel");     add(menu_msg, 255, temp);         show_menu(id, keys, menu_msg, -1); } public set_skill(id,key){     new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4]     if (key == 0 && p_skills[id][1]!=3 && p_level[id]>2*p_skills[id][1] && skillsused<p_level[id])         ++p_skills[id][1]     else if (key == 1 && p_skills[id][2]!=3 && p_level[id]>2*p_skills[id][2] && skillsused<p_level[id])         ++p_skills[id][2]     else if (key == 2 && p_skills[id][3]!=3 && p_level[id]>2*p_skills[id][3] && skillsused<p_level[id])         ++p_skills[id][3]     else if (key == 3 && p_skills[id][4]==0 && p_level[id]>=6 && skillsused<p_level[id])         p_skills[id][4]=1     else if (key == 9)         return PLUGIN_HANDLED     skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4]         if (skillsused < p_level[id])         select_skill(id)     else         display_level(id)     return PLUGIN_HANDLED } public display_race_select(){     new id, idtext[3], menu_msg[384]         new racexp1[8], racexp2[8], racexp3[8], racexp4[8], racexp5[8]     read_argv(1,idtext,2)     read_argv(2,racexp1,7)     read_argv(3,racexp2,7)     read_argv(4,racexp3,7)     read_argv(5,racexp4,7)     read_argv(6,racexp5,7)     id = str_to_num(idtext)     format(menu_msg,255,"\ySelect Race:\RExperience^n^n\w1. %s\y\R%s^n\w2. %s\y\R%s^n\w3. %s\y\R%s^n\w4. %s\y\R%s^n\w5. %s\y\R%s^n^n\w6. Auto-select", racename[1], racexp1, racename[2], racexp2, racename[3], racexp3, racename[4], racexp4, racename[5], racexp5)        show_menu(id,(1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5),menu_msg,-1)         return PLUGIN_HANDLED } public select_race(id) {     if (is_user_bot(id)) {         p_skills[id][0] = random_num(1,5);     }         new menu_msg[256];     format(menu_msg,256,"\ySelect Race:\w^n^n1. %s^n2. %s^n3. %s^n4. %s^n5. %s^n^n6. Auto-select^n0. Cancel", racename[1], racename[2], racename[3], racename[4], racename[5]);     show_menu(id, (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<9), menu_msg, -1);         return PLUGIN_CONTINUE; } public set_race(id, key) {     if (is_user_alive(id) && !bFreezeTime) {         changingrace[id] = false;         client_print(id, print_chat, "[StarwarsMod] You cannot change race unless you are dead or during freeztime.");         return PLUGIN_CONTINUE;     }         if (key == 0) {         p_skills[id][0] = 1;     } else if (key == 1) {         p_skills[id][0] = 2;     } else if (key == 2) {         p_skills[id][0] = 3;     } else if (key == 3) {         p_skills[id][0] = 4;     } else if (key == 4) {         p_skills[id][0] = 5;     } else if (key == 5) {         p_skills[id][0] = random_num(1, 5);     }         p_skills[id][1] = 0;     p_skills[id][2] = 0;     p_skills[id][3] = 0;     p_skills[id][4] = 0;         #if !SHORT_TERM     playerxp[id] = 0     p_level[id] = 0     get_xp_from_file(id,0)     #endif         new msg[256];     format(msg, 256, "[StarwarsMod] You have selected the %s race.", racename[p_skills[id][0]]);     client_print(id, print_chat, msg);         display_level(id);         return PLUGIN_CONTINUE; } public new_round(id) {     bFreezeTime = true;     changingrace[id] = false;         if (p_skills[id][0] == 0) {         #if SHORT_TERM         select_race(id);         #else         get_xp_from_file(id, 1)         #endif     }         if (is_user_alive(id)) {         display_level(id);         new skillsused = p_skills[id][1]+p_skills[id][2]+p_skills[id][3]+p_skills[id][4] ;                 if (skillsused < p_level[id]) {             select_skill(id);         }                 // Bounty Hunter         if (p_skills[id][0] == 1) {             if (p_skills[id][1] > 0) {                 cs_set_user_armor(id, p_armor_upgrade[p_skills[id][1]], CS_ARMOR_VESTHELM);             }         }                 //Droid         if (p_skills[id][0] == 3) {             if (p_skills[id][1] > 0) {                 new parm[2];                 parm[0] = id;                 parm[1] = 0;                                 set_task(2.0, "droid_repair", 50 + id,parm, 2, "b");             }         }     } } public start_round() {     bFreezeTime = false; }
Snipa-of-Death is offline
Xanimos
Veteran Member
Join Date: Apr 2005
Location: Florida
Old 05-03-2006 , 17:21  
Reply With Quote #4

in public death(id) add the line remove_task(50+id)
Xanimos is offline
Send a message via AIM to Xanimos Send a message via MSN to Xanimos
Snipa-of-Death
Junior Member
Join Date: Jul 2005
Old 05-03-2006 , 17:22  
Reply With Quote #5

thanks
Snipa-of-Death is offline
Reply


Thread Tools
Display Modes

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 05:07.


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