/* vi: set ts=4 sw=4 ai: */
/*
* menus.c
*
* Lotos v1.2.3 : (c) 1999-2003 Pavol Hluchy (Lopo)
* last update : 30.1.2003
* email : lotos@losys.sk
* homepage : lotos.losys.sk
*/
#ifndef __MENUS_C__
#define __MENUS_C__ 1
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "define.h"
#include "prototypes.h"
#include "val_set_main.h"
#include "val_set_term.h"
#include "val_set_bank.h"
#include "obj_sys.h"
#include "obj_syspp.h"
#include "menus.h"
/* Prints out the various menus */
void print_menu(UR_OBJECT user)
{
char fname[FNAME_LEN];
set_crash();
cls(user);
sprintf(fname, "%s/%s.%d", SCRFILES, menu_tab[user->set_mode].fname, user->set_op);
if (!show_file(user, fname)) {
vwrite_user(user, "~FRNemozem najst %s menu..\n", menu_tab[user->set_mode].name);
write_syslog(ERRLOG, 1, "Nemozem najst subor %s\n", fname);
return;
}
if (user->set_op) write_user(user, menu_tab[user->set_mode].prompt1);
else write_user(user, menu_tab[user->set_mode].prompt0);
}
/* main set_ops switch */
int setops(UR_OBJECT user, char *inpstr)
{
switch (user->set_mode) {
case SET_MAIN: return setmain_ops(user, inpstr);
case SET_TERM: return setops_term(user, inpstr);
case SET_BANK: return setops_bank(user, inpstr);
default: return 0;
}
}
// SET
void show_attributes(UR_OBJECT user)
{
char *shide[]={"Zobrazuje","Skryty"};
char *rm[]={"Hlavna ruuma","odhlasovacia"};
int i=1,cnt=0;
set_crash();
write_user(user," ~FT~OLStatus tvojich '~FRset~FT' atributov~RS\n");
while (set_tab[i].type[0]!='*') {
text[0]='\0';
vwrite_user(user," %-10.10s : ~OL", set_tab[i].type);
switch (i) {
case SET_GEND:
vwrite_user(user,"%-61.61s", sex[user->gender]);
break;
case SET_AGE:
if (!user->age) sprintf(text,"~FRnenastaveny");
else sprintf(text,"%d",user->age);
vwrite_user(user,"%-61.61s",text);
break;
case SET_EMAIL:
if (!strcmp(user->email,"#UNSET")) sprintf(text,"~CRnenastaveny");
else {
if (user->mail_verified) sprintf(text,"%s~RS - ~FGovereny",user->email);
else sprintf(text,"%s~RS - ~FRneovereny",user->email);
}
vwrite_user(user,"%-66.66s",text);
break;
case SET_HOMEP:
if (!strcmp(user->homepage,"#UNSET")) sprintf(text, "~FRnenastavena");
else sprintf(text,"%s",user->homepage);
vwrite_user(user,"%-61.61s",text);
break;
case SET_HIDEEMAIL:
vwrite_user(user,"%-61.61s",shide[user->hideemail]);
break;
case SET_ROOM:
vwrite_user(user,"%-61.61s",rm[user->lroom]);
break;
case SET_FWD:
vwrite_user(user,"%-61.61s",offon[user->autofwd]);
break;
case SET_PASSWD:
vwrite_user(user,"%-61.61s",offon[user->show_pass]);
break;
case SET_RDESC:
vwrite_user(user,"%-61.61s",offon[user->show_rdesc]);
break;
case SET_COMMAND:
vwrite_user(user,"%-61.61s",help_style[user->cmd_type]);
break;
case SET_RECAP:
cnt=colour_com_count(user->recap);
vwrite_user(user,"%-*.*s",61+cnt*3,61+cnt*3,user->recap);
break;
case SET_ICQ:
if (!strcmp(user->icq,"#UNSET")) sprintf(text,"~FRnenastavene");
else sprintf(text,"%s",user->icq);
vwrite_user(user,"%-61.61s",text);
break;
case SET_ALERT:
vwrite_user(user,"%-61.61s",offon[user->alert]);
break;
case SET_AUDIO:
#ifdef PUEBLO
vwrite_user(user,"%-61.61s",offon[user->pueblo_mm]);
#endif
break;
case SET_PPA:
#ifdef PUEBLO
vwrite_user(user,"%-61.61s",offon[user->pueblo_pg]);
#endif
break;
case SET_VOICE:
#ifdef PUEBLO
vwrite_user(user,"%-61.61s", sex[(!(user->voiceprompt-1))+1]);
#endif
break;
case SET_MODE:
vwrite_user(user,"%-61.61s", user->command_mode?"PRIKAZOVY":"KECACI");
break;
case SET_PROMPT:
vwrite_user(user,"%-61.61s", (user->prompt==-1)?"vlastny":prompt_tab[user->prompt].name);
break;
case SET_WHO:
vwrite_user(user,"%2.2d - %-56.56s", user->who_type, who_style[user->who_type]);
break;
} /* end main switch */
write_user(user, "~RS\n");
i++;
}
return;
}
/* Set the user attributes */
void set_attributes(UR_OBJECT user, char *inpstr)
{
int i=0,tmp=0,setattrval=-1;
char name[USER_NAME_LEN+1],*recname;
set_crash();
if (word_count<2) {
write_user(user, use_menu_prompt);
user->set_mode=SET_MAIN;
user->misc_op=102;
no_prompt=1;
return;
}
strtolower(word[1]);
while (set_tab[i].type[0]!='*') {
if (!strcmp(set_tab[i].type,word[1])) {
setattrval=i;
break;
}
++i;
}
if (setattrval==-1) {
i=0;
write_user(user,"Nastavenia ktore si mozes zmenit:\n");
while (set_tab[i].type[0]!='*') {
text[0]='\0';
vwrite_user(user,"~FT%s~RS : %s\n",set_tab[i].type,set_tab[i].desc);
i++;
}
user->set_mode=SET_NONE;
user->set_op=0;
return;
}
write_user(user,"\n");
switch (setattrval) {
case SET_SHOW: show_attributes(user); return;
case SET_GEND:
if (word_count<3) {
write_usage(user,"set %s m/z", set_tab[SET_GEND].type);
return;
}
if (user->gender && user->level<ARCH) {
write_user(user, "Ved uz mas nastaveny gender !\n");
return;
}
inpstr=remove_first(inpstr);
inpstr=colour_com_strip(inpstr);
inpstr[0]=tolower(inpstr[0]);
tmp=user->gender;
switch (inpstr[0]) {
case 'm' :
user->gender=MALE;
break;
case 'f' :
case 'z' :
user->gender=FEMALE;
break;
case 'n' :
case 'd' :
if (user->level >= GOD) {
user->gender=NEUTER;
break;
}
default :
write_user(user, "Take pohlavie nepoznam, ty hej ?\n");
return;
} /* end switch */
vwrite_user(user,"Pohlavie nastavene na ~OL%s~RS\n", sex[user->gender]);
syspp->acounter[tmp]--;
syspp->acounter[user->gender]++;
if (syspp->acounter[user->gender]>syspp->mcounter[user->gender]) {
syspp->mcounter[user->gender]++;
save_counters();
}
if (amsys->auto_promote && user->gender) check_autopromote(user,1);
if (user->gender!=tmp) {
nick_grm(user);
write_user(user, "Tvoje sklonovanie mena bolo nastavene nasledovne:\n");
show_nick_grm(user, user);
write_user(user, "Ak mas proti tomu nejake vyhrady, kontaktuj adminov\n\n");
}
return;
case SET_AGE:
if (word_count<3) {
write_usage(user,"set %s <age>", set_tab[SET_AGE].type);
return;
}
tmp=atoi(word[2]);
if (tmp<1 || tmp>120) {
write_user(user,"You can only set your age range between 1 and 120.\n");
return;
}
user->age=tmp;
vwrite_user(user,"Age now set to: %d\n",user->age);
return;
case SET_EMAIL:
inpstr=remove_first(inpstr);
inpstr=colour_com_strip(inpstr);
if (!inpstr[0]) strcpy(user->email,"#UNSET");
else if (strlen(inpstr)>80) {
write_user(user,"The maximum email length you can have is 80 characters.\n");
return;
}
else {
if (!validate_email(inpstr)) {
write_user(user,"That email address format is incorrect. Correct format: user@network.net\n");
sprintf(text,"~FY<WIZ>~RS %s has attempted to set an incorrect e-mail address: %s\n", user->name, inpstr);
write_level(WIZ, 1, text, NULL);
write_syslog(SYSLOG, 1, "%s tries to set '%s' as an email address.\n",user->name,inpstr);
return;
}
strcpy(user->email,inpstr);
} /* end else */
if (!strcmp(user->email,"#UNSET")) write_user(user,"Email set to : ~FRunset\n");
else vwrite_user(user,"Email set to : ~FT%s\n",user->email);
set_forward_email(user);
return;
case SET_HOMEP:
inpstr=remove_first(inpstr);
inpstr=colour_com_strip(inpstr);
if (!inpstr[0]) strcpy(user->homepage,"#UNSET");
else if (strlen(inpstr)>80) {
write_user(user,"The maximum homepage length you can have is 80 characters.\n");
return;
}
else strcpy(user->homepage,inpstr);
if (!strcmp(user->homepage,"#UNSET")) write_user(user,"Homepage set to : ~FRunset\n");
else vwrite_user(user,"Homepage set to : ~FT%s\n",user->homepage);
return;
case SET_HIDEEMAIL:
user->hideemail=!user->hideemail;
vwrite_user(user,"Email showing now %s.\n", offon[user->hideemail]);
return;
case SET_ROOM:
switch (user->lroom) {
case 0:
user->lroom=1;
write_user(user,"You will log on into the room you left from.\n");
break;
case 1:
user->lroom=0;
write_user(user,"You will log on into the main room.\n");
break;
}
return;
case SET_FWD:
if (!user->email[0] || !strcmp(user->email,"#UNSET")) {
write_user(user,"You have not yet set your email address - autofwd cannot be used until you do.\n");
return;
}
if (!user->mail_verified) {
write_user(user,"You have not yet verified your email - autofwd cannot be used until you do.\n");
return;
}
switch (user->autofwd) {
case 0:
user->autofwd=1;
write_user(user,"You will also receive smails via email.\n");
break;
case 1:
user->autofwd=0;
write_user(user,"You will no longer receive smails via email.\n");
break;
}
return;
case SET_PASSWD:
switch (user->show_pass) {
case 0:
user->show_pass=1;
write_user(user,"You will now see your password when entering it at login.\n");
break;
case 1:
user->show_pass=0;
write_user(user,"You will no longer see your password when entering it at login.\n");
break;
}
return;
case SET_RDESC:
switch (user->show_rdesc) {
case 0:
user->show_rdesc=1;
write_user(user,"You will now see the room descriptions.\n");
break;
case 1:
user->show_rdesc=0;
write_user(user,"You will no longer see the room descriptions.\n");
break;
}
return;
case SET_COMMAND:
if (word_count<3) {
write_usage(user,"set %s <#typ>", set_tab[SET_COMMAND].type);
return;
}
tmp=atoi(word[2]);
if (tmp<1 || tmp>NUM_HELP) {
vwrite_user(user,"Help type can only be set between 1 & %d - setting to default\n", NUM_HELP);
user->cmd_type=1;
}
else user->cmd_type=tmp;
vwrite_user(user,"Help type now set to: %s\n", help_style[user->cmd_type]);
return;
case SET_RECAP:
if (word_count<3) {
write_usage(user,"set %s <meno ako ho chces mat>", set_tab[SET_RECAP].type);
return;
}
if (strstr(word[2], "~FK") && user->level<ROOT) {
write_user(user, "You can't have black in your name!\n");
return;
}
if (strlen(word[2])>(USER_NAME_LEN+USER_NAME_LEN*3-1)) {
write_user(user, "That recapped name is too long!\n");
return;
}
recname=colour_com_strip(word[2]);
strcpy(name,recname);
strtolower(name);
name[0]=toupper(name[0]);
if (strcmp(user->name,name) && user->level<ROOT) {
write_user(user,"The recapped name still has to match your proper name.\n");
return;
}
strcpy(user->recap,word[2]);
strcpy(user->bw_recap,recname);
vwrite_user(user,"Your name will now appear as \"%s~RS\" on the 'who', 'examine', tells, etc.\n",user->recap);
return;
case SET_ICQ:
strcpy(word[2],colour_com_strip(word[2]));
if (!word[2][0]) strcpy(user->icq,"#UNSET");
else if (strlen(word[2])>ICQ_LEN) {
vwrite_user(user,"The maximum ICQ UIN length you can have is %d characters.\n", ICQ_LEN);
return;
}
else strcpy(user->icq,word[2]);
if (!strcmp(user->icq,"#UNSET")) write_user(user,"ICQ number set to : ~FRunset\n");
else vwrite_user(user,"ICQ number set to : ~FT%s\n",user->icq);
return;
case SET_ALERT:
switch (user->alert) {
case 0:
user->alert=1;
write_user(user,"You will now be alerted if anyone on your friends list logs on.\n");
break;
case 1:
user->alert=0;
write_user(user,"You will no longer be alerted if anyone on your friends list logs on.\n");
break;
}
return;
case SET_AUDIO:
#ifdef PUEBLO
user->pueblo_mm=!user->pueblo_mm;
vwrite_user(user, "'Pueblo Audio Prompt' now %s\n", offon[user->pueblo_mm]);
#endif
return;
case SET_PPA:
#ifdef PUEBLO
user->pueblo_pg=!user->pueblo_pg;
vwrite_user(user, "'Pueblo Pager Audio' now %s\n", offon[user->pueblo_pg]);
#endif
return;
case SET_VOICE:
#ifdef PUEBLO
user->voiceprompt=!user->voiceprompt;
vwrite_user(user, "'audio prompt voice gender' nastavene na %s\n",
sex[(!(user->voiceprompt-1))+1]);
if (!user->pueblo) write_user(user,"This function only works when connected using the Pueblo telnet client.\n");
#endif
return;
case SET_MODE:
#ifdef NETLINKS
if (user->room==NULL) {
vwrite_user(user, "Sorrac, momentalne ako vzdialen%s user%s nemozes pouzit tento prikaz\n", grm_gnd(1, user->gender), grm_gnd(2, user->gender));
return;
}
#endif
user->command_mode=!user->command_mode;
vwrite_user(user, "odteraz si v %s mode\n", user->command_mode?"prikazovom":"kecacom");
return;
case SET_PROMPT:
#ifdef NETLINKS
if (user->room==NULL) {
vwrite_user(user, "Sorrac, momentalne ako vzdialen%s user%s nemozes pouzit tento prikaz\n", grm_gnd(1, user->gender), grm_gnd(2, user->gender));
return;
}
#endif
if (word_count<3) {
if (user->prompt>0) vwrite_user(user, "Aktualny prompt: %s\n", prompt_tab[user->prompt].name);
else write_user(user, "Aktualny prompt: vlastny\n");
write_usage(user, "set %s <typ>|<str>", set_tab[SET_PROMPT].type);
return;
}
if (is_number(word[2])) {
tmp=atoi(word[2]);
if (tmp>(NUM_PROMPT-1)) {
vwrite_user(user, "Prompt moze byt 0 - %d alebo vlastny retazec\n", NUM_PROMPT);
return;
}
user->prompt=tmp;
strcpy(user->prompt_str, prompt_tab[user->prompt].str);
vwrite_user(user, "Prompt nastaveny na: %s\n", prompt_tab[user->prompt].name);
return;
}
if (strlen(word[2])>PROMPT_LEN) {
vwrite_user(user, "Pridlhy prompt, max. dlzka: %d\n", PROMPT_LEN);
return;
}
user->prompt=-1;
sprintf(user->prompt_str, "%.*s", PROMPT_LEN, word[2]);
user->prompt_str[PROMPT_LEN]='\0';
write_user(user, "Prompt nastaveny\n");
return;
case SET_WHO:
if (word_count<3) {
write_usage(user,"set %s <#typ>", set_tab[SET_WHO].type);
vwrite_user(user, "aktualne nastaveny typ: %d - %s\n", user->who_type, who_style[user->who_type]);
write_user(user, "mozne typy:\n");
for (i=1; i<=NUM_WHO; i++)
vwrite_user(user, "\t%d - %s\n", i, who_style[i]);
return;
}
tmp=atoi(word[2]);
if (tmp<1 || tmp>NUM_WHO) {
vwrite_user(user,"Who type can only be set between 1 & %d - setting to default\n", NUM_WHO);
user->who_type=1;
}
else user->who_type=tmp;
vwrite_user(user,"Who type now set to: %s\n", who_style[user->who_type]);
return;
} /* end main switch */
}
/* The set menu... very very very handy... for newbies */
int setmain_ops(UR_OBJECT user, char *inpstr)
{
char temp[ARR_SIZE], *name;
int which, val=0, hlp;
set_crash();
if (user->set_mode!=SET_MAIN) return 0;
if (!user->vis) name=invisname;
else name=user->recap;
temp[0]='\0';
if (inpstr[0]=='0') {
hlp=-1;
val=1;
}
else for (hlp=0; set_tab[hlp].cmenu!='*'; hlp++)
if (toupper(inpstr[0])==set_tab[hlp].cmenu) {
val=1;
break;
}
switch (user->set_op) {
case 1 :
switch (hlp) {
case SET_GEND:
if (user->gender && user->level<ARCH) {
write_user(user, "Ved uz mas nastaveny gender !\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
vwrite_user(user, "Aktualny gender: %s\n", sex[user->gender]);
write_user(user,"~CTEnter new gender~CB: ");
user->set_op=2;
return 1;
case SET_AGE:
if (user->age) {
vwrite_user(user,"~FGYour age currently is~CB: [~RS%d~CB]\n", user->age);
write_user(user,"~CTEnter new age~CB: ");
user->set_op=3;
return 1;
}
write_user(user,"~CTHow old are you?~CB: ");
user->set_op=3;
return 1;
case SET_EMAIL:
if (!strcmp(user->email, "#UNSET")) write_user(user,"~FGEmail currently set at~CB: [~RSunset~CB]\n");
else vwrite_user(user,"~FGEmail currently set at~CB: [~RS%s~CB]\n", user->email);
write_user(user,"~CTEnter new email address~CB: ");
user->set_op=4;
return 1;
case SET_HOMEP:
if (strcmp(user->homepage, "#UNSET")) {
vwrite_user(user,"~FGWebpage currently set at~CB: [~RS%s~CB]\n",user->homepage);
write_user(user,"~CTEnter a new homepage address~CB =>~RS http://");
user->set_op=5;
return 1;
}
write_user(user,"~CTEnter a homepage address~CB:~RS http://");
user->set_op=5;
return 1;
case SET_HIDEEMAIL:
if (user->hideemail) {
write_user(user,"~FGYou are no longer hiding your email address...\n");
user->hideemail=0;
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
write_user(user,"~FGYou hide your email from other users...\n");
user->hideemail=1;
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case SET_ROOM:
user->lroom=!user->lroom;
vwrite_user(user, "You will log on into the %s\n",
user->lroom?"room you left from":"main room");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case SET_FWD:
if (!user->email[0] || !strcmp(user->email, "#UNSET")) {
write_user(user, "You have no yet set your email address - autofwd cannot be used until you do.\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
if (!user->mail_verified) {
write_user(user, "You have no yet verified your email - autofwd cannot be used until you do.\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
user->autofwd=!user->autofwd;
vwrite_user(user, "Autofwd now %s\n", offon[user->autofwd]);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case SET_PASSWD:
if (user->show_pass) {
write_user(user, "You will now see your password when entering it at login\n");
write_user(user,center(continue1,81));
user->show_pass=0;
user->set_op=-1;
return 1;
}
write_user(user, "You will no longer see your password when entering it at login\n");
write_user(user,center(continue1,81));
user->show_pass=1;
user->set_op=-1;
return 1;
case SET_RDESC:
if (user->show_rdesc) {
write_user(user, "You will now see the room descriptions\n");
write_user(user,center(continue1,81));
user->show_rdesc=0;
user->set_op=-1;
return 1;
}
write_user(user, "You will no longer see the room descriptions\n");
write_user(user,center(continue1,81));
user->show_rdesc=1;
user->set_op=-1;
return 1;
case SET_COMMAND:
vwrite_user(user,"~FGYour help type is currently~CB: [~RS%d - %s~CB]\n", user->cmd_type, help_style[user->cmd_type]);
write_user(user,"~FMPossible help types are~CB:\n");
for (which=1; which<=NUM_HELP; ++which) {
vwrite_user(user,"~CG%d~CB = ~CT%s\n", which, help_style[which]);
}
write_user(user,"~CTYour choice~CB: ");
user->set_op=8;
return 1;
case SET_RECAP:
vwrite_user(user,"~FGName capitalization currently set at~CB: [~RS%s~RS~CB]\n", user->recap);
write_user(user,"~CTEnter new capitalization~CB: ");
user->set_op=9;
return 1;
case SET_ICQ:
if (user->icq) {
if (strcmp(user->icq, "#UNSET")) vwrite_user(user,"~FGYour ICQ number is set at~CB: [~RS%s~CB]\n", user->icq);
else write_user(user,"~FGYour ICQ number is set at~CB: [~RSunset~CB]\n");
write_user(user,"~CTEnter new ICQ number~CB: ");
user->set_op=10;
return 1;
}
write_user(user,"~CTEnter an ICQ number~CB: ");
user->set_op=10;
return 1;
case SET_ALERT:
if (user->alert) {
write_user(user, "You will now be alerted if anyone on your notify list logs on\n");
user->alert=0;
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
write_user(user, "You will no longer be alerted if anyone on your notify list logs on\n");
user->alert=1;
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case SET_AUDIO:
#ifdef PUEBLO
user->pueblo_mm=!user->pueblo_mm;
vwrite_user(user, "'Pueblo Audio Prompt' now %s\n", offon[user->pueblo_mm]);
write_user(user,center(continue1,81));
user->set_op=-1;
#endif
return 1;
case SET_PPA:
#ifdef PUEBLO
user->pueblo_pg=!user->pueblo_pg;
vwrite_user(user, "'Pueblo Pager Audio' now %s\n", offon[user->pueblo_pg]);
write_user(user,center(continue1,81));
user->set_op=-1;
#endif
return 1;
case SET_VOICE:
#ifdef PUEBLO
user->voiceprompt=!user->voiceprompt;
vwrite_user(user, "Audio Prompt Voice Gender' nastavene na %s\n",
sex[(!(user->voiceprompt-1))+1]);
if (!user->pueblo) write_user(user, "This function only works when connected using the Pueblo telnet client.\n");
write_user(user,center(continue1,81));
user->set_op=-1;
#endif
return 1;
case SET_MODE:
if (user->room==NULL) {
write_user(user, "teraz nemozes zmenit tento parameter\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
user->command_mode=!user->command_mode;
vwrite_user(user,"~FGOdteraz si v %s mode!\n", user->command_mode?"prikazovom":"kecacom");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case SET_PROMPT:
vwrite_user(user, "~FGAktualny prompt~CB: [~RS%d ~CW-~RS %s~CB].\n", user->prompt, prompt_tab[user->prompt].name);
vwrite_user(user, "~CTZadaj novy prompt~CB [~FR0~FW-~FR%d~FW|~FR<str>~CB]: ~RS", NUM_PROMPT-1);
user->set_op=11;
return 1;
case SET_WHO:
vwrite_user(user,"~FGYour who type is currently~CB: [~RS%d - %s~CB]\n", user->who_type, who_style[user->who_type]);
write_user(user,"~CTYour choice~CB: ");
user->set_op=12;
return 1;
case -1:
vwrite_room_except(user->room, user, room_leave_setup, name);
user->ignore.all=user->ignore.all_store;
user->set_mode=SET_NONE;
user->set_op=0;
user->status='a';
prompt(user);
return 1;
default :
write_user(user, user_bch_setup);
write_user(user,center(continue1,81));
user->set_op=-1;
} /* end of switch (hlp) */
return 1;
case 2: /* SET_GEND */
hlp=user->gender;
inpstr=colour_com_strip(inpstr);
switch (toupper(inpstr[0])) {
case 'M':
if (user->gender & FEMALE) {
write_user(user,"~FGGender switched to ~CRMALE\n");
user->gender=MALE;
syspp->acounter[hlp]--;
syspp->acounter[user->gender]++;
user->set_op=-1;
goto CH_GEND;
}
if (user->gender & MALE) {
write_user(user,"~FGYes, we know that your male...\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
user->gender=MALE;
syspp->acounter[hlp]--;
syspp->acounter[user->gender]++;
write_user(user,"~FGGender set to ~CRMALE!\n");
user->set_op=-1;
goto CH_GEND;
case 'Z':
if (user->gender & MALE) {
write_user(user,"~FGGender switched to ~CRFEMALE\n");
user->gender=FEMALE;
syspp->acounter[hlp]--;
syspp->acounter[user->gender]++;
user->set_op=-1;
goto CH_GEND;
}
if (user->gender & FEMALE) {
write_user(user,"~FGYes, we know that your female...\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
user->gender=FEMALE;
syspp->acounter[hlp]--;
syspp->acounter[user->gender]++;
write_user(user,"~FGGender set to ~CRFEMALE!\n");
user->set_op=-1;
goto CH_GEND;
case 'N':
case 'D':
if (user->level>=GOD) {
if (user->gender & NEUTER) {
write_user(user,"~FGYes, we know that your female...\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
user->gender=NEUTER;
syspp->acounter[hlp]--;
syspp->acounter[user->gender]++;
write_user(user,"~FGGender set to ~CRNEUTER!\n");
user->set_op=-1;
goto CH_GEND;
}
default :
write_user(user,"~FGInvalid gender, please choose either male or female!\n");
write_user(user,"~CB-=> ");
user->set_op=2;
return 1;
}
CH_GEND:
if (syspp->acounter[user->gender]>syspp->mcounter[user->gender]) {
syspp->mcounter[user->gender]++;
save_counters();
}
if (amsys->auto_promote && user->gender) check_autopromote(user, 1);
if (user->gender!=hlp) {
nick_grm(user);
write_user(user, "Tvoje sklonovanie nicku bolo nastavene nasledovne:\n");
show_nick_grm(user, user);
write_user(user, "Ak mas proti tomu nejake vyhrady, kontaktuj adminov\n");
}
write_user(user,center(continue1,81));
return 1;
case 3: /* SET_AGE */
val=atoi(word[0]);
if (!val) {
write_user(user,"~FGInvalid age...\n");
write_user(user,"~CTRe-enter your age~CB: ");
user->set_op=3;
return 1;
}
if (val<1) {
write_user(user,"~FGI don't think so...\n");
write_user(user,"~CTRe-enter your age~CB: ");
user->set_op=3;
return 1;
}
if (val>120) {
write_user(user,"~FGThats a tad bit to old to believe!\n");
write_user(user,"~CTRe-enter your age~CB: ");
user->set_op=3;
return 1;
}
user->age=val;
vwrite_user(user,"~FGAge is now set to~CB: [~RS%d~CB]\n", user->age);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 4: /* SET_EMAIL */
if (!strlen(inpstr)) {
write_user(user,"~FGWould help if you entered something ;)\n");
write_user(user,"~CTRe-enter email address~CB: ");
user->set_op=4;
return 1;
}
inpstr=colour_com_strip(inpstr);
if (!inpstr[0]) strcpy(user->email, "#UNSET");
else if (strlen(inpstr)>80) {
write_user(user, "The maximum email length you can have is 80 characters.\n");
write_user(user,"~CTRe-enter email address~CB: ");
user->set_op=4;
return 1;
}
else {
if (!validate_email(inpstr)) {
write_user(user,"~FGYou have entered an invalid email address!\n");
write_user(user,"~CTRe-enter email address~CB: ");
user->set_op=4;
return 1;
}
strcpy(user->email,inpstr);
}
if (!strcmp(user->email, "#UNSET")) write_user(user,"~FGEmail address now set to~CB: [~RSunset~CB]\n");
else vwrite_user(user,"~FGEmail address now set to~CB: [~RS%s~CB]\n", user->email);
set_forward_email(user);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 5: /* SET_HOMEP */
inpstr=colour_com_strip(inpstr);
if (!inpstr[0]) strcpy(user->homepage, "#UNSET");
else if (strlen(inpstr)>73) {
write_user(user, "The maximum homepage length you can have is 73 characters\n");
write_user(user,"~CTRe-enter a new homepage address~CB =>~RS http://");
user->set_op=5;
return 1;
}
else {
sprintf(text,"http://%s",inpstr);
strcpy(user->homepage,text);
}
if (strcmp(user->homepage, "#UNSET")) vwrite_user(user,"~FGHomepage now set to~CB: [~RS%s~CB]\n",user->homepage);
else write_user(user,"~FGHomepage now set to~CB: [~RSunset~CB]\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 6: /* SET_PAGER */
user->terminal.pager=atoi(word[0]);
if (user->terminal.pager<MAX_LINES || user->terminal.pager>99) {
vwrite_user(user, "Pager can only be set between %d and 99 - setting to default\n");
user->terminal.pager=23;
}
vwrite_user(user, "~FGPager length now set to: ~RS%d\n", user->terminal.pager);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 7: /* SET_COLOUR */
/* if (!strlen(inpstr)) {
write_user(user,"~FGWould help if you entered something ;)\n");
vwrite_user(user,"~FTRe-enter colour choice ~CW<~CR0~CW - ~CR%d~CW|~CRtest~CW> ~CB-=> ", NUM_COLMODS);
user->set_op=7;
return 1;
}
if (!strcasecmp(inpstr, "test")) {
display_colour(user);
vwrite_user(user,"~FTEnter colour choice ~CW<~CR0~CW - ~CR%d~CW|~CRtest~CW> ~CB-=> ", NUM_COLMODS);
user->set_op=7;
return 1;
}
hlp=atoi(word[0]);
if (hlp<0 || hlp>NUM_COLMODS) {
vwrite_user(user,"~FTInvalid choice ~CW<~CR1~CW - ~CR%d~CW/~CRtest~CW> ~CB-=> ", NUM_COLMODS);
user->set_op=7;
return 1;
}
user->colour=hlp;
vwrite_user(user, "~FGColour mode now set to: ~RS%d\n", user->colour);
write_user(user,center(continue1,81));
user->set_op=-1;
*/ return 1;
case 8: /* SET_COMMAND */
val=atoi(word[0]);
if (!val) {
write_user(user,"~FGInvalid help style...\n");
vwrite_user(user,"~CTRe-enter help choice 1-%d~CB: ",NUM_HELP);
user->set_op=8;
val=0;
return 1;
}
if (val<1 || val>NUM_HELP) {
write_user(user,"~FGInvalid help style...\n");
vwrite_user(user,"~CTRe-enter help choice 1-%d~CB: ",NUM_HELP);
user->set_op=8;
val=0;
return 1;
}
user->cmd_type=val;
vwrite_user(user,"~FGHelp style now set to~CB: [~CY%s~CB]\n", help_style[user->cmd_type]);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 9: /* SET_RECAP */
if (!strlen(inpstr)) {
write_user(user,"~FGWould help if you entered something ;)\n");
write_user(user,"~CTRe-enter recapped name~CB: ");
user->set_op=9;
return 1;
}
if (strstr(inpstr,"~FK") && user->level<ROOT) {
write_user(user,"~FGYou can't have black in your name!\n");
write_user(user,"~CTRe-enter recapped name~CB: ");
user->set_op=9;
return 1;
}
if (strlen(inpstr)>(USER_NAME_LEN+USER_NAME_LEN*3-1)) {
write_user(user,"~FGThat recapped name is too long!\n");
write_user(user,"~CTRe-enter recapped name~CB: ");
user->set_op=9;
return 1;
}
strcpy(temp,colour_com_strip(inpstr));
if (strcasecmp(temp,user->name) && user->level<ROOT) {
write_user(user,"~FGThats not your name...\n");
write_user(user,"~CTRe-enter recapped name~CB: ");
user->set_op=9;
return 1;
}
strcpy(user->recap, inpstr);
strcpy(user->bw_recap, temp);
vwrite_user(user,"~FGYou will now be known as~CB: [~RS%s~RS~CB]\n", user->recap);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 10: /* SET_ICQ */
inpstr=colour_com_strip(inpstr);
if (!inpstr[0]) strcpy(user->icq, "#UNSET");
else if (strlen(inpstr)>ICQ_LEN) {
vwrite_user(user, "The Maximnum ICQ UIN length you can have is %d characters.\n", ICQ_LEN);
write_user(user,"~CTRe-enter an ICQ number~CB: ");
user->set_op=10;
return 1;
}
else strcpy(user->icq, word[0]);
if (strcmp(user->icq, "#UNSET")) vwrite_user(user,"~FGICQ number now set to~CB: [~RS%s~CB]\n",user->icq);
else write_user(user,"~FGICQ number now set to~CB: [~RSunset~CB]\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 11: /* SET_PROMPT */
if (is_number(inpstr)) {
val=atoi(inpstr);
if (val>(NUM_PROMPT-1)) {
vwrite_user(user, "Maximalne cislo promptu je %d.\n", NUM_PROMPT-1);
write_user(user,"~CTRe-enter prompt~CB: ");
user->set_op=11;
return 1;
}
user->prompt=val;
vwrite_user(user, "Prompt nastaveny na typ %s\n", prompt_tab[user->prompt].name);
strcpy(user->prompt_str, prompt_tab[user->prompt].str);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
}
if (strlen(inpstr)>PROMPT_LEN) {
vwrite_user(user, "Maximalna dlzka promptu je %d.\n", PROMPT_LEN);
write_user(user,"~CTRe-enter prompt~CB: ");
user->set_op=11;
return 1;
}
user->prompt=-1;
strcpy(user->prompt_str, inpstr);
write_user(user, "Prompt nastaveny\n");
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case 12: /* SET_WHO */
if (!strcmp(word[0], "list")) {
write_user(user,"~FMPossible who types are~CB:\n");
for (which=1; which<=NUM_WHO; ++which) {
vwrite_user(user,"~CG%d~CB = ~CT%s\n", which, who_style[which]);
}
write_user(user,"~CTYour choice~CB: ");
user->set_op=12;
return 1;
}
val=atoi(word[0]);
if (!val) {
write_user(user,"~FGInvalid who style...\n");
vwrite_user(user,"~CTRe-enter who choice 1-%d|list~CB: ",NUM_WHO);
user->set_op=12;
return 1;
}
if (val<1 || val>NUM_WHO) {
write_user(user,"~FGInvalid who style...\n");
vwrite_user(user,"~CTRe-enter who choice 1-%d|list~CB: ",NUM_WHO);
user->set_op=12;
return 1;
}
user->who_type=val;
vwrite_user(user,"~FGWho style now set to~CB: [~CY%s~CB]\n", who_style[user->who_type]);
write_user(user,center(continue1,81));
user->set_op=-1;
return 1;
case -1:
temp[0]='\0';
which=0;
val=0;
user->set_mode=SET_MAIN;
user->set_op=1;
print_menu(user);
return 1;
}
return 0;
}
// TERM
void showattribs_term(UR_OBJECT user)
{
int i=1;
set_crash();
write_user(user, "Tvoje aktualne nastavenia terminalu:\n");
while (setterm_tab[i].type[0]!='*') {
text[0]='\0';
vwrite_user(user, " %-10.10s : ~OL", setterm_tab[i].type);
switch (i) {
case SETTERM_BCKG:
vwrite_user(user, "%-61.61s", offon[user->terminal.bckg]);
break;
case SETTERM_TXT:
vwrite_user(user, "%-61.61s", offon[user->terminal.txt]);
break;
case SETTERM_REVERS:
vwrite_user(user, "%-61.61s", offon[user->terminal.revers]);
break;
case SETTERM_BLINK:
vwrite_user(user, "%-61.61s", offon[user->terminal.blink]);
break;
case SETTERM_BOLD:
vwrite_user(user, "%-61.61s", offon[user->terminal.bold]);
break;
case SETTERM_UNDERLINE:
vwrite_user(user, "%-61.61s", offon[user->terminal.underline]);
break;
case SETTERM_CLEAR:
vwrite_user(user, "%-61.61s", offon[user->terminal.clear]);
break;
case SETTERM_MUSIC:
vwrite_user(user, "%-61.61s", offon[user->terminal.music]);
break;
case SETTERM_XTERM:
vwrite_user(user, "%-61.61s", offon[user->terminal.xterm]);
break;
case SETTERM_CHECHO:
vwrite_user(user, "%-61.61s", offon[user->terminal.checho]);
break;
case SETTERM_WRAP:
vwrite_user(user, "%-61.61s", offon[user->terminal.wrap]);
break;
case SETTERM_BLIND:
vwrite_user(user, "%-61.61s", offon[user->terminal.blind]);
break;
case SETTERM_PAGER:
sprintf(text, "%d", user->terminal.pager);
vwrite_user(user, "%-61.61s", text);
break;
}
write_user(user, "~RS\n");
++i;
}
return;
}
void set_terminal(UR_OBJECT user, char *inpstr)
{
int i=0, setattrval=-1;
set_crash();
if (word_count<2) {
write_user(user, use_menu_prompt);
user->set_mode=SET_TERM;
user->misc_op=102;
no_prompt=1;
return;
}
strtolower(word[1]);
while (setterm_tab[i].type[0]!='*') {
if (!strcmp(setterm_tab[i].type, word[1])) {
setattrval=i;
break;
}
++i;
}
if (setattrval==-1) {
i=0;
write_user(user, "nastavenia ktore si mozes zmenit:\n");
while (setterm_tab[i].type[0]!='*') {
text[0]='\0';
vwrite_user(user, "~FT%s~RS : %s\n", setterm_tab[i].type, setterm_tab[i].desc);
i++;
}
user->set_mode=SET_NONE;
user->set_op=0;
return;
}
write_user(user, "\n");
switch (setattrval) {
case SETTERM_SHOW: showattribs_term(user); return;
case SETTERM_BCKG:
user->terminal.bckg=!user->terminal.bckg;
vwrite_user(user, "Pouzivanie pozadia odteraz %s%s\n", user->terminal.bckg?"~CG":"~CR", offon[user->terminal.bckg]);
return;
case SETTERM_TXT:
user->terminal.txt=!user->terminal.txt;
vwrite_user(user, "Pouzivanie farieb odteraz %s%s\n", user->terminal.txt?"~CG":"~CR", offon[user->terminal.txt]);
return;
case SETTERM_REVERS:
user->terminal.revers=!user->terminal.revers;
vwrite_user(user, "Pouzivanie reverznych farieb odteraz %s%s\n", user->terminal.revers?"~CG":"~CR", offon[user->terminal.revers]);
return;
case SETTERM_BLINK:
user->terminal.blink=!user->terminal.blink;
vwrite_user(user, "Blikanie odteraz %s%s\n", user->terminal.blink?"~CG":"~CR", offon[user->terminal.blink]);
return;
case SETTERM_BOLD:
user->terminal.bold=!user->terminal.bold;
vwrite_user(user, "Zvyrazneny text odteraz %s%s\n", user->terminal.bold?"~CG":"~CR", offon[user->terminal.bold]);
return;
case SETTERM_UNDERLINE:
user->terminal.underline=!user->terminal.underline;
vwrite_user(user, "Podciarkovanie odteraz %s%s\n", user->terminal.underline?"~CG":"~CR", offon[user->terminal.underline]);
return;
case SETTERM_CLEAR:
user->terminal.clear=!user->terminal.clear;
vwrite_user(user, "Mazanie odteraz %s\n", user->terminal.clear?"kodom":"odriadkovanim");
return;
case SETTERM_MUSIC:
user->terminal.music=!user->terminal.music;
vwrite_user(user, "Ansi hudba odteraz %s%s\n", user->terminal.music?"~CG":"~CR", offon[user->terminal.music]);
return;
case SETTERM_XTERM:
user->terminal.xterm=!user->terminal.xterm;
vwrite_user(user, "Xterm kompatibilita odteraz %s%s\n", user->terminal.xterm?"~CG":"~CR", offon[user->terminal.xterm]);
return;
case SETTERM_CHECHO:
user->terminal.checho=!user->terminal.checho;
vwrite_user(user, "Charecho odteraz %s%s\n", user->terminal.checho?"~CG":"~CR", offon[user->terminal.checho]);
return;
case SETTERM_WRAP:
user->terminal.wrap=!user->terminal.wrap;
vwrite_user(user, "Zalamovanie slov odteraz %s%s\n", user->terminal.wrap?"~CG":"~CR", offon[user->terminal.wrap]);
return;
case SETTERM_BLIND:
if (user->level<MIN_LEV_BLIND) {
vwrite_user(user, "Tento parameter mozes pouzit az od levelu %s\n", user_level[MIN_LEV_BLIND].name);
return;
}
if (user->terminal.blind) {
user->terminal.blind=0;
vwrite_user(user, "Zobrazovanie na terminal odteraz ~CG%s\n",
offon[!user->terminal.blind]);
}
else {
cls(user);
vwrite_user(user, "Zobrazovanie na terminal odteraz ~CR%s\n",
offon[user->terminal.blind]);
user->terminal.blind=1;
}
return;
case SETTERM_PAGER:
if (word_count<3) {
write_usage(user, "set %s <#pocet>", setterm_tab[SETTERM_PAGER].type);
vwrite_user(user, "aktualna hodnota : %d\n", user->terminal.pager);
return;
}
user->terminal.pager=atoi(word[2]);
if (user->terminal.pager<MAX_LINES || user->terminal.pager>99) {
vwrite_user(user, "Pocet riadkov musi byt v rozmedzi %d ~ 99 - nastavujem def. hodnotu\n", MAX_LINES);
user->terminal.pager=23;
return;
}
vwrite_user(user, "Pocet riadkov odteraz nastaveny na %d\n", user->terminal.pager);
return;
}
}
int setops_term(UR_OBJECT user, char *inpstr)
{
char *name, temp[ARR_SIZE];
int val=0, hlp;
set_crash();
if (user->set_mode!=SET_TERM) return 0;
if (!user->vis) name=invisname;
else name=user->recap;
temp[0]='\0';
if (inpstr[0]=='0') {
hlp=-1;
val=1;
}
else for (hlp=0; setterm_tab[hlp].cmenu!='*'; hlp++)
if (toupper(inpstr[0])==setterm_tab[hlp].cmenu) {
val=1;
break;
}
switch (user->set_op) {
case 1:
switch (hlp) {
case SETTERM_SHOW:
showattribs_term(user);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_BCKG:
user->terminal.bckg=!user->terminal.bckg;
vwrite_user(user, "Pouzivanie farebneho pozadia odteraz %s%s\n", user->terminal.bckg?"~CG":"~CR", offon[user->terminal.bckg]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_TXT:
user->terminal.txt=!user->terminal.txt;
vwrite_user(user, "Pouzivanie farebneho textu odteraz %s%s\n", user->terminal.txt?"~CG":"~CR", offon[user->terminal.txt]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_REVERS:
user->terminal.revers=!user->terminal.revers;
vwrite_user(user, "Pouzivanie reverznych farieb odteraz %s%s\n", user->terminal.revers?"~CG":"~CR", offon[user->terminal.revers]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_BLINK:
user->terminal.blink=!user->terminal.blink;
vwrite_user(user, "Pouzivanie blikania odteraz %s%s\n", user->terminal.blink?"~CG":"~CR", offon[user->terminal.blink]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_BOLD:
user->terminal.bold=!user->terminal.bold;
vwrite_user(user, "Pouzivanie zvyraznenych farieb odteraz %s%s\n", user->terminal.bold?"~CG":"~CR", offon[user->terminal.bold]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_UNDERLINE:
user->terminal.underline=!user->terminal.underline;
vwrite_user(user, "Pouzivanie podciarkovania odteraz %s%s\n", user->terminal.underline?"~CG":"~CR", offon[user->terminal.underline]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_CLEAR:
user->terminal.clear=!user->terminal.clear;
vwrite_user(user, "Mazanie obrazovky odteraz %s\n", user->terminal.clear?"kodom":"odriadkovanim");
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_MUSIC:
user->terminal.music=!user->terminal.music;
vwrite_user(user, "Pouzivanie ANSII hudby odteraz %s%s\n", user->terminal.music?"~CG":"~CR", offon[user->terminal.music]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_XTERM:
user->terminal.xterm=!user->terminal.xterm;
vwrite_user(user, "Kompatibilita klienta s Xterm odteraz %s%s\n", user->terminal.xterm?"~CG":"~CR", offon[user->terminal.xterm]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_CHECHO:
user->terminal.checho=!user->terminal.checho;
vwrite_user(user, "Echovanie znakov odteraz %s%s\n",
user->terminal.checho?"~CG":"~CR", offon[user->terminal.checho]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_WRAP:
user->terminal.wrap=!user->terminal.wrap;
vwrite_user(user, "Zalamovanie slov odteraz %s%s\n",
user->terminal.wrap?"~CG":"~CR", offon[user->terminal.wrap]);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_BLIND:
if (user->level<MIN_LEV_BLIND) {
vwrite_user(user, "Tento parameter si mozes nastavit az od levela %s\n", user_level[MIN_LEV_BLIND].name);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
}
write_user(user, "Tento parameter nie je radsej cez menu pristupny\n");
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case SETTERM_PAGER:
vwrite_user(user, "Tvoje aktualne nastavenie ~CB: [~RS%d~CB]\n", user->terminal.pager);
write_user(user, "~CTNapis novu hodnotu~CB: ");
user->set_op=2;
return 1;
case -1:
vwrite_room_except(user->room, user, room_leave_setup, name);
user->ignore.all=user->ignore.all_store;
user->set_mode=SET_NONE;
user->set_op=0;
user->status='a';
prompt(user);
return 1;
default:
write_user(user, user_bch_setup);
write_user(user, center(continue1, 81));
user->set_op=-1;
}
return 1;
case 2: /* setterm_pager */
user->terminal.pager=atoi(word[0]);
if (user->terminal.pager<MAX_LINES || user->terminal.pager>99) {
vwrite_user(user, "Pocet riadkov moze byt len v rozmedzi %d ~ 99 - nastavujem def. hodnotu\n", MAX_LINES);
user->terminal.pager=23;
}
vwrite_user(user, "~FGPocet riadkov na zobrazenie odteraz: ~RS%d\n", user->terminal.pager);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case -1:
temp[0]='\0';
val=0;
user->set_mode=SET_TERM;
user->set_op=1;
print_menu(user);
return 1;
}
return 0;
}
// BANK
void showattribs_bank(UR_OBJECT user)
{
set_crash();
write_user(user, "Tvoje aktualne financie:\n");
vwrite_user(user, "Na ucte : %d\n", user->bank);
vwrite_user(user, "Hotovost : %d\n", user->money);
return;
}
void set_bank(UR_OBJECT user, char *inpstr)
{
UR_OBJECT u;
int i=0, setattrval=-1, dep, on;
set_crash();
if (strcmp(user->room->name, default_bank)) {
vwrite_user(user, "najprv chod do ruumy ~CR%s~RS, aby na teba pokladnik videl !\n", default_bank);
return;
}
if (word_count<2) {
write_user(user, use_menu_prompt);
user->set_mode=SET_BANK;
user->misc_op=102;
no_prompt=1;
return;
}
i=0;
strtolower(word[1]);
while (settab_bank[i].type[0]!='*') {
if (!strcmp(settab_bank[i].type, word[1])) {
setattrval=i;
break;
}
++i;
}
if (setattrval==-1) {
i=0;
write_user(user, "mozne operacie:\n");
while (settab_bank[i].type[0]!='*') {
text[0]='\0';
vwrite_user(user, "~FT%s~RS : %s\n", settab_bank[i].type, settab_bank[i].desc);
i++;
}
user->set_mode=SET_NONE;
user->set_op=0;
return;
}
write_user(user, "\n");
switch (setattrval) {
case SETBANK_SHOW: showattribs_bank(user); return;
case SETBANK_DEP:
if (word_count<3) {
write_usage(user, ".bank %s <#suma>", settab_bank[SETBANK_DEP].type);
vwrite_user(user, "aktualna hotovost : %d\n", user->money);
return;
}
if (!is_number(word[2])) {
vwrite_user(user, "`%s' je chybny parameter !\n", word[2]);
return;
}
dep=atoi(word[2]);
if (dep<1) {
write_user(user, "Minimalny vklad je 1\n");
return;
}
if (dep>user->money) {
write_user(user, "Nemas pri sebe taku velku hotovost !\n");
return;
}
user->money-=dep;
user->bank+=dep;
vwrite_user(user, "OK, vklad na ucet: %d\n", dep);
return;
case SETBANK_WITH:
if (word_count<3) {
write_usage(user, ".bank %s <#suma>", settab_bank[SETBANK_WITH].type);
vwrite_user(user, "aktualny stav uctu: %d\n", user->bank);
return;
}
if (!is_number(word[2])) {
vwrite_user(user, "`%s' je chybny parameter !\n", word[2]);
return;
}
dep=atoi(word[2]);
if (dep<1) {
write_user(user, "Minimalny vyber je 1\n");
return;
}
if (dep>user->bank) {
write_user(user, "Nemas tolko na ucte !\n");
return;
}
user->money+=dep;
user->bank-=dep;
vwrite_user(user, "OK, vyber z uctu: %d\n", dep);
return;
case SETBANK_SEND:
if (word_count<3) {
write_usage(user, ".bank %s <user> <#suma>", settab_bank[SETBANK_SEND].type);
vwrite_user(user, "aktualny stav uctu: %d\n", user->bank);
return;
}
if (!is_inumber(word[3])) {
vwrite_user(user, "`%s' je chybny parameter !\n", word[2]);
return;
}
dep=atoi(word[3]);
if (dep<0) {
if (!user->kradnutie) {
write_user(user, "~CR~OLVidel som ta !!! Este raz a uvidis !!!\n");
user->kradnutie=1;
}
else {
arrest(user, 1);
write_user(user, "~CTVaroval som ta !!!\n");
}
return;
}
if (dep<1) {
write_user(user, "Minimalny obnos je 1\n");
return;
}
if (dep>user->bank) {
write_user(user, "Nemas tolko na ucte !\n");
return;
}
if ((u=get_user(word[2]))==NULL) {
if ((u=create_user())==NULL) {
vwrite_user(user, "%s: nemozem poslat peniaze\n", syserror);
write_syslog(ERRLOG, 1, "Unable to create temporary user object in set_bank()\n");
return;
}
strcpy(u->name, word[2]);
if (!load_user_details(u)) {
write_user(user, nosuchuser);
destruct_user(u);
destructed=0;
return;
}
on=0;
}
else on=1;
if (u==user) {
write_user(user, "Posielat sebe ???\n");
return;
}
u->bank+=dep;
user->bank-=dep;
vwrite_user(user, "OK, vyber z uctu: %d\n", dep);
vwrite_user(user, "OK, poslanie na ucet: %s\n", u->name);
if (!on) {
destruct_user(u);
destructed=0;
}
return;
}
}
int setops_bank(UR_OBJECT user, char *inpstr)
{
UR_OBJECT u;
char *name, temp[ARR_SIZE];
int val=0, hlp, dep, on;
set_crash();
if (user->set_mode!=SET_BANK) return 0;
if (!user->vis) name=invisname;
else name=user->recap;
temp[0]='\0';
if (inpstr[0]=='0') {
hlp=-1;
val=1;
}
else for (hlp=0; settab_bank[hlp].cmenu!='*'; hlp++)
if (toupper(inpstr[0])==settab_bank[hlp].cmenu) {
val=1;
break;
}
switch (user->set_op) {
case 1:
switch (hlp) {
case SETBANK_SHOW:
showattribs_bank(user);
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
case SETBANK_DEP:
if (user->money<1) {
write_user(user, "Ved nemas ziadnu hotovost !\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
vwrite_user(user, "Tvoja aktualna hotovost ~CB: [~RS%d~CB]\n", user->money);
write_user(user, "~CTNapis vklad~CB: ");
user->set_op=2;
return 1;
case SETBANK_WITH:
if (user->bank<1) {
write_user(user, "Ved nemas nic na ucte !\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
vwrite_user(user, "Tvoj aktualny stav uctu ~CB: [~RS%d~CB]\n", user->bank);
write_user(user, "~CTNapis vyber~CB: ");
user->set_op=3;
return 1;
case SETBANK_SEND:
if (user->bank<1) {
write_user(user, "Ved nemas nic na ucte !\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
vwrite_user(user, "Tvoj aktualny stav uctu ~CB: [~RS%d~CB]\n", user->bank);
write_user(user, "~CTNapis kolko poslat~CB: ");
user->set_op=4;
return 1;
case -1:
vwrite_room_except(user->room, user, room_leave_setup, name);
user->ignore.all=user->ignore.all_store;
user->set_mode=SET_NONE;
user->set_op=0;
user->status='a';
prompt(user);
return 1;
default:
write_user(user, user_bch_setup);
write_user(user, center(continue1, 81));
user->set_op=-1;
} /* end of switch (hlp) */
return 1;
case 2: /* SETBANK_DEP */
if (!is_number(word[0])) {
vwrite_user(user, "`%s' je chybny parameter !\n", word[0]);
write_user(user, "~CToprav svoj vklad~CB:~RS ");
user->set_op=2;
return 1;
}
dep=atoi(word[0]);
if (dep>user->money) {
write_user(user, "Nemas taku velku hotovost !\n");
write_user(user, "~CToprav svoj vklad~CB:~RS ");
user->set_op=2;
return 1;
}
if (dep<1) {
write_user(user, "Vkladanie na ucet zrusene.\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
user->bank+=dep;
user->money-=dep;
vwrite_user(user, "OK, uskutocneny vklad: %d\n", dep);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case 3: /* setbank_with */
if (!is_number(word[0])) {
vwrite_user(user, "`%s' je chybny parameter !\n", word[0]);
write_user(user, "~CToprav svoj vyber~CB:~RS ");
user->set_op=3;
return 1;
}
if (user->bank<1) {
write_user(user, "ved nemas nic na ucte !\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
dep=atoi(word[0]);
if (dep>user->bank) {
write_user(user, "Nemas tolko na ucte !\n");
write_user(user, "~CToprav svoj vyber~CB:~RS ");
user->set_op=3;
return 1;
}
if (dep<1) {
write_user(user,"Vyber z uctu zruseny.\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
user->bank-=dep;
user->money+=dep;
vwrite_user(user, "OK, uskutocneny vyber: %d\n", dep);
write_user(user, center(continue1, 81));
user->set_op=-1;
return 1;
case 4: /* setbank_send - ammount */
if (!is_number(word[0])) {
vwrite_user(user, "`%s' je chybny parameter !\n", word[0]);
write_user(user, "~CToprav obnos~CB:~RS ");
user->set_op=4;
return 1;
}
if (user->bank<1) {
write_user(user, "ved nemas nic na ucte !\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
dep=atoi(word[0]);
if (dep>user->bank) {
write_user(user, "Nemas tolko na ucte !\n");
write_user(user, "~CToprav obnos~CB:~RS ");
user->set_op=4;
return 1;
}
if (dep<1) {
write_user(user,"Vyber z uctu zruseny.\n");
write_user(user, center(continue1,81));
user->set_op=-1;
return 1;
}
user->tmp_int=dep;
vwrite_user(user, "OK, zadaj komu poslat: ");
user->set_op=5;
return 1;
case 5: /* setbank_send - user */
if ((u=get_user(word[0]))==NULL) {
if ((u=create_user())==NULL) {
vwrite_user(user, "%s: nemozem poslat peniaze\n", syserror);
write_syslog(ERRLOG, 1, "Unable to create temporary user object in set_bank()\n");
user->tmp_int=0;
user->set_op=-1;
write_user(user, center(continue1,81));
return 1;
}
strcpy(u->name, word[0]);
if (!load_user_details(u)) {
write_user(user, nosuchuser);
destruct_user(u);
destructed=0;
user->set_op=-1;
user->tmp_int=0;
write_user(user, center(continue1,81));
return 1;
}
on=1;
}
else on=1;
u->bank+=user->tmp_int;
user->bank-=user->tmp_int;
vwrite_user(user, "OK, vyber z uctu: %d\n", user->tmp_int);
vwrite_user(user, "OK, poslanie na ucet: %s\n", u->name);
if (!on) {
destruct_user(u);
destructed=0;
}
user->tmp_int=0;
user->set_op=-1;
write_user(user, center(continue1, 81));
return 1;
case -1:
temp[0]='\0';
val=0;
user->set_mode=SET_BANK;
user->set_op=1;
print_menu(user);
return 1;
}
return 0;
}
#endif /* __MENUS_C__ */