Raised This Month: $ Target: $400
 0% 

set_task help


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
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
 



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